aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2010-04-22 20:08:44 -0400
committerJiri Kosina <jkosina@suse.cz>2010-04-22 20:08:44 -0400
commit6c9468e9eb1252eaefd94ce7f06e1be9b0b641b1 (patch)
tree797676a336b050bfa1ef879377c07e541b9075d6 /arch
parent4cb3ca7cd7e2cae8d1daf5345ec99a1e8502cf3f (diff)
parentc81eddb0e3728661d1585fbc564449c94165cc36 (diff)
Merge branch 'master' into for-next
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/boot/bootp.c1
-rw-r--r--arch/alpha/boot/bootpz.c1
-rw-r--r--arch/alpha/boot/main.c1
-rw-r--r--arch/alpha/boot/misc.c1
-rw-r--r--arch/alpha/include/asm/core_marvel.h1
-rw-r--r--arch/alpha/include/asm/core_mcpcia.h1
-rw-r--r--arch/alpha/include/asm/core_titan.h1
-rw-r--r--arch/alpha/include/asm/core_tsunami.h1
-rw-r--r--arch/alpha/kernel/irq.c1
-rw-r--r--arch/alpha/kernel/osf_sys.c2
-rw-r--r--arch/alpha/kernel/pci-noop.c1
-rw-r--r--arch/alpha/kernel/pci-sysfs.c1
-rw-r--r--arch/alpha/kernel/pci_iommu.c2
-rw-r--r--arch/alpha/kernel/process.c2
-rw-r--r--arch/alpha/kernel/ptrace.c1
-rw-r--r--arch/alpha/kernel/smc37c669.c1
-rw-r--r--arch/alpha/kernel/smc37c93x.c1
-rw-r--r--arch/alpha/kernel/srm_env.c1
-rw-r--r--arch/alpha/kernel/sys_dp264.c2
-rw-r--r--arch/alpha/kernel/sys_titan.c2
-rw-r--r--arch/alpha/kernel/traps.c10
-rw-r--r--arch/alpha/mm/init.c1
-rw-r--r--arch/arm/Kconfig81
-rw-r--r--arch/arm/boot/compressed/decompress.c1
-rw-r--r--arch/arm/boot/compressed/head.S4
-rw-r--r--arch/arm/boot/compressed/misc.c1
-rw-r--r--arch/arm/common/clkdev.c1
-rw-r--r--arch/arm/common/it8152.c1
-rw-r--r--arch/arm/common/locomo.c10
-rw-r--r--arch/arm/configs/cm_t35_defconfig2
-rw-r--r--arch/arm/configs/n770_defconfig1
-rw-r--r--arch/arm/configs/n8x0_defconfig160
-rw-r--r--arch/arm/configs/omap3_beagle_defconfig1
-rw-r--r--arch/arm/configs/omap3_defconfig2
-rw-r--r--arch/arm/configs/omap3_evm_defconfig1
-rw-r--r--arch/arm/configs/omap3_touchbook_defconfig2
-rw-r--r--arch/arm/configs/omap_3430sdp_defconfig1
-rw-r--r--arch/arm/configs/omap_3630sdp_defconfig2
-rw-r--r--arch/arm/configs/omap_h2_1610_defconfig1
-rw-r--r--arch/arm/configs/omap_zoom2_defconfig1
-rw-r--r--arch/arm/configs/omap_zoom3_defconfig2
-rw-r--r--arch/arm/configs/rx51_defconfig1
-rw-r--r--arch/arm/include/asm/cacheflush.h38
-rw-r--r--arch/arm/include/asm/clkdev.h1
-rw-r--r--arch/arm/include/asm/elf.h1
-rw-r--r--arch/arm/include/asm/highmem.h15
-rw-r--r--arch/arm/include/asm/irq.h1
-rw-r--r--arch/arm/include/asm/kmap_types.h1
-rw-r--r--arch/arm/include/asm/outercache.h75
-rw-r--r--arch/arm/include/asm/pgtable-nommu.h1
-rw-r--r--arch/arm/include/asm/system.h16
-rw-r--r--arch/arm/include/asm/ucontext.h23
-rw-r--r--arch/arm/include/asm/user.h12
-rw-r--r--arch/arm/kernel/entry-header.S2
-rw-r--r--arch/arm/kernel/irq.c1
-rw-r--r--arch/arm/kernel/kgdb.c13
-rw-r--r--arch/arm/kernel/kprobes.c11
-rw-r--r--arch/arm/kernel/module.c2
-rw-r--r--arch/arm/kernel/perf_event.c9
-rw-r--r--arch/arm/kernel/process.c1
-rw-r--r--arch/arm/kernel/signal.c93
-rw-r--r--arch/arm/kernel/smp.c4
-rw-r--r--arch/arm/kernel/sys_arm.c2
-rw-r--r--arch/arm/lib/memmove.S4
-rw-r--r--arch/arm/lib/uaccess_with_memcpy.c1
-rw-r--r--arch/arm/mach-aaec2000/core.c1
-rw-r--r--arch/arm/mach-at91/Makefile4
-rw-r--r--arch/arm/mach-at91/board-sam9g20ek.c10
-rw-r--r--arch/arm/mach-at91/pm_slowclock.S16
-rw-r--r--arch/arm/mach-bcmring/dma.c14
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c1
-rw-r--r--arch/arm/mach-davinci/dm365.c1
-rw-r--r--arch/arm/mach-davinci/dma.c4
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h8
-rw-r--r--arch/arm/mach-davinci/time.c6
-rw-r--r--arch/arm/mach-ep93xx/gpio.c6
-rw-r--r--arch/arm/mach-h720x/common.c1
-rw-r--r--arch/arm/mach-integrator/cpu.c1
-rw-r--r--arch/arm/mach-integrator/impd1.c1
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c2
-rw-r--r--arch/arm/mach-integrator/pci_v3.c1
-rw-r--r--arch/arm/mach-iop13xx/pci.c1
-rw-r--r--arch/arm/mach-iop32x/glantank.c1
-rw-r--r--arch/arm/mach-iop32x/iq31244.c1
-rw-r--r--arch/arm/mach-iop32x/iq80321.c1
-rw-r--r--arch/arm/mach-iop32x/n2100.c1
-rw-r--r--arch/arm/mach-iop33x/iq80331.c1
-rw-r--r--arch/arm/mach-iop33x/iq80332.c1
-rw-r--r--arch/arm/mach-ixp2000/enp2611.c1
-rw-r--r--arch/arm/mach-ixp2000/ixdp2400.c1
-rw-r--r--arch/arm/mach-ixp2000/ixdp2800.c1
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x00.c1
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c1
-rw-r--r--arch/arm/mach-ixp2000/pci.c1
-rw-r--r--arch/arm/mach-ixp23xx/include/mach/memory.h2
-rw-r--r--arch/arm/mach-ixp23xx/pci.c1
-rw-r--r--arch/arm/mach-ixp4xx/avila-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/coyote-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/gateway7001-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/gtwx5715-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/ixdp425-setup.c1
-rw-r--r--arch/arm/mach-ixp4xx/ixp4xx_npe.c1
-rw-r--r--arch/arm/mach-ixp4xx/wg302v2-setup.c1
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c4
-rw-r--r--arch/arm/mach-kirkwood/pcie.c1
-rw-r--r--arch/arm/mach-lh7a40x/clcd.c1
-rw-r--r--arch/arm/mach-mmp/include/mach/uncompress.h5
-rw-r--r--arch/arm/mach-mx3/Kconfig10
-rw-r--r--arch/arm/mach-mx3/clock-imx31.c5
-rw-r--r--arch/arm/mach-mx3/devices.c19
-rw-r--r--arch/arm/mach-mx3/devices.h3
-rw-r--r--arch/arm/mach-mx3/mach-armadillo5x0.c166
-rw-r--r--arch/arm/mach-mx3/mach-mx31_3ds.c116
-rw-r--r--arch/arm/mach-mx3/mach-mx31moboard.c1
-rw-r--r--arch/arm/mach-mx3/mach-pcm037.c2
-rw-r--r--arch/arm/mach-mx3/mx31lite-db.c2
-rw-r--r--arch/arm/mach-mx3/mx31moboard-devboard.c1
-rw-r--r--arch/arm/mach-mx3/mx31moboard-marxbot.c1
-rw-r--r--arch/arm/mach-mx5/clock-mx51.c2
-rw-r--r--arch/arm/mach-mx5/cpu.c53
-rw-r--r--arch/arm/mach-mx5/mm.c32
-rw-r--r--arch/arm/mach-netx/fb.c1
-rw-r--r--arch/arm/mach-netx/xc.c1
-rw-r--r--arch/arm/mach-nomadik/gpio.c1
-rw-r--r--arch/arm/mach-ns9xxx/plat-serial8250.c1
-rw-r--r--arch/arm/mach-ns9xxx/processor-ns9360.c1
-rw-r--r--arch/arm/mach-omap1/mcbsp.c1
-rw-r--r--arch/arm/mach-omap2/Makefile3
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-3630sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c26
-rw-r--r--arch/arm/mach-omap2/board-am3517evm.c2
-rw-r--r--arch/arm/mach-omap2/board-cm-t35.c2
-rw-r--r--arch/arm/mach-omap2/board-devkit8000.c2
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c56
-rw-r--r--arch/arm/mach-omap2/board-n8x0.c98
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c12
-rw-r--r--arch/arm/mach-omap2/board-omap3touchbook.c12
-rw-r--r--arch/arm/mach-omap2/board-overo.c2
-rw-r--r--arch/arm/mach-omap2/board-zoom3.c2
-rw-r--r--arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c1
-rw-r--r--arch/arm/mach-omap2/clock2420_data.c1
-rw-r--r--arch/arm/mach-omap2/io.c21
-rw-r--r--arch/arm/mach-omap2/iommu2.c1
-rw-r--r--arch/arm/mach-omap2/mailbox.c12
-rw-r--r--arch/arm/mach-omap2/mcbsp.c1
-rw-r--r--arch/arm/mach-omap2/mux.c1
-rw-r--r--arch/arm/mach-omap2/omap44xx-smc.S32
-rw-r--r--arch/arm/mach-omap2/pm-debug.c1
-rw-r--r--arch/arm/mach-omap2/pm34xx.c1
-rw-r--r--arch/arm/mach-omap2/prcm.c4
-rw-r--r--arch/arm/mach-omap2/serial.c15
-rw-r--r--arch/arm/mach-omap2/usb-ehci.c6
-rw-r--r--arch/arm/mach-orion5x/pci.c1
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c2
-rw-r--r--arch/arm/mach-pnx4008/dma.c1
-rw-r--r--arch/arm/mach-pnx4008/pm.c1
-rw-r--r--arch/arm/mach-pxa/Kconfig11
-rw-r--r--arch/arm/mach-pxa/corgi_ssp.c1
-rw-r--r--arch/arm/mach-pxa/cpufreq-pxa3xx.c1
-rw-r--r--arch/arm/mach-pxa/imote2.c4
-rw-r--r--arch/arm/mach-pxa/include/mach/uncompress.h11
-rw-r--r--arch/arm/mach-pxa/mioa701.c1
-rw-r--r--arch/arm/mach-pxa/pm.c1
-rw-r--r--arch/arm/mach-pxa/raumfeld.c4
-rw-r--r--arch/arm/mach-pxa/stargate2.c5
-rw-r--r--arch/arm/mach-pxa/viper.c1
-rw-r--r--arch/arm/mach-realview/core.c1
-rw-r--r--arch/arm/mach-rpc/dma.c1
-rw-r--r--arch/arm/mach-rpc/include/mach/uncompress.h2
-rw-r--r--arch/arm/mach-s3c2440/s3c2440-cpufreq.c (renamed from arch/arm/plat-s3c24xx/s3c2440-cpufreq.c)0
-rw-r--r--arch/arm/mach-s3c64xx/dma.c1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/debug-macro.S2
-rw-r--r--arch/arm/mach-s5p6440/include/mach/debug-macro.S2
-rw-r--r--arch/arm/mach-s5p6442/include/mach/debug-macro.S2
-rw-r--r--arch/arm/mach-sa1100/jornada720_ssp.c1
-rw-r--r--arch/arm/mach-sa1100/neponset.c1
-rw-r--r--arch/arm/mach-shmobile/board-ap4evb.c32
-rw-r--r--arch/arm/mach-shmobile/board-g3evm.c122
-rw-r--r--arch/arm/mach-shmobile/board-g4evm.c57
-rw-r--r--arch/arm/mach-shmobile/clock-sh7367.c7
-rw-r--r--arch/arm/mach-shmobile/intc-sh7367.c46
-rw-r--r--arch/arm/mach-shmobile/intc-sh7372.c46
-rw-r--r--arch/arm/mach-shmobile/intc-sh7377.c36
-rw-r--r--arch/arm/mach-u300/dummyspichip.c1
-rw-r--r--arch/arm/mach-u300/mmc.c1
-rw-r--r--arch/arm/mach-versatile/core.c1
-rw-r--r--arch/arm/mach-versatile/pci.c1
-rw-r--r--arch/arm/mach-w90x900/dev.c1
-rw-r--r--arch/arm/mm/Kconfig13
-rw-r--r--arch/arm/mm/cache-l2x0.c10
-rw-r--r--arch/arm/mm/copypage-v6.c9
-rw-r--r--arch/arm/mm/dma-mapping.c7
-rw-r--r--arch/arm/mm/fault-armv.c1
-rw-r--r--arch/arm/mm/flush.c25
-rw-r--r--arch/arm/mm/highmem.c87
-rw-r--r--arch/arm/mm/init.c1
-rw-r--r--arch/arm/mm/mmu.c14
-rw-r--r--arch/arm/mm/pgd.c1
-rw-r--r--arch/arm/plat-mxc/audmux-v2.c1
-rw-r--r--arch/arm/plat-mxc/include/mach/board-mx31_3ds.h (renamed from arch/arm/plat-mxc/include/mach/board-mx31pdk.h)6
-rw-r--r--arch/arm/plat-mxc/include/mach/mx51.h33
-rw-r--r--arch/arm/plat-mxc/include/mach/uncompress.h4
-rw-r--r--arch/arm/plat-mxc/pwm.c1
-rw-r--r--arch/arm/plat-omap/devices.c1
-rw-r--r--arch/arm/plat-omap/dma.c1
-rw-r--r--arch/arm/plat-omap/gpio.c10
-rw-r--r--arch/arm/plat-omap/include/plat/blizzard.h2
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h8
-rw-r--r--arch/arm/plat-omap/include/plat/prcm.h2
-rw-r--r--arch/arm/plat-omap/include/plat/system.h6
-rw-r--r--arch/arm/plat-omap/include/plat/usb.h2
-rw-r--r--arch/arm/plat-omap/iommu-debug.c1
-rw-r--r--arch/arm/plat-omap/iommu.c1
-rw-r--r--arch/arm/plat-omap/iovmm.c1
-rw-r--r--arch/arm/plat-omap/mailbox.c1
-rw-r--r--arch/arm/plat-omap/mcbsp.c13
-rw-r--r--arch/arm/plat-omap/omap_device.c1
-rw-r--r--arch/arm/plat-pxa/dma.c1
-rw-r--r--arch/arm/plat-pxa/pwm.c1
-rw-r--r--arch/arm/plat-s3c24xx/cpu-freq.c1
-rw-r--r--arch/arm/plat-s3c24xx/devs.c1
-rw-r--r--arch/arm/plat-s3c24xx/s3c2410-iotiming.c1
-rw-r--r--arch/arm/plat-s3c24xx/s3c2412-iotiming.c1
-rw-r--r--arch/arm/plat-samsung/adc.c1
-rw-r--r--arch/arm/plat-samsung/dev-fb.c1
-rw-r--r--arch/arm/plat-samsung/dev-i2c0.c1
-rw-r--r--arch/arm/plat-samsung/dev-i2c1.c1
-rw-r--r--arch/arm/plat-samsung/dev-nand.c1
-rw-r--r--arch/arm/plat-samsung/dev-usb.c1
-rw-r--r--arch/arm/plat-samsung/include/plat/uncompress.h2
-rw-r--r--arch/arm/plat-samsung/pm-check.c1
-rw-r--r--arch/arm/plat-samsung/pwm.c36
-rw-r--r--arch/arm/plat-stmp3xxx/dma.c1
-rw-r--r--arch/arm/tools/mach-types75
-rw-r--r--arch/arm/vfp/vfpmodule.c33
-rw-r--r--arch/avr32/kernel/process.c1
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c1
-rw-r--r--arch/avr32/mach-at32ap/extint.c1
-rw-r--r--arch/avr32/mach-at32ap/hsmc.c1
-rw-r--r--arch/avr32/mm/dma-coherent.c1
-rw-r--r--arch/avr32/mm/init.c1
-rw-r--r--arch/avr32/mm/ioremap.c1
-rw-r--r--arch/blackfin/Kconfig81
-rw-r--r--arch/blackfin/Kconfig.debug12
-rw-r--r--arch/blackfin/Makefile7
-rw-r--r--arch/blackfin/boot/Makefile23
-rw-r--r--arch/blackfin/configs/BF518F-EZBRD_defconfig270
-rw-r--r--arch/blackfin/configs/BF526-EZBRD_defconfig336
-rw-r--r--arch/blackfin/configs/BF527-EZKIT-V2_defconfig1811
-rw-r--r--arch/blackfin/configs/BF527-EZKIT_defconfig344
-rw-r--r--arch/blackfin/configs/BF533-EZKIT_defconfig250
-rw-r--r--arch/blackfin/configs/BF533-STAMP_defconfig295
-rw-r--r--arch/blackfin/configs/BF537-STAMP_defconfig332
-rw-r--r--arch/blackfin/configs/BF538-EZKIT_defconfig291
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig108
-rw-r--r--arch/blackfin/configs/BF561-ACVILON_defconfig15
-rw-r--r--arch/blackfin/configs/BF561-EZKIT_defconfig82
-rw-r--r--arch/blackfin/configs/H8606_defconfig7
-rw-r--r--arch/blackfin/configs/PNAV-10_defconfig295
-rw-r--r--arch/blackfin/configs/TCM-BF518_defconfig1375
-rw-r--r--arch/blackfin/include/asm/bfin-lq035q1.h12
-rw-r--r--arch/blackfin/include/asm/bfin_can.h725
-rw-r--r--arch/blackfin/include/asm/bfin_sport.h227
-rw-r--r--arch/blackfin/include/asm/bfin_watchdog.h30
-rw-r--r--arch/blackfin/include/asm/bitops.h74
-rw-r--r--arch/blackfin/include/asm/context.S22
-rw-r--r--arch/blackfin/include/asm/cpu.h2
-rw-r--r--arch/blackfin/include/asm/def_LPBlackfin.h58
-rw-r--r--arch/blackfin/include/asm/delay.h16
-rw-r--r--arch/blackfin/include/asm/dma-mapping.h15
-rw-r--r--arch/blackfin/include/asm/dma.h4
-rw-r--r--arch/blackfin/include/asm/dpmc.h4
-rw-r--r--arch/blackfin/include/asm/elf.h8
-rw-r--r--arch/blackfin/include/asm/ftrace.h53
-rw-r--r--arch/blackfin/include/asm/gpio.h17
-rw-r--r--arch/blackfin/include/asm/irq.h7
-rw-r--r--arch/blackfin/include/asm/mmu_context.h16
-rw-r--r--arch/blackfin/include/asm/nmi.h12
-rw-r--r--arch/blackfin/include/asm/page.h3
-rw-r--r--arch/blackfin/include/asm/ptrace.h25
-rw-r--r--arch/blackfin/include/asm/sections.h3
-rw-r--r--arch/blackfin/include/asm/smp.h15
-rw-r--r--arch/blackfin/include/asm/syscall.h96
-rw-r--r--arch/blackfin/include/asm/thread_info.h25
-rw-r--r--arch/blackfin/include/asm/time.h13
-rw-r--r--arch/blackfin/kernel/Makefile1
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c10
-rw-r--r--arch/blackfin/kernel/bfin_gpio.c20
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbinit.c9
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbmgr.c54
-rw-r--r--arch/blackfin/kernel/cplb-nompu/cplbinit.c9
-rw-r--r--arch/blackfin/kernel/dma-mapping.c2
-rw-r--r--arch/blackfin/kernel/entry.S8
-rw-r--r--arch/blackfin/kernel/ftrace-entry.S23
-rw-r--r--arch/blackfin/kernel/ftrace.c6
-rw-r--r--arch/blackfin/kernel/init_task.c2
-rw-r--r--arch/blackfin/kernel/ipipe.c1
-rw-r--r--arch/blackfin/kernel/kgdb.c10
-rw-r--r--arch/blackfin/kernel/nmi.c299
-rw-r--r--arch/blackfin/kernel/process.c8
-rw-r--r--arch/blackfin/kernel/ptrace.c360
-rw-r--r--arch/blackfin/kernel/setup.c34
-rw-r--r--arch/blackfin/kernel/signal.c24
-rw-r--r--arch/blackfin/kernel/time-ts.c205
-rw-r--r--arch/blackfin/kernel/traps.c32
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S70
-rw-r--r--arch/blackfin/mach-bf518/boards/Kconfig5
-rw-r--r--arch/blackfin/mach-bf518/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf518/boards/ezbrd.c178
-rw-r--r--arch/blackfin/mach-bf518/boards/tcm-bf518.c753
-rw-r--r--arch/blackfin/mach-bf518/include/mach/irq.h12
-rw-r--r--arch/blackfin/mach-bf518/include/mach/mem_map.h2
-rw-r--r--arch/blackfin/mach-bf527/boards/Kconfig5
-rw-r--r--arch/blackfin/mach-bf527/boards/Makefile1
-rw-r--r--arch/blackfin/mach-bf527/boards/cm_bf527.c245
-rw-r--r--arch/blackfin/mach-bf527/boards/ezbrd.c199
-rw-r--r--arch/blackfin/mach-bf527/boards/ezkit.c431
-rw-r--r--arch/blackfin/mach-bf527/include/mach/irq.h12
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c66
-rw-r--r--arch/blackfin/mach-bf533/boards/blackstamp.c134
-rw-r--r--arch/blackfin/mach-bf533/boards/cm_bf533.c138
-rw-r--r--arch/blackfin/mach-bf533/boards/ezkit.c102
-rw-r--r--arch/blackfin/mach-bf533/boards/ip0x.c63
-rw-r--r--arch/blackfin/mach-bf533/boards/stamp.c174
-rw-r--r--arch/blackfin/mach-bf533/include/mach/irq.h3
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537e.c116
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537u.c187
-rw-r--r--arch/blackfin/mach-bf537/boards/minotaur.c183
-rw-r--r--arch/blackfin/mach-bf537/boards/pnav10.c169
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c684
-rw-r--r--arch/blackfin/mach-bf537/boards/tcm_bf537.c187
-rw-r--r--arch/blackfin/mach-bf537/include/mach/irq.h12
-rw-r--r--arch/blackfin/mach-bf538/boards/ezkit.c346
-rw-r--r--arch/blackfin/mach-bf538/include/mach/irq.h3
-rw-r--r--arch/blackfin/mach-bf548/boards/cm_bf548.c399
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c443
-rw-r--r--arch/blackfin/mach-bf548/include/mach/irq.h3
-rw-r--r--arch/blackfin/mach-bf561/Makefile1
-rw-r--r--arch/blackfin/mach-bf561/boards/acvilon.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/cm_bf561.c66
-rw-r--r--arch/blackfin/mach-bf561/boards/ezkit.c70
-rw-r--r--arch/blackfin/mach-bf561/boards/tepla.c68
-rw-r--r--arch/blackfin/mach-bf561/hotplug.c32
-rw-r--r--arch/blackfin/mach-bf561/include/mach/irq.h3
-rw-r--r--arch/blackfin/mach-bf561/include/mach/smp.h2
-rw-r--r--arch/blackfin/mach-bf561/secondary.S50
-rw-r--r--arch/blackfin/mach-bf561/smp.c44
-rw-r--r--arch/blackfin/mach-common/cpufreq.c168
-rw-r--r--arch/blackfin/mach-common/entry.S81
-rw-r--r--arch/blackfin/mach-common/head.S16
-rw-r--r--arch/blackfin/mach-common/interrupt.S35
-rw-r--r--arch/blackfin/mach-common/ints-priority.c208
-rw-r--r--arch/blackfin/mach-common/pm.c1
-rw-r--r--arch/blackfin/mach-common/smp.c88
-rw-r--r--arch/blackfin/mm/init.c1
-rw-r--r--arch/blackfin/mm/isram-driver.c7
-rw-r--r--arch/blackfin/mm/sram-alloc.c28
-rw-r--r--arch/cris/arch-v10/drivers/i2c.c1
-rw-r--r--arch/cris/arch-v10/drivers/sync_serial.c1
-rw-r--r--arch/cris/arch-v10/kernel/process.c2
-rw-r--r--arch/cris/arch-v32/drivers/i2c.c1
-rw-r--r--arch/cris/arch-v32/drivers/pci/bios.c2
-rw-r--r--arch/cris/arch-v32/drivers/pci/dma.c1
-rw-r--r--arch/cris/arch-v32/drivers/sync_serial.c1
-rw-r--r--arch/cris/arch-v32/kernel/process.c2
-rw-r--r--arch/cris/arch-v32/kernel/signal.c1
-rw-r--r--arch/cris/kernel/irq.c1
-rw-r--r--arch/cris/kernel/module.c1
-rw-r--r--arch/cris/kernel/profile.c1
-rw-r--r--arch/cris/mm/init.c1
-rw-r--r--arch/frv/include/asm/segment.h6
-rw-r--r--arch/frv/include/asm/uaccess.h2
-rw-r--r--arch/frv/kernel/irq.c1
-rw-r--r--arch/frv/kernel/sysctl.c1
-rw-r--r--arch/frv/mb93090-mb00/pci-dma.c1
-rw-r--r--arch/frv/mb93090-mb00/pci-frv.c6
-rw-r--r--arch/frv/mb93090-mb00/pci-irq.c1
-rw-r--r--arch/frv/mb93090-mb00/pci-vdk.c1
-rw-r--r--arch/frv/mm/dma-alloc.c1
-rw-r--r--arch/frv/mm/init.c1
-rw-r--r--arch/frv/mm/pgalloc.c2
-rw-r--r--arch/h8300/kernel/process.c2
-rw-r--r--arch/h8300/mm/init.c2
-rw-r--r--arch/h8300/mm/kmap.c1
-rw-r--r--arch/h8300/mm/memory.c1
-rw-r--r--arch/ia64/include/asm/dmi.h1
-rw-r--r--arch/ia64/kernel/acpi-ext.c1
-rw-r--r--arch/ia64/kernel/acpi.c4
-rw-r--r--arch/ia64/kernel/cpufreq/acpi-cpufreq.c1
-rw-r--r--arch/ia64/kernel/efi.c1
-rw-r--r--arch/ia64/kernel/iosapic.c1
-rw-r--r--arch/ia64/kernel/irq_ia64.c1
-rw-r--r--arch/ia64/kernel/mca.c1
-rw-r--r--arch/ia64/kernel/mca_drv.c1
-rw-r--r--arch/ia64/kernel/pci-swiotlb.c1
-rw-r--r--arch/ia64/kernel/perfmon.c1
-rw-r--r--arch/ia64/kernel/process.c2
-rw-r--r--arch/ia64/kernel/ptrace.c1
-rw-r--r--arch/ia64/kernel/topology.c1
-rw-r--r--arch/ia64/kernel/uncached.c2
-rw-r--r--arch/ia64/kvm/kvm-ia64.c11
-rw-r--r--arch/ia64/mm/discontig.c1
-rw-r--r--arch/ia64/mm/hugetlbpage.c1
-rw-r--r--arch/ia64/mm/tlb.c1
-rw-r--r--arch/ia64/sn/kernel/bte.c1
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c1
-rw-r--r--arch/ia64/sn/kernel/io_common.c1
-rw-r--r--arch/ia64/sn/kernel/io_init.c1
-rw-r--r--arch/ia64/sn/kernel/irq.c1
-rw-r--r--arch/ia64/sn/kernel/msi_sn.c1
-rw-r--r--arch/ia64/sn/pci/pci_dma.c1
-rw-r--r--arch/ia64/sn/pci/pcibr/pcibr_provider.c1
-rw-r--r--arch/ia64/sn/pci/tioca_provider.c1
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c1
-rw-r--r--arch/ia64/xen/grant-table.c1
-rw-r--r--arch/m32r/kernel/process.c2
-rw-r--r--arch/m32r/mm/init.c1
-rw-r--r--arch/m68k/bvme6000/rtc.c1
-rw-r--r--arch/m68k/include/asm/atomic_mm.h8
-rw-r--r--arch/m68k/include/asm/mcfuart.h5
-rw-r--r--arch/m68k/include/asm/sigcontext.h4
-rw-r--r--arch/m68k/kernel/dma.c1
-rw-r--r--arch/m68k/kernel/process.c2
-rw-r--r--arch/m68k/mac/misc.c1
-rw-r--r--arch/m68k/mm/init.c1
-rw-r--r--arch/m68k/mm/memory.c2
-rw-r--r--arch/m68k/mm/motorola.c1
-rw-r--r--arch/m68k/mvme16x/rtc.c1
-rw-r--r--arch/m68k/sun3/sun3dvma.c1
-rw-r--r--arch/m68k/sun3x/dvma.c1
-rw-r--r--arch/m68knommu/Makefile2
-rw-r--r--arch/m68knommu/kernel/dma.c1
-rw-r--r--arch/m68knommu/kernel/entry.S2
-rw-r--r--arch/m68knommu/kernel/process.c2
-rw-r--r--arch/m68knommu/mm/init.c2
-rw-r--r--arch/m68knommu/mm/kmap.c1
-rw-r--r--arch/m68knommu/mm/memory.c1
-rw-r--r--arch/m68knommu/platform/68360/ints.c1
-rw-r--r--arch/microblaze/Kconfig67
-rw-r--r--arch/microblaze/Makefile5
-rw-r--r--arch/microblaze/boot/Makefile6
-rw-r--r--arch/microblaze/include/asm/device.h4
-rw-r--r--arch/microblaze/include/asm/dma-mapping.h154
-rw-r--r--arch/microblaze/include/asm/futex.h2
-rw-r--r--arch/microblaze/include/asm/io.h36
-rw-r--r--arch/microblaze/include/asm/irq.h37
-rw-r--r--arch/microblaze/include/asm/page.h12
-rw-r--r--arch/microblaze/include/asm/pci-bridge.h195
-rw-r--r--arch/microblaze/include/asm/pci.h178
-rw-r--r--arch/microblaze/include/asm/pgalloc.h2
-rw-r--r--arch/microblaze/include/asm/pgtable.h40
-rw-r--r--arch/microblaze/include/asm/processor.h1
-rw-r--r--arch/microblaze/include/asm/prom.h15
-rw-r--r--arch/microblaze/include/asm/segment.h49
-rw-r--r--arch/microblaze/include/asm/system.h3
-rw-r--r--arch/microblaze/include/asm/thread_info.h5
-rw-r--r--arch/microblaze/include/asm/tlbflush.h5
-rw-r--r--arch/microblaze/include/asm/uaccess.h447
-rw-r--r--arch/microblaze/kernel/Makefile2
-rw-r--r--arch/microblaze/kernel/asm-offsets.c1
-rw-r--r--arch/microblaze/kernel/cpu/cache.c211
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo.c1
-rw-r--r--arch/microblaze/kernel/dma.c157
-rw-r--r--arch/microblaze/kernel/entry.S116
-rw-r--r--arch/microblaze/kernel/ftrace.c12
-rw-r--r--arch/microblaze/kernel/head.S21
-rw-r--r--arch/microblaze/kernel/hw_exception_handler.S112
-rw-r--r--arch/microblaze/kernel/irq.c15
-rw-r--r--arch/microblaze/kernel/misc.S15
-rw-r--r--arch/microblaze/kernel/module.c1
-rw-r--r--arch/microblaze/kernel/of_platform.c1
-rw-r--r--arch/microblaze/kernel/process.c10
-rw-r--r--arch/microblaze/kernel/ptrace.c1
-rw-r--r--arch/microblaze/kernel/setup.c69
-rw-r--r--arch/microblaze/kernel/sys_microblaze.c1
-rw-r--r--arch/microblaze/kernel/traps.c6
-rw-r--r--arch/microblaze/lib/Makefile3
-rw-r--r--arch/microblaze/lib/fastcopy.S6
-rw-r--r--arch/microblaze/lib/memcpy.c2
-rw-r--r--arch/microblaze/lib/memset.c15
-rw-r--r--arch/microblaze/lib/uaccess.c48
-rw-r--r--arch/microblaze/lib/uaccess_old.S45
-rw-r--r--arch/microblaze/mm/Makefile2
-rw-r--r--arch/microblaze/mm/consistent.c247
-rw-r--r--arch/microblaze/mm/fault.c24
-rw-r--r--arch/microblaze/mm/init.c45
-rw-r--r--arch/microblaze/mm/pgtable.c4
-rw-r--r--arch/microblaze/pci/Makefile6
-rw-r--r--arch/microblaze/pci/indirect_pci.c163
-rw-r--r--arch/microblaze/pci/iomap.c39
-rw-r--r--arch/microblaze/pci/pci-common.c1643
-rw-r--r--arch/microblaze/pci/pci_32.c431
-rw-r--r--arch/microblaze/pci/xilinx_pci.c168
-rw-r--r--arch/mips/alchemy/devboards/db1200/setup.c40
-rw-r--r--arch/mips/ar7/platform.c3
-rw-r--r--arch/mips/bcm63xx/boards/board_bcm963xx.c231
-rw-r--r--arch/mips/bcm63xx/cpu.c5
-rw-r--r--arch/mips/bcm63xx/dev-uart.c66
-rw-r--r--arch/mips/bcm63xx/gpio.c4
-rw-r--r--arch/mips/cavium-octeon/setup.c82
-rw-r--r--arch/mips/cavium-octeon/smp.c8
-rw-r--r--arch/mips/configs/bigsur_defconfig680
-rw-r--r--arch/mips/include/asm/abi.h6
-rw-r--r--arch/mips/include/asm/elf.h5
-rw-r--r--arch/mips/include/asm/fpu_emulator.h6
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h15
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h6
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h4
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h2
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h2
-rw-r--r--arch/mips/include/asm/mach-sibyte/war.h6
-rw-r--r--arch/mips/include/asm/mmu.h5
-rw-r--r--arch/mips/include/asm/mmu_context.h2
-rw-r--r--arch/mips/include/asm/page.h6
-rw-r--r--arch/mips/include/asm/processor.h11
-rw-r--r--arch/mips/include/asm/stackframe.h19
-rw-r--r--arch/mips/include/asm/uasm.h2
-rw-r--r--arch/mips/include/asm/vdso.h29
-rw-r--r--arch/mips/jazz/jazzdma.c1
-rw-r--r--arch/mips/kernel/Makefile2
-rw-r--r--arch/mips/kernel/cpufreq/loongson2_clock.c4
-rw-r--r--arch/mips/kernel/irq.c1
-rw-r--r--arch/mips/kernel/linux32.c2
-rw-r--r--arch/mips/kernel/process.c8
-rw-r--r--arch/mips/kernel/rtlx.c1
-rw-r--r--arch/mips/kernel/signal-common.h5
-rw-r--r--arch/mips/kernel/signal.c86
-rw-r--r--arch/mips/kernel/signal32.c55
-rw-r--r--arch/mips/kernel/signal_n32.c26
-rw-r--r--arch/mips/kernel/smtc.c3
-rw-r--r--arch/mips/kernel/syscall.c8
-rw-r--r--arch/mips/kernel/traps.c2
-rw-r--r--arch/mips/kernel/vdso.c112
-rw-r--r--arch/mips/lib/delay.c4
-rw-r--r--arch/mips/lib/libgcc.h3
-rw-r--r--arch/mips/mipssim/sim_int.c1
-rw-r--r--arch/mips/mm/cache.c2
-rw-r--r--arch/mips/mm/dma-default.c1
-rw-r--r--arch/mips/mm/hugetlbpage.c1
-rw-r--r--arch/mips/mm/init.c1
-rw-r--r--arch/mips/mm/ioremap.c1
-rw-r--r--arch/mips/mm/tlbex.c22
-rw-r--r--arch/mips/mm/uasm.c23
-rw-r--r--arch/mips/mti-malta/malta-int.c1
-rw-r--r--arch/mips/nxp/pnx833x/common/reset.c1
-rw-r--r--arch/mips/nxp/pnx8550/common/int.c1
-rw-r--r--arch/mips/nxp/pnx8550/common/proc.c1
-rw-r--r--arch/mips/nxp/pnx8550/common/reset.c1
-rw-r--r--arch/mips/pci/ops-loongson2.c10
-rw-r--r--arch/mips/pci/ops-titan-ht.c1
-rw-r--r--arch/mips/pmc-sierra/msp71xx/msp_prom.c1
-rw-r--r--arch/mips/pmc-sierra/yosemite/ht.c1
-rw-r--r--arch/mips/pmc-sierra/yosemite/irq.c1
-rw-r--r--arch/mips/powertv/asic/asic_devices.c1
-rw-r--r--arch/mips/powertv/asic/asic_int.c1
-rw-r--r--arch/mips/rb532/irq.c1
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c1
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c1
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c1
-rw-r--r--arch/mips/sibyte/common/sb_tbprof.c1
-rw-r--r--arch/mips/sibyte/sb1250/irq.c1
-rw-r--r--arch/mips/sibyte/sb1250/setup.c15
-rw-r--r--arch/mips/txx9/generic/pci.c1
-rw-r--r--arch/mips/txx9/generic/setup.c2
-rw-r--r--arch/mips/txx9/generic/spi_eeprom.c1
-rw-r--r--arch/mips/txx9/rbtx4939/setup.c1
-rw-r--r--arch/mn10300/kernel/process.c2
-rw-r--r--arch/mn10300/kernel/setup.c1
-rw-r--r--arch/mn10300/mm/dma-alloc.c1
-rw-r--r--arch/mn10300/mm/init.c2
-rw-r--r--arch/mn10300/mm/pgtable.c2
-rw-r--r--arch/mn10300/unit-asb2305/pci-irq.c1
-rw-r--r--arch/parisc/hpux/fs.c2
-rw-r--r--arch/parisc/kernel/module.c1
-rw-r--r--arch/parisc/kernel/pci-dma.c2
-rw-r--r--arch/parisc/kernel/pci.c1
-rw-r--r--arch/parisc/kernel/process.c1
-rw-r--r--arch/parisc/kernel/signal32.c1
-rw-r--r--arch/parisc/kernel/smp.c1
-rw-r--r--arch/parisc/mm/init.c1
-rw-r--r--arch/powerpc/Kconfig13
-rw-r--r--arch/powerpc/configs/52xx/cm5200_defconfig24
-rw-r--r--arch/powerpc/configs/52xx/lite5200b_defconfig28
-rw-r--r--arch/powerpc/configs/52xx/motionpro_defconfig25
-rw-r--r--arch/powerpc/configs/52xx/pcm030_defconfig27
-rw-r--r--arch/powerpc/configs/52xx/tqm5200_defconfig28
-rw-r--r--arch/powerpc/configs/mpc5200_defconfig134
-rw-r--r--arch/powerpc/include/asm/asm-compat.h2
-rw-r--r--arch/powerpc/include/asm/ppc-opcode.h6
-rw-r--r--arch/powerpc/include/asm/syscall.h6
-rw-r--r--arch/powerpc/kernel/cacheinfo.c1
-rw-r--r--arch/powerpc/kernel/dma.c1
-rw-r--r--arch/powerpc/kernel/head_fsl_booke.S7
-rw-r--r--arch/powerpc/kernel/ibmebus.c1
-rw-r--r--arch/powerpc/kernel/iommu.c7
-rw-r--r--arch/powerpc/kernel/kprobes.c1
-rw-r--r--arch/powerpc/kernel/lparcfg.c1
-rw-r--r--arch/powerpc/kernel/misc.S26
-rw-r--r--arch/powerpc/kernel/of_platform.c1
-rw-r--r--arch/powerpc/kernel/pci-common.c1
-rw-r--r--arch/powerpc/kernel/pci_32.c1
-rw-r--r--arch/powerpc/kernel/pci_dn.c1
-rw-r--r--arch/powerpc/kernel/perf_event.c29
-rw-r--r--arch/powerpc/kernel/proc_powerpc.c1
-rw-r--r--arch/powerpc/kernel/rtas.c1
-rw-r--r--arch/powerpc/kernel/rtas_flash.c1
-rw-r--r--arch/powerpc/kernel/rtasd.c1
-rw-r--r--arch/powerpc/kernel/setup_32.c6
-rw-r--r--arch/powerpc/kernel/setup_64.c6
-rw-r--r--arch/powerpc/kernel/smp-tbsync.c1
-rw-r--r--arch/powerpc/kernel/softemu8xx.c1
-rw-r--r--arch/powerpc/kernel/sys_ppc32.c1
-rw-r--r--arch/powerpc/kernel/traps.c1
-rw-r--r--arch/powerpc/kernel/vio.c1
-rw-r--r--arch/powerpc/kvm/44x.c1
-rw-r--r--arch/powerpc/kvm/book3s.c6
-rw-r--r--arch/powerpc/kvm/booke.c1
-rw-r--r--arch/powerpc/kvm/e500.c1
-rw-r--r--arch/powerpc/kvm/e500_tlb.c1
-rw-r--r--arch/powerpc/kvm/powerpc.c1
-rw-r--r--arch/powerpc/lib/devres.c1
-rw-r--r--arch/powerpc/mm/dma-noncoherent.c1
-rw-r--r--arch/powerpc/mm/hugetlbpage.c1
-rw-r--r--arch/powerpc/mm/init_32.c1
-rw-r--r--arch/powerpc/mm/init_64.c1
-rw-r--r--arch/powerpc/mm/mem.c7
-rw-r--r--arch/powerpc/mm/mmu_context_hash64.c1
-rw-r--r--arch/powerpc/mm/mmu_context_nohash.c1
-rw-r--r--arch/powerpc/mm/pgtable.c1
-rw-r--r--arch/powerpc/mm/pgtable_32.c1
-rw-r--r--arch/powerpc/mm/pgtable_64.c1
-rw-r--r--arch/powerpc/mm/subpage-prot.c1
-rw-r--r--arch/powerpc/oprofile/cell/spu_task_sync.c1
-rw-r--r--arch/powerpc/oprofile/cell/vma_map.c1
-rw-r--r--arch/powerpc/platforms/44x/warp.c1
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_gpio.c1
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_gpt.c7
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c2
-rw-r--r--arch/powerpc/platforms/82xx/ep8248e.c1
-rw-r--r--arch/powerpc/platforms/82xx/pq2ads-pci-pic.c1
-rw-r--r--arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c1
-rw-r--r--arch/powerpc/platforms/86xx/gef_gpio.c1
-rw-r--r--arch/powerpc/platforms/8xx/m8xx_setup.c1
-rw-r--r--arch/powerpc/platforms/cell/axon_msi.c1
-rw-r--r--arch/powerpc/platforms/cell/celleb_pci.c1
-rw-r--r--arch/powerpc/platforms/cell/celleb_scc_pciex.c1
-rw-r--r--arch/powerpc/platforms/cell/iommu.c1
-rw-r--r--arch/powerpc/platforms/cell/ras.c1
-rw-r--r--arch/powerpc/platforms/cell/setup.c1
-rw-r--r--arch/powerpc/platforms/cell/spider-pci.c1
-rw-r--r--arch/powerpc/platforms/cell/spu_manage.c1
-rw-r--r--arch/powerpc/platforms/cell/spu_priv1_mmio.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/coredump.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/lscsa_alloc.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c1
-rw-r--r--arch/powerpc/platforms/cell/spufs/syscalls.c1
-rw-r--r--arch/powerpc/platforms/chrp/nvram.c1
-rw-r--r--arch/powerpc/platforms/chrp/setup.c1
-rw-r--r--arch/powerpc/platforms/iseries/iommu.c1
-rw-r--r--arch/powerpc/platforms/iseries/mf.c1
-rw-r--r--arch/powerpc/platforms/iseries/pci.c1
-rw-r--r--arch/powerpc/platforms/iseries/vio.c2
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c1
-rw-r--r--arch/powerpc/platforms/maple/setup.c1
-rw-r--r--arch/powerpc/platforms/pasemi/dma_lib.c1
-rw-r--r--arch/powerpc/platforms/pasemi/gpio_mdio.c1
-rw-r--r--arch/powerpc/platforms/pasemi/setup.c1
-rw-r--r--arch/powerpc/platforms/powermac/cpufreq_32.c1
-rw-r--r--arch/powerpc/platforms/powermac/cpufreq_64.c1
-rw-r--r--arch/powerpc/platforms/powermac/low_i2c.c1
-rw-r--r--arch/powerpc/platforms/powermac/nvram.c1
-rw-r--r--arch/powerpc/platforms/powermac/pfunc_core.c1
-rw-r--r--arch/powerpc/platforms/powermac/setup.c1
-rw-r--r--arch/powerpc/platforms/ps3/device-init.c1
-rw-r--r--arch/powerpc/platforms/ps3/mm.c1
-rw-r--r--arch/powerpc/platforms/ps3/os-area.c1
-rw-r--r--arch/powerpc/platforms/ps3/spu.c1
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c1
-rw-r--r--arch/powerpc/platforms/pseries/cmm.c1
-rw-r--r--arch/powerpc/platforms/pseries/dlpar.c1
-rw-r--r--arch/powerpc/platforms/pseries/dtl.c1
-rw-r--r--arch/powerpc/platforms/pseries/eeh_cache.c1
-rw-r--r--arch/powerpc/platforms/pseries/eeh_event.c1
-rw-r--r--arch/powerpc/platforms/pseries/nvram.c1
-rw-r--r--arch/powerpc/platforms/pseries/phyp_dump.c1
-rw-r--r--arch/powerpc/platforms/pseries/ras.c1
-rw-r--r--arch/powerpc/platforms/pseries/reconfig.c1
-rw-r--r--arch/powerpc/platforms/pseries/scanlog.c1
-rw-r--r--arch/powerpc/platforms/pseries/setup.c1
-rw-r--r--arch/powerpc/sysdev/cpm1.c1
-rw-r--r--arch/powerpc/sysdev/cpm_common.c1
-rw-r--r--arch/powerpc/sysdev/dart_iommu.c2
-rw-r--r--arch/powerpc/sysdev/fsl_gtm.c1
-rw-r--r--arch/powerpc/sysdev/fsl_msi.c1
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c1
-rw-r--r--arch/powerpc/sysdev/fsl_rio.c1
-rw-r--r--arch/powerpc/sysdev/mpc8xxx_gpio.c1
-rw-r--r--arch/powerpc/sysdev/mpic.c1
-rw-r--r--arch/powerpc/sysdev/msi_bitmap.c1
-rw-r--r--arch/powerpc/sysdev/of_rtc.c1
-rw-r--r--arch/powerpc/sysdev/pmi.c1
-rw-r--r--arch/powerpc/sysdev/ppc4xx_gpio.c1
-rw-r--r--arch/powerpc/sysdev/ppc4xx_pci.c1
-rw-r--r--arch/powerpc/sysdev/qe_lib/gpio.c1
-rw-r--r--arch/powerpc/sysdev/qe_lib/ucc.c1
-rw-r--r--arch/powerpc/sysdev/simple_gpio.c1
-rw-r--r--arch/powerpc/sysdev/tsi108_pci.c1
-rw-r--r--arch/s390/appldata/appldata_mem.c1
-rw-r--r--arch/s390/appldata/appldata_net_sum.c1
-rw-r--r--arch/s390/boot/compressed/misc.c8
-rw-r--r--arch/s390/crypto/prng.c1
-rw-r--r--arch/s390/defconfig40
-rw-r--r--arch/s390/hypfs/hypfs_diag.c1
-rw-r--r--arch/s390/hypfs/inode.c2
-rw-r--r--arch/s390/include/asm/pgtable.h6
-rw-r--r--arch/s390/include/asm/system.h9
-rw-r--r--arch/s390/include/asm/vdso.h1
-rw-r--r--arch/s390/kernel/asm-offsets.c1
-rw-r--r--arch/s390/kernel/compat_linux.c2
-rw-r--r--arch/s390/kernel/early.c3
-rw-r--r--arch/s390/kernel/entry.S8
-rw-r--r--arch/s390/kernel/entry64.S8
-rw-r--r--arch/s390/kernel/head.S3
-rw-r--r--arch/s390/kernel/head64.S2
-rw-r--r--arch/s390/kernel/ipl.c1
-rw-r--r--arch/s390/kernel/kprobes.c1
-rw-r--r--arch/s390/kernel/process.c2
-rw-r--r--arch/s390/kernel/setup.c5
-rw-r--r--arch/s390/kernel/smp.c7
-rw-r--r--arch/s390/kernel/swsusp_asm64.S3
-rw-r--r--arch/s390/kernel/sysinfo.c1
-rw-r--r--arch/s390/kernel/time.c2
-rw-r--r--arch/s390/kernel/topology.c3
-rw-r--r--arch/s390/kernel/vdso32/clock_gettime.S12
-rw-r--r--arch/s390/kernel/vdso32/gettimeofday.S6
-rw-r--r--arch/s390/kernel/vdso64/clock_gettime.S4
-rw-r--r--arch/s390/kernel/vdso64/gettimeofday.S2
-rw-r--r--arch/s390/kvm/interrupt.c1
-rw-r--r--arch/s390/kvm/priv.c1
-rw-r--r--arch/s390/kvm/sigp.c1
-rw-r--r--arch/s390/mm/cmm.c1
-rw-r--r--arch/s390/mm/init.c1
-rw-r--r--arch/s390/mm/maccess.c26
-rw-r--r--arch/s390/mm/page-states.c1
-rw-r--r--arch/s390/mm/pgtable.c2
-rw-r--r--arch/s390/mm/vmem.c12
-rw-r--r--arch/score/kernel/sys_score.c1
-rw-r--r--arch/score/mm/init.c1
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c2
-rw-r--r--arch/sh/boards/mach-se/7724/setup.c8
-rw-r--r--arch/sh/configs/ecovec24_defconfig236
-rw-r--r--arch/sh/drivers/dma/dma-api.c1
-rw-r--r--arch/sh/drivers/dma/dmabrg.c1
-rw-r--r--arch/sh/drivers/heartbeat.c1
-rw-r--r--arch/sh/drivers/pci/pcie-sh7786.c1
-rw-r--r--arch/sh/drivers/push-switch.c1
-rw-r--r--arch/sh/include/asm/elf.h6
-rw-r--r--arch/sh/include/asm/mmu.h7
-rw-r--r--arch/sh/include/cpu-sh4/cpu/mmu_context.h4
-rw-r--r--arch/sh/include/cpu-sh4/cpu/watchdog.h6
-rw-r--r--arch/sh/kernel/cpu/fpu.c1
-rw-r--r--arch/sh/kernel/cpu/hwblk.c1
-rw-r--r--arch/sh/kernel/cpufreq.c4
-rw-r--r--arch/sh/kernel/dwarf.c5
-rw-r--r--arch/sh/kernel/idle.c2
-rw-r--r--arch/sh/kernel/kprobes.c1
-rw-r--r--arch/sh/kernel/perf_event.c22
-rw-r--r--arch/sh/kernel/process.c1
-rw-r--r--arch/sh/kernel/process_32.c1
-rw-r--r--arch/sh/kernel/process_64.c8
-rw-r--r--arch/sh/kernel/ptrace_32.c1
-rw-r--r--arch/sh/kernel/return_address.c3
-rw-r--r--arch/sh/kernel/smp.c1
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall.c1
-rw-r--r--arch/sh/mm/consistent.c1
-rw-r--r--arch/sh/mm/hugetlbpage.c1
-rw-r--r--arch/sh/mm/init.c1
-rw-r--r--arch/sh/mm/ioremap.c1
-rw-r--r--arch/sh/mm/ioremap_fixed.c1
-rw-r--r--arch/sh/mm/pgtable.c1
-rw-r--r--arch/sh/mm/pmb.c5
-rw-r--r--arch/sh/mm/tlb-pteaex.c30
-rw-r--r--arch/sh/mm/tlb-sh3.c19
-rw-r--r--arch/sh/mm/tlb-sh4.c28
-rw-r--r--arch/sh/mm/tlb-urb.c22
-rw-r--r--arch/sh/mm/tlbflush_32.c19
-rw-r--r--arch/sh/mm/uncached.c9
-rw-r--r--arch/sparc/Kconfig3
-rw-r--r--arch/sparc/Kconfig.debug5
-rw-r--r--arch/sparc/configs/sparc64_defconfig28
-rw-r--r--arch/sparc/include/asm/cpudata_64.h2
-rw-r--r--arch/sparc/include/asm/irqflags_64.h23
-rw-r--r--arch/sparc/include/asm/stat.h4
-rw-r--r--arch/sparc/include/asm/thread_info_64.h2
-rw-r--r--arch/sparc/kernel/Makefile10
-rw-r--r--arch/sparc/kernel/central.c1
-rw-r--r--arch/sparc/kernel/cpumap.c1
-rw-r--r--arch/sparc/kernel/ftrace.c60
-rw-r--r--arch/sparc/kernel/helpers.S75
-rw-r--r--arch/sparc/kernel/hvapi.c1
-rw-r--r--arch/sparc/kernel/iommu.c1
-rw-r--r--arch/sparc/kernel/irq_64.c31
-rw-r--r--arch/sparc/kernel/kgdb_64.c3
-rw-r--r--arch/sparc/kernel/kprobes.c1
-rw-r--r--arch/sparc/kernel/kstack.h19
-rw-r--r--arch/sparc/kernel/led.c1
-rw-r--r--arch/sparc/kernel/leon_kernel.c1
-rw-r--r--arch/sparc/kernel/leon_smp.c1
-rw-r--r--arch/sparc/kernel/module.c2
-rw-r--r--arch/sparc/kernel/nmi.c10
-rw-r--r--arch/sparc/kernel/of_device_common.c1
-rw-r--r--arch/sparc/kernel/pci_common.c11
-rw-r--r--arch/sparc/kernel/pci_msi.c1
-rw-r--r--arch/sparc/kernel/pcr.c3
-rw-r--r--arch/sparc/kernel/perf_event.c4
-rw-r--r--arch/sparc/kernel/process_32.c2
-rw-r--r--arch/sparc/kernel/ptrace_32.c4
-rw-r--r--arch/sparc/kernel/ptrace_64.c4
-rw-r--r--arch/sparc/kernel/rtrap_64.S12
-rw-r--r--arch/sparc/kernel/setup_64.c1
-rw-r--r--arch/sparc/kernel/smp_64.c12
-rw-r--r--arch/sparc/kernel/sun4c_irq.c1
-rw-r--r--arch/sparc/kernel/sun4m_irq.c1
-rw-r--r--arch/sparc/kernel/sys_sparc32.c2
-rw-r--r--arch/sparc/kernel/sysfs.c4
-rw-r--r--arch/sparc/kernel/time_64.c4
-rw-r--r--arch/sparc/kernel/traps_64.c27
-rw-r--r--arch/sparc/kernel/unaligned_64.c6
-rw-r--r--arch/sparc/kernel/us2e_cpufreq.c8
-rw-r--r--arch/sparc/kernel/us3_cpufreq.c8
-rw-r--r--arch/sparc/kernel/vio.c1
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S5
-rw-r--r--arch/sparc/lib/mcount.S159
-rw-r--r--arch/sparc/mm/hugetlbpage.c1
-rw-r--r--arch/sparc/mm/init_32.c1
-rw-r--r--arch/sparc/mm/init_64.c4
-rw-r--r--arch/sparc/mm/srmmu.c2
-rw-r--r--arch/sparc/mm/sun4c.c1
-rw-r--r--arch/sparc/mm/tsb.c1
-rw-r--r--arch/um/drivers/net_kern.c1
-rw-r--r--arch/um/drivers/port_kern.c1
-rw-r--r--arch/um/drivers/ubd_kern.c1
-rw-r--r--arch/um/kernel/exec.c1
-rw-r--r--arch/um/kernel/irq.c1
-rw-r--r--arch/um/kernel/mem.c2
-rw-r--r--arch/um/kernel/process.c2
-rw-r--r--arch/um/kernel/reboot.c1
-rw-r--r--arch/um/kernel/skas/mmu.c1
-rw-r--r--arch/um/os-Linux/helper.c1
-rw-r--r--arch/um/sys-i386/ldt.c1
-rw-r--r--arch/x86/Kconfig8
-rw-r--r--arch/x86/crypto/fpu.c1
-rw-r--r--arch/x86/ia32/ia32_aout.c1
-rw-r--r--arch/x86/ia32/ia32entry.S2
-rw-r--r--arch/x86/ia32/sys_ia32.c1
-rw-r--r--arch/x86/include/asm/amd_iommu_types.h3
-rw-r--r--arch/x86/include/asm/fixmap.h6
-rw-r--r--arch/x86/include/asm/hw_breakpoint.h1
-rw-r--r--arch/x86/include/asm/hw_irq.h1
-rw-r--r--arch/x86/include/asm/lguest_hcall.h29
-rw-r--r--arch/x86/include/asm/msr-index.h2
-rw-r--r--arch/x86/include/asm/perf_event.h16
-rw-r--r--arch/x86/include/asm/pgtable_32.h1
-rw-r--r--arch/x86/kernel/acpi/boot.c101
-rw-r--r--arch/x86/kernel/alternative.c1
-rw-r--r--arch/x86/kernel/amd_iommu.c22
-rw-r--r--arch/x86/kernel/amd_iommu_init.c50
-rw-r--r--arch/x86/kernel/apb_timer.c1
-rw-r--r--arch/x86/kernel/aperture_64.c16
-rw-r--r--arch/x86/kernel/apic/apic.c2
-rw-r--r--arch/x86/kernel/apic/es7000_32.c1
-rw-r--r--arch/x86/kernel/apic/io_apic.c9
-rw-r--r--arch/x86/kernel/apic/nmi.c1
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c5
-rw-r--r--arch/x86/kernel/bootflag.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/elanfreq.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/gx-suspmod.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/longrun.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/p4-clockmod.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k6.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-ich.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-lib.c1
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-smi.c1
-rw-r--r--arch/x86/kernel/cpu/intel.c3
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce-inject.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce.c16
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_amd.c1
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_intel.c5
-rw-r--r--arch/x86/kernel/cpu/mtrr/generic.c1
-rw-r--r--arch/x86/kernel/cpu/mtrr/if.c1
-rw-r--r--arch/x86/kernel/cpu/perf_event.c267
-rw-r--r--arch/x86/kernel/cpu/perf_event_amd.c142
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel.c95
-rw-r--r--arch/x86/kernel/cpu/perf_event_p6.c18
-rw-r--r--arch/x86/kernel/cpu/perfctr-watchdog.c2
-rw-r--r--arch/x86/kernel/cpuid.c1
-rw-r--r--arch/x86/kernel/crash.c6
-rw-r--r--arch/x86/kernel/crash_dump_32.c1
-rw-r--r--arch/x86/kernel/dumpstack.h24
-rw-r--r--arch/x86/kernel/dumpstack_64.c14
-rw-r--r--arch/x86/kernel/e820.c24
-rw-r--r--arch/x86/kernel/head32.c4
-rw-r--r--arch/x86/kernel/head64.c3
-rw-r--r--arch/x86/kernel/hpet.c10
-rw-r--r--arch/x86/kernel/hw_breakpoint.c12
-rw-r--r--arch/x86/kernel/i387.c1
-rw-r--r--arch/x86/kernel/i8259.c1
-rw-r--r--arch/x86/kernel/irqinit.c23
-rw-r--r--arch/x86/kernel/k8.c16
-rw-r--r--arch/x86/kernel/kdebugfs.c1
-rw-r--r--arch/x86/kernel/kgdb.c2
-rw-r--r--arch/x86/kernel/ldt.c1
-rw-r--r--arch/x86/kernel/machine_kexec_64.c1
-rw-r--r--arch/x86/kernel/mca_32.c1
-rw-r--r--arch/x86/kernel/module.c1
-rw-r--r--arch/x86/kernel/mpparse.c4
-rw-r--r--arch/x86/kernel/msr.c1
-rw-r--r--arch/x86/kernel/pci-dma.c1
-rw-r--r--arch/x86/kernel/pci-gart_64.c6
-rw-r--r--arch/x86/kernel/pci-nommu.c1
-rw-r--r--arch/x86/kernel/process.c34
-rw-r--r--arch/x86/kernel/ptrace.c1
-rw-r--r--arch/x86/kernel/setup.c25
-rw-r--r--arch/x86/kernel/smp.c1
-rw-r--r--arch/x86/kernel/smpboot.c7
-rw-r--r--arch/x86/kernel/tlb_uv.c1
-rw-r--r--arch/x86/kernel/uv_irq.c1
-rw-r--r--arch/x86/kernel/uv_time.c1
-rw-r--r--arch/x86/kernel/vmi_32.c1
-rw-r--r--arch/x86/kernel/vmlinux.lds.S2
-rw-r--r--arch/x86/kvm/i8254.c1
-rw-r--r--arch/x86/kvm/i8259.c1
-rw-r--r--arch/x86/kvm/lapic.c1
-rw-r--r--arch/x86/kvm/mmu.c12
-rw-r--r--arch/x86/kvm/svm.c26
-rw-r--r--arch/x86/kvm/vmx.c25
-rw-r--r--arch/x86/kvm/x86.c49
-rw-r--r--arch/x86/lguest/boot.c61
-rw-r--r--arch/x86/lguest/i386_head.S2
-rw-r--r--arch/x86/mm/hugetlbpage.c1
-rw-r--r--arch/x86/mm/init.c33
-rw-r--r--arch/x86/mm/init_32.c2
-rw-r--r--arch/x86/mm/init_64.c1
-rw-r--r--arch/x86/mm/kmmio.c1
-rw-r--r--arch/x86/mm/mmio-mod.c1
-rw-r--r--arch/x86/mm/pageattr.c27
-rw-r--r--arch/x86/mm/pat.c2
-rw-r--r--arch/x86/mm/pgtable.c1
-rw-r--r--arch/x86/mm/pgtable_32.c1
-rw-r--r--arch/x86/oprofile/op_model_amd.c23
-rw-r--r--arch/x86/oprofile/op_model_ppro.c6
-rw-r--r--arch/x86/pci/acpi.c23
-rw-r--r--arch/x86/pci/common.c1
-rw-r--r--arch/x86/pci/i386.c5
-rw-r--r--arch/x86/pci/irq.c1
-rw-r--r--arch/x86/pci/mmconfig-shared.c1
-rw-r--r--arch/x86/pci/pcbios.c1
-rw-r--r--arch/x86/power/hibernate_32.c1
-rw-r--r--arch/x86/power/hibernate_64.c1
-rw-r--r--arch/x86/power/hibernate_asm_32.S15
-rw-r--r--arch/x86/vdso/vma.c1
-rw-r--r--arch/x86/xen/debugfs.c1
-rw-r--r--arch/x86/xen/enlighten.c1
-rw-r--r--arch/x86/xen/mmu.c1
-rw-r--r--arch/x86/xen/smp.c1
-rw-r--r--arch/x86/xen/spinlock.c1
-rw-r--r--arch/x86/xen/time.c1
-rw-r--r--arch/xtensa/kernel/pci-dma.c1
-rw-r--r--arch/xtensa/kernel/process.c2
-rw-r--r--arch/xtensa/mm/init.c2
-rw-r--r--arch/xtensa/platforms/iss/console.c1
978 files changed, 21822 insertions, 5235 deletions
diff --git a/arch/alpha/boot/bootp.c b/arch/alpha/boot/bootp.c
index 3c8d1b25c661..be61670d4096 100644
--- a/arch/alpha/boot/bootp.c
+++ b/arch/alpha/boot/bootp.c
@@ -8,6 +8,7 @@
8 * based significantly on the arch/alpha/boot/main.c of Linus Torvalds 8 * based significantly on the arch/alpha/boot/main.c of Linus Torvalds
9 */ 9 */
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/slab.h>
11#include <linux/string.h> 12#include <linux/string.h>
12#include <generated/utsrelease.h> 13#include <generated/utsrelease.h>
13#include <linux/mm.h> 14#include <linux/mm.h>
diff --git a/arch/alpha/boot/bootpz.c b/arch/alpha/boot/bootpz.c
index ade3f129dc27..c98865f21423 100644
--- a/arch/alpha/boot/bootpz.c
+++ b/arch/alpha/boot/bootpz.c
@@ -10,6 +10,7 @@
10 * and the decompression code from MILO. 10 * and the decompression code from MILO.
11 */ 11 */
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/slab.h>
13#include <linux/string.h> 14#include <linux/string.h>
14#include <generated/utsrelease.h> 15#include <generated/utsrelease.h>
15#include <linux/mm.h> 16#include <linux/mm.h>
diff --git a/arch/alpha/boot/main.c b/arch/alpha/boot/main.c
index 644b7db55438..ded57d9a80e1 100644
--- a/arch/alpha/boot/main.c
+++ b/arch/alpha/boot/main.c
@@ -6,6 +6,7 @@
6 * This file is the bootloader for the Linux/AXP kernel 6 * This file is the bootloader for the Linux/AXP kernel
7 */ 7 */
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/slab.h>
9#include <linux/string.h> 10#include <linux/string.h>
10#include <generated/utsrelease.h> 11#include <generated/utsrelease.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
diff --git a/arch/alpha/boot/misc.c b/arch/alpha/boot/misc.c
index 3047a1b3a517..3ff9a957a25c 100644
--- a/arch/alpha/boot/misc.c
+++ b/arch/alpha/boot/misc.c
@@ -19,6 +19,7 @@
19 */ 19 */
20 20
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/slab.h>
22 23
23#include <asm/uaccess.h> 24#include <asm/uaccess.h>
24 25
diff --git a/arch/alpha/include/asm/core_marvel.h b/arch/alpha/include/asm/core_marvel.h
index 30d55fe7aaf6..dad300fa14ce 100644
--- a/arch/alpha/include/asm/core_marvel.h
+++ b/arch/alpha/include/asm/core_marvel.h
@@ -12,7 +12,6 @@
12#define __ALPHA_MARVEL__H__ 12#define __ALPHA_MARVEL__H__
13 13
14#include <linux/types.h> 14#include <linux/types.h>
15#include <linux/pci.h>
16#include <linux/spinlock.h> 15#include <linux/spinlock.h>
17 16
18#include <asm/compiler.h> 17#include <asm/compiler.h>
diff --git a/arch/alpha/include/asm/core_mcpcia.h b/arch/alpha/include/asm/core_mcpcia.h
index acf55b483472..21ac53383b37 100644
--- a/arch/alpha/include/asm/core_mcpcia.h
+++ b/arch/alpha/include/asm/core_mcpcia.h
@@ -6,7 +6,6 @@
6#define MCPCIA_ONE_HAE_WINDOW 1 6#define MCPCIA_ONE_HAE_WINDOW 1
7 7
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/pci.h>
10#include <asm/compiler.h> 9#include <asm/compiler.h>
11 10
12/* 11/*
diff --git a/arch/alpha/include/asm/core_titan.h b/arch/alpha/include/asm/core_titan.h
index a17f6f33b68e..8cf79d1219e1 100644
--- a/arch/alpha/include/asm/core_titan.h
+++ b/arch/alpha/include/asm/core_titan.h
@@ -2,7 +2,6 @@
2#define __ALPHA_TITAN__H__ 2#define __ALPHA_TITAN__H__
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/pci.h>
6#include <asm/compiler.h> 5#include <asm/compiler.h>
7 6
8/* 7/*
diff --git a/arch/alpha/include/asm/core_tsunami.h b/arch/alpha/include/asm/core_tsunami.h
index 58d4fe48742c..8e39ecf09419 100644
--- a/arch/alpha/include/asm/core_tsunami.h
+++ b/arch/alpha/include/asm/core_tsunami.h
@@ -2,7 +2,6 @@
2#define __ALPHA_TSUNAMI__H__ 2#define __ALPHA_TSUNAMI__H__
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/pci.h>
6#include <asm/compiler.h> 5#include <asm/compiler.h>
7 6
8/* 7/*
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 5f2cf23c4648..7f912ba3d9ad 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -18,7 +18,6 @@
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/ptrace.h> 19#include <linux/ptrace.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/slab.h>
22#include <linux/random.h> 21#include <linux/random.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/irq.h> 23#include <linux/irq.h>
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 53c213f70fcb..de9d39717808 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -20,7 +20,6 @@
20#include <linux/syscalls.h> 20#include <linux/syscalls.h>
21#include <linux/unistd.h> 21#include <linux/unistd.h>
22#include <linux/ptrace.h> 22#include <linux/ptrace.h>
23#include <linux/slab.h>
24#include <linux/user.h> 23#include <linux/user.h>
25#include <linux/utsname.h> 24#include <linux/utsname.h>
26#include <linux/time.h> 25#include <linux/time.h>
@@ -37,6 +36,7 @@
37#include <linux/uio.h> 36#include <linux/uio.h>
38#include <linux/vfs.h> 37#include <linux/vfs.h>
39#include <linux/rcupdate.h> 38#include <linux/rcupdate.h>
39#include <linux/slab.h>
40 40
41#include <asm/fpu.h> 41#include <asm/fpu.h>
42#include <asm/io.h> 42#include <asm/io.h>
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
index 823a540f9f5b..246100ef07c2 100644
--- a/arch/alpha/kernel/pci-noop.c
+++ b/arch/alpha/kernel/pci-noop.c
@@ -7,6 +7,7 @@
7#include <linux/pci.h> 7#include <linux/pci.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/bootmem.h> 9#include <linux/bootmem.h>
10#include <linux/gfp.h>
10#include <linux/capability.h> 11#include <linux/capability.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
12#include <linux/errno.h> 13#include <linux/errno.h>
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index 6ea822e7f724..d979e7c7bc4b 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/slab.h>
13#include <linux/pci.h> 14#include <linux/pci.h>
14 15
15static int hose_mmap_page_range(struct pci_controller *hose, 16static int hose_mmap_page_range(struct pci_controller *hose,
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index ce9e54c887fa..d1dbd9acd1df 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -5,7 +5,7 @@
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/mm.h> 6#include <linux/mm.h>
7#include <linux/pci.h> 7#include <linux/pci.h>
8#include <linux/slab.h> 8#include <linux/gfp.h>
9#include <linux/bootmem.h> 9#include <linux/bootmem.h>
10#include <linux/scatterlist.h> 10#include <linux/scatterlist.h>
11#include <linux/log2.h> 11#include <linux/log2.h>
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 289039bb6bb2..395a464353b8 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -17,7 +17,6 @@
17#include <linux/stddef.h> 17#include <linux/stddef.h>
18#include <linux/unistd.h> 18#include <linux/unistd.h>
19#include <linux/ptrace.h> 19#include <linux/ptrace.h>
20#include <linux/slab.h>
21#include <linux/user.h> 20#include <linux/user.h>
22#include <linux/time.h> 21#include <linux/time.h>
23#include <linux/major.h> 22#include <linux/major.h>
@@ -28,6 +27,7 @@
28#include <linux/reboot.h> 27#include <linux/reboot.h>
29#include <linux/tty.h> 28#include <linux/tty.h>
30#include <linux/console.h> 29#include <linux/console.h>
30#include <linux/slab.h>
31 31
32#include <asm/reg.h> 32#include <asm/reg.h>
33#include <asm/uaccess.h> 33#include <asm/uaccess.h>
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
index 9acadc6b16a0..baa903602f6a 100644
--- a/arch/alpha/kernel/ptrace.c
+++ b/arch/alpha/kernel/ptrace.c
@@ -11,7 +11,6 @@
11#include <linux/errno.h> 11#include <linux/errno.h>
12#include <linux/ptrace.h> 12#include <linux/ptrace.h>
13#include <linux/user.h> 13#include <linux/user.h>
14#include <linux/slab.h>
15#include <linux/security.h> 14#include <linux/security.h>
16#include <linux/signal.h> 15#include <linux/signal.h>
17 16
diff --git a/arch/alpha/kernel/smc37c669.c b/arch/alpha/kernel/smc37c669.c
index bca5bda90cde..0435921d41c6 100644
--- a/arch/alpha/kernel/smc37c669.c
+++ b/arch/alpha/kernel/smc37c669.c
@@ -3,7 +3,6 @@
3 */ 3 */
4#include <linux/kernel.h> 4#include <linux/kernel.h>
5 5
6#include <linux/slab.h>
7#include <linux/mm.h> 6#include <linux/mm.h>
8#include <linux/init.h> 7#include <linux/init.h>
9#include <linux/delay.h> 8#include <linux/delay.h>
diff --git a/arch/alpha/kernel/smc37c93x.c b/arch/alpha/kernel/smc37c93x.c
index 2636cc028d06..3e6a2893af9f 100644
--- a/arch/alpha/kernel/smc37c93x.c
+++ b/arch/alpha/kernel/smc37c93x.c
@@ -4,7 +4,6 @@
4 4
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6 6
7#include <linux/slab.h>
8#include <linux/mm.h> 7#include <linux/mm.h>
9#include <linux/init.h> 8#include <linux/init.h>
10#include <linux/delay.h> 9#include <linux/delay.h>
diff --git a/arch/alpha/kernel/srm_env.c b/arch/alpha/kernel/srm_env.c
index dbbf04f9230e..4afc1a1e2e5a 100644
--- a/arch/alpha/kernel/srm_env.c
+++ b/arch/alpha/kernel/srm_env.c
@@ -30,6 +30,7 @@
30 */ 30 */
31 31
32#include <linux/kernel.h> 32#include <linux/kernel.h>
33#include <linux/gfp.h>
33#include <linux/module.h> 34#include <linux/module.h>
34#include <linux/init.h> 35#include <linux/init.h>
35#include <linux/proc_fs.h> 36#include <linux/proc_fs.h>
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index d64e1e497e76..4026502ab707 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -224,7 +224,7 @@ static void
224dp264_device_interrupt(unsigned long vector) 224dp264_device_interrupt(unsigned long vector)
225{ 225{
226#if 1 226#if 1
227 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n"); 227 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!!\n");
228#else 228#else
229 unsigned long pld; 229 unsigned long pld;
230 unsigned int i; 230 unsigned int i;
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 288053342c83..9008d0f20c53 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -171,7 +171,7 @@ titan_set_irq_affinity(unsigned int irq, const struct cpumask *affinity)
171static void 171static void
172titan_device_interrupt(unsigned long vector) 172titan_device_interrupt(unsigned long vector)
173{ 173{
174 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); 174 printk("titan_device_interrupt: NOT IMPLEMENTED YET!!\n");
175} 175}
176 176
177static void 177static void
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
index 6ee7655b7568..b14f015008ad 100644
--- a/arch/alpha/kernel/traps.c
+++ b/arch/alpha/kernel/traps.c
@@ -17,6 +17,7 @@
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/kallsyms.h> 19#include <linux/kallsyms.h>
20#include <linux/ratelimit.h>
20 21
21#include <asm/gentrap.h> 22#include <asm/gentrap.h>
22#include <asm/uaccess.h> 23#include <asm/uaccess.h>
@@ -771,8 +772,7 @@ asmlinkage void
771do_entUnaUser(void __user * va, unsigned long opcode, 772do_entUnaUser(void __user * va, unsigned long opcode,
772 unsigned long reg, struct pt_regs *regs) 773 unsigned long reg, struct pt_regs *regs)
773{ 774{
774 static int cnt = 0; 775 static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
775 static unsigned long last_time;
776 776
777 unsigned long tmp1, tmp2, tmp3, tmp4; 777 unsigned long tmp1, tmp2, tmp3, tmp4;
778 unsigned long fake_reg, *reg_addr = &fake_reg; 778 unsigned long fake_reg, *reg_addr = &fake_reg;
@@ -783,15 +783,11 @@ do_entUnaUser(void __user * va, unsigned long opcode,
783 with the unaliged access. */ 783 with the unaliged access. */
784 784
785 if (!test_thread_flag (TIF_UAC_NOPRINT)) { 785 if (!test_thread_flag (TIF_UAC_NOPRINT)) {
786 if (cnt >= 5 && time_after(jiffies, last_time + 5 * HZ)) { 786 if (__ratelimit(&ratelimit)) {
787 cnt = 0;
788 }
789 if (++cnt < 5) {
790 printk("%s(%d): unaligned trap at %016lx: %p %lx %ld\n", 787 printk("%s(%d): unaligned trap at %016lx: %p %lx %ld\n",
791 current->comm, task_pid_nr(current), 788 current->comm, task_pid_nr(current),
792 regs->pc - 4, va, opcode, reg); 789 regs->pc - 4, va, opcode, reg);
793 } 790 }
794 last_time = jiffies;
795 } 791 }
796 if (test_thread_flag (TIF_UAC_SIGBUS)) 792 if (test_thread_flag (TIF_UAC_SIGBUS))
797 goto give_sigbus; 793 goto give_sigbus;
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index a0902c20d677..86425ab53bf5 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -20,6 +20,7 @@
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/bootmem.h> /* max_low_pfn */ 21#include <linux/bootmem.h> /* max_low_pfn */
22#include <linux/vmalloc.h> 22#include <linux/vmalloc.h>
23#include <linux/gfp.h>
23 24
24#include <asm/system.h> 25#include <asm/system.h>
25#include <asm/uaccess.h> 26#include <asm/uaccess.h>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index cadfe2ee66a5..c5408bf1bf43 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -218,6 +218,10 @@ config MMU
218 Select if you want MMU-based virtualised addressing space 218 Select if you want MMU-based virtualised addressing space
219 support by paged memory management. If unsure, say 'Y'. 219 support by paged memory management. If unsure, say 'Y'.
220 220
221#
222# The "ARM system type" choice list is ordered alphabetically by option
223# text. Please add new entries in the option alphabetic order.
224#
221choice 225choice
222 prompt "ARM system type" 226 prompt "ARM system type"
223 default ARCH_VERSATILE 227 default ARCH_VERSATILE
@@ -274,6 +278,18 @@ config ARCH_AT91
274 This enables support for systems based on the Atmel AT91RM9200, 278 This enables support for systems based on the Atmel AT91RM9200,
275 AT91SAM9 and AT91CAP9 processors. 279 AT91SAM9 and AT91CAP9 processors.
276 280
281config ARCH_BCMRING
282 bool "Broadcom BCMRING"
283 depends on MMU
284 select CPU_V6
285 select ARM_AMBA
286 select COMMON_CLKDEV
287 select GENERIC_TIME
288 select GENERIC_CLOCKEVENTS
289 select ARCH_WANT_OPTIONAL_GPIOLIB
290 help
291 Support for Broadcom's BCMRing platform.
292
277config ARCH_CLPS711X 293config ARCH_CLPS711X
278 bool "Cirrus Logic CLPS711x/EP721x-based" 294 bool "Cirrus Logic CLPS711x/EP721x-based"
279 select CPU_ARM720T 295 select CPU_ARM720T
@@ -359,20 +375,6 @@ config ARCH_H720X
359 help 375 help
360 This enables support for systems based on the Hynix HMS720x 376 This enables support for systems based on the Hynix HMS720x
361 377
362config ARCH_NOMADIK
363 bool "STMicroelectronics Nomadik"
364 select ARM_AMBA
365 select ARM_VIC
366 select CPU_ARM926T
367 select HAVE_CLK
368 select COMMON_CLKDEV
369 select GENERIC_TIME
370 select GENERIC_CLOCKEVENTS
371 select GENERIC_GPIO
372 select ARCH_REQUIRE_GPIOLIB
373 help
374 Support for the Nomadik platform by ST-Ericsson
375
376config ARCH_IOP13XX 378config ARCH_IOP13XX
377 bool "IOP13xx-based" 379 bool "IOP13xx-based"
378 depends on MMU 380 depends on MMU
@@ -747,6 +749,30 @@ config ARCH_U300
747 help 749 help
748 Support for ST-Ericsson U300 series mobile platforms. 750 Support for ST-Ericsson U300 series mobile platforms.
749 751
752config ARCH_U8500
753 bool "ST-Ericsson U8500 Series"
754 select CPU_V7
755 select ARM_AMBA
756 select GENERIC_TIME
757 select GENERIC_CLOCKEVENTS
758 select COMMON_CLKDEV
759 help
760 Support for ST-Ericsson's Ux500 architecture
761
762config ARCH_NOMADIK
763 bool "STMicroelectronics Nomadik"
764 select ARM_AMBA
765 select ARM_VIC
766 select CPU_ARM926T
767 select HAVE_CLK
768 select COMMON_CLKDEV
769 select GENERIC_TIME
770 select GENERIC_CLOCKEVENTS
771 select GENERIC_GPIO
772 select ARCH_REQUIRE_GPIOLIB
773 help
774 Support for the Nomadik platform by ST-Ericsson
775
750config ARCH_DAVINCI 776config ARCH_DAVINCI
751 bool "TI DaVinci" 777 bool "TI DaVinci"
752 select CPU_ARM926T 778 select CPU_ARM926T
@@ -775,30 +801,13 @@ config ARCH_OMAP
775 help 801 help
776 Support for TI's OMAP platform (OMAP1 and OMAP2). 802 Support for TI's OMAP platform (OMAP1 and OMAP2).
777 803
778config ARCH_BCMRING
779 bool "Broadcom BCMRING"
780 depends on MMU
781 select CPU_V6
782 select ARM_AMBA
783 select COMMON_CLKDEV
784 select GENERIC_TIME
785 select GENERIC_CLOCKEVENTS
786 select ARCH_WANT_OPTIONAL_GPIOLIB
787 help
788 Support for Broadcom's BCMRing platform.
789
790config ARCH_U8500
791 bool "ST-Ericsson U8500 Series"
792 select CPU_V7
793 select ARM_AMBA
794 select GENERIC_TIME
795 select GENERIC_CLOCKEVENTS
796 select COMMON_CLKDEV
797 help
798 Support for ST-Ericsson's Ux500 architecture
799
800endchoice 804endchoice
801 805
806#
807# This is sorted alphabetically by mach-* pathname. However, plat-*
808# Kconfigs may be included either alphabetically (according to the
809# plat- suffix) or along side the corresponding mach-* source.
810#
802source "arch/arm/mach-aaec2000/Kconfig" 811source "arch/arm/mach-aaec2000/Kconfig"
803 812
804source "arch/arm/mach-at91/Kconfig" 813source "arch/arm/mach-at91/Kconfig"
diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c
index 0da382f33157..9c097073ce4c 100644
--- a/arch/arm/boot/compressed/decompress.c
+++ b/arch/arm/boot/compressed/decompress.c
@@ -11,6 +11,7 @@ extern unsigned long free_mem_end_ptr;
11extern void error(char *); 11extern void error(char *);
12 12
13#define STATIC static 13#define STATIC static
14#define STATIC_RW_DATA /* non-static please */
14 15
15#define ARCH_HAS_DECOMP_WDOG 16#define ARCH_HAS_DECOMP_WDOG
16 17
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 535a91daaa53..6ab6b337a913 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -172,7 +172,7 @@ not_angel:
172 adr r0, LC0 172 adr r0, LC0
173 ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp}) 173 ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp})
174 THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} ) 174 THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} )
175 THUMB( ldr sp, [r0, #28] ) 175 THUMB( ldr sp, [r0, #32] )
176 subs r0, r0, r1 @ calculate the delta offset 176 subs r0, r0, r1 @ calculate the delta offset
177 177
178 @ if delta is zero, we are 178 @ if delta is zero, we are
@@ -742,7 +742,7 @@ proc_types:
742 .word 0x000f0000 742 .word 0x000f0000
743 W(b) __armv4_mmu_cache_on 743 W(b) __armv4_mmu_cache_on
744 W(b) __armv4_mmu_cache_off 744 W(b) __armv4_mmu_cache_off
745 W(b) __armv4_mmu_cache_flush 745 W(b) __armv5tej_mmu_cache_flush
746 746
747 .word 0x0007b000 @ ARMv6 747 .word 0x0007b000 @ ARMv6
748 .word 0x000ff000 748 .word 0x000ff000
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index d32bc71c1f78..d2b2ef41cd4f 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -33,6 +33,7 @@ unsigned int __machine_arch_type;
33#else 33#else
34 34
35static void putstr(const char *ptr); 35static void putstr(const char *ptr);
36extern void error(char *x);
36 37
37#include <mach/uncompress.h> 38#include <mach/uncompress.h>
38 39
diff --git a/arch/arm/common/clkdev.c b/arch/arm/common/clkdev.c
index 6416d5b5020d..dba4c1da63ed 100644
--- a/arch/arm/common/clkdev.c
+++ b/arch/arm/common/clkdev.c
@@ -18,6 +18,7 @@
18#include <linux/string.h> 18#include <linux/string.h>
19#include <linux/mutex.h> 19#include <linux/mutex.h>
20#include <linux/clk.h> 20#include <linux/clk.h>
21#include <linux/slab.h>
21 22
22#include <asm/clkdev.h> 23#include <asm/clkdev.h>
23#include <mach/clkdev.h> 24#include <mach/clkdev.h>
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index ee1d3b85eb65..7974baacafce 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -21,7 +21,6 @@
21#include <linux/ptrace.h> 21#include <linux/ptrace.h>
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/slab.h>
25#include <linux/init.h> 24#include <linux/init.h>
26#include <linux/ioport.h> 25#include <linux/ioport.h>
27#include <linux/irq.h> 26#include <linux/irq.h>
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 90ae00b631c2..9dff07c80ddb 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -290,7 +290,7 @@ static int locomo_suspend(struct platform_device *dev, pm_message_t state)
290 save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */ 290 save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */
291 locomo_writel(0x00, lchip->base + LOCOMO_GPO); 291 locomo_writel(0x00, lchip->base + LOCOMO_GPO);
292 save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */ 292 save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */
293 locomo_writel(0x40, lchip->base + LOCOMO_SPICT); 293 locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
294 save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */ 294 save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */
295 locomo_writel(0x00, lchip->base + LOCOMO_GPE); 295 locomo_writel(0x00, lchip->base + LOCOMO_GPE);
296 save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */ 296 save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */
@@ -418,7 +418,7 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
418 /* Longtime timer */ 418 /* Longtime timer */
419 locomo_writel(0, lchip->base + LOCOMO_LTINT); 419 locomo_writel(0, lchip->base + LOCOMO_LTINT);
420 /* SPI */ 420 /* SPI */
421 locomo_writel(0, lchip->base + LOCOMO_SPIIE); 421 locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE);
422 422
423 locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD); 423 locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
424 r = locomo_readl(lchip->base + LOCOMO_ASD); 424 r = locomo_readl(lchip->base + LOCOMO_ASD);
@@ -707,7 +707,7 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
707 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */ 707 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
708 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */ 708 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
709 printk(KERN_WARNING "locomo: m62332_senddata Error 1\n"); 709 printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
710 return; 710 goto out;
711 } 711 }
712 712
713 /* Send Sub address (LSB is channel select) */ 713 /* Send Sub address (LSB is channel select) */
@@ -735,7 +735,7 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
735 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */ 735 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
736 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */ 736 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
737 printk(KERN_WARNING "locomo: m62332_senddata Error 2\n"); 737 printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
738 return; 738 goto out;
739 } 739 }
740 740
741 /* Send DAC data */ 741 /* Send DAC data */
@@ -760,9 +760,9 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
760 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */ 760 udelay(DAC_SCL_HIGH_HOLD_TIME); /* 4.7 usec */
761 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */ 761 if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) { /* High is error */
762 printk(KERN_WARNING "locomo: m62332_senddata Error 3\n"); 762 printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
763 return;
764 } 763 }
765 764
765out:
766 /* stop */ 766 /* stop */
767 r = locomo_readl(mapbase + LOCOMO_DAC); 767 r = locomo_readl(mapbase + LOCOMO_DAC);
768 r &= ~(LOCOMO_DAC_SCLOEB); 768 r &= ~(LOCOMO_DAC_SCLOEB);
diff --git a/arch/arm/configs/cm_t35_defconfig b/arch/arm/configs/cm_t35_defconfig
index 893cd267e075..032b49bad91f 100644
--- a/arch/arm/configs/cm_t35_defconfig
+++ b/arch/arm/configs/cm_t35_defconfig
@@ -358,7 +358,7 @@ CONFIG_PM_SLEEP=y
358CONFIG_SUSPEND=y 358CONFIG_SUSPEND=y
359CONFIG_SUSPEND_FREEZER=y 359CONFIG_SUSPEND_FREEZER=y
360# CONFIG_APM_EMULATION is not set 360# CONFIG_APM_EMULATION is not set
361# CONFIG_PM_RUNTIME is not set 361CONFIG_PM_RUNTIME=y
362CONFIG_ARCH_SUSPEND_POSSIBLE=y 362CONFIG_ARCH_SUSPEND_POSSIBLE=y
363CONFIG_NET=y 363CONFIG_NET=y
364 364
diff --git a/arch/arm/configs/n770_defconfig b/arch/arm/configs/n770_defconfig
index 75cae18fbcb6..de0c28aa43e7 100644
--- a/arch/arm/configs/n770_defconfig
+++ b/arch/arm/configs/n770_defconfig
@@ -308,6 +308,7 @@ CONFIG_PM_SLEEP=y
308CONFIG_SUSPEND_UP_POSSIBLE=y 308CONFIG_SUSPEND_UP_POSSIBLE=y
309CONFIG_SUSPEND=y 309CONFIG_SUSPEND=y
310# CONFIG_APM_EMULATION is not set 310# CONFIG_APM_EMULATION is not set
311CONFIG_PM_RUNTIME=y
311 312
312# 313#
313# Networking 314# Networking
diff --git a/arch/arm/configs/n8x0_defconfig b/arch/arm/configs/n8x0_defconfig
index e6f667c5e58a..216ad00948af 100644
--- a/arch/arm/configs/n8x0_defconfig
+++ b/arch/arm/configs/n8x0_defconfig
@@ -191,6 +191,7 @@ CONFIG_ARCH_OMAP=y
191# 191#
192CONFIG_ARCH_OMAP_OTG=y 192CONFIG_ARCH_OMAP_OTG=y
193# CONFIG_ARCH_OMAP1 is not set 193# CONFIG_ARCH_OMAP1 is not set
194CONFIG_ARCH_OMAP2PLUS=y
194CONFIG_ARCH_OMAP2=y 195CONFIG_ARCH_OMAP2=y
195# CONFIG_ARCH_OMAP3 is not set 196# CONFIG_ARCH_OMAP3 is not set
196# CONFIG_ARCH_OMAP4 is not set 197# CONFIG_ARCH_OMAP4 is not set
@@ -198,8 +199,6 @@ CONFIG_ARCH_OMAP2=y
198# 199#
199# OMAP Feature Selections 200# OMAP Feature Selections
200# 201#
201# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
202# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
203CONFIG_OMAP_RESET_CLOCKS=y 202CONFIG_OMAP_RESET_CLOCKS=y
204# CONFIG_OMAP_MUX is not set 203# CONFIG_OMAP_MUX is not set
205# CONFIG_OMAP_MCBSP is not set 204# CONFIG_OMAP_MCBSP is not set
@@ -208,15 +207,13 @@ CONFIG_OMAP_MBOX_FWK=y
208CONFIG_OMAP_32K_TIMER=y 207CONFIG_OMAP_32K_TIMER=y
209CONFIG_OMAP_32K_TIMER_HZ=128 208CONFIG_OMAP_32K_TIMER_HZ=128
210CONFIG_OMAP_DM_TIMER=y 209CONFIG_OMAP_DM_TIMER=y
211# CONFIG_OMAP_LL_DEBUG_UART1 is not set 210# CONFIG_OMAP_PM_NONE is not set
212# CONFIG_OMAP_LL_DEBUG_UART2 is not set 211CONFIG_OMAP_PM_NOOP=y
213CONFIG_OMAP_LL_DEBUG_UART3=y
214# CONFIG_MACH_OMAP_GENERIC is not set 212# CONFIG_MACH_OMAP_GENERIC is not set
215 213
216# 214#
217# OMAP Core Type 215# OMAP Core Type
218# 216#
219CONFIG_ARCH_OMAP24XX=y
220CONFIG_ARCH_OMAP2420=y 217CONFIG_ARCH_OMAP2420=y
221# CONFIG_ARCH_OMAP2430 is not set 218# CONFIG_ARCH_OMAP2430 is not set
222 219
@@ -227,6 +224,9 @@ CONFIG_MACH_OMAP2_TUSB6010=y
227# CONFIG_MACH_OMAP_H4 is not set 224# CONFIG_MACH_OMAP_H4 is not set
228# CONFIG_MACH_OMAP_APOLLON is not set 225# CONFIG_MACH_OMAP_APOLLON is not set
229# CONFIG_MACH_OMAP_2430SDP is not set 226# CONFIG_MACH_OMAP_2430SDP is not set
227CONFIG_MACH_NOKIA_N800=y
228CONFIG_MACH_NOKIA_N810=y
229CONFIG_MACH_NOKIA_N810_WIMAX=y
230CONFIG_MACH_NOKIA_N8X0=y 230CONFIG_MACH_NOKIA_N8X0=y
231 231
232# 232#
@@ -303,7 +303,7 @@ CONFIG_ALIGNMENT_TRAP=y
303CONFIG_ZBOOT_ROM_TEXT=0x10C08000 303CONFIG_ZBOOT_ROM_TEXT=0x10C08000
304CONFIG_ZBOOT_ROM_BSS=0x10200000 304CONFIG_ZBOOT_ROM_BSS=0x10200000
305# CONFIG_ZBOOT_ROM is not set 305# CONFIG_ZBOOT_ROM is not set
306CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS2,115200n8" 306CONFIG_CMDLINE="root=/dev/mmcblk0p2 console=ttyS2,115200n8 debug earlyprintk rootwait"
307# CONFIG_XIP_KERNEL is not set 307# CONFIG_XIP_KERNEL is not set
308# CONFIG_KEXEC is not set 308# CONFIG_KEXEC is not set
309 309
@@ -337,7 +337,14 @@ CONFIG_HAVE_AOUT=y
337# 337#
338# Power management options 338# Power management options
339# 339#
340# CONFIG_PM is not set 340CONFIG_PM=y
341# CONFIG_PM_DEBUG is not set
342CONFIG_PM_SLEEP=y
343CONFIG_SUSPEND=y
344CONFIG_SUSPEND_FREEZER=y
345# CONFIG_APM_EMULATION is not set
346CONFIG_PM_RUNTIME=y
347CONFIG_PM_OPS=y
341CONFIG_ARCH_SUSPEND_POSSIBLE=y 348CONFIG_ARCH_SUSPEND_POSSIBLE=y
342CONFIG_NET=y 349CONFIG_NET=y
343 350
@@ -617,7 +624,55 @@ CONFIG_UNIX98_PTYS=y
617# CONFIG_R3964 is not set 624# CONFIG_R3964 is not set
618# CONFIG_RAW_DRIVER is not set 625# CONFIG_RAW_DRIVER is not set
619# CONFIG_TCG_TPM is not set 626# CONFIG_TCG_TPM is not set
620# CONFIG_I2C is not set 627CONFIG_I2C=y
628CONFIG_I2C_BOARDINFO=y
629# CONFIG_I2C_COMPAT is not set
630# CONFIG_I2C_CHARDEV is not set
631# CONFIG_I2C_HELPER_AUTO is not set
632# CONFIG_I2C_SMBUS is not set
633
634#
635# I2C Algorithms
636#
637# CONFIG_I2C_ALGOBIT is not set
638# CONFIG_I2C_ALGOPCF is not set
639# CONFIG_I2C_ALGOPCA is not set
640
641#
642# I2C Hardware Bus support
643#
644
645#
646# I2C system bus drivers (mostly embedded / system-on-chip)
647#
648# CONFIG_I2C_DESIGNWARE is not set
649# CONFIG_I2C_GPIO is not set
650# CONFIG_I2C_OCORES is not set
651CONFIG_I2C_OMAP=y
652# CONFIG_I2C_SIMTEC is not set
653# CONFIG_I2C_XILINX is not set
654
655#
656# External I2C/SMBus adapter drivers
657#
658# CONFIG_I2C_PARPORT_LIGHT is not set
659# CONFIG_I2C_TAOS_EVM is not set
660# CONFIG_I2C_TINY_USB is not set
661
662#
663# Other I2C/SMBus bus drivers
664#
665# CONFIG_I2C_PCA_PLATFORM is not set
666# CONFIG_I2C_STUB is not set
667
668#
669# Miscellaneous I2C Chip support
670#
671# CONFIG_SENSORS_TSL2550 is not set
672# CONFIG_I2C_DEBUG_CORE is not set
673# CONFIG_I2C_DEBUG_ALGO is not set
674# CONFIG_I2C_DEBUG_BUS is not set
675# CONFIG_I2C_DEBUG_CHIP is not set
621CONFIG_SPI=y 676CONFIG_SPI=y
622# CONFIG_SPI_DEBUG is not set 677# CONFIG_SPI_DEBUG is not set
623CONFIG_SPI_MASTER=y 678CONFIG_SPI_MASTER=y
@@ -673,15 +728,44 @@ CONFIG_SSB_POSSIBLE=y
673# Multifunction device drivers 728# Multifunction device drivers
674# 729#
675# CONFIG_MFD_CORE is not set 730# CONFIG_MFD_CORE is not set
731# CONFIG_MFD_88PM860X is not set
676# CONFIG_MFD_SM501 is not set 732# CONFIG_MFD_SM501 is not set
677# CONFIG_MFD_ASIC3 is not set 733# CONFIG_MFD_ASIC3 is not set
678# CONFIG_HTC_EGPIO is not set 734# CONFIG_HTC_EGPIO is not set
679# CONFIG_HTC_PASIC3 is not set 735# CONFIG_HTC_PASIC3 is not set
736# CONFIG_HTC_I2CPLD is not set
737# CONFIG_TPS65010 is not set
738CONFIG_MENELAUS=y
739# CONFIG_TWL4030_CORE is not set
680# CONFIG_MFD_TMIO is not set 740# CONFIG_MFD_TMIO is not set
681# CONFIG_MFD_T7L66XB is not set 741# CONFIG_MFD_T7L66XB is not set
682# CONFIG_MFD_TC6387XB is not set 742# CONFIG_MFD_TC6387XB is not set
683# CONFIG_MFD_TC6393XB is not set 743# CONFIG_MFD_TC6393XB is not set
744# CONFIG_PMIC_DA903X is not set
745# CONFIG_PMIC_ADP5520 is not set
746# CONFIG_MFD_MAX8925 is not set
747# CONFIG_MFD_WM8400 is not set
748# CONFIG_MFD_WM831X is not set
749# CONFIG_MFD_WM8350_I2C is not set
750# CONFIG_MFD_WM8994 is not set
751# CONFIG_MFD_PCF50633 is not set
752# CONFIG_MFD_MC13783 is not set
753# CONFIG_AB3100_CORE is not set
684# CONFIG_EZX_PCAP is not set 754# CONFIG_EZX_PCAP is not set
755# CONFIG_AB4500_CORE is not set
756CONFIG_REGULATOR=y
757# CONFIG_REGULATOR_DEBUG is not set
758# CONFIG_REGULATOR_DUMMY is not set
759# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
760# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
761# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
762# CONFIG_REGULATOR_BQ24022 is not set
763# CONFIG_REGULATOR_MAX1586 is not set
764# CONFIG_REGULATOR_MAX8649 is not set
765# CONFIG_REGULATOR_MAX8660 is not set
766# CONFIG_REGULATOR_LP3971 is not set
767# CONFIG_REGULATOR_TPS65023 is not set
768# CONFIG_REGULATOR_TPS6507X is not set
685# CONFIG_MEDIA_SUPPORT is not set 769# CONFIG_MEDIA_SUPPORT is not set
686 770
687# 771#
@@ -718,7 +802,10 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
718CONFIG_USB_DEVICEFS=y 802CONFIG_USB_DEVICEFS=y
719CONFIG_USB_DEVICE_CLASS=y 803CONFIG_USB_DEVICE_CLASS=y
720# CONFIG_USB_DYNAMIC_MINORS is not set 804# CONFIG_USB_DYNAMIC_MINORS is not set
721# CONFIG_USB_OTG is not set 805CONFIG_USB_SUSPEND=y
806CONFIG_USB_OTG=y
807# CONFIG_USB_OTG_WHITELIST is not set
808# CONFIG_USB_OTG_BLACKLIST_HUB is not set
722# CONFIG_USB_MON is not set 809# CONFIG_USB_MON is not set
723# CONFIG_USB_WUSB is not set 810# CONFIG_USB_WUSB is not set
724# CONFIG_USB_WUSB_CBAF is not set 811# CONFIG_USB_WUSB_CBAF is not set
@@ -737,9 +824,10 @@ CONFIG_USB_DEVICE_CLASS=y
737CONFIG_USB_MUSB_HDRC=y 824CONFIG_USB_MUSB_HDRC=y
738CONFIG_USB_TUSB6010=y 825CONFIG_USB_TUSB6010=y
739# CONFIG_USB_MUSB_HOST is not set 826# CONFIG_USB_MUSB_HOST is not set
740CONFIG_USB_MUSB_PERIPHERAL=y 827# CONFIG_USB_MUSB_PERIPHERAL is not set
741# CONFIG_USB_MUSB_OTG is not set 828CONFIG_USB_MUSB_OTG=y
742CONFIG_USB_GADGET_MUSB_HDRC=y 829CONFIG_USB_GADGET_MUSB_HDRC=y
830CONFIG_USB_MUSB_HDRC_HCD=y
743# CONFIG_MUSB_PIO_ONLY is not set 831# CONFIG_MUSB_PIO_ONLY is not set
744# CONFIG_USB_INVENTRA_DMA is not set 832# CONFIG_USB_INVENTRA_DMA is not set
745# CONFIG_USB_TI_CPPI_DMA is not set 833# CONFIG_USB_TI_CPPI_DMA is not set
@@ -824,44 +912,77 @@ CONFIG_USB_GADGET_DUALSPEED=y
824# CONFIG_USB_ZERO is not set 912# CONFIG_USB_ZERO is not set
825# CONFIG_USB_AUDIO is not set 913# CONFIG_USB_AUDIO is not set
826CONFIG_USB_ETH=y 914CONFIG_USB_ETH=y
827# CONFIG_USB_ETH_RNDIS is not set 915CONFIG_USB_ETH_RNDIS=y
916CONFIG_USB_ETH_EEM=y
828# CONFIG_USB_GADGETFS is not set 917# CONFIG_USB_GADGETFS is not set
829# CONFIG_USB_FILE_STORAGE is not set 918# CONFIG_USB_FILE_STORAGE is not set
919# CONFIG_USB_MASS_STORAGE is not set
830# CONFIG_USB_G_SERIAL is not set 920# CONFIG_USB_G_SERIAL is not set
831# CONFIG_USB_MIDI_GADGET is not set 921# CONFIG_USB_MIDI_GADGET is not set
832# CONFIG_USB_G_PRINTER is not set 922# CONFIG_USB_G_PRINTER is not set
833# CONFIG_USB_CDC_COMPOSITE is not set 923# CONFIG_USB_CDC_COMPOSITE is not set
924# CONFIG_USB_G_NOKIA is not set
925# CONFIG_USB_G_MULTI is not set
834 926
835# 927#
836# OTG and related infrastructure 928# OTG and related infrastructure
837# 929#
838CONFIG_USB_OTG_UTILS=y 930CONFIG_USB_OTG_UTILS=y
839# CONFIG_USB_GPIO_VBUS is not set 931# CONFIG_USB_GPIO_VBUS is not set
932# CONFIG_ISP1301_OMAP is not set
933# CONFIG_USB_ULPI is not set
840CONFIG_NOP_USB_XCEIV=y 934CONFIG_NOP_USB_XCEIV=y
841# CONFIG_MMC is not set 935CONFIG_MMC=y
936# CONFIG_MMC_DEBUG is not set
937# CONFIG_MMC_UNSAFE_RESUME is not set
938
939#
940# MMC/SD/SDIO Card Drivers
941#
942CONFIG_MMC_BLOCK=y
943CONFIG_MMC_BLOCK_BOUNCE=y
944# CONFIG_SDIO_UART is not set
945# CONFIG_MMC_TEST is not set
946
947#
948# MMC/SD/SDIO Host Controller Drivers
949#
950# CONFIG_MMC_SDHCI is not set
951CONFIG_MMC_OMAP=y
952# CONFIG_MMC_SPI is not set
842# CONFIG_MEMSTICK is not set 953# CONFIG_MEMSTICK is not set
843# CONFIG_ACCESSIBILITY is not set
844# CONFIG_NEW_LEDS is not set 954# CONFIG_NEW_LEDS is not set
955# CONFIG_ACCESSIBILITY is not set
845CONFIG_RTC_LIB=y 956CONFIG_RTC_LIB=y
846# CONFIG_RTC_CLASS is not set 957# CONFIG_RTC_CLASS is not set
847# CONFIG_DMADEVICES is not set 958# CONFIG_DMADEVICES is not set
848# CONFIG_AUXDISPLAY is not set 959# CONFIG_AUXDISPLAY is not set
849# CONFIG_REGULATOR is not set
850# CONFIG_UIO is not set 960# CONFIG_UIO is not set
961
962#
963# TI VLYNQ
964#
851# CONFIG_STAGING is not set 965# CONFIG_STAGING is not set
852 966
853# 967#
854# File systems 968# File systems
855# 969#
856# CONFIG_EXT2_FS is not set 970# CONFIG_EXT2_FS is not set
857# CONFIG_EXT3_FS is not set 971CONFIG_EXT3_FS=y
972# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
973CONFIG_EXT3_FS_XATTR=y
974# CONFIG_EXT3_FS_POSIX_ACL is not set
975# CONFIG_EXT3_FS_SECURITY is not set
858# CONFIG_EXT4_FS is not set 976# CONFIG_EXT4_FS is not set
977CONFIG_JBD=y
978CONFIG_FS_MBCACHE=y
859# CONFIG_REISERFS_FS is not set 979# CONFIG_REISERFS_FS is not set
860# CONFIG_JFS_FS is not set 980# CONFIG_JFS_FS is not set
861# CONFIG_FS_POSIX_ACL is not set 981# CONFIG_FS_POSIX_ACL is not set
862# CONFIG_XFS_FS is not set 982# CONFIG_XFS_FS is not set
863# CONFIG_OCFS2_FS is not set 983# CONFIG_OCFS2_FS is not set
864# CONFIG_BTRFS_FS is not set 984# CONFIG_BTRFS_FS is not set
985# CONFIG_NILFS2_FS is not set
865CONFIG_FILE_LOCKING=y 986CONFIG_FILE_LOCKING=y
866CONFIG_FSNOTIFY=y 987CONFIG_FSNOTIFY=y
867CONFIG_DNOTIFY=y 988CONFIG_DNOTIFY=y
@@ -886,8 +1007,11 @@ CONFIG_INOTIFY_USER=y
886# 1007#
887# DOS/FAT/NT Filesystems 1008# DOS/FAT/NT Filesystems
888# 1009#
1010CONFIG_FAT_FS=y
889# CONFIG_MSDOS_FS is not set 1011# CONFIG_MSDOS_FS is not set
890# CONFIG_VFAT_FS is not set 1012CONFIG_VFAT_FS=y
1013CONFIG_FAT_DEFAULT_CODEPAGE=437
1014CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
891# CONFIG_NTFS_FS is not set 1015# CONFIG_NTFS_FS is not set
892 1016
893# 1017#
diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig
index c7999f5b1c9a..5a9e95fa728b 100644
--- a/arch/arm/configs/omap3_beagle_defconfig
+++ b/arch/arm/configs/omap3_beagle_defconfig
@@ -324,6 +324,7 @@ CONFIG_PM_SLEEP=y
324CONFIG_SUSPEND=y 324CONFIG_SUSPEND=y
325CONFIG_SUSPEND_FREEZER=y 325CONFIG_SUSPEND_FREEZER=y
326# CONFIG_APM_EMULATION is not set 326# CONFIG_APM_EMULATION is not set
327CONFIG_PM_RUNTIME=y
327CONFIG_ARCH_SUSPEND_POSSIBLE=y 328CONFIG_ARCH_SUSPEND_POSSIBLE=y
328CONFIG_NET=y 329CONFIG_NET=y
329 330
diff --git a/arch/arm/configs/omap3_defconfig b/arch/arm/configs/omap3_defconfig
index 714835e5ebec..d6ad92177324 100644
--- a/arch/arm/configs/omap3_defconfig
+++ b/arch/arm/configs/omap3_defconfig
@@ -450,7 +450,7 @@ CONFIG_SUSPEND=y
450# CONFIG_PM_TEST_SUSPEND is not set 450# CONFIG_PM_TEST_SUSPEND is not set
451CONFIG_SUSPEND_FREEZER=y 451CONFIG_SUSPEND_FREEZER=y
452# CONFIG_APM_EMULATION is not set 452# CONFIG_APM_EMULATION is not set
453# CONFIG_PM_RUNTIME is not set 453CONFIG_PM_RUNTIME=y
454CONFIG_ARCH_SUSPEND_POSSIBLE=y 454CONFIG_ARCH_SUSPEND_POSSIBLE=y
455CONFIG_NET=y 455CONFIG_NET=y
456 456
diff --git a/arch/arm/configs/omap3_evm_defconfig b/arch/arm/configs/omap3_evm_defconfig
index e2ad859fbec6..a6dd6d1af806 100644
--- a/arch/arm/configs/omap3_evm_defconfig
+++ b/arch/arm/configs/omap3_evm_defconfig
@@ -340,6 +340,7 @@ CONFIG_PM_SLEEP=y
340CONFIG_SUSPEND=y 340CONFIG_SUSPEND=y
341CONFIG_SUSPEND_FREEZER=y 341CONFIG_SUSPEND_FREEZER=y
342# CONFIG_APM_EMULATION is not set 342# CONFIG_APM_EMULATION is not set
343CONFIG_PM_RUNTIME=y
343CONFIG_ARCH_SUSPEND_POSSIBLE=y 344CONFIG_ARCH_SUSPEND_POSSIBLE=y
344CONFIG_NET=y 345CONFIG_NET=y
345 346
diff --git a/arch/arm/configs/omap3_touchbook_defconfig b/arch/arm/configs/omap3_touchbook_defconfig
index 74fe6be9c5ec..968fbaa8f04d 100644
--- a/arch/arm/configs/omap3_touchbook_defconfig
+++ b/arch/arm/configs/omap3_touchbook_defconfig
@@ -368,7 +368,7 @@ CONFIG_SUSPEND=y
368# CONFIG_PM_TEST_SUSPEND is not set 368# CONFIG_PM_TEST_SUSPEND is not set
369CONFIG_SUSPEND_FREEZER=y 369CONFIG_SUSPEND_FREEZER=y
370# CONFIG_APM_EMULATION is not set 370# CONFIG_APM_EMULATION is not set
371# CONFIG_PM_RUNTIME is not set 371CONFIG_PM_RUNTIME=y
372CONFIG_ARCH_SUSPEND_POSSIBLE=y 372CONFIG_ARCH_SUSPEND_POSSIBLE=y
373CONFIG_NET=y 373CONFIG_NET=y
374 374
diff --git a/arch/arm/configs/omap_3430sdp_defconfig b/arch/arm/configs/omap_3430sdp_defconfig
index bb2917e5cb47..ddde429a7d9b 100644
--- a/arch/arm/configs/omap_3430sdp_defconfig
+++ b/arch/arm/configs/omap_3430sdp_defconfig
@@ -363,6 +363,7 @@ CONFIG_PM_SLEEP=y
363CONFIG_SUSPEND=y 363CONFIG_SUSPEND=y
364CONFIG_SUSPEND_FREEZER=y 364CONFIG_SUSPEND_FREEZER=y
365# CONFIG_APM_EMULATION is not set 365# CONFIG_APM_EMULATION is not set
366CONFIG_PM_RUNTIME=y
366CONFIG_ARCH_SUSPEND_POSSIBLE=y 367CONFIG_ARCH_SUSPEND_POSSIBLE=y
367CONFIG_NET=y 368CONFIG_NET=y
368 369
diff --git a/arch/arm/configs/omap_3630sdp_defconfig b/arch/arm/configs/omap_3630sdp_defconfig
index d25c3d4424ca..609f348b1055 100644
--- a/arch/arm/configs/omap_3630sdp_defconfig
+++ b/arch/arm/configs/omap_3630sdp_defconfig
@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y
361# CONFIG_PM_TEST_SUSPEND is not set 361# CONFIG_PM_TEST_SUSPEND is not set
362CONFIG_SUSPEND_FREEZER=y 362CONFIG_SUSPEND_FREEZER=y
363# CONFIG_APM_EMULATION is not set 363# CONFIG_APM_EMULATION is not set
364# CONFIG_PM_RUNTIME is not set 364CONFIG_PM_RUNTIME=y
365CONFIG_ARCH_SUSPEND_POSSIBLE=y 365CONFIG_ARCH_SUSPEND_POSSIBLE=y
366CONFIG_NET=y 366CONFIG_NET=y
367 367
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig
index 523189586a4b..91ef2ed0f80a 100644
--- a/arch/arm/configs/omap_h2_1610_defconfig
+++ b/arch/arm/configs/omap_h2_1610_defconfig
@@ -331,6 +331,7 @@ CONFIG_PM_SLEEP=y
331CONFIG_SUSPEND=y 331CONFIG_SUSPEND=y
332CONFIG_SUSPEND_FREEZER=y 332CONFIG_SUSPEND_FREEZER=y
333# CONFIG_APM_EMULATION is not set 333# CONFIG_APM_EMULATION is not set
334CONFIG_PM_RUNTIME=y
334CONFIG_ARCH_SUSPEND_POSSIBLE=y 335CONFIG_ARCH_SUSPEND_POSSIBLE=y
335 336
336# 337#
diff --git a/arch/arm/configs/omap_zoom2_defconfig b/arch/arm/configs/omap_zoom2_defconfig
index a82e81332a03..f5c6e11cf189 100644
--- a/arch/arm/configs/omap_zoom2_defconfig
+++ b/arch/arm/configs/omap_zoom2_defconfig
@@ -343,6 +343,7 @@ CONFIG_SUSPEND=y
343# CONFIG_PM_TEST_SUSPEND is not set 343# CONFIG_PM_TEST_SUSPEND is not set
344CONFIG_SUSPEND_FREEZER=y 344CONFIG_SUSPEND_FREEZER=y
345# CONFIG_APM_EMULATION is not set 345# CONFIG_APM_EMULATION is not set
346CONFIG_PM_RUNTIME=y
346CONFIG_ARCH_SUSPEND_POSSIBLE=y 347CONFIG_ARCH_SUSPEND_POSSIBLE=y
347CONFIG_NET=y 348CONFIG_NET=y
348 349
diff --git a/arch/arm/configs/omap_zoom3_defconfig b/arch/arm/configs/omap_zoom3_defconfig
index ff8ac3dcc31d..ea9a5012d332 100644
--- a/arch/arm/configs/omap_zoom3_defconfig
+++ b/arch/arm/configs/omap_zoom3_defconfig
@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y
361# CONFIG_PM_TEST_SUSPEND is not set 361# CONFIG_PM_TEST_SUSPEND is not set
362CONFIG_SUSPEND_FREEZER=y 362CONFIG_SUSPEND_FREEZER=y
363# CONFIG_APM_EMULATION is not set 363# CONFIG_APM_EMULATION is not set
364# CONFIG_PM_RUNTIME is not set 364CONFIG_PM_RUNTIME=y
365CONFIG_ARCH_SUSPEND_POSSIBLE=y 365CONFIG_ARCH_SUSPEND_POSSIBLE=y
366CONFIG_NET=y 366CONFIG_NET=y
367 367
diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig
index 193bd334fbbf..45135ffadc57 100644
--- a/arch/arm/configs/rx51_defconfig
+++ b/arch/arm/configs/rx51_defconfig
@@ -322,6 +322,7 @@ CONFIG_PM_SLEEP=y
322CONFIG_SUSPEND=y 322CONFIG_SUSPEND=y
323CONFIG_SUSPEND_FREEZER=y 323CONFIG_SUSPEND_FREEZER=y
324# CONFIG_APM_EMULATION is not set 324# CONFIG_APM_EMULATION is not set
325CONFIG_PM_RUNTIME=y
325CONFIG_ARCH_SUSPEND_POSSIBLE=y 326CONFIG_ARCH_SUSPEND_POSSIBLE=y
326CONFIG_NET=y 327CONFIG_NET=y
327 328
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index 72da7e045c6b..0d08d4170b64 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -15,6 +15,7 @@
15#include <asm/glue.h> 15#include <asm/glue.h>
16#include <asm/shmparam.h> 16#include <asm/shmparam.h>
17#include <asm/cachetype.h> 17#include <asm/cachetype.h>
18#include <asm/outercache.h>
18 19
19#define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT) 20#define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
20 21
@@ -219,12 +220,6 @@ struct cpu_cache_fns {
219 void (*dma_flush_range)(const void *, const void *); 220 void (*dma_flush_range)(const void *, const void *);
220}; 221};
221 222
222struct outer_cache_fns {
223 void (*inv_range)(unsigned long, unsigned long);
224 void (*clean_range)(unsigned long, unsigned long);
225 void (*flush_range)(unsigned long, unsigned long);
226};
227
228/* 223/*
229 * Select the calling method 224 * Select the calling method
230 */ 225 */
@@ -281,37 +276,6 @@ extern void dmac_flush_range(const void *, const void *);
281 276
282#endif 277#endif
283 278
284#ifdef CONFIG_OUTER_CACHE
285
286extern struct outer_cache_fns outer_cache;
287
288static inline void outer_inv_range(unsigned long start, unsigned long end)
289{
290 if (outer_cache.inv_range)
291 outer_cache.inv_range(start, end);
292}
293static inline void outer_clean_range(unsigned long start, unsigned long end)
294{
295 if (outer_cache.clean_range)
296 outer_cache.clean_range(start, end);
297}
298static inline void outer_flush_range(unsigned long start, unsigned long end)
299{
300 if (outer_cache.flush_range)
301 outer_cache.flush_range(start, end);
302}
303
304#else
305
306static inline void outer_inv_range(unsigned long start, unsigned long end)
307{ }
308static inline void outer_clean_range(unsigned long start, unsigned long end)
309{ }
310static inline void outer_flush_range(unsigned long start, unsigned long end)
311{ }
312
313#endif
314
315/* 279/*
316 * Copy user data from/to a page which is mapped into a different 280 * Copy user data from/to a page which is mapped into a different
317 * processes address space. Really, we want to allow our "user 281 * processes address space. Really, we want to allow our "user
diff --git a/arch/arm/include/asm/clkdev.h b/arch/arm/include/asm/clkdev.h
index 7a0690da5e63..b56c1389b6fa 100644
--- a/arch/arm/include/asm/clkdev.h
+++ b/arch/arm/include/asm/clkdev.h
@@ -13,6 +13,7 @@
13#define __ASM_CLKDEV_H 13#define __ASM_CLKDEV_H
14 14
15struct clk; 15struct clk;
16struct device;
16 17
17struct clk_lookup { 18struct clk_lookup {
18 struct list_head node; 19 struct list_head node;
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index a399bb5730f1..bff056489cc1 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -98,6 +98,7 @@ extern int elf_check_arch(const struct elf32_hdr *);
98extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); 98extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int);
99#define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) 99#define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk)
100 100
101struct task_struct;
101int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); 102int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
102#define ELF_CORE_COPY_TASK_REGS dump_task_regs 103#define ELF_CORE_COPY_TASK_REGS dump_task_regs
103 104
diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h
index 7f36d00600b4..feb988a7ec37 100644
--- a/arch/arm/include/asm/highmem.h
+++ b/arch/arm/include/asm/highmem.h
@@ -11,7 +11,11 @@
11 11
12#define kmap_prot PAGE_KERNEL 12#define kmap_prot PAGE_KERNEL
13 13
14#define flush_cache_kmaps() flush_cache_all() 14#define flush_cache_kmaps() \
15 do { \
16 if (cache_is_vivt()) \
17 flush_cache_all(); \
18 } while (0)
15 19
16extern pte_t *pkmap_page_table; 20extern pte_t *pkmap_page_table;
17 21
@@ -21,11 +25,20 @@ extern void *kmap_high(struct page *page);
21extern void *kmap_high_get(struct page *page); 25extern void *kmap_high_get(struct page *page);
22extern void kunmap_high(struct page *page); 26extern void kunmap_high(struct page *page);
23 27
28extern void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte);
29extern void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte);
30
31/*
32 * The following functions are already defined by <linux/highmem.h>
33 * when CONFIG_HIGHMEM is not set.
34 */
35#ifdef CONFIG_HIGHMEM
24extern void *kmap(struct page *page); 36extern void *kmap(struct page *page);
25extern void kunmap(struct page *page); 37extern void kunmap(struct page *page);
26extern void *kmap_atomic(struct page *page, enum km_type type); 38extern void *kmap_atomic(struct page *page, enum km_type type);
27extern void kunmap_atomic(void *kvaddr, enum km_type type); 39extern void kunmap_atomic(void *kvaddr, enum km_type type);
28extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type); 40extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
29extern struct page *kmap_atomic_to_page(const void *ptr); 41extern struct page *kmap_atomic_to_page(const void *ptr);
42#endif
30 43
31#endif 44#endif
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
index 328f14a8b790..237282f7c762 100644
--- a/arch/arm/include/asm/irq.h
+++ b/arch/arm/include/asm/irq.h
@@ -17,6 +17,7 @@
17 17
18#ifndef __ASSEMBLY__ 18#ifndef __ASSEMBLY__
19struct irqaction; 19struct irqaction;
20struct pt_regs;
20extern void migrate_irqs(void); 21extern void migrate_irqs(void);
21 22
22extern void asm_do_IRQ(unsigned int, struct pt_regs *); 23extern void asm_do_IRQ(unsigned int, struct pt_regs *);
diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h
index c019949a5189..c4b2ea3fbe42 100644
--- a/arch/arm/include/asm/kmap_types.h
+++ b/arch/arm/include/asm/kmap_types.h
@@ -18,6 +18,7 @@ enum km_type {
18 KM_IRQ1, 18 KM_IRQ1,
19 KM_SOFTIRQ0, 19 KM_SOFTIRQ0,
20 KM_SOFTIRQ1, 20 KM_SOFTIRQ1,
21 KM_L1_CACHE,
21 KM_L2_CACHE, 22 KM_L2_CACHE,
22 KM_TYPE_NR 23 KM_TYPE_NR
23}; 24};
diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
new file mode 100644
index 000000000000..25f76bae57ab
--- /dev/null
+++ b/arch/arm/include/asm/outercache.h
@@ -0,0 +1,75 @@
1/*
2 * arch/arm/include/asm/outercache.h
3 *
4 * Copyright (C) 2010 ARM Ltd.
5 * Written by Catalin Marinas <catalin.marinas@arm.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#ifndef __ASM_OUTERCACHE_H
22#define __ASM_OUTERCACHE_H
23
24struct outer_cache_fns {
25 void (*inv_range)(unsigned long, unsigned long);
26 void (*clean_range)(unsigned long, unsigned long);
27 void (*flush_range)(unsigned long, unsigned long);
28#ifdef CONFIG_OUTER_CACHE_SYNC
29 void (*sync)(void);
30#endif
31};
32
33#ifdef CONFIG_OUTER_CACHE
34
35extern struct outer_cache_fns outer_cache;
36
37static inline void outer_inv_range(unsigned long start, unsigned long end)
38{
39 if (outer_cache.inv_range)
40 outer_cache.inv_range(start, end);
41}
42static inline void outer_clean_range(unsigned long start, unsigned long end)
43{
44 if (outer_cache.clean_range)
45 outer_cache.clean_range(start, end);
46}
47static inline void outer_flush_range(unsigned long start, unsigned long end)
48{
49 if (outer_cache.flush_range)
50 outer_cache.flush_range(start, end);
51}
52
53#else
54
55static inline void outer_inv_range(unsigned long start, unsigned long end)
56{ }
57static inline void outer_clean_range(unsigned long start, unsigned long end)
58{ }
59static inline void outer_flush_range(unsigned long start, unsigned long end)
60{ }
61
62#endif
63
64#ifdef CONFIG_OUTER_CACHE_SYNC
65static inline void outer_sync(void)
66{
67 if (outer_cache.sync)
68 outer_cache.sync();
69}
70#else
71static inline void outer_sync(void)
72{ }
73#endif
74
75#endif /* __ASM_OUTERCACHE_H */
diff --git a/arch/arm/include/asm/pgtable-nommu.h b/arch/arm/include/asm/pgtable-nommu.h
index 013cfcdc4839..ffc0e85775b4 100644
--- a/arch/arm/include/asm/pgtable-nommu.h
+++ b/arch/arm/include/asm/pgtable-nommu.h
@@ -67,6 +67,7 @@ static inline int pte_file(pte_t pte) { return 0; }
67 */ 67 */
68#define pgprot_noncached(prot) __pgprot(0) 68#define pgprot_noncached(prot) __pgprot(0)
69#define pgprot_writecombine(prot) __pgprot(0) 69#define pgprot_writecombine(prot) __pgprot(0)
70#define pgprot_dmacoherent(prot) __pgprot(0)
70 71
71 72
72/* 73/*
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index ca88e6a84707..4ace45ec3ef8 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -60,6 +60,8 @@
60#include <linux/linkage.h> 60#include <linux/linkage.h>
61#include <linux/irqflags.h> 61#include <linux/irqflags.h>
62 62
63#include <asm/outercache.h>
64
63#define __exception __attribute__((section(".exception.text"))) 65#define __exception __attribute__((section(".exception.text")))
64 66
65struct thread_info; 67struct thread_info;
@@ -137,10 +139,12 @@ extern unsigned int user_debug;
137#define dmb() __asm__ __volatile__ ("" : : : "memory") 139#define dmb() __asm__ __volatile__ ("" : : : "memory")
138#endif 140#endif
139 141
140#if __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP) 142#ifdef CONFIG_ARCH_HAS_BARRIERS
141#define mb() dmb() 143#include <mach/barriers.h>
144#elif __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP)
145#define mb() do { dsb(); outer_sync(); } while (0)
142#define rmb() dmb() 146#define rmb() dmb()
143#define wmb() dmb() 147#define wmb() mb()
144#else 148#else
145#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) 149#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
146#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) 150#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
@@ -152,9 +156,9 @@ extern unsigned int user_debug;
152#define smp_rmb() barrier() 156#define smp_rmb() barrier()
153#define smp_wmb() barrier() 157#define smp_wmb() barrier()
154#else 158#else
155#define smp_mb() mb() 159#define smp_mb() dmb()
156#define smp_rmb() rmb() 160#define smp_rmb() dmb()
157#define smp_wmb() wmb() 161#define smp_wmb() dmb()
158#endif 162#endif
159 163
160#define read_barrier_depends() do { } while(0) 164#define read_barrier_depends() do { } while(0)
diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h
index bf65e9f4525d..47f023aa8495 100644
--- a/arch/arm/include/asm/ucontext.h
+++ b/arch/arm/include/asm/ucontext.h
@@ -59,23 +59,22 @@ struct iwmmxt_sigframe {
59#endif /* CONFIG_IWMMXT */ 59#endif /* CONFIG_IWMMXT */
60 60
61#ifdef CONFIG_VFP 61#ifdef CONFIG_VFP
62#if __LINUX_ARM_ARCH__ < 6
63/* For ARM pre-v6, we use fstmiax and fldmiax. This adds one extra
64 * word after the registers, and a word of padding at the end for
65 * alignment. */
66#define VFP_MAGIC 0x56465001 62#define VFP_MAGIC 0x56465001
67#define VFP_STORAGE_SIZE 152
68#else
69#define VFP_MAGIC 0x56465002
70#define VFP_STORAGE_SIZE 144
71#endif
72 63
73struct vfp_sigframe 64struct vfp_sigframe
74{ 65{
75 unsigned long magic; 66 unsigned long magic;
76 unsigned long size; 67 unsigned long size;
77 union vfp_state storage; 68 struct user_vfp ufp;
78}; 69 struct user_vfp_exc ufp_exc;
70} __attribute__((__aligned__(8)));
71
72/*
73 * 8 byte for magic and size, 264 byte for ufp, 12 bytes for ufp_exc,
74 * 4 bytes padding.
75 */
76#define VFP_STORAGE_SIZE sizeof(struct vfp_sigframe)
77
79#endif /* CONFIG_VFP */ 78#endif /* CONFIG_VFP */
80 79
81/* 80/*
@@ -91,7 +90,7 @@ struct aux_sigframe {
91#ifdef CONFIG_IWMMXT 90#ifdef CONFIG_IWMMXT
92 struct iwmmxt_sigframe iwmmxt; 91 struct iwmmxt_sigframe iwmmxt;
93#endif 92#endif
94#if 0 && defined CONFIG_VFP /* Not yet saved. */ 93#ifdef CONFIG_VFP
95 struct vfp_sigframe vfp; 94 struct vfp_sigframe vfp;
96#endif 95#endif
97 /* Something that isn't a valid magic number for any coprocessor. */ 96 /* Something that isn't a valid magic number for any coprocessor. */
diff --git a/arch/arm/include/asm/user.h b/arch/arm/include/asm/user.h
index df95e050f9dd..05ac4b06876a 100644
--- a/arch/arm/include/asm/user.h
+++ b/arch/arm/include/asm/user.h
@@ -83,11 +83,21 @@ struct user{
83 83
84/* 84/*
85 * User specific VFP registers. If only VFPv2 is present, registers 16 to 31 85 * User specific VFP registers. If only VFPv2 is present, registers 16 to 31
86 * are ignored by the ptrace system call. 86 * are ignored by the ptrace system call and the signal handler.
87 */ 87 */
88struct user_vfp { 88struct user_vfp {
89 unsigned long long fpregs[32]; 89 unsigned long long fpregs[32];
90 unsigned long fpscr; 90 unsigned long fpscr;
91}; 91};
92 92
93/*
94 * VFP exception registers exposed to user space during signal delivery.
95 * Fields not relavant to the current VFP architecture are ignored.
96 */
97struct user_vfp_exc {
98 unsigned long fpexc;
99 unsigned long fpinst;
100 unsigned long fpinst2;
101};
102
93#endif /* _ARM_USER_H */ 103#endif /* _ARM_USER_H */
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 7e9ed1eea40a..d93f976fb389 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -102,6 +102,8 @@
102 .else 102 .else
103 ldmdb sp, {r0 - lr}^ @ get calling r0 - lr 103 ldmdb sp, {r0 - lr}^ @ get calling r0 - lr
104 .endif 104 .endif
105 mov r0, r0 @ ARMv5T and earlier require a nop
106 @ after ldm {}^
105 add sp, sp, #S_FRAME_SIZE - S_PC 107 add sp, sp, #S_FRAME_SIZE - S_PC
106 movs pc, lr @ return & move spsr_svc into cpsr 108 movs pc, lr @ return & move spsr_svc into cpsr
107 .endm 109 .endm
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index b7cb45bb91e8..3b3d2c80509c 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -27,7 +27,6 @@
27#include <linux/ioport.h> 27#include <linux/ioport.h>
28#include <linux/interrupt.h> 28#include <linux/interrupt.h>
29#include <linux/irq.h> 29#include <linux/irq.h>
30#include <linux/slab.h>
31#include <linux/random.h> 30#include <linux/random.h>
32#include <linux/smp.h> 31#include <linux/smp.h>
33#include <linux/init.h> 32#include <linux/init.h>
diff --git a/arch/arm/kernel/kgdb.c b/arch/arm/kernel/kgdb.c
index ba8ccfede964..a5b846b9895d 100644
--- a/arch/arm/kernel/kgdb.c
+++ b/arch/arm/kernel/kgdb.c
@@ -9,6 +9,7 @@
9 * Authors: George Davis <davis_g@mvista.com> 9 * Authors: George Davis <davis_g@mvista.com>
10 * Deepak Saxena <dsaxena@plexity.net> 10 * Deepak Saxena <dsaxena@plexity.net>
11 */ 11 */
12#include <linux/irq.h>
12#include <linux/kgdb.h> 13#include <linux/kgdb.h>
13#include <asm/traps.h> 14#include <asm/traps.h>
14 15
@@ -158,6 +159,18 @@ static struct undef_hook kgdb_compiled_brkpt_hook = {
158 .fn = kgdb_compiled_brk_fn 159 .fn = kgdb_compiled_brk_fn
159}; 160};
160 161
162static void kgdb_call_nmi_hook(void *ignored)
163{
164 kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs());
165}
166
167void kgdb_roundup_cpus(unsigned long flags)
168{
169 local_irq_enable();
170 smp_call_function(kgdb_call_nmi_hook, NULL, 0);
171 local_irq_disable();
172}
173
161/** 174/**
162 * kgdb_arch_init - Perform any architecture specific initalization. 175 * kgdb_arch_init - Perform any architecture specific initalization.
163 * 176 *
diff --git a/arch/arm/kernel/kprobes.c b/arch/arm/kernel/kprobes.c
index 60c62c377fa9..2ba7deb3072e 100644
--- a/arch/arm/kernel/kprobes.c
+++ b/arch/arm/kernel/kprobes.c
@@ -22,6 +22,7 @@
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/kprobes.h> 23#include <linux/kprobes.h>
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/slab.h>
25#include <linux/stop_machine.h> 26#include <linux/stop_machine.h>
26#include <linux/stringify.h> 27#include <linux/stringify.h>
27#include <asm/traps.h> 28#include <asm/traps.h>
@@ -393,6 +394,14 @@ void __kprobes jprobe_return(void)
393 /* 394 /*
394 * Setup an empty pt_regs. Fill SP and PC fields as 395 * Setup an empty pt_regs. Fill SP and PC fields as
395 * they're needed by longjmp_break_handler. 396 * they're needed by longjmp_break_handler.
397 *
398 * We allocate some slack between the original SP and start of
399 * our fabricated regs. To be precise we want to have worst case
400 * covered which is STMFD with all 16 regs so we allocate 2 *
401 * sizeof(struct_pt_regs)).
402 *
403 * This is to prevent any simulated instruction from writing
404 * over the regs when they are accessing the stack.
396 */ 405 */
397 "sub sp, %0, %1 \n\t" 406 "sub sp, %0, %1 \n\t"
398 "ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t" 407 "ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t"
@@ -410,7 +419,7 @@ void __kprobes jprobe_return(void)
410 "ldmia sp, {r0 - pc} \n\t" 419 "ldmia sp, {r0 - pc} \n\t"
411 : 420 :
412 : "r" (kcb->jprobe_saved_regs.ARM_sp), 421 : "r" (kcb->jprobe_saved_regs.ARM_sp),
413 "I" (sizeof(struct pt_regs)), 422 "I" (sizeof(struct pt_regs) * 2),
414 "J" (offsetof(struct pt_regs, ARM_sp)), 423 "J" (offsetof(struct pt_regs, ARM_sp)),
415 "J" (offsetof(struct pt_regs, ARM_pc)), 424 "J" (offsetof(struct pt_regs, ARM_pc)),
416 "J" (offsetof(struct pt_regs, ARM_cpsr)) 425 "J" (offsetof(struct pt_regs, ARM_cpsr))
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
index f28c5e9c51ea..c628bdf6c430 100644
--- a/arch/arm/kernel/module.c
+++ b/arch/arm/kernel/module.c
@@ -16,9 +16,9 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/elf.h> 17#include <linux/elf.h>
18#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
19#include <linux/slab.h>
20#include <linux/fs.h> 19#include <linux/fs.h>
21#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/gfp.h>
22 22
23#include <asm/pgtable.h> 23#include <asm/pgtable.h>
24#include <asm/sections.h> 24#include <asm/sections.h>
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index c54ceb3d1f97..9e70f2053f9a 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -332,7 +332,8 @@ armpmu_reserve_hardware(void)
332 332
333 for (i = 0; i < pmu_irqs->num_irqs; ++i) { 333 for (i = 0; i < pmu_irqs->num_irqs; ++i) {
334 err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq, 334 err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq,
335 IRQF_DISABLED, "armpmu", NULL); 335 IRQF_DISABLED | IRQF_NOBALANCING,
336 "armpmu", NULL);
336 if (err) { 337 if (err) {
337 pr_warning("unable to request IRQ%d for ARM " 338 pr_warning("unable to request IRQ%d for ARM "
338 "perf counters\n", pmu_irqs->irqs[i]); 339 "perf counters\n", pmu_irqs->irqs[i]);
@@ -965,7 +966,7 @@ armv6pmu_handle_irq(int irq_num,
965 */ 966 */
966 armv6_pmcr_write(pmcr); 967 armv6_pmcr_write(pmcr);
967 968
968 data.addr = 0; 969 perf_sample_data_init(&data, 0);
969 970
970 cpuc = &__get_cpu_var(cpu_hw_events); 971 cpuc = &__get_cpu_var(cpu_hw_events);
971 for (idx = 0; idx <= armpmu->num_events; ++idx) { 972 for (idx = 0; idx <= armpmu->num_events; ++idx) {
@@ -1624,7 +1625,7 @@ enum armv7_counters {
1624/* 1625/*
1625 * EVTSEL: Event selection reg 1626 * EVTSEL: Event selection reg
1626 */ 1627 */
1627#define ARMV7_EVTSEL_MASK 0x7f /* Mask for writable bits */ 1628#define ARMV7_EVTSEL_MASK 0xff /* Mask for writable bits */
1628 1629
1629/* 1630/*
1630 * SELECT: Counter selection reg 1631 * SELECT: Counter selection reg
@@ -1945,7 +1946,7 @@ static irqreturn_t armv7pmu_handle_irq(int irq_num, void *dev)
1945 */ 1946 */
1946 regs = get_irq_regs(); 1947 regs = get_irq_regs();
1947 1948
1948 data.addr = 0; 1949 perf_sample_data_init(&data, 0);
1949 1950
1950 cpuc = &__get_cpu_var(cpu_hw_events); 1951 cpuc = &__get_cpu_var(cpu_hw_events);
1951 for (idx = 0; idx <= armpmu->num_events; ++idx) { 1952 for (idx = 0; idx <= armpmu->num_events; ++idx) {
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index ba2adefa53f7..0e12e0acbf26 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -16,7 +16,6 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/stddef.h> 17#include <linux/stddef.h>
18#include <linux/unistd.h> 18#include <linux/unistd.h>
19#include <linux/slab.h>
20#include <linux/user.h> 19#include <linux/user.h>
21#include <linux/delay.h> 20#include <linux/delay.h>
22#include <linux/reboot.h> 21#include <linux/reboot.h>
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index e7714f367eb8..907d5a620bca 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -18,6 +18,7 @@
18#include <asm/cacheflush.h> 18#include <asm/cacheflush.h>
19#include <asm/ucontext.h> 19#include <asm/ucontext.h>
20#include <asm/unistd.h> 20#include <asm/unistd.h>
21#include <asm/vfp.h>
21 22
22#include "ptrace.h" 23#include "ptrace.h"
23#include "signal.h" 24#include "signal.h"
@@ -175,6 +176,90 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame)
175 176
176#endif 177#endif
177 178
179#ifdef CONFIG_VFP
180
181static int preserve_vfp_context(struct vfp_sigframe __user *frame)
182{
183 struct thread_info *thread = current_thread_info();
184 struct vfp_hard_struct *h = &thread->vfpstate.hard;
185 const unsigned long magic = VFP_MAGIC;
186 const unsigned long size = VFP_STORAGE_SIZE;
187 int err = 0;
188
189 vfp_sync_hwstate(thread);
190 __put_user_error(magic, &frame->magic, err);
191 __put_user_error(size, &frame->size, err);
192
193 /*
194 * Copy the floating point registers. There can be unused
195 * registers see asm/hwcap.h for details.
196 */
197 err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs,
198 sizeof(h->fpregs));
199 /*
200 * Copy the status and control register.
201 */
202 __put_user_error(h->fpscr, &frame->ufp.fpscr, err);
203
204 /*
205 * Copy the exception registers.
206 */
207 __put_user_error(h->fpexc, &frame->ufp_exc.fpexc, err);
208 __put_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
209 __put_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
210
211 return err ? -EFAULT : 0;
212}
213
214static int restore_vfp_context(struct vfp_sigframe __user *frame)
215{
216 struct thread_info *thread = current_thread_info();
217 struct vfp_hard_struct *h = &thread->vfpstate.hard;
218 unsigned long magic;
219 unsigned long size;
220 unsigned long fpexc;
221 int err = 0;
222
223 __get_user_error(magic, &frame->magic, err);
224 __get_user_error(size, &frame->size, err);
225
226 if (err)
227 return -EFAULT;
228 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
229 return -EINVAL;
230
231 /*
232 * Copy the floating point registers. There can be unused
233 * registers see asm/hwcap.h for details.
234 */
235 err |= __copy_from_user(&h->fpregs, &frame->ufp.fpregs,
236 sizeof(h->fpregs));
237 /*
238 * Copy the status and control register.
239 */
240 __get_user_error(h->fpscr, &frame->ufp.fpscr, err);
241
242 /*
243 * Sanitise and restore the exception registers.
244 */
245 __get_user_error(fpexc, &frame->ufp_exc.fpexc, err);
246 /* Ensure the VFP is enabled. */
247 fpexc |= FPEXC_EN;
248 /* Ensure FPINST2 is invalid and the exception flag is cleared. */
249 fpexc &= ~(FPEXC_EX | FPEXC_FP2V);
250 h->fpexc = fpexc;
251
252 __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
253 __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
254
255 if (!err)
256 vfp_flush_hwstate(thread);
257
258 return err ? -EFAULT : 0;
259}
260
261#endif
262
178/* 263/*
179 * Do a signal return; undo the signal stack. These are aligned to 64-bit. 264 * Do a signal return; undo the signal stack. These are aligned to 64-bit.
180 */ 265 */
@@ -233,8 +318,8 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)
233 err |= restore_iwmmxt_context(&aux->iwmmxt); 318 err |= restore_iwmmxt_context(&aux->iwmmxt);
234#endif 319#endif
235#ifdef CONFIG_VFP 320#ifdef CONFIG_VFP
236// if (err == 0) 321 if (err == 0)
237// err |= vfp_restore_state(&sf->aux.vfp); 322 err |= restore_vfp_context(&aux->vfp);
238#endif 323#endif
239 324
240 return err; 325 return err;
@@ -348,8 +433,8 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set)
348 err |= preserve_iwmmxt_context(&aux->iwmmxt); 433 err |= preserve_iwmmxt_context(&aux->iwmmxt);
349#endif 434#endif
350#ifdef CONFIG_VFP 435#ifdef CONFIG_VFP
351// if (err == 0) 436 if (err == 0)
352// err |= vfp_save_state(&sf->aux.vfp); 437 err |= preserve_vfp_context(&aux->vfp);
353#endif 438#endif
354 __put_user_error(0, &aux->end_magic, err); 439 __put_user_error(0, &aux->end_magic, err);
355 440
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 57162af53dc9..577543f3857f 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -99,6 +99,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
99 *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | 99 *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) |
100 PMD_TYPE_SECT | PMD_SECT_AP_WRITE); 100 PMD_TYPE_SECT | PMD_SECT_AP_WRITE);
101 flush_pmd_entry(pmd); 101 flush_pmd_entry(pmd);
102 outer_clean_range(__pa(pmd), __pa(pmd + 1));
102 103
103 /* 104 /*
104 * We need to tell the secondary core where to find 105 * We need to tell the secondary core where to find
@@ -106,7 +107,8 @@ int __cpuinit __cpu_up(unsigned int cpu)
106 */ 107 */
107 secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; 108 secondary_data.stack = task_stack_page(idle) + THREAD_START_SP;
108 secondary_data.pgdir = virt_to_phys(pgd); 109 secondary_data.pgdir = virt_to_phys(pgd);
109 wmb(); 110 __cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data));
111 outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1));
110 112
111 /* 113 /*
112 * Now bring the CPU into our world. 114 * Now bring the CPU into our world.
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index 4350f75e578c..c23501842b98 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -15,7 +15,6 @@
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/errno.h> 16#include <linux/errno.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/slab.h>
19#include <linux/mm.h> 18#include <linux/mm.h>
20#include <linux/sem.h> 19#include <linux/sem.h>
21#include <linux/msg.h> 20#include <linux/msg.h>
@@ -27,6 +26,7 @@
27#include <linux/file.h> 26#include <linux/file.h>
28#include <linux/ipc.h> 27#include <linux/ipc.h>
29#include <linux/uaccess.h> 28#include <linux/uaccess.h>
29#include <linux/slab.h>
30 30
31/* Fork a new task - this creates a new program thread. 31/* Fork a new task - this creates a new program thread.
32 * This is called indirectly via a small wrapper 32 * This is called indirectly via a small wrapper
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S
index 5025c863713d..938fc14f962d 100644
--- a/arch/arm/lib/memmove.S
+++ b/arch/arm/lib/memmove.S
@@ -74,7 +74,7 @@ ENTRY(memmove)
74 rsb ip, ip, #32 74 rsb ip, ip, #32
75 addne pc, pc, ip @ C is always clear here 75 addne pc, pc, ip @ C is always clear here
76 b 7f 76 b 7f
776: nop 776: W(nop)
78 W(ldr) r3, [r1, #-4]! 78 W(ldr) r3, [r1, #-4]!
79 W(ldr) r4, [r1, #-4]! 79 W(ldr) r4, [r1, #-4]!
80 W(ldr) r5, [r1, #-4]! 80 W(ldr) r5, [r1, #-4]!
@@ -85,7 +85,7 @@ ENTRY(memmove)
85 85
86 add pc, pc, ip 86 add pc, pc, ip
87 nop 87 nop
88 nop 88 W(nop)
89 W(str) r3, [r0, #-4]! 89 W(str) r3, [r0, #-4]!
90 W(str) r4, [r0, #-4]! 90 W(str) r4, [r0, #-4]!
91 W(str) r5, [r0, #-4]! 91 W(str) r5, [r0, #-4]!
diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
index 6b967ffb6552..e2d2f2cd0c4f 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -16,6 +16,7 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/hardirq.h> /* for in_atomic() */ 18#include <linux/hardirq.h> /* for in_atomic() */
19#include <linux/gfp.h>
19#include <asm/current.h> 20#include <asm/current.h>
20#include <asm/page.h> 21#include <asm/page.h>
21 22
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c
index b5c5fc6ba3a9..3ef68330452a 100644
--- a/arch/arm/mach-aaec2000/core.c
+++ b/arch/arm/mach-aaec2000/core.c
@@ -20,6 +20,7 @@
20#include <linux/timex.h> 20#include <linux/timex.h>
21#include <linux/signal.h> 21#include <linux/signal.h>
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/gfp.h>
23 24
24#include <mach/hardware.h> 25#include <mach/hardware.h>
25#include <asm/irq.h> 26#include <asm/irq.h>
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 027dd570dcc3..d4004557532a 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -16,8 +16,8 @@ obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_d
16obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o 16obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
17obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o 17obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
18obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o 18obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
19obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o 19obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
20 obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o 20obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
21obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o 21obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
22obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o 22obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o
23obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o 23obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
index 29cf83177484..c11fd47aec5d 100644
--- a/arch/arm/mach-at91/board-sam9g20ek.c
+++ b/arch/arm/mach-at91/board-sam9g20ek.c
@@ -271,10 +271,12 @@ static void __init ek_add_device_buttons(void) {}
271 271
272 272
273static struct i2c_board_info __initdata ek_i2c_devices[] = { 273static struct i2c_board_info __initdata ek_i2c_devices[] = {
274 { 274 {
275 I2C_BOARD_INFO("24c512", 0x50), 275 I2C_BOARD_INFO("24c512", 0x50)
276 I2C_BOARD_INFO("wm8731", 0x1b), 276 },
277 }, 277 {
278 I2C_BOARD_INFO("wm8731", 0x1b)
279 },
278}; 280};
279 281
280 282
diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S
index 987fab3d846a..9c5b48e68a71 100644
--- a/arch/arm/mach-at91/pm_slowclock.S
+++ b/arch/arm/mach-at91/pm_slowclock.S
@@ -175,8 +175,6 @@ ENTRY(at91_slow_clock)
175 orr r3, r3, #(1 << 29) /* bit 29 always set */ 175 orr r3, r3, #(1 << 29) /* bit 29 always set */
176 str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] 176 str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
177 177
178 wait_pllalock
179
180 /* Save PLLB setting and disable it */ 178 /* Save PLLB setting and disable it */
181 ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] 179 ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
182 str r3, .saved_pllbr 180 str r3, .saved_pllbr
@@ -184,8 +182,6 @@ ENTRY(at91_slow_clock)
184 mov r3, #AT91_PMC_PLLCOUNT 182 mov r3, #AT91_PMC_PLLCOUNT
185 str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] 183 str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
186 184
187 wait_pllblock
188
189 /* Turn off the main oscillator */ 185 /* Turn off the main oscillator */
190 ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)] 186 ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)]
191 bic r3, r3, #AT91_PMC_MOSCEN 187 bic r3, r3, #AT91_PMC_MOSCEN
@@ -205,13 +201,25 @@ ENTRY(at91_slow_clock)
205 ldr r3, .saved_pllbr 201 ldr r3, .saved_pllbr
206 str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)] 202 str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
207 203
204 tst r3, #(AT91_PMC_MUL & 0xff0000)
205 bne 1f
206 tst r3, #(AT91_PMC_MUL & ~0xff0000)
207 beq 2f
2081:
208 wait_pllblock 209 wait_pllblock
2102:
209 211
210 /* Restore PLLA setting */ 212 /* Restore PLLA setting */
211 ldr r3, .saved_pllar 213 ldr r3, .saved_pllar
212 str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)] 214 str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
213 215
216 tst r3, #(AT91_PMC_MUL & 0xff0000)
217 bne 3f
218 tst r3, #(AT91_PMC_MUL & ~0xff0000)
219 beq 4f
2203:
214 wait_pllalock 221 wait_pllalock
2224:
215 223
216#ifdef SLOWDOWN_MASTER_CLOCK 224#ifdef SLOWDOWN_MASTER_CLOCK
217 /* 225 /*
diff --git a/arch/arm/mach-bcmring/dma.c b/arch/arm/mach-bcmring/dma.c
index 7b20fccb9d4e..29c0a911df26 100644
--- a/arch/arm/mach-bcmring/dma.c
+++ b/arch/arm/mach-bcmring/dma.c
@@ -28,6 +28,7 @@
28#include <linux/interrupt.h> 28#include <linux/interrupt.h>
29#include <linux/irqreturn.h> 29#include <linux/irqreturn.h>
30#include <linux/proc_fs.h> 30#include <linux/proc_fs.h>
31#include <linux/slab.h>
31 32
32#include <mach/timer.h> 33#include <mach/timer.h>
33 34
@@ -2220,11 +2221,15 @@ EXPORT_SYMBOL(dma_map_create_descriptor_ring);
2220int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ 2221int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2221 int dirtied /* non-zero if any of the pages were modified */ 2222 int dirtied /* non-zero if any of the pages were modified */
2222 ) { 2223 ) {
2224
2225 int rc = 0;
2223 int regionIdx; 2226 int regionIdx;
2224 int segmentIdx; 2227 int segmentIdx;
2225 DMA_Region_t *region; 2228 DMA_Region_t *region;
2226 DMA_Segment_t *segment; 2229 DMA_Segment_t *segment;
2227 2230
2231 down(&memMap->lock);
2232
2228 for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) { 2233 for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2229 region = &memMap->region[regionIdx]; 2234 region = &memMap->region[regionIdx];
2230 2235
@@ -2238,7 +2243,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2238 printk(KERN_ERR 2243 printk(KERN_ERR
2239 "%s: vmalloc'd pages are not yet supported\n", 2244 "%s: vmalloc'd pages are not yet supported\n",
2240 __func__); 2245 __func__);
2241 return -EINVAL; 2246 rc = -EINVAL;
2247 goto out;
2242 } 2248 }
2243 2249
2244 case DMA_MEM_TYPE_KMALLOC: 2250 case DMA_MEM_TYPE_KMALLOC:
@@ -2275,7 +2281,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2275 printk(KERN_ERR 2281 printk(KERN_ERR
2276 "%s: Unsupported memory type: %d\n", 2282 "%s: Unsupported memory type: %d\n",
2277 __func__, region->memType); 2283 __func__, region->memType);
2278 return -EINVAL; 2284 rc = -EINVAL;
2285 goto out;
2279 } 2286 }
2280 } 2287 }
2281 2288
@@ -2313,9 +2320,10 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2313 memMap->numRegionsUsed = 0; 2320 memMap->numRegionsUsed = 0;
2314 memMap->inUse = 0; 2321 memMap->inUse = 0;
2315 2322
2323out:
2316 up(&memMap->lock); 2324 up(&memMap->lock);
2317 2325
2318 return 0; 2326 return rc;
2319} 2327}
2320 2328
2321EXPORT_SYMBOL(dma_unmap); 2329EXPORT_SYMBOL(dma_unmap);
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index d15beceb632e..df4ab2105869 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -22,6 +22,7 @@
22#include <linux/leds.h> 22#include <linux/leds.h>
23#include <linux/mtd/mtd.h> 23#include <linux/mtd/mtd.h>
24#include <linux/mtd/partitions.h> 24#include <linux/mtd/partitions.h>
25#include <linux/slab.h>
25#include <linux/mtd/nand.h> 26#include <linux/mtd/nand.h>
26#include <linux/input.h> 27#include <linux/input.h>
27#include <linux/spi/spi.h> 28#include <linux/spi/spi.h>
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 27772e18e45b..0d6ee583f65c 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -758,7 +758,6 @@ static u8 dm365_default_priorities[DAVINCI_N_AINTC_IRQ] = {
758 [IRQ_MMCINT] = 7, 758 [IRQ_MMCINT] = 7,
759 [IRQ_DM365_MMCINT1] = 7, 759 [IRQ_DM365_MMCINT1] = 7,
760 [IRQ_DM365_PWMINT3] = 7, 760 [IRQ_DM365_PWMINT3] = 7,
761 [IRQ_DDRINT] = 4,
762 [IRQ_AEMIFINT] = 2, 761 [IRQ_AEMIFINT] = 2,
763 [IRQ_DM365_SDIOINT1] = 2, 762 [IRQ_DM365_SDIOINT1] = 2,
764 [IRQ_TINT0_TINT12] = 7, 763 [IRQ_TINT0_TINT12] = 7,
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index 15dd886df04c..53137387aee1 100644
--- a/arch/arm/mach-davinci/dma.c
+++ b/arch/arm/mach-davinci/dma.c
@@ -23,6 +23,7 @@
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24#include <linux/platform_device.h> 24#include <linux/platform_device.h>
25#include <linux/io.h> 25#include <linux/io.h>
26#include <linux/slab.h>
26 27
27#include <mach/edma.h> 28#include <mach/edma.h>
28 29
@@ -1266,7 +1267,8 @@ int edma_start(unsigned channel)
1266 /* EDMA channel with event association */ 1267 /* EDMA channel with event association */
1267 pr_debug("EDMA: ER%d %08x\n", j, 1268 pr_debug("EDMA: ER%d %08x\n", j,
1268 edma_shadow0_read_array(ctlr, SH_ER, j)); 1269 edma_shadow0_read_array(ctlr, SH_ER, j));
1269 /* Clear any pending error */ 1270 /* Clear any pending event or error */
1271 edma_write_array(ctlr, EDMA_ECR, j, mask);
1270 edma_write_array(ctlr, EDMA_EMCR, j, mask); 1272 edma_write_array(ctlr, EDMA_EMCR, j, mask);
1271 /* Clear any SER */ 1273 /* Clear any SER */
1272 edma_shadow0_write_array(ctlr, SH_SECR, j, mask); 1274 edma_shadow0_write_array(ctlr, SH_SECR, j, mask);
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index cc9be7fee627..03acfd39042b 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Author: Mark A. Greer <mgreer@mvista.com> 4 * Author: Mark A. Greer <mgreer@mvista.com>
5 * 5 *
6 * 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under 6 * 2007, 2009-2010 (c) MontaVista Software, Inc. This file is licensed under
7 * the terms of the GNU General Public License version 2. This program 7 * the terms of the GNU General Public License version 2. This program
8 * is licensed "as is" without any warranty of any kind, whether express 8 * is licensed "as is" without any warranty of any kind, whether express
9 * or implied. 9 * or implied.
@@ -13,7 +13,9 @@
13 13
14#include <video/da8xx-fb.h> 14#include <video/da8xx-fb.h>
15 15
16#include <linux/platform_device.h>
16#include <linux/davinci_emac.h> 17#include <linux/davinci_emac.h>
18
17#include <mach/serial.h> 19#include <mach/serial.h>
18#include <mach/edma.h> 20#include <mach/edma.h>
19#include <mach/i2c.h> 21#include <mach/i2c.h>
@@ -144,6 +146,10 @@ extern const short da850_mmcsd0_pins[];
144extern const short da850_nand_pins[]; 146extern const short da850_nand_pins[];
145extern const short da850_nor_pins[]; 147extern const short da850_nor_pins[];
146 148
149#ifdef CONFIG_DAVINCI_MUX
147int da8xx_pinmux_setup(const short pins[]); 150int da8xx_pinmux_setup(const short pins[]);
151#else
152static inline int da8xx_pinmux_setup(const short pins[]) { return 0; }
153#endif
148 154
149#endif /* __ASM_ARCH_DAVINCI_DA8XX_H */ 155#endif /* __ASM_ARCH_DAVINCI_DA8XX_H */
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 42d985beece5..9e0b106b4f5f 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -253,8 +253,6 @@ static void __init timer_init(void)
253 irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq; 253 irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
254 setup_irq(irq, &t->irqaction); 254 setup_irq(irq, &t->irqaction);
255 } 255 }
256
257 timer32_config(&timers[i]);
258 } 256 }
259} 257}
260 258
@@ -331,6 +329,7 @@ static void __init davinci_timer_init(void)
331 unsigned int clocksource_id; 329 unsigned int clocksource_id;
332 static char err[] __initdata = KERN_ERR 330 static char err[] __initdata = KERN_ERR
333 "%s: can't register clocksource!\n"; 331 "%s: can't register clocksource!\n";
332 int i;
334 333
335 clockevent_id = soc_info->timer_info->clockevent_id; 334 clockevent_id = soc_info->timer_info->clockevent_id;
336 clocksource_id = soc_info->timer_info->clocksource_id; 335 clocksource_id = soc_info->timer_info->clocksource_id;
@@ -389,6 +388,9 @@ static void __init davinci_timer_init(void)
389 388
390 clockevent_davinci.cpumask = cpumask_of(0); 389 clockevent_davinci.cpumask = cpumask_of(0);
391 clockevents_register_device(&clockevent_davinci); 390 clockevents_register_device(&clockevent_davinci);
391
392 for (i=0; i< ARRAY_SIZE(timers); i++)
393 timer32_config(&timers[i]);
392} 394}
393 395
394struct sys_timer davinci_timer = { 396struct sys_timer davinci_timer = {
diff --git a/arch/arm/mach-ep93xx/gpio.c b/arch/arm/mach-ep93xx/gpio.c
index cc377ae8c428..cf547ad7ebd4 100644
--- a/arch/arm/mach-ep93xx/gpio.c
+++ b/arch/arm/mach-ep93xx/gpio.c
@@ -25,7 +25,7 @@
25#include <mach/hardware.h> 25#include <mach/hardware.h>
26 26
27/************************************************************************* 27/*************************************************************************
28 * GPIO handling for EP93xx 28 * Interrupt handling for EP93xx on-chip GPIOs
29 *************************************************************************/ 29 *************************************************************************/
30static unsigned char gpio_int_unmasked[3]; 30static unsigned char gpio_int_unmasked[3];
31static unsigned char gpio_int_enabled[3]; 31static unsigned char gpio_int_enabled[3];
@@ -40,7 +40,7 @@ static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 };
40static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; 40static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 };
41static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 }; 41static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 };
42 42
43void ep93xx_gpio_update_int_params(unsigned port) 43static void ep93xx_gpio_update_int_params(unsigned port)
44{ 44{
45 BUG_ON(port > 2); 45 BUG_ON(port > 2);
46 46
@@ -56,7 +56,7 @@ void ep93xx_gpio_update_int_params(unsigned port)
56 EP93XX_GPIO_REG(int_en_register_offset[port])); 56 EP93XX_GPIO_REG(int_en_register_offset[port]));
57} 57}
58 58
59void ep93xx_gpio_int_mask(unsigned line) 59static inline void ep93xx_gpio_int_mask(unsigned line)
60{ 60{
61 gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7)); 61 gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7));
62} 62}
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index 7a2614828217..bdb3f6706801 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -14,7 +14,6 @@
14 */ 14 */
15 15
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/slab.h>
18#include <linux/mman.h> 17#include <linux/mman.h>
19#include <linux/init.h> 18#include <linux/init.h>
20#include <linux/interrupt.h> 19#include <linux/interrupt.h>
diff --git a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c
index 44d4c2e8207b..f77f20255045 100644
--- a/arch/arm/mach-integrator/cpu.c
+++ b/arch/arm/mach-integrator/cpu.c
@@ -13,7 +13,6 @@
13#include <linux/types.h> 13#include <linux/types.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/cpufreq.h> 15#include <linux/cpufreq.h>
16#include <linux/slab.h>
17#include <linux/sched.h> 16#include <linux/sched.h>
18#include <linux/smp.h> 17#include <linux/smp.h>
19#include <linux/init.h> 18#include <linux/init.h>
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c
index 0058c937719e..41b10725cef7 100644
--- a/arch/arm/mach-integrator/impd1.c
+++ b/arch/arm/mach-integrator/impd1.c
@@ -21,6 +21,7 @@
21#include <linux/amba/bus.h> 21#include <linux/amba/bus.h>
22#include <linux/amba/clcd.h> 22#include <linux/amba/clcd.h>
23#include <linux/io.h> 23#include <linux/io.h>
24#include <linux/slab.h>
24 25
25#include <asm/clkdev.h> 26#include <asm/clkdev.h>
26#include <mach/clkdev.h> 27#include <mach/clkdev.h>
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 66ef86d6d9e3..15e6cc5a352f 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -13,7 +13,6 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/dma-mapping.h> 15#include <linux/dma-mapping.h>
16#include <linux/slab.h>
17#include <linux/string.h> 16#include <linux/string.h>
18#include <linux/sysdev.h> 17#include <linux/sysdev.h>
19#include <linux/amba/bus.h> 18#include <linux/amba/bus.h>
@@ -21,6 +20,7 @@
21#include <linux/amba/clcd.h> 20#include <linux/amba/clcd.h>
22#include <linux/amba/mmci.h> 21#include <linux/amba/mmci.h>
23#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/gfp.h>
24 24
25#include <asm/clkdev.h> 25#include <asm/clkdev.h>
26#include <mach/clkdev.h> 26#include <mach/clkdev.h>
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c
index 148d25fc636f..ffbd349363af 100644
--- a/arch/arm/mach-integrator/pci_v3.c
+++ b/arch/arm/mach-integrator/pci_v3.c
@@ -22,7 +22,6 @@
22 */ 22 */
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/slab.h>
26#include <linux/ioport.h> 25#include <linux/ioport.h>
27#include <linux/interrupt.h> 26#include <linux/interrupt.h>
28#include <linux/spinlock.h> 27#include <linux/spinlock.h>
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
index 4873f26a42e1..6d5a90813d31 100644
--- a/arch/arm/mach-iop13xx/pci.c
+++ b/arch/arm/mach-iop13xx/pci.c
@@ -18,6 +18,7 @@
18 */ 18 */
19 19
20#include <linux/pci.h> 20#include <linux/pci.h>
21#include <linux/slab.h>
21#include <linux/delay.h> 22#include <linux/delay.h>
22#include <linux/jiffies.h> 23#include <linux/jiffies.h>
23#include <asm/irq.h> 24#include <asm/irq.h>
diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c
index 93370a46b620..10384fc37cb2 100644
--- a/arch/arm/mach-iop32x/glantank.c
+++ b/arch/arm/mach-iop32x/glantank.c
@@ -19,7 +19,6 @@
19#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/pm.h> 20#include <linux/pm.h>
21#include <linux/string.h> 21#include <linux/string.h>
22#include <linux/slab.h>
23#include <linux/serial_core.h> 22#include <linux/serial_core.h>
24#include <linux/serial_8250.h> 23#include <linux/serial_8250.h>
25#include <linux/mtd/physmap.h> 24#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c
index a7a08dda7f33..d6ac85ff109d 100644
--- a/arch/arm/mach-iop32x/iq31244.c
+++ b/arch/arm/mach-iop32x/iq31244.c
@@ -21,7 +21,6 @@
21#include <linux/pci.h> 21#include <linux/pci.h>
22#include <linux/pm.h> 22#include <linux/pm.h>
23#include <linux/string.h> 23#include <linux/string.h>
24#include <linux/slab.h>
25#include <linux/serial_core.h> 24#include <linux/serial_core.h>
26#include <linux/serial_8250.h> 25#include <linux/serial_8250.h>
27#include <linux/mtd/physmap.h> 26#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-iop32x/iq80321.c b/arch/arm/mach-iop32x/iq80321.c
index 0200f80c1e17..c6a0e4ee9d91 100644
--- a/arch/arm/mach-iop32x/iq80321.c
+++ b/arch/arm/mach-iop32x/iq80321.c
@@ -18,7 +18,6 @@
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/slab.h>
22#include <linux/serial_core.h> 21#include <linux/serial_core.h>
23#include <linux/serial_8250.h> 22#include <linux/serial_8250.h>
24#include <linux/mtd/physmap.h> 23#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-iop32x/n2100.c b/arch/arm/mach-iop32x/n2100.c
index 2a5c637639bb..5d99039286eb 100644
--- a/arch/arm/mach-iop32x/n2100.c
+++ b/arch/arm/mach-iop32x/n2100.c
@@ -23,7 +23,6 @@
23#include <linux/pci.h> 23#include <linux/pci.h>
24#include <linux/pm.h> 24#include <linux/pm.h>
25#include <linux/string.h> 25#include <linux/string.h>
26#include <linux/slab.h>
27#include <linux/serial_core.h> 26#include <linux/serial_core.h>
28#include <linux/serial_8250.h> 27#include <linux/serial_8250.h>
29#include <linux/mtd/physmap.h> 28#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-iop33x/iq80331.c b/arch/arm/mach-iop33x/iq80331.c
index 394e95a30b75..c6ff5523b380 100644
--- a/arch/arm/mach-iop33x/iq80331.c
+++ b/arch/arm/mach-iop33x/iq80331.c
@@ -17,7 +17,6 @@
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/pci.h> 18#include <linux/pci.h>
19#include <linux/string.h> 19#include <linux/string.h>
20#include <linux/slab.h>
21#include <linux/serial_core.h> 20#include <linux/serial_core.h>
22#include <linux/serial_8250.h> 21#include <linux/serial_8250.h>
23#include <linux/mtd/physmap.h> 22#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-iop33x/iq80332.c b/arch/arm/mach-iop33x/iq80332.c
index a40badf126c2..fbf551409394 100644
--- a/arch/arm/mach-iop33x/iq80332.c
+++ b/arch/arm/mach-iop33x/iq80332.c
@@ -17,7 +17,6 @@
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/pci.h> 18#include <linux/pci.h>
19#include <linux/string.h> 19#include <linux/string.h>
20#include <linux/slab.h>
21#include <linux/serial_core.h> 20#include <linux/serial_core.h>
22#include <linux/serial_8250.h> 21#include <linux/serial_8250.h>
23#include <linux/mtd/physmap.h> 22#include <linux/mtd/physmap.h>
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c
index c84dfac13882..1a557e0d055b 100644
--- a/arch/arm/mach-ixp2000/enp2611.c
+++ b/arch/arm/mach-ixp2000/enp2611.c
@@ -26,7 +26,6 @@
26#include <linux/bitops.h> 26#include <linux/bitops.h>
27#include <linux/pci.h> 27#include <linux/pci.h>
28#include <linux/ioport.h> 28#include <linux/ioport.h>
29#include <linux/slab.h>
30#include <linux/delay.h> 29#include <linux/delay.h>
31#include <linux/serial.h> 30#include <linux/serial.h>
32#include <linux/tty.h> 31#include <linux/tty.h>
diff --git a/arch/arm/mach-ixp2000/ixdp2400.c b/arch/arm/mach-ixp2000/ixdp2400.c
index 4467c4224d73..55e5c69352ad 100644
--- a/arch/arm/mach-ixp2000/ixdp2400.c
+++ b/arch/arm/mach-ixp2000/ixdp2400.c
@@ -23,7 +23,6 @@
23#include <linux/bitops.h> 23#include <linux/bitops.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/ioport.h> 25#include <linux/ioport.h>
26#include <linux/slab.h>
27#include <linux/delay.h> 26#include <linux/delay.h>
28#include <linux/io.h> 27#include <linux/io.h>
29 28
diff --git a/arch/arm/mach-ixp2000/ixdp2800.c b/arch/arm/mach-ixp2000/ixdp2800.c
index 94f68ba9ea50..237b61a85e9a 100644
--- a/arch/arm/mach-ixp2000/ixdp2800.c
+++ b/arch/arm/mach-ixp2000/ixdp2800.c
@@ -23,7 +23,6 @@
23#include <linux/bitops.h> 23#include <linux/bitops.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/ioport.h> 25#include <linux/ioport.h>
26#include <linux/slab.h>
27#include <linux/delay.h> 26#include <linux/delay.h>
28#include <linux/io.h> 27#include <linux/io.h>
29 28
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
index 30451300751b..91fffb9b2084 100644
--- a/arch/arm/mach-ixp2000/ixdp2x00.c
+++ b/arch/arm/mach-ixp2000/ixdp2x00.c
@@ -23,7 +23,6 @@
23#include <linux/bitops.h> 23#include <linux/bitops.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/ioport.h> 25#include <linux/ioport.h>
26#include <linux/slab.h>
27#include <linux/delay.h> 26#include <linux/delay.h>
28#include <linux/io.h> 27#include <linux/io.h>
29 28
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 4a12327a09a3..0369ec4242a6 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -23,7 +23,6 @@
23#include <linux/bitops.h> 23#include <linux/bitops.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/ioport.h> 25#include <linux/ioport.h>
26#include <linux/slab.h>
27#include <linux/delay.h> 26#include <linux/delay.h>
28#include <linux/serial.h> 27#include <linux/serial.h>
29#include <linux/tty.h> 28#include <linux/tty.h>
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c
index 60e9fd08ab80..90771cad06f8 100644
--- a/arch/arm/mach-ixp2000/pci.c
+++ b/arch/arm/mach-ixp2000/pci.c
@@ -22,7 +22,6 @@
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/ioport.h> 24#include <linux/ioport.h>
25#include <linux/slab.h>
26#include <linux/delay.h> 25#include <linux/delay.h>
27#include <linux/io.h> 26#include <linux/io.h>
28 27
diff --git a/arch/arm/mach-ixp23xx/include/mach/memory.h b/arch/arm/mach-ixp23xx/include/mach/memory.h
index 94a3a86cfeb8..6ef65d813f16 100644
--- a/arch/arm/mach-ixp23xx/include/mach/memory.h
+++ b/arch/arm/mach-ixp23xx/include/mach/memory.h
@@ -19,7 +19,7 @@
19 */ 19 */
20#define PHYS_OFFSET (0x00000000) 20#define PHYS_OFFSET (0x00000000)
21 21
22#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)) 22#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)
23 23
24#define __phys_to_bus(x) ((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET)) 24#define __phys_to_bus(x) ((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
25#define __bus_to_phys(x) ((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET)) 25#define __bus_to_phys(x) ((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c
index 59022becb134..4b0e598a91c9 100644
--- a/arch/arm/mach-ixp23xx/pci.c
+++ b/arch/arm/mach-ixp23xx/pci.c
@@ -23,7 +23,6 @@
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/ioport.h> 25#include <linux/ioport.h>
26#include <linux/slab.h>
27#include <linux/delay.h> 26#include <linux/delay.h>
28#include <linux/io.h> 27#include <linux/io.h>
29 28
diff --git a/arch/arm/mach-ixp4xx/avila-setup.c b/arch/arm/mach-ixp4xx/avila-setup.c
index 6e558a76457d..d8bc86d76f1d 100644
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
@@ -17,7 +17,6 @@
17#include <linux/serial.h> 17#include <linux/serial.h>
18#include <linux/tty.h> 18#include <linux/tty.h>
19#include <linux/serial_8250.h> 19#include <linux/serial_8250.h>
20#include <linux/slab.h>
21#include <linux/i2c-gpio.h> 20#include <linux/i2c-gpio.h>
22#include <asm/types.h> 21#include <asm/types.h>
23#include <asm/setup.h> 22#include <asm/setup.h>
diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c
index 25bf5ad770ea..31a47f6a8939 100644
--- a/arch/arm/mach-ixp4xx/coyote-setup.c
+++ b/arch/arm/mach-ixp4xx/coyote-setup.c
@@ -14,7 +14,6 @@
14#include <linux/serial.h> 14#include <linux/serial.h>
15#include <linux/tty.h> 15#include <linux/tty.h>
16#include <linux/serial_8250.h> 16#include <linux/serial_8250.h>
17#include <linux/slab.h>
18 17
19#include <asm/types.h> 18#include <asm/types.h>
20#include <asm/setup.h> 19#include <asm/setup.h>
diff --git a/arch/arm/mach-ixp4xx/gateway7001-setup.c b/arch/arm/mach-ixp4xx/gateway7001-setup.c
index 59b73a0ddfa9..2583b2a13174 100644
--- a/arch/arm/mach-ixp4xx/gateway7001-setup.c
+++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c
@@ -17,7 +17,6 @@
17#include <linux/serial.h> 17#include <linux/serial.h>
18#include <linux/tty.h> 18#include <linux/tty.h>
19#include <linux/serial_8250.h> 19#include <linux/serial_8250.h>
20#include <linux/slab.h>
21 20
22#include <asm/types.h> 21#include <asm/types.h>
23#include <asm/setup.h> 22#include <asm/setup.h>
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
index 0bc7185cb6f7..c67586b79400 100644
--- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c
+++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c
@@ -27,7 +27,6 @@
27#include <linux/serial.h> 27#include <linux/serial.h>
28#include <linux/tty.h> 28#include <linux/tty.h>
29#include <linux/serial_8250.h> 29#include <linux/serial_8250.h>
30#include <linux/slab.h>
31#include <asm/types.h> 30#include <asm/types.h>
32#include <asm/setup.h> 31#include <asm/setup.h>
33#include <asm/memory.h> 32#include <asm/memory.h>
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c
index bbb768988845..827cbc4402f4 100644
--- a/arch/arm/mach-ixp4xx/ixdp425-setup.c
+++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c
@@ -14,7 +14,6 @@
14#include <linux/serial.h> 14#include <linux/serial.h>
15#include <linux/tty.h> 15#include <linux/tty.h>
16#include <linux/serial_8250.h> 16#include <linux/serial_8250.h>
17#include <linux/slab.h>
18#include <linux/i2c-gpio.h> 17#include <linux/i2c-gpio.h>
19#include <linux/io.h> 18#include <linux/io.h>
20#include <linux/mtd/mtd.h> 19#include <linux/mtd/mtd.h>
diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
index e8bb25778166..a17ed79207a4 100644
--- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
@@ -20,7 +20,6 @@
20#include <linux/io.h> 20#include <linux/io.h>
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/slab.h>
24#include <mach/npe.h> 23#include <mach/npe.h>
25 24
26#define DEBUG_MSG 0 25#define DEBUG_MSG 0
diff --git a/arch/arm/mach-ixp4xx/wg302v2-setup.c b/arch/arm/mach-ixp4xx/wg302v2-setup.c
index 7ea782021d1f..4dd74863daa9 100644
--- a/arch/arm/mach-ixp4xx/wg302v2-setup.c
+++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c
@@ -18,7 +18,6 @@
18#include <linux/serial.h> 18#include <linux/serial.h>
19#include <linux/tty.h> 19#include <linux/tty.h>
20#include <linux/serial_8250.h> 20#include <linux/serial_8250.h>
21#include <linux/slab.h>
22 21
23#include <asm/types.h> 22#include <asm/types.h>
24#include <asm/setup.h> 23#include <asm/setup.h>
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
index 0358f45766cb..5e6f711b1c67 100644
--- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
+++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
@@ -74,9 +74,9 @@ static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
74 .desc = "SWR Button", 74 .desc = "SWR Button",
75 .active_low = 1, 75 .active_low = 1,
76 }, { 76 }, {
77 .code = KEY_F1, 77 .code = KEY_WPS_BUTTON,
78 .gpio = 46, 78 .gpio = 46,
79 .desc = "WPS Button(F1)", 79 .desc = "WPS Button",
80 .active_low = 1, 80 .active_low = 1,
81 }, 81 },
82}; 82};
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c
index a604b2a701aa..dee1eff50d39 100644
--- a/arch/arm/mach-kirkwood/pcie.c
+++ b/arch/arm/mach-kirkwood/pcie.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/pci.h> 12#include <linux/pci.h>
13#include <linux/slab.h>
13#include <linux/mbus.h> 14#include <linux/mbus.h>
14#include <asm/irq.h> 15#include <asm/irq.h>
15#include <asm/mach/pci.h> 16#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-lh7a40x/clcd.c b/arch/arm/mach-lh7a40x/clcd.c
index c472b9e8b37c..7fe4fd347c82 100644
--- a/arch/arm/mach-lh7a40x/clcd.c
+++ b/arch/arm/mach-lh7a40x/clcd.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/gfp.h>
13#include <linux/device.h> 14#include <linux/device.h>
14#include <linux/dma-mapping.h> 15#include <linux/dma-mapping.h>
15#include <linux/sysdev.h> 16#include <linux/sysdev.h>
diff --git a/arch/arm/mach-mmp/include/mach/uncompress.h b/arch/arm/mach-mmp/include/mach/uncompress.h
index a7dcc5307216..85bd8a2d84b5 100644
--- a/arch/arm/mach-mmp/include/mach/uncompress.h
+++ b/arch/arm/mach-mmp/include/mach/uncompress.h
@@ -14,7 +14,7 @@
14#define UART2_BASE (APB_PHYS_BASE + 0x17000) 14#define UART2_BASE (APB_PHYS_BASE + 0x17000)
15#define UART3_BASE (APB_PHYS_BASE + 0x18000) 15#define UART3_BASE (APB_PHYS_BASE + 0x18000)
16 16
17static volatile unsigned long *UART = (unsigned long *)UART2_BASE; 17static volatile unsigned long *UART;
18 18
19static inline void putc(char c) 19static inline void putc(char c)
20{ 20{
@@ -37,6 +37,9 @@ static inline void flush(void)
37 37
38static inline void arch_decomp_setup(void) 38static inline void arch_decomp_setup(void)
39{ 39{
40 /* default to UART2 */
41 UART = (unsigned long *)UART2_BASE;
42
40 if (machine_is_avengers_lite()) 43 if (machine_is_avengers_lite())
41 UART = (unsigned long *)UART3_BASE; 44 UART = (unsigned long *)UART3_BASE;
42} 45}
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index 3872af1cf2c3..170f68e46dd5 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -62,6 +62,15 @@ config MACH_MX31_3DS
62 Include support for MX31PDK (3DS) platform. This includes specific 62 Include support for MX31PDK (3DS) platform. This includes specific
63 configurations for the board and its peripherals. 63 configurations for the board and its peripherals.
64 64
65config MACH_MX31_3DS_MXC_NAND_USE_BBT
66 bool "Make the MXC NAND driver use the in flash Bad Block Table"
67 depends on MACH_MX31_3DS
68 depends on MTD_NAND_MXC
69 help
70 Enable this if you want that the MXC NAND driver uses the in flash
71 Bad Block Table to know what blocks are bad instead of scanning the
72 entire flash looking for bad block markers.
73
65config MACH_MX31MOBOARD 74config MACH_MX31MOBOARD
66 bool "Support mx31moboard platforms (EPFL Mobots group)" 75 bool "Support mx31moboard platforms (EPFL Mobots group)"
67 select ARCH_MX31 76 select ARCH_MX31
@@ -95,6 +104,7 @@ config MACH_PCM043
95config MACH_ARMADILLO5X0 104config MACH_ARMADILLO5X0
96 bool "Support Atmark Armadillo-500 Development Base Board" 105 bool "Support Atmark Armadillo-500 Development Base Board"
97 select ARCH_MX31 106 select ARCH_MX31
107 select MXC_ULPI if USB_ULPI
98 help 108 help
99 Include support for Atmark Armadillo-500 platform. This includes 109 Include support for Atmark Armadillo-500 platform. This includes
100 specific configurations for the board and its peripherals. 110 specific configurations for the board and its peripherals.
diff --git a/arch/arm/mach-mx3/clock-imx31.c b/arch/arm/mach-mx3/clock-imx31.c
index 80dba9966b5e..9a9eb6de6127 100644
--- a/arch/arm/mach-mx3/clock-imx31.c
+++ b/arch/arm/mach-mx3/clock-imx31.c
@@ -468,6 +468,7 @@ static struct clk ahb_clk = {
468 } 468 }
469 469
470DEFINE_CLOCK(perclk_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); 470DEFINE_CLOCK(perclk_clk, 0, NULL, 0, NULL, NULL, &ipg_clk);
471DEFINE_CLOCK(ckil_clk, 0, NULL, 0, clk_ckil_get_rate, NULL, NULL);
471 472
472DEFINE_CLOCK(sdhc1_clk, 0, MXC_CCM_CGR0, 0, NULL, NULL, &perclk_clk); 473DEFINE_CLOCK(sdhc1_clk, 0, MXC_CCM_CGR0, 0, NULL, NULL, &perclk_clk);
473DEFINE_CLOCK(sdhc2_clk, 1, MXC_CCM_CGR0, 2, NULL, NULL, &perclk_clk); 474DEFINE_CLOCK(sdhc2_clk, 1, MXC_CCM_CGR0, 2, NULL, NULL, &perclk_clk);
@@ -490,7 +491,7 @@ DEFINE_CLOCK(mpeg4_clk, 0, MXC_CCM_CGR1, 0, NULL, NULL, &ahb_clk);
490DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk); 491DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk);
491DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk); 492DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk);
492DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &serial_pll_clk); 493DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &serial_pll_clk);
493DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ipg_clk); 494DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ckil_clk);
494DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk); 495DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk);
495DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk); 496DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk);
496DEFINE_CLOCK(usb_clk2, 0, MXC_CCM_CGR1, 18, usb_get_rate, NULL, &ahb_clk); 497DEFINE_CLOCK(usb_clk2, 0, MXC_CCM_CGR1, 18, usb_get_rate, NULL, &ahb_clk);
@@ -514,7 +515,6 @@ DEFINE_CLOCK(usb_clk1, 0, NULL, 0, usb_get_rate, NULL, &usb_pll_clk)
514DEFINE_CLOCK(nfc_clk, 0, NULL, 0, nfc_get_rate, NULL, &ahb_clk); 515DEFINE_CLOCK(nfc_clk, 0, NULL, 0, nfc_get_rate, NULL, &ahb_clk);
515DEFINE_CLOCK(scc_clk, 0, NULL, 0, NULL, NULL, &ipg_clk); 516DEFINE_CLOCK(scc_clk, 0, NULL, 0, NULL, NULL, &ipg_clk);
516DEFINE_CLOCK(ipg_clk, 0, NULL, 0, ipg_get_rate, NULL, &ahb_clk); 517DEFINE_CLOCK(ipg_clk, 0, NULL, 0, ipg_get_rate, NULL, &ahb_clk);
517DEFINE_CLOCK(ckil_clk, 0, NULL, 0, clk_ckil_get_rate, NULL, NULL);
518 518
519#define _REGISTER_CLOCK(d, n, c) \ 519#define _REGISTER_CLOCK(d, n, c) \
520 { \ 520 { \
@@ -572,7 +572,6 @@ static struct clk_lookup lookups[] = {
572 _REGISTER_CLOCK(NULL, "iim", iim_clk) 572 _REGISTER_CLOCK(NULL, "iim", iim_clk)
573 _REGISTER_CLOCK(NULL, "mpeg4", mpeg4_clk) 573 _REGISTER_CLOCK(NULL, "mpeg4", mpeg4_clk)
574 _REGISTER_CLOCK(NULL, "mbx", mbx_clk) 574 _REGISTER_CLOCK(NULL, "mbx", mbx_clk)
575 _REGISTER_CLOCK("mxc_rtc", NULL, ckil_clk)
576}; 575};
577 576
578int __init mx31_clocks_init(unsigned long fref) 577int __init mx31_clocks_init(unsigned long fref)
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c
index 6adb586515ea..f8911154a9fa 100644
--- a/arch/arm/mach-mx3/devices.c
+++ b/arch/arm/mach-mx3/devices.c
@@ -575,11 +575,26 @@ struct platform_device imx_ssi_device1 = {
575 .resource = imx_ssi_resources1, 575 .resource = imx_ssi_resources1,
576}; 576};
577 577
578static int mx3_devices_init(void) 578static struct resource imx_wdt_resources[] = {
579 {
580 .flags = IORESOURCE_MEM,
581 },
582};
583
584struct platform_device imx_wdt_device0 = {
585 .name = "imx-wdt",
586 .id = 0,
587 .num_resources = ARRAY_SIZE(imx_wdt_resources),
588 .resource = imx_wdt_resources,
589};
590
591static int __init mx3_devices_init(void)
579{ 592{
580 if (cpu_is_mx31()) { 593 if (cpu_is_mx31()) {
581 mxc_nand_resources[0].start = MX31_NFC_BASE_ADDR; 594 mxc_nand_resources[0].start = MX31_NFC_BASE_ADDR;
582 mxc_nand_resources[0].end = MX31_NFC_BASE_ADDR + 0xfff; 595 mxc_nand_resources[0].end = MX31_NFC_BASE_ADDR + 0xfff;
596 imx_wdt_resources[0].start = MX31_WDOG_BASE_ADDR;
597 imx_wdt_resources[0].end = MX31_WDOG_BASE_ADDR + 0x3fff;
583 mxc_register_device(&mxc_rnga_device, NULL); 598 mxc_register_device(&mxc_rnga_device, NULL);
584 } 599 }
585 if (cpu_is_mx35()) { 600 if (cpu_is_mx35()) {
@@ -597,6 +612,8 @@ static int mx3_devices_init(void)
597 imx_ssi_resources0[1].end = MX35_INT_SSI1; 612 imx_ssi_resources0[1].end = MX35_INT_SSI1;
598 imx_ssi_resources1[1].start = MX35_INT_SSI2; 613 imx_ssi_resources1[1].start = MX35_INT_SSI2;
599 imx_ssi_resources1[1].end = MX35_INT_SSI2; 614 imx_ssi_resources1[1].end = MX35_INT_SSI2;
615 imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR;
616 imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff;
600 } 617 }
601 618
602 return 0; 619 return 0;
diff --git a/arch/arm/mach-mx3/devices.h b/arch/arm/mach-mx3/devices.h
index 42cf175eac6b..4f77eb501274 100644
--- a/arch/arm/mach-mx3/devices.h
+++ b/arch/arm/mach-mx3/devices.h
@@ -25,4 +25,5 @@ extern struct platform_device mxc_spi_device1;
25extern struct platform_device mxc_spi_device2; 25extern struct platform_device mxc_spi_device2;
26extern struct platform_device imx_ssi_device0; 26extern struct platform_device imx_ssi_device0;
27extern struct platform_device imx_ssi_device1; 27extern struct platform_device imx_ssi_device1;
28 28extern struct platform_device imx_ssi_device1;
29extern struct platform_device imx_wdt_device0;
diff --git a/arch/arm/mach-mx3/mach-armadillo5x0.c b/arch/arm/mach-mx3/mach-armadillo5x0.c
index 3d72b0b89705..5f72ec91af2d 100644
--- a/arch/arm/mach-mx3/mach-armadillo5x0.c
+++ b/arch/arm/mach-mx3/mach-armadillo5x0.c
@@ -36,6 +36,9 @@
36#include <linux/input.h> 36#include <linux/input.h>
37#include <linux/gpio_keys.h> 37#include <linux/gpio_keys.h>
38#include <linux/i2c.h> 38#include <linux/i2c.h>
39#include <linux/usb/otg.h>
40#include <linux/usb/ulpi.h>
41#include <linux/delay.h>
39 42
40#include <mach/hardware.h> 43#include <mach/hardware.h>
41#include <asm/mach-types.h> 44#include <asm/mach-types.h>
@@ -52,6 +55,8 @@
52#include <mach/ipu.h> 55#include <mach/ipu.h>
53#include <mach/mx3fb.h> 56#include <mach/mx3fb.h>
54#include <mach/mxc_nand.h> 57#include <mach/mxc_nand.h>
58#include <mach/mxc_ehci.h>
59#include <mach/ulpi.h>
55 60
56#include "devices.h" 61#include "devices.h"
57#include "crm_regs.h" 62#include "crm_regs.h"
@@ -103,8 +108,158 @@ static int armadillo5x0_pins[] = {
103 /* I2C2 */ 108 /* I2C2 */
104 MX31_PIN_CSPI2_MOSI__SCL, 109 MX31_PIN_CSPI2_MOSI__SCL,
105 MX31_PIN_CSPI2_MISO__SDA, 110 MX31_PIN_CSPI2_MISO__SDA,
111 /* OTG */
112 MX31_PIN_USBOTG_DATA0__USBOTG_DATA0,
113 MX31_PIN_USBOTG_DATA1__USBOTG_DATA1,
114 MX31_PIN_USBOTG_DATA2__USBOTG_DATA2,
115 MX31_PIN_USBOTG_DATA3__USBOTG_DATA3,
116 MX31_PIN_USBOTG_DATA4__USBOTG_DATA4,
117 MX31_PIN_USBOTG_DATA5__USBOTG_DATA5,
118 MX31_PIN_USBOTG_DATA6__USBOTG_DATA6,
119 MX31_PIN_USBOTG_DATA7__USBOTG_DATA7,
120 MX31_PIN_USBOTG_CLK__USBOTG_CLK,
121 MX31_PIN_USBOTG_DIR__USBOTG_DIR,
122 MX31_PIN_USBOTG_NXT__USBOTG_NXT,
123 MX31_PIN_USBOTG_STP__USBOTG_STP,
124 /* USB host 2 */
125 IOMUX_MODE(MX31_PIN_USBH2_CLK, IOMUX_CONFIG_FUNC),
126 IOMUX_MODE(MX31_PIN_USBH2_DIR, IOMUX_CONFIG_FUNC),
127 IOMUX_MODE(MX31_PIN_USBH2_NXT, IOMUX_CONFIG_FUNC),
128 IOMUX_MODE(MX31_PIN_USBH2_STP, IOMUX_CONFIG_FUNC),
129 IOMUX_MODE(MX31_PIN_USBH2_DATA0, IOMUX_CONFIG_FUNC),
130 IOMUX_MODE(MX31_PIN_USBH2_DATA1, IOMUX_CONFIG_FUNC),
131 IOMUX_MODE(MX31_PIN_STXD3, IOMUX_CONFIG_FUNC),
132 IOMUX_MODE(MX31_PIN_SRXD3, IOMUX_CONFIG_FUNC),
133 IOMUX_MODE(MX31_PIN_SCK3, IOMUX_CONFIG_FUNC),
134 IOMUX_MODE(MX31_PIN_SFS3, IOMUX_CONFIG_FUNC),
135 IOMUX_MODE(MX31_PIN_STXD6, IOMUX_CONFIG_FUNC),
136 IOMUX_MODE(MX31_PIN_SRXD6, IOMUX_CONFIG_FUNC),
106}; 137};
107 138
139/* USB */
140#if defined(CONFIG_USB_ULPI)
141
142#define OTG_RESET IOMUX_TO_GPIO(MX31_PIN_STXD4)
143#define USBH2_RESET IOMUX_TO_GPIO(MX31_PIN_SCK6)
144#define USBH2_CS IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)
145
146#define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
147 PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
148
149static int usbotg_init(struct platform_device *pdev)
150{
151 int err;
152
153 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA0, USB_PAD_CFG);
154 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA1, USB_PAD_CFG);
155 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA2, USB_PAD_CFG);
156 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA3, USB_PAD_CFG);
157 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA4, USB_PAD_CFG);
158 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA5, USB_PAD_CFG);
159 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA6, USB_PAD_CFG);
160 mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA7, USB_PAD_CFG);
161 mxc_iomux_set_pad(MX31_PIN_USBOTG_CLK, USB_PAD_CFG);
162 mxc_iomux_set_pad(MX31_PIN_USBOTG_DIR, USB_PAD_CFG);
163 mxc_iomux_set_pad(MX31_PIN_USBOTG_NXT, USB_PAD_CFG);
164 mxc_iomux_set_pad(MX31_PIN_USBOTG_STP, USB_PAD_CFG);
165
166 /* Chip already enabled by hardware */
167 /* OTG phy reset*/
168 err = gpio_request(OTG_RESET, "USB-OTG-RESET");
169 if (err) {
170 pr_err("Failed to request the usb otg reset gpio\n");
171 return err;
172 }
173
174 err = gpio_direction_output(OTG_RESET, 1/*HIGH*/);
175 if (err) {
176 pr_err("Failed to reset the usb otg phy\n");
177 goto otg_free_reset;
178 }
179
180 gpio_set_value(OTG_RESET, 0/*LOW*/);
181 mdelay(5);
182 gpio_set_value(OTG_RESET, 1/*HIGH*/);
183
184 return 0;
185
186otg_free_reset:
187 gpio_free(OTG_RESET);
188 return err;
189}
190
191static int usbh2_init(struct platform_device *pdev)
192{
193 int err;
194
195 mxc_iomux_set_pad(MX31_PIN_USBH2_CLK, USB_PAD_CFG);
196 mxc_iomux_set_pad(MX31_PIN_USBH2_DIR, USB_PAD_CFG);
197 mxc_iomux_set_pad(MX31_PIN_USBH2_NXT, USB_PAD_CFG);
198 mxc_iomux_set_pad(MX31_PIN_USBH2_STP, USB_PAD_CFG);
199 mxc_iomux_set_pad(MX31_PIN_USBH2_DATA0, USB_PAD_CFG);
200 mxc_iomux_set_pad(MX31_PIN_USBH2_DATA1, USB_PAD_CFG);
201 mxc_iomux_set_pad(MX31_PIN_SRXD6, USB_PAD_CFG);
202 mxc_iomux_set_pad(MX31_PIN_STXD6, USB_PAD_CFG);
203 mxc_iomux_set_pad(MX31_PIN_SFS3, USB_PAD_CFG);
204 mxc_iomux_set_pad(MX31_PIN_SCK3, USB_PAD_CFG);
205 mxc_iomux_set_pad(MX31_PIN_SRXD3, USB_PAD_CFG);
206 mxc_iomux_set_pad(MX31_PIN_STXD3, USB_PAD_CFG);
207
208 mxc_iomux_set_gpr(MUX_PGP_UH2, true);
209
210
211 /* Enable the chip */
212 err = gpio_request(USBH2_CS, "USB-H2-CS");
213 if (err) {
214 pr_err("Failed to request the usb host 2 CS gpio\n");
215 return err;
216 }
217
218 err = gpio_direction_output(USBH2_CS, 0/*Enabled*/);
219 if (err) {
220 pr_err("Failed to drive the usb host 2 CS gpio\n");
221 goto h2_free_cs;
222 }
223
224 /* H2 phy reset*/
225 err = gpio_request(USBH2_RESET, "USB-H2-RESET");
226 if (err) {
227 pr_err("Failed to request the usb host 2 reset gpio\n");
228 goto h2_free_cs;
229 }
230
231 err = gpio_direction_output(USBH2_RESET, 1/*HIGH*/);
232 if (err) {
233 pr_err("Failed to reset the usb host 2 phy\n");
234 goto h2_free_reset;
235 }
236
237 gpio_set_value(USBH2_RESET, 0/*LOW*/);
238 mdelay(5);
239 gpio_set_value(USBH2_RESET, 1/*HIGH*/);
240
241 return 0;
242
243h2_free_reset:
244 gpio_free(USBH2_RESET);
245h2_free_cs:
246 gpio_free(USBH2_CS);
247 return err;
248}
249
250static struct mxc_usbh_platform_data usbotg_pdata = {
251 .init = usbotg_init,
252 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
253 .flags = MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_INTERFACE_DIFF_UNI,
254};
255
256static struct mxc_usbh_platform_data usbh2_pdata = {
257 .init = usbh2_init,
258 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
259 .flags = MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_INTERFACE_DIFF_UNI,
260};
261#endif /* CONFIG_USB_ULPI */
262
108/* RTC over I2C*/ 263/* RTC over I2C*/
109#define ARMADILLO5X0_RTC_GPIO IOMUX_TO_GPIO(MX31_PIN_SRXD4) 264#define ARMADILLO5X0_RTC_GPIO IOMUX_TO_GPIO(MX31_PIN_SRXD4)
110 265
@@ -393,6 +548,17 @@ static void __init armadillo5x0_init(void)
393 if (armadillo5x0_i2c_rtc.irq == 0) 548 if (armadillo5x0_i2c_rtc.irq == 0)
394 pr_warning("armadillo5x0_init: failed to get RTC IRQ\n"); 549 pr_warning("armadillo5x0_init: failed to get RTC IRQ\n");
395 i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1); 550 i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1);
551
552 /* USB */
553#if defined(CONFIG_USB_ULPI)
554 usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
555 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
556 usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
557 USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
558
559 mxc_register_device(&mxc_otg_host, &usbotg_pdata);
560 mxc_register_device(&mxc_usbh2, &usbh2_pdata);
561#endif
396} 562}
397 563
398static void __init armadillo5x0_timer_init(void) 564static void __init armadillo5x0_timer_init(void)
diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c
index b88c18ad7698..f54af1e29ca4 100644
--- a/arch/arm/mach-mx3/mach-mx31_3ds.c
+++ b/arch/arm/mach-mx3/mach-mx31_3ds.c
@@ -23,6 +23,9 @@
23#include <linux/gpio.h> 23#include <linux/gpio.h>
24#include <linux/smsc911x.h> 24#include <linux/smsc911x.h>
25#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/mfd/mc13783.h>
27#include <linux/spi/spi.h>
28#include <linux/regulator/machine.h>
26 29
27#include <mach/hardware.h> 30#include <mach/hardware.h>
28#include <asm/mach-types.h> 31#include <asm/mach-types.h>
@@ -31,26 +34,96 @@
31#include <asm/memory.h> 34#include <asm/memory.h>
32#include <asm/mach/map.h> 35#include <asm/mach/map.h>
33#include <mach/common.h> 36#include <mach/common.h>
34#include <mach/board-mx31pdk.h> 37#include <mach/board-mx31_3ds.h>
35#include <mach/imx-uart.h> 38#include <mach/imx-uart.h>
36#include <mach/iomux-mx3.h> 39#include <mach/iomux-mx3.h>
40#include <mach/mxc_nand.h>
41#include <mach/spi.h>
37#include "devices.h" 42#include "devices.h"
38 43
39/*! 44/*!
40 * @file mx31pdk.c 45 * @file mx31_3ds.c
41 * 46 *
42 * @brief This file contains the board-specific initialization routines. 47 * @brief This file contains the board-specific initialization routines.
43 * 48 *
44 * @ingroup System 49 * @ingroup System
45 */ 50 */
46 51
47static int mx31pdk_pins[] = { 52static int mx31_3ds_pins[] = {
48 /* UART1 */ 53 /* UART1 */
49 MX31_PIN_CTS1__CTS1, 54 MX31_PIN_CTS1__CTS1,
50 MX31_PIN_RTS1__RTS1, 55 MX31_PIN_RTS1__RTS1,
51 MX31_PIN_TXD1__TXD1, 56 MX31_PIN_TXD1__TXD1,
52 MX31_PIN_RXD1__RXD1, 57 MX31_PIN_RXD1__RXD1,
53 IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), 58 IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO),
59 /* SPI 1 */
60 MX31_PIN_CSPI2_SCLK__SCLK,
61 MX31_PIN_CSPI2_MOSI__MOSI,
62 MX31_PIN_CSPI2_MISO__MISO,
63 MX31_PIN_CSPI2_SPI_RDY__SPI_RDY,
64 MX31_PIN_CSPI2_SS0__SS0,
65 MX31_PIN_CSPI2_SS2__SS2, /*CS for MC13783 */
66 /* MC13783 IRQ */
67 IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO),
68};
69
70/* Regulators */
71static struct regulator_init_data pwgtx_init = {
72 .constraints = {
73 .boot_on = 1,
74 .always_on = 1,
75 },
76};
77
78static struct mc13783_regulator_init_data mx31_3ds_regulators[] = {
79 {
80 .id = MC13783_REGU_PWGT1SPI, /* Power Gate for ARM core. */
81 .init_data = &pwgtx_init,
82 }, {
83 .id = MC13783_REGU_PWGT2SPI, /* Power Gate for L2 Cache. */
84 .init_data = &pwgtx_init,
85 },
86};
87
88/* MC13783 */
89static struct mc13783_platform_data mc13783_pdata __initdata = {
90 .regulators = mx31_3ds_regulators,
91 .num_regulators = ARRAY_SIZE(mx31_3ds_regulators),
92 .flags = MC13783_USE_REGULATOR,
93};
94
95/* SPI */
96static int spi1_internal_chipselect[] = {
97 MXC_SPI_CS(0),
98 MXC_SPI_CS(2),
99};
100
101static struct spi_imx_master spi1_pdata = {
102 .chipselect = spi1_internal_chipselect,
103 .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
104};
105
106static struct spi_board_info mx31_3ds_spi_devs[] __initdata = {
107 {
108 .modalias = "mc13783",
109 .max_speed_hz = 1000000,
110 .bus_num = 1,
111 .chip_select = 1, /* SS2 */
112 .platform_data = &mc13783_pdata,
113 .irq = IOMUX_TO_IRQ(MX31_PIN_GPIO1_3),
114 .mode = SPI_CS_HIGH,
115 },
116};
117
118/*
119 * NAND Flash
120 */
121static struct mxc_nand_platform_data imx31_3ds_nand_flash_pdata = {
122 .width = 1,
123 .hw_ecc = 1,
124#ifdef MACH_MX31_3DS_MXC_NAND_USE_BBT
125 .flash_bbt = 1,
126#endif
54}; 127};
55 128
56static struct imxuart_platform_data uart_pdata = { 129static struct imxuart_platform_data uart_pdata = {
@@ -95,7 +168,7 @@ static struct platform_device smsc911x_device = {
95 * LEDs, switches, interrupts for Ethernet. 168 * LEDs, switches, interrupts for Ethernet.
96 */ 169 */
97 170
98static void mx31pdk_expio_irq_handler(uint32_t irq, struct irq_desc *desc) 171static void mx31_3ds_expio_irq_handler(uint32_t irq, struct irq_desc *desc)
99{ 172{
100 uint32_t imr_val; 173 uint32_t imr_val;
101 uint32_t int_valid; 174 uint32_t int_valid;
@@ -163,7 +236,7 @@ static struct irq_chip expio_irq_chip = {
163 .unmask = expio_unmask_irq, 236 .unmask = expio_unmask_irq,
164}; 237};
165 238
166static int __init mx31pdk_init_expio(void) 239static int __init mx31_3ds_init_expio(void)
167{ 240{
168 int i; 241 int i;
169 int ret; 242 int ret;
@@ -176,7 +249,7 @@ static int __init mx31pdk_init_expio(void)
176 return -ENODEV; 249 return -ENODEV;
177 } 250 }
178 251
179 pr_info("i.MX31PDK Debug board detected, rev = 0x%04X\n", 252 pr_info("i.MX31 3DS Debug board detected, rev = 0x%04X\n",
180 __raw_readw(CPLD_CODE_VER_REG)); 253 __raw_readw(CPLD_CODE_VER_REG));
181 254
182 /* 255 /*
@@ -201,7 +274,7 @@ static int __init mx31pdk_init_expio(void)
201 set_irq_flags(i, IRQF_VALID); 274 set_irq_flags(i, IRQF_VALID);
202 } 275 }
203 set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_LOW); 276 set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_LOW);
204 set_irq_chained_handler(EXPIO_PARENT_INT, mx31pdk_expio_irq_handler); 277 set_irq_chained_handler(EXPIO_PARENT_INT, mx31_3ds_expio_irq_handler);
205 278
206 return 0; 279 return 0;
207} 280}
@@ -209,7 +282,7 @@ static int __init mx31pdk_init_expio(void)
209/* 282/*
210 * This structure defines the MX31 memory map. 283 * This structure defines the MX31 memory map.
211 */ 284 */
212static struct map_desc mx31pdk_io_desc[] __initdata = { 285static struct map_desc mx31_3ds_io_desc[] __initdata = {
213 { 286 {
214 .virtual = MX31_CS5_BASE_ADDR_VIRT, 287 .virtual = MX31_CS5_BASE_ADDR_VIRT,
215 .pfn = __phys_to_pfn(MX31_CS5_BASE_ADDR), 288 .pfn = __phys_to_pfn(MX31_CS5_BASE_ADDR),
@@ -221,10 +294,10 @@ static struct map_desc mx31pdk_io_desc[] __initdata = {
221/* 294/*
222 * Set up static virtual mappings. 295 * Set up static virtual mappings.
223 */ 296 */
224static void __init mx31pdk_map_io(void) 297static void __init mx31_3ds_map_io(void)
225{ 298{
226 mx31_map_io(); 299 mx31_map_io();
227 iotable_init(mx31pdk_io_desc, ARRAY_SIZE(mx31pdk_io_desc)); 300 iotable_init(mx31_3ds_io_desc, ARRAY_SIZE(mx31_3ds_io_desc));
228} 301}
229 302
230/*! 303/*!
@@ -232,35 +305,40 @@ static void __init mx31pdk_map_io(void)
232 */ 305 */
233static void __init mxc_board_init(void) 306static void __init mxc_board_init(void)
234{ 307{
235 mxc_iomux_setup_multiple_pins(mx31pdk_pins, ARRAY_SIZE(mx31pdk_pins), 308 mxc_iomux_setup_multiple_pins(mx31_3ds_pins, ARRAY_SIZE(mx31_3ds_pins),
236 "mx31pdk"); 309 "mx31_3ds");
237 310
238 mxc_register_device(&mxc_uart_device0, &uart_pdata); 311 mxc_register_device(&mxc_uart_device0, &uart_pdata);
312 mxc_register_device(&mxc_nand_device, &imx31_3ds_nand_flash_pdata);
313
314 mxc_register_device(&mxc_spi_device1, &spi1_pdata);
315 spi_register_board_info(mx31_3ds_spi_devs,
316 ARRAY_SIZE(mx31_3ds_spi_devs));
239 317
240 if (!mx31pdk_init_expio()) 318 if (!mx31_3ds_init_expio())
241 platform_device_register(&smsc911x_device); 319 platform_device_register(&smsc911x_device);
242} 320}
243 321
244static void __init mx31pdk_timer_init(void) 322static void __init mx31_3ds_timer_init(void)
245{ 323{
246 mx31_clocks_init(26000000); 324 mx31_clocks_init(26000000);
247} 325}
248 326
249static struct sys_timer mx31pdk_timer = { 327static struct sys_timer mx31_3ds_timer = {
250 .init = mx31pdk_timer_init, 328 .init = mx31_3ds_timer_init,
251}; 329};
252 330
253/* 331/*
254 * The following uses standard kernel macros defined in arch.h in order to 332 * The following uses standard kernel macros defined in arch.h in order to
255 * initialize __mach_desc_MX31PDK data structure. 333 * initialize __mach_desc_MX31_3DS data structure.
256 */ 334 */
257MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") 335MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
258 /* Maintainer: Freescale Semiconductor, Inc. */ 336 /* Maintainer: Freescale Semiconductor, Inc. */
259 .phys_io = MX31_AIPS1_BASE_ADDR, 337 .phys_io = MX31_AIPS1_BASE_ADDR,
260 .io_pg_offst = (MX31_AIPS1_BASE_ADDR_VIRT >> 18) & 0xfffc, 338 .io_pg_offst = (MX31_AIPS1_BASE_ADDR_VIRT >> 18) & 0xfffc,
261 .boot_params = MX3x_PHYS_OFFSET + 0x100, 339 .boot_params = MX3x_PHYS_OFFSET + 0x100,
262 .map_io = mx31pdk_map_io, 340 .map_io = mx31_3ds_map_io,
263 .init_irq = mx31_init_irq, 341 .init_irq = mx31_init_irq,
264 .init_machine = mxc_board_init, 342 .init_machine = mxc_board_init,
265 .timer = &mx31pdk_timer, 343 .timer = &mx31_3ds_timer,
266MACHINE_END 344MACHINE_END
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c
index a7dc5191bf5e..fccb9207b78d 100644
--- a/arch/arm/mach-mx3/mach-mx31moboard.c
+++ b/arch/arm/mach-mx3/mach-mx31moboard.c
@@ -19,6 +19,7 @@
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/dma-mapping.h> 20#include <linux/dma-mapping.h>
21#include <linux/fsl_devices.h> 21#include <linux/fsl_devices.h>
22#include <linux/gfp.h>
22#include <linux/gpio.h> 23#include <linux/gpio.h>
23#include <linux/init.h> 24#include <linux/init.h>
24#include <linux/interrupt.h> 25#include <linux/interrupt.h>
diff --git a/arch/arm/mach-mx3/mach-pcm037.c b/arch/arm/mach-mx3/mach-pcm037.c
index 11f531559169..2df1ec55a97e 100644
--- a/arch/arm/mach-mx3/mach-pcm037.c
+++ b/arch/arm/mach-mx3/mach-pcm037.c
@@ -35,7 +35,7 @@
35#include <linux/can/platform/sja1000.h> 35#include <linux/can/platform/sja1000.h>
36#include <linux/usb/otg.h> 36#include <linux/usb/otg.h>
37#include <linux/usb/ulpi.h> 37#include <linux/usb/ulpi.h>
38#include <linux/fsl_devices.h> 38#include <linux/gfp.h>
39 39
40#include <media/soc_camera.h> 40#include <media/soc_camera.h>
41 41
diff --git a/arch/arm/mach-mx3/mx31lite-db.c b/arch/arm/mach-mx3/mx31lite-db.c
index ccd874225c3b..093c595ca581 100644
--- a/arch/arm/mach-mx3/mx31lite-db.c
+++ b/arch/arm/mach-mx3/mx31lite-db.c
@@ -28,7 +28,6 @@
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/init.h> 29#include <linux/init.h>
30#include <linux/gpio.h> 30#include <linux/gpio.h>
31#include <linux/platform_device.h>
32#include <linux/leds.h> 31#include <linux/leds.h>
33#include <linux/platform_device.h> 32#include <linux/platform_device.h>
34 33
@@ -206,5 +205,6 @@ void __init mx31lite_db_init(void)
206 mxc_register_device(&mxcsdhc_device0, &mmc_pdata); 205 mxc_register_device(&mxcsdhc_device0, &mmc_pdata);
207 mxc_register_device(&mxc_spi_device0, &spi0_pdata); 206 mxc_register_device(&mxc_spi_device0, &spi0_pdata);
208 platform_device_register(&litekit_led_device); 207 platform_device_register(&litekit_led_device);
208 mxc_register_device(&imx_wdt_device0, NULL);
209} 209}
210 210
diff --git a/arch/arm/mach-mx3/mx31moboard-devboard.c b/arch/arm/mach-mx3/mx31moboard-devboard.c
index 9fbad2eb3a49..11b906ce7eae 100644
--- a/arch/arm/mach-mx3/mx31moboard-devboard.c
+++ b/arch/arm/mach-mx3/mx31moboard-devboard.c
@@ -20,6 +20,7 @@
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/platform_device.h> 22#include <linux/platform_device.h>
23#include <linux/slab.h>
23#include <linux/types.h> 24#include <linux/types.h>
24 25
25#include <linux/usb/otg.h> 26#include <linux/usb/otg.h>
diff --git a/arch/arm/mach-mx3/mx31moboard-marxbot.c b/arch/arm/mach-mx3/mx31moboard-marxbot.c
index 3958515d75bf..ffb105e14d88 100644
--- a/arch/arm/mach-mx3/mx31moboard-marxbot.c
+++ b/arch/arm/mach-mx3/mx31moboard-marxbot.c
@@ -22,6 +22,7 @@
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/i2c.h> 23#include <linux/i2c.h>
24#include <linux/spi/spi.h> 24#include <linux/spi/spi.h>
25#include <linux/slab.h>
25#include <linux/platform_device.h> 26#include <linux/platform_device.h>
26#include <linux/types.h> 27#include <linux/types.h>
27 28
diff --git a/arch/arm/mach-mx5/clock-mx51.c b/arch/arm/mach-mx5/clock-mx51.c
index be90c03101cd..8f85f73b83a8 100644
--- a/arch/arm/mach-mx5/clock-mx51.c
+++ b/arch/arm/mach-mx5/clock-mx51.c
@@ -757,7 +757,7 @@ DEFINE_CLOCK(uart3_ipg_clk, 2, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG7_OFFSET,
757 757
758/* GPT */ 758/* GPT */
759DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, 759DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET,
760 NULL, NULL, &ipg_perclk, NULL); 760 NULL, NULL, &ipg_clk, NULL);
761DEFINE_CLOCK(gpt_ipg_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG10_OFFSET, 761DEFINE_CLOCK(gpt_ipg_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG10_OFFSET,
762 NULL, NULL, &ipg_clk, NULL); 762 NULL, NULL, &ipg_clk, NULL);
763 763
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c
index 41c769f08c4d..2d37785e3857 100644
--- a/arch/arm/mach-mx5/cpu.c
+++ b/arch/arm/mach-mx5/cpu.c
@@ -14,9 +14,62 @@
14#include <linux/types.h> 14#include <linux/types.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/module.h>
17#include <mach/hardware.h> 18#include <mach/hardware.h>
18#include <asm/io.h> 19#include <asm/io.h>
19 20
21static int cpu_silicon_rev = -1;
22
23#define SI_REV 0x48
24
25static void query_silicon_parameter(void)
26{
27 void __iomem *rom = ioremap(MX51_IROM_BASE_ADDR, MX51_IROM_SIZE);
28 u32 rev;
29
30 if (!rom) {
31 cpu_silicon_rev = -EINVAL;
32 return;
33 }
34
35 rev = readl(rom + SI_REV);
36 switch (rev) {
37 case 0x1:
38 cpu_silicon_rev = MX51_CHIP_REV_1_0;
39 break;
40 case 0x2:
41 cpu_silicon_rev = MX51_CHIP_REV_1_1;
42 break;
43 case 0x10:
44 cpu_silicon_rev = MX51_CHIP_REV_2_0;
45 break;
46 case 0x20:
47 cpu_silicon_rev = MX51_CHIP_REV_3_0;
48 break;
49 default:
50 cpu_silicon_rev = 0;
51 }
52
53 iounmap(rom);
54}
55
56/*
57 * Returns:
58 * the silicon revision of the cpu
59 * -EINVAL - not a mx51
60 */
61int mx51_revision(void)
62{
63 if (!cpu_is_mx51())
64 return -EINVAL;
65
66 if (cpu_silicon_rev == -1)
67 query_silicon_parameter();
68
69 return cpu_silicon_rev;
70}
71EXPORT_SYMBOL(mx51_revision);
72
20static int __init post_cpu_init(void) 73static int __init post_cpu_init(void)
21{ 74{
22 unsigned int reg; 75 unsigned int reg;
diff --git a/arch/arm/mach-mx5/mm.c b/arch/arm/mach-mx5/mm.c
index c21e18be7af8..b7677ef80cc4 100644
--- a/arch/arm/mach-mx5/mm.c
+++ b/arch/arm/mach-mx5/mm.c
@@ -35,11 +35,6 @@ static struct map_desc mxc_io_desc[] __initdata = {
35 .length = MX51_DEBUG_SIZE, 35 .length = MX51_DEBUG_SIZE,
36 .type = MT_DEVICE 36 .type = MT_DEVICE
37 }, { 37 }, {
38 .virtual = MX51_TZIC_BASE_ADDR_VIRT,
39 .pfn = __phys_to_pfn(MX51_TZIC_BASE_ADDR),
40 .length = MX51_TZIC_SIZE,
41 .type = MT_DEVICE
42 }, {
43 .virtual = MX51_AIPS1_BASE_ADDR_VIRT, 38 .virtual = MX51_AIPS1_BASE_ADDR_VIRT,
44 .pfn = __phys_to_pfn(MX51_AIPS1_BASE_ADDR), 39 .pfn = __phys_to_pfn(MX51_AIPS1_BASE_ADDR),
45 .length = MX51_AIPS1_SIZE, 40 .length = MX51_AIPS1_SIZE,
@@ -54,11 +49,6 @@ static struct map_desc mxc_io_desc[] __initdata = {
54 .pfn = __phys_to_pfn(MX51_AIPS2_BASE_ADDR), 49 .pfn = __phys_to_pfn(MX51_AIPS2_BASE_ADDR),
55 .length = MX51_AIPS2_SIZE, 50 .length = MX51_AIPS2_SIZE,
56 .type = MT_DEVICE 51 .type = MT_DEVICE
57 }, {
58 .virtual = MX51_NFC_AXI_BASE_ADDR_VIRT,
59 .pfn = __phys_to_pfn(MX51_NFC_AXI_BASE_ADDR),
60 .length = MX51_NFC_AXI_SIZE,
61 .type = MT_DEVICE
62 }, 52 },
63}; 53};
64 54
@@ -69,14 +59,6 @@ static struct map_desc mxc_io_desc[] __initdata = {
69 */ 59 */
70void __init mx51_map_io(void) 60void __init mx51_map_io(void)
71{ 61{
72 u32 tzic_addr;
73
74 if (mx51_revision() < MX51_CHIP_REV_2_0)
75 tzic_addr = 0x8FFFC000;
76 else
77 tzic_addr = 0xE0003000;
78 mxc_io_desc[2].pfn = __phys_to_pfn(tzic_addr);
79
80 mxc_set_cpu_type(MXC_CPU_MX51); 62 mxc_set_cpu_type(MXC_CPU_MX51);
81 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); 63 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
82 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR)); 64 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG_BASE_ADDR));
@@ -85,5 +67,17 @@ void __init mx51_map_io(void)
85 67
86void __init mx51_init_irq(void) 68void __init mx51_init_irq(void)
87{ 69{
88 tzic_init_irq(MX51_IO_ADDRESS(MX51_TZIC_BASE_ADDR)); 70 unsigned long tzic_addr;
71 void __iomem *tzic_virt;
72
73 if (mx51_revision() < MX51_CHIP_REV_2_0)
74 tzic_addr = MX51_TZIC_BASE_ADDR_TO1;
75 else
76 tzic_addr = MX51_TZIC_BASE_ADDR;
77
78 tzic_virt = ioremap(tzic_addr, SZ_16K);
79 if (!tzic_virt)
80 panic("unable to map TZIC interrupt controller\n");
81
82 tzic_init_irq(tzic_virt);
89} 83}
diff --git a/arch/arm/mach-netx/fb.c b/arch/arm/mach-netx/fb.c
index 1d844e228ea9..5b84bcd30271 100644
--- a/arch/arm/mach-netx/fb.c
+++ b/arch/arm/mach-netx/fb.c
@@ -23,6 +23,7 @@
23#include <linux/amba/bus.h> 23#include <linux/amba/bus.h>
24#include <linux/amba/clcd.h> 24#include <linux/amba/clcd.h>
25#include <linux/err.h> 25#include <linux/err.h>
26#include <linux/gfp.h>
26 27
27#include <asm/irq.h> 28#include <asm/irq.h>
28 29
diff --git a/arch/arm/mach-netx/xc.c b/arch/arm/mach-netx/xc.c
index 181a78ba8165..f009b54e8d20 100644
--- a/arch/arm/mach-netx/xc.c
+++ b/arch/arm/mach-netx/xc.c
@@ -21,6 +21,7 @@
21#include <linux/device.h> 21#include <linux/device.h>
22#include <linux/firmware.h> 22#include <linux/firmware.h>
23#include <linux/mutex.h> 23#include <linux/mutex.h>
24#include <linux/slab.h>
24#include <linux/io.h> 25#include <linux/io.h>
25 26
26#include <mach/hardware.h> 27#include <mach/hardware.h>
diff --git a/arch/arm/mach-nomadik/gpio.c b/arch/arm/mach-nomadik/gpio.c
index 9a09b2791e03..66b1c91ccc74 100644
--- a/arch/arm/mach-nomadik/gpio.c
+++ b/arch/arm/mach-nomadik/gpio.c
@@ -19,6 +19,7 @@
19#include <linux/spinlock.h> 19#include <linux/spinlock.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/irq.h> 21#include <linux/irq.h>
22#include <linux/slab.h>
22 23
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <mach/gpio.h> 25#include <mach/gpio.h>
diff --git a/arch/arm/mach-ns9xxx/plat-serial8250.c b/arch/arm/mach-ns9xxx/plat-serial8250.c
index 795b15e8982a..463e92465fda 100644
--- a/arch/arm/mach-ns9xxx/plat-serial8250.c
+++ b/arch/arm/mach-ns9xxx/plat-serial8250.c
@@ -10,6 +10,7 @@
10 */ 10 */
11#include <linux/platform_device.h> 11#include <linux/platform_device.h>
12#include <linux/serial_8250.h> 12#include <linux/serial_8250.h>
13#include <linux/slab.h>
13 14
14#include <mach/regs-board-a9m9750dev.h> 15#include <mach/regs-board-a9m9750dev.h>
15#include <mach/board.h> 16#include <mach/board.h>
diff --git a/arch/arm/mach-ns9xxx/processor-ns9360.c b/arch/arm/mach-ns9xxx/processor-ns9360.c
index abee8338735d..aed1999d24fc 100644
--- a/arch/arm/mach-ns9xxx/processor-ns9360.c
+++ b/arch/arm/mach-ns9xxx/processor-ns9360.c
@@ -10,7 +10,6 @@
10 */ 10 */
11#include <linux/io.h> 11#include <linux/io.h>
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/slab.h>
14 13
15#include <asm/page.h> 14#include <asm/page.h>
16#include <asm/mach/map.h> 15#include <asm/mach/map.h>
diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c
index f9a5cf750b59..e9bdff192f82 100644
--- a/arch/arm/mach-omap1/mcbsp.c
+++ b/arch/arm/mach-omap1/mcbsp.c
@@ -16,6 +16,7 @@
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/slab.h>
19 20
20#include <mach/irqs.h> 21#include <mach/irqs.h>
21#include <plat/dma.h> 22#include <plat/dma.h>
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 2069fb33baaa..4b9fc57770db 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -22,6 +22,9 @@ obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
22# SMP support ONLY available for OMAP4 22# SMP support ONLY available for OMAP4
23obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o 23obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o
24obj-$(CONFIG_LOCAL_TIMERS) += timer-mpu.o 24obj-$(CONFIG_LOCAL_TIMERS) += timer-mpu.o
25obj-$(CONFIG_ARCH_OMAP4) += omap44xx-smc.o
26
27AFLAGS_omap44xx-smc.o :=-Wa,-march=armv7-a
25 28
26# Functions loaded to SRAM 29# Functions loaded to SRAM
27obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o 30obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index a101029ceb6f..5822bcf7b15f 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -648,7 +648,7 @@ static void enable_board_wakeup_source(void)
648 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); 648 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
649} 649}
650 650
651static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 651static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
652 652
653 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 653 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
654 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 654 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
index 4386d2b4a785..a0a2a113465c 100644
--- a/arch/arm/mach-omap2/board-3630sdp.c
+++ b/arch/arm/mach-omap2/board-3630sdp.c
@@ -54,7 +54,7 @@ static void enable_board_wakeup_source(void)
54 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); 54 OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
55} 55}
56 56
57static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 57static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
58 58
59 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 59 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
60 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 60 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 180ac112e527..b88f28c5814b 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -50,33 +50,9 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
50}; 50};
51 51
52#ifdef CONFIG_CACHE_L2X0 52#ifdef CONFIG_CACHE_L2X0
53noinline void omap_smc1(u32 fn, u32 arg)
54{
55 register u32 r12 asm("r12") = fn;
56 register u32 r0 asm("r0") = arg;
57
58 /* This is common routine cache secure monitor API used to
59 * modify the PL310 secure registers.
60 * r0 contains the value to be modified and "r12" contains
61 * the monitor API number. It uses few CPU registers
62 * internally and hence they need be backed up including
63 * link register "lr".
64 * Explicitly save r11 and r12 the compiler generated code
65 * won't save it.
66 */
67 asm volatile(
68 "stmfd r13!, {r11,r12}\n"
69 "dsb\n"
70 "smc\n"
71 "ldmfd r13!, {r11,r12}\n"
72 : "+r" (r0), "+r" (r12)
73 :
74 : "r4", "r5", "r10", "lr", "cc");
75}
76EXPORT_SYMBOL(omap_smc1);
77
78static int __init omap_l2_cache_init(void) 53static int __init omap_l2_cache_init(void)
79{ 54{
55 extern void omap_smc1(u32 fn, u32 arg);
80 void __iomem *l2cache_base; 56 void __iomem *l2cache_base;
81 57
82 /* To avoid code running on other OMAPs in 58 /* To avoid code running on other OMAPs in
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 70c18614773c..6ae880585d54 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -273,7 +273,7 @@ static void __init am3517_evm_init_irq(void)
273 omap_gpio_init(); 273 omap_gpio_init();
274} 274}
275 275
276static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { 276static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
277 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 277 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
278 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 278 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
279 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, 279 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index afa77caaff4d..2de4f79f03a0 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -612,7 +612,7 @@ static struct omap2_hsmmc_info mmc[] = {
612 {} /* Terminator */ 612 {} /* Terminator */
613}; 613};
614 614
615static struct ehci_hcd_omap_platform_data ehci_pdata = { 615static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
616 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 616 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
617 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 617 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
618 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, 618 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index 371019054b49..5bfc13b3176c 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -636,7 +636,7 @@ static struct omap_musb_board_data musb_board_data = {
636 .power = 100, 636 .power = 100,
637}; 637};
638 638
639static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 639static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
640 640
641 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 641 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
642 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 642 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 9958987a3d0a..3c7789d45051 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -16,7 +16,6 @@
16#include <linux/clk.h> 16#include <linux/clk.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/gpio.h> 18#include <linux/gpio.h>
19#include <linux/leds.h>
20#include <linux/interrupt.h> 19#include <linux/interrupt.h>
21 20
22#include <linux/regulator/machine.h> 21#include <linux/regulator/machine.h>
@@ -39,8 +38,8 @@
39#define IGEP2_SMSC911X_CS 5 38#define IGEP2_SMSC911X_CS 5
40#define IGEP2_SMSC911X_GPIO 176 39#define IGEP2_SMSC911X_GPIO 176
41#define IGEP2_GPIO_USBH_NRESET 24 40#define IGEP2_GPIO_USBH_NRESET 24
42#define IGEP2_GPIO_LED0_RED 26 41#define IGEP2_GPIO_LED0_GREEN 26
43#define IGEP2_GPIO_LED0_GREEN 27 42#define IGEP2_GPIO_LED0_RED 27
44#define IGEP2_GPIO_LED1_RED 28 43#define IGEP2_GPIO_LED1_RED 28
45#define IGEP2_GPIO_DVI_PUP 170 44#define IGEP2_GPIO_DVI_PUP 170
46#define IGEP2_GPIO_WIFI_NPD 94 45#define IGEP2_GPIO_WIFI_NPD 94
@@ -355,34 +354,50 @@ static void __init igep2_display_init(void)
355 gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1)) 354 gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1))
356 pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n"); 355 pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n");
357} 356}
358#ifdef CONFIG_LEDS_TRIGGERS 357
359static struct gpio_led gpio_leds[] = { 358#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
359#include <linux/leds.h>
360
361static struct gpio_led igep2_gpio_leds[] = {
360 { 362 {
361 .name = "GPIO_LED1_RED", 363 .name = "led0:red",
364 .gpio = IGEP2_GPIO_LED0_RED,
365 },
366 {
367 .name = "led0:green",
362 .default_trigger = "heartbeat", 368 .default_trigger = "heartbeat",
369 .gpio = IGEP2_GPIO_LED0_GREEN,
370 },
371 {
372 .name = "led1:red",
363 .gpio = IGEP2_GPIO_LED1_RED, 373 .gpio = IGEP2_GPIO_LED1_RED,
364 }, 374 },
365}; 375};
366 376
367static struct gpio_led_platform_data gpio_leds_info = { 377static struct gpio_led_platform_data igep2_led_pdata = {
368 .leds = gpio_leds, 378 .leds = igep2_gpio_leds,
369 .num_leds = ARRAY_SIZE(gpio_leds), 379 .num_leds = ARRAY_SIZE(igep2_gpio_leds),
370}; 380};
371 381
372static struct platform_device leds_gpio = { 382static struct platform_device igep2_led_device = {
373 .name = "leds-gpio", 383 .name = "leds-gpio",
374 .id = -1, 384 .id = -1,
375 .dev = { 385 .dev = {
376 .platform_data = &gpio_leds_info, 386 .platform_data = &igep2_led_pdata,
377 }, 387 },
378}; 388};
389
390static void __init igep2_init_led(void)
391{
392 platform_device_register(&igep2_led_device);
393}
394
395#else
396static inline void igep2_init_led(void) {}
379#endif 397#endif
380 398
381static struct platform_device *igep2_devices[] __initdata = { 399static struct platform_device *igep2_devices[] __initdata = {
382 &igep2_dss_device, 400 &igep2_dss_device,
383#ifdef CONFIG_LEDS_TRIGGERS
384 &leds_gpio,
385#endif
386}; 401};
387 402
388static void __init igep2_init_irq(void) 403static void __init igep2_init_irq(void)
@@ -442,7 +457,7 @@ static struct omap_musb_board_data musb_board_data = {
442 .power = 100, 457 .power = 100,
443}; 458};
444 459
445static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 460static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
446 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, 461 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
447 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 462 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
448 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, 463 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
@@ -471,31 +486,34 @@ static void __init igep2_init(void)
471 usb_ehci_init(&ehci_pdata); 486 usb_ehci_init(&ehci_pdata);
472 487
473 igep2_flash_init(); 488 igep2_flash_init();
489 igep2_init_led();
474 igep2_display_init(); 490 igep2_display_init();
475 igep2_init_smsc911x(); 491 igep2_init_smsc911x();
476 492
477 /* GPIO userspace leds */ 493 /* GPIO userspace leds */
478 if ((gpio_request(IGEP2_GPIO_LED0_RED, "GPIO_LED0_RED") == 0) && 494#if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE)
495 if ((gpio_request(IGEP2_GPIO_LED0_RED, "led0:red") == 0) &&
479 (gpio_direction_output(IGEP2_GPIO_LED0_RED, 1) == 0)) { 496 (gpio_direction_output(IGEP2_GPIO_LED0_RED, 1) == 0)) {
480 gpio_export(IGEP2_GPIO_LED0_RED, 0); 497 gpio_export(IGEP2_GPIO_LED0_RED, 0);
481 gpio_set_value(IGEP2_GPIO_LED0_RED, 0); 498 gpio_set_value(IGEP2_GPIO_LED0_RED, 0);
482 } else 499 } else
483 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n"); 500 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n");
484 501
485 if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "GPIO_LED0_GREEN") == 0) && 502 if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "led0:green") == 0) &&
486 (gpio_direction_output(IGEP2_GPIO_LED0_GREEN, 1) == 0)) { 503 (gpio_direction_output(IGEP2_GPIO_LED0_GREEN, 1) == 0)) {
487 gpio_export(IGEP2_GPIO_LED0_GREEN, 0); 504 gpio_export(IGEP2_GPIO_LED0_GREEN, 0);
488 gpio_set_value(IGEP2_GPIO_LED0_GREEN, 0); 505 gpio_set_value(IGEP2_GPIO_LED0_GREEN, 0);
489 } else 506 } else
490 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n"); 507 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n");
491#ifndef CONFIG_LEDS_TRIGGERS 508
492 if ((gpio_request(IGEP2_GPIO_LED1_RED, "GPIO_LED1_RED") == 0) && 509 if ((gpio_request(IGEP2_GPIO_LED1_RED, "led1:red") == 0) &&
493 (gpio_direction_output(IGEP2_GPIO_LED1_RED, 1) == 0)) { 510 (gpio_direction_output(IGEP2_GPIO_LED1_RED, 1) == 0)) {
494 gpio_export(IGEP2_GPIO_LED1_RED, 0); 511 gpio_export(IGEP2_GPIO_LED1_RED, 0);
495 gpio_set_value(IGEP2_GPIO_LED1_RED, 0); 512 gpio_set_value(IGEP2_GPIO_LED1_RED, 0);
496 } else 513 } else
497 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n"); 514 pr_warning("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n");
498#endif 515#endif
516
499 /* GPIO W-LAN + Bluetooth combo module */ 517 /* GPIO W-LAN + Bluetooth combo module */
500 if ((gpio_request(IGEP2_GPIO_WIFI_NPD, "GPIO_WIFI_NPD") == 0) && 518 if ((gpio_request(IGEP2_GPIO_WIFI_NPD, "GPIO_WIFI_NPD") == 0) &&
501 (gpio_direction_output(IGEP2_GPIO_WIFI_NPD, 1) == 0)) { 519 (gpio_direction_output(IGEP2_GPIO_WIFI_NPD, 1) == 0)) {
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 4cab0522d7ce..da9bcb898991 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -37,6 +37,103 @@ static int slot1_cover_open;
37static int slot2_cover_open; 37static int slot2_cover_open;
38static struct device *mmc_device; 38static struct device *mmc_device;
39 39
40#define TUSB6010_ASYNC_CS 1
41#define TUSB6010_SYNC_CS 4
42#define TUSB6010_GPIO_INT 58
43#define TUSB6010_GPIO_ENABLE 0
44#define TUSB6010_DMACHAN 0x3f
45
46#if defined(CONFIG_USB_TUSB6010) || \
47 defined(CONFIG_USB_TUSB6010_MODULE)
48/*
49 * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
50 * 1.5 V voltage regulators of PM companion chip. Companion chip will then
51 * provide then PGOOD signal to TUSB6010 which will release it from reset.
52 */
53static int tusb_set_power(int state)
54{
55 int i, retval = 0;
56
57 if (state) {
58 gpio_set_value(TUSB6010_GPIO_ENABLE, 1);
59 msleep(1);
60
61 /* Wait until TUSB6010 pulls INT pin down */
62 i = 100;
63 while (i && gpio_get_value(TUSB6010_GPIO_INT)) {
64 msleep(1);
65 i--;
66 }
67
68 if (!i) {
69 printk(KERN_ERR "tusb: powerup failed\n");
70 retval = -ENODEV;
71 }
72 } else {
73 gpio_set_value(TUSB6010_GPIO_ENABLE, 0);
74 msleep(10);
75 }
76
77 return retval;
78}
79
80static struct musb_hdrc_config musb_config = {
81 .multipoint = 1,
82 .dyn_fifo = 1,
83 .num_eps = 16,
84 .ram_bits = 12,
85};
86
87static struct musb_hdrc_platform_data tusb_data = {
88#if defined(CONFIG_USB_MUSB_OTG)
89 .mode = MUSB_OTG,
90#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
91 .mode = MUSB_PERIPHERAL,
92#else /* defined(CONFIG_USB_MUSB_HOST) */
93 .mode = MUSB_HOST,
94#endif
95 .set_power = tusb_set_power,
96 .min_power = 25, /* x2 = 50 mA drawn from VBUS as peripheral */
97 .power = 100, /* Max 100 mA VBUS for host mode */
98 .config = &musb_config,
99};
100
101static void __init n8x0_usb_init(void)
102{
103 int ret = 0;
104 static char announce[] __initdata = KERN_INFO "TUSB 6010\n";
105
106 /* PM companion chip power control pin */
107 ret = gpio_request(TUSB6010_GPIO_ENABLE, "TUSB6010 enable");
108 if (ret != 0) {
109 printk(KERN_ERR "Could not get TUSB power GPIO%i\n",
110 TUSB6010_GPIO_ENABLE);
111 return;
112 }
113 gpio_direction_output(TUSB6010_GPIO_ENABLE, 0);
114
115 tusb_set_power(0);
116
117 ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
118 TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
119 TUSB6010_GPIO_INT, TUSB6010_DMACHAN);
120 if (ret != 0)
121 goto err;
122
123 printk(announce);
124
125 return;
126
127err:
128 gpio_free(TUSB6010_GPIO_ENABLE);
129}
130#else
131
132static void __init n8x0_usb_init(void) {}
133
134#endif /*CONFIG_USB_TUSB6010 */
135
136
40static struct omap2_mcspi_device_config p54spi_mcspi_config = { 137static struct omap2_mcspi_device_config p54spi_mcspi_config = {
41 .turbo_mode = 0, 138 .turbo_mode = 0,
42 .single_channel = 1, 139 .single_channel = 1,
@@ -562,6 +659,7 @@ static void __init n8x0_init_machine(void)
562 n8x0_menelaus_init(); 659 n8x0_menelaus_init();
563 n8x0_onenand_init(); 660 n8x0_onenand_init();
564 n8x0_mmc_init(); 661 n8x0_mmc_init();
662 n8x0_usb_init();
565} 663}
566 664
567MACHINE_START(NOKIA_N800, "Nokia N800") 665MACHINE_START(NOKIA_N800, "Nokia N800")
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 6eb77e1f7c82..962d377970e9 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -410,7 +410,7 @@ static void __init omap3beagle_flash_init(void)
410 } 410 }
411} 411}
412 412
413static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 413static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
414 414
415 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 415 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
416 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 416 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index d6bc88c426b5..017bb2f4f7d2 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -635,7 +635,7 @@ static struct platform_device *omap3_evm_devices[] __initdata = {
635 &omap3_evm_dss_device, 635 &omap3_evm_dss_device,
636}; 636};
637 637
638static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 638static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
639 639
640 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, 640 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
641 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 641 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index 4827f4658df3..395d049bf010 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -459,12 +459,20 @@ static struct i2c_board_info __initdata omap3pandora_i2c_boardinfo[] = {
459 }, 459 },
460}; 460};
461 461
462static struct i2c_board_info __initdata omap3pandora_i2c3_boardinfo[] = {
463 {
464 I2C_BOARD_INFO("bq27500", 0x55),
465 .flags = I2C_CLIENT_WAKE,
466 },
467};
468
462static int __init omap3pandora_i2c_init(void) 469static int __init omap3pandora_i2c_init(void)
463{ 470{
464 omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo, 471 omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo,
465 ARRAY_SIZE(omap3pandora_i2c_boardinfo)); 472 ARRAY_SIZE(omap3pandora_i2c_boardinfo));
466 /* i2c2 pins are not connected */ 473 /* i2c2 pins are not connected */
467 omap_register_i2c_bus(3, 100, NULL, 0); 474 omap_register_i2c_bus(3, 100, omap3pandora_i2c3_boardinfo,
475 ARRAY_SIZE(omap3pandora_i2c3_boardinfo));
468 return 0; 476 return 0;
469} 477}
470 478
@@ -537,7 +545,7 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
537 &pandora_dss_device, 545 &pandora_dss_device,
538}; 546};
539 547
540static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 548static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
541 549
542 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 550 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
543 .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, 551 .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN,
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index 3943d0f8322c..2504d41f923e 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -493,7 +493,7 @@ static void __init omap3touchbook_flash_init(void)
493 } 493 }
494} 494}
495 495
496static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 496static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
497 497
498 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, 498 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
499 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 499 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
@@ -518,14 +518,14 @@ static void omap3_touchbook_poweroff(void)
518 gpio_direction_output(TB_KILL_POWER_GPIO, 0); 518 gpio_direction_output(TB_KILL_POWER_GPIO, 0);
519} 519}
520 520
521static void __init early_touchbook_revision(char **p) 521static int __init early_touchbook_revision(char *p)
522{ 522{
523 if (!*p) 523 if (!p)
524 return; 524 return 0;
525 525
526 strict_strtoul(*p, 10, &touchbook_revision); 526 return strict_strtoul(p, 10, &touchbook_revision);
527} 527}
528__early_param("tbr=", early_touchbook_revision); 528early_param("tbr", early_touchbook_revision);
529 529
530static struct omap_musb_board_data musb_board_data = { 530static struct omap_musb_board_data musb_board_data = {
531 .interface_type = MUSB_INTERFACE_ULPI, 531 .interface_type = MUSB_INTERFACE_ULPI,
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 50872a42bec7..8848c7c5ce48 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -394,7 +394,7 @@ static struct platform_device *overo_devices[] __initdata = {
394 &overo_lcd_device, 394 &overo_lcd_device,
395}; 395};
396 396
397static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 397static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
398 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, 398 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
399 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 399 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
400 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, 400 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
diff --git a/arch/arm/mach-omap2/board-zoom3.c b/arch/arm/mach-omap2/board-zoom3.c
index d3e3cd5170d1..cd3e40cf3ac1 100644
--- a/arch/arm/mach-omap2/board-zoom3.c
+++ b/arch/arm/mach-omap2/board-zoom3.c
@@ -52,7 +52,7 @@ static struct omap_board_mux board_mux[] __initdata = {
52#define board_mux NULL 52#define board_mux NULL
53#endif 53#endif
54 54
55static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { 55static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
56 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, 56 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
57 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, 57 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
58 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, 58 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
index 3b1eac4d5390..e60ca4e47bbd 100644
--- a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
+++ b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
@@ -31,6 +31,7 @@
31#include <linux/clk.h> 31#include <linux/clk.h>
32#include <linux/io.h> 32#include <linux/io.h>
33#include <linux/cpufreq.h> 33#include <linux/cpufreq.h>
34#include <linux/slab.h>
34 35
35#include <plat/clock.h> 36#include <plat/clock.h>
36#include <plat/sram.h> 37#include <plat/sram.h>
diff --git a/arch/arm/mach-omap2/clock2420_data.c b/arch/arm/mach-omap2/clock2420_data.c
index f12af95ead45..d932b142d0b6 100644
--- a/arch/arm/mach-omap2/clock2420_data.c
+++ b/arch/arm/mach-omap2/clock2420_data.c
@@ -1841,6 +1841,7 @@ static struct omap_clk omap2420_clks[] = {
1841 CLK(NULL, "aes_ick", &aes_ick, CK_242X), 1841 CLK(NULL, "aes_ick", &aes_ick, CK_242X),
1842 CLK(NULL, "pka_ick", &pka_ick, CK_242X), 1842 CLK(NULL, "pka_ick", &pka_ick, CK_242X),
1843 CLK(NULL, "usb_fck", &usb_fck, CK_242X), 1843 CLK(NULL, "usb_fck", &usb_fck, CK_242X),
1844 CLK("musb_hdrc", "fck", &osc_ck, CK_242X),
1844}; 1845};
1845 1846
1846/* 1847/*
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 402e8f0d0f21..87f676acf61d 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -237,7 +237,7 @@ static void __init _omap2_map_common_io(void)
237} 237}
238 238
239#ifdef CONFIG_ARCH_OMAP2420 239#ifdef CONFIG_ARCH_OMAP2420
240void __init omap242x_map_common_io() 240void __init omap242x_map_common_io(void)
241{ 241{
242 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); 242 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
243 iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc)); 243 iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc));
@@ -246,7 +246,7 @@ void __init omap242x_map_common_io()
246#endif 246#endif
247 247
248#ifdef CONFIG_ARCH_OMAP2430 248#ifdef CONFIG_ARCH_OMAP2430
249void __init omap243x_map_common_io() 249void __init omap243x_map_common_io(void)
250{ 250{
251 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); 251 iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
252 iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc)); 252 iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc));
@@ -255,7 +255,7 @@ void __init omap243x_map_common_io()
255#endif 255#endif
256 256
257#ifdef CONFIG_ARCH_OMAP3 257#ifdef CONFIG_ARCH_OMAP3
258void __init omap34xx_map_common_io() 258void __init omap34xx_map_common_io(void)
259{ 259{
260 iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc)); 260 iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc));
261 _omap2_map_common_io(); 261 _omap2_map_common_io();
@@ -263,7 +263,7 @@ void __init omap34xx_map_common_io()
263#endif 263#endif
264 264
265#ifdef CONFIG_ARCH_OMAP4 265#ifdef CONFIG_ARCH_OMAP4
266void __init omap44xx_map_common_io() 266void __init omap44xx_map_common_io(void)
267{ 267{
268 iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc)); 268 iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc));
269 _omap2_map_common_io(); 269 _omap2_map_common_io();
@@ -309,7 +309,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
309{ 309{
310 pwrdm_init(powerdomains_omap); 310 pwrdm_init(powerdomains_omap);
311 clkdm_init(clockdomains_omap, clkdm_autodeps); 311 clkdm_init(clockdomains_omap, clkdm_autodeps);
312#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
313 if (cpu_is_omap242x()) 312 if (cpu_is_omap242x())
314 omap2420_hwmod_init(); 313 omap2420_hwmod_init();
315 else if (cpu_is_omap243x()) 314 else if (cpu_is_omap243x())
@@ -319,7 +318,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
319 omap2_mux_init(); 318 omap2_mux_init();
320 /* The OPP tables have to be registered before a clk init */ 319 /* The OPP tables have to be registered before a clk init */
321 omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps); 320 omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
322#endif
323 321
324 if (cpu_is_omap2420()) 322 if (cpu_is_omap2420())
325 omap2420_clk_init(); 323 omap2420_clk_init();
@@ -333,11 +331,12 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
333 pr_err("Could not init clock framework - unknown CPU\n"); 331 pr_err("Could not init clock framework - unknown CPU\n");
334 332
335 omap_serial_early_init(); 333 omap_serial_early_init();
336#ifndef CONFIG_ARCH_OMAP4 334 if (cpu_is_omap24xx() || cpu_is_omap34xx()) /* FIXME: OMAP4 */
337 omap_hwmod_late_init(); 335 omap_hwmod_late_init();
338 omap_pm_if_init(); 336 omap_pm_if_init();
339 omap2_sdrc_init(sdrc_cs0, sdrc_cs1); 337 if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
340 _omap2_init_reprogram_sdrc(); 338 omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
341#endif 339 _omap2_init_reprogram_sdrc();
340 }
342 gpmc_init(); 341 gpmc_init();
343} 342}
diff --git a/arch/arm/mach-omap2/iommu2.c b/arch/arm/mach-omap2/iommu2.c
index 6f4b7cc8f4d1..4f63dc6859a4 100644
--- a/arch/arm/mach-omap2/iommu2.c
+++ b/arch/arm/mach-omap2/iommu2.c
@@ -15,6 +15,7 @@
15#include <linux/device.h> 15#include <linux/device.h>
16#include <linux/jiffies.h> 16#include <linux/jiffies.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/slab.h>
18#include <linux/stringify.h> 19#include <linux/stringify.h>
19 20
20#include <plat/iommu.h> 21#include <plat/iommu.h>
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index 52a981cb8fdd..318f3638653c 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -430,19 +430,19 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
430 if (unlikely(!res)) { 430 if (unlikely(!res)) {
431 dev_err(&pdev->dev, "invalid irq resource\n"); 431 dev_err(&pdev->dev, "invalid irq resource\n");
432 ret = -ENODEV; 432 ret = -ENODEV;
433 goto err_iva1; 433 omap_mbox_unregister(&mbox_dsp_info);
434 goto err_dsp;
434 } 435 }
435 mbox_iva_info.irq = res->start; 436 mbox_iva_info.irq = res->start;
436 ret = omap_mbox_register(&pdev->dev, &mbox_iva_info); 437 ret = omap_mbox_register(&pdev->dev, &mbox_iva_info);
437 if (ret) 438 if (ret) {
438 goto err_iva1; 439 omap_mbox_unregister(&mbox_dsp_info);
440 goto err_dsp;
441 }
439 } 442 }
440#endif 443#endif
441 return 0; 444 return 0;
442 445
443err_iva1:
444 omap_mbox_unregister(&mbox_dsp_info);
445
446err_dsp: 446err_dsp:
447 iounmap(mbox_base); 447 iounmap(mbox_base);
448 return ret; 448 return ret;
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index be8fce395a58..2f3cad6f9402 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -16,6 +16,7 @@
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/slab.h>
19 20
20#include <mach/irqs.h> 21#include <mach/irqs.h>
21#include <plat/dma.h> 22#include <plat/dma.h>
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index b4ca84ee0a95..8b3d26935a39 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -26,6 +26,7 @@
26#include <linux/module.h> 26#include <linux/module.h>
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/io.h> 28#include <linux/io.h>
29#include <linux/slab.h>
29#include <linux/spinlock.h> 30#include <linux/spinlock.h>
30#include <linux/list.h> 31#include <linux/list.h>
31#include <linux/ctype.h> 32#include <linux/ctype.h>
diff --git a/arch/arm/mach-omap2/omap44xx-smc.S b/arch/arm/mach-omap2/omap44xx-smc.S
new file mode 100644
index 000000000000..89bb2b141473
--- /dev/null
+++ b/arch/arm/mach-omap2/omap44xx-smc.S
@@ -0,0 +1,32 @@
1/*
2 * OMAP44xx secure APIs file.
3 *
4 * Copyright (C) 2010 Texas Instruments, Inc.
5 * Written by Santosh Shilimkar <santosh.shilimkar@ti.com>
6 *
7 *
8 * This program is free software,you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#include <linux/linkage.h>
14
15/*
16 * This is common routine to manage secure monitor API
17 * used to modify the PL310 secure registers.
18 * 'r0' contains the value to be modified and 'r12' contains
19 * the monitor API number. It uses few CPU registers
20 * internally and hence they need be backed up including
21 * link register "lr".
22 * Function signature : void omap_smc1(u32 fn, u32 arg)
23 */
24
25ENTRY(omap_smc1)
26 stmfd sp!, {r2-r12, lr}
27 mov r12, r0
28 mov r0, r1
29 dsb
30 smc
31 ldmfd sp!, {r2-r12, pc}
32END(omap_smc1)
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index c18f7f2f19bc..6cac9817c243 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -25,6 +25,7 @@
25#include <linux/err.h> 25#include <linux/err.h>
26#include <linux/io.h> 26#include <linux/io.h>
27#include <linux/module.h> 27#include <linux/module.h>
28#include <linux/slab.h>
28 29
29#include <plat/clock.h> 30#include <plat/clock.h>
30#include <plat/board.h> 31#include <plat/board.h>
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index fee2efb172e7..ea0000bc5358 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -27,6 +27,7 @@
27#include <linux/gpio.h> 27#include <linux/gpio.h>
28#include <linux/clk.h> 28#include <linux/clk.h>
29#include <linux/delay.h> 29#include <linux/delay.h>
30#include <linux/slab.h>
30 31
31#include <plat/sram.h> 32#include <plat/sram.h>
32#include <plat/clockdomain.h> 33#include <plat/clockdomain.h>
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index 81872aacb801..9537f6f2352d 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -133,7 +133,7 @@ u32 omap_prcm_get_reset_sources(void)
133EXPORT_SYMBOL(omap_prcm_get_reset_sources); 133EXPORT_SYMBOL(omap_prcm_get_reset_sources);
134 134
135/* Resets clock rates and reboots the system. Only called from system.h */ 135/* Resets clock rates and reboots the system. Only called from system.h */
136void omap_prcm_arch_reset(char mode) 136void omap_prcm_arch_reset(char mode, const char *cmd)
137{ 137{
138 s16 prcm_offs = 0; 138 s16 prcm_offs = 0;
139 139
@@ -145,7 +145,7 @@ void omap_prcm_arch_reset(char mode)
145 u32 l; 145 u32 l;
146 146
147 prcm_offs = OMAP3430_GR_MOD; 147 prcm_offs = OMAP3430_GR_MOD;
148 l = ('B' << 24) | ('M' << 16) | mode; 148 l = ('B' << 24) | ('M' << 16) | (cmd ? (u8)*cmd : 0);
149 /* Reserve the first word in scratchpad for communicating 149 /* Reserve the first word in scratchpad for communicating
150 * with the boot ROM. A pointer to a data structure 150 * with the boot ROM. A pointer to a data structure
151 * describing the boot process can be stored there, 151 * describing the boot process can be stored there,
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index b79bc8926cc9..da77930480e9 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -644,16 +644,21 @@ static void serial_out_override(struct uart_port *up, int offset, int value)
644} 644}
645void __init omap_serial_early_init(void) 645void __init omap_serial_early_init(void)
646{ 646{
647 int i; 647 int i, nr_ports;
648 char name[16]; 648 char name[16];
649 649
650 if (!(cpu_is_omap3630() || cpu_is_omap4430()))
651 nr_ports = 3;
652 else
653 nr_ports = ARRAY_SIZE(omap_uart);
654
650 /* 655 /*
651 * Make sure the serial ports are muxed on at this point. 656 * Make sure the serial ports are muxed on at this point.
652 * You have to mux them off in device drivers later on 657 * You have to mux them off in device drivers later on
653 * if not needed. 658 * if not needed.
654 */ 659 */
655 660
656 for (i = 0; i < ARRAY_SIZE(omap_uart); i++) { 661 for (i = 0; i < nr_ports; i++) {
657 struct omap_uart_state *uart = &omap_uart[i]; 662 struct omap_uart_state *uart = &omap_uart[i];
658 struct platform_device *pdev = &uart->pdev; 663 struct platform_device *pdev = &uart->pdev;
659 struct device *dev = &pdev->dev; 664 struct device *dev = &pdev->dev;
@@ -669,17 +674,17 @@ void __init omap_serial_early_init(void)
669 continue; 674 continue;
670 } 675 }
671 676
672 sprintf(name, "uart%d_ick", i+1); 677 sprintf(name, "uart%d_ick", i + 1);
673 uart->ick = clk_get(NULL, name); 678 uart->ick = clk_get(NULL, name);
674 if (IS_ERR(uart->ick)) { 679 if (IS_ERR(uart->ick)) {
675 printk(KERN_ERR "Could not get uart%d_ick\n", i+1); 680 printk(KERN_ERR "Could not get uart%d_ick\n", i + 1);
676 uart->ick = NULL; 681 uart->ick = NULL;
677 } 682 }
678 683
679 sprintf(name, "uart%d_fck", i+1); 684 sprintf(name, "uart%d_fck", i+1);
680 uart->fck = clk_get(NULL, name); 685 uart->fck = clk_get(NULL, name);
681 if (IS_ERR(uart->fck)) { 686 if (IS_ERR(uart->fck)) {
682 printk(KERN_ERR "Could not get uart%d_fck\n", i+1); 687 printk(KERN_ERR "Could not get uart%d_fck\n", i + 1);
683 uart->fck = NULL; 688 uart->fck = NULL;
684 } 689 }
685 690
diff --git a/arch/arm/mach-omap2/usb-ehci.c b/arch/arm/mach-omap2/usb-ehci.c
index f1df873d59db..ee9f548d5d81 100644
--- a/arch/arm/mach-omap2/usb-ehci.c
+++ b/arch/arm/mach-omap2/usb-ehci.c
@@ -70,7 +70,7 @@ static struct platform_device ehci_device = {
70/* 70/*
71 * setup_ehci_io_mux - initialize IO pad mux for USBHOST 71 * setup_ehci_io_mux - initialize IO pad mux for USBHOST
72 */ 72 */
73static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode) 73static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode)
74{ 74{
75 switch (port_mode[0]) { 75 switch (port_mode[0]) {
76 case EHCI_HCD_OMAP_MODE_PHY: 76 case EHCI_HCD_OMAP_MODE_PHY:
@@ -213,7 +213,7 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode)
213 return; 213 return;
214} 214}
215 215
216void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata) 216void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata)
217{ 217{
218 platform_device_add_data(&ehci_device, pdata, sizeof(*pdata)); 218 platform_device_add_data(&ehci_device, pdata, sizeof(*pdata));
219 219
@@ -229,7 +229,7 @@ void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata)
229 229
230#else 230#else
231 231
232void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata) 232void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata)
233 233
234{ 234{
235} 235}
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
index bdf96eb523bc..e8706f15a670 100644
--- a/arch/arm/mach-orion5x/pci.c
+++ b/arch/arm/mach-orion5x/pci.c
@@ -12,6 +12,7 @@
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/slab.h>
15#include <linux/mbus.h> 16#include <linux/mbus.h>
16#include <asm/irq.h> 17#include <asm/irq.h>
17#include <asm/mach/pci.h> 18#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index cb0feca193d4..f9f222ebb7ed 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -77,7 +77,7 @@ static struct gpio_keys_button wrt350n_v2_buttons[] = {
77 .desc = "Reset Button", 77 .desc = "Reset Button",
78 .active_low = 1, 78 .active_low = 1,
79 }, { 79 }, {
80 .code = KEY_WLAN, 80 .code = KEY_WPS_BUTTON,
81 .gpio = 2, 81 .gpio = 2,
82 .desc = "WPS Button", 82 .desc = "WPS Button",
83 .active_low = 1, 83 .active_low = 1,
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c
index 425f7188505e..7fa4bf2e2125 100644
--- a/arch/arm/mach-pnx4008/dma.c
+++ b/arch/arm/mach-pnx4008/dma.c
@@ -22,6 +22,7 @@
22#include <linux/dma-mapping.h> 22#include <linux/dma-mapping.h>
23#include <linux/clk.h> 23#include <linux/clk.h>
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/gfp.h>
25 26
26#include <asm/system.h> 27#include <asm/system.h>
27#include <mach/hardware.h> 28#include <mach/hardware.h>
diff --git a/arch/arm/mach-pnx4008/pm.c b/arch/arm/mach-pnx4008/pm.c
index 1f0585329be4..ee3c29c57ae3 100644
--- a/arch/arm/mach-pnx4008/pm.c
+++ b/arch/arm/mach-pnx4008/pm.c
@@ -19,6 +19,7 @@
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/clk.h> 20#include <linux/clk.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/slab.h>
22 23
23#include <asm/cacheflush.h> 24#include <asm/cacheflush.h>
24 25
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 38fbd0a0e402..5b6ee46fa7f6 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -272,7 +272,6 @@ config MACH_H5000
272config MACH_HIMALAYA 272config MACH_HIMALAYA
273 bool "HTC Himalaya Support" 273 bool "HTC Himalaya Support"
274 select CPU_PXA26x 274 select CPU_PXA26x
275 select FB_W100
276 275
277config MACH_MAGICIAN 276config MACH_MAGICIAN
278 bool "Enable HTC Magician Support" 277 bool "Enable HTC Magician Support"
@@ -454,6 +453,13 @@ config PXA_SHARPSL
454config SHARPSL_PM 453config SHARPSL_PM
455 bool 454 bool
456 select APM_EMULATION 455 select APM_EMULATION
456 select SHARPSL_PM_MAX1111
457
458config SHARPSL_PM_MAX1111
459 bool
460 depends on !CORGI_SSP_DEPRECATED
461 select HWMON
462 select SENSORS_MAX1111
457 463
458config CORGI_SSP_DEPRECATED 464config CORGI_SSP_DEPRECATED
459 bool 465 bool
@@ -547,7 +553,6 @@ config MACH_E740
547 bool "Toshiba e740" 553 bool "Toshiba e740"
548 default y 554 default y
549 depends on ARCH_PXA_ESERIES 555 depends on ARCH_PXA_ESERIES
550 select FB_W100
551 help 556 help
552 Say Y here if you intend to run this kernel on a Toshiba 557 Say Y here if you intend to run this kernel on a Toshiba
553 e740 family PDA. 558 e740 family PDA.
@@ -556,7 +561,6 @@ config MACH_E750
556 bool "Toshiba e750" 561 bool "Toshiba e750"
557 default y 562 default y
558 depends on ARCH_PXA_ESERIES 563 depends on ARCH_PXA_ESERIES
559 select FB_W100
560 help 564 help
561 Say Y here if you intend to run this kernel on a Toshiba 565 Say Y here if you intend to run this kernel on a Toshiba
562 e750 family PDA. 566 e750 family PDA.
@@ -573,7 +577,6 @@ config MACH_E800
573 bool "Toshiba e800" 577 bool "Toshiba e800"
574 default y 578 default y
575 depends on ARCH_PXA_ESERIES 579 depends on ARCH_PXA_ESERIES
576 select FB_W100
577 help 580 help
578 Say Y here if you intend to run this kernel on a Toshiba 581 Say Y here if you intend to run this kernel on a Toshiba
579 e800 family PDA. 582 e800 family PDA.
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c
index 1d9bc118ee32..9347254f8bcf 100644
--- a/arch/arm/mach-pxa/corgi_ssp.c
+++ b/arch/arm/mach-pxa/corgi_ssp.c
@@ -13,7 +13,6 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/slab.h>
17#include <linux/delay.h> 16#include <linux/delay.h>
18#include <linux/platform_device.h> 17#include <linux/platform_device.h>
19#include <mach/hardware.h> 18#include <mach/hardware.h>
diff --git a/arch/arm/mach-pxa/cpufreq-pxa3xx.c b/arch/arm/mach-pxa/cpufreq-pxa3xx.c
index 149cdd9aee4d..27fa329d9a8b 100644
--- a/arch/arm/mach-pxa/cpufreq-pxa3xx.c
+++ b/arch/arm/mach-pxa/cpufreq-pxa3xx.c
@@ -14,6 +14,7 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/cpufreq.h> 16#include <linux/cpufreq.h>
17#include <linux/slab.h>
17 18
18#include <mach/pxa3xx-regs.h> 19#include <mach/pxa3xx-regs.h>
19 20
diff --git a/arch/arm/mach-pxa/imote2.c b/arch/arm/mach-pxa/imote2.c
index b2f878bd460b..5161dca8ccc0 100644
--- a/arch/arm/mach-pxa/imote2.c
+++ b/arch/arm/mach-pxa/imote2.c
@@ -559,10 +559,6 @@ static void __init imote2_init(void)
559 pxa_set_btuart_info(NULL); 559 pxa_set_btuart_info(NULL);
560 pxa_set_stuart_info(NULL); 560 pxa_set_stuart_info(NULL);
561 561
562 /* SPI chip select directions - all other directions should
563 * be handled by drivers.*/
564 gpio_direction_output(37, 0);
565
566 platform_add_devices(imote2_devices, ARRAY_SIZE(imote2_devices)); 562 platform_add_devices(imote2_devices, ARRAY_SIZE(imote2_devices));
567 563
568 pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info); 564 pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info);
diff --git a/arch/arm/mach-pxa/include/mach/uncompress.h b/arch/arm/mach-pxa/include/mach/uncompress.h
index 5ef91d9d17e4..759b851ec985 100644
--- a/arch/arm/mach-pxa/include/mach/uncompress.h
+++ b/arch/arm/mach-pxa/include/mach/uncompress.h
@@ -16,9 +16,9 @@
16#define BTUART_BASE (0x40200000) 16#define BTUART_BASE (0x40200000)
17#define STUART_BASE (0x40700000) 17#define STUART_BASE (0x40700000)
18 18
19static unsigned long uart_base = FFUART_BASE; 19static unsigned long uart_base;
20static unsigned int uart_shift = 2; 20static unsigned int uart_shift;
21static unsigned int uart_is_pxa = 1; 21static unsigned int uart_is_pxa;
22 22
23static inline unsigned char uart_read(int offset) 23static inline unsigned char uart_read(int offset)
24{ 24{
@@ -56,6 +56,11 @@ static inline void flush(void)
56 56
57static inline void arch_decomp_setup(void) 57static inline void arch_decomp_setup(void)
58{ 58{
59 /* initialize to default */
60 uart_base = FFUART_BASE;
61 uart_shift = 2;
62 uart_is_pxa = 1;
63
59 if (machine_is_littleton() || machine_is_intelmote2() 64 if (machine_is_littleton() || machine_is_intelmote2()
60 || machine_is_csb726() || machine_is_stargate2() 65 || machine_is_csb726() || machine_is_stargate2()
61 || machine_is_cm_x300() || machine_is_balloon3()) 66 || machine_is_cm_x300() || machine_is_balloon3())
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 843fcca76e26..7a50ed8fce94 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -38,6 +38,7 @@
38#include <linux/mtd/physmap.h> 38#include <linux/mtd/physmap.h>
39#include <linux/usb/gpio_vbus.h> 39#include <linux/usb/gpio_vbus.h>
40#include <linux/regulator/max1586.h> 40#include <linux/regulator/max1586.h>
41#include <linux/slab.h>
41 42
42#include <asm/mach-types.h> 43#include <asm/mach-types.h>
43#include <asm/mach/arch.h> 44#include <asm/mach/arch.h>
diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c
index 7693355ee637..166c15f62916 100644
--- a/arch/arm/mach-pxa/pm.c
+++ b/arch/arm/mach-pxa/pm.c
@@ -14,6 +14,7 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/suspend.h> 15#include <linux/suspend.h>
16#include <linux/errno.h> 16#include <linux/errno.h>
17#include <linux/slab.h>
17 18
18#include <mach/pm.h> 19#include <mach/pm.h>
19 20
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
index 3184bdc14526..44bb675e47f1 100644
--- a/arch/arm/mach-pxa/raumfeld.c
+++ b/arch/arm/mach-pxa/raumfeld.c
@@ -37,8 +37,6 @@
37#include <linux/lis3lv02d.h> 37#include <linux/lis3lv02d.h>
38#include <linux/pda_power.h> 38#include <linux/pda_power.h>
39#include <linux/power_supply.h> 39#include <linux/power_supply.h>
40#include <linux/pda_power.h>
41#include <linux/power_supply.h>
42#include <linux/regulator/max8660.h> 40#include <linux/regulator/max8660.h>
43#include <linux/regulator/machine.h> 41#include <linux/regulator/machine.h>
44#include <linux/regulator/fixed.h> 42#include <linux/regulator/fixed.h>
@@ -444,7 +442,7 @@ static struct gpio_keys_button gpio_keys_button[] = {
444 .active_low = 0, 442 .active_low = 0,
445 .wakeup = 0, 443 .wakeup = 0,
446 .debounce_interval = 5, /* ms */ 444 .debounce_interval = 5, /* ms */
447 .desc = "on/off button", 445 .desc = "on_off button",
448 }, 446 },
449}; 447};
450 448
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index a98a434f0111..2041eb1d90ba 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -764,11 +764,6 @@ static void __init stargate2_init(void)
764 pxa_set_btuart_info(NULL); 764 pxa_set_btuart_info(NULL);
765 pxa_set_stuart_info(NULL); 765 pxa_set_stuart_info(NULL);
766 766
767 /* spi chip selects */
768 gpio_direction_output(37, 0);
769 gpio_direction_output(24, 0);
770 gpio_direction_output(39, 0);
771
772 platform_add_devices(ARRAY_AND_SIZE(stargate2_devices)); 767 platform_add_devices(ARRAY_AND_SIZE(stargate2_devices));
773 768
774 pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info); 769 pxa2xx_set_spi_info(1, &pxa_ssp_master_0_info);
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index 1dd13346f977..9e0c5c3988a1 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -27,6 +27,7 @@
27#include <linux/delay.h> 27#include <linux/delay.h>
28#include <linux/fs.h> 28#include <linux/fs.h>
29#include <linux/init.h> 29#include <linux/init.h>
30#include <linux/slab.h>
30#include <linux/interrupt.h> 31#include <linux/interrupt.h>
31#include <linux/major.h> 32#include <linux/major.h>
32#include <linux/module.h> 33#include <linux/module.h>
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index 90bd4ef71b2c..f2dbce5f3cd4 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -31,6 +31,7 @@
31#include <linux/smsc911x.h> 31#include <linux/smsc911x.h>
32#include <linux/ata_platform.h> 32#include <linux/ata_platform.h>
33#include <linux/amba/mmci.h> 33#include <linux/amba/mmci.h>
34#include <linux/gfp.h>
34 35
35#include <asm/clkdev.h> 36#include <asm/clkdev.h>
36#include <asm/system.h> 37#include <asm/system.h>
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
index c47d974d52bd..85883b2e0e49 100644
--- a/arch/arm/mach-rpc/dma.c
+++ b/arch/arm/mach-rpc/dma.c
@@ -9,7 +9,6 @@
9 * 9 *
10 * DMA functions specific to RiscPC architecture 10 * DMA functions specific to RiscPC architecture
11 */ 11 */
12#include <linux/slab.h>
13#include <linux/mman.h> 12#include <linux/mman.h>
14#include <linux/init.h> 13#include <linux/init.h>
15#include <linux/interrupt.h> 14#include <linux/interrupt.h>
diff --git a/arch/arm/mach-rpc/include/mach/uncompress.h b/arch/arm/mach-rpc/include/mach/uncompress.h
index d5862368c4f2..8c9e2c7161c6 100644
--- a/arch/arm/mach-rpc/include/mach/uncompress.h
+++ b/arch/arm/mach-rpc/include/mach/uncompress.h
@@ -109,8 +109,6 @@ static inline void flush(void)
109{ 109{
110} 110}
111 111
112static void error(char *x);
113
114/* 112/*
115 * Setup for decompression 113 * Setup for decompression
116 */ 114 */
diff --git a/arch/arm/plat-s3c24xx/s3c2440-cpufreq.c b/arch/arm/mach-s3c2440/s3c2440-cpufreq.c
index 976002fb1b8f..976002fb1b8f 100644
--- a/arch/arm/plat-s3c24xx/s3c2440-cpufreq.c
+++ b/arch/arm/mach-s3c2440/s3c2440-cpufreq.c
diff --git a/arch/arm/mach-s3c64xx/dma.c b/arch/arm/mach-s3c64xx/dma.c
index b62bdf18dca4..33ccf7bf766a 100644
--- a/arch/arm/mach-s3c64xx/dma.c
+++ b/arch/arm/mach-s3c64xx/dma.c
@@ -18,6 +18,7 @@
18#include <linux/dmapool.h> 18#include <linux/dmapool.h>
19#include <linux/sysdev.h> 19#include <linux/sysdev.h>
20#include <linux/errno.h> 20#include <linux/errno.h>
21#include <linux/slab.h>
21#include <linux/delay.h> 22#include <linux/delay.h>
22#include <linux/clk.h> 23#include <linux/clk.h>
23#include <linux/err.h> 24#include <linux/err.h>
diff --git a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S b/arch/arm/mach-s3c64xx/include/mach/debug-macro.S
index b18ac5266dfc..f9ab5d26052a 100644
--- a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S
+++ b/arch/arm/mach-s3c64xx/include/mach/debug-macro.S
@@ -21,7 +21,7 @@
21 * aligned and add in the offset when we load the value here. 21 * aligned and add in the offset when we load the value here.
22 */ 22 */
23 23
24 .macro addruart, rx 24 .macro addruart, rx, rtmp
25 mrc p15, 0, \rx, c1, c0 25 mrc p15, 0, \rx, c1, c0
26 tst \rx, #1 26 tst \rx, #1
27 ldreq \rx, = S3C_PA_UART 27 ldreq \rx, = S3C_PA_UART
diff --git a/arch/arm/mach-s5p6440/include/mach/debug-macro.S b/arch/arm/mach-s5p6440/include/mach/debug-macro.S
index 48cdb0da026c..1347d7f99079 100644
--- a/arch/arm/mach-s5p6440/include/mach/debug-macro.S
+++ b/arch/arm/mach-s5p6440/include/mach/debug-macro.S
@@ -19,7 +19,7 @@
19 * aligned and add in the offset when we load the value here. 19 * aligned and add in the offset when we load the value here.
20 */ 20 */
21 21
22 .macro addruart, rx 22 .macro addruart, rx, rtmp
23 mrc p15, 0, \rx, c1, c0 23 mrc p15, 0, \rx, c1, c0
24 tst \rx, #1 24 tst \rx, #1
25 ldreq \rx, = S3C_PA_UART 25 ldreq \rx, = S3C_PA_UART
diff --git a/arch/arm/mach-s5p6442/include/mach/debug-macro.S b/arch/arm/mach-s5p6442/include/mach/debug-macro.S
index 1aae691e58ef..bb6536147ffb 100644
--- a/arch/arm/mach-s5p6442/include/mach/debug-macro.S
+++ b/arch/arm/mach-s5p6442/include/mach/debug-macro.S
@@ -15,7 +15,7 @@
15#include <mach/map.h> 15#include <mach/map.h>
16#include <plat/regs-serial.h> 16#include <plat/regs-serial.h>
17 17
18 .macro addruart, rx 18 .macro addruart, rx, rtmp
19 mrc p15, 0, \rx, c1, c0 19 mrc p15, 0, \rx, c1, c0
20 tst \rx, #1 20 tst \rx, #1
21 ldreq \rx, = S3C_PA_UART 21 ldreq \rx, = S3C_PA_UART
diff --git a/arch/arm/mach-sa1100/jornada720_ssp.c b/arch/arm/mach-sa1100/jornada720_ssp.c
index 9b6dee5d16db..9d490c66891c 100644
--- a/arch/arm/mach-sa1100/jornada720_ssp.c
+++ b/arch/arm/mach-sa1100/jornada720_ssp.c
@@ -18,7 +18,6 @@
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/slab.h>
22 21
23#include <mach/hardware.h> 22#include <mach/hardware.h>
24#include <mach/jornada720.h> 23#include <mach/jornada720.h>
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index 0b505d9f22d6..c601a75a333d 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -8,7 +8,6 @@
8#include <linux/ioport.h> 8#include <linux/ioport.h>
9#include <linux/serial_core.h> 9#include <linux/serial_core.h>
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/slab.h>
12 11
13#include <mach/hardware.h> 12#include <mach/hardware.h>
14#include <asm/mach-types.h> 13#include <asm/mach-types.h>
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
index a0463d926447..1c2ec96ce261 100644
--- a/arch/arm/mach-shmobile/board-ap4evb.c
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -206,10 +206,32 @@ static struct platform_device keysc_device = {
206 }, 206 },
207}; 207};
208 208
209/* SDHI0 */
210static struct resource sdhi0_resources[] = {
211 [0] = {
212 .name = "SDHI0",
213 .start = 0xe6850000,
214 .end = 0xe68501ff,
215 .flags = IORESOURCE_MEM,
216 },
217 [1] = {
218 .start = 96,
219 .flags = IORESOURCE_IRQ,
220 },
221};
222
223static struct platform_device sdhi0_device = {
224 .name = "sh_mobile_sdhi",
225 .num_resources = ARRAY_SIZE(sdhi0_resources),
226 .resource = sdhi0_resources,
227 .id = 0,
228};
229
209static struct platform_device *ap4evb_devices[] __initdata = { 230static struct platform_device *ap4evb_devices[] __initdata = {
210 &nor_flash_device, 231 &nor_flash_device,
211 &smc911x_device, 232 &smc911x_device,
212 &keysc_device, 233 &keysc_device,
234 &sdhi0_device,
213}; 235};
214 236
215static struct map_desc ap4evb_io_desc[] __initdata = { 237static struct map_desc ap4evb_io_desc[] __initdata = {
@@ -286,6 +308,16 @@ static void __init ap4evb_init(void)
286 gpio_request(GPIO_FN_KEYIN3_133, NULL); 308 gpio_request(GPIO_FN_KEYIN3_133, NULL);
287 gpio_request(GPIO_FN_KEYIN4, NULL); 309 gpio_request(GPIO_FN_KEYIN4, NULL);
288 310
311 /* SDHI0 */
312 gpio_request(GPIO_FN_SDHICD0, NULL);
313 gpio_request(GPIO_FN_SDHIWP0, NULL);
314 gpio_request(GPIO_FN_SDHICMD0, NULL);
315 gpio_request(GPIO_FN_SDHICLK0, NULL);
316 gpio_request(GPIO_FN_SDHID0_3, NULL);
317 gpio_request(GPIO_FN_SDHID0_2, NULL);
318 gpio_request(GPIO_FN_SDHID0_1, NULL);
319 gpio_request(GPIO_FN_SDHID0_0, NULL);
320
289 sh7372_add_standard_devices(); 321 sh7372_add_standard_devices();
290 322
291 platform_add_devices(ap4evb_devices, ARRAY_SIZE(ap4evb_devices)); 323 platform_add_devices(ap4evb_devices, ARRAY_SIZE(ap4evb_devices));
diff --git a/arch/arm/mach-shmobile/board-g3evm.c b/arch/arm/mach-shmobile/board-g3evm.c
index f36c9a94d326..9247503296c4 100644
--- a/arch/arm/mach-shmobile/board-g3evm.c
+++ b/arch/arm/mach-shmobile/board-g3evm.c
@@ -26,9 +26,12 @@
26#include <linux/mtd/mtd.h> 26#include <linux/mtd/mtd.h>
27#include <linux/mtd/partitions.h> 27#include <linux/mtd/partitions.h>
28#include <linux/mtd/physmap.h> 28#include <linux/mtd/physmap.h>
29#include <linux/mtd/sh_flctl.h>
29#include <linux/usb/r8a66597.h> 30#include <linux/usb/r8a66597.h>
30#include <linux/io.h> 31#include <linux/io.h>
31#include <linux/gpio.h> 32#include <linux/gpio.h>
33#include <linux/input.h>
34#include <linux/input/sh_keysc.h>
32#include <mach/sh7367.h> 35#include <mach/sh7367.h>
33#include <mach/common.h> 36#include <mach/common.h>
34#include <asm/mach-types.h> 37#include <asm/mach-types.h>
@@ -127,9 +130,90 @@ static struct platform_device usb_host_device = {
127 .resource = usb_host_resources, 130 .resource = usb_host_resources,
128}; 131};
129 132
133/* KEYSC */
134static struct sh_keysc_info keysc_info = {
135 .mode = SH_KEYSC_MODE_5,
136 .scan_timing = 3,
137 .delay = 100,
138 .keycodes = {
139 KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G,
140 KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N,
141 KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U,
142 KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_HOME, KEY_SLEEP,
143 KEY_WAKEUP, KEY_COFFEE, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4,
144 KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_STOP, KEY_COMPUTER,
145 },
146};
147
148static struct resource keysc_resources[] = {
149 [0] = {
150 .name = "KEYSC",
151 .start = 0xe61b0000,
152 .end = 0xe61b000f,
153 .flags = IORESOURCE_MEM,
154 },
155 [1] = {
156 .start = 79,
157 .flags = IORESOURCE_IRQ,
158 },
159};
160
161static struct platform_device keysc_device = {
162 .name = "sh_keysc",
163 .num_resources = ARRAY_SIZE(keysc_resources),
164 .resource = keysc_resources,
165 .dev = {
166 .platform_data = &keysc_info,
167 },
168};
169
170static struct mtd_partition nand_partition_info[] = {
171 {
172 .name = "system",
173 .offset = 0,
174 .size = 64 * 1024 * 1024,
175 },
176 {
177 .name = "userdata",
178 .offset = MTDPART_OFS_APPEND,
179 .size = 128 * 1024 * 1024,
180 },
181 {
182 .name = "cache",
183 .offset = MTDPART_OFS_APPEND,
184 .size = 64 * 1024 * 1024,
185 },
186};
187
188static struct resource nand_flash_resources[] = {
189 [0] = {
190 .start = 0xe6a30000,
191 .end = 0xe6a3009b,
192 .flags = IORESOURCE_MEM,
193 }
194};
195
196static struct sh_flctl_platform_data nand_flash_data = {
197 .parts = nand_partition_info,
198 .nr_parts = ARRAY_SIZE(nand_partition_info),
199 .flcmncr_val = QTSEL_E | FCKSEL_E | TYPESEL_SET | NANWF_E
200 | SHBUSSEL | SEL_16BIT,
201};
202
203static struct platform_device nand_flash_device = {
204 .name = "sh_flctl",
205 .resource = nand_flash_resources,
206 .num_resources = ARRAY_SIZE(nand_flash_resources),
207 .dev = {
208 .platform_data = &nand_flash_data,
209 },
210};
211
130static struct platform_device *g3evm_devices[] __initdata = { 212static struct platform_device *g3evm_devices[] __initdata = {
131 &nor_flash_device, 213 &nor_flash_device,
132 &usb_host_device, 214 &usb_host_device,
215 &keysc_device,
216 &nand_flash_device,
133}; 217};
134 218
135static struct map_desc g3evm_io_desc[] __initdata = { 219static struct map_desc g3evm_io_desc[] __initdata = {
@@ -196,6 +280,44 @@ static void __init g3evm_init(void)
196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */ 280 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */
197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */ 281 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */
198 282
283 /* KEYSC @ CN7 */
284 gpio_request(GPIO_FN_PORT42_KEYOUT0, NULL);
285 gpio_request(GPIO_FN_PORT43_KEYOUT1, NULL);
286 gpio_request(GPIO_FN_PORT44_KEYOUT2, NULL);
287 gpio_request(GPIO_FN_PORT45_KEYOUT3, NULL);
288 gpio_request(GPIO_FN_PORT46_KEYOUT4, NULL);
289 gpio_request(GPIO_FN_PORT47_KEYOUT5, NULL);
290 gpio_request(GPIO_FN_PORT48_KEYIN0_PU, NULL);
291 gpio_request(GPIO_FN_PORT49_KEYIN1_PU, NULL);
292 gpio_request(GPIO_FN_PORT50_KEYIN2_PU, NULL);
293 gpio_request(GPIO_FN_PORT55_KEYIN3_PU, NULL);
294 gpio_request(GPIO_FN_PORT56_KEYIN4_PU, NULL);
295 gpio_request(GPIO_FN_PORT57_KEYIN5_PU, NULL);
296 gpio_request(GPIO_FN_PORT58_KEYIN6_PU, NULL);
297
298 /* FLCTL */
299 gpio_request(GPIO_FN_FCE0, NULL);
300 gpio_request(GPIO_FN_D0_ED0_NAF0, NULL);
301 gpio_request(GPIO_FN_D1_ED1_NAF1, NULL);
302 gpio_request(GPIO_FN_D2_ED2_NAF2, NULL);
303 gpio_request(GPIO_FN_D3_ED3_NAF3, NULL);
304 gpio_request(GPIO_FN_D4_ED4_NAF4, NULL);
305 gpio_request(GPIO_FN_D5_ED5_NAF5, NULL);
306 gpio_request(GPIO_FN_D6_ED6_NAF6, NULL);
307 gpio_request(GPIO_FN_D7_ED7_NAF7, NULL);
308 gpio_request(GPIO_FN_D8_ED8_NAF8, NULL);
309 gpio_request(GPIO_FN_D9_ED9_NAF9, NULL);
310 gpio_request(GPIO_FN_D10_ED10_NAF10, NULL);
311 gpio_request(GPIO_FN_D11_ED11_NAF11, NULL);
312 gpio_request(GPIO_FN_D12_ED12_NAF12, NULL);
313 gpio_request(GPIO_FN_D13_ED13_NAF13, NULL);
314 gpio_request(GPIO_FN_D14_ED14_NAF14, NULL);
315 gpio_request(GPIO_FN_D15_ED15_NAF15, NULL);
316 gpio_request(GPIO_FN_WE0_XWR0_FWE, NULL);
317 gpio_request(GPIO_FN_FRB, NULL);
318 /* FOE, FCDE, FSC on dedicated pins */
319 __raw_writel(__raw_readl(0xe6158048) & ~(1 << 15), 0xe6158048);
320
199 sh7367_add_standard_devices(); 321 sh7367_add_standard_devices();
200 322
201 platform_add_devices(g3evm_devices, ARRAY_SIZE(g3evm_devices)); 323 platform_add_devices(g3evm_devices, ARRAY_SIZE(g3evm_devices));
diff --git a/arch/arm/mach-shmobile/board-g4evm.c b/arch/arm/mach-shmobile/board-g4evm.c
index 5acd623f93e7..10673a90be52 100644
--- a/arch/arm/mach-shmobile/board-g4evm.c
+++ b/arch/arm/mach-shmobile/board-g4evm.c
@@ -28,6 +28,8 @@
28#include <linux/mtd/physmap.h> 28#include <linux/mtd/physmap.h>
29#include <linux/usb/r8a66597.h> 29#include <linux/usb/r8a66597.h>
30#include <linux/io.h> 30#include <linux/io.h>
31#include <linux/input.h>
32#include <linux/input/sh_keysc.h>
31#include <linux/gpio.h> 33#include <linux/gpio.h>
32#include <mach/sh7377.h> 34#include <mach/sh7377.h>
33#include <mach/common.h> 35#include <mach/common.h>
@@ -128,9 +130,49 @@ static struct platform_device usb_host_device = {
128 .resource = usb_host_resources, 130 .resource = usb_host_resources,
129}; 131};
130 132
133/* KEYSC */
134static struct sh_keysc_info keysc_info = {
135 .mode = SH_KEYSC_MODE_5,
136 .scan_timing = 3,
137 .delay = 100,
138 .keycodes = {
139 KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F,
140 KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L,
141 KEY_M, KEY_N, KEY_U, KEY_P, KEY_Q, KEY_R,
142 KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X,
143 KEY_Y, KEY_Z, KEY_HOME, KEY_SLEEP, KEY_WAKEUP, KEY_COFFEE,
144 KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5,
145 KEY_6, KEY_7, KEY_8, KEY_9, KEY_STOP, KEY_COMPUTER,
146 },
147};
148
149static struct resource keysc_resources[] = {
150 [0] = {
151 .name = "KEYSC",
152 .start = 0xe61b0000,
153 .end = 0xe61b000f,
154 .flags = IORESOURCE_MEM,
155 },
156 [1] = {
157 .start = 79,
158 .flags = IORESOURCE_IRQ,
159 },
160};
161
162static struct platform_device keysc_device = {
163 .name = "sh_keysc",
164 .id = 0, /* keysc0 clock */
165 .num_resources = ARRAY_SIZE(keysc_resources),
166 .resource = keysc_resources,
167 .dev = {
168 .platform_data = &keysc_info,
169 },
170};
171
131static struct platform_device *g4evm_devices[] __initdata = { 172static struct platform_device *g4evm_devices[] __initdata = {
132 &nor_flash_device, 173 &nor_flash_device,
133 &usb_host_device, 174 &usb_host_device,
175 &keysc_device,
134}; 176};
135 177
136static struct map_desc g4evm_io_desc[] __initdata = { 178static struct map_desc g4evm_io_desc[] __initdata = {
@@ -196,6 +238,21 @@ static void __init g4evm_init(void)
196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */ 238 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */
197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */ 239 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */
198 240
241 /* KEYSC @ CN31 */
242 gpio_request(GPIO_FN_PORT60_KEYOUT5, NULL);
243 gpio_request(GPIO_FN_PORT61_KEYOUT4, NULL);
244 gpio_request(GPIO_FN_PORT62_KEYOUT3, NULL);
245 gpio_request(GPIO_FN_PORT63_KEYOUT2, NULL);
246 gpio_request(GPIO_FN_PORT64_KEYOUT1, NULL);
247 gpio_request(GPIO_FN_PORT65_KEYOUT0, NULL);
248 gpio_request(GPIO_FN_PORT66_KEYIN0_PU, NULL);
249 gpio_request(GPIO_FN_PORT67_KEYIN1_PU, NULL);
250 gpio_request(GPIO_FN_PORT68_KEYIN2_PU, NULL);
251 gpio_request(GPIO_FN_PORT69_KEYIN3_PU, NULL);
252 gpio_request(GPIO_FN_PORT70_KEYIN4_PU, NULL);
253 gpio_request(GPIO_FN_PORT71_KEYIN5_PU, NULL);
254 gpio_request(GPIO_FN_PORT72_KEYIN6_PU, NULL);
255
199 sh7377_add_standard_devices(); 256 sh7377_add_standard_devices();
200 257
201 platform_add_devices(g4evm_devices, ARRAY_SIZE(g4evm_devices)); 258 platform_add_devices(g4evm_devices, ARRAY_SIZE(g4evm_devices));
diff --git a/arch/arm/mach-shmobile/clock-sh7367.c b/arch/arm/mach-shmobile/clock-sh7367.c
index 58bd54e1113a..bb940c6e4e6c 100644
--- a/arch/arm/mach-shmobile/clock-sh7367.c
+++ b/arch/arm/mach-shmobile/clock-sh7367.c
@@ -75,6 +75,11 @@ static struct clk usb0_clk = {
75 .name = "usb0", 75 .name = "usb0",
76}; 76};
77 77
78/* a static keysc0 clk for now - enough to get sh_keysc working */
79static struct clk keysc0_clk = {
80 .name = "keysc0",
81};
82
78static struct clk_lookup lookups[] = { 83static struct clk_lookup lookups[] = {
79 { 84 {
80 .clk = &peripheral_clk, 85 .clk = &peripheral_clk,
@@ -82,6 +87,8 @@ static struct clk_lookup lookups[] = {
82 .clk = &r_clk, 87 .clk = &r_clk,
83 }, { 88 }, {
84 .clk = &usb0_clk, 89 .clk = &usb0_clk,
90 }, {
91 .clk = &keysc0_clk,
85 } 92 }
86}; 93};
87 94
diff --git a/arch/arm/mach-shmobile/intc-sh7367.c b/arch/arm/mach-shmobile/intc-sh7367.c
index 6a547b47aabb..5ff70cadfc32 100644
--- a/arch/arm/mach-shmobile/intc-sh7367.c
+++ b/arch/arm/mach-shmobile/intc-sh7367.c
@@ -27,6 +27,8 @@
27 27
28enum { 28enum {
29 UNUSED_INTCA = 0, 29 UNUSED_INTCA = 0,
30 ENABLED,
31 DISABLED,
30 32
31 /* interrupt sources INTCA */ 33 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
@@ -46,8 +48,8 @@ enum {
46 MSIOF2, MSIOF1, 48 MSIOF2, MSIOF1,
47 SCIFA4, SCIFA5, SCIFB, 49 SCIFA4, SCIFA5, SCIFB,
48 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 50 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
49 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 51 SDHI0,
50 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3, 52 SDHI1,
51 MSU_MSU, MSU_MSU2, 53 MSU_MSU, MSU_MSU2,
52 IREM, 54 IREM,
53 SIU, 55 SIU,
@@ -59,7 +61,7 @@ enum {
59 TTI20, 61 TTI20,
60 MISTY, 62 MISTY,
61 DDM, 63 DDM,
62 SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3, 64 SDHI2,
63 RWDT0, RWDT1, 65 RWDT0, RWDT1,
64 DMAC_1_DEI0, DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3, 66 DMAC_1_DEI0, DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3,
65 DMAC_2_DEI4, DMAC_2_DEI5, DMAC_2_DADERR, 67 DMAC_2_DEI4, DMAC_2_DEI5, DMAC_2_DADERR,
@@ -70,7 +72,7 @@ enum {
70 72
71 /* interrupt groups INTCA */ 73 /* interrupt groups INTCA */
72 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, 74 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2,
73 ETM11, ARM11, USBHS, FLCTL, IIC1, SDHI0, SDHI1, SDHI2, 75 ETM11, ARM11, USBHS, FLCTL, IIC1
74}; 76};
75 77
76static struct intc_vect intca_vectors[] = { 78static struct intc_vect intca_vectors[] = {
@@ -105,10 +107,10 @@ static struct intc_vect intca_vectors[] = {
105 INTC_VECT(SCIFB, 0x0d60), 107 INTC_VECT(SCIFB, 0x0d60),
106 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 108 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
107 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 109 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
108 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 110 INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20),
109 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 111 INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60),
110 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 112 INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0),
111 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0), 113 INTC_VECT(SDHI1, 0x0ec0), INTC_VECT(SDHI1, 0x0ee0),
112 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40), 114 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40),
113 INTC_VECT(IREM, 0x0f60), 115 INTC_VECT(IREM, 0x0f60),
114 INTC_VECT(SIU, 0x0fa0), 116 INTC_VECT(SIU, 0x0fa0),
@@ -122,8 +124,8 @@ static struct intc_vect intca_vectors[] = {
122 INTC_VECT(TTI20, 0x1100), 124 INTC_VECT(TTI20, 0x1100),
123 INTC_VECT(MISTY, 0x1120), 125 INTC_VECT(MISTY, 0x1120),
124 INTC_VECT(DDM, 0x1140), 126 INTC_VECT(DDM, 0x1140),
125 INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220), 127 INTC_VECT(SDHI2, 0x1200), INTC_VECT(SDHI2, 0x1220),
126 INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260), 128 INTC_VECT(SDHI2, 0x1240), INTC_VECT(SDHI2, 0x1260),
127 INTC_VECT(RWDT0, 0x1280), INTC_VECT(RWDT1, 0x12a0), 129 INTC_VECT(RWDT0, 0x1280), INTC_VECT(RWDT1, 0x12a0),
128 INTC_VECT(DMAC_1_DEI0, 0x2000), INTC_VECT(DMAC_1_DEI1, 0x2020), 130 INTC_VECT(DMAC_1_DEI0, 0x2000), INTC_VECT(DMAC_1_DEI1, 0x2020),
129 INTC_VECT(DMAC_1_DEI2, 0x2040), INTC_VECT(DMAC_1_DEI3, 0x2060), 131 INTC_VECT(DMAC_1_DEI2, 0x2040), INTC_VECT(DMAC_1_DEI3, 0x2060),
@@ -158,12 +160,6 @@ static struct intc_group intca_groups[] __initdata = {
158 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 160 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
159 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 161 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
160 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 162 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
161 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
162 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
163 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
164 SDHI1_SDHI1I2, SDHI1_SDHI1I3),
165 INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1,
166 SDHI2_SDHI2I2, SDHI2_SDHI2I3),
167}; 163};
168 164
169static struct intc_mask_reg intca_mask_registers[] = { 165static struct intc_mask_reg intca_mask_registers[] = {
@@ -193,10 +189,10 @@ static struct intc_mask_reg intca_mask_registers[] = {
193 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 189 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
194 0, 0, MSIOF2, 0 } }, 190 0, 0, MSIOF2, 0 } },
195 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 191 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
196 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 192 { DISABLED, DISABLED, ENABLED, ENABLED,
197 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 193 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
198 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 194 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
199 { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 195 { DISABLED, DISABLED, ENABLED, ENABLED,
200 TTI20, USBDMAC_USHDMI, SPU, SIU } }, 196 TTI20, USBDMAC_USHDMI, SPU, SIU } },
201 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 197 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
202 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, 198 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
@@ -211,7 +207,7 @@ static struct intc_mask_reg intca_mask_registers[] = {
211 { 0, 0, TPU0, TPU1, 207 { 0, 0, TPU0, TPU1,
212 TPU2, TPU3, TPU4, 0 } }, 208 TPU2, TPU3, TPU4, 0 } },
213 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */ 209 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */
214 { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0, 210 { DISABLED, DISABLED, ENABLED, ENABLED,
215 MISTY, CMT3, RWDT1, RWDT0 } }, 211 MISTY, CMT3, RWDT1, RWDT0 } },
216}; 212};
217 213
@@ -258,10 +254,14 @@ static struct intc_mask_reg intca_ack_registers[] __initdata = {
258 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, 254 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } },
259}; 255};
260 256
261static DECLARE_INTC_DESC_ACK(intca_desc, "sh7367-intca", 257static struct intc_desc intca_desc __initdata = {
262 intca_vectors, intca_groups, 258 .name = "sh7367-intca",
263 intca_mask_registers, intca_prio_registers, 259 .force_enable = ENABLED,
264 intca_sense_registers, intca_ack_registers); 260 .force_disable = DISABLED,
261 .hw = INTC_HW_DESC(intca_vectors, intca_groups,
262 intca_mask_registers, intca_prio_registers,
263 intca_sense_registers, intca_ack_registers),
264};
265 265
266void __init sh7367_init_irq(void) 266void __init sh7367_init_irq(void)
267{ 267{
diff --git a/arch/arm/mach-shmobile/intc-sh7372.c b/arch/arm/mach-shmobile/intc-sh7372.c
index c57a923f97a6..3ce9d9bd5899 100644
--- a/arch/arm/mach-shmobile/intc-sh7372.c
+++ b/arch/arm/mach-shmobile/intc-sh7372.c
@@ -27,6 +27,8 @@
27 27
28enum { 28enum {
29 UNUSED_INTCA = 0, 29 UNUSED_INTCA = 0,
30 ENABLED,
31 DISABLED,
30 32
31 /* interrupt sources INTCA */ 33 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
@@ -47,14 +49,14 @@ enum {
47 MSIOF2, MSIOF1, 49 MSIOF2, MSIOF1,
48 SCIFA4, SCIFA5, SCIFB, 50 SCIFA4, SCIFA5, SCIFB,
49 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 51 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
50 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 52 SDHI0,
51 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, 53 SDHI1,
52 IRREM, 54 IRREM,
53 IRDA, 55 IRDA,
54 TPU0, 56 TPU0,
55 TTI20, 57 TTI20,
56 DDM, 58 DDM,
57 SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3, 59 SDHI2,
58 RWDT0, 60 RWDT0,
59 DMAC1_1_DEI0, DMAC1_1_DEI1, DMAC1_1_DEI2, DMAC1_1_DEI3, 61 DMAC1_1_DEI0, DMAC1_1_DEI1, DMAC1_1_DEI2, DMAC1_1_DEI3,
60 DMAC1_2_DEI4, DMAC1_2_DEI5, DMAC1_2_DADERR, 62 DMAC1_2_DEI4, DMAC1_2_DEI5, DMAC1_2_DADERR,
@@ -82,7 +84,7 @@ enum {
82 84
83 /* interrupt groups INTCA */ 85 /* interrupt groups INTCA */
84 DMAC1_1, DMAC1_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT, 86 DMAC1_1, DMAC1_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT,
85 AP_ARM1, AP_ARM2, SPU2, FLCTL, IIC1, SDHI0, SDHI1, SDHI2 87 AP_ARM1, AP_ARM2, SPU2, FLCTL, IIC1
86}; 88};
87 89
88static struct intc_vect intca_vectors[] __initdata = { 90static struct intc_vect intca_vectors[] __initdata = {
@@ -123,17 +125,17 @@ static struct intc_vect intca_vectors[] __initdata = {
123 INTC_VECT(SCIFB, 0x0d60), 125 INTC_VECT(SCIFB, 0x0d60),
124 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 126 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
125 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 127 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
126 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 128 INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20),
127 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 129 INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60),
128 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 130 INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0),
129 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), 131 INTC_VECT(SDHI1, 0x0ec0),
130 INTC_VECT(IRREM, 0x0f60), 132 INTC_VECT(IRREM, 0x0f60),
131 INTC_VECT(IRDA, 0x0480), 133 INTC_VECT(IRDA, 0x0480),
132 INTC_VECT(TPU0, 0x04a0), 134 INTC_VECT(TPU0, 0x04a0),
133 INTC_VECT(TTI20, 0x1100), 135 INTC_VECT(TTI20, 0x1100),
134 INTC_VECT(DDM, 0x1140), 136 INTC_VECT(DDM, 0x1140),
135 INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220), 137 INTC_VECT(SDHI2, 0x1200), INTC_VECT(SDHI2, 0x1220),
136 INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260), 138 INTC_VECT(SDHI2, 0x1240), INTC_VECT(SDHI2, 0x1260),
137 INTC_VECT(RWDT0, 0x1280), 139 INTC_VECT(RWDT0, 0x1280),
138 INTC_VECT(DMAC1_1_DEI0, 0x2000), INTC_VECT(DMAC1_1_DEI1, 0x2020), 140 INTC_VECT(DMAC1_1_DEI0, 0x2000), INTC_VECT(DMAC1_1_DEI1, 0x2020),
139 INTC_VECT(DMAC1_1_DEI2, 0x2040), INTC_VECT(DMAC1_1_DEI3, 0x2060), 141 INTC_VECT(DMAC1_1_DEI2, 0x2040), INTC_VECT(DMAC1_1_DEI3, 0x2060),
@@ -193,12 +195,6 @@ static struct intc_group intca_groups[] __initdata = {
193 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 195 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
194 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 196 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
195 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 197 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
196 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
197 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
198 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
199 SDHI1_SDHI1I2),
200 INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1,
201 SDHI2_SDHI2I2, SDHI2_SDHI2I3),
202 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM), 198 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM),
203}; 199};
204 200
@@ -234,10 +230,10 @@ static struct intc_mask_reg intca_mask_registers[] __initdata = {
234 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 230 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
235 0, 0, MSIOF2, 0 } }, 231 0, 0, MSIOF2, 0 } },
236 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 232 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
237 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 233 { DISABLED, DISABLED, ENABLED, ENABLED,
238 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 234 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
239 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 235 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
240 { 0, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 236 { 0, DISABLED, ENABLED, ENABLED,
241 TTI20, USBHSDMAC0_USHDMI, 0, 0 } }, 237 TTI20, USBHSDMAC0_USHDMI, 0, 0 } },
242 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 238 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
243 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, 239 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
@@ -252,7 +248,7 @@ static struct intc_mask_reg intca_mask_registers[] __initdata = {
252 { 0, 0, TPU0, 0, 248 { 0, 0, TPU0, 0,
253 0, 0, 0, 0 } }, 249 0, 0, 0, 0 } },
254 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */ 250 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */
255 { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0, 251 { DISABLED, DISABLED, ENABLED, ENABLED,
256 0, CMT3, 0, RWDT0 } }, 252 0, CMT3, 0, RWDT0 } },
257 { 0xe6950080, 0xe69500c0, 8, /* IMR0A3 / IMCR0A3 */ 253 { 0xe6950080, 0xe69500c0, 8, /* IMR0A3 / IMCR0A3 */
258 { SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM, 0, 254 { SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM, 0,
@@ -358,10 +354,14 @@ static struct intc_mask_reg intca_ack_registers[] __initdata = {
358 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, 354 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
359}; 355};
360 356
361static DECLARE_INTC_DESC_ACK(intca_desc, "sh7372-intca", 357static struct intc_desc intca_desc __initdata = {
362 intca_vectors, intca_groups, 358 .name = "sh7372-intca",
363 intca_mask_registers, intca_prio_registers, 359 .force_enable = ENABLED,
364 intca_sense_registers, intca_ack_registers); 360 .force_disable = DISABLED,
361 .hw = INTC_HW_DESC(intca_vectors, intca_groups,
362 intca_mask_registers, intca_prio_registers,
363 intca_sense_registers, intca_ack_registers),
364};
365 365
366void __init sh7372_init_irq(void) 366void __init sh7372_init_irq(void)
367{ 367{
diff --git a/arch/arm/mach-shmobile/intc-sh7377.c b/arch/arm/mach-shmobile/intc-sh7377.c
index 125021cfba5c..5c781e2d1897 100644
--- a/arch/arm/mach-shmobile/intc-sh7377.c
+++ b/arch/arm/mach-shmobile/intc-sh7377.c
@@ -27,6 +27,8 @@
27 27
28enum { 28enum {
29 UNUSED_INTCA = 0, 29 UNUSED_INTCA = 0,
30 ENABLED,
31 DISABLED,
30 32
31 /* interrupt sources INTCA */ 33 /* interrupt sources INTCA */
32 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A,
@@ -49,8 +51,8 @@ enum {
49 MSIOF2, MSIOF1, 51 MSIOF2, MSIOF1,
50 SCIFA4, SCIFA5, SCIFB, 52 SCIFA4, SCIFA5, SCIFB,
51 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 53 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I,
52 SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 54 SDHI0,
53 SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3, 55 SDHI1,
54 MSU_MSU, MSU_MSU2, 56 MSU_MSU, MSU_MSU2,
55 IRREM, 57 IRREM,
56 MSUG, 58 MSUG,
@@ -84,7 +86,7 @@ enum {
84 86
85 /* interrupt groups INTCA */ 87 /* interrupt groups INTCA */
86 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT, 88 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT,
87 AP_ARM1, AP_ARM2, USBHS, SPU2, FLCTL, IIC1, SDHI0, SDHI1, 89 AP_ARM1, AP_ARM2, USBHS, SPU2, FLCTL, IIC1,
88 ICUSB, ICUDMC 90 ICUSB, ICUDMC
89}; 91};
90 92
@@ -128,10 +130,10 @@ static struct intc_vect intca_vectors[] = {
128 INTC_VECT(SCIFB, 0x0d60), 130 INTC_VECT(SCIFB, 0x0d60),
129 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 131 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0),
130 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 132 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0),
131 INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 133 INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20),
132 INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 134 INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60),
133 INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 135 INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0),
134 INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0), 136 INTC_VECT(SDHI1, 0x0ec0), INTC_VECT(SDHI1, 0x0ee0),
135 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40), 137 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40),
136 INTC_VECT(IRREM, 0x0f60), 138 INTC_VECT(IRREM, 0x0f60),
137 INTC_VECT(MSUG, 0x0fa0), 139 INTC_VECT(MSUG, 0x0fa0),
@@ -195,10 +197,6 @@ static struct intc_group intca_groups[] __initdata = {
195 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 197 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI,
196 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 198 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I),
197 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 199 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1),
198 INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1,
199 SDHI0_SDHI0I2, SDHI0_SDHI0I3),
200 INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1,
201 SDHI1_SDHI1I2, SDHI1_SDHI1I3),
202 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM), 200 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM),
203 INTC_GROUP(ICUSB, ICUSB_ICUSB0, ICUSB_ICUSB1), 201 INTC_GROUP(ICUSB, ICUSB_ICUSB0, ICUSB_ICUSB1),
204 INTC_GROUP(ICUDMC, ICUDMC_ICUDMC1, ICUDMC_ICUDMC2), 202 INTC_GROUP(ICUDMC, ICUDMC_ICUDMC1, ICUDMC_ICUDMC2),
@@ -236,10 +234,10 @@ static struct intc_mask_reg intca_mask_registers[] = {
236 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 234 { SCIFB, SCIFA5, SCIFA4, MSIOF1,
237 0, 0, MSIOF2, 0 } }, 235 0, 0, MSIOF2, 0 } },
238 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 236 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */
239 { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 237 { DISABLED, DISABLED, ENABLED, ENABLED,
240 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 238 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } },
241 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 239 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */
242 { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 240 { DISABLED, DISABLED, ENABLED, ENABLED,
243 TTI20, USBDMAC_USHDMI, 0, MSUG } }, 241 TTI20, USBDMAC_USHDMI, 0, MSUG } },
244 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 242 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */
245 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, 243 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10,
@@ -339,10 +337,14 @@ static struct intc_mask_reg intca_ack_registers[] __initdata = {
339 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, 337 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } },
340}; 338};
341 339
342static DECLARE_INTC_DESC_ACK(intca_desc, "sh7377-intca", 340static struct intc_desc intca_desc __initdata = {
343 intca_vectors, intca_groups, 341 .name = "sh7377-intca",
344 intca_mask_registers, intca_prio_registers, 342 .force_enable = ENABLED,
345 intca_sense_registers, intca_ack_registers); 343 .force_disable = DISABLED,
344 .hw = INTC_HW_DESC(intca_vectors, intca_groups,
345 intca_mask_registers, intca_prio_registers,
346 intca_sense_registers, intca_ack_registers),
347};
346 348
347void __init sh7377_init_irq(void) 349void __init sh7377_init_irq(void)
348{ 350{
diff --git a/arch/arm/mach-u300/dummyspichip.c b/arch/arm/mach-u300/dummyspichip.c
index 962f9de454de..5f55012b7c9e 100644
--- a/arch/arm/mach-u300/dummyspichip.c
+++ b/arch/arm/mach-u300/dummyspichip.c
@@ -15,6 +15,7 @@
15#include <linux/mutex.h> 15#include <linux/mutex.h>
16#include <linux/spi/spi.h> 16#include <linux/spi/spi.h>
17#include <linux/dma-mapping.h> 17#include <linux/dma-mapping.h>
18#include <linux/slab.h>
18/* 19/*
19 * WARNING! Do not include this pl022-specific controller header 20 * WARNING! Do not include this pl022-specific controller header
20 * for any generic driver. It is only done in this dummy chip 21 * for any generic driver. It is only done in this dummy chip
diff --git a/arch/arm/mach-u300/mmc.c b/arch/arm/mach-u300/mmc.c
index 109f5a6e71c7..77fbb1e0e528 100644
--- a/arch/arm/mach-u300/mmc.c
+++ b/arch/arm/mach-u300/mmc.c
@@ -20,6 +20,7 @@
20#include <linux/regulator/machine.h> 20#include <linux/regulator/machine.h>
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <linux/amba/mmci.h> 22#include <linux/amba/mmci.h>
23#include <linux/slab.h>
23 24
24#include "mmc.h" 25#include "mmc.h"
25#include "padmux.h" 26#include "padmux.h"
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 9ddb49b1cb71..3b1a4ee01815 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -32,6 +32,7 @@
32#include <linux/clockchips.h> 32#include <linux/clockchips.h>
33#include <linux/cnt32_to_63.h> 33#include <linux/cnt32_to_63.h>
34#include <linux/io.h> 34#include <linux/io.h>
35#include <linux/gfp.h>
35 36
36#include <asm/clkdev.h> 37#include <asm/clkdev.h>
37#include <asm/system.h> 38#include <asm/system.h>
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c
index 7161ba23b58a..334f0df4e948 100644
--- a/arch/arm/mach-versatile/pci.c
+++ b/arch/arm/mach-versatile/pci.c
@@ -16,7 +16,6 @@
16 */ 16 */
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/pci.h> 18#include <linux/pci.h>
19#include <linux/slab.h>
20#include <linux/ioport.h> 19#include <linux/ioport.h>
21#include <linux/interrupt.h> 20#include <linux/interrupt.h>
22#include <linux/spinlock.h> 21#include <linux/spinlock.h>
diff --git a/arch/arm/mach-w90x900/dev.c b/arch/arm/mach-w90x900/dev.c
index 48876122df91..e2958eb567f9 100644
--- a/arch/arm/mach-w90x900/dev.c
+++ b/arch/arm/mach-w90x900/dev.c
@@ -18,6 +18,7 @@
18#include <linux/timer.h> 18#include <linux/timer.h>
19#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/slab.h>
21 22
22#include <linux/mtd/physmap.h> 23#include <linux/mtd/physmap.h>
23#include <linux/mtd/mtd.h> 24#include <linux/mtd/mtd.h>
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index c4ed9f93f646..5bd7c89a6045 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -736,6 +736,12 @@ config NEEDS_SYSCALL_FOR_CMPXCHG
736config OUTER_CACHE 736config OUTER_CACHE
737 bool 737 bool
738 738
739config OUTER_CACHE_SYNC
740 bool
741 help
742 The outer cache has a outer_cache_fns.sync function pointer
743 that can be used to drain the write buffer of the outer cache.
744
739config CACHE_FEROCEON_L2 745config CACHE_FEROCEON_L2
740 bool "Enable the Feroceon L2 cache controller" 746 bool "Enable the Feroceon L2 cache controller"
741 depends on ARCH_KIRKWOOD || ARCH_MV78XX0 747 depends on ARCH_KIRKWOOD || ARCH_MV78XX0
@@ -757,6 +763,7 @@ config CACHE_L2X0
757 REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4 763 REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4
758 default y 764 default y
759 select OUTER_CACHE 765 select OUTER_CACHE
766 select OUTER_CACHE_SYNC
760 help 767 help
761 This option enables the L2x0 PrimeCell. 768 This option enables the L2x0 PrimeCell.
762 769
@@ -781,3 +788,9 @@ config ARM_L1_CACHE_SHIFT
781 int 788 int
782 default 6 if ARM_L1_CACHE_SHIFT_6 789 default 6 if ARM_L1_CACHE_SHIFT_6
783 default 5 790 default 5
791
792config ARCH_HAS_BARRIERS
793 bool
794 help
795 This option allows the use of custom mandatory barriers
796 included via the mach/barriers.h file.
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
index 07334632d3e2..21ad68ba22ba 100644
--- a/arch/arm/mm/cache-l2x0.c
+++ b/arch/arm/mm/cache-l2x0.c
@@ -93,6 +93,15 @@ static inline void l2x0_flush_line(unsigned long addr)
93} 93}
94#endif 94#endif
95 95
96static void l2x0_cache_sync(void)
97{
98 unsigned long flags;
99
100 spin_lock_irqsave(&l2x0_lock, flags);
101 cache_sync();
102 spin_unlock_irqrestore(&l2x0_lock, flags);
103}
104
96static inline void l2x0_inv_all(void) 105static inline void l2x0_inv_all(void)
97{ 106{
98 unsigned long flags; 107 unsigned long flags;
@@ -225,6 +234,7 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
225 outer_cache.inv_range = l2x0_inv_range; 234 outer_cache.inv_range = l2x0_inv_range;
226 outer_cache.clean_range = l2x0_clean_range; 235 outer_cache.clean_range = l2x0_clean_range;
227 outer_cache.flush_range = l2x0_flush_range; 236 outer_cache.flush_range = l2x0_flush_range;
237 outer_cache.sync = l2x0_cache_sync;
228 238
229 printk(KERN_INFO "L2X0 cache controller enabled\n"); 239 printk(KERN_INFO "L2X0 cache controller enabled\n");
230} 240}
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c
index 8bca4dea6dfa..f55fa1044f72 100644
--- a/arch/arm/mm/copypage-v6.c
+++ b/arch/arm/mm/copypage-v6.c
@@ -41,14 +41,7 @@ static void v6_copy_user_highpage_nonaliasing(struct page *to,
41 kfrom = kmap_atomic(from, KM_USER0); 41 kfrom = kmap_atomic(from, KM_USER0);
42 kto = kmap_atomic(to, KM_USER1); 42 kto = kmap_atomic(to, KM_USER1);
43 copy_page(kto, kfrom); 43 copy_page(kto, kfrom);
44#ifdef CONFIG_HIGHMEM 44 __cpuc_flush_dcache_area(kto, PAGE_SIZE);
45 /*
46 * kmap_atomic() doesn't set the page virtual address, and
47 * kunmap_atomic() takes care of cache flushing already.
48 */
49 if (page_address(to) != NULL)
50#endif
51 __cpuc_flush_dcache_area(kto, PAGE_SIZE);
52 kunmap_atomic(kto, KM_USER1); 45 kunmap_atomic(kto, KM_USER1);
53 kunmap_atomic(kfrom, KM_USER0); 46 kunmap_atomic(kfrom, KM_USER0);
54} 47}
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 0da7eccf7749..13fa536d82e6 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -11,7 +11,7 @@
11 */ 11 */
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/slab.h> 14#include <linux/gfp.h>
15#include <linux/errno.h> 15#include <linux/errno.h>
16#include <linux/list.h> 16#include <linux/list.h>
17#include <linux/init.h> 17#include <linux/init.h>
@@ -464,6 +464,11 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset,
464 vaddr += offset; 464 vaddr += offset;
465 op(vaddr, len, dir); 465 op(vaddr, len, dir);
466 kunmap_high(page); 466 kunmap_high(page);
467 } else if (cache_is_vipt()) {
468 pte_t saved_pte;
469 vaddr = kmap_high_l1_vipt(page, &saved_pte);
470 op(vaddr + offset, len, dir);
471 kunmap_high_l1_vipt(page, saved_pte);
467 } 472 }
468 } else { 473 } else {
469 vaddr = page_address(page) + offset; 474 vaddr = page_address(page) + offset;
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c
index c9b97e9836a2..0d414c28eb2c 100644
--- a/arch/arm/mm/fault-armv.c
+++ b/arch/arm/mm/fault-armv.c
@@ -16,6 +16,7 @@
16#include <linux/vmalloc.h> 16#include <linux/vmalloc.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/pagemap.h> 18#include <linux/pagemap.h>
19#include <linux/gfp.h>
19 20
20#include <asm/bugs.h> 21#include <asm/bugs.h>
21#include <asm/cacheflush.h> 22#include <asm/cacheflush.h>
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index e34f095e2090..c6844cb9b508 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -13,6 +13,7 @@
13 13
14#include <asm/cacheflush.h> 14#include <asm/cacheflush.h>
15#include <asm/cachetype.h> 15#include <asm/cachetype.h>
16#include <asm/highmem.h>
16#include <asm/smp_plat.h> 17#include <asm/smp_plat.h>
17#include <asm/system.h> 18#include <asm/system.h>
18#include <asm/tlbflush.h> 19#include <asm/tlbflush.h>
@@ -152,21 +153,25 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
152 153
153void __flush_dcache_page(struct address_space *mapping, struct page *page) 154void __flush_dcache_page(struct address_space *mapping, struct page *page)
154{ 155{
155 void *addr = page_address(page);
156
157 /* 156 /*
158 * Writeback any data associated with the kernel mapping of this 157 * Writeback any data associated with the kernel mapping of this
159 * page. This ensures that data in the physical page is mutually 158 * page. This ensures that data in the physical page is mutually
160 * coherent with the kernels mapping. 159 * coherent with the kernels mapping.
161 */ 160 */
162#ifdef CONFIG_HIGHMEM 161 if (!PageHighMem(page)) {
163 /* 162 __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE);
164 * kmap_atomic() doesn't set the page virtual address, and 163 } else {
165 * kunmap_atomic() takes care of cache flushing already. 164 void *addr = kmap_high_get(page);
166 */ 165 if (addr) {
167 if (addr) 166 __cpuc_flush_dcache_area(addr, PAGE_SIZE);
168#endif 167 kunmap_high(page);
169 __cpuc_flush_dcache_area(addr, PAGE_SIZE); 168 } else if (cache_is_vipt()) {
169 pte_t saved_pte;
170 addr = kmap_high_l1_vipt(page, &saved_pte);
171 __cpuc_flush_dcache_area(addr, PAGE_SIZE);
172 kunmap_high_l1_vipt(page, saved_pte);
173 }
174 }
170 175
171 /* 176 /*
172 * If this is a page cache page, and we have an aliasing VIPT cache, 177 * If this is a page cache page, and we have an aliasing VIPT cache,
diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c
index 2be1ec7c1b41..77b030f5ec09 100644
--- a/arch/arm/mm/highmem.c
+++ b/arch/arm/mm/highmem.c
@@ -79,7 +79,8 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
79 unsigned int idx = type + KM_TYPE_NR * smp_processor_id(); 79 unsigned int idx = type + KM_TYPE_NR * smp_processor_id();
80 80
81 if (kvaddr >= (void *)FIXADDR_START) { 81 if (kvaddr >= (void *)FIXADDR_START) {
82 __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); 82 if (cache_is_vivt())
83 __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE);
83#ifdef CONFIG_DEBUG_HIGHMEM 84#ifdef CONFIG_DEBUG_HIGHMEM
84 BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx)); 85 BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
85 set_pte_ext(TOP_PTE(vaddr), __pte(0), 0); 86 set_pte_ext(TOP_PTE(vaddr), __pte(0), 0);
@@ -124,3 +125,87 @@ struct page *kmap_atomic_to_page(const void *ptr)
124 pte = TOP_PTE(vaddr); 125 pte = TOP_PTE(vaddr);
125 return pte_page(*pte); 126 return pte_page(*pte);
126} 127}
128
129#ifdef CONFIG_CPU_CACHE_VIPT
130
131#include <linux/percpu.h>
132
133/*
134 * The VIVT cache of a highmem page is always flushed before the page
135 * is unmapped. Hence unmapped highmem pages need no cache maintenance
136 * in that case.
137 *
138 * However unmapped pages may still be cached with a VIPT cache, and
139 * it is not possible to perform cache maintenance on them using physical
140 * addresses unfortunately. So we have no choice but to set up a temporary
141 * virtual mapping for that purpose.
142 *
143 * Yet this VIPT cache maintenance may be triggered from DMA support
144 * functions which are possibly called from interrupt context. As we don't
145 * want to keep interrupt disabled all the time when such maintenance is
146 * taking place, we therefore allow for some reentrancy by preserving and
147 * restoring the previous fixmap entry before the interrupted context is
148 * resumed. If the reentrancy depth is 0 then there is no need to restore
149 * the previous fixmap, and leaving the current one in place allow it to
150 * be reused the next time without a TLB flush (common with DMA).
151 */
152
153static DEFINE_PER_CPU(int, kmap_high_l1_vipt_depth);
154
155void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte)
156{
157 unsigned int idx, cpu = smp_processor_id();
158 int *depth = &per_cpu(kmap_high_l1_vipt_depth, cpu);
159 unsigned long vaddr, flags;
160 pte_t pte, *ptep;
161
162 idx = KM_L1_CACHE + KM_TYPE_NR * cpu;
163 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
164 ptep = TOP_PTE(vaddr);
165 pte = mk_pte(page, kmap_prot);
166
167 if (!in_interrupt())
168 preempt_disable();
169
170 raw_local_irq_save(flags);
171 (*depth)++;
172 if (pte_val(*ptep) == pte_val(pte)) {
173 *saved_pte = pte;
174 } else {
175 *saved_pte = *ptep;
176 set_pte_ext(ptep, pte, 0);
177 local_flush_tlb_kernel_page(vaddr);
178 }
179 raw_local_irq_restore(flags);
180
181 return (void *)vaddr;
182}
183
184void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte)
185{
186 unsigned int idx, cpu = smp_processor_id();
187 int *depth = &per_cpu(kmap_high_l1_vipt_depth, cpu);
188 unsigned long vaddr, flags;
189 pte_t pte, *ptep;
190
191 idx = KM_L1_CACHE + KM_TYPE_NR * cpu;
192 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
193 ptep = TOP_PTE(vaddr);
194 pte = mk_pte(page, kmap_prot);
195
196 BUG_ON(pte_val(*ptep) != pte_val(pte));
197 BUG_ON(*depth <= 0);
198
199 raw_local_irq_save(flags);
200 (*depth)--;
201 if (*depth != 0 && pte_val(pte) != pte_val(saved_pte)) {
202 set_pte_ext(ptep, saved_pte, 0);
203 local_flush_tlb_kernel_page(vaddr);
204 }
205 raw_local_irq_restore(flags);
206
207 if (!in_interrupt())
208 preempt_enable();
209}
210
211#endif /* CONFIG_CPU_CACHE_VIPT */
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 7829cb5425f5..83db12a68d56 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -17,6 +17,7 @@
17#include <linux/initrd.h> 17#include <linux/initrd.h>
18#include <linux/sort.h> 18#include <linux/sort.h>
19#include <linux/highmem.h> 19#include <linux/highmem.h>
20#include <linux/gfp.h>
20 21
21#include <asm/mach-types.h> 22#include <asm/mach-types.h>
22#include <asm/sections.h> 23#include <asm/sections.h>
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 9d4da6ac28eb..241c24a1c18f 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -420,6 +420,10 @@ static void __init build_mem_type_table(void)
420 user_pgprot |= L_PTE_SHARED; 420 user_pgprot |= L_PTE_SHARED;
421 kern_pgprot |= L_PTE_SHARED; 421 kern_pgprot |= L_PTE_SHARED;
422 vecs_pgprot |= L_PTE_SHARED; 422 vecs_pgprot |= L_PTE_SHARED;
423 mem_types[MT_DEVICE_WC].prot_sect |= PMD_SECT_S;
424 mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED;
425 mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S;
426 mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED;
423 mem_types[MT_MEMORY].prot_sect |= PMD_SECT_S; 427 mem_types[MT_MEMORY].prot_sect |= PMD_SECT_S;
424 mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_S; 428 mem_types[MT_MEMORY_NONCACHED].prot_sect |= PMD_SECT_S;
425#endif 429#endif
@@ -1050,10 +1054,12 @@ void setup_mm_for_reboot(char mode)
1050 pgd_t *pgd; 1054 pgd_t *pgd;
1051 int i; 1055 int i;
1052 1056
1053 if (current->mm && current->mm->pgd) 1057 /*
1054 pgd = current->mm->pgd; 1058 * We need to access to user-mode page tables here. For kernel threads
1055 else 1059 * we don't have any user-mode mappings so we use the context that we
1056 pgd = init_mm.pgd; 1060 * "borrowed".
1061 */
1062 pgd = current->active_mm->pgd;
1057 1063
1058 base_pmdval = PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | PMD_TYPE_SECT; 1064 base_pmdval = PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | PMD_TYPE_SECT;
1059 if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale()) 1065 if (cpu_architecture() <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale())
diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c
index 2690146161ba..be5f58e153bf 100644
--- a/arch/arm/mm/pgd.c
+++ b/arch/arm/mm/pgd.c
@@ -8,6 +8,7 @@
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/gfp.h>
11#include <linux/highmem.h> 12#include <linux/highmem.h>
12 13
13#include <asm/pgalloc.h> 14#include <asm/pgalloc.h>
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c
index d983cd6c788c..0c2cc5cd4d83 100644
--- a/arch/arm/plat-mxc/audmux-v2.c
+++ b/arch/arm/plat-mxc/audmux-v2.c
@@ -24,6 +24,7 @@
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/clk.h> 25#include <linux/clk.h>
26#include <linux/debugfs.h> 26#include <linux/debugfs.h>
27#include <linux/slab.h>
27#include <mach/audmux.h> 28#include <mach/audmux.h>
28#include <mach/hardware.h> 29#include <mach/hardware.h>
29 30
diff --git a/arch/arm/plat-mxc/include/mach/board-mx31pdk.h b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h
index 2bbd6ed17f50..da92933a233b 100644
--- a/arch/arm/plat-mxc/include/mach/board-mx31pdk.h
+++ b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h
@@ -8,8 +8,8 @@
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10 10
11#ifndef __ASM_ARCH_MXC_BOARD_MX31PDK_H__ 11#ifndef __ASM_ARCH_MXC_BOARD_MX31_3DS_H__
12#define __ASM_ARCH_MXC_BOARD_MX31PDK_H__ 12#define __ASM_ARCH_MXC_BOARD_MX31_3DS_H__
13 13
14/* Definitions for components on the Debug board */ 14/* Definitions for components on the Debug board */
15 15
@@ -56,4 +56,4 @@
56 56
57#define MXC_MAX_EXP_IO_LINES 16 57#define MXC_MAX_EXP_IO_LINES 16
58 58
59#endif /* __ASM_ARCH_MXC_BOARD_MX31PDK_H__ */ 59#endif /* __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ */
diff --git a/arch/arm/plat-mxc/include/mach/mx51.h b/arch/arm/plat-mxc/include/mach/mx51.h
index 771532b6b4a6..5aad344d5651 100644
--- a/arch/arm/plat-mxc/include/mach/mx51.h
+++ b/arch/arm/plat-mxc/include/mach/mx51.h
@@ -14,7 +14,7 @@
14 * FB100000 70000000 1M SPBA 0 14 * FB100000 70000000 1M SPBA 0
15 * FB000000 73F00000 1M AIPS 1 15 * FB000000 73F00000 1M AIPS 1
16 * FB200000 83F00000 1M AIPS 2 16 * FB200000 83F00000 1M AIPS 2
17 * FA100000 8FFFC000 16K TZIC (interrupt controller) 17 * 8FFFC000 16K TZIC (interrupt controller)
18 * 90000000 256M CSD0 SDRAM/DDR 18 * 90000000 256M CSD0 SDRAM/DDR
19 * A0000000 256M CSD1 SDRAM/DDR 19 * A0000000 256M CSD1 SDRAM/DDR
20 * B0000000 128M CS0 Flash 20 * B0000000 128M CS0 Flash
@@ -23,11 +23,17 @@
23 * C8000000 64M CS3 Flash 23 * C8000000 64M CS3 Flash
24 * CC000000 32M CS4 SRAM 24 * CC000000 32M CS4 SRAM
25 * CE000000 32M CS5 SRAM 25 * CE000000 32M CS5 SRAM
26 * F9000000 CFFF0000 64K NFC (NAND Flash AXI) 26 * CFFF0000 64K NFC (NAND Flash AXI)
27 * 27 *
28 */ 28 */
29 29
30/* 30/*
31 * IROM
32 */
33#define MX51_IROM_BASE_ADDR 0x0
34#define MX51_IROM_SIZE SZ_64K
35
36/*
31 * IRAM 37 * IRAM
32 */ 38 */
33#define MX51_IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */ 39#define MX51_IRAM_BASE_ADDR 0x1FFE0000 /* internal ram */
@@ -40,7 +46,6 @@
40 * NFC 46 * NFC
41 */ 47 */
42#define MX51_NFC_AXI_BASE_ADDR 0xCFFF0000 /* NAND flash AXI */ 48#define MX51_NFC_AXI_BASE_ADDR 0xCFFF0000 /* NAND flash AXI */
43#define MX51_NFC_AXI_BASE_ADDR_VIRT 0xF9000000
44#define MX51_NFC_AXI_SIZE SZ_64K 49#define MX51_NFC_AXI_SIZE SZ_64K
45 50
46/* 51/*
@@ -49,9 +54,8 @@
49#define MX51_GPU_BASE_ADDR 0x20000000 54#define MX51_GPU_BASE_ADDR 0x20000000
50#define MX51_GPU2D_BASE_ADDR 0xD0000000 55#define MX51_GPU2D_BASE_ADDR 0xD0000000
51 56
52#define MX51_TZIC_BASE_ADDR 0x8FFFC000 57#define MX51_TZIC_BASE_ADDR_TO1 0x8FFFC000
53#define MX51_TZIC_BASE_ADDR_VIRT 0xFA100000 58#define MX51_TZIC_BASE_ADDR 0xE0000000
54#define MX51_TZIC_SIZE SZ_16K
55 59
56#define MX51_DEBUG_BASE_ADDR 0x60000000 60#define MX51_DEBUG_BASE_ADDR 0x60000000
57#define MX51_DEBUG_BASE_ADDR_VIRT 0xFA200000 61#define MX51_DEBUG_BASE_ADDR_VIRT 0xFA200000
@@ -232,12 +236,10 @@
232#define MX51_IO_ADDRESS(x) \ 236#define MX51_IO_ADDRESS(x) \
233 (void __iomem *) \ 237 (void __iomem *) \
234 (MX51_IS_MODULE(x, IRAM) ? MX51_IRAM_IO_ADDRESS(x) : \ 238 (MX51_IS_MODULE(x, IRAM) ? MX51_IRAM_IO_ADDRESS(x) : \
235 MX51_IS_MODULE(x, TZIC) ? MX51_TZIC_IO_ADDRESS(x) : \
236 MX51_IS_MODULE(x, DEBUG) ? MX51_DEBUG_IO_ADDRESS(x) : \ 239 MX51_IS_MODULE(x, DEBUG) ? MX51_DEBUG_IO_ADDRESS(x) : \
237 MX51_IS_MODULE(x, SPBA0) ? MX51_SPBA0_IO_ADDRESS(x) : \ 240 MX51_IS_MODULE(x, SPBA0) ? MX51_SPBA0_IO_ADDRESS(x) : \
238 MX51_IS_MODULE(x, AIPS1) ? MX51_AIPS1_IO_ADDRESS(x) : \ 241 MX51_IS_MODULE(x, AIPS1) ? MX51_AIPS1_IO_ADDRESS(x) : \
239 MX51_IS_MODULE(x, AIPS2) ? MX51_AIPS2_IO_ADDRESS(x) : \ 242 MX51_IS_MODULE(x, AIPS2) ? MX51_AIPS2_IO_ADDRESS(x) : \
240 MX51_IS_MODULE(x, NFC_AXI) ? MX51_NFC_AXI_IO_ADDRESS(x) : \
241 0xDEADBEEF) 243 0xDEADBEEF)
242 244
243/* 245/*
@@ -246,9 +248,6 @@
246#define MX51_IRAM_IO_ADDRESS(x) \ 248#define MX51_IRAM_IO_ADDRESS(x) \
247 (((x) - MX51_IRAM_BASE_ADDR) + MX51_IRAM_BASE_ADDR_VIRT) 249 (((x) - MX51_IRAM_BASE_ADDR) + MX51_IRAM_BASE_ADDR_VIRT)
248 250
249#define MX51_TZIC_IO_ADDRESS(x) \
250 (((x) - MX51_TZIC_BASE_ADDR) + MX51_TZIC_BASE_ADDR_VIRT)
251
252#define MX51_DEBUG_IO_ADDRESS(x) \ 251#define MX51_DEBUG_IO_ADDRESS(x) \
253 (((x) - MX51_DEBUG_BASE_ADDR) + MX51_DEBUG_BASE_ADDR_VIRT) 252 (((x) - MX51_DEBUG_BASE_ADDR) + MX51_DEBUG_BASE_ADDR_VIRT)
254 253
@@ -261,9 +260,6 @@
261#define MX51_AIPS2_IO_ADDRESS(x) \ 260#define MX51_AIPS2_IO_ADDRESS(x) \
262 (((x) - MX51_AIPS2_BASE_ADDR) + MX51_AIPS2_BASE_ADDR_VIRT) 261 (((x) - MX51_AIPS2_BASE_ADDR) + MX51_AIPS2_BASE_ADDR_VIRT)
263 262
264#define MX51_NFC_AXI_IO_ADDRESS(x) \
265 (((x) - MX51_NFC_AXI_BASE_ADDR) + MX51_NFC_AXI_BASE_ADDR_VIRT)
266
267#define MX51_IS_MEM_DEVICE_NONSHARED(x) 0 263#define MX51_IS_MEM_DEVICE_NONSHARED(x) 0
268 264
269/* 265/*
@@ -443,12 +439,7 @@
443 439
444#if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS) 440#if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)
445 441
446extern unsigned int system_rev; 442extern int mx51_revision(void);
447
448static inline unsigned int mx51_revision(void)
449{
450 return system_rev;
451}
452#endif 443#endif
453 444
454#endif /* __ASM_ARCH_MXC_MX51_H__ */ 445#endif /* __ASM_ARCH_MXC_MX51_H__ */
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h
index 52e476a150ca..b6d3d0fddc48 100644
--- a/arch/arm/plat-mxc/include/mach/uncompress.h
+++ b/arch/arm/plat-mxc/include/mach/uncompress.h
@@ -66,6 +66,7 @@ static inline void flush(void)
66#define MX2X_UART1_BASE_ADDR 0x1000a000 66#define MX2X_UART1_BASE_ADDR 0x1000a000
67#define MX3X_UART1_BASE_ADDR 0x43F90000 67#define MX3X_UART1_BASE_ADDR 0x43F90000
68#define MX3X_UART2_BASE_ADDR 0x43F94000 68#define MX3X_UART2_BASE_ADDR 0x43F94000
69#define MX51_UART1_BASE_ADDR 0x73fbc000
69 70
70static __inline__ void __arch_decomp_setup(unsigned long arch_id) 71static __inline__ void __arch_decomp_setup(unsigned long arch_id)
71{ 72{
@@ -101,6 +102,9 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
101 case MACH_TYPE_MAGX_ZN5: 102 case MACH_TYPE_MAGX_ZN5:
102 uart_base = MX3X_UART2_BASE_ADDR; 103 uart_base = MX3X_UART2_BASE_ADDR;
103 break; 104 break;
105 case MACH_TYPE_MX51_BABBAGE:
106 uart_base = MX51_UART1_BASE_ADDR;
107 break;
104 default: 108 default:
105 break; 109 break;
106 } 110 }
diff --git a/arch/arm/plat-mxc/pwm.c b/arch/arm/plat-mxc/pwm.c
index 4ff6dfe04283..c36f2630ed93 100644
--- a/arch/arm/plat-mxc/pwm.c
+++ b/arch/arm/plat-mxc/pwm.c
@@ -11,6 +11,7 @@
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/slab.h>
14#include <linux/err.h> 15#include <linux/err.h>
15#include <linux/clk.h> 16#include <linux/clk.h>
16#include <linux/io.h> 17#include <linux/io.h>
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index 4a4cd8774aaa..95677d17cd1c 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -14,6 +14,7 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <linux/slab.h>
17 18
18#include <mach/hardware.h> 19#include <mach/hardware.h>
19#include <asm/mach-types.h> 20#include <asm/mach-types.h>
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 2ab224c8e16c..5c6c342c53f5 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -29,6 +29,7 @@
29#include <linux/interrupt.h> 29#include <linux/interrupt.h>
30#include <linux/irq.h> 30#include <linux/irq.h>
31#include <linux/io.h> 31#include <linux/io.h>
32#include <linux/slab.h>
32 33
33#include <asm/system.h> 34#include <asm/system.h>
34#include <mach/hardware.h> 35#include <mach/hardware.h>
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 337199ed3479..76a347b3ce07 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -2140,18 +2140,18 @@ void omap2_gpio_resume_after_retention(void)
2140 if (gen) { 2140 if (gen) {
2141 u32 old0, old1; 2141 u32 old0, old1;
2142 2142
2143 if (cpu_is_omap24xx() || cpu_is_omap44xx()) { 2143 if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
2144 old0 = __raw_readl(bank->base + 2144 old0 = __raw_readl(bank->base +
2145 OMAP24XX_GPIO_LEVELDETECT0); 2145 OMAP24XX_GPIO_LEVELDETECT0);
2146 old1 = __raw_readl(bank->base + 2146 old1 = __raw_readl(bank->base +
2147 OMAP24XX_GPIO_LEVELDETECT1); 2147 OMAP24XX_GPIO_LEVELDETECT1);
2148 __raw_writel(old0 | gen, bank->base + 2148 __raw_writel(old0 | gen, bank->base +
2149 OMAP24XX_GPIO_LEVELDETECT0); 2149 OMAP24XX_GPIO_LEVELDETECT0);
2150 __raw_writel(old1 | gen, bank->base + 2150 __raw_writel(old1 | gen, bank->base +
2151 OMAP24XX_GPIO_LEVELDETECT1); 2151 OMAP24XX_GPIO_LEVELDETECT1);
2152 __raw_writel(old0, bank->base + 2152 __raw_writel(old0, bank->base +
2153 OMAP24XX_GPIO_LEVELDETECT0); 2153 OMAP24XX_GPIO_LEVELDETECT0);
2154 __raw_writel(old1, bank->base + 2154 __raw_writel(old1, bank->base +
2155 OMAP24XX_GPIO_LEVELDETECT1); 2155 OMAP24XX_GPIO_LEVELDETECT1);
2156 } 2156 }
2157 2157
diff --git a/arch/arm/plat-omap/include/plat/blizzard.h b/arch/arm/plat-omap/include/plat/blizzard.h
index 8d160f171372..56e7f2e7d12f 100644
--- a/arch/arm/plat-omap/include/plat/blizzard.h
+++ b/arch/arm/plat-omap/include/plat/blizzard.h
@@ -6,7 +6,7 @@ struct blizzard_platform_data {
6 void (*power_down)(struct device *dev); 6 void (*power_down)(struct device *dev);
7 unsigned long (*get_clock_rate)(struct device *dev); 7 unsigned long (*get_clock_rate)(struct device *dev);
8 8
9 unsigned te_connected : 1; 9 unsigned te_connected:1;
10}; 10};
11 11
12#endif 12#endif
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index ed8786c41df2..75141742300c 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -167,10 +167,14 @@ IS_OMAP_SUBCLASS(443x, 0x443)
167#if defined(MULTI_OMAP2) 167#if defined(MULTI_OMAP2)
168# if defined(CONFIG_ARCH_OMAP2) 168# if defined(CONFIG_ARCH_OMAP2)
169# undef cpu_is_omap24xx 169# undef cpu_is_omap24xx
170# undef cpu_is_omap242x
171# undef cpu_is_omap243x
172# define cpu_is_omap24xx() is_omap24xx() 170# define cpu_is_omap24xx() is_omap24xx()
171# endif
172# if defined (CONFIG_ARCH_OMAP2420)
173# undef cpu_is_omap242x
173# define cpu_is_omap242x() is_omap242x() 174# define cpu_is_omap242x() is_omap242x()
175# endif
176# if defined (CONFIG_ARCH_OMAP2430)
177# undef cpu_is_omap243x
174# define cpu_is_omap243x() is_omap243x() 178# define cpu_is_omap243x() is_omap243x()
175# endif 179# endif
176# if defined(CONFIG_ARCH_OMAP3) 180# if defined(CONFIG_ARCH_OMAP3)
diff --git a/arch/arm/plat-omap/include/plat/prcm.h b/arch/arm/plat-omap/include/plat/prcm.h
index d6a0e27d5a7f..9fbd91419cd1 100644
--- a/arch/arm/plat-omap/include/plat/prcm.h
+++ b/arch/arm/plat-omap/include/plat/prcm.h
@@ -24,7 +24,7 @@
24#define __ASM_ARM_ARCH_OMAP_PRCM_H 24#define __ASM_ARM_ARCH_OMAP_PRCM_H
25 25
26u32 omap_prcm_get_reset_sources(void); 26u32 omap_prcm_get_reset_sources(void);
27void omap_prcm_arch_reset(char mode); 27void omap_prcm_arch_reset(char mode, const char *cmd);
28int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest, 28int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest,
29 const char *name); 29 const char *name);
30 30
diff --git a/arch/arm/plat-omap/include/plat/system.h b/arch/arm/plat-omap/include/plat/system.h
index c58a4ef42a45..d0a119f735b4 100644
--- a/arch/arm/plat-omap/include/plat/system.h
+++ b/arch/arm/plat-omap/include/plat/system.h
@@ -22,7 +22,7 @@ static inline void arch_idle(void)
22 cpu_do_idle(); 22 cpu_do_idle();
23} 23}
24 24
25static inline void omap1_arch_reset(char mode) 25static inline void omap1_arch_reset(char mode, const char *cmd)
26{ 26{
27 /* 27 /*
28 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28 28 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
@@ -43,9 +43,9 @@ static inline void omap1_arch_reset(char mode)
43static inline void arch_reset(char mode, const char *cmd) 43static inline void arch_reset(char mode, const char *cmd)
44{ 44{
45 if (!cpu_class_is_omap2()) 45 if (!cpu_class_is_omap2())
46 omap1_arch_reset(mode); 46 omap1_arch_reset(mode, cmd);
47 else 47 else
48 omap_prcm_arch_reset(mode); 48 omap_prcm_arch_reset(mode, cmd);
49} 49}
50 50
51#endif 51#endif
diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h
index 288e29e1c06f..568578db93b6 100644
--- a/arch/arm/plat-omap/include/plat/usb.h
+++ b/arch/arm/plat-omap/include/plat/usb.h
@@ -53,7 +53,7 @@ enum musb_interface {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI};
53 53
54extern void usb_musb_init(struct omap_musb_board_data *board_data); 54extern void usb_musb_init(struct omap_musb_board_data *board_data);
55 55
56extern void usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata); 56extern void usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata);
57 57
58#endif 58#endif
59 59
diff --git a/arch/arm/plat-omap/iommu-debug.c b/arch/arm/plat-omap/iommu-debug.c
index afd1c27cff7c..e6c0d536899c 100644
--- a/arch/arm/plat-omap/iommu-debug.c
+++ b/arch/arm/plat-omap/iommu-debug.c
@@ -13,6 +13,7 @@
13#include <linux/err.h> 13#include <linux/err.h>
14#include <linux/clk.h> 14#include <linux/clk.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/slab.h>
16#include <linux/uaccess.h> 17#include <linux/uaccess.h>
17#include <linux/platform_device.h> 18#include <linux/platform_device.h>
18#include <linux/debugfs.h> 19#include <linux/debugfs.h>
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index 905ed832df56..0e137663349c 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -13,6 +13,7 @@
13 13
14#include <linux/err.h> 14#include <linux/err.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/slab.h>
16#include <linux/interrupt.h> 17#include <linux/interrupt.h>
17#include <linux/ioport.h> 18#include <linux/ioport.h>
18#include <linux/clk.h> 19#include <linux/clk.h>
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c
index 936aef1971cd..65c6d1ff7237 100644
--- a/arch/arm/plat-omap/iovmm.c
+++ b/arch/arm/plat-omap/iovmm.c
@@ -11,6 +11,7 @@
11 */ 11 */
12 12
13#include <linux/err.h> 13#include <linux/err.h>
14#include <linux/slab.h>
14#include <linux/vmalloc.h> 15#include <linux/vmalloc.h>
15#include <linux/device.h> 16#include <linux/device.h>
16#include <linux/scatterlist.h> 17#include <linux/scatterlist.h>
diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c
index 4229cec53140..08a2df766289 100644
--- a/arch/arm/plat-omap/mailbox.c
+++ b/arch/arm/plat-omap/mailbox.c
@@ -25,6 +25,7 @@
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/device.h> 26#include <linux/device.h>
27#include <linux/delay.h> 27#include <linux/delay.h>
28#include <linux/slab.h>
28 29
29#include <plat/mailbox.h> 30#include <plat/mailbox.h>
30 31
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index e47686e0a633..e1d0440fd4a8 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -23,6 +23,7 @@
23#include <linux/clk.h> 23#include <linux/clk.h>
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <linux/io.h> 25#include <linux/io.h>
26#include <linux/slab.h>
26 27
27#include <plat/dma.h> 28#include <plat/dma.h>
28#include <plat/mcbsp.h> 29#include <plat/mcbsp.h>
@@ -133,8 +134,7 @@ static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id)
133 dev_err(mcbsp_tx->dev, "TX Frame Sync Error! : 0x%x\n", 134 dev_err(mcbsp_tx->dev, "TX Frame Sync Error! : 0x%x\n",
134 irqst_spcr2); 135 irqst_spcr2);
135 /* Writing zero to XSYNC_ERR clears the IRQ */ 136 /* Writing zero to XSYNC_ERR clears the IRQ */
136 MCBSP_WRITE(mcbsp_tx, SPCR2, 137 MCBSP_WRITE(mcbsp_tx, SPCR2, MCBSP_READ_CACHE(mcbsp_tx, SPCR2));
137 MCBSP_READ_CACHE(mcbsp_tx, SPCR2) & ~(XSYNC_ERR));
138 } else { 138 } else {
139 complete(&mcbsp_tx->tx_irq_completion); 139 complete(&mcbsp_tx->tx_irq_completion);
140 } 140 }
@@ -154,8 +154,7 @@ static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id)
154 dev_err(mcbsp_rx->dev, "RX Frame Sync Error! : 0x%x\n", 154 dev_err(mcbsp_rx->dev, "RX Frame Sync Error! : 0x%x\n",
155 irqst_spcr1); 155 irqst_spcr1);
156 /* Writing zero to RSYNC_ERR clears the IRQ */ 156 /* Writing zero to RSYNC_ERR clears the IRQ */
157 MCBSP_WRITE(mcbsp_rx, SPCR1, 157 MCBSP_WRITE(mcbsp_rx, SPCR1, MCBSP_READ_CACHE(mcbsp_rx, SPCR1));
158 MCBSP_READ_CACHE(mcbsp_rx, SPCR1) & ~(RSYNC_ERR));
159 } else { 158 } else {
160 complete(&mcbsp_rx->tx_irq_completion); 159 complete(&mcbsp_rx->tx_irq_completion);
161 } 160 }
@@ -934,8 +933,7 @@ int omap_mcbsp_pollwrite(unsigned int id, u16 buf)
934 /* if frame sync error - clear the error */ 933 /* if frame sync error - clear the error */
935 if (MCBSP_READ(mcbsp, SPCR2) & XSYNC_ERR) { 934 if (MCBSP_READ(mcbsp, SPCR2) & XSYNC_ERR) {
936 /* clear error */ 935 /* clear error */
937 MCBSP_WRITE(mcbsp, SPCR2, 936 MCBSP_WRITE(mcbsp, SPCR2, MCBSP_READ_CACHE(mcbsp, SPCR2));
938 MCBSP_READ_CACHE(mcbsp, SPCR2) & (~XSYNC_ERR));
939 /* resend */ 937 /* resend */
940 return -1; 938 return -1;
941 } else { 939 } else {
@@ -975,8 +973,7 @@ int omap_mcbsp_pollread(unsigned int id, u16 *buf)
975 /* if frame sync error - clear the error */ 973 /* if frame sync error - clear the error */
976 if (MCBSP_READ(mcbsp, SPCR1) & RSYNC_ERR) { 974 if (MCBSP_READ(mcbsp, SPCR1) & RSYNC_ERR) {
977 /* clear error */ 975 /* clear error */
978 MCBSP_WRITE(mcbsp, SPCR1, 976 MCBSP_WRITE(mcbsp, SPCR1, MCBSP_READ_CACHE(mcbsp, SPCR1));
979 MCBSP_READ_CACHE(mcbsp, SPCR1) & (~RSYNC_ERR));
980 /* resend */ 977 /* resend */
981 return -1; 978 return -1;
982 } else { 979 } else {
diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 590435894848..0f5197479513 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -79,6 +79,7 @@
79 79
80#include <linux/kernel.h> 80#include <linux/kernel.h>
81#include <linux/platform_device.h> 81#include <linux/platform_device.h>
82#include <linux/slab.h>
82#include <linux/err.h> 83#include <linux/err.h>
83#include <linux/io.h> 84#include <linux/io.h>
84 85
diff --git a/arch/arm/plat-pxa/dma.c b/arch/arm/plat-pxa/dma.c
index 2975798d411f..742350e0f2a7 100644
--- a/arch/arm/plat-pxa/dma.c
+++ b/arch/arm/plat-pxa/dma.c
@@ -14,6 +14,7 @@
14 14
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/slab.h>
17#include <linux/kernel.h> 18#include <linux/kernel.h>
18#include <linux/interrupt.h> 19#include <linux/interrupt.h>
19#include <linux/errno.h> 20#include <linux/errno.h>
diff --git a/arch/arm/plat-pxa/pwm.c b/arch/arm/plat-pxa/pwm.c
index 51dc5c8106c0..0732c6c8d511 100644
--- a/arch/arm/plat-pxa/pwm.c
+++ b/arch/arm/plat-pxa/pwm.c
@@ -14,6 +14,7 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/slab.h>
17#include <linux/err.h> 18#include <linux/err.h>
18#include <linux/clk.h> 19#include <linux/clk.h>
19#include <linux/io.h> 20#include <linux/io.h>
diff --git a/arch/arm/plat-s3c24xx/cpu-freq.c b/arch/arm/plat-s3c24xx/cpu-freq.c
index 2d42efb9f4e9..1ecc15bfe9d4 100644
--- a/arch/arm/plat-s3c24xx/cpu-freq.c
+++ b/arch/arm/plat-s3c24xx/cpu-freq.c
@@ -23,6 +23,7 @@
23#include <linux/sysdev.h> 23#include <linux/sysdev.h>
24#include <linux/kobject.h> 24#include <linux/kobject.h>
25#include <linux/sysfs.h> 25#include <linux/sysfs.h>
26#include <linux/slab.h>
26 27
27#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
28#include <asm/mach/map.h> 29#include <asm/mach/map.h>
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index 8c6de1c9968f..9265f09bfa58 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -20,6 +20,7 @@
20#include <linux/serial_core.h> 20#include <linux/serial_core.h>
21#include <linux/platform_device.h> 21#include <linux/platform_device.h>
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/slab.h>
23 24
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
25#include <asm/mach/map.h> 26#include <asm/mach/map.h>
diff --git a/arch/arm/plat-s3c24xx/s3c2410-iotiming.c b/arch/arm/plat-s3c24xx/s3c2410-iotiming.c
index 963fb0b4379e..b1908e56da1b 100644
--- a/arch/arm/plat-s3c24xx/s3c2410-iotiming.c
+++ b/arch/arm/plat-s3c24xx/s3c2410-iotiming.c
@@ -17,6 +17,7 @@
17#include <linux/cpufreq.h> 17#include <linux/cpufreq.h>
18#include <linux/seq_file.h> 18#include <linux/seq_file.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/slab.h>
20 21
21#include <mach/map.h> 22#include <mach/map.h>
22#include <mach/regs-mem.h> 23#include <mach/regs-mem.h>
diff --git a/arch/arm/plat-s3c24xx/s3c2412-iotiming.c b/arch/arm/plat-s3c24xx/s3c2412-iotiming.c
index 24993dce10b5..0b46d3895d62 100644
--- a/arch/arm/plat-s3c24xx/s3c2412-iotiming.c
+++ b/arch/arm/plat-s3c24xx/s3c2412-iotiming.c
@@ -21,6 +21,7 @@
21#include <linux/delay.h> 21#include <linux/delay.h>
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/err.h> 23#include <linux/err.h>
24#include <linux/slab.h>
24 25
25#include <linux/amba/pl093.h> 26#include <linux/amba/pl093.h>
26 27
diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c
index 0b5833b9ac5b..210030d5cfe1 100644
--- a/arch/arm/plat-samsung/adc.c
+++ b/arch/arm/plat-samsung/adc.c
@@ -16,6 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/list.h> 18#include <linux/list.h>
19#include <linux/slab.h>
19#include <linux/err.h> 20#include <linux/err.h>
20#include <linux/clk.h> 21#include <linux/clk.h>
21#include <linux/interrupt.h> 22#include <linux/interrupt.h>
diff --git a/arch/arm/plat-samsung/dev-fb.c b/arch/arm/plat-samsung/dev-fb.c
index a90198fc4b0f..002a15f313f3 100644
--- a/arch/arm/plat-samsung/dev-fb.c
+++ b/arch/arm/plat-samsung/dev-fb.c
@@ -15,6 +15,7 @@
15#include <linux/string.h> 15#include <linux/string.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/fb.h> 17#include <linux/fb.h>
18#include <linux/gfp.h>
18 19
19#include <mach/irqs.h> 20#include <mach/irqs.h>
20#include <mach/map.h> 21#include <mach/map.h>
diff --git a/arch/arm/plat-samsung/dev-i2c0.c b/arch/arm/plat-samsung/dev-i2c0.c
index 4c761529b949..3a601c16f03c 100644
--- a/arch/arm/plat-samsung/dev-i2c0.c
+++ b/arch/arm/plat-samsung/dev-i2c0.c
@@ -11,6 +11,7 @@
11 * published by the Free Software Foundation. 11 * published by the Free Software Foundation.
12*/ 12*/
13 13
14#include <linux/gfp.h>
14#include <linux/kernel.h> 15#include <linux/kernel.h>
15#include <linux/string.h> 16#include <linux/string.h>
16#include <linux/platform_device.h> 17#include <linux/platform_device.h>
diff --git a/arch/arm/plat-samsung/dev-i2c1.c b/arch/arm/plat-samsung/dev-i2c1.c
index d44f79110506..858ee2a0414c 100644
--- a/arch/arm/plat-samsung/dev-i2c1.c
+++ b/arch/arm/plat-samsung/dev-i2c1.c
@@ -11,6 +11,7 @@
11 * published by the Free Software Foundation. 11 * published by the Free Software Foundation.
12*/ 12*/
13 13
14#include <linux/gfp.h>
14#include <linux/kernel.h> 15#include <linux/kernel.h>
15#include <linux/string.h> 16#include <linux/string.h>
16#include <linux/platform_device.h> 17#include <linux/platform_device.h>
diff --git a/arch/arm/plat-samsung/dev-nand.c b/arch/arm/plat-samsung/dev-nand.c
index a52fb6cf618f..3a7b8891ba4f 100644
--- a/arch/arm/plat-samsung/dev-nand.c
+++ b/arch/arm/plat-samsung/dev-nand.c
@@ -6,6 +6,7 @@
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7*/ 7*/
8 8
9#include <linux/gfp.h>
9#include <linux/kernel.h> 10#include <linux/kernel.h>
10#include <linux/platform_device.h> 11#include <linux/platform_device.h>
11 12
diff --git a/arch/arm/plat-samsung/dev-usb.c b/arch/arm/plat-samsung/dev-usb.c
index 88165657fa53..0e0a3bf5c982 100644
--- a/arch/arm/plat-samsung/dev-usb.c
+++ b/arch/arm/plat-samsung/dev-usb.c
@@ -11,6 +11,7 @@
11 * published by the Free Software Foundation. 11 * published by the Free Software Foundation.
12*/ 12*/
13 13
14#include <linux/gfp.h>
14#include <linux/kernel.h> 15#include <linux/kernel.h>
15#include <linux/string.h> 16#include <linux/string.h>
16#include <linux/platform_device.h> 17#include <linux/platform_device.h>
diff --git a/arch/arm/plat-samsung/include/plat/uncompress.h b/arch/arm/plat-samsung/include/plat/uncompress.h
index e87ce8ffbbcd..7d6ed7263d57 100644
--- a/arch/arm/plat-samsung/include/plat/uncompress.h
+++ b/arch/arm/plat-samsung/include/plat/uncompress.h
@@ -140,8 +140,6 @@ static void arch_decomp_error(const char *x)
140#define arch_error arch_decomp_error 140#define arch_error arch_decomp_error
141#endif 141#endif
142 142
143static void error(char *err);
144
145#ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO 143#ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO
146static inline void arch_enable_uart_fifo(void) 144static inline void arch_enable_uart_fifo(void)
147{ 145{
diff --git a/arch/arm/plat-samsung/pm-check.c b/arch/arm/plat-samsung/pm-check.c
index 0b5bb774192a..e4baf76f374a 100644
--- a/arch/arm/plat-samsung/pm-check.c
+++ b/arch/arm/plat-samsung/pm-check.c
@@ -17,6 +17,7 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/crc32.h> 18#include <linux/crc32.h>
19#include <linux/ioport.h> 19#include <linux/ioport.h>
20#include <linux/slab.h>
20 21
21#include <plat/pm.h> 22#include <plat/pm.h>
22 23
diff --git a/arch/arm/plat-samsung/pwm.c b/arch/arm/plat-samsung/pwm.c
index ef019f27b67d..2eeb49fa056d 100644
--- a/arch/arm/plat-samsung/pwm.c
+++ b/arch/arm/plat-samsung/pwm.c
@@ -14,6 +14,7 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/slab.h>
17#include <linux/err.h> 18#include <linux/err.h>
18#include <linux/clk.h> 19#include <linux/clk.h>
19#include <linux/io.h> 20#include <linux/io.h>
@@ -379,6 +380,39 @@ static int __devexit s3c_pwm_remove(struct platform_device *pdev)
379 return 0; 380 return 0;
380} 381}
381 382
383#ifdef CONFIG_PM
384static int s3c_pwm_suspend(struct platform_device *pdev, pm_message_t state)
385{
386 struct pwm_device *pwm = platform_get_drvdata(pdev);
387
388 /* No one preserve these values during suspend so reset them
389 * Otherwise driver leaves PWM unconfigured if same values
390 * passed to pwm_config
391 */
392 pwm->period_ns = 0;
393 pwm->duty_ns = 0;
394
395 return 0;
396}
397
398static int s3c_pwm_resume(struct platform_device *pdev)
399{
400 struct pwm_device *pwm = platform_get_drvdata(pdev);
401 unsigned long tcon;
402
403 /* Restore invertion */
404 tcon = __raw_readl(S3C2410_TCON);
405 tcon |= pwm_tcon_invert(pwm);
406 __raw_writel(tcon, S3C2410_TCON);
407
408 return 0;
409}
410
411#else
412#define s3c_pwm_suspend NULL
413#define s3c_pwm_resume NULL
414#endif
415
382static struct platform_driver s3c_pwm_driver = { 416static struct platform_driver s3c_pwm_driver = {
383 .driver = { 417 .driver = {
384 .name = "s3c24xx-pwm", 418 .name = "s3c24xx-pwm",
@@ -386,6 +420,8 @@ static struct platform_driver s3c_pwm_driver = {
386 }, 420 },
387 .probe = s3c_pwm_probe, 421 .probe = s3c_pwm_probe,
388 .remove = __devexit_p(s3c_pwm_remove), 422 .remove = __devexit_p(s3c_pwm_remove),
423 .suspend = s3c_pwm_suspend,
424 .resume = s3c_pwm_resume,
389}; 425};
390 426
391static int __init pwm_init(void) 427static int __init pwm_init(void)
diff --git a/arch/arm/plat-stmp3xxx/dma.c b/arch/arm/plat-stmp3xxx/dma.c
index ef88f25fb870..b4dcf8c0477d 100644
--- a/arch/arm/plat-stmp3xxx/dma.c
+++ b/arch/arm/plat-stmp3xxx/dma.c
@@ -15,6 +15,7 @@
15 * http://www.opensource.org/licenses/gpl-license.html 15 * http://www.opensource.org/licenses/gpl-license.html
16 * http://www.gnu.org/copyleft/gpl.html 16 * http://www.gnu.org/copyleft/gpl.html
17 */ 17 */
18#include <linux/gfp.h>
18#include <linux/kernel.h> 19#include <linux/kernel.h>
19#include <linux/device.h> 20#include <linux/device.h>
20#include <linux/dmapool.h> 21#include <linux/dmapool.h>
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 31c2f4c30a95..1536f1784cac 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -12,7 +12,7 @@
12# 12#
13# http://www.arm.linux.org.uk/developer/machines/?action=new 13# http://www.arm.linux.org.uk/developer/machines/?action=new
14# 14#
15# Last update: Sat Feb 20 14:16:15 2010 15# Last update: Sat Mar 20 15:35:41 2010
16# 16#
17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
18# 18#
@@ -2663,7 +2663,7 @@ reb01 MACH_REB01 REB01 2675
2663aquila MACH_AQUILA AQUILA 2676 2663aquila MACH_AQUILA AQUILA 2676
2664spark_sls_hw2 MACH_SPARK_SLS_HW2 SPARK_SLS_HW2 2677 2664spark_sls_hw2 MACH_SPARK_SLS_HW2 SPARK_SLS_HW2 2677
2665sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678 2665sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678
2666surf7x30 MACH_SURF7X30 SURF7X30 2679 2666msm7x30_surf MACH_MSM7X30_SURF MSM7X30_SURF 2679
2667micro2440 MACH_MICRO2440 MICRO2440 2680 2667micro2440 MACH_MICRO2440 MICRO2440 2680
2668am2440 MACH_AM2440 AM2440 2681 2668am2440 MACH_AM2440 AM2440 2681
2669tq2440 MACH_TQ2440 TQ2440 2682 2669tq2440 MACH_TQ2440 TQ2440 2682
@@ -2678,3 +2678,74 @@ vc088x MACH_VC088X VC088X 2690
2678mioa702 MACH_MIOA702 MIOA702 2691 2678mioa702 MACH_MIOA702 MIOA702 2691
2679hpmin MACH_HPMIN HPMIN 2692 2679hpmin MACH_HPMIN HPMIN 2692
2680ak880xak MACH_AK880XAK AK880XAK 2693 2680ak880xak MACH_AK880XAK AK880XAK 2693
2681arm926tomap850 MACH_ARM926TOMAP850 ARM926TOMAP850 2694
2682lkevm MACH_LKEVM LKEVM 2695
2683mw6410 MACH_MW6410 MW6410 2696
2684terastation_wxl MACH_TERASTATION_WXL TERASTATION_WXL 2697
2685cpu8000e MACH_CPU8000E CPU8000E 2698
2686catania MACH_CATANIA CATANIA 2699
2687tokyo MACH_TOKYO TOKYO 2700
2688msm7201a_surf MACH_MSM7201A_SURF MSM7201A_SURF 2701
2689msm7201a_ffa MACH_MSM7201A_FFA MSM7201A_FFA 2702
2690msm7x25_surf MACH_MSM7X25_SURF MSM7X25_SURF 2703
2691msm7x25_ffa MACH_MSM7X25_FFA MSM7X25_FFA 2704
2692msm7x27_surf MACH_MSM7X27_SURF MSM7X27_SURF 2705
2693msm7x27_ffa MACH_MSM7X27_FFA MSM7X27_FFA 2706
2694msm7x30_ffa MACH_MSM7X30_FFA MSM7X30_FFA 2707
2695qsd8x50_surf MACH_QSD8X50_SURF QSD8X50_SURF 2708
2696qsd8x50_comet MACH_QSD8X50_COMET QSD8X50_COMET 2709
2697qsd8x50_ffa MACH_QSD8X50_FFA QSD8X50_FFA 2710
2698qsd8x50a_surf MACH_QSD8X50A_SURF QSD8X50A_SURF 2711
2699qsd8x50a_ffa MACH_QSD8X50A_FFA QSD8X50A_FFA 2712
2700adx_xgcp10 MACH_ADX_XGCP10 ADX_XGCP10 2713
2701mcgwumts2a MACH_MCGWUMTS2A MCGWUMTS2A 2714
2702mobikt MACH_MOBIKT MOBIKT 2715
2703mx53_evk MACH_MX53_EVK MX53_EVK 2716
2704igep0030 MACH_IGEP0030 IGEP0030 2717
2705axell_h40_h50_ctrl MACH_AXELL_H40_H50_CTRL AXELL_H40_H50_CTRL 2718
2706dtcommod MACH_DTCOMMOD DTCOMMOD 2719
2707gould MACH_GOULD GOULD 2720
2708siberia MACH_SIBERIA SIBERIA 2721
2709sbc3530 MACH_SBC3530 SBC3530 2722
2710qarm MACH_QARM QARM 2723
2711mips MACH_MIPS MIPS 2724
2712mx27grb MACH_MX27GRB MX27GRB 2725
2713sbc8100 MACH_SBC8100 SBC8100 2726
2714saarb MACH_SAARB SAARB 2727
2715omap3mini MACH_OMAP3MINI OMAP3MINI 2728
2716cnmbook7se MACH_CNMBOOK7SE CNMBOOK7SE 2729
2717catan MACH_CATAN CATAN 2730
2718harmony MACH_HARMONY HARMONY 2731
2719tonga MACH_TONGA TONGA 2732
2720cybook_orizon MACH_CYBOOK_ORIZON CYBOOK_ORIZON 2733
2721htcrhodiumcdma MACH_HTCRHODIUMCDMA HTCRHODIUMCDMA 2734
2722epc_g45 MACH_EPC_G45 EPC_G45 2735
2723epc_lpc3250 MACH_EPC_LPC3250 EPC_LPC3250 2736
2724mxc91341evb MACH_MXC91341EVB MXC91341EVB 2737
2725rtw1000 MACH_RTW1000 RTW1000 2738
2726bobcat MACH_BOBCAT BOBCAT 2739
2727trizeps6 MACH_TRIZEPS6 TRIZEPS6 2740
2728msm7x30_fluid MACH_MSM7X30_FLUID MSM7X30_FLUID 2741
2729nedap9263 MACH_NEDAP9263 NEDAP9263 2742
2730netgear_ms2110 MACH_NETGEAR_MS2110 NETGEAR_MS2110 2743
2731bmx MACH_BMX BMX 2744
2732netstream MACH_NETSTREAM NETSTREAM 2745
2733vpnext_rcu MACH_VPNEXT_RCU VPNEXT_RCU 2746
2734vpnext_mpu MACH_VPNEXT_MPU VPNEXT_MPU 2747
2735bcmring_tablet_v1 MACH_BCMRING_TABLET_V1 BCMRING_TABLET_V1 2748
2736sgarm10 MACH_SGARM10 SGARM10 2749
2737cm_t3517 MACH_CM_T3517 CM_T3517 2750
2738omap3_cps MACH_OMAP3_CPS OMAP3_CPS 2751
2739axar1500_receiver MACH_AXAR1500_RECEIVER AXAR1500_RECEIVER 2752
2740wbd222 MACH_WBD222 WBD222 2753
2741mt65xx MACH_MT65XX MT65XX 2754
2742msm8x60_surf MACH_MSM8X60_SURF MSM8X60_SURF 2755
2743msm8x60_sim MACH_MSM8X60_SIM MSM8X60_SIM 2756
2744vmc300 MACH_VMC300 VMC300 2757
2745tcc8000_sdk MACH_TCC8000_SDK TCC8000_SDK 2758
2746nanos MACH_NANOS NANOS 2759
2747stamp9g10 MACH_STAMP9G10 STAMP9G10 2760
2748stamp9g45 MACH_STAMP9G45 STAMP9G45 2761
2749h6053 MACH_H6053 H6053 2762
2750smint01 MACH_SMINT01 SMINT01 2763
2751prtlvt2 MACH_PRTLVT2 PRTLVT2 2764
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 7f3f59fcaa21..315a540c7ce5 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -428,26 +428,6 @@ static void vfp_pm_init(void)
428static inline void vfp_pm_init(void) { } 428static inline void vfp_pm_init(void) { }
429#endif /* CONFIG_PM */ 429#endif /* CONFIG_PM */
430 430
431/*
432 * Synchronise the hardware VFP state of a thread other than current with the
433 * saved one. This function is used by the ptrace mechanism.
434 */
435#ifdef CONFIG_SMP
436void vfp_sync_hwstate(struct thread_info *thread)
437{
438}
439
440void vfp_flush_hwstate(struct thread_info *thread)
441{
442 /*
443 * On SMP systems, the VFP state is automatically saved at every
444 * context switch. We mark the thread VFP state as belonging to a
445 * non-existent CPU so that the saved one will be reloaded when
446 * needed.
447 */
448 thread->vfpstate.hard.cpu = NR_CPUS;
449}
450#else
451void vfp_sync_hwstate(struct thread_info *thread) 431void vfp_sync_hwstate(struct thread_info *thread)
452{ 432{
453 unsigned int cpu = get_cpu(); 433 unsigned int cpu = get_cpu();
@@ -490,9 +470,18 @@ void vfp_flush_hwstate(struct thread_info *thread)
490 last_VFP_context[cpu] = NULL; 470 last_VFP_context[cpu] = NULL;
491 } 471 }
492 472
473#ifdef CONFIG_SMP
474 /*
475 * For SMP we still have to take care of the case where the thread
476 * migrates to another CPU and then back to the original CPU on which
477 * the last VFP user is still the same thread. Mark the thread VFP
478 * state as belonging to a non-existent CPU so that the saved one will
479 * be reloaded in the above case.
480 */
481 thread->vfpstate.hard.cpu = NR_CPUS;
482#endif
493 put_cpu(); 483 put_cpu();
494} 484}
495#endif
496 485
497#include <linux/smp.h> 486#include <linux/smp.h>
498 487
@@ -545,7 +534,7 @@ static int __init vfp_init(void)
545 */ 534 */
546 elf_hwcap |= HWCAP_VFP; 535 elf_hwcap |= HWCAP_VFP;
547#ifdef CONFIG_VFPv3 536#ifdef CONFIG_VFPv3
548 if (VFP_arch >= 3) { 537 if (VFP_arch >= 2) {
549 elf_hwcap |= HWCAP_VFPv3; 538 elf_hwcap |= HWCAP_VFPv3;
550 539
551 /* 540 /*
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
index 93c0342530a0..2d76515745a4 100644
--- a/arch/avr32/kernel/process.c
+++ b/arch/avr32/kernel/process.c
@@ -11,6 +11,7 @@
11#include <linux/fs.h> 11#include <linux/fs.h>
12#include <linux/pm.h> 12#include <linux/pm.h>
13#include <linux/ptrace.h> 13#include <linux/ptrace.h>
14#include <linux/slab.h>
14#include <linux/reboot.h> 15#include <linux/reboot.h>
15#include <linux/tick.h> 16#include <linux/tick.h>
16#include <linux/uaccess.h> 17#include <linux/uaccess.h>
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 3a4bc1a18433..e67c99945428 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/dma-mapping.h> 14#include <linux/dma-mapping.h>
15#include <linux/slab.h>
15#include <linux/gpio.h> 16#include <linux/gpio.h>
16#include <linux/spi/spi.h> 17#include <linux/spi/spi.h>
17#include <linux/usb/atmel_usba_udc.h> 18#include <linux/usb/atmel_usba_udc.h>
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index 310477ba1bbf..e9d12058ffd3 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -14,6 +14,7 @@
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/random.h> 16#include <linux/random.h>
17#include <linux/slab.h>
17 18
18#include <asm/io.h> 19#include <asm/io.h>
19 20
diff --git a/arch/avr32/mach-at32ap/hsmc.c b/arch/avr32/mach-at32ap/hsmc.c
index 2875c11be95d..f7672d3e86b8 100644
--- a/arch/avr32/mach-at32ap/hsmc.c
+++ b/arch/avr32/mach-at32ap/hsmc.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/slab.h>
15 16
16#include <asm/io.h> 17#include <asm/io.h>
17#include <mach/smc.h> 18#include <mach/smc.h>
diff --git a/arch/avr32/mm/dma-coherent.c b/arch/avr32/mm/dma-coherent.c
index 6d8c794c3b81..3c0042247ea9 100644
--- a/arch/avr32/mm/dma-coherent.c
+++ b/arch/avr32/mm/dma-coherent.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/dma-mapping.h> 9#include <linux/dma-mapping.h>
10#include <linux/gfp.h>
10 11
11#include <asm/addrspace.h> 12#include <asm/addrspace.h>
12#include <asm/cacheflush.h> 13#include <asm/cacheflush.h>
diff --git a/arch/avr32/mm/init.c b/arch/avr32/mm/init.c
index 94925641e53e..a7314d44b17b 100644
--- a/arch/avr32/mm/init.c
+++ b/arch/avr32/mm/init.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/gfp.h>
10#include <linux/mm.h> 11#include <linux/mm.h>
11#include <linux/swap.h> 12#include <linux/swap.h>
12#include <linux/init.h> 13#include <linux/init.h>
diff --git a/arch/avr32/mm/ioremap.c b/arch/avr32/mm/ioremap.c
index f03b79f0e0ab..7def0d84cec6 100644
--- a/arch/avr32/mm/ioremap.c
+++ b/arch/avr32/mm/ioremap.c
@@ -9,6 +9,7 @@
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/io.h> 11#include <linux/io.h>
12#include <linux/slab.h>
12 13
13#include <asm/pgtable.h> 14#include <asm/pgtable.h>
14#include <asm/addrspace.h> 15#include <asm/addrspace.h>
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 53c1e1d45c68..c078849df7f9 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -23,12 +23,15 @@ config RWSEM_XCHGADD_ALGORITHM
23 23
24config BLACKFIN 24config BLACKFIN
25 def_bool y 25 def_bool y
26 select HAVE_ARCH_KGDB
27 select HAVE_ARCH_TRACEHOOK
26 select HAVE_FUNCTION_GRAPH_TRACER 28 select HAVE_FUNCTION_GRAPH_TRACER
27 select HAVE_FUNCTION_TRACER 29 select HAVE_FUNCTION_TRACER
30 select HAVE_FUNCTION_TRACE_MCOUNT_TEST
28 select HAVE_IDE 31 select HAVE_IDE
29 select HAVE_KERNEL_GZIP 32 select HAVE_KERNEL_GZIP if RAMKERNEL
30 select HAVE_KERNEL_BZIP2 33 select HAVE_KERNEL_BZIP2 if RAMKERNEL
31 select HAVE_KERNEL_LZMA 34 select HAVE_KERNEL_LZMA if RAMKERNEL
32 select HAVE_OPROFILE 35 select HAVE_OPROFILE
33 select ARCH_WANT_OPTIONAL_GPIOLIB 36 select ARCH_WANT_OPTIONAL_GPIOLIB
34 37
@@ -45,9 +48,6 @@ config ZONE_DMA
45config GENERIC_FIND_NEXT_BIT 48config GENERIC_FIND_NEXT_BIT
46 def_bool y 49 def_bool y
47 50
48config GENERIC_HWEIGHT
49 def_bool y
50
51config GENERIC_HARDIRQS 51config GENERIC_HARDIRQS
52 def_bool y 52 def_bool y
53 53
@@ -239,7 +239,7 @@ endchoice
239 239
240config SMP 240config SMP
241 depends on BF561 241 depends on BF561
242 select GENERIC_CLOCKEVENTS 242 select TICKSOURCE_CORETMR
243 bool "Symmetric multi-processing support" 243 bool "Symmetric multi-processing support"
244 ---help--- 244 ---help---
245 This enables support for systems with more than one CPU, 245 This enables support for systems with more than one CPU,
@@ -253,11 +253,20 @@ config NR_CPUS
253 depends on SMP 253 depends on SMP
254 default 2 if BF561 254 default 2 if BF561
255 255
256config HOTPLUG_CPU
257 bool "Support for hot-pluggable CPUs"
258 depends on SMP && HOTPLUG
259 default y
260
256config IRQ_PER_CPU 261config IRQ_PER_CPU
257 bool 262 bool
258 depends on SMP 263 depends on SMP
259 default y 264 default y
260 265
266config HAVE_LEGACY_PER_CPU_AREA
267 def_bool y
268 depends on SMP
269
261config BF_REV_MIN 270config BF_REV_MIN
262 int 271 int
263 default 0 if (BF51x || BF52x || (BF54x && !BF54xM)) 272 default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
@@ -349,7 +358,7 @@ config MEM_MT48LC8M32B2B5_7
349 358
350config MEM_MT48LC32M16A2TG_75 359config MEM_MT48LC32M16A2TG_75
351 bool 360 bool
352 depends on (BFIN527_EZKIT || BFIN532_IP0X || BLACKSTAMP) 361 depends on (BFIN527_EZKIT || BFIN527_EZKIT_V2 || BFIN532_IP0X || BLACKSTAMP)
353 default y 362 default y
354 363
355config MEM_MT48LC32M8A2_75 364config MEM_MT48LC32M8A2_75
@@ -401,10 +410,18 @@ config BOOT_LOAD
401config ROM_BASE 410config ROM_BASE
402 hex "Kernel ROM Base" 411 hex "Kernel ROM Base"
403 depends on ROMKERNEL 412 depends on ROMKERNEL
404 default "0x20040000" 413 default "0x20040040"
405 range 0x20000000 0x20400000 if !(BF54x || BF561) 414 range 0x20000000 0x20400000 if !(BF54x || BF561)
406 range 0x20000000 0x30000000 if (BF54x || BF561) 415 range 0x20000000 0x30000000 if (BF54x || BF561)
407 help 416 help
417 Make sure your ROM base does not include any file-header
418 information that is prepended to the kernel.
419
420 For example, the bootable U-Boot format (created with
421 mkimage) has a 64 byte header (0x40). So while the image
422 you write to flash might start at say 0x20080000, you have
423 to add 0x40 to get the kernel's ROM base as it will come
424 after the header.
408 425
409comment "Clock/PLL Setup" 426comment "Clock/PLL Setup"
410 427
@@ -448,7 +465,7 @@ config VCO_MULT
448 range 1 64 465 range 1 64
449 default "22" if BFIN533_EZKIT 466 default "22" if BFIN533_EZKIT
450 default "45" if BFIN533_STAMP 467 default "45" if BFIN533_STAMP
451 default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT || BFIN548_BLUETECHNIX_CM || BFIN538_EZKIT) 468 default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN527_EZKIT_V2 || BFIN548_EZKIT || BFIN548_BLUETECHNIX_CM || BFIN538_EZKIT)
452 default "22" if BFIN533_BLUETECHNIX_CM 469 default "22" if BFIN533_BLUETECHNIX_CM
453 default "20" if (BFIN537_BLUETECHNIX_CM_E || BFIN537_BLUETECHNIX_CM_U || BFIN527_BLUETECHNIX_CM || BFIN561_BLUETECHNIX_CM) 470 default "20" if (BFIN537_BLUETECHNIX_CM_E || BFIN537_BLUETECHNIX_CM_U || BFIN527_BLUETECHNIX_CM || BFIN561_BLUETECHNIX_CM)
454 default "20" if BFIN561_EZKIT 471 default "20" if BFIN561_EZKIT
@@ -609,23 +626,23 @@ config GENERIC_CLOCKEVENTS
609 bool "Generic clock events" 626 bool "Generic clock events"
610 default y 627 default y
611 628
612choice 629menu "Clock event device"
613 prompt "Kernel Tick Source"
614 depends on GENERIC_CLOCKEVENTS 630 depends on GENERIC_CLOCKEVENTS
615 default TICKSOURCE_CORETMR
616
617config TICKSOURCE_GPTMR0 631config TICKSOURCE_GPTMR0
618 bool "Gptimer0 (SCLK domain)" 632 bool "GPTimer0"
633 depends on !SMP
619 select BFIN_GPTIMERS 634 select BFIN_GPTIMERS
620 635
621config TICKSOURCE_CORETMR 636config TICKSOURCE_CORETMR
622 bool "Core timer (CCLK domain)" 637 bool "Core timer"
623 638 default y
624endchoice 639endmenu
625 640
626config CYCLES_CLOCKSOURCE 641menu "Clock souce"
627 bool "Use 'CYCLES' as a clocksource"
628 depends on GENERIC_CLOCKEVENTS 642 depends on GENERIC_CLOCKEVENTS
643config CYCLES_CLOCKSOURCE
644 bool "CYCLES"
645 default y
629 depends on !BFIN_SCRATCH_REG_CYCLES 646 depends on !BFIN_SCRATCH_REG_CYCLES
630 depends on !SMP 647 depends on !SMP
631 help 648 help
@@ -636,10 +653,10 @@ config CYCLES_CLOCKSOURCE
636 writing the registers will most likely crash the kernel. 653 writing the registers will most likely crash the kernel.
637 654
638config GPTMR0_CLOCKSOURCE 655config GPTMR0_CLOCKSOURCE
639 bool "Use GPTimer0 as a clocksource" 656 bool "GPTimer0"
640 select BFIN_GPTIMERS 657 select BFIN_GPTIMERS
641 depends on GENERIC_CLOCKEVENTS
642 depends on !TICKSOURCE_GPTMR0 658 depends on !TICKSOURCE_GPTMR0
659endmenu
643 660
644config ARCH_USES_GETTIMEOFFSET 661config ARCH_USES_GETTIMEOFFSET
645 depends on !GENERIC_CLOCKEVENTS 662 depends on !GENERIC_CLOCKEVENTS
@@ -1116,24 +1133,6 @@ config PCI
1116 1133
1117source "drivers/pci/Kconfig" 1134source "drivers/pci/Kconfig"
1118 1135
1119config HOTPLUG
1120 bool "Support for hot-pluggable device"
1121 help
1122 Say Y here if you want to plug devices into your computer while
1123 the system is running, and be able to use them quickly. In many
1124 cases, the devices can likewise be unplugged at any time too.
1125
1126 One well known example of this is PCMCIA- or PC-cards, credit-card
1127 size devices such as network cards, modems or hard drives which are
1128 plugged into slots found on all modern laptop computers. Another
1129 example, used on modern desktops as well as laptops, is USB.
1130
1131 Enable HOTPLUG and build a modular kernel. Get agent software
1132 (from <http://linux-hotplug.sourceforge.net/>) and install it.
1133 Then your kernel will automatically call out to a user mode "policy
1134 agent" (/sbin/hotplug) to load modules and set up software needed
1135 to use devices as you hotplug them.
1136
1137source "drivers/pcmcia/Kconfig" 1136source "drivers/pcmcia/Kconfig"
1138 1137
1139source "drivers/pci/hotplug/Kconfig" 1138source "drivers/pci/hotplug/Kconfig"
@@ -1147,7 +1146,6 @@ source "fs/Kconfig.binfmt"
1147endmenu 1146endmenu
1148 1147
1149menu "Power management options" 1148menu "Power management options"
1150 depends on !SMP
1151 1149
1152source "kernel/power/Kconfig" 1150source "kernel/power/Kconfig"
1153 1151
@@ -1240,7 +1238,6 @@ config PM_BFIN_WAKE_GP
1240endmenu 1238endmenu
1241 1239
1242menu "CPU Frequency scaling" 1240menu "CPU Frequency scaling"
1243 depends on !SMP
1244 1241
1245source "drivers/cpufreq/Kconfig" 1242source "drivers/cpufreq/Kconfig"
1246 1243
diff --git a/arch/blackfin/Kconfig.debug b/arch/blackfin/Kconfig.debug
index 87f195ee2e06..aec89a5280b2 100644
--- a/arch/blackfin/Kconfig.debug
+++ b/arch/blackfin/Kconfig.debug
@@ -18,9 +18,6 @@ config DEBUG_STACK_USAGE
18 18
19 This option will slow down process creation somewhat. 19 This option will slow down process creation somewhat.
20 20
21config HAVE_ARCH_KGDB
22 def_bool y
23
24config DEBUG_VERBOSE 21config DEBUG_VERBOSE
25 bool "Verbose fault messages" 22 bool "Verbose fault messages"
26 default y 23 default y
@@ -238,6 +235,15 @@ config EARLY_PRINTK
238 all of this lives in the init section and is thrown away after the 235 all of this lives in the init section and is thrown away after the
239 kernel boots completely. 236 kernel boots completely.
240 237
238config NMI_WATCHDOG
239 bool "Enable NMI watchdog to help debugging lockup on SMP"
240 default n
241 depends on (SMP && !BFIN_SCRATCH_REG_RETN)
242 help
243 If any CPU in the system does not execute the period local timer
244 interrupt for more than 5 seconds, then the NMI handler dumps debug
245 information. This information can be used to debug the lockup.
246
241config CPLB_INFO 247config CPLB_INFO
242 bool "Display the CPLB information" 248 bool "Display the CPLB information"
243 help 249 help
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index d4c7177e7656..5a97a31d4bbd 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -14,6 +14,9 @@ OBJCOPYFLAGS := -O binary -R .note -R .comment -S
14GZFLAGS := -9 14GZFLAGS := -9
15 15
16KBUILD_CFLAGS += $(call cc-option,-mno-fdpic) 16KBUILD_CFLAGS += $(call cc-option,-mno-fdpic)
17ifeq ($(CONFIG_ROMKERNEL),y)
18KBUILD_CFLAGS += -mlong-calls
19endif
17KBUILD_AFLAGS += $(call cc-option,-mno-fdpic) 20KBUILD_AFLAGS += $(call cc-option,-mno-fdpic)
18CFLAGS_MODULE += -mlong-calls 21CFLAGS_MODULE += -mlong-calls
19LDFLAGS_MODULE += -m elf32bfin 22LDFLAGS_MODULE += -m elf32bfin
@@ -130,7 +133,6 @@ KBUILD_CFLAGS += -Iarch/$(ARCH)/mach-$(MACHINE)/include
130KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs)) 133KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs))
131 134
132CLEAN_FILES += \ 135CLEAN_FILES += \
133 arch/$(ARCH)/include/asm/asm-offsets.h \
134 arch/$(ARCH)/kernel/asm-offsets.s \ 136 arch/$(ARCH)/kernel/asm-offsets.s \
135 137
136archclean: 138archclean:
@@ -138,7 +140,7 @@ archclean:
138 140
139INSTALL_PATH ?= /tftpboot 141INSTALL_PATH ?= /tftpboot
140boot := arch/$(ARCH)/boot 142boot := arch/$(ARCH)/boot
141BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma 143BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.xip
142PHONY += $(BOOT_TARGETS) install 144PHONY += $(BOOT_TARGETS) install
143KBUILD_IMAGE := $(boot)/vmImage 145KBUILD_IMAGE := $(boot)/vmImage
144 146
@@ -156,6 +158,7 @@ define archhelp
156 echo ' vmImage.bz2 - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bz2)' 158 echo ' vmImage.bz2 - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bz2)'
157 echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)' 159 echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)'
158 echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)' 160 echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)'
161 echo ' vmImage.xip - XIP Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.xip)'
159 echo ' install - Install kernel using' 162 echo ' install - Install kernel using'
160 echo ' (your) ~/bin/$(INSTALLKERNEL) or' 163 echo ' (your) ~/bin/$(INSTALLKERNEL) or'
161 echo ' (distribution) PATH: $(INSTALLKERNEL) or' 164 echo ' (distribution) PATH: $(INSTALLKERNEL) or'
diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile
index e9c48c6f8c1f..d1b3d6051fdf 100644
--- a/arch/blackfin/boot/Makefile
+++ b/arch/blackfin/boot/Makefile
@@ -8,14 +8,18 @@
8 8
9MKIMAGE := $(srctree)/scripts/mkuboot.sh 9MKIMAGE := $(srctree)/scripts/mkuboot.sh
10 10
11targets := vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma 11targets := vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.xip
12extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma 12extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xip
13
14UIMAGE_OPTS-y :=
15UIMAGE_OPTS-$(CONFIG_RAMKERNEL) += -a $(CONFIG_BOOT_LOAD)
16UIMAGE_OPTS-$(CONFIG_ROMKERNEL) += -a $(CONFIG_ROM_BASE) -x
13 17
14quiet_cmd_uimage = UIMAGE $@ 18quiet_cmd_uimage = UIMAGE $@
15 cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(ARCH) -O linux -T kernel \ 19 cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(ARCH) -O linux -T kernel \
16 -C $(2) -n '$(MACHINE)-$(KERNELRELEASE)' -a $(CONFIG_BOOT_LOAD) \ 20 -C $(2) -n '$(MACHINE)-$(KERNELRELEASE)' \
17 -e $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}') \ 21 -e $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}') \
18 -d $< $@ 22 $(UIMAGE_OPTS-y) -d $< $@
19 23
20$(obj)/vmlinux.bin: vmlinux FORCE 24$(obj)/vmlinux.bin: vmlinux FORCE
21 $(call if_changed,objcopy) 25 $(call if_changed,objcopy)
@@ -29,6 +33,12 @@ $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
29$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 33$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
30 $(call if_changed,lzma) 34 $(call if_changed,lzma)
31 35
36# The mkimage tool wants 64bytes prepended to the image
37quiet_cmd_mk_bin_xip = BIN $@
38 cmd_mk_bin_xip = ( printf '%64s' | tr ' ' '\377' ; cat $< ) > $@
39$(obj)/vmlinux.bin.xip: $(obj)/vmlinux.bin FORCE
40 $(call if_changed,mk_bin_xip)
41
32$(obj)/vmImage.bin: $(obj)/vmlinux.bin 42$(obj)/vmImage.bin: $(obj)/vmlinux.bin
33 $(call if_changed,uimage,none) 43 $(call if_changed,uimage,none)
34 44
@@ -41,10 +51,15 @@ $(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz
41$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma 51$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma
42 $(call if_changed,uimage,lzma) 52 $(call if_changed,uimage,lzma)
43 53
54$(obj)/vmImage.xip: $(obj)/vmlinux.bin.xip
55 $(call if_changed,uimage,none)
56
44suffix-y := bin 57suffix-y := bin
45suffix-$(CONFIG_KERNEL_GZIP) := gz 58suffix-$(CONFIG_KERNEL_GZIP) := gz
46suffix-$(CONFIG_KERNEL_BZIP2) := bz2 59suffix-$(CONFIG_KERNEL_BZIP2) := bz2
47suffix-$(CONFIG_KERNEL_LZMA) := lzma 60suffix-$(CONFIG_KERNEL_LZMA) := lzma
61suffix-$(CONFIG_ROMKERNEL) := xip
62
48$(obj)/vmImage: $(obj)/vmImage.$(suffix-y) 63$(obj)/vmImage: $(obj)/vmImage.$(suffix-y)
49 @ln -sf $(notdir $<) $@ 64 @ln -sf $(notdir $<) $@
50 65
diff --git a/arch/blackfin/configs/BF518F-EZBRD_defconfig b/arch/blackfin/configs/BF518F-EZBRD_defconfig
index e31559419817..cf7c9bc94f13 100644
--- a/arch/blackfin/configs/BF518F-EZBRD_defconfig
+++ b/arch/blackfin/configs/BF518F-EZBRD_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_IOSCHED_NOOP=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102CONFIG_DEFAULT_NOOP=y 131CONFIG_DEFAULT_NOOP=y
103CONFIG_DEFAULT_IOSCHED="noop" 132CONFIG_DEFAULT_IOSCHED="noop"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_BF518=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=0 174CONFIG_BF_REV_MIN=0
@@ -154,8 +182,8 @@ CONFIG_BF_REV_0_0=y
154# CONFIG_BF_REV_0_6 is not set 182# CONFIG_BF_REV_0_6 is not set
155# CONFIG_BF_REV_ANY is not set 183# CONFIG_BF_REV_ANY is not set
156# CONFIG_BF_REV_NONE is not set 184# CONFIG_BF_REV_NONE is not set
157CONFIG_BF51x=y
158CONFIG_MEM_MT48LC32M8A2_75=y 185CONFIG_MEM_MT48LC32M8A2_75=y
186CONFIG_BF51x=y
159CONFIG_BFIN518F_EZBRD=y 187CONFIG_BFIN518F_EZBRD=y
160 188
161# 189#
@@ -313,7 +341,6 @@ CONFIG_FLATMEM=y
313CONFIG_FLAT_NODE_MEM_MAP=y 341CONFIG_FLAT_NODE_MEM_MAP=y
314CONFIG_PAGEFLAGS_EXTENDED=y 342CONFIG_PAGEFLAGS_EXTENDED=y
315CONFIG_SPLIT_PTLOCK_CPUS=4 343CONFIG_SPLIT_PTLOCK_CPUS=4
316# CONFIG_RESOURCES_64BIT is not set
317# CONFIG_PHYS_ADDR_T_64BIT is not set 344# CONFIG_PHYS_ADDR_T_64BIT is not set
318CONFIG_ZONE_DMA_FLAG=1 345CONFIG_ZONE_DMA_FLAG=1
319CONFIG_VIRT_TO_BUS=y 346CONFIG_VIRT_TO_BUS=y
@@ -322,16 +349,18 @@ CONFIG_BFIN_GPTIMERS=m
322# CONFIG_DMA_UNCACHED_4M is not set 349# CONFIG_DMA_UNCACHED_4M is not set
323# CONFIG_DMA_UNCACHED_2M is not set 350# CONFIG_DMA_UNCACHED_2M is not set
324CONFIG_DMA_UNCACHED_1M=y 351CONFIG_DMA_UNCACHED_1M=y
352# CONFIG_DMA_UNCACHED_512K is not set
353# CONFIG_DMA_UNCACHED_256K is not set
354# CONFIG_DMA_UNCACHED_128K is not set
325# CONFIG_DMA_UNCACHED_NONE is not set 355# CONFIG_DMA_UNCACHED_NONE is not set
326 356
327# 357#
328# Cache Support 358# Cache Support
329# 359#
330CONFIG_BFIN_ICACHE=y 360CONFIG_BFIN_ICACHE=y
331# CONFIG_BFIN_ICACHE_LOCK is not set 361CONFIG_BFIN_EXTMEM_ICACHEABLE=y
332CONFIG_BFIN_DCACHE=y 362CONFIG_BFIN_DCACHE=y
333# CONFIG_BFIN_DCACHE_BANKA is not set 363# CONFIG_BFIN_DCACHE_BANKA is not set
334CONFIG_BFIN_EXTMEM_ICACHEABLE=y
335CONFIG_BFIN_EXTMEM_DCACHEABLE=y 364CONFIG_BFIN_EXTMEM_DCACHEABLE=y
336CONFIG_BFIN_EXTMEM_WRITEBACK=y 365CONFIG_BFIN_EXTMEM_WRITEBACK=y
337# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 366# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -342,7 +371,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
342# CONFIG_MPU is not set 371# CONFIG_MPU is not set
343 372
344# 373#
345# Asynchonous Memory Configuration 374# Asynchronous Memory Configuration
346# 375#
347 376
348# 377#
@@ -398,11 +427,6 @@ CONFIG_NET=y
398CONFIG_PACKET=y 427CONFIG_PACKET=y
399# CONFIG_PACKET_MMAP is not set 428# CONFIG_PACKET_MMAP is not set
400CONFIG_UNIX=y 429CONFIG_UNIX=y
401CONFIG_XFRM=y
402# CONFIG_XFRM_USER is not set
403# CONFIG_XFRM_SUB_POLICY is not set
404# CONFIG_XFRM_MIGRATE is not set
405# CONFIG_XFRM_STATISTICS is not set
406# CONFIG_NET_KEY is not set 430# CONFIG_NET_KEY is not set
407CONFIG_INET=y 431CONFIG_INET=y
408# CONFIG_IP_MULTICAST is not set 432# CONFIG_IP_MULTICAST is not set
@@ -426,7 +450,6 @@ CONFIG_IP_PNP=y
426# CONFIG_INET_XFRM_MODE_BEET is not set 450# CONFIG_INET_XFRM_MODE_BEET is not set
427# CONFIG_INET_LRO is not set 451# CONFIG_INET_LRO is not set
428# CONFIG_INET_DIAG is not set 452# CONFIG_INET_DIAG is not set
429CONFIG_INET_TCP_DIAG=y
430# CONFIG_TCP_CONG_ADVANCED is not set 453# CONFIG_TCP_CONG_ADVANCED is not set
431CONFIG_TCP_CONG_CUBIC=y 454CONFIG_TCP_CONG_CUBIC=y
432CONFIG_DEFAULT_TCP_CONG="cubic" 455CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -437,6 +460,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
437# CONFIG_NETFILTER is not set 460# CONFIG_NETFILTER is not set
438# CONFIG_IP_DCCP is not set 461# CONFIG_IP_DCCP is not set
439# CONFIG_IP_SCTP is not set 462# CONFIG_IP_SCTP is not set
463# CONFIG_RDS is not set
440# CONFIG_TIPC is not set 464# CONFIG_TIPC is not set
441# CONFIG_ATM is not set 465# CONFIG_ATM is not set
442# CONFIG_BRIDGE is not set 466# CONFIG_BRIDGE is not set
@@ -450,7 +474,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
450# CONFIG_LAPB is not set 474# CONFIG_LAPB is not set
451# CONFIG_ECONET is not set 475# CONFIG_ECONET is not set
452# CONFIG_WAN_ROUTER is not set 476# CONFIG_WAN_ROUTER is not set
477# CONFIG_PHONET is not set
478# CONFIG_IEEE802154 is not set
453# CONFIG_NET_SCHED is not set 479# CONFIG_NET_SCHED is not set
480# CONFIG_DCB is not set
454 481
455# 482#
456# Network testing 483# Network testing
@@ -461,13 +488,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
461# CONFIG_IRDA is not set 488# CONFIG_IRDA is not set
462# CONFIG_BT is not set 489# CONFIG_BT is not set
463# CONFIG_AF_RXRPC is not set 490# CONFIG_AF_RXRPC is not set
464# CONFIG_PHONET is not set 491# CONFIG_WIRELESS is not set
465CONFIG_WIRELESS=y 492# CONFIG_WIMAX is not set
466# CONFIG_CFG80211 is not set
467CONFIG_WIRELESS_OLD_REGULATORY=y
468# CONFIG_WIRELESS_EXT is not set
469# CONFIG_MAC80211 is not set
470# CONFIG_IEEE80211 is not set
471# CONFIG_RFKILL is not set 493# CONFIG_RFKILL is not set
472# CONFIG_NET_9P is not set 494# CONFIG_NET_9P is not set
473 495
@@ -488,6 +510,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
488# CONFIG_CONNECTOR is not set 510# CONFIG_CONNECTOR is not set
489CONFIG_MTD=y 511CONFIG_MTD=y
490# CONFIG_MTD_DEBUG is not set 512# CONFIG_MTD_DEBUG is not set
513# CONFIG_MTD_TESTS is not set
491# CONFIG_MTD_CONCAT is not set 514# CONFIG_MTD_CONCAT is not set
492CONFIG_MTD_PARTITIONS=y 515CONFIG_MTD_PARTITIONS=y
493# CONFIG_MTD_REDBOOT_PARTS is not set 516# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -545,6 +568,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
545# 568#
546# CONFIG_MTD_DATAFLASH is not set 569# CONFIG_MTD_DATAFLASH is not set
547# CONFIG_MTD_M25P80 is not set 570# CONFIG_MTD_M25P80 is not set
571# CONFIG_MTD_SST25L is not set
548# CONFIG_MTD_SLRAM is not set 572# CONFIG_MTD_SLRAM is not set
549# CONFIG_MTD_PHRAM is not set 573# CONFIG_MTD_PHRAM is not set
550# CONFIG_MTD_MTDRAM is not set 574# CONFIG_MTD_MTDRAM is not set
@@ -560,6 +584,11 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
560# CONFIG_MTD_ONENAND is not set 584# CONFIG_MTD_ONENAND is not set
561 585
562# 586#
587# LPDDR flash memory drivers
588#
589# CONFIG_MTD_LPDDR is not set
590
591#
563# UBI - Unsorted block images 592# UBI - Unsorted block images
564# 593#
565# CONFIG_MTD_UBI is not set 594# CONFIG_MTD_UBI is not set
@@ -576,10 +605,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
576# CONFIG_ATA_OVER_ETH is not set 605# CONFIG_ATA_OVER_ETH is not set
577# CONFIG_BLK_DEV_HD is not set 606# CONFIG_BLK_DEV_HD is not set
578CONFIG_MISC_DEVICES=y 607CONFIG_MISC_DEVICES=y
579# CONFIG_EEPROM_93CX6 is not set 608# CONFIG_AD525X_DPOT is not set
580# CONFIG_ICS932S401 is not set 609# CONFIG_ICS932S401 is not set
581# CONFIG_ENCLOSURE_SERVICES is not set 610# CONFIG_ENCLOSURE_SERVICES is not set
611# CONFIG_ISL29003 is not set
582# CONFIG_C2PORT is not set 612# CONFIG_C2PORT is not set
613
614#
615# EEPROM support
616#
617# CONFIG_EEPROM_AT24 is not set
618# CONFIG_EEPROM_AT25 is not set
619# CONFIG_EEPROM_LEGACY is not set
620# CONFIG_EEPROM_MAX6875 is not set
621# CONFIG_EEPROM_93CX6 is not set
583CONFIG_HAVE_IDE=y 622CONFIG_HAVE_IDE=y
584# CONFIG_IDE is not set 623# CONFIG_IDE is not set
585 624
@@ -614,6 +653,9 @@ CONFIG_PHYLIB=y
614# CONFIG_BROADCOM_PHY is not set 653# CONFIG_BROADCOM_PHY is not set
615# CONFIG_ICPLUS_PHY is not set 654# CONFIG_ICPLUS_PHY is not set
616# CONFIG_REALTEK_PHY is not set 655# CONFIG_REALTEK_PHY is not set
656# CONFIG_NATIONAL_PHY is not set
657# CONFIG_STE10XP is not set
658# CONFIG_LSI_ET1011C_PHY is not set
617# CONFIG_FIXED_PHY is not set 659# CONFIG_FIXED_PHY is not set
618# CONFIG_MDIO_BITBANG is not set 660# CONFIG_MDIO_BITBANG is not set
619CONFIG_NET_ETHERNET=y 661CONFIG_NET_ETHERNET=y
@@ -622,10 +664,14 @@ CONFIG_BFIN_MAC=y
622CONFIG_BFIN_TX_DESC_NUM=10 664CONFIG_BFIN_TX_DESC_NUM=10
623CONFIG_BFIN_RX_DESC_NUM=20 665CONFIG_BFIN_RX_DESC_NUM=20
624# CONFIG_BFIN_MAC_RMII is not set 666# CONFIG_BFIN_MAC_RMII is not set
667CONFIG_BFIN_MAC_USE_HWSTAMP=y
625# CONFIG_SMC91X is not set 668# CONFIG_SMC91X is not set
626# CONFIG_SMSC911X is not set
627# CONFIG_DM9000 is not set 669# CONFIG_DM9000 is not set
628# CONFIG_ENC28J60 is not set 670# CONFIG_ENC28J60 is not set
671# CONFIG_ETHOC is not set
672# CONFIG_SMSC911X is not set
673# CONFIG_DNET is not set
674# CONFIG_ADF702X is not set
629# CONFIG_IBM_NEW_EMAC_ZMII is not set 675# CONFIG_IBM_NEW_EMAC_ZMII is not set
630# CONFIG_IBM_NEW_EMAC_RGMII is not set 676# CONFIG_IBM_NEW_EMAC_RGMII is not set
631# CONFIG_IBM_NEW_EMAC_TAH is not set 677# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -634,15 +680,16 @@ CONFIG_BFIN_RX_DESC_NUM=20
634# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 680# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
635# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 681# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
636# CONFIG_B44 is not set 682# CONFIG_B44 is not set
683# CONFIG_KS8842 is not set
684# CONFIG_KS8851 is not set
685# CONFIG_KS8851_MLL is not set
637# CONFIG_NETDEV_1000 is not set 686# CONFIG_NETDEV_1000 is not set
638# CONFIG_NETDEV_10000 is not set 687# CONFIG_NETDEV_10000 is not set
688# CONFIG_WLAN is not set
639 689
640# 690#
641# Wireless LAN 691# Enable WiMAX (Networking options) to see the WiMAX drivers
642# 692#
643# CONFIG_WLAN_PRE80211 is not set
644# CONFIG_WLAN_80211 is not set
645# CONFIG_IWLWIFI_LEDS is not set
646# CONFIG_WAN is not set 693# CONFIG_WAN is not set
647# CONFIG_PPP is not set 694# CONFIG_PPP is not set
648# CONFIG_SLIP is not set 695# CONFIG_SLIP is not set
@@ -677,7 +724,10 @@ CONFIG_INPUT=y
677# CONFIG_INPUT_TOUCHSCREEN is not set 724# CONFIG_INPUT_TOUCHSCREEN is not set
678CONFIG_INPUT_MISC=y 725CONFIG_INPUT_MISC=y
679# CONFIG_INPUT_UINPUT is not set 726# CONFIG_INPUT_UINPUT is not set
680# CONFIG_CONFIG_INPUT_PCF8574 is not set 727# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
728# CONFIG_INPUT_AD714X is not set
729# CONFIG_INPUT_ADXL34X is not set
730# CONFIG_INPUT_PCF8574 is not set
681 731
682# 732#
683# Hardware I/O ports 733# Hardware I/O ports
@@ -688,16 +738,13 @@ CONFIG_INPUT_MISC=y
688# 738#
689# Character devices 739# Character devices
690# 740#
691# CONFIG_AD9960 is not set
692CONFIG_BFIN_DMA_INTERFACE=m 741CONFIG_BFIN_DMA_INTERFACE=m
693# CONFIG_BFIN_PPI is not set 742# CONFIG_BFIN_PPI is not set
694# CONFIG_BFIN_PPIFCD is not set 743# CONFIG_BFIN_PPIFCD is not set
695# CONFIG_BFIN_SIMPLE_TIMER is not set 744# CONFIG_BFIN_SIMPLE_TIMER is not set
696# CONFIG_BFIN_SPI_ADC is not set 745# CONFIG_BFIN_SPI_ADC is not set
697# CONFIG_BFIN_SPORT is not set 746# CONFIG_BFIN_SPORT is not set
698# CONFIG_BFIN_TIMER_LATENCY is not set
699# CONFIG_BFIN_TWI_LCD is not set 747# CONFIG_BFIN_TWI_LCD is not set
700CONFIG_SIMPLE_GPIO=m
701CONFIG_VT=y 748CONFIG_VT=y
702CONFIG_CONSOLE_TRANSLATIONS=y 749CONFIG_CONSOLE_TRANSLATIONS=y
703CONFIG_VT_CONSOLE=y 750CONFIG_VT_CONSOLE=y
@@ -715,6 +762,7 @@ CONFIG_BFIN_JTAG_COMM=m
715# 762#
716# Non-8250 serial port support 763# Non-8250 serial port support
717# 764#
765# CONFIG_SERIAL_MAX3100 is not set
718CONFIG_SERIAL_BFIN=y 766CONFIG_SERIAL_BFIN=y
719CONFIG_SERIAL_BFIN_CONSOLE=y 767CONFIG_SERIAL_BFIN_CONSOLE=y
720CONFIG_SERIAL_BFIN_DMA=y 768CONFIG_SERIAL_BFIN_DMA=y
@@ -726,12 +774,10 @@ CONFIG_SERIAL_CORE=y
726CONFIG_SERIAL_CORE_CONSOLE=y 774CONFIG_SERIAL_CORE_CONSOLE=y
727# CONFIG_SERIAL_BFIN_SPORT is not set 775# CONFIG_SERIAL_BFIN_SPORT is not set
728CONFIG_UNIX98_PTYS=y 776CONFIG_UNIX98_PTYS=y
777# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
729# CONFIG_LEGACY_PTYS is not set 778# CONFIG_LEGACY_PTYS is not set
730 779CONFIG_BFIN_OTP=y
731# 780# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
732# CAN, the car bus and industrial fieldbus
733#
734# CONFIG_CAN4LINUX is not set
735# CONFIG_IPMI_HANDLER is not set 781# CONFIG_IPMI_HANDLER is not set
736# CONFIG_HW_RANDOM is not set 782# CONFIG_HW_RANDOM is not set
737# CONFIG_R3964 is not set 783# CONFIG_R3964 is not set
@@ -739,6 +785,7 @@ CONFIG_UNIX98_PTYS=y
739# CONFIG_TCG_TPM is not set 785# CONFIG_TCG_TPM is not set
740CONFIG_I2C=y 786CONFIG_I2C=y
741CONFIG_I2C_BOARDINFO=y 787CONFIG_I2C_BOARDINFO=y
788CONFIG_I2C_COMPAT=y
742CONFIG_I2C_CHARDEV=y 789CONFIG_I2C_CHARDEV=y
743CONFIG_I2C_HELPER_AUTO=y 790CONFIG_I2C_HELPER_AUTO=y
744 791
@@ -771,14 +818,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
771# Miscellaneous I2C Chip support 818# Miscellaneous I2C Chip support
772# 819#
773# CONFIG_DS1682 is not set 820# CONFIG_DS1682 is not set
774# CONFIG_EEPROM_AT24 is not set
775# CONFIG_SENSORS_AD5252 is not set
776# CONFIG_EEPROM_LEGACY is not set
777# CONFIG_SENSORS_PCF8574 is not set
778# CONFIG_PCF8575 is not set
779# CONFIG_SENSORS_PCA9539 is not set
780# CONFIG_SENSORS_PCF8591 is not set
781# CONFIG_SENSORS_MAX6875 is not set
782# CONFIG_SENSORS_TSL2550 is not set 821# CONFIG_SENSORS_TSL2550 is not set
783# CONFIG_I2C_DEBUG_CORE is not set 822# CONFIG_I2C_DEBUG_CORE is not set
784# CONFIG_I2C_DEBUG_ALGO is not set 823# CONFIG_I2C_DEBUG_ALGO is not set
@@ -795,13 +834,18 @@ CONFIG_SPI_BFIN=y
795# CONFIG_SPI_BFIN_LOCK is not set 834# CONFIG_SPI_BFIN_LOCK is not set
796# CONFIG_SPI_BFIN_SPORT is not set 835# CONFIG_SPI_BFIN_SPORT is not set
797# CONFIG_SPI_BITBANG is not set 836# CONFIG_SPI_BITBANG is not set
837# CONFIG_SPI_GPIO is not set
798 838
799# 839#
800# SPI Protocol Masters 840# SPI Protocol Masters
801# 841#
802# CONFIG_SPI_AT25 is not set
803# CONFIG_SPI_SPIDEV is not set 842# CONFIG_SPI_SPIDEV is not set
804# CONFIG_SPI_TLE62X0 is not set 843# CONFIG_SPI_TLE62X0 is not set
844
845#
846# PPS support
847#
848# CONFIG_PPS is not set
805CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 849CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
806CONFIG_GPIOLIB=y 850CONFIG_GPIOLIB=y
807# CONFIG_DEBUG_GPIO is not set 851# CONFIG_DEBUG_GPIO is not set
@@ -817,6 +861,7 @@ CONFIG_GPIO_SYSFS=y
817# CONFIG_GPIO_MAX732X is not set 861# CONFIG_GPIO_MAX732X is not set
818# CONFIG_GPIO_PCA953X is not set 862# CONFIG_GPIO_PCA953X is not set
819# CONFIG_GPIO_PCF857X is not set 863# CONFIG_GPIO_PCF857X is not set
864# CONFIG_GPIO_ADP5588 is not set
820 865
821# 866#
822# PCI GPIO expanders: 867# PCI GPIO expanders:
@@ -827,11 +872,15 @@ CONFIG_GPIO_SYSFS=y
827# 872#
828# CONFIG_GPIO_MAX7301 is not set 873# CONFIG_GPIO_MAX7301 is not set
829# CONFIG_GPIO_MCP23S08 is not set 874# CONFIG_GPIO_MCP23S08 is not set
875# CONFIG_GPIO_MC33880 is not set
876
877#
878# AC97 GPIO expanders:
879#
830# CONFIG_W1 is not set 880# CONFIG_W1 is not set
831# CONFIG_POWER_SUPPLY is not set 881# CONFIG_POWER_SUPPLY is not set
832# CONFIG_HWMON is not set 882# CONFIG_HWMON is not set
833# CONFIG_THERMAL is not set 883# CONFIG_THERMAL is not set
834# CONFIG_THERMAL_HWMON is not set
835CONFIG_WATCHDOG=y 884CONFIG_WATCHDOG=y
836# CONFIG_WATCHDOG_NOWAYOUT is not set 885# CONFIG_WATCHDOG_NOWAYOUT is not set
837 886
@@ -853,28 +902,20 @@ CONFIG_SSB_POSSIBLE=y
853# CONFIG_MFD_CORE is not set 902# CONFIG_MFD_CORE is not set
854# CONFIG_MFD_SM501 is not set 903# CONFIG_MFD_SM501 is not set
855# CONFIG_HTC_PASIC3 is not set 904# CONFIG_HTC_PASIC3 is not set
905# CONFIG_TPS65010 is not set
906# CONFIG_TWL4030_CORE is not set
856# CONFIG_MFD_TMIO is not set 907# CONFIG_MFD_TMIO is not set
857# CONFIG_PMIC_DA903X is not set 908# CONFIG_PMIC_DA903X is not set
858# CONFIG_PMIC_ADP5520 is not set 909# CONFIG_PMIC_ADP5520 is not set
859# CONFIG_MFD_WM8400 is not set 910# CONFIG_MFD_WM8400 is not set
911# CONFIG_MFD_WM831X is not set
860# CONFIG_MFD_WM8350_I2C is not set 912# CONFIG_MFD_WM8350_I2C is not set
913# CONFIG_MFD_PCF50633 is not set
914# CONFIG_MFD_MC13783 is not set
915# CONFIG_AB3100_CORE is not set
916# CONFIG_EZX_PCAP is not set
861# CONFIG_REGULATOR is not set 917# CONFIG_REGULATOR is not set
862 918# CONFIG_MEDIA_SUPPORT is not set
863#
864# Multimedia devices
865#
866
867#
868# Multimedia core support
869#
870# CONFIG_VIDEO_DEV is not set
871# CONFIG_DVB_CORE is not set
872# CONFIG_VIDEO_MEDIA is not set
873
874#
875# Multimedia drivers
876#
877# CONFIG_DAB is not set
878 919
879# 920#
880# Graphics support 921# Graphics support
@@ -912,10 +953,11 @@ CONFIG_MMC_BLOCK_BOUNCE=y
912# MMC/SD/SDIO Host Controller Drivers 953# MMC/SD/SDIO Host Controller Drivers
913# 954#
914# CONFIG_MMC_SDHCI is not set 955# CONFIG_MMC_SDHCI is not set
956# CONFIG_MMC_AT91 is not set
957# CONFIG_MMC_ATMELMCI is not set
958# CONFIG_MMC_SPI is not set
915CONFIG_SDH_BFIN=m 959CONFIG_SDH_BFIN=m
916CONFIG_SDH_BFIN_MISSING_CMD_PULLUP_WORKAROUND=y 960CONFIG_SDH_BFIN_MISSING_CMD_PULLUP_WORKAROUND=y
917# CONFIG_SDH_BFIN_ENABLE_SDIO_IRQ is not set
918# CONFIG_MMC_SPI is not set
919# CONFIG_MEMSTICK is not set 961# CONFIG_MEMSTICK is not set
920# CONFIG_NEW_LEDS is not set 962# CONFIG_NEW_LEDS is not set
921# CONFIG_ACCESSIBILITY is not set 963# CONFIG_ACCESSIBILITY is not set
@@ -950,6 +992,7 @@ CONFIG_RTC_INTF_DEV=y
950# CONFIG_RTC_DRV_S35390A is not set 992# CONFIG_RTC_DRV_S35390A is not set
951# CONFIG_RTC_DRV_FM3130 is not set 993# CONFIG_RTC_DRV_FM3130 is not set
952# CONFIG_RTC_DRV_RX8581 is not set 994# CONFIG_RTC_DRV_RX8581 is not set
995# CONFIG_RTC_DRV_RX8025 is not set
953 996
954# 997#
955# SPI RTC drivers 998# SPI RTC drivers
@@ -961,6 +1004,7 @@ CONFIG_RTC_INTF_DEV=y
961# CONFIG_RTC_DRV_R9701 is not set 1004# CONFIG_RTC_DRV_R9701 is not set
962# CONFIG_RTC_DRV_RS5C348 is not set 1005# CONFIG_RTC_DRV_RS5C348 is not set
963# CONFIG_RTC_DRV_DS3234 is not set 1006# CONFIG_RTC_DRV_DS3234 is not set
1007# CONFIG_RTC_DRV_PCF2123 is not set
964 1008
965# 1009#
966# Platform RTC drivers 1010# Platform RTC drivers
@@ -981,10 +1025,21 @@ CONFIG_RTC_INTF_DEV=y
981# 1025#
982CONFIG_RTC_DRV_BFIN=y 1026CONFIG_RTC_DRV_BFIN=y
983# CONFIG_DMADEVICES is not set 1027# CONFIG_DMADEVICES is not set
1028# CONFIG_AUXDISPLAY is not set
984# CONFIG_UIO is not set 1029# CONFIG_UIO is not set
1030
1031#
1032# TI VLYNQ
1033#
985# CONFIG_STAGING is not set 1034# CONFIG_STAGING is not set
986 1035
987# 1036#
1037# Firmware Drivers
1038#
1039# CONFIG_FIRMWARE_MEMMAP is not set
1040# CONFIG_SIGMA is not set
1041
1042#
988# File systems 1043# File systems
989# 1044#
990CONFIG_EXT2_FS=m 1045CONFIG_EXT2_FS=m
@@ -994,9 +1049,13 @@ CONFIG_EXT2_FS=m
994# CONFIG_REISERFS_FS is not set 1049# CONFIG_REISERFS_FS is not set
995# CONFIG_JFS_FS is not set 1050# CONFIG_JFS_FS is not set
996# CONFIG_FS_POSIX_ACL is not set 1051# CONFIG_FS_POSIX_ACL is not set
997CONFIG_FILE_LOCKING=y
998# CONFIG_XFS_FS is not set 1052# CONFIG_XFS_FS is not set
1053# CONFIG_GFS2_FS is not set
999# CONFIG_OCFS2_FS is not set 1054# CONFIG_OCFS2_FS is not set
1055# CONFIG_BTRFS_FS is not set
1056# CONFIG_NILFS2_FS is not set
1057CONFIG_FILE_LOCKING=y
1058CONFIG_FSNOTIFY=y
1000# CONFIG_DNOTIFY is not set 1059# CONFIG_DNOTIFY is not set
1001CONFIG_INOTIFY=y 1060CONFIG_INOTIFY=y
1002CONFIG_INOTIFY_USER=y 1061CONFIG_INOTIFY_USER=y
@@ -1006,6 +1065,11 @@ CONFIG_INOTIFY_USER=y
1006# CONFIG_FUSE_FS is not set 1065# CONFIG_FUSE_FS is not set
1007 1066
1008# 1067#
1068# Caches
1069#
1070# CONFIG_FSCACHE is not set
1071
1072#
1009# CD-ROM/DVD Filesystems 1073# CD-ROM/DVD Filesystems
1010# 1074#
1011# CONFIG_ISO9660_FS is not set 1075# CONFIG_ISO9660_FS is not set
@@ -1027,13 +1091,9 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1027CONFIG_PROC_FS=y 1091CONFIG_PROC_FS=y
1028CONFIG_PROC_SYSCTL=y 1092CONFIG_PROC_SYSCTL=y
1029CONFIG_SYSFS=y 1093CONFIG_SYSFS=y
1030# CONFIG_TMPFS is not set
1031# CONFIG_HUGETLB_PAGE is not set 1094# CONFIG_HUGETLB_PAGE is not set
1032# CONFIG_CONFIGFS_FS is not set 1095# CONFIG_CONFIGFS_FS is not set
1033 1096CONFIG_MISC_FILESYSTEMS=y
1034#
1035# Miscellaneous filesystems
1036#
1037# CONFIG_ADFS_FS is not set 1097# CONFIG_ADFS_FS is not set
1038# CONFIG_AFFS_FS is not set 1098# CONFIG_AFFS_FS is not set
1039# CONFIG_HFS_FS is not set 1099# CONFIG_HFS_FS is not set
@@ -1042,8 +1102,8 @@ CONFIG_SYSFS=y
1042# CONFIG_BFS_FS is not set 1102# CONFIG_BFS_FS is not set
1043# CONFIG_EFS_FS is not set 1103# CONFIG_EFS_FS is not set
1044# CONFIG_JFFS2_FS is not set 1104# CONFIG_JFFS2_FS is not set
1045# CONFIG_YAFFS_FS is not set
1046# CONFIG_CRAMFS is not set 1105# CONFIG_CRAMFS is not set
1106# CONFIG_SQUASHFS is not set
1047# CONFIG_VXFS_FS is not set 1107# CONFIG_VXFS_FS is not set
1048# CONFIG_MINIX_FS is not set 1108# CONFIG_MINIX_FS is not set
1049# CONFIG_OMFS_FS is not set 1109# CONFIG_OMFS_FS is not set
@@ -1062,7 +1122,6 @@ CONFIG_LOCKD=m
1062CONFIG_LOCKD_V4=y 1122CONFIG_LOCKD_V4=y
1063CONFIG_NFS_COMMON=y 1123CONFIG_NFS_COMMON=y
1064CONFIG_SUNRPC=m 1124CONFIG_SUNRPC=m
1065# CONFIG_SUNRPC_REGISTER_V4 is not set
1066# CONFIG_RPCSEC_GSS_KRB5 is not set 1125# CONFIG_RPCSEC_GSS_KRB5 is not set
1067# CONFIG_RPCSEC_GSS_SPKM3 is not set 1126# CONFIG_RPCSEC_GSS_SPKM3 is not set
1068CONFIG_SMB_FS=m 1127CONFIG_SMB_FS=m
@@ -1127,14 +1186,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1127CONFIG_ENABLE_MUST_CHECK=y 1186CONFIG_ENABLE_MUST_CHECK=y
1128CONFIG_FRAME_WARN=1024 1187CONFIG_FRAME_WARN=1024
1129# CONFIG_MAGIC_SYSRQ is not set 1188# CONFIG_MAGIC_SYSRQ is not set
1189# CONFIG_STRIP_ASM_SYMS is not set
1130# CONFIG_UNUSED_SYMBOLS is not set 1190# CONFIG_UNUSED_SYMBOLS is not set
1131CONFIG_DEBUG_FS=y 1191CONFIG_DEBUG_FS=y
1132# CONFIG_HEADERS_CHECK is not set 1192# CONFIG_HEADERS_CHECK is not set
1193CONFIG_DEBUG_SECTION_MISMATCH=y
1133CONFIG_DEBUG_KERNEL=y 1194CONFIG_DEBUG_KERNEL=y
1134CONFIG_DEBUG_SHIRQ=y 1195CONFIG_DEBUG_SHIRQ=y
1135CONFIG_DETECT_SOFTLOCKUP=y 1196CONFIG_DETECT_SOFTLOCKUP=y
1136# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1197# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1137CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1198CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1199CONFIG_DETECT_HUNG_TASK=y
1200# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1201CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1138CONFIG_SCHED_DEBUG=y 1202CONFIG_SCHED_DEBUG=y
1139# CONFIG_SCHEDSTATS is not set 1203# CONFIG_SCHEDSTATS is not set
1140# CONFIG_TIMER_STATS is not set 1204# CONFIG_TIMER_STATS is not set
@@ -1142,31 +1206,39 @@ CONFIG_SCHED_DEBUG=y
1142# CONFIG_DEBUG_SLAB is not set 1206# CONFIG_DEBUG_SLAB is not set
1143# CONFIG_DEBUG_SPINLOCK is not set 1207# CONFIG_DEBUG_SPINLOCK is not set
1144# CONFIG_DEBUG_MUTEXES is not set 1208# CONFIG_DEBUG_MUTEXES is not set
1209# CONFIG_DEBUG_LOCK_ALLOC is not set
1210# CONFIG_PROVE_LOCKING is not set
1211# CONFIG_LOCK_STAT is not set
1145# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1212# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1146# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1213# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1147# CONFIG_DEBUG_KOBJECT is not set 1214# CONFIG_DEBUG_KOBJECT is not set
1148CONFIG_DEBUG_BUGVERBOSE=y 1215CONFIG_DEBUG_BUGVERBOSE=y
1149CONFIG_DEBUG_INFO=y 1216CONFIG_DEBUG_INFO=y
1150# CONFIG_DEBUG_VM is not set 1217# CONFIG_DEBUG_VM is not set
1218# CONFIG_DEBUG_NOMMU_REGIONS is not set
1151# CONFIG_DEBUG_WRITECOUNT is not set 1219# CONFIG_DEBUG_WRITECOUNT is not set
1152# CONFIG_DEBUG_MEMORY_INIT is not set 1220# CONFIG_DEBUG_MEMORY_INIT is not set
1153# CONFIG_DEBUG_LIST is not set 1221# CONFIG_DEBUG_LIST is not set
1154# CONFIG_DEBUG_SG is not set 1222# CONFIG_DEBUG_SG is not set
1223# CONFIG_DEBUG_NOTIFIERS is not set
1224# CONFIG_DEBUG_CREDENTIALS is not set
1155# CONFIG_FRAME_POINTER is not set 1225# CONFIG_FRAME_POINTER is not set
1156# CONFIG_BOOT_PRINTK_DELAY is not set 1226# CONFIG_BOOT_PRINTK_DELAY is not set
1157# CONFIG_RCU_TORTURE_TEST is not set 1227# CONFIG_RCU_TORTURE_TEST is not set
1158# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1228# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1159# CONFIG_BACKTRACE_SELF_TEST is not set 1229# CONFIG_BACKTRACE_SELF_TEST is not set
1160# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1230# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1231# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1161# CONFIG_FAULT_INJECTION is not set 1232# CONFIG_FAULT_INJECTION is not set
1162 1233# CONFIG_PAGE_POISONING is not set
1163# 1234CONFIG_HAVE_FUNCTION_TRACER=y
1164# Tracers 1235CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1165# 1236CONFIG_TRACING_SUPPORT=y
1166# CONFIG_SCHED_TRACER is not set 1237# CONFIG_FTRACE is not set
1167# CONFIG_CONTEXT_SWITCH_TRACER is not set 1238# CONFIG_BRANCH_PROFILE_NONE is not set
1168# CONFIG_BOOT_TRACER is not set 1239# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1169# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1240# CONFIG_PROFILE_ALL_BRANCHES is not set
1241# CONFIG_DYNAMIC_DEBUG is not set
1170# CONFIG_SAMPLES is not set 1242# CONFIG_SAMPLES is not set
1171CONFIG_HAVE_ARCH_KGDB=y 1243CONFIG_HAVE_ARCH_KGDB=y
1172# CONFIG_KGDB is not set 1244# CONFIG_KGDB is not set
@@ -1191,6 +1263,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1191CONFIG_EARLY_PRINTK=y 1263CONFIG_EARLY_PRINTK=y
1192CONFIG_CPLB_INFO=y 1264CONFIG_CPLB_INFO=y
1193CONFIG_ACCESS_CHECK=y 1265CONFIG_ACCESS_CHECK=y
1266# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1194 1267
1195# 1268#
1196# Security options 1269# Security options
@@ -1199,14 +1272,14 @@ CONFIG_ACCESS_CHECK=y
1199CONFIG_SECURITY=y 1272CONFIG_SECURITY=y
1200# CONFIG_SECURITYFS is not set 1273# CONFIG_SECURITYFS is not set
1201# CONFIG_SECURITY_NETWORK is not set 1274# CONFIG_SECURITY_NETWORK is not set
1275# CONFIG_SECURITY_PATH is not set
1202# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1276# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1203CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1277# CONFIG_SECURITY_TOMOYO is not set
1204CONFIG_CRYPTO=y 1278CONFIG_CRYPTO=y
1205 1279
1206# 1280#
1207# Crypto core or helper 1281# Crypto core or helper
1208# 1282#
1209# CONFIG_CRYPTO_FIPS is not set
1210# CONFIG_CRYPTO_MANAGER is not set 1283# CONFIG_CRYPTO_MANAGER is not set
1211# CONFIG_CRYPTO_MANAGER2 is not set 1284# CONFIG_CRYPTO_MANAGER2 is not set
1212# CONFIG_CRYPTO_GF128MUL is not set 1285# CONFIG_CRYPTO_GF128MUL is not set
@@ -1238,11 +1311,13 @@ CONFIG_CRYPTO=y
1238# 1311#
1239# CONFIG_CRYPTO_HMAC is not set 1312# CONFIG_CRYPTO_HMAC is not set
1240# CONFIG_CRYPTO_XCBC is not set 1313# CONFIG_CRYPTO_XCBC is not set
1314# CONFIG_CRYPTO_VMAC is not set
1241 1315
1242# 1316#
1243# Digest 1317# Digest
1244# 1318#
1245# CONFIG_CRYPTO_CRC32C is not set 1319# CONFIG_CRYPTO_CRC32C is not set
1320# CONFIG_CRYPTO_GHASH is not set
1246# CONFIG_CRYPTO_MD4 is not set 1321# CONFIG_CRYPTO_MD4 is not set
1247# CONFIG_CRYPTO_MD5 is not set 1322# CONFIG_CRYPTO_MD5 is not set
1248# CONFIG_CRYPTO_MICHAEL_MIC is not set 1323# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1279,6 +1354,7 @@ CONFIG_CRYPTO=y
1279# Compression 1354# Compression
1280# 1355#
1281# CONFIG_CRYPTO_DEFLATE is not set 1356# CONFIG_CRYPTO_DEFLATE is not set
1357# CONFIG_CRYPTO_ZLIB is not set
1282# CONFIG_CRYPTO_LZO is not set 1358# CONFIG_CRYPTO_LZO is not set
1283 1359
1284# 1360#
@@ -1286,11 +1362,13 @@ CONFIG_CRYPTO=y
1286# 1362#
1287# CONFIG_CRYPTO_ANSI_CPRNG is not set 1363# CONFIG_CRYPTO_ANSI_CPRNG is not set
1288CONFIG_CRYPTO_HW=y 1364CONFIG_CRYPTO_HW=y
1365# CONFIG_BINARY_PRINTF is not set
1289 1366
1290# 1367#
1291# Library routines 1368# Library routines
1292# 1369#
1293CONFIG_BITREVERSE=y 1370CONFIG_BITREVERSE=y
1371CONFIG_GENERIC_FIND_LAST_BIT=y
1294CONFIG_CRC_CCITT=m 1372CONFIG_CRC_CCITT=m
1295# CONFIG_CRC16 is not set 1373# CONFIG_CRC16 is not set
1296# CONFIG_CRC_T10DIF is not set 1374# CONFIG_CRC_T10DIF is not set
@@ -1299,6 +1377,8 @@ CONFIG_CRC32=y
1299# CONFIG_CRC7 is not set 1377# CONFIG_CRC7 is not set
1300# CONFIG_LIBCRC32C is not set 1378# CONFIG_LIBCRC32C is not set
1301CONFIG_ZLIB_INFLATE=y 1379CONFIG_ZLIB_INFLATE=y
1380CONFIG_DECOMPRESS_GZIP=y
1302CONFIG_HAS_IOMEM=y 1381CONFIG_HAS_IOMEM=y
1303CONFIG_HAS_IOPORT=y 1382CONFIG_HAS_IOPORT=y
1304CONFIG_HAS_DMA=y 1383CONFIG_HAS_DMA=y
1384CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF526-EZBRD_defconfig b/arch/blackfin/configs/BF526-EZBRD_defconfig
index 075e0fdcb399..31c2a6db6ec5 100644
--- a/arch/blackfin/configs/BF526-EZBRD_defconfig
+++ b/arch/blackfin/configs/BF526-EZBRD_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_IOSCHED_NOOP=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102CONFIG_DEFAULT_NOOP=y 131CONFIG_DEFAULT_NOOP=y
103CONFIG_DEFAULT_IOSCHED="noop" 132CONFIG_DEFAULT_IOSCHED="noop"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_BF526=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=0 174CONFIG_BF_REV_MIN=0
@@ -154,8 +182,7 @@ CONFIG_BF_REV_0_0=y
154# CONFIG_BF_REV_0_6 is not set 182# CONFIG_BF_REV_0_6 is not set
155# CONFIG_BF_REV_ANY is not set 183# CONFIG_BF_REV_ANY is not set
156# CONFIG_BF_REV_NONE is not set 184# CONFIG_BF_REV_NONE is not set
157CONFIG_BF52x=y 185CONFIG_MEM_MT48H32M16LFCJ_75=y
158CONFIG_MEM_MT48LC32M16A2TG_75=y
159CONFIG_IRQ_PLL_WAKEUP=7 186CONFIG_IRQ_PLL_WAKEUP=7
160CONFIG_IRQ_DMA0_ERROR=7 187CONFIG_IRQ_DMA0_ERROR=7
161CONFIG_IRQ_DMAR0_BLK=7 188CONFIG_IRQ_DMAR0_BLK=7
@@ -200,7 +227,9 @@ CONFIG_IRQ_MEM_DMA1=13
200CONFIG_IRQ_WATCH=13 227CONFIG_IRQ_WATCH=13
201CONFIG_IRQ_PORTF_INTA=13 228CONFIG_IRQ_PORTF_INTA=13
202CONFIG_IRQ_PORTF_INTB=13 229CONFIG_IRQ_PORTF_INTB=13
230CONFIG_BF52x=y
203# CONFIG_BFIN527_EZKIT is not set 231# CONFIG_BFIN527_EZKIT is not set
232# CONFIG_BFIN527_EZKIT_V2 is not set
204# CONFIG_BFIN527_BLUETECHNIX_CM is not set 233# CONFIG_BFIN527_BLUETECHNIX_CM is not set
205CONFIG_BFIN526_EZBRD=y 234CONFIG_BFIN526_EZBRD=y
206 235
@@ -318,7 +347,6 @@ CONFIG_FLATMEM=y
318CONFIG_FLAT_NODE_MEM_MAP=y 347CONFIG_FLAT_NODE_MEM_MAP=y
319CONFIG_PAGEFLAGS_EXTENDED=y 348CONFIG_PAGEFLAGS_EXTENDED=y
320CONFIG_SPLIT_PTLOCK_CPUS=4 349CONFIG_SPLIT_PTLOCK_CPUS=4
321# CONFIG_RESOURCES_64BIT is not set
322# CONFIG_PHYS_ADDR_T_64BIT is not set 350# CONFIG_PHYS_ADDR_T_64BIT is not set
323CONFIG_ZONE_DMA_FLAG=1 351CONFIG_ZONE_DMA_FLAG=1
324CONFIG_VIRT_TO_BUS=y 352CONFIG_VIRT_TO_BUS=y
@@ -327,16 +355,18 @@ CONFIG_BFIN_GPTIMERS=m
327# CONFIG_DMA_UNCACHED_4M is not set 355# CONFIG_DMA_UNCACHED_4M is not set
328# CONFIG_DMA_UNCACHED_2M is not set 356# CONFIG_DMA_UNCACHED_2M is not set
329CONFIG_DMA_UNCACHED_1M=y 357CONFIG_DMA_UNCACHED_1M=y
358# CONFIG_DMA_UNCACHED_512K is not set
359# CONFIG_DMA_UNCACHED_256K is not set
360# CONFIG_DMA_UNCACHED_128K is not set
330# CONFIG_DMA_UNCACHED_NONE is not set 361# CONFIG_DMA_UNCACHED_NONE is not set
331 362
332# 363#
333# Cache Support 364# Cache Support
334# 365#
335CONFIG_BFIN_ICACHE=y 366CONFIG_BFIN_ICACHE=y
336# CONFIG_BFIN_ICACHE_LOCK is not set 367CONFIG_BFIN_EXTMEM_ICACHEABLE=y
337CONFIG_BFIN_DCACHE=y 368CONFIG_BFIN_DCACHE=y
338# CONFIG_BFIN_DCACHE_BANKA is not set 369# CONFIG_BFIN_DCACHE_BANKA is not set
339CONFIG_BFIN_EXTMEM_ICACHEABLE=y
340CONFIG_BFIN_EXTMEM_DCACHEABLE=y 370CONFIG_BFIN_EXTMEM_DCACHEABLE=y
341CONFIG_BFIN_EXTMEM_WRITEBACK=y 371CONFIG_BFIN_EXTMEM_WRITEBACK=y
342# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 372# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -347,6 +377,10 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
347# CONFIG_MPU is not set 377# CONFIG_MPU is not set
348 378
349# 379#
380# Asynchronous Memory Configuration
381#
382
383#
350# EBIU_AMGCTL Global Control 384# EBIU_AMGCTL Global Control
351# 385#
352CONFIG_C_AMCKEN=y 386CONFIG_C_AMCKEN=y
@@ -399,11 +433,6 @@ CONFIG_NET=y
399CONFIG_PACKET=y 433CONFIG_PACKET=y
400# CONFIG_PACKET_MMAP is not set 434# CONFIG_PACKET_MMAP is not set
401CONFIG_UNIX=y 435CONFIG_UNIX=y
402CONFIG_XFRM=y
403# CONFIG_XFRM_USER is not set
404# CONFIG_XFRM_SUB_POLICY is not set
405# CONFIG_XFRM_MIGRATE is not set
406# CONFIG_XFRM_STATISTICS is not set
407# CONFIG_NET_KEY is not set 436# CONFIG_NET_KEY is not set
408CONFIG_INET=y 437CONFIG_INET=y
409# CONFIG_IP_MULTICAST is not set 438# CONFIG_IP_MULTICAST is not set
@@ -427,7 +456,6 @@ CONFIG_IP_PNP=y
427# CONFIG_INET_XFRM_MODE_BEET is not set 456# CONFIG_INET_XFRM_MODE_BEET is not set
428# CONFIG_INET_LRO is not set 457# CONFIG_INET_LRO is not set
429# CONFIG_INET_DIAG is not set 458# CONFIG_INET_DIAG is not set
430CONFIG_INET_TCP_DIAG=y
431# CONFIG_TCP_CONG_ADVANCED is not set 459# CONFIG_TCP_CONG_ADVANCED is not set
432CONFIG_TCP_CONG_CUBIC=y 460CONFIG_TCP_CONG_CUBIC=y
433CONFIG_DEFAULT_TCP_CONG="cubic" 461CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -438,6 +466,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
438# CONFIG_NETFILTER is not set 466# CONFIG_NETFILTER is not set
439# CONFIG_IP_DCCP is not set 467# CONFIG_IP_DCCP is not set
440# CONFIG_IP_SCTP is not set 468# CONFIG_IP_SCTP is not set
469# CONFIG_RDS is not set
441# CONFIG_TIPC is not set 470# CONFIG_TIPC is not set
442# CONFIG_ATM is not set 471# CONFIG_ATM is not set
443# CONFIG_BRIDGE is not set 472# CONFIG_BRIDGE is not set
@@ -451,7 +480,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
451# CONFIG_LAPB is not set 480# CONFIG_LAPB is not set
452# CONFIG_ECONET is not set 481# CONFIG_ECONET is not set
453# CONFIG_WAN_ROUTER is not set 482# CONFIG_WAN_ROUTER is not set
483# CONFIG_PHONET is not set
484# CONFIG_IEEE802154 is not set
454# CONFIG_NET_SCHED is not set 485# CONFIG_NET_SCHED is not set
486# CONFIG_DCB is not set
455 487
456# 488#
457# Network testing 489# Network testing
@@ -462,13 +494,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
462# CONFIG_IRDA is not set 494# CONFIG_IRDA is not set
463# CONFIG_BT is not set 495# CONFIG_BT is not set
464# CONFIG_AF_RXRPC is not set 496# CONFIG_AF_RXRPC is not set
465# CONFIG_PHONET is not set 497# CONFIG_WIRELESS is not set
466CONFIG_WIRELESS=y 498# CONFIG_WIMAX is not set
467# CONFIG_CFG80211 is not set
468CONFIG_WIRELESS_OLD_REGULATORY=y
469# CONFIG_WIRELESS_EXT is not set
470# CONFIG_MAC80211 is not set
471# CONFIG_IEEE80211 is not set
472# CONFIG_RFKILL is not set 499# CONFIG_RFKILL is not set
473# CONFIG_NET_9P is not set 500# CONFIG_NET_9P is not set
474 501
@@ -489,6 +516,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
489# CONFIG_CONNECTOR is not set 516# CONFIG_CONNECTOR is not set
490CONFIG_MTD=y 517CONFIG_MTD=y
491# CONFIG_MTD_DEBUG is not set 518# CONFIG_MTD_DEBUG is not set
519# CONFIG_MTD_TESTS is not set
492# CONFIG_MTD_CONCAT is not set 520# CONFIG_MTD_CONCAT is not set
493CONFIG_MTD_PARTITIONS=y 521CONFIG_MTD_PARTITIONS=y
494# CONFIG_MTD_REDBOOT_PARTS is not set 522# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -549,6 +577,7 @@ CONFIG_MTD_PHYSMAP=y
549# CONFIG_MTD_DATAFLASH is not set 577# CONFIG_MTD_DATAFLASH is not set
550CONFIG_MTD_M25P80=y 578CONFIG_MTD_M25P80=y
551CONFIG_M25PXX_USE_FAST_READ=y 579CONFIG_M25PXX_USE_FAST_READ=y
580# CONFIG_MTD_SST25L is not set
552# CONFIG_MTD_SLRAM is not set 581# CONFIG_MTD_SLRAM is not set
553# CONFIG_MTD_PHRAM is not set 582# CONFIG_MTD_PHRAM is not set
554# CONFIG_MTD_MTDRAM is not set 583# CONFIG_MTD_MTDRAM is not set
@@ -564,11 +593,6 @@ CONFIG_MTD_NAND=m
564# CONFIG_MTD_NAND_VERIFY_WRITE is not set 593# CONFIG_MTD_NAND_VERIFY_WRITE is not set
565# CONFIG_MTD_NAND_ECC_SMC is not set 594# CONFIG_MTD_NAND_ECC_SMC is not set
566# CONFIG_MTD_NAND_MUSEUM_IDS is not set 595# CONFIG_MTD_NAND_MUSEUM_IDS is not set
567CONFIG_MTD_NAND_BFIN=m
568CONFIG_BFIN_NAND_BASE=0x20212000
569CONFIG_BFIN_NAND_CLE=2
570CONFIG_BFIN_NAND_ALE=1
571CONFIG_BFIN_NAND_READY=3
572CONFIG_MTD_NAND_IDS=m 596CONFIG_MTD_NAND_IDS=m
573# CONFIG_MTD_NAND_BF5XX is not set 597# CONFIG_MTD_NAND_BF5XX is not set
574# CONFIG_MTD_NAND_DISKONCHIP is not set 598# CONFIG_MTD_NAND_DISKONCHIP is not set
@@ -578,6 +602,11 @@ CONFIG_MTD_NAND_IDS=m
578# CONFIG_MTD_ONENAND is not set 602# CONFIG_MTD_ONENAND is not set
579 603
580# 604#
605# LPDDR flash memory drivers
606#
607# CONFIG_MTD_LPDDR is not set
608
609#
581# UBI - Unsorted block images 610# UBI - Unsorted block images
582# 611#
583# CONFIG_MTD_UBI is not set 612# CONFIG_MTD_UBI is not set
@@ -595,10 +624,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
595# CONFIG_ATA_OVER_ETH is not set 624# CONFIG_ATA_OVER_ETH is not set
596# CONFIG_BLK_DEV_HD is not set 625# CONFIG_BLK_DEV_HD is not set
597CONFIG_MISC_DEVICES=y 626CONFIG_MISC_DEVICES=y
598# CONFIG_EEPROM_93CX6 is not set 627# CONFIG_AD525X_DPOT is not set
599# CONFIG_ICS932S401 is not set 628# CONFIG_ICS932S401 is not set
600# CONFIG_ENCLOSURE_SERVICES is not set 629# CONFIG_ENCLOSURE_SERVICES is not set
630# CONFIG_ISL29003 is not set
601# CONFIG_C2PORT is not set 631# CONFIG_C2PORT is not set
632
633#
634# EEPROM support
635#
636# CONFIG_EEPROM_AT24 is not set
637# CONFIG_EEPROM_AT25 is not set
638# CONFIG_EEPROM_LEGACY is not set
639# CONFIG_EEPROM_MAX6875 is not set
640# CONFIG_EEPROM_93CX6 is not set
602CONFIG_HAVE_IDE=y 641CONFIG_HAVE_IDE=y
603# CONFIG_IDE is not set 642# CONFIG_IDE is not set
604 643
@@ -622,10 +661,6 @@ CONFIG_BLK_DEV_SR=m
622# CONFIG_BLK_DEV_SR_VENDOR is not set 661# CONFIG_BLK_DEV_SR_VENDOR is not set
623# CONFIG_CHR_DEV_SG is not set 662# CONFIG_CHR_DEV_SG is not set
624# CONFIG_CHR_DEV_SCH is not set 663# CONFIG_CHR_DEV_SCH is not set
625
626#
627# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
628#
629# CONFIG_SCSI_MULTI_LUN is not set 664# CONFIG_SCSI_MULTI_LUN is not set
630# CONFIG_SCSI_CONSTANTS is not set 665# CONFIG_SCSI_CONSTANTS is not set
631# CONFIG_SCSI_LOGGING is not set 666# CONFIG_SCSI_LOGGING is not set
@@ -642,6 +677,7 @@ CONFIG_SCSI_WAIT_SCAN=m
642# CONFIG_SCSI_SRP_ATTRS is not set 677# CONFIG_SCSI_SRP_ATTRS is not set
643# CONFIG_SCSI_LOWLEVEL is not set 678# CONFIG_SCSI_LOWLEVEL is not set
644# CONFIG_SCSI_DH is not set 679# CONFIG_SCSI_DH is not set
680# CONFIG_SCSI_OSD_INITIATOR is not set
645# CONFIG_ATA is not set 681# CONFIG_ATA is not set
646# CONFIG_MD is not set 682# CONFIG_MD is not set
647CONFIG_NETDEVICES=y 683CONFIG_NETDEVICES=y
@@ -666,6 +702,9 @@ CONFIG_PHYLIB=y
666# CONFIG_BROADCOM_PHY is not set 702# CONFIG_BROADCOM_PHY is not set
667# CONFIG_ICPLUS_PHY is not set 703# CONFIG_ICPLUS_PHY is not set
668# CONFIG_REALTEK_PHY is not set 704# CONFIG_REALTEK_PHY is not set
705# CONFIG_NATIONAL_PHY is not set
706# CONFIG_STE10XP is not set
707# CONFIG_LSI_ET1011C_PHY is not set
669# CONFIG_FIXED_PHY is not set 708# CONFIG_FIXED_PHY is not set
670# CONFIG_MDIO_BITBANG is not set 709# CONFIG_MDIO_BITBANG is not set
671CONFIG_NET_ETHERNET=y 710CONFIG_NET_ETHERNET=y
@@ -675,9 +714,12 @@ CONFIG_BFIN_TX_DESC_NUM=10
675CONFIG_BFIN_RX_DESC_NUM=20 714CONFIG_BFIN_RX_DESC_NUM=20
676CONFIG_BFIN_MAC_RMII=y 715CONFIG_BFIN_MAC_RMII=y
677# CONFIG_SMC91X is not set 716# CONFIG_SMC91X is not set
678# CONFIG_SMSC911X is not set
679# CONFIG_DM9000 is not set 717# CONFIG_DM9000 is not set
680# CONFIG_ENC28J60 is not set 718# CONFIG_ENC28J60 is not set
719# CONFIG_ETHOC is not set
720# CONFIG_SMSC911X is not set
721# CONFIG_DNET is not set
722# CONFIG_ADF702X is not set
681# CONFIG_IBM_NEW_EMAC_ZMII is not set 723# CONFIG_IBM_NEW_EMAC_ZMII is not set
682# CONFIG_IBM_NEW_EMAC_RGMII is not set 724# CONFIG_IBM_NEW_EMAC_RGMII is not set
683# CONFIG_IBM_NEW_EMAC_TAH is not set 725# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -686,15 +728,16 @@ CONFIG_BFIN_MAC_RMII=y
686# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 728# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
687# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 729# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
688# CONFIG_B44 is not set 730# CONFIG_B44 is not set
731# CONFIG_KS8842 is not set
732# CONFIG_KS8851 is not set
733# CONFIG_KS8851_MLL is not set
689# CONFIG_NETDEV_1000 is not set 734# CONFIG_NETDEV_1000 is not set
690# CONFIG_NETDEV_10000 is not set 735# CONFIG_NETDEV_10000 is not set
736# CONFIG_WLAN is not set
691 737
692# 738#
693# Wireless LAN 739# Enable WiMAX (Networking options) to see the WiMAX drivers
694# 740#
695# CONFIG_WLAN_PRE80211 is not set
696# CONFIG_WLAN_80211 is not set
697# CONFIG_IWLWIFI_LEDS is not set
698 741
699# 742#
700# USB Network Adapters 743# USB Network Adapters
@@ -744,7 +787,11 @@ CONFIG_INPUT_MISC=y
744# CONFIG_INPUT_YEALINK is not set 787# CONFIG_INPUT_YEALINK is not set
745# CONFIG_INPUT_CM109 is not set 788# CONFIG_INPUT_CM109 is not set
746# CONFIG_INPUT_UINPUT is not set 789# CONFIG_INPUT_UINPUT is not set
747# CONFIG_CONFIG_INPUT_PCF8574 is not set 790# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
791# CONFIG_INPUT_BFIN_ROTARY is not set
792# CONFIG_INPUT_AD714X is not set
793# CONFIG_INPUT_ADXL34X is not set
794# CONFIG_INPUT_PCF8574 is not set
748 795
749# 796#
750# Hardware I/O ports 797# Hardware I/O ports
@@ -755,16 +802,13 @@ CONFIG_INPUT_MISC=y
755# 802#
756# Character devices 803# Character devices
757# 804#
758# CONFIG_AD9960 is not set
759CONFIG_BFIN_DMA_INTERFACE=m 805CONFIG_BFIN_DMA_INTERFACE=m
760# CONFIG_BFIN_PPI is not set 806# CONFIG_BFIN_PPI is not set
761# CONFIG_BFIN_PPIFCD is not set 807# CONFIG_BFIN_PPIFCD is not set
762# CONFIG_BFIN_SIMPLE_TIMER is not set 808# CONFIG_BFIN_SIMPLE_TIMER is not set
763# CONFIG_BFIN_SPI_ADC is not set 809# CONFIG_BFIN_SPI_ADC is not set
764# CONFIG_BFIN_SPORT is not set 810# CONFIG_BFIN_SPORT is not set
765# CONFIG_BFIN_TIMER_LATENCY is not set
766# CONFIG_BFIN_TWI_LCD is not set 811# CONFIG_BFIN_TWI_LCD is not set
767CONFIG_SIMPLE_GPIO=m
768CONFIG_VT=y 812CONFIG_VT=y
769CONFIG_CONSOLE_TRANSLATIONS=y 813CONFIG_CONSOLE_TRANSLATIONS=y
770CONFIG_VT_CONSOLE=y 814CONFIG_VT_CONSOLE=y
@@ -782,6 +826,7 @@ CONFIG_BFIN_JTAG_COMM=m
782# 826#
783# Non-8250 serial port support 827# Non-8250 serial port support
784# 828#
829# CONFIG_SERIAL_MAX3100 is not set
785CONFIG_SERIAL_BFIN=y 830CONFIG_SERIAL_BFIN=y
786CONFIG_SERIAL_BFIN_CONSOLE=y 831CONFIG_SERIAL_BFIN_CONSOLE=y
787CONFIG_SERIAL_BFIN_DMA=y 832CONFIG_SERIAL_BFIN_DMA=y
@@ -793,14 +838,10 @@ CONFIG_SERIAL_CORE=y
793CONFIG_SERIAL_CORE_CONSOLE=y 838CONFIG_SERIAL_CORE_CONSOLE=y
794# CONFIG_SERIAL_BFIN_SPORT is not set 839# CONFIG_SERIAL_BFIN_SPORT is not set
795CONFIG_UNIX98_PTYS=y 840CONFIG_UNIX98_PTYS=y
841# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
796# CONFIG_LEGACY_PTYS is not set 842# CONFIG_LEGACY_PTYS is not set
797CONFIG_BFIN_OTP=y 843CONFIG_BFIN_OTP=y
798# CONFIG_BFIN_OTP_WRITE_ENABLE is not set 844# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
799
800#
801# CAN, the car bus and industrial fieldbus
802#
803# CONFIG_CAN4LINUX is not set
804# CONFIG_IPMI_HANDLER is not set 845# CONFIG_IPMI_HANDLER is not set
805# CONFIG_HW_RANDOM is not set 846# CONFIG_HW_RANDOM is not set
806# CONFIG_R3964 is not set 847# CONFIG_R3964 is not set
@@ -808,6 +849,7 @@ CONFIG_BFIN_OTP=y
808# CONFIG_TCG_TPM is not set 849# CONFIG_TCG_TPM is not set
809CONFIG_I2C=y 850CONFIG_I2C=y
810CONFIG_I2C_BOARDINFO=y 851CONFIG_I2C_BOARDINFO=y
852CONFIG_I2C_COMPAT=y
811CONFIG_I2C_CHARDEV=m 853CONFIG_I2C_CHARDEV=m
812CONFIG_I2C_HELPER_AUTO=y 854CONFIG_I2C_HELPER_AUTO=y
813 855
@@ -841,14 +883,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
841# Miscellaneous I2C Chip support 883# Miscellaneous I2C Chip support
842# 884#
843# CONFIG_DS1682 is not set 885# CONFIG_DS1682 is not set
844# CONFIG_EEPROM_AT24 is not set
845# CONFIG_SENSORS_AD5252 is not set
846# CONFIG_EEPROM_LEGACY is not set
847# CONFIG_SENSORS_PCF8574 is not set
848# CONFIG_PCF8575 is not set
849# CONFIG_SENSORS_PCA9539 is not set
850# CONFIG_SENSORS_PCF8591 is not set
851# CONFIG_SENSORS_MAX6875 is not set
852# CONFIG_SENSORS_TSL2550 is not set 886# CONFIG_SENSORS_TSL2550 is not set
853# CONFIG_I2C_DEBUG_CORE is not set 887# CONFIG_I2C_DEBUG_CORE is not set
854# CONFIG_I2C_DEBUG_ALGO is not set 888# CONFIG_I2C_DEBUG_ALGO is not set
@@ -865,13 +899,18 @@ CONFIG_SPI_BFIN=y
865# CONFIG_SPI_BFIN_LOCK is not set 899# CONFIG_SPI_BFIN_LOCK is not set
866# CONFIG_SPI_BFIN_SPORT is not set 900# CONFIG_SPI_BFIN_SPORT is not set
867# CONFIG_SPI_BITBANG is not set 901# CONFIG_SPI_BITBANG is not set
902# CONFIG_SPI_GPIO is not set
868 903
869# 904#
870# SPI Protocol Masters 905# SPI Protocol Masters
871# 906#
872# CONFIG_EEPROM_AT25 is not set
873# CONFIG_SPI_SPIDEV is not set 907# CONFIG_SPI_SPIDEV is not set
874# CONFIG_SPI_TLE62X0 is not set 908# CONFIG_SPI_TLE62X0 is not set
909
910#
911# PPS support
912#
913# CONFIG_PPS is not set
875CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 914CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
876CONFIG_GPIOLIB=y 915CONFIG_GPIOLIB=y
877# CONFIG_DEBUG_GPIO is not set 916# CONFIG_DEBUG_GPIO is not set
@@ -887,6 +926,7 @@ CONFIG_GPIO_SYSFS=y
887# CONFIG_GPIO_MAX732X is not set 926# CONFIG_GPIO_MAX732X is not set
888# CONFIG_GPIO_PCA953X is not set 927# CONFIG_GPIO_PCA953X is not set
889# CONFIG_GPIO_PCF857X is not set 928# CONFIG_GPIO_PCF857X is not set
929# CONFIG_GPIO_ADP5588 is not set
890 930
891# 931#
892# PCI GPIO expanders: 932# PCI GPIO expanders:
@@ -897,11 +937,20 @@ CONFIG_GPIO_SYSFS=y
897# 937#
898# CONFIG_GPIO_MAX7301 is not set 938# CONFIG_GPIO_MAX7301 is not set
899# CONFIG_GPIO_MCP23S08 is not set 939# CONFIG_GPIO_MCP23S08 is not set
940# CONFIG_GPIO_MC33880 is not set
941
942#
943# AC97 GPIO expanders:
944#
900# CONFIG_W1 is not set 945# CONFIG_W1 is not set
901# CONFIG_POWER_SUPPLY is not set 946# CONFIG_POWER_SUPPLY is not set
902CONFIG_HWMON=y 947CONFIG_HWMON=y
903# CONFIG_HWMON_VID is not set 948# CONFIG_HWMON_VID is not set
904# CONFIG_SENSORS_AD5252 is not set 949# CONFIG_HWMON_DEBUG_CHIP is not set
950
951#
952# Native drivers
953#
905# CONFIG_SENSORS_AD7414 is not set 954# CONFIG_SENSORS_AD7414 is not set
906# CONFIG_SENSORS_AD7418 is not set 955# CONFIG_SENSORS_AD7418 is not set
907# CONFIG_SENSORS_ADCXX is not set 956# CONFIG_SENSORS_ADCXX is not set
@@ -914,11 +963,13 @@ CONFIG_HWMON=y
914# CONFIG_SENSORS_ADT7462 is not set 963# CONFIG_SENSORS_ADT7462 is not set
915# CONFIG_SENSORS_ADT7470 is not set 964# CONFIG_SENSORS_ADT7470 is not set
916# CONFIG_SENSORS_ADT7473 is not set 965# CONFIG_SENSORS_ADT7473 is not set
966# CONFIG_SENSORS_ADT7475 is not set
917# CONFIG_SENSORS_ATXP1 is not set 967# CONFIG_SENSORS_ATXP1 is not set
918# CONFIG_SENSORS_DS1621 is not set 968# CONFIG_SENSORS_DS1621 is not set
919# CONFIG_SENSORS_F71805F is not set 969# CONFIG_SENSORS_F71805F is not set
920# CONFIG_SENSORS_F71882FG is not set 970# CONFIG_SENSORS_F71882FG is not set
921# CONFIG_SENSORS_F75375S is not set 971# CONFIG_SENSORS_F75375S is not set
972# CONFIG_SENSORS_G760A is not set
922# CONFIG_SENSORS_GL518SM is not set 973# CONFIG_SENSORS_GL518SM is not set
923# CONFIG_SENSORS_GL520SM is not set 974# CONFIG_SENSORS_GL520SM is not set
924# CONFIG_SENSORS_IT87 is not set 975# CONFIG_SENSORS_IT87 is not set
@@ -934,17 +985,24 @@ CONFIG_HWMON=y
934# CONFIG_SENSORS_LM90 is not set 985# CONFIG_SENSORS_LM90 is not set
935# CONFIG_SENSORS_LM92 is not set 986# CONFIG_SENSORS_LM92 is not set
936# CONFIG_SENSORS_LM93 is not set 987# CONFIG_SENSORS_LM93 is not set
988# CONFIG_SENSORS_LTC4215 is not set
989# CONFIG_SENSORS_LTC4245 is not set
990# CONFIG_SENSORS_LM95241 is not set
937# CONFIG_SENSORS_MAX1111 is not set 991# CONFIG_SENSORS_MAX1111 is not set
938# CONFIG_SENSORS_MAX1619 is not set 992# CONFIG_SENSORS_MAX1619 is not set
939# CONFIG_SENSORS_MAX6650 is not set 993# CONFIG_SENSORS_MAX6650 is not set
940# CONFIG_SENSORS_PC87360 is not set 994# CONFIG_SENSORS_PC87360 is not set
941# CONFIG_SENSORS_PC87427 is not set 995# CONFIG_SENSORS_PC87427 is not set
996# CONFIG_SENSORS_PCF8591 is not set
997# CONFIG_SENSORS_SHT15 is not set
942# CONFIG_SENSORS_DME1737 is not set 998# CONFIG_SENSORS_DME1737 is not set
943# CONFIG_SENSORS_SMSC47M1 is not set 999# CONFIG_SENSORS_SMSC47M1 is not set
944# CONFIG_SENSORS_SMSC47M192 is not set 1000# CONFIG_SENSORS_SMSC47M192 is not set
945# CONFIG_SENSORS_SMSC47B397 is not set 1001# CONFIG_SENSORS_SMSC47B397 is not set
946# CONFIG_SENSORS_ADS7828 is not set 1002# CONFIG_SENSORS_ADS7828 is not set
947# CONFIG_SENSORS_THMC50 is not set 1003# CONFIG_SENSORS_THMC50 is not set
1004# CONFIG_SENSORS_TMP401 is not set
1005# CONFIG_SENSORS_TMP421 is not set
948# CONFIG_SENSORS_VT1211 is not set 1006# CONFIG_SENSORS_VT1211 is not set
949# CONFIG_SENSORS_W83781D is not set 1007# CONFIG_SENSORS_W83781D is not set
950# CONFIG_SENSORS_W83791D is not set 1008# CONFIG_SENSORS_W83791D is not set
@@ -954,9 +1012,8 @@ CONFIG_HWMON=y
954# CONFIG_SENSORS_W83L786NG is not set 1012# CONFIG_SENSORS_W83L786NG is not set
955# CONFIG_SENSORS_W83627HF is not set 1013# CONFIG_SENSORS_W83627HF is not set
956# CONFIG_SENSORS_W83627EHF is not set 1014# CONFIG_SENSORS_W83627EHF is not set
957# CONFIG_HWMON_DEBUG_CHIP is not set 1015# CONFIG_SENSORS_LIS3_SPI is not set
958# CONFIG_THERMAL is not set 1016# CONFIG_THERMAL is not set
959# CONFIG_THERMAL_HWMON is not set
960CONFIG_WATCHDOG=y 1017CONFIG_WATCHDOG=y
961# CONFIG_WATCHDOG_NOWAYOUT is not set 1018# CONFIG_WATCHDOG_NOWAYOUT is not set
962 1019
@@ -983,28 +1040,20 @@ CONFIG_SSB_POSSIBLE=y
983# CONFIG_MFD_CORE is not set 1040# CONFIG_MFD_CORE is not set
984# CONFIG_MFD_SM501 is not set 1041# CONFIG_MFD_SM501 is not set
985# CONFIG_HTC_PASIC3 is not set 1042# CONFIG_HTC_PASIC3 is not set
1043# CONFIG_TPS65010 is not set
1044# CONFIG_TWL4030_CORE is not set
986# CONFIG_MFD_TMIO is not set 1045# CONFIG_MFD_TMIO is not set
987# CONFIG_PMIC_DA903X is not set 1046# CONFIG_PMIC_DA903X is not set
988# CONFIG_PMIC_ADP5520 is not set 1047# CONFIG_PMIC_ADP5520 is not set
989# CONFIG_MFD_WM8400 is not set 1048# CONFIG_MFD_WM8400 is not set
1049# CONFIG_MFD_WM831X is not set
990# CONFIG_MFD_WM8350_I2C is not set 1050# CONFIG_MFD_WM8350_I2C is not set
1051# CONFIG_MFD_PCF50633 is not set
1052# CONFIG_MFD_MC13783 is not set
1053# CONFIG_AB3100_CORE is not set
1054# CONFIG_EZX_PCAP is not set
991# CONFIG_REGULATOR is not set 1055# CONFIG_REGULATOR is not set
992 1056# CONFIG_MEDIA_SUPPORT is not set
993#
994# Multimedia devices
995#
996
997#
998# Multimedia core support
999#
1000# CONFIG_VIDEO_DEV is not set
1001# CONFIG_DVB_CORE is not set
1002# CONFIG_VIDEO_MEDIA is not set
1003
1004#
1005# Multimedia drivers
1006#
1007# CONFIG_DAB is not set
1008 1057
1009# 1058#
1010# Graphics support 1059# Graphics support
@@ -1026,7 +1075,6 @@ CONFIG_DUMMY_CONSOLE=y
1026# CONFIG_SOUND is not set 1075# CONFIG_SOUND is not set
1027CONFIG_HID_SUPPORT=y 1076CONFIG_HID_SUPPORT=y
1028CONFIG_HID=y 1077CONFIG_HID=y
1029# CONFIG_HID_DEBUG is not set
1030# CONFIG_HIDRAW is not set 1078# CONFIG_HIDRAW is not set
1031 1079
1032# 1080#
@@ -1039,30 +1087,35 @@ CONFIG_USB_HID=y
1039# 1087#
1040# Special HID drivers 1088# Special HID drivers
1041# 1089#
1042CONFIG_HID_COMPAT=y
1043CONFIG_HID_A4TECH=y 1090CONFIG_HID_A4TECH=y
1044CONFIG_HID_APPLE=y 1091CONFIG_HID_APPLE=y
1045CONFIG_HID_BELKIN=y 1092CONFIG_HID_BELKIN=y
1046CONFIG_HID_BRIGHT=y
1047CONFIG_HID_CHERRY=y 1093CONFIG_HID_CHERRY=y
1048CONFIG_HID_CHICONY=y 1094CONFIG_HID_CHICONY=y
1049CONFIG_HID_CYPRESS=y 1095CONFIG_HID_CYPRESS=y
1050CONFIG_HID_DELL=y 1096# CONFIG_HID_DRAGONRISE is not set
1051CONFIG_HID_EZKEY=y 1097CONFIG_HID_EZKEY=y
1098# CONFIG_HID_KYE is not set
1052CONFIG_HID_GYRATION=y 1099CONFIG_HID_GYRATION=y
1100# CONFIG_HID_TWINHAN is not set
1101# CONFIG_HID_KENSINGTON is not set
1053CONFIG_HID_LOGITECH=y 1102CONFIG_HID_LOGITECH=y
1054# CONFIG_LOGITECH_FF is not set 1103# CONFIG_LOGITECH_FF is not set
1055# CONFIG_LOGIRUMBLEPAD2_FF is not set 1104# CONFIG_LOGIRUMBLEPAD2_FF is not set
1056CONFIG_HID_MICROSOFT=y 1105CONFIG_HID_MICROSOFT=y
1057CONFIG_HID_MONTEREY=y 1106CONFIG_HID_MONTEREY=y
1107# CONFIG_HID_NTRIG is not set
1058CONFIG_HID_PANTHERLORD=y 1108CONFIG_HID_PANTHERLORD=y
1059# CONFIG_PANTHERLORD_FF is not set 1109# CONFIG_PANTHERLORD_FF is not set
1060CONFIG_HID_PETALYNX=y 1110CONFIG_HID_PETALYNX=y
1061CONFIG_HID_SAMSUNG=y 1111CONFIG_HID_SAMSUNG=y
1062CONFIG_HID_SONY=y 1112CONFIG_HID_SONY=y
1063CONFIG_HID_SUNPLUS=y 1113CONFIG_HID_SUNPLUS=y
1064CONFIG_THRUSTMASTER_FF=m 1114# CONFIG_HID_GREENASIA is not set
1065CONFIG_ZEROPLUS_FF=m 1115# CONFIG_HID_SMARTJOYPLUS is not set
1116# CONFIG_HID_TOPSEED is not set
1117# CONFIG_HID_THRUSTMASTER is not set
1118# CONFIG_HID_ZEROPLUS is not set
1066CONFIG_USB_SUPPORT=y 1119CONFIG_USB_SUPPORT=y
1067CONFIG_USB_ARCH_HAS_HCD=y 1120CONFIG_USB_ARCH_HAS_HCD=y
1068# CONFIG_USB_ARCH_HAS_OHCI is not set 1121# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -1088,6 +1141,7 @@ CONFIG_USB_MON=y
1088# USB Host Controller Drivers 1141# USB Host Controller Drivers
1089# 1142#
1090# CONFIG_USB_C67X00_HCD is not set 1143# CONFIG_USB_C67X00_HCD is not set
1144# CONFIG_USB_OXU210HP_HCD is not set
1091# CONFIG_USB_ISP116X_HCD is not set 1145# CONFIG_USB_ISP116X_HCD is not set
1092# CONFIG_USB_ISP1760_HCD is not set 1146# CONFIG_USB_ISP1760_HCD is not set
1093# CONFIG_USB_ISP1362_HCD is not set 1147# CONFIG_USB_ISP1362_HCD is not set
@@ -1118,18 +1172,17 @@ CONFIG_USB_INVENTRA_DMA=y
1118# CONFIG_USB_TMC is not set 1172# CONFIG_USB_TMC is not set
1119 1173
1120# 1174#
1121# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1175# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1122# 1176#
1123 1177
1124# 1178#
1125# see USB_STORAGE Help for more information 1179# also be needed; see USB_STORAGE Help for more info
1126# 1180#
1127CONFIG_USB_STORAGE=y 1181CONFIG_USB_STORAGE=y
1128# CONFIG_USB_STORAGE_DEBUG is not set 1182# CONFIG_USB_STORAGE_DEBUG is not set
1129# CONFIG_USB_STORAGE_DATAFAB is not set 1183# CONFIG_USB_STORAGE_DATAFAB is not set
1130# CONFIG_USB_STORAGE_FREECOM is not set 1184# CONFIG_USB_STORAGE_FREECOM is not set
1131# CONFIG_USB_STORAGE_ISD200 is not set 1185# CONFIG_USB_STORAGE_ISD200 is not set
1132# CONFIG_USB_STORAGE_DPCM is not set
1133# CONFIG_USB_STORAGE_USBAT is not set 1186# CONFIG_USB_STORAGE_USBAT is not set
1134# CONFIG_USB_STORAGE_SDDR09 is not set 1187# CONFIG_USB_STORAGE_SDDR09 is not set
1135# CONFIG_USB_STORAGE_SDDR55 is not set 1188# CONFIG_USB_STORAGE_SDDR55 is not set
@@ -1165,7 +1218,6 @@ CONFIG_USB_STORAGE=y
1165# CONFIG_USB_LED is not set 1218# CONFIG_USB_LED is not set
1166# CONFIG_USB_CYPRESS_CY7C63 is not set 1219# CONFIG_USB_CYPRESS_CY7C63 is not set
1167# CONFIG_USB_CYTHERM is not set 1220# CONFIG_USB_CYTHERM is not set
1168# CONFIG_USB_PHIDGET is not set
1169# CONFIG_USB_IDMOUSE is not set 1221# CONFIG_USB_IDMOUSE is not set
1170# CONFIG_USB_FTDI_ELAN is not set 1222# CONFIG_USB_FTDI_ELAN is not set
1171# CONFIG_USB_APPLEDISPLAY is not set 1223# CONFIG_USB_APPLEDISPLAY is not set
@@ -1177,6 +1229,13 @@ CONFIG_USB_STORAGE=y
1177# CONFIG_USB_ISIGHTFW is not set 1229# CONFIG_USB_ISIGHTFW is not set
1178# CONFIG_USB_VST is not set 1230# CONFIG_USB_VST is not set
1179# CONFIG_USB_GADGET is not set 1231# CONFIG_USB_GADGET is not set
1232
1233#
1234# OTG and related infrastructure
1235#
1236CONFIG_USB_OTG_UTILS=y
1237# CONFIG_USB_GPIO_VBUS is not set
1238CONFIG_NOP_USB_XCEIV=y
1180# CONFIG_MMC is not set 1239# CONFIG_MMC is not set
1181# CONFIG_MEMSTICK is not set 1240# CONFIG_MEMSTICK is not set
1182# CONFIG_NEW_LEDS is not set 1241# CONFIG_NEW_LEDS is not set
@@ -1212,6 +1271,7 @@ CONFIG_RTC_INTF_DEV=y
1212# CONFIG_RTC_DRV_S35390A is not set 1271# CONFIG_RTC_DRV_S35390A is not set
1213# CONFIG_RTC_DRV_FM3130 is not set 1272# CONFIG_RTC_DRV_FM3130 is not set
1214# CONFIG_RTC_DRV_RX8581 is not set 1273# CONFIG_RTC_DRV_RX8581 is not set
1274# CONFIG_RTC_DRV_RX8025 is not set
1215 1275
1216# 1276#
1217# SPI RTC drivers 1277# SPI RTC drivers
@@ -1223,6 +1283,7 @@ CONFIG_RTC_INTF_DEV=y
1223# CONFIG_RTC_DRV_R9701 is not set 1283# CONFIG_RTC_DRV_R9701 is not set
1224# CONFIG_RTC_DRV_RS5C348 is not set 1284# CONFIG_RTC_DRV_RS5C348 is not set
1225# CONFIG_RTC_DRV_DS3234 is not set 1285# CONFIG_RTC_DRV_DS3234 is not set
1286# CONFIG_RTC_DRV_PCF2123 is not set
1226 1287
1227# 1288#
1228# Platform RTC drivers 1289# Platform RTC drivers
@@ -1243,10 +1304,21 @@ CONFIG_RTC_INTF_DEV=y
1243# 1304#
1244CONFIG_RTC_DRV_BFIN=y 1305CONFIG_RTC_DRV_BFIN=y
1245# CONFIG_DMADEVICES is not set 1306# CONFIG_DMADEVICES is not set
1307# CONFIG_AUXDISPLAY is not set
1246# CONFIG_UIO is not set 1308# CONFIG_UIO is not set
1309
1310#
1311# TI VLYNQ
1312#
1247# CONFIG_STAGING is not set 1313# CONFIG_STAGING is not set
1248 1314
1249# 1315#
1316# Firmware Drivers
1317#
1318# CONFIG_FIRMWARE_MEMMAP is not set
1319# CONFIG_SIGMA is not set
1320
1321#
1250# File systems 1322# File systems
1251# 1323#
1252CONFIG_EXT2_FS=m 1324CONFIG_EXT2_FS=m
@@ -1256,9 +1328,13 @@ CONFIG_EXT2_FS=m
1256# CONFIG_REISERFS_FS is not set 1328# CONFIG_REISERFS_FS is not set
1257# CONFIG_JFS_FS is not set 1329# CONFIG_JFS_FS is not set
1258# CONFIG_FS_POSIX_ACL is not set 1330# CONFIG_FS_POSIX_ACL is not set
1259CONFIG_FILE_LOCKING=y
1260# CONFIG_XFS_FS is not set 1331# CONFIG_XFS_FS is not set
1332# CONFIG_GFS2_FS is not set
1261# CONFIG_OCFS2_FS is not set 1333# CONFIG_OCFS2_FS is not set
1334# CONFIG_BTRFS_FS is not set
1335# CONFIG_NILFS2_FS is not set
1336CONFIG_FILE_LOCKING=y
1337CONFIG_FSNOTIFY=y
1262# CONFIG_DNOTIFY is not set 1338# CONFIG_DNOTIFY is not set
1263CONFIG_INOTIFY=y 1339CONFIG_INOTIFY=y
1264CONFIG_INOTIFY_USER=y 1340CONFIG_INOTIFY_USER=y
@@ -1268,6 +1344,11 @@ CONFIG_INOTIFY_USER=y
1268# CONFIG_FUSE_FS is not set 1344# CONFIG_FUSE_FS is not set
1269 1345
1270# 1346#
1347# Caches
1348#
1349# CONFIG_FSCACHE is not set
1350
1351#
1271# CD-ROM/DVD Filesystems 1352# CD-ROM/DVD Filesystems
1272# 1353#
1273CONFIG_ISO9660_FS=m 1354CONFIG_ISO9660_FS=m
@@ -1291,13 +1372,9 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1291CONFIG_PROC_FS=y 1372CONFIG_PROC_FS=y
1292CONFIG_PROC_SYSCTL=y 1373CONFIG_PROC_SYSCTL=y
1293CONFIG_SYSFS=y 1374CONFIG_SYSFS=y
1294# CONFIG_TMPFS is not set
1295# CONFIG_HUGETLB_PAGE is not set 1375# CONFIG_HUGETLB_PAGE is not set
1296# CONFIG_CONFIGFS_FS is not set 1376# CONFIG_CONFIGFS_FS is not set
1297 1377CONFIG_MISC_FILESYSTEMS=y
1298#
1299# Miscellaneous filesystems
1300#
1301# CONFIG_ADFS_FS is not set 1378# CONFIG_ADFS_FS is not set
1302# CONFIG_AFFS_FS is not set 1379# CONFIG_AFFS_FS is not set
1303# CONFIG_HFS_FS is not set 1380# CONFIG_HFS_FS is not set
@@ -1316,17 +1393,8 @@ CONFIG_JFFS2_ZLIB=y
1316# CONFIG_JFFS2_LZO is not set 1393# CONFIG_JFFS2_LZO is not set
1317CONFIG_JFFS2_RTIME=y 1394CONFIG_JFFS2_RTIME=y
1318# CONFIG_JFFS2_RUBIN is not set 1395# CONFIG_JFFS2_RUBIN is not set
1319CONFIG_YAFFS_FS=m
1320CONFIG_YAFFS_YAFFS1=y
1321# CONFIG_YAFFS_9BYTE_TAGS is not set
1322# CONFIG_YAFFS_DOES_ECC is not set
1323CONFIG_YAFFS_YAFFS2=y
1324CONFIG_YAFFS_AUTO_YAFFS2=y
1325# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1326# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1327# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1328CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1329# CONFIG_CRAMFS is not set 1396# CONFIG_CRAMFS is not set
1397# CONFIG_SQUASHFS is not set
1330# CONFIG_VXFS_FS is not set 1398# CONFIG_VXFS_FS is not set
1331# CONFIG_MINIX_FS is not set 1399# CONFIG_MINIX_FS is not set
1332# CONFIG_OMFS_FS is not set 1400# CONFIG_OMFS_FS is not set
@@ -1345,7 +1413,6 @@ CONFIG_LOCKD=m
1345CONFIG_LOCKD_V4=y 1413CONFIG_LOCKD_V4=y
1346CONFIG_NFS_COMMON=y 1414CONFIG_NFS_COMMON=y
1347CONFIG_SUNRPC=m 1415CONFIG_SUNRPC=m
1348# CONFIG_SUNRPC_REGISTER_V4 is not set
1349# CONFIG_RPCSEC_GSS_KRB5 is not set 1416# CONFIG_RPCSEC_GSS_KRB5 is not set
1350# CONFIG_RPCSEC_GSS_SPKM3 is not set 1417# CONFIG_RPCSEC_GSS_SPKM3 is not set
1351CONFIG_SMB_FS=m 1418CONFIG_SMB_FS=m
@@ -1360,7 +1427,7 @@ CONFIG_SMB_FS=m
1360# 1427#
1361# CONFIG_PARTITION_ADVANCED is not set 1428# CONFIG_PARTITION_ADVANCED is not set
1362CONFIG_MSDOS_PARTITION=y 1429CONFIG_MSDOS_PARTITION=y
1363CONFIG_NLS=m 1430CONFIG_NLS=y
1364CONFIG_NLS_DEFAULT="iso8859-1" 1431CONFIG_NLS_DEFAULT="iso8859-1"
1365CONFIG_NLS_CODEPAGE_437=m 1432CONFIG_NLS_CODEPAGE_437=m
1366# CONFIG_NLS_CODEPAGE_737 is not set 1433# CONFIG_NLS_CODEPAGE_737 is not set
@@ -1410,14 +1477,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1410CONFIG_ENABLE_MUST_CHECK=y 1477CONFIG_ENABLE_MUST_CHECK=y
1411CONFIG_FRAME_WARN=1024 1478CONFIG_FRAME_WARN=1024
1412# CONFIG_MAGIC_SYSRQ is not set 1479# CONFIG_MAGIC_SYSRQ is not set
1480# CONFIG_STRIP_ASM_SYMS is not set
1413# CONFIG_UNUSED_SYMBOLS is not set 1481# CONFIG_UNUSED_SYMBOLS is not set
1414CONFIG_DEBUG_FS=y 1482CONFIG_DEBUG_FS=y
1415# CONFIG_HEADERS_CHECK is not set 1483# CONFIG_HEADERS_CHECK is not set
1484CONFIG_DEBUG_SECTION_MISMATCH=y
1416CONFIG_DEBUG_KERNEL=y 1485CONFIG_DEBUG_KERNEL=y
1417CONFIG_DEBUG_SHIRQ=y 1486CONFIG_DEBUG_SHIRQ=y
1418CONFIG_DETECT_SOFTLOCKUP=y 1487CONFIG_DETECT_SOFTLOCKUP=y
1419# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1488# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1420CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1489CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1490CONFIG_DETECT_HUNG_TASK=y
1491# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1492CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1421CONFIG_SCHED_DEBUG=y 1493CONFIG_SCHED_DEBUG=y
1422# CONFIG_SCHEDSTATS is not set 1494# CONFIG_SCHEDSTATS is not set
1423# CONFIG_TIMER_STATS is not set 1495# CONFIG_TIMER_STATS is not set
@@ -1425,31 +1497,39 @@ CONFIG_SCHED_DEBUG=y
1425# CONFIG_DEBUG_SLAB is not set 1497# CONFIG_DEBUG_SLAB is not set
1426# CONFIG_DEBUG_SPINLOCK is not set 1498# CONFIG_DEBUG_SPINLOCK is not set
1427# CONFIG_DEBUG_MUTEXES is not set 1499# CONFIG_DEBUG_MUTEXES is not set
1500# CONFIG_DEBUG_LOCK_ALLOC is not set
1501# CONFIG_PROVE_LOCKING is not set
1502# CONFIG_LOCK_STAT is not set
1428# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1503# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1429# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1504# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1430# CONFIG_DEBUG_KOBJECT is not set 1505# CONFIG_DEBUG_KOBJECT is not set
1431CONFIG_DEBUG_BUGVERBOSE=y 1506CONFIG_DEBUG_BUGVERBOSE=y
1432CONFIG_DEBUG_INFO=y 1507CONFIG_DEBUG_INFO=y
1433# CONFIG_DEBUG_VM is not set 1508# CONFIG_DEBUG_VM is not set
1509# CONFIG_DEBUG_NOMMU_REGIONS is not set
1434# CONFIG_DEBUG_WRITECOUNT is not set 1510# CONFIG_DEBUG_WRITECOUNT is not set
1435# CONFIG_DEBUG_MEMORY_INIT is not set 1511# CONFIG_DEBUG_MEMORY_INIT is not set
1436# CONFIG_DEBUG_LIST is not set 1512# CONFIG_DEBUG_LIST is not set
1437# CONFIG_DEBUG_SG is not set 1513# CONFIG_DEBUG_SG is not set
1514# CONFIG_DEBUG_NOTIFIERS is not set
1515# CONFIG_DEBUG_CREDENTIALS is not set
1438# CONFIG_FRAME_POINTER is not set 1516# CONFIG_FRAME_POINTER is not set
1439# CONFIG_BOOT_PRINTK_DELAY is not set 1517# CONFIG_BOOT_PRINTK_DELAY is not set
1440# CONFIG_RCU_TORTURE_TEST is not set 1518# CONFIG_RCU_TORTURE_TEST is not set
1441# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1519# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1442# CONFIG_BACKTRACE_SELF_TEST is not set 1520# CONFIG_BACKTRACE_SELF_TEST is not set
1443# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1521# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1522# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1444# CONFIG_FAULT_INJECTION is not set 1523# CONFIG_FAULT_INJECTION is not set
1445 1524# CONFIG_PAGE_POISONING is not set
1446# 1525CONFIG_HAVE_FUNCTION_TRACER=y
1447# Tracers 1526CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1448# 1527CONFIG_TRACING_SUPPORT=y
1449# CONFIG_SCHED_TRACER is not set 1528# CONFIG_FTRACE is not set
1450# CONFIG_CONTEXT_SWITCH_TRACER is not set 1529# CONFIG_BRANCH_PROFILE_NONE is not set
1451# CONFIG_BOOT_TRACER is not set 1530# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1452# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1531# CONFIG_PROFILE_ALL_BRANCHES is not set
1532# CONFIG_DYNAMIC_DEBUG is not set
1453# CONFIG_SAMPLES is not set 1533# CONFIG_SAMPLES is not set
1454CONFIG_HAVE_ARCH_KGDB=y 1534CONFIG_HAVE_ARCH_KGDB=y
1455# CONFIG_KGDB is not set 1535# CONFIG_KGDB is not set
@@ -1474,6 +1554,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1474CONFIG_EARLY_PRINTK=y 1554CONFIG_EARLY_PRINTK=y
1475CONFIG_CPLB_INFO=y 1555CONFIG_CPLB_INFO=y
1476CONFIG_ACCESS_CHECK=y 1556CONFIG_ACCESS_CHECK=y
1557# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1477 1558
1478# 1559#
1479# Security options 1560# Security options
@@ -1482,15 +1563,15 @@ CONFIG_ACCESS_CHECK=y
1482CONFIG_SECURITY=y 1563CONFIG_SECURITY=y
1483# CONFIG_SECURITYFS is not set 1564# CONFIG_SECURITYFS is not set
1484# CONFIG_SECURITY_NETWORK is not set 1565# CONFIG_SECURITY_NETWORK is not set
1566# CONFIG_SECURITY_PATH is not set
1485# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1567# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1486# CONFIG_SECURITY_ROOTPLUG is not set 1568# CONFIG_SECURITY_ROOTPLUG is not set
1487CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1569# CONFIG_SECURITY_TOMOYO is not set
1488CONFIG_CRYPTO=y 1570CONFIG_CRYPTO=y
1489 1571
1490# 1572#
1491# Crypto core or helper 1573# Crypto core or helper
1492# 1574#
1493# CONFIG_CRYPTO_FIPS is not set
1494# CONFIG_CRYPTO_MANAGER is not set 1575# CONFIG_CRYPTO_MANAGER is not set
1495# CONFIG_CRYPTO_MANAGER2 is not set 1576# CONFIG_CRYPTO_MANAGER2 is not set
1496# CONFIG_CRYPTO_GF128MUL is not set 1577# CONFIG_CRYPTO_GF128MUL is not set
@@ -1522,11 +1603,13 @@ CONFIG_CRYPTO=y
1522# 1603#
1523# CONFIG_CRYPTO_HMAC is not set 1604# CONFIG_CRYPTO_HMAC is not set
1524# CONFIG_CRYPTO_XCBC is not set 1605# CONFIG_CRYPTO_XCBC is not set
1606# CONFIG_CRYPTO_VMAC is not set
1525 1607
1526# 1608#
1527# Digest 1609# Digest
1528# 1610#
1529# CONFIG_CRYPTO_CRC32C is not set 1611# CONFIG_CRYPTO_CRC32C is not set
1612# CONFIG_CRYPTO_GHASH is not set
1530# CONFIG_CRYPTO_MD4 is not set 1613# CONFIG_CRYPTO_MD4 is not set
1531# CONFIG_CRYPTO_MD5 is not set 1614# CONFIG_CRYPTO_MD5 is not set
1532# CONFIG_CRYPTO_MICHAEL_MIC is not set 1615# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1563,6 +1646,7 @@ CONFIG_CRYPTO=y
1563# Compression 1646# Compression
1564# 1647#
1565# CONFIG_CRYPTO_DEFLATE is not set 1648# CONFIG_CRYPTO_DEFLATE is not set
1649# CONFIG_CRYPTO_ZLIB is not set
1566# CONFIG_CRYPTO_LZO is not set 1650# CONFIG_CRYPTO_LZO is not set
1567 1651
1568# 1652#
@@ -1570,11 +1654,13 @@ CONFIG_CRYPTO=y
1570# 1654#
1571# CONFIG_CRYPTO_ANSI_CPRNG is not set 1655# CONFIG_CRYPTO_ANSI_CPRNG is not set
1572CONFIG_CRYPTO_HW=y 1656CONFIG_CRYPTO_HW=y
1657# CONFIG_BINARY_PRINTF is not set
1573 1658
1574# 1659#
1575# Library routines 1660# Library routines
1576# 1661#
1577CONFIG_BITREVERSE=y 1662CONFIG_BITREVERSE=y
1663CONFIG_GENERIC_FIND_LAST_BIT=y
1578CONFIG_CRC_CCITT=m 1664CONFIG_CRC_CCITT=m
1579# CONFIG_CRC16 is not set 1665# CONFIG_CRC16 is not set
1580# CONFIG_CRC_T10DIF is not set 1666# CONFIG_CRC_T10DIF is not set
@@ -1584,6 +1670,8 @@ CONFIG_CRC32=y
1584# CONFIG_LIBCRC32C is not set 1670# CONFIG_LIBCRC32C is not set
1585CONFIG_ZLIB_INFLATE=y 1671CONFIG_ZLIB_INFLATE=y
1586CONFIG_ZLIB_DEFLATE=m 1672CONFIG_ZLIB_DEFLATE=m
1673CONFIG_DECOMPRESS_GZIP=y
1587CONFIG_HAS_IOMEM=y 1674CONFIG_HAS_IOMEM=y
1588CONFIG_HAS_IOPORT=y 1675CONFIG_HAS_IOPORT=y
1589CONFIG_HAS_DMA=y 1676CONFIG_HAS_DMA=y
1677CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF527-EZKIT-V2_defconfig b/arch/blackfin/configs/BF527-EZKIT-V2_defconfig
new file mode 100644
index 000000000000..d2dfcb0e7ce4
--- /dev/null
+++ b/arch/blackfin/configs/BF527-EZKIT-V2_defconfig
@@ -0,0 +1,1811 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32.2
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
12CONFIG_ZONE_DMA=y
13CONFIG_GENERIC_FIND_NEXT_BIT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
25
26#
27# General setup
28#
29CONFIG_EXPERIMENTAL=y
30CONFIG_BROKEN_ON_SMP=y
31CONFIG_INIT_ENV_ARG_LIMIT=32
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
40CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y
42# CONFIG_POSIX_MQUEUE is not set
43# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
56CONFIG_IKCONFIG=y
57CONFIG_IKCONFIG_PROC=y
58CONFIG_LOG_BUF_SHIFT=14
59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
61# CONFIG_SYSFS_DEPRECATED_V2 is not set
62# CONFIG_RELAY is not set
63# CONFIG_NAMESPACES is not set
64CONFIG_BLK_DEV_INITRD=y
65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
70CONFIG_SYSCTL=y
71CONFIG_ANON_INODES=y
72CONFIG_EMBEDDED=y
73CONFIG_UID16=y
74# CONFIG_SYSCTL_SYSCALL is not set
75CONFIG_KALLSYMS=y
76# CONFIG_KALLSYMS_ALL is not set
77# CONFIG_KALLSYMS_EXTRA_PASS is not set
78CONFIG_HOTPLUG=y
79CONFIG_PRINTK=y
80CONFIG_BUG=y
81# CONFIG_ELF_CORE is not set
82CONFIG_BASE_FULL=y
83# CONFIG_FUTEX is not set
84CONFIG_EPOLL=y
85# CONFIG_SIGNALFD is not set
86# CONFIG_TIMERFD is not set
87# CONFIG_EVENTFD is not set
88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_COMPAT_BRK=y
95CONFIG_SLAB=y
96# CONFIG_SLUB is not set
97# CONFIG_SLOB is not set
98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
99# CONFIG_PROFILING is not set
100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
108CONFIG_SLABINFO=y
109CONFIG_BASE_SMALL=0
110CONFIG_MODULES=y
111# CONFIG_MODULE_FORCE_LOAD is not set
112CONFIG_MODULE_UNLOAD=y
113# CONFIG_MODULE_FORCE_UNLOAD is not set
114# CONFIG_MODVERSIONS is not set
115# CONFIG_MODULE_SRCVERSION_ALL is not set
116CONFIG_BLOCK=y
117# CONFIG_LBDAF is not set
118# CONFIG_BLK_DEV_BSG is not set
119# CONFIG_BLK_DEV_INTEGRITY is not set
120
121#
122# IO Schedulers
123#
124CONFIG_IOSCHED_NOOP=y
125CONFIG_IOSCHED_AS=y
126# CONFIG_IOSCHED_DEADLINE is not set
127CONFIG_IOSCHED_CFQ=y
128CONFIG_DEFAULT_AS=y
129# CONFIG_DEFAULT_DEADLINE is not set
130# CONFIG_DEFAULT_CFQ is not set
131# CONFIG_DEFAULT_NOOP is not set
132CONFIG_DEFAULT_IOSCHED="anticipatory"
133# CONFIG_PREEMPT_NONE is not set
134CONFIG_PREEMPT_VOLUNTARY=y
135# CONFIG_PREEMPT is not set
136# CONFIG_FREEZER is not set
137
138#
139# Blackfin Processor Options
140#
141
142#
143# Processor and Board Settings
144#
145# CONFIG_BF512 is not set
146# CONFIG_BF514 is not set
147# CONFIG_BF516 is not set
148# CONFIG_BF518 is not set
149# CONFIG_BF522 is not set
150# CONFIG_BF523 is not set
151# CONFIG_BF524 is not set
152# CONFIG_BF525 is not set
153# CONFIG_BF526 is not set
154CONFIG_BF527=y
155# CONFIG_BF531 is not set
156# CONFIG_BF532 is not set
157# CONFIG_BF533 is not set
158# CONFIG_BF534 is not set
159# CONFIG_BF536 is not set
160# CONFIG_BF537 is not set
161# CONFIG_BF538 is not set
162# CONFIG_BF539 is not set
163# CONFIG_BF542_std is not set
164# CONFIG_BF542M is not set
165# CONFIG_BF544_std is not set
166# CONFIG_BF544M is not set
167# CONFIG_BF547_std is not set
168# CONFIG_BF547M is not set
169# CONFIG_BF548_std is not set
170# CONFIG_BF548M is not set
171# CONFIG_BF549_std is not set
172# CONFIG_BF549M is not set
173# CONFIG_BF561 is not set
174CONFIG_BF_REV_MIN=0
175CONFIG_BF_REV_MAX=2
176# CONFIG_BF_REV_0_0 is not set
177# CONFIG_BF_REV_0_1 is not set
178CONFIG_BF_REV_0_2=y
179# CONFIG_BF_REV_0_3 is not set
180# CONFIG_BF_REV_0_4 is not set
181# CONFIG_BF_REV_0_5 is not set
182# CONFIG_BF_REV_0_6 is not set
183# CONFIG_BF_REV_ANY is not set
184# CONFIG_BF_REV_NONE is not set
185CONFIG_MEM_MT48LC32M16A2TG_75=y
186CONFIG_IRQ_PLL_WAKEUP=7
187CONFIG_IRQ_DMA0_ERROR=7
188CONFIG_IRQ_DMAR0_BLK=7
189CONFIG_IRQ_DMAR1_BLK=7
190CONFIG_IRQ_DMAR0_OVR=7
191CONFIG_IRQ_DMAR1_OVR=7
192CONFIG_IRQ_PPI_ERROR=7
193CONFIG_IRQ_MAC_ERROR=7
194CONFIG_IRQ_SPORT0_ERROR=7
195CONFIG_IRQ_SPORT1_ERROR=7
196CONFIG_IRQ_UART0_ERROR=7
197CONFIG_IRQ_UART1_ERROR=7
198CONFIG_IRQ_RTC=8
199CONFIG_IRQ_PPI=8
200CONFIG_IRQ_SPORT0_RX=9
201CONFIG_IRQ_SPORT0_TX=9
202CONFIG_IRQ_SPORT1_RX=9
203CONFIG_IRQ_SPORT1_TX=9
204CONFIG_IRQ_TWI=10
205CONFIG_IRQ_UART0_RX=10
206CONFIG_IRQ_UART0_TX=10
207CONFIG_IRQ_UART1_RX=10
208CONFIG_IRQ_UART1_TX=10
209CONFIG_IRQ_OPTSEC=11
210CONFIG_IRQ_CNT=11
211CONFIG_IRQ_MAC_RX=11
212CONFIG_IRQ_PORTH_INTA=11
213CONFIG_IRQ_MAC_TX=11
214CONFIG_IRQ_PORTH_INTB=11
215CONFIG_IRQ_TIMER0=8
216CONFIG_IRQ_TIMER1=12
217CONFIG_IRQ_TIMER2=12
218CONFIG_IRQ_TIMER3=12
219CONFIG_IRQ_TIMER4=12
220CONFIG_IRQ_TIMER5=12
221CONFIG_IRQ_TIMER6=12
222CONFIG_IRQ_TIMER7=12
223CONFIG_IRQ_PORTG_INTA=12
224CONFIG_IRQ_PORTG_INTB=12
225CONFIG_IRQ_MEM_DMA0=13
226CONFIG_IRQ_MEM_DMA1=13
227CONFIG_IRQ_WATCH=13
228CONFIG_IRQ_PORTF_INTA=13
229CONFIG_IRQ_PORTF_INTB=13
230CONFIG_BF52x=y
231# CONFIG_BFIN527_EZKIT is not set
232CONFIG_BFIN527_EZKIT_V2=y
233# CONFIG_BFIN527_BLUETECHNIX_CM is not set
234# CONFIG_BFIN526_EZBRD is not set
235
236#
237# BF527 Specific Configuration
238#
239
240#
241# Alternative Multiplexing Scheme
242#
243# CONFIG_BF527_SPORT0_PORTF is not set
244CONFIG_BF527_SPORT0_PORTG=y
245CONFIG_BF527_SPORT0_TSCLK_PG10=y
246# CONFIG_BF527_SPORT0_TSCLK_PG14 is not set
247CONFIG_BF527_UART1_PORTF=y
248# CONFIG_BF527_UART1_PORTG is not set
249# CONFIG_BF527_NAND_D_PORTF is not set
250CONFIG_BF527_NAND_D_PORTH=y
251
252#
253# Interrupt Priority Assignment
254#
255
256#
257# Priority
258#
259CONFIG_IRQ_SPI=10
260CONFIG_IRQ_SPI_ERROR=7
261CONFIG_IRQ_NFC_ERROR=7
262CONFIG_IRQ_HDMA_ERROR=7
263CONFIG_IRQ_HDMA=7
264CONFIG_IRQ_USB_EINT=10
265CONFIG_IRQ_USB_INT0=11
266CONFIG_IRQ_USB_INT1=11
267CONFIG_IRQ_USB_INT2=11
268CONFIG_IRQ_USB_DMA=11
269
270#
271# Board customizations
272#
273# CONFIG_CMDLINE_BOOL is not set
274CONFIG_BOOT_LOAD=0x1000
275
276#
277# Clock/PLL Setup
278#
279CONFIG_CLKIN_HZ=25000000
280# CONFIG_BFIN_KERNEL_CLOCK is not set
281CONFIG_MAX_VCO_HZ=600000000
282CONFIG_MIN_VCO_HZ=50000000
283CONFIG_MAX_SCLK_HZ=133333333
284CONFIG_MIN_SCLK_HZ=27000000
285
286#
287# Kernel Timer/Scheduler
288#
289# CONFIG_HZ_100 is not set
290CONFIG_HZ_250=y
291# CONFIG_HZ_300 is not set
292# CONFIG_HZ_1000 is not set
293CONFIG_HZ=250
294# CONFIG_SCHED_HRTICK is not set
295CONFIG_GENERIC_TIME=y
296CONFIG_GENERIC_CLOCKEVENTS=y
297# CONFIG_TICKSOURCE_GPTMR0 is not set
298CONFIG_TICKSOURCE_CORETMR=y
299# CONFIG_CYCLES_CLOCKSOURCE is not set
300# CONFIG_GPTMR0_CLOCKSOURCE is not set
301# CONFIG_NO_HZ is not set
302# CONFIG_HIGH_RES_TIMERS is not set
303CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
304
305#
306# Misc
307#
308CONFIG_BFIN_SCRATCH_REG_RETN=y
309# CONFIG_BFIN_SCRATCH_REG_RETE is not set
310# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
311
312#
313# Blackfin Kernel Optimizations
314#
315
316#
317# Memory Optimizations
318#
319CONFIG_I_ENTRY_L1=y
320CONFIG_EXCPT_IRQ_SYSC_L1=y
321CONFIG_DO_IRQ_L1=y
322CONFIG_CORE_TIMER_IRQ_L1=y
323CONFIG_IDLE_L1=y
324# CONFIG_SCHEDULE_L1 is not set
325CONFIG_ARITHMETIC_OPS_L1=y
326CONFIG_ACCESS_OK_L1=y
327# CONFIG_MEMSET_L1 is not set
328# CONFIG_MEMCPY_L1 is not set
329# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set
330# CONFIG_IP_CHECKSUM_L1 is not set
331CONFIG_CACHELINE_ALIGNED_L1=y
332# CONFIG_SYSCALL_TAB_L1 is not set
333# CONFIG_CPLB_SWITCH_TAB_L1 is not set
334CONFIG_APP_STACK_L1=y
335
336#
337# Speed Optimizations
338#
339CONFIG_BFIN_INS_LOWOVERHEAD=y
340CONFIG_RAMKERNEL=y
341# CONFIG_ROMKERNEL is not set
342CONFIG_SELECT_MEMORY_MODEL=y
343CONFIG_FLATMEM_MANUAL=y
344# CONFIG_DISCONTIGMEM_MANUAL is not set
345# CONFIG_SPARSEMEM_MANUAL is not set
346CONFIG_FLATMEM=y
347CONFIG_FLAT_NODE_MEM_MAP=y
348CONFIG_PAGEFLAGS_EXTENDED=y
349CONFIG_SPLIT_PTLOCK_CPUS=4
350# CONFIG_PHYS_ADDR_T_64BIT is not set
351CONFIG_ZONE_DMA_FLAG=1
352CONFIG_VIRT_TO_BUS=y
353CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
354CONFIG_BFIN_GPTIMERS=y
355# CONFIG_DMA_UNCACHED_4M is not set
356# CONFIG_DMA_UNCACHED_2M is not set
357CONFIG_DMA_UNCACHED_1M=y
358# CONFIG_DMA_UNCACHED_512K is not set
359# CONFIG_DMA_UNCACHED_256K is not set
360# CONFIG_DMA_UNCACHED_128K is not set
361# CONFIG_DMA_UNCACHED_NONE is not set
362
363#
364# Cache Support
365#
366CONFIG_BFIN_ICACHE=y
367CONFIG_BFIN_EXTMEM_ICACHEABLE=y
368CONFIG_BFIN_DCACHE=y
369# CONFIG_BFIN_DCACHE_BANKA is not set
370CONFIG_BFIN_EXTMEM_DCACHEABLE=y
371CONFIG_BFIN_EXTMEM_WRITEBACK=y
372# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
373
374#
375# Memory Protection Unit
376#
377# CONFIG_MPU is not set
378
379#
380# Asynchronous Memory Configuration
381#
382
383#
384# EBIU_AMGCTL Global Control
385#
386CONFIG_C_AMCKEN=y
387CONFIG_C_CDPRIO=y
388# CONFIG_C_AMBEN is not set
389# CONFIG_C_AMBEN_B0 is not set
390# CONFIG_C_AMBEN_B0_B1 is not set
391# CONFIG_C_AMBEN_B0_B1_B2 is not set
392CONFIG_C_AMBEN_ALL=y
393
394#
395# EBIU_AMBCTL Control
396#
397CONFIG_BANK_0=0x7BB0
398CONFIG_BANK_1=0x7BB0
399CONFIG_BANK_2=0x7BB0
400CONFIG_BANK_3=0x99B2
401
402#
403# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
404#
405# CONFIG_ARCH_SUPPORTS_MSI is not set
406# CONFIG_PCCARD is not set
407
408#
409# Executable file formats
410#
411CONFIG_BINFMT_ELF_FDPIC=y
412CONFIG_BINFMT_FLAT=y
413CONFIG_BINFMT_ZFLAT=y
414# CONFIG_BINFMT_SHARED_FLAT is not set
415# CONFIG_HAVE_AOUT is not set
416# CONFIG_BINFMT_MISC is not set
417
418#
419# Power management options
420#
421# CONFIG_PM is not set
422CONFIG_ARCH_SUSPEND_POSSIBLE=y
423
424#
425# CPU Frequency scaling
426#
427# CONFIG_CPU_FREQ is not set
428CONFIG_NET=y
429
430#
431# Networking options
432#
433CONFIG_PACKET=y
434# CONFIG_PACKET_MMAP is not set
435CONFIG_UNIX=y
436# CONFIG_NET_KEY is not set
437CONFIG_INET=y
438# CONFIG_IP_MULTICAST is not set
439# CONFIG_IP_ADVANCED_ROUTER is not set
440CONFIG_IP_FIB_HASH=y
441CONFIG_IP_PNP=y
442# CONFIG_IP_PNP_DHCP is not set
443# CONFIG_IP_PNP_BOOTP is not set
444# CONFIG_IP_PNP_RARP is not set
445# CONFIG_NET_IPIP is not set
446# CONFIG_NET_IPGRE is not set
447# CONFIG_ARPD is not set
448# CONFIG_SYN_COOKIES is not set
449# CONFIG_INET_AH is not set
450# CONFIG_INET_ESP is not set
451# CONFIG_INET_IPCOMP is not set
452# CONFIG_INET_XFRM_TUNNEL is not set
453# CONFIG_INET_TUNNEL is not set
454# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
455# CONFIG_INET_XFRM_MODE_TUNNEL is not set
456# CONFIG_INET_XFRM_MODE_BEET is not set
457# CONFIG_INET_LRO is not set
458# CONFIG_INET_DIAG is not set
459# CONFIG_TCP_CONG_ADVANCED is not set
460CONFIG_TCP_CONG_CUBIC=y
461CONFIG_DEFAULT_TCP_CONG="cubic"
462# CONFIG_TCP_MD5SIG is not set
463# CONFIG_IPV6 is not set
464# CONFIG_NETLABEL is not set
465# CONFIG_NETWORK_SECMARK is not set
466# CONFIG_NETFILTER is not set
467# CONFIG_IP_DCCP is not set
468# CONFIG_IP_SCTP is not set
469# CONFIG_RDS is not set
470# CONFIG_TIPC is not set
471# CONFIG_ATM is not set
472# CONFIG_BRIDGE is not set
473# CONFIG_NET_DSA is not set
474# CONFIG_VLAN_8021Q is not set
475# CONFIG_DECNET is not set
476# CONFIG_LLC2 is not set
477# CONFIG_IPX is not set
478# CONFIG_ATALK is not set
479# CONFIG_X25 is not set
480# CONFIG_LAPB is not set
481# CONFIG_ECONET is not set
482# CONFIG_WAN_ROUTER is not set
483# CONFIG_PHONET is not set
484# CONFIG_IEEE802154 is not set
485# CONFIG_NET_SCHED is not set
486# CONFIG_DCB is not set
487
488#
489# Network testing
490#
491# CONFIG_NET_PKTGEN is not set
492# CONFIG_HAMRADIO is not set
493# CONFIG_CAN is not set
494CONFIG_IRDA=m
495
496#
497# IrDA protocols
498#
499CONFIG_IRLAN=m
500CONFIG_IRCOMM=m
501# CONFIG_IRDA_ULTRA is not set
502
503#
504# IrDA options
505#
506# CONFIG_IRDA_CACHE_LAST_LSAP is not set
507# CONFIG_IRDA_FAST_RR is not set
508# CONFIG_IRDA_DEBUG is not set
509
510#
511# Infrared-port device drivers
512#
513
514#
515# SIR device drivers
516#
517CONFIG_IRTTY_SIR=m
518CONFIG_BFIN_SIR=m
519CONFIG_BFIN_SIR0=y
520CONFIG_SIR_BFIN_DMA=y
521# CONFIG_SIR_BFIN_PIO is not set
522
523#
524# Dongle support
525#
526# CONFIG_DONGLE is not set
527# CONFIG_KINGSUN_DONGLE is not set
528# CONFIG_KSDAZZLE_DONGLE is not set
529# CONFIG_KS959_DONGLE is not set
530
531#
532# FIR device drivers
533#
534# CONFIG_USB_IRDA is not set
535# CONFIG_SIGMATEL_FIR is not set
536# CONFIG_MCS_FIR is not set
537# CONFIG_BT is not set
538# CONFIG_AF_RXRPC is not set
539# CONFIG_WIRELESS is not set
540# CONFIG_WIMAX is not set
541# CONFIG_RFKILL is not set
542# CONFIG_NET_9P is not set
543
544#
545# Device Drivers
546#
547
548#
549# Generic Driver Options
550#
551CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
552CONFIG_STANDALONE=y
553CONFIG_PREVENT_FIRMWARE_BUILD=y
554# CONFIG_FW_LOADER is not set
555# CONFIG_DEBUG_DRIVER is not set
556# CONFIG_DEBUG_DEVRES is not set
557# CONFIG_SYS_HYPERVISOR is not set
558# CONFIG_CONNECTOR is not set
559CONFIG_MTD=y
560# CONFIG_MTD_DEBUG is not set
561# CONFIG_MTD_TESTS is not set
562# CONFIG_MTD_CONCAT is not set
563CONFIG_MTD_PARTITIONS=y
564# CONFIG_MTD_REDBOOT_PARTS is not set
565# CONFIG_MTD_CMDLINE_PARTS is not set
566# CONFIG_MTD_AR7_PARTS is not set
567
568#
569# User Modules And Translation Layers
570#
571CONFIG_MTD_CHAR=m
572CONFIG_MTD_BLKDEVS=y
573CONFIG_MTD_BLOCK=y
574# CONFIG_FTL is not set
575# CONFIG_NFTL is not set
576# CONFIG_INFTL is not set
577# CONFIG_RFD_FTL is not set
578# CONFIG_SSFDC is not set
579# CONFIG_MTD_OOPS is not set
580
581#
582# RAM/ROM/Flash chip drivers
583#
584# CONFIG_MTD_CFI is not set
585CONFIG_MTD_JEDECPROBE=m
586CONFIG_MTD_GEN_PROBE=m
587# CONFIG_MTD_CFI_ADV_OPTIONS is not set
588CONFIG_MTD_MAP_BANK_WIDTH_1=y
589CONFIG_MTD_MAP_BANK_WIDTH_2=y
590CONFIG_MTD_MAP_BANK_WIDTH_4=y
591# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
592# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
593# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
594CONFIG_MTD_CFI_I1=y
595CONFIG_MTD_CFI_I2=y
596# CONFIG_MTD_CFI_I4 is not set
597# CONFIG_MTD_CFI_I8 is not set
598# CONFIG_MTD_CFI_INTELEXT is not set
599# CONFIG_MTD_CFI_AMDSTD is not set
600# CONFIG_MTD_CFI_STAA is not set
601CONFIG_MTD_RAM=y
602CONFIG_MTD_ROM=m
603# CONFIG_MTD_ABSENT is not set
604
605#
606# Mapping drivers for chip access
607#
608CONFIG_MTD_COMPLEX_MAPPINGS=y
609# CONFIG_MTD_PHYSMAP is not set
610# CONFIG_MTD_GPIO_ADDR is not set
611# CONFIG_MTD_UCLINUX is not set
612# CONFIG_MTD_PLATRAM is not set
613
614#
615# Self-contained MTD device drivers
616#
617# CONFIG_MTD_DATAFLASH is not set
618CONFIG_MTD_M25P80=y
619CONFIG_M25PXX_USE_FAST_READ=y
620# CONFIG_MTD_SST25L is not set
621# CONFIG_MTD_SLRAM is not set
622# CONFIG_MTD_PHRAM is not set
623# CONFIG_MTD_MTDRAM is not set
624# CONFIG_MTD_BLOCK2MTD is not set
625
626#
627# Disk-On-Chip Device Drivers
628#
629# CONFIG_MTD_DOC2000 is not set
630# CONFIG_MTD_DOC2001 is not set
631# CONFIG_MTD_DOC2001PLUS is not set
632CONFIG_MTD_NAND=m
633# CONFIG_MTD_NAND_VERIFY_WRITE is not set
634# CONFIG_MTD_NAND_ECC_SMC is not set
635# CONFIG_MTD_NAND_MUSEUM_IDS is not set
636CONFIG_MTD_NAND_IDS=m
637# CONFIG_MTD_NAND_BF5XX is not set
638# CONFIG_MTD_NAND_DISKONCHIP is not set
639# CONFIG_MTD_NAND_NANDSIM is not set
640# CONFIG_MTD_NAND_PLATFORM is not set
641# CONFIG_MTD_ALAUDA is not set
642# CONFIG_MTD_ONENAND is not set
643
644#
645# LPDDR flash memory drivers
646#
647# CONFIG_MTD_LPDDR is not set
648
649#
650# UBI - Unsorted block images
651#
652# CONFIG_MTD_UBI is not set
653# CONFIG_PARPORT is not set
654CONFIG_BLK_DEV=y
655# CONFIG_BLK_DEV_COW_COMMON is not set
656# CONFIG_BLK_DEV_LOOP is not set
657# CONFIG_BLK_DEV_NBD is not set
658# CONFIG_BLK_DEV_UB is not set
659CONFIG_BLK_DEV_RAM=y
660CONFIG_BLK_DEV_RAM_COUNT=16
661CONFIG_BLK_DEV_RAM_SIZE=4096
662# CONFIG_BLK_DEV_XIP is not set
663# CONFIG_CDROM_PKTCDVD is not set
664# CONFIG_ATA_OVER_ETH is not set
665# CONFIG_BLK_DEV_HD is not set
666CONFIG_MISC_DEVICES=y
667# CONFIG_AD525X_DPOT is not set
668# CONFIG_ICS932S401 is not set
669# CONFIG_ENCLOSURE_SERVICES is not set
670# CONFIG_ISL29003 is not set
671# CONFIG_C2PORT is not set
672
673#
674# EEPROM support
675#
676# CONFIG_EEPROM_AT24 is not set
677# CONFIG_EEPROM_AT25 is not set
678# CONFIG_EEPROM_LEGACY is not set
679# CONFIG_EEPROM_MAX6875 is not set
680# CONFIG_EEPROM_93CX6 is not set
681CONFIG_HAVE_IDE=y
682# CONFIG_IDE is not set
683
684#
685# SCSI device support
686#
687# CONFIG_RAID_ATTRS is not set
688CONFIG_SCSI=y
689CONFIG_SCSI_DMA=y
690# CONFIG_SCSI_TGT is not set
691# CONFIG_SCSI_NETLINK is not set
692# CONFIG_SCSI_PROC_FS is not set
693
694#
695# SCSI support type (disk, tape, CD-ROM)
696#
697CONFIG_BLK_DEV_SD=y
698# CONFIG_CHR_DEV_ST is not set
699# CONFIG_CHR_DEV_OSST is not set
700CONFIG_BLK_DEV_SR=m
701# CONFIG_BLK_DEV_SR_VENDOR is not set
702# CONFIG_CHR_DEV_SG is not set
703# CONFIG_CHR_DEV_SCH is not set
704# CONFIG_SCSI_MULTI_LUN is not set
705# CONFIG_SCSI_CONSTANTS is not set
706# CONFIG_SCSI_LOGGING is not set
707# CONFIG_SCSI_SCAN_ASYNC is not set
708CONFIG_SCSI_WAIT_SCAN=m
709
710#
711# SCSI Transports
712#
713# CONFIG_SCSI_SPI_ATTRS is not set
714# CONFIG_SCSI_FC_ATTRS is not set
715# CONFIG_SCSI_ISCSI_ATTRS is not set
716# CONFIG_SCSI_SAS_LIBSAS is not set
717# CONFIG_SCSI_SRP_ATTRS is not set
718# CONFIG_SCSI_LOWLEVEL is not set
719# CONFIG_SCSI_DH is not set
720# CONFIG_SCSI_OSD_INITIATOR is not set
721# CONFIG_ATA is not set
722# CONFIG_MD is not set
723CONFIG_NETDEVICES=y
724# CONFIG_DUMMY is not set
725# CONFIG_BONDING is not set
726# CONFIG_MACVLAN is not set
727# CONFIG_EQUALIZER is not set
728# CONFIG_TUN is not set
729# CONFIG_VETH is not set
730CONFIG_PHYLIB=y
731
732#
733# MII PHY device drivers
734#
735# CONFIG_MARVELL_PHY is not set
736# CONFIG_DAVICOM_PHY is not set
737# CONFIG_QSEMI_PHY is not set
738# CONFIG_LXT_PHY is not set
739# CONFIG_CICADA_PHY is not set
740# CONFIG_VITESSE_PHY is not set
741# CONFIG_SMSC_PHY is not set
742# CONFIG_BROADCOM_PHY is not set
743# CONFIG_ICPLUS_PHY is not set
744# CONFIG_REALTEK_PHY is not set
745# CONFIG_NATIONAL_PHY is not set
746# CONFIG_STE10XP is not set
747# CONFIG_LSI_ET1011C_PHY is not set
748# CONFIG_FIXED_PHY is not set
749# CONFIG_MDIO_BITBANG is not set
750CONFIG_NET_ETHERNET=y
751CONFIG_MII=y
752CONFIG_BFIN_MAC=y
753CONFIG_BFIN_MAC_USE_L1=y
754CONFIG_BFIN_TX_DESC_NUM=10
755CONFIG_BFIN_RX_DESC_NUM=20
756CONFIG_BFIN_MAC_RMII=y
757# CONFIG_SMC91X is not set
758# CONFIG_DM9000 is not set
759# CONFIG_ENC28J60 is not set
760# CONFIG_ETHOC is not set
761# CONFIG_SMSC911X is not set
762# CONFIG_DNET is not set
763# CONFIG_ADF702X is not set
764# CONFIG_IBM_NEW_EMAC_ZMII is not set
765# CONFIG_IBM_NEW_EMAC_RGMII is not set
766# CONFIG_IBM_NEW_EMAC_TAH is not set
767# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
768# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
769# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
770# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
771# CONFIG_B44 is not set
772# CONFIG_KS8842 is not set
773# CONFIG_KS8851 is not set
774# CONFIG_KS8851_MLL is not set
775# CONFIG_NETDEV_1000 is not set
776# CONFIG_NETDEV_10000 is not set
777# CONFIG_WLAN is not set
778
779#
780# Enable WiMAX (Networking options) to see the WiMAX drivers
781#
782
783#
784# USB Network Adapters
785#
786# CONFIG_USB_CATC is not set
787# CONFIG_USB_KAWETH is not set
788# CONFIG_USB_PEGASUS is not set
789# CONFIG_USB_RTL8150 is not set
790# CONFIG_USB_USBNET is not set
791# CONFIG_WAN is not set
792# CONFIG_PPP is not set
793# CONFIG_SLIP is not set
794# CONFIG_NETCONSOLE is not set
795# CONFIG_NETPOLL is not set
796# CONFIG_NET_POLL_CONTROLLER is not set
797# CONFIG_ISDN is not set
798# CONFIG_PHONE is not set
799
800#
801# Input device support
802#
803CONFIG_INPUT=y
804CONFIG_INPUT_FF_MEMLESS=m
805# CONFIG_INPUT_POLLDEV is not set
806
807#
808# Userland interfaces
809#
810# CONFIG_INPUT_MOUSEDEV is not set
811# CONFIG_INPUT_JOYDEV is not set
812CONFIG_INPUT_EVDEV=y
813# CONFIG_INPUT_EVBUG is not set
814
815#
816# Input Device Drivers
817#
818CONFIG_INPUT_KEYBOARD=y
819CONFIG_KEYBOARD_ADP5520=y
820# CONFIG_KEYBOARD_ADP5588 is not set
821# CONFIG_KEYBOARD_ATKBD is not set
822# CONFIG_QT2160 is not set
823# CONFIG_KEYBOARD_LKKBD is not set
824# CONFIG_KEYBOARD_GPIO is not set
825# CONFIG_KEYBOARD_MATRIX is not set
826# CONFIG_KEYBOARD_LM8323 is not set
827# CONFIG_KEYBOARD_MAX7359 is not set
828# CONFIG_KEYBOARD_NEWTON is not set
829# CONFIG_KEYBOARD_OPENCORES is not set
830# CONFIG_KEYBOARD_STOWAWAY is not set
831# CONFIG_KEYBOARD_SUNKBD is not set
832# CONFIG_KEYBOARD_XTKBD is not set
833# CONFIG_INPUT_MOUSE is not set
834# CONFIG_INPUT_JOYSTICK is not set
835# CONFIG_INPUT_TABLET is not set
836CONFIG_INPUT_TOUCHSCREEN=y
837# CONFIG_TOUCHSCREEN_ADS7846 is not set
838# CONFIG_TOUCHSCREEN_AD7877 is not set
839CONFIG_TOUCHSCREEN_AD7879_I2C=y
840CONFIG_TOUCHSCREEN_AD7879=y
841# CONFIG_TOUCHSCREEN_EETI is not set
842# CONFIG_TOUCHSCREEN_FUJITSU is not set
843# CONFIG_TOUCHSCREEN_GUNZE is not set
844# CONFIG_TOUCHSCREEN_ELO is not set
845# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
846# CONFIG_TOUCHSCREEN_MCS5000 is not set
847# CONFIG_TOUCHSCREEN_MTOUCH is not set
848# CONFIG_TOUCHSCREEN_INEXIO is not set
849# CONFIG_TOUCHSCREEN_MK712 is not set
850# CONFIG_TOUCHSCREEN_PENMOUNT is not set
851# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
852# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
853# CONFIG_TOUCHSCREEN_WM97XX is not set
854# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
855# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
856# CONFIG_TOUCHSCREEN_TSC2007 is not set
857CONFIG_INPUT_MISC=y
858# CONFIG_INPUT_ATI_REMOTE is not set
859# CONFIG_INPUT_ATI_REMOTE2 is not set
860# CONFIG_INPUT_KEYSPAN_REMOTE is not set
861# CONFIG_INPUT_POWERMATE is not set
862# CONFIG_INPUT_YEALINK is not set
863# CONFIG_INPUT_CM109 is not set
864# CONFIG_INPUT_UINPUT is not set
865# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
866# CONFIG_INPUT_BFIN_ROTARY is not set
867# CONFIG_INPUT_AD714X is not set
868# CONFIG_INPUT_ADXL34X is not set
869# CONFIG_INPUT_PCF8574 is not set
870
871#
872# Hardware I/O ports
873#
874# CONFIG_SERIO is not set
875# CONFIG_GAMEPORT is not set
876
877#
878# Character devices
879#
880CONFIG_BFIN_DMA_INTERFACE=m
881# CONFIG_BFIN_PPI is not set
882# CONFIG_BFIN_PPIFCD is not set
883# CONFIG_BFIN_SIMPLE_TIMER is not set
884# CONFIG_BFIN_SPI_ADC is not set
885CONFIG_BFIN_SPORT=m
886# CONFIG_BFIN_TWI_LCD is not set
887CONFIG_VT=y
888CONFIG_CONSOLE_TRANSLATIONS=y
889CONFIG_VT_CONSOLE=y
890CONFIG_HW_CONSOLE=y
891# CONFIG_VT_HW_CONSOLE_BINDING is not set
892# CONFIG_DEVKMEM is not set
893CONFIG_BFIN_JTAG_COMM=m
894# CONFIG_SERIAL_NONSTANDARD is not set
895
896#
897# Serial drivers
898#
899# CONFIG_SERIAL_8250 is not set
900
901#
902# Non-8250 serial port support
903#
904# CONFIG_SERIAL_MAX3100 is not set
905CONFIG_SERIAL_BFIN=y
906CONFIG_SERIAL_BFIN_CONSOLE=y
907CONFIG_SERIAL_BFIN_DMA=y
908# CONFIG_SERIAL_BFIN_PIO is not set
909# CONFIG_SERIAL_BFIN_UART0 is not set
910CONFIG_SERIAL_BFIN_UART1=y
911# CONFIG_BFIN_UART1_CTSRTS is not set
912CONFIG_SERIAL_CORE=y
913CONFIG_SERIAL_CORE_CONSOLE=y
914# CONFIG_SERIAL_BFIN_SPORT is not set
915CONFIG_UNIX98_PTYS=y
916# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
917# CONFIG_LEGACY_PTYS is not set
918CONFIG_BFIN_OTP=y
919# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
920# CONFIG_IPMI_HANDLER is not set
921# CONFIG_HW_RANDOM is not set
922# CONFIG_R3964 is not set
923# CONFIG_RAW_DRIVER is not set
924# CONFIG_TCG_TPM is not set
925CONFIG_I2C=y
926CONFIG_I2C_BOARDINFO=y
927CONFIG_I2C_COMPAT=y
928CONFIG_I2C_CHARDEV=m
929CONFIG_I2C_HELPER_AUTO=y
930
931#
932# I2C Hardware Bus support
933#
934
935#
936# I2C system bus drivers (mostly embedded / system-on-chip)
937#
938CONFIG_I2C_BLACKFIN_TWI=y
939CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
940# CONFIG_I2C_GPIO is not set
941# CONFIG_I2C_OCORES is not set
942# CONFIG_I2C_SIMTEC is not set
943
944#
945# External I2C/SMBus adapter drivers
946#
947# CONFIG_I2C_PARPORT_LIGHT is not set
948# CONFIG_I2C_TAOS_EVM is not set
949# CONFIG_I2C_TINY_USB is not set
950
951#
952# Other I2C/SMBus bus drivers
953#
954# CONFIG_I2C_PCA_PLATFORM is not set
955# CONFIG_I2C_STUB is not set
956
957#
958# Miscellaneous I2C Chip support
959#
960# CONFIG_DS1682 is not set
961# CONFIG_SENSORS_TSL2550 is not set
962# CONFIG_I2C_DEBUG_CORE is not set
963# CONFIG_I2C_DEBUG_ALGO is not set
964# CONFIG_I2C_DEBUG_BUS is not set
965# CONFIG_I2C_DEBUG_CHIP is not set
966CONFIG_SPI=y
967# CONFIG_SPI_DEBUG is not set
968CONFIG_SPI_MASTER=y
969
970#
971# SPI Master Controller Drivers
972#
973CONFIG_SPI_BFIN=y
974# CONFIG_SPI_BFIN_LOCK is not set
975# CONFIG_SPI_BFIN_SPORT is not set
976# CONFIG_SPI_BITBANG is not set
977# CONFIG_SPI_GPIO is not set
978
979#
980# SPI Protocol Masters
981#
982# CONFIG_SPI_SPIDEV is not set
983# CONFIG_SPI_TLE62X0 is not set
984
985#
986# PPS support
987#
988# CONFIG_PPS is not set
989CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
990CONFIG_GPIOLIB=y
991# CONFIG_DEBUG_GPIO is not set
992CONFIG_GPIO_SYSFS=y
993
994#
995# Memory mapped GPIO expanders:
996#
997
998#
999# I2C GPIO expanders:
1000#
1001# CONFIG_GPIO_MAX732X is not set
1002# CONFIG_GPIO_PCA953X is not set
1003# CONFIG_GPIO_PCF857X is not set
1004# CONFIG_GPIO_ADP5520 is not set
1005# CONFIG_GPIO_ADP5588 is not set
1006
1007#
1008# PCI GPIO expanders:
1009#
1010
1011#
1012# SPI GPIO expanders:
1013#
1014# CONFIG_GPIO_MAX7301 is not set
1015# CONFIG_GPIO_MCP23S08 is not set
1016# CONFIG_GPIO_MC33880 is not set
1017
1018#
1019# AC97 GPIO expanders:
1020#
1021# CONFIG_W1 is not set
1022# CONFIG_POWER_SUPPLY is not set
1023# CONFIG_HWMON is not set
1024# CONFIG_THERMAL is not set
1025CONFIG_WATCHDOG=y
1026# CONFIG_WATCHDOG_NOWAYOUT is not set
1027
1028#
1029# Watchdog Device Drivers
1030#
1031# CONFIG_SOFT_WATCHDOG is not set
1032CONFIG_BFIN_WDT=y
1033
1034#
1035# USB-based Watchdog Cards
1036#
1037# CONFIG_USBPCWATCHDOG is not set
1038CONFIG_SSB_POSSIBLE=y
1039
1040#
1041# Sonics Silicon Backplane
1042#
1043# CONFIG_SSB is not set
1044
1045#
1046# Multifunction device drivers
1047#
1048# CONFIG_MFD_CORE is not set
1049# CONFIG_MFD_SM501 is not set
1050# CONFIG_HTC_PASIC3 is not set
1051# CONFIG_UCB1400_CORE is not set
1052# CONFIG_TPS65010 is not set
1053# CONFIG_TWL4030_CORE is not set
1054# CONFIG_MFD_TMIO is not set
1055# CONFIG_PMIC_DA903X is not set
1056CONFIG_PMIC_ADP5520=y
1057# CONFIG_MFD_WM8400 is not set
1058# CONFIG_MFD_WM831X is not set
1059# CONFIG_MFD_WM8350_I2C is not set
1060# CONFIG_MFD_PCF50633 is not set
1061# CONFIG_MFD_MC13783 is not set
1062# CONFIG_AB3100_CORE is not set
1063# CONFIG_EZX_PCAP is not set
1064# CONFIG_REGULATOR is not set
1065# CONFIG_MEDIA_SUPPORT is not set
1066
1067#
1068# Graphics support
1069#
1070# CONFIG_VGASTATE is not set
1071# CONFIG_VIDEO_OUTPUT_CONTROL is not set
1072CONFIG_FB=y
1073# CONFIG_FIRMWARE_EDID is not set
1074# CONFIG_FB_DDC is not set
1075# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1076CONFIG_FB_CFB_FILLRECT=y
1077CONFIG_FB_CFB_COPYAREA=y
1078CONFIG_FB_CFB_IMAGEBLIT=y
1079# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1080# CONFIG_FB_SYS_FILLRECT is not set
1081# CONFIG_FB_SYS_COPYAREA is not set
1082# CONFIG_FB_SYS_IMAGEBLIT is not set
1083# CONFIG_FB_FOREIGN_ENDIAN is not set
1084# CONFIG_FB_SYS_FOPS is not set
1085# CONFIG_FB_SVGALIB is not set
1086# CONFIG_FB_MACMODES is not set
1087# CONFIG_FB_BACKLIGHT is not set
1088# CONFIG_FB_MODE_HELPERS is not set
1089# CONFIG_FB_TILEBLITTING is not set
1090
1091#
1092# Frame buffer hardware drivers
1093#
1094# CONFIG_FB_BFIN_T350MCQB is not set
1095CONFIG_FB_BFIN_LQ035Q1=y
1096# CONFIG_FB_BFIN_7393 is not set
1097# CONFIG_FB_S1D13XXX is not set
1098# CONFIG_FB_VIRTUAL is not set
1099# CONFIG_FB_METRONOME is not set
1100# CONFIG_FB_MB862XX is not set
1101# CONFIG_FB_BROADSHEET is not set
1102CONFIG_BACKLIGHT_LCD_SUPPORT=y
1103CONFIG_LCD_CLASS_DEVICE=m
1104# CONFIG_LCD_LMS283GF05 is not set
1105# CONFIG_LCD_LTV350QV is not set
1106# CONFIG_LCD_ILI9320 is not set
1107# CONFIG_LCD_TDO24M is not set
1108# CONFIG_LCD_VGG2432A4 is not set
1109# CONFIG_LCD_PLATFORM is not set
1110CONFIG_BACKLIGHT_CLASS_DEVICE=m
1111CONFIG_BACKLIGHT_GENERIC=m
1112# CONFIG_BACKLIGHT_ADP5520 is not set
1113# CONFIG_BACKLIGHT_ADP8870 is not set
1114
1115#
1116# Display device support
1117#
1118# CONFIG_DISPLAY_SUPPORT is not set
1119
1120#
1121# Console display driver support
1122#
1123CONFIG_DUMMY_CONSOLE=y
1124CONFIG_FRAMEBUFFER_CONSOLE=y
1125# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
1126# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
1127# CONFIG_FONTS is not set
1128CONFIG_FONT_8x8=y
1129CONFIG_FONT_8x16=y
1130CONFIG_LOGO=y
1131# CONFIG_LOGO_LINUX_MONO is not set
1132# CONFIG_LOGO_LINUX_VGA16 is not set
1133# CONFIG_LOGO_LINUX_CLUT224 is not set
1134# CONFIG_LOGO_BLACKFIN_VGA16 is not set
1135CONFIG_LOGO_BLACKFIN_CLUT224=y
1136CONFIG_SOUND=m
1137# CONFIG_SOUND_OSS_CORE is not set
1138CONFIG_SND=m
1139CONFIG_SND_TIMER=m
1140CONFIG_SND_PCM=m
1141CONFIG_SND_JACK=y
1142# CONFIG_SND_SEQUENCER is not set
1143# CONFIG_SND_MIXER_OSS is not set
1144# CONFIG_SND_PCM_OSS is not set
1145# CONFIG_SND_DYNAMIC_MINORS is not set
1146CONFIG_SND_SUPPORT_OLD_API=y
1147CONFIG_SND_VERBOSE_PROCFS=y
1148# CONFIG_SND_VERBOSE_PRINTK is not set
1149# CONFIG_SND_DEBUG is not set
1150# CONFIG_SND_RAWMIDI_SEQ is not set
1151# CONFIG_SND_OPL3_LIB_SEQ is not set
1152# CONFIG_SND_OPL4_LIB_SEQ is not set
1153# CONFIG_SND_SBAWE_SEQ is not set
1154# CONFIG_SND_EMU10K1_SEQ is not set
1155CONFIG_SND_DRIVERS=y
1156# CONFIG_SND_DUMMY is not set
1157# CONFIG_SND_MTPAV is not set
1158# CONFIG_SND_SERIAL_U16550 is not set
1159# CONFIG_SND_MPU401 is not set
1160CONFIG_SND_SPI=y
1161
1162#
1163# ALSA Blackfin devices
1164#
1165# CONFIG_SND_BFIN_AD73322 is not set
1166CONFIG_SND_USB=y
1167# CONFIG_SND_USB_AUDIO is not set
1168# CONFIG_SND_USB_CAIAQ is not set
1169CONFIG_SND_SOC=m
1170CONFIG_SND_SOC_AC97_BUS=y
1171CONFIG_SND_BF5XX_I2S=m
1172CONFIG_SND_BF5XX_SOC_SSM2602=m
1173# CONFIG_SND_BF5XX_SOC_AD73311 is not set
1174# CONFIG_SND_BF5XX_SOC_ADAU1371 is not set
1175# CONFIG_SND_BF5XX_SOC_ADAU1761 is not set
1176# CONFIG_SND_BF5XX_TDM is not set
1177CONFIG_SND_BF5XX_AC97=m
1178CONFIG_SND_BF5XX_MMAP_SUPPORT=y
1179# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set
1180# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
1181CONFIG_SND_BF5XX_SOC_AD1980=m
1182CONFIG_SND_BF5XX_SOC_SPORT=m
1183CONFIG_SND_BF5XX_SOC_I2S=m
1184CONFIG_SND_BF5XX_SOC_AC97=m
1185CONFIG_SND_BF5XX_SPORT_NUM=0
1186CONFIG_SND_SOC_I2C_AND_SPI=m
1187# CONFIG_SND_SOC_ALL_CODECS is not set
1188CONFIG_SND_SOC_AD1980=m
1189CONFIG_SND_SOC_SSM2602=m
1190# CONFIG_SOUND_PRIME is not set
1191CONFIG_AC97_BUS=m
1192CONFIG_HID_SUPPORT=y
1193CONFIG_HID=y
1194# CONFIG_HIDRAW is not set
1195
1196#
1197# USB Input Devices
1198#
1199CONFIG_USB_HID=y
1200# CONFIG_HID_PID is not set
1201# CONFIG_USB_HIDDEV is not set
1202
1203#
1204# Special HID drivers
1205#
1206CONFIG_HID_A4TECH=y
1207CONFIG_HID_APPLE=y
1208CONFIG_HID_BELKIN=y
1209CONFIG_HID_CHERRY=y
1210CONFIG_HID_CHICONY=y
1211CONFIG_HID_CYPRESS=y
1212# CONFIG_HID_DRAGONRISE is not set
1213CONFIG_HID_EZKEY=y
1214# CONFIG_HID_KYE is not set
1215CONFIG_HID_GYRATION=y
1216# CONFIG_HID_TWINHAN is not set
1217# CONFIG_HID_KENSINGTON is not set
1218CONFIG_HID_LOGITECH=y
1219# CONFIG_LOGITECH_FF is not set
1220# CONFIG_LOGIRUMBLEPAD2_FF is not set
1221CONFIG_HID_MICROSOFT=y
1222CONFIG_HID_MONTEREY=y
1223# CONFIG_HID_NTRIG is not set
1224CONFIG_HID_PANTHERLORD=y
1225# CONFIG_PANTHERLORD_FF is not set
1226CONFIG_HID_PETALYNX=y
1227CONFIG_HID_SAMSUNG=y
1228CONFIG_HID_SONY=y
1229CONFIG_HID_SUNPLUS=y
1230# CONFIG_HID_GREENASIA is not set
1231# CONFIG_HID_SMARTJOYPLUS is not set
1232# CONFIG_HID_TOPSEED is not set
1233# CONFIG_HID_THRUSTMASTER is not set
1234# CONFIG_HID_ZEROPLUS is not set
1235CONFIG_USB_SUPPORT=y
1236CONFIG_USB_ARCH_HAS_HCD=y
1237# CONFIG_USB_ARCH_HAS_OHCI is not set
1238# CONFIG_USB_ARCH_HAS_EHCI is not set
1239CONFIG_USB=y
1240# CONFIG_USB_DEBUG is not set
1241# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1242
1243#
1244# Miscellaneous USB options
1245#
1246CONFIG_USB_DEVICEFS=y
1247# CONFIG_USB_DEVICE_CLASS is not set
1248# CONFIG_USB_DYNAMIC_MINORS is not set
1249# CONFIG_USB_OTG is not set
1250# CONFIG_USB_OTG_WHITELIST is not set
1251CONFIG_USB_OTG_BLACKLIST_HUB=y
1252CONFIG_USB_MON=y
1253# CONFIG_USB_WUSB is not set
1254# CONFIG_USB_WUSB_CBAF is not set
1255
1256#
1257# USB Host Controller Drivers
1258#
1259# CONFIG_USB_C67X00_HCD is not set
1260# CONFIG_USB_OXU210HP_HCD is not set
1261# CONFIG_USB_ISP116X_HCD is not set
1262# CONFIG_USB_ISP1760_HCD is not set
1263# CONFIG_USB_ISP1362_HCD is not set
1264# CONFIG_USB_SL811_HCD is not set
1265# CONFIG_USB_R8A66597_HCD is not set
1266# CONFIG_USB_HWA_HCD is not set
1267CONFIG_USB_MUSB_HDRC=y
1268CONFIG_USB_MUSB_SOC=y
1269
1270#
1271# Blackfin high speed USB Support
1272#
1273CONFIG_USB_MUSB_HOST=y
1274# CONFIG_USB_MUSB_PERIPHERAL is not set
1275# CONFIG_USB_MUSB_OTG is not set
1276CONFIG_USB_MUSB_HDRC_HCD=y
1277# CONFIG_MUSB_PIO_ONLY is not set
1278CONFIG_USB_INVENTRA_DMA=y
1279# CONFIG_USB_TI_CPPI_DMA is not set
1280# CONFIG_USB_MUSB_DEBUG is not set
1281
1282#
1283# USB Device Class drivers
1284#
1285# CONFIG_USB_ACM is not set
1286# CONFIG_USB_PRINTER is not set
1287# CONFIG_USB_WDM is not set
1288# CONFIG_USB_TMC is not set
1289
1290#
1291# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1292#
1293
1294#
1295# also be needed; see USB_STORAGE Help for more info
1296#
1297CONFIG_USB_STORAGE=y
1298# CONFIG_USB_STORAGE_DEBUG is not set
1299# CONFIG_USB_STORAGE_DATAFAB is not set
1300# CONFIG_USB_STORAGE_FREECOM is not set
1301# CONFIG_USB_STORAGE_ISD200 is not set
1302# CONFIG_USB_STORAGE_USBAT is not set
1303# CONFIG_USB_STORAGE_SDDR09 is not set
1304# CONFIG_USB_STORAGE_SDDR55 is not set
1305# CONFIG_USB_STORAGE_JUMPSHOT is not set
1306# CONFIG_USB_STORAGE_ALAUDA is not set
1307# CONFIG_USB_STORAGE_ONETOUCH is not set
1308# CONFIG_USB_STORAGE_KARMA is not set
1309# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1310# CONFIG_USB_LIBUSUAL is not set
1311
1312#
1313# USB Imaging devices
1314#
1315# CONFIG_USB_MDC800 is not set
1316# CONFIG_USB_MICROTEK is not set
1317
1318#
1319# USB port drivers
1320#
1321# CONFIG_USB_SERIAL is not set
1322
1323#
1324# USB Miscellaneous drivers
1325#
1326# CONFIG_USB_EMI62 is not set
1327# CONFIG_USB_EMI26 is not set
1328# CONFIG_USB_ADUTUX is not set
1329# CONFIG_USB_SEVSEG is not set
1330# CONFIG_USB_RIO500 is not set
1331# CONFIG_USB_LEGOTOWER is not set
1332# CONFIG_USB_LCD is not set
1333# CONFIG_USB_BERRY_CHARGE is not set
1334# CONFIG_USB_LED is not set
1335# CONFIG_USB_CYPRESS_CY7C63 is not set
1336# CONFIG_USB_CYTHERM is not set
1337# CONFIG_USB_IDMOUSE is not set
1338# CONFIG_USB_FTDI_ELAN is not set
1339# CONFIG_USB_APPLEDISPLAY is not set
1340# CONFIG_USB_SISUSBVGA is not set
1341# CONFIG_USB_LD is not set
1342# CONFIG_USB_TRANCEVIBRATOR is not set
1343# CONFIG_USB_IOWARRIOR is not set
1344# CONFIG_USB_TEST is not set
1345# CONFIG_USB_ISIGHTFW is not set
1346# CONFIG_USB_VST is not set
1347# CONFIG_USB_GADGET is not set
1348
1349#
1350# OTG and related infrastructure
1351#
1352CONFIG_USB_OTG_UTILS=y
1353# CONFIG_USB_GPIO_VBUS is not set
1354CONFIG_NOP_USB_XCEIV=y
1355# CONFIG_MMC is not set
1356# CONFIG_MEMSTICK is not set
1357CONFIG_NEW_LEDS=y
1358CONFIG_LEDS_CLASS=y
1359
1360#
1361# LED drivers
1362#
1363# CONFIG_LEDS_PCA9532 is not set
1364# CONFIG_LEDS_GPIO is not set
1365# CONFIG_LEDS_LP3944 is not set
1366# CONFIG_LEDS_PCA955X is not set
1367# CONFIG_LEDS_DAC124S085 is not set
1368# CONFIG_LEDS_BD2802 is not set
1369CONFIG_LEDS_ADP5520=y
1370
1371#
1372# LED Triggers
1373#
1374# CONFIG_LEDS_TRIGGERS is not set
1375# CONFIG_ACCESSIBILITY is not set
1376CONFIG_RTC_LIB=y
1377CONFIG_RTC_CLASS=y
1378CONFIG_RTC_HCTOSYS=y
1379CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1380# CONFIG_RTC_DEBUG is not set
1381
1382#
1383# RTC interfaces
1384#
1385CONFIG_RTC_INTF_SYSFS=y
1386CONFIG_RTC_INTF_PROC=y
1387CONFIG_RTC_INTF_DEV=y
1388# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1389# CONFIG_RTC_DRV_TEST is not set
1390
1391#
1392# I2C RTC drivers
1393#
1394# CONFIG_RTC_DRV_DS1307 is not set
1395# CONFIG_RTC_DRV_DS1374 is not set
1396# CONFIG_RTC_DRV_DS1672 is not set
1397# CONFIG_RTC_DRV_MAX6900 is not set
1398# CONFIG_RTC_DRV_RS5C372 is not set
1399# CONFIG_RTC_DRV_ISL1208 is not set
1400# CONFIG_RTC_DRV_X1205 is not set
1401# CONFIG_RTC_DRV_PCF8563 is not set
1402# CONFIG_RTC_DRV_PCF8583 is not set
1403# CONFIG_RTC_DRV_M41T80 is not set
1404# CONFIG_RTC_DRV_S35390A is not set
1405# CONFIG_RTC_DRV_FM3130 is not set
1406# CONFIG_RTC_DRV_RX8581 is not set
1407# CONFIG_RTC_DRV_RX8025 is not set
1408
1409#
1410# SPI RTC drivers
1411#
1412# CONFIG_RTC_DRV_M41T94 is not set
1413# CONFIG_RTC_DRV_DS1305 is not set
1414# CONFIG_RTC_DRV_DS1390 is not set
1415# CONFIG_RTC_DRV_MAX6902 is not set
1416# CONFIG_RTC_DRV_R9701 is not set
1417# CONFIG_RTC_DRV_RS5C348 is not set
1418# CONFIG_RTC_DRV_DS3234 is not set
1419# CONFIG_RTC_DRV_PCF2123 is not set
1420
1421#
1422# Platform RTC drivers
1423#
1424# CONFIG_RTC_DRV_DS1286 is not set
1425# CONFIG_RTC_DRV_DS1511 is not set
1426# CONFIG_RTC_DRV_DS1553 is not set
1427# CONFIG_RTC_DRV_DS1742 is not set
1428# CONFIG_RTC_DRV_STK17TA8 is not set
1429# CONFIG_RTC_DRV_M48T86 is not set
1430# CONFIG_RTC_DRV_M48T35 is not set
1431# CONFIG_RTC_DRV_M48T59 is not set
1432# CONFIG_RTC_DRV_BQ4802 is not set
1433# CONFIG_RTC_DRV_V3020 is not set
1434
1435#
1436# on-CPU RTC drivers
1437#
1438CONFIG_RTC_DRV_BFIN=y
1439# CONFIG_DMADEVICES is not set
1440# CONFIG_AUXDISPLAY is not set
1441# CONFIG_UIO is not set
1442
1443#
1444# TI VLYNQ
1445#
1446# CONFIG_STAGING is not set
1447
1448#
1449# Firmware Drivers
1450#
1451# CONFIG_FIRMWARE_MEMMAP is not set
1452# CONFIG_SIGMA is not set
1453
1454#
1455# File systems
1456#
1457CONFIG_EXT2_FS=m
1458# CONFIG_EXT2_FS_XATTR is not set
1459# CONFIG_EXT3_FS is not set
1460# CONFIG_EXT4_FS is not set
1461# CONFIG_REISERFS_FS is not set
1462# CONFIG_JFS_FS is not set
1463# CONFIG_FS_POSIX_ACL is not set
1464# CONFIG_XFS_FS is not set
1465# CONFIG_GFS2_FS is not set
1466# CONFIG_OCFS2_FS is not set
1467# CONFIG_BTRFS_FS is not set
1468# CONFIG_NILFS2_FS is not set
1469CONFIG_FILE_LOCKING=y
1470CONFIG_FSNOTIFY=y
1471# CONFIG_DNOTIFY is not set
1472CONFIG_INOTIFY=y
1473CONFIG_INOTIFY_USER=y
1474# CONFIG_QUOTA is not set
1475# CONFIG_AUTOFS_FS is not set
1476# CONFIG_AUTOFS4_FS is not set
1477# CONFIG_FUSE_FS is not set
1478
1479#
1480# Caches
1481#
1482# CONFIG_FSCACHE is not set
1483
1484#
1485# CD-ROM/DVD Filesystems
1486#
1487CONFIG_ISO9660_FS=m
1488CONFIG_JOLIET=y
1489# CONFIG_ZISOFS is not set
1490CONFIG_UDF_FS=m
1491CONFIG_UDF_NLS=y
1492
1493#
1494# DOS/FAT/NT Filesystems
1495#
1496CONFIG_FAT_FS=m
1497# CONFIG_MSDOS_FS is not set
1498CONFIG_VFAT_FS=m
1499CONFIG_FAT_DEFAULT_CODEPAGE=437
1500CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1501# CONFIG_NTFS_FS is not set
1502
1503#
1504# Pseudo filesystems
1505#
1506CONFIG_PROC_FS=y
1507CONFIG_PROC_SYSCTL=y
1508CONFIG_SYSFS=y
1509# CONFIG_HUGETLB_PAGE is not set
1510# CONFIG_CONFIGFS_FS is not set
1511CONFIG_MISC_FILESYSTEMS=y
1512# CONFIG_ADFS_FS is not set
1513# CONFIG_AFFS_FS is not set
1514# CONFIG_HFS_FS is not set
1515# CONFIG_HFSPLUS_FS is not set
1516# CONFIG_BEFS_FS is not set
1517# CONFIG_BFS_FS is not set
1518# CONFIG_EFS_FS is not set
1519CONFIG_JFFS2_FS=m
1520CONFIG_JFFS2_FS_DEBUG=0
1521CONFIG_JFFS2_FS_WRITEBUFFER=y
1522# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1523# CONFIG_JFFS2_SUMMARY is not set
1524# CONFIG_JFFS2_FS_XATTR is not set
1525# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1526CONFIG_JFFS2_ZLIB=y
1527# CONFIG_JFFS2_LZO is not set
1528CONFIG_JFFS2_RTIME=y
1529# CONFIG_JFFS2_RUBIN is not set
1530# CONFIG_CRAMFS is not set
1531# CONFIG_SQUASHFS is not set
1532# CONFIG_VXFS_FS is not set
1533# CONFIG_MINIX_FS is not set
1534# CONFIG_OMFS_FS is not set
1535# CONFIG_HPFS_FS is not set
1536# CONFIG_QNX4FS_FS is not set
1537# CONFIG_ROMFS_FS is not set
1538# CONFIG_SYSV_FS is not set
1539# CONFIG_UFS_FS is not set
1540CONFIG_NETWORK_FILESYSTEMS=y
1541CONFIG_NFS_FS=m
1542CONFIG_NFS_V3=y
1543# CONFIG_NFS_V3_ACL is not set
1544# CONFIG_NFS_V4 is not set
1545# CONFIG_NFSD is not set
1546CONFIG_LOCKD=m
1547CONFIG_LOCKD_V4=y
1548CONFIG_NFS_COMMON=y
1549CONFIG_SUNRPC=m
1550# CONFIG_RPCSEC_GSS_KRB5 is not set
1551# CONFIG_RPCSEC_GSS_SPKM3 is not set
1552CONFIG_SMB_FS=m
1553# CONFIG_SMB_NLS_DEFAULT is not set
1554# CONFIG_CIFS is not set
1555# CONFIG_NCP_FS is not set
1556# CONFIG_CODA_FS is not set
1557# CONFIG_AFS_FS is not set
1558
1559#
1560# Partition Types
1561#
1562# CONFIG_PARTITION_ADVANCED is not set
1563CONFIG_MSDOS_PARTITION=y
1564CONFIG_NLS=y
1565CONFIG_NLS_DEFAULT="iso8859-1"
1566CONFIG_NLS_CODEPAGE_437=m
1567# CONFIG_NLS_CODEPAGE_737 is not set
1568# CONFIG_NLS_CODEPAGE_775 is not set
1569# CONFIG_NLS_CODEPAGE_850 is not set
1570# CONFIG_NLS_CODEPAGE_852 is not set
1571# CONFIG_NLS_CODEPAGE_855 is not set
1572# CONFIG_NLS_CODEPAGE_857 is not set
1573# CONFIG_NLS_CODEPAGE_860 is not set
1574# CONFIG_NLS_CODEPAGE_861 is not set
1575# CONFIG_NLS_CODEPAGE_862 is not set
1576# CONFIG_NLS_CODEPAGE_863 is not set
1577# CONFIG_NLS_CODEPAGE_864 is not set
1578# CONFIG_NLS_CODEPAGE_865 is not set
1579# CONFIG_NLS_CODEPAGE_866 is not set
1580# CONFIG_NLS_CODEPAGE_869 is not set
1581CONFIG_NLS_CODEPAGE_936=m
1582# CONFIG_NLS_CODEPAGE_950 is not set
1583# CONFIG_NLS_CODEPAGE_932 is not set
1584# CONFIG_NLS_CODEPAGE_949 is not set
1585# CONFIG_NLS_CODEPAGE_874 is not set
1586# CONFIG_NLS_ISO8859_8 is not set
1587# CONFIG_NLS_CODEPAGE_1250 is not set
1588# CONFIG_NLS_CODEPAGE_1251 is not set
1589# CONFIG_NLS_ASCII is not set
1590CONFIG_NLS_ISO8859_1=m
1591# CONFIG_NLS_ISO8859_2 is not set
1592# CONFIG_NLS_ISO8859_3 is not set
1593# CONFIG_NLS_ISO8859_4 is not set
1594# CONFIG_NLS_ISO8859_5 is not set
1595# CONFIG_NLS_ISO8859_6 is not set
1596# CONFIG_NLS_ISO8859_7 is not set
1597# CONFIG_NLS_ISO8859_9 is not set
1598# CONFIG_NLS_ISO8859_13 is not set
1599# CONFIG_NLS_ISO8859_14 is not set
1600# CONFIG_NLS_ISO8859_15 is not set
1601# CONFIG_NLS_KOI8_R is not set
1602# CONFIG_NLS_KOI8_U is not set
1603CONFIG_NLS_UTF8=m
1604# CONFIG_DLM is not set
1605
1606#
1607# Kernel hacking
1608#
1609# CONFIG_PRINTK_TIME is not set
1610CONFIG_ENABLE_WARN_DEPRECATED=y
1611CONFIG_ENABLE_MUST_CHECK=y
1612CONFIG_FRAME_WARN=1024
1613# CONFIG_MAGIC_SYSRQ is not set
1614# CONFIG_STRIP_ASM_SYMS is not set
1615# CONFIG_UNUSED_SYMBOLS is not set
1616CONFIG_DEBUG_FS=y
1617# CONFIG_HEADERS_CHECK is not set
1618CONFIG_DEBUG_SECTION_MISMATCH=y
1619CONFIG_DEBUG_KERNEL=y
1620CONFIG_DEBUG_SHIRQ=y
1621CONFIG_DETECT_SOFTLOCKUP=y
1622# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1623CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1624CONFIG_DETECT_HUNG_TASK=y
1625# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1626CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1627CONFIG_SCHED_DEBUG=y
1628# CONFIG_SCHEDSTATS is not set
1629# CONFIG_TIMER_STATS is not set
1630# CONFIG_DEBUG_OBJECTS is not set
1631# CONFIG_DEBUG_SLAB is not set
1632# CONFIG_DEBUG_SPINLOCK is not set
1633# CONFIG_DEBUG_MUTEXES is not set
1634# CONFIG_DEBUG_LOCK_ALLOC is not set
1635# CONFIG_PROVE_LOCKING is not set
1636# CONFIG_LOCK_STAT is not set
1637# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1638# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1639# CONFIG_DEBUG_KOBJECT is not set
1640CONFIG_DEBUG_BUGVERBOSE=y
1641CONFIG_DEBUG_INFO=y
1642# CONFIG_DEBUG_VM is not set
1643# CONFIG_DEBUG_NOMMU_REGIONS is not set
1644# CONFIG_DEBUG_WRITECOUNT is not set
1645# CONFIG_DEBUG_MEMORY_INIT is not set
1646# CONFIG_DEBUG_LIST is not set
1647# CONFIG_DEBUG_SG is not set
1648# CONFIG_DEBUG_NOTIFIERS is not set
1649# CONFIG_DEBUG_CREDENTIALS is not set
1650# CONFIG_FRAME_POINTER is not set
1651# CONFIG_BOOT_PRINTK_DELAY is not set
1652# CONFIG_RCU_TORTURE_TEST is not set
1653# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1654# CONFIG_BACKTRACE_SELF_TEST is not set
1655# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1656# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1657# CONFIG_FAULT_INJECTION is not set
1658# CONFIG_PAGE_POISONING is not set
1659CONFIG_HAVE_FUNCTION_TRACER=y
1660CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1661CONFIG_TRACING_SUPPORT=y
1662# CONFIG_FTRACE is not set
1663# CONFIG_BRANCH_PROFILE_NONE is not set
1664# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1665# CONFIG_PROFILE_ALL_BRANCHES is not set
1666# CONFIG_DYNAMIC_DEBUG is not set
1667# CONFIG_SAMPLES is not set
1668CONFIG_HAVE_ARCH_KGDB=y
1669# CONFIG_KGDB is not set
1670# CONFIG_DEBUG_STACKOVERFLOW is not set
1671# CONFIG_DEBUG_STACK_USAGE is not set
1672CONFIG_DEBUG_VERBOSE=y
1673CONFIG_DEBUG_MMRS=y
1674CONFIG_DEBUG_HWERR=y
1675CONFIG_EXACT_HWERR=y
1676CONFIG_DEBUG_DOUBLEFAULT=y
1677CONFIG_DEBUG_DOUBLEFAULT_PRINT=y
1678# CONFIG_DEBUG_DOUBLEFAULT_RESET is not set
1679# CONFIG_DEBUG_ICACHE_CHECK is not set
1680CONFIG_DEBUG_HUNT_FOR_ZERO=y
1681CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1682# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF is not set
1683CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE=y
1684# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1685CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=1
1686# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1687CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1688CONFIG_EARLY_PRINTK=y
1689CONFIG_CPLB_INFO=y
1690CONFIG_ACCESS_CHECK=y
1691# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1692
1693#
1694# Security options
1695#
1696# CONFIG_KEYS is not set
1697CONFIG_SECURITY=y
1698# CONFIG_SECURITYFS is not set
1699# CONFIG_SECURITY_NETWORK is not set
1700# CONFIG_SECURITY_PATH is not set
1701# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1702# CONFIG_SECURITY_ROOTPLUG is not set
1703# CONFIG_SECURITY_TOMOYO is not set
1704CONFIG_CRYPTO=y
1705
1706#
1707# Crypto core or helper
1708#
1709# CONFIG_CRYPTO_MANAGER is not set
1710# CONFIG_CRYPTO_MANAGER2 is not set
1711# CONFIG_CRYPTO_GF128MUL is not set
1712# CONFIG_CRYPTO_NULL is not set
1713# CONFIG_CRYPTO_CRYPTD is not set
1714# CONFIG_CRYPTO_AUTHENC is not set
1715# CONFIG_CRYPTO_TEST is not set
1716
1717#
1718# Authenticated Encryption with Associated Data
1719#
1720# CONFIG_CRYPTO_CCM is not set
1721# CONFIG_CRYPTO_GCM is not set
1722# CONFIG_CRYPTO_SEQIV is not set
1723
1724#
1725# Block modes
1726#
1727# CONFIG_CRYPTO_CBC is not set
1728# CONFIG_CRYPTO_CTR is not set
1729# CONFIG_CRYPTO_CTS is not set
1730# CONFIG_CRYPTO_ECB is not set
1731# CONFIG_CRYPTO_LRW is not set
1732# CONFIG_CRYPTO_PCBC is not set
1733# CONFIG_CRYPTO_XTS is not set
1734
1735#
1736# Hash modes
1737#
1738# CONFIG_CRYPTO_HMAC is not set
1739# CONFIG_CRYPTO_XCBC is not set
1740# CONFIG_CRYPTO_VMAC is not set
1741
1742#
1743# Digest
1744#
1745# CONFIG_CRYPTO_CRC32C is not set
1746# CONFIG_CRYPTO_GHASH is not set
1747# CONFIG_CRYPTO_MD4 is not set
1748# CONFIG_CRYPTO_MD5 is not set
1749# CONFIG_CRYPTO_MICHAEL_MIC is not set
1750# CONFIG_CRYPTO_RMD128 is not set
1751# CONFIG_CRYPTO_RMD160 is not set
1752# CONFIG_CRYPTO_RMD256 is not set
1753# CONFIG_CRYPTO_RMD320 is not set
1754# CONFIG_CRYPTO_SHA1 is not set
1755# CONFIG_CRYPTO_SHA256 is not set
1756# CONFIG_CRYPTO_SHA512 is not set
1757# CONFIG_CRYPTO_TGR192 is not set
1758# CONFIG_CRYPTO_WP512 is not set
1759
1760#
1761# Ciphers
1762#
1763# CONFIG_CRYPTO_AES is not set
1764# CONFIG_CRYPTO_ANUBIS is not set
1765# CONFIG_CRYPTO_ARC4 is not set
1766# CONFIG_CRYPTO_BLOWFISH is not set
1767# CONFIG_CRYPTO_CAMELLIA is not set
1768# CONFIG_CRYPTO_CAST5 is not set
1769# CONFIG_CRYPTO_CAST6 is not set
1770# CONFIG_CRYPTO_DES is not set
1771# CONFIG_CRYPTO_FCRYPT is not set
1772# CONFIG_CRYPTO_KHAZAD is not set
1773# CONFIG_CRYPTO_SALSA20 is not set
1774# CONFIG_CRYPTO_SEED is not set
1775# CONFIG_CRYPTO_SERPENT is not set
1776# CONFIG_CRYPTO_TEA is not set
1777# CONFIG_CRYPTO_TWOFISH is not set
1778
1779#
1780# Compression
1781#
1782# CONFIG_CRYPTO_DEFLATE is not set
1783# CONFIG_CRYPTO_ZLIB is not set
1784# CONFIG_CRYPTO_LZO is not set
1785
1786#
1787# Random Number Generation
1788#
1789# CONFIG_CRYPTO_ANSI_CPRNG is not set
1790CONFIG_CRYPTO_HW=y
1791# CONFIG_BINARY_PRINTF is not set
1792
1793#
1794# Library routines
1795#
1796CONFIG_BITREVERSE=y
1797CONFIG_GENERIC_FIND_LAST_BIT=y
1798CONFIG_CRC_CCITT=m
1799# CONFIG_CRC16 is not set
1800# CONFIG_CRC_T10DIF is not set
1801CONFIG_CRC_ITU_T=m
1802CONFIG_CRC32=y
1803# CONFIG_CRC7 is not set
1804# CONFIG_LIBCRC32C is not set
1805CONFIG_ZLIB_INFLATE=y
1806CONFIG_ZLIB_DEFLATE=m
1807CONFIG_DECOMPRESS_GZIP=y
1808CONFIG_HAS_IOMEM=y
1809CONFIG_HAS_IOPORT=y
1810CONFIG_HAS_DMA=y
1811CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig
index 6d1a623fb149..edbb44d26bbf 100644
--- a/arch/blackfin/configs/BF527-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF527-EZKIT_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="anticipatory" 132CONFIG_DEFAULT_IOSCHED="anticipatory"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,29 +160,28 @@ CONFIG_BF527=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=0 174CONFIG_BF_REV_MIN=0
147CONFIG_BF_REV_MAX=2 175CONFIG_BF_REV_MAX=2
148# CONFIG_BF_REV_0_0 is not set 176# CONFIG_BF_REV_0_0 is not set
149# CONFIG_BF_REV_0_1 is not set 177CONFIG_BF_REV_0_1=y
150CONFIG_BF_REV_0_2=y 178# CONFIG_BF_REV_0_2 is not set
151# CONFIG_BF_REV_0_3 is not set 179# CONFIG_BF_REV_0_3 is not set
152# CONFIG_BF_REV_0_4 is not set 180# CONFIG_BF_REV_0_4 is not set
153# CONFIG_BF_REV_0_5 is not set 181# CONFIG_BF_REV_0_5 is not set
154# CONFIG_BF_REV_0_6 is not set 182# CONFIG_BF_REV_0_6 is not set
155# CONFIG_BF_REV_ANY is not set 183# CONFIG_BF_REV_ANY is not set
156# CONFIG_BF_REV_NONE is not set 184# CONFIG_BF_REV_NONE is not set
157CONFIG_BF52x=y
158CONFIG_MEM_MT48LC32M16A2TG_75=y 185CONFIG_MEM_MT48LC32M16A2TG_75=y
159CONFIG_IRQ_PLL_WAKEUP=7 186CONFIG_IRQ_PLL_WAKEUP=7
160CONFIG_IRQ_DMA0_ERROR=7 187CONFIG_IRQ_DMA0_ERROR=7
@@ -200,7 +227,9 @@ CONFIG_IRQ_MEM_DMA1=13
200CONFIG_IRQ_WATCH=13 227CONFIG_IRQ_WATCH=13
201CONFIG_IRQ_PORTF_INTA=13 228CONFIG_IRQ_PORTF_INTA=13
202CONFIG_IRQ_PORTF_INTB=13 229CONFIG_IRQ_PORTF_INTB=13
230CONFIG_BF52x=y
203CONFIG_BFIN527_EZKIT=y 231CONFIG_BFIN527_EZKIT=y
232# CONFIG_BFIN527_EZKIT_V2 is not set
204# CONFIG_BFIN527_BLUETECHNIX_CM is not set 233# CONFIG_BFIN527_BLUETECHNIX_CM is not set
205# CONFIG_BFIN526_EZBRD is not set 234# CONFIG_BFIN526_EZBRD is not set
206 235
@@ -318,7 +347,6 @@ CONFIG_FLATMEM=y
318CONFIG_FLAT_NODE_MEM_MAP=y 347CONFIG_FLAT_NODE_MEM_MAP=y
319CONFIG_PAGEFLAGS_EXTENDED=y 348CONFIG_PAGEFLAGS_EXTENDED=y
320CONFIG_SPLIT_PTLOCK_CPUS=4 349CONFIG_SPLIT_PTLOCK_CPUS=4
321# CONFIG_RESOURCES_64BIT is not set
322# CONFIG_PHYS_ADDR_T_64BIT is not set 350# CONFIG_PHYS_ADDR_T_64BIT is not set
323CONFIG_ZONE_DMA_FLAG=1 351CONFIG_ZONE_DMA_FLAG=1
324CONFIG_VIRT_TO_BUS=y 352CONFIG_VIRT_TO_BUS=y
@@ -327,16 +355,18 @@ CONFIG_BFIN_GPTIMERS=y
327# CONFIG_DMA_UNCACHED_4M is not set 355# CONFIG_DMA_UNCACHED_4M is not set
328# CONFIG_DMA_UNCACHED_2M is not set 356# CONFIG_DMA_UNCACHED_2M is not set
329CONFIG_DMA_UNCACHED_1M=y 357CONFIG_DMA_UNCACHED_1M=y
358# CONFIG_DMA_UNCACHED_512K is not set
359# CONFIG_DMA_UNCACHED_256K is not set
360# CONFIG_DMA_UNCACHED_128K is not set
330# CONFIG_DMA_UNCACHED_NONE is not set 361# CONFIG_DMA_UNCACHED_NONE is not set
331 362
332# 363#
333# Cache Support 364# Cache Support
334# 365#
335CONFIG_BFIN_ICACHE=y 366CONFIG_BFIN_ICACHE=y
336# CONFIG_BFIN_ICACHE_LOCK is not set 367CONFIG_BFIN_EXTMEM_ICACHEABLE=y
337CONFIG_BFIN_DCACHE=y 368CONFIG_BFIN_DCACHE=y
338# CONFIG_BFIN_DCACHE_BANKA is not set 369# CONFIG_BFIN_DCACHE_BANKA is not set
339CONFIG_BFIN_EXTMEM_ICACHEABLE=y
340CONFIG_BFIN_EXTMEM_DCACHEABLE=y 370CONFIG_BFIN_EXTMEM_DCACHEABLE=y
341CONFIG_BFIN_EXTMEM_WRITEBACK=y 371CONFIG_BFIN_EXTMEM_WRITEBACK=y
342# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 372# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -347,7 +377,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
347# CONFIG_MPU is not set 377# CONFIG_MPU is not set
348 378
349# 379#
350# Asynchonous Memory Configuration 380# Asynchronous Memory Configuration
351# 381#
352 382
353# 383#
@@ -403,11 +433,6 @@ CONFIG_NET=y
403CONFIG_PACKET=y 433CONFIG_PACKET=y
404# CONFIG_PACKET_MMAP is not set 434# CONFIG_PACKET_MMAP is not set
405CONFIG_UNIX=y 435CONFIG_UNIX=y
406CONFIG_XFRM=y
407# CONFIG_XFRM_USER is not set
408# CONFIG_XFRM_SUB_POLICY is not set
409# CONFIG_XFRM_MIGRATE is not set
410# CONFIG_XFRM_STATISTICS is not set
411# CONFIG_NET_KEY is not set 436# CONFIG_NET_KEY is not set
412CONFIG_INET=y 437CONFIG_INET=y
413# CONFIG_IP_MULTICAST is not set 438# CONFIG_IP_MULTICAST is not set
@@ -431,7 +456,6 @@ CONFIG_IP_PNP=y
431# CONFIG_INET_XFRM_MODE_BEET is not set 456# CONFIG_INET_XFRM_MODE_BEET is not set
432# CONFIG_INET_LRO is not set 457# CONFIG_INET_LRO is not set
433# CONFIG_INET_DIAG is not set 458# CONFIG_INET_DIAG is not set
434CONFIG_INET_TCP_DIAG=y
435# CONFIG_TCP_CONG_ADVANCED is not set 459# CONFIG_TCP_CONG_ADVANCED is not set
436CONFIG_TCP_CONG_CUBIC=y 460CONFIG_TCP_CONG_CUBIC=y
437CONFIG_DEFAULT_TCP_CONG="cubic" 461CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -442,6 +466,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
442# CONFIG_NETFILTER is not set 466# CONFIG_NETFILTER is not set
443# CONFIG_IP_DCCP is not set 467# CONFIG_IP_DCCP is not set
444# CONFIG_IP_SCTP is not set 468# CONFIG_IP_SCTP is not set
469# CONFIG_RDS is not set
445# CONFIG_TIPC is not set 470# CONFIG_TIPC is not set
446# CONFIG_ATM is not set 471# CONFIG_ATM is not set
447# CONFIG_BRIDGE is not set 472# CONFIG_BRIDGE is not set
@@ -455,7 +480,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
455# CONFIG_LAPB is not set 480# CONFIG_LAPB is not set
456# CONFIG_ECONET is not set 481# CONFIG_ECONET is not set
457# CONFIG_WAN_ROUTER is not set 482# CONFIG_WAN_ROUTER is not set
483# CONFIG_PHONET is not set
484# CONFIG_IEEE802154 is not set
458# CONFIG_NET_SCHED is not set 485# CONFIG_NET_SCHED is not set
486# CONFIG_DCB is not set
459 487
460# 488#
461# Network testing 489# Network testing
@@ -508,13 +536,8 @@ CONFIG_SIR_BFIN_DMA=y
508# CONFIG_MCS_FIR is not set 536# CONFIG_MCS_FIR is not set
509# CONFIG_BT is not set 537# CONFIG_BT is not set
510# CONFIG_AF_RXRPC is not set 538# CONFIG_AF_RXRPC is not set
511# CONFIG_PHONET is not set 539# CONFIG_WIRELESS is not set
512CONFIG_WIRELESS=y 540# CONFIG_WIMAX is not set
513# CONFIG_CFG80211 is not set
514CONFIG_WIRELESS_OLD_REGULATORY=y
515# CONFIG_WIRELESS_EXT is not set
516# CONFIG_MAC80211 is not set
517# CONFIG_IEEE80211 is not set
518# CONFIG_RFKILL is not set 541# CONFIG_RFKILL is not set
519# CONFIG_NET_9P is not set 542# CONFIG_NET_9P is not set
520 543
@@ -535,6 +558,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
535# CONFIG_CONNECTOR is not set 558# CONFIG_CONNECTOR is not set
536CONFIG_MTD=y 559CONFIG_MTD=y
537# CONFIG_MTD_DEBUG is not set 560# CONFIG_MTD_DEBUG is not set
561# CONFIG_MTD_TESTS is not set
538# CONFIG_MTD_CONCAT is not set 562# CONFIG_MTD_CONCAT is not set
539CONFIG_MTD_PARTITIONS=y 563CONFIG_MTD_PARTITIONS=y
540# CONFIG_MTD_REDBOOT_PARTS is not set 564# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -593,6 +617,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
593# CONFIG_MTD_DATAFLASH is not set 617# CONFIG_MTD_DATAFLASH is not set
594CONFIG_MTD_M25P80=y 618CONFIG_MTD_M25P80=y
595CONFIG_M25PXX_USE_FAST_READ=y 619CONFIG_M25PXX_USE_FAST_READ=y
620# CONFIG_MTD_SST25L is not set
596# CONFIG_MTD_SLRAM is not set 621# CONFIG_MTD_SLRAM is not set
597# CONFIG_MTD_PHRAM is not set 622# CONFIG_MTD_PHRAM is not set
598# CONFIG_MTD_MTDRAM is not set 623# CONFIG_MTD_MTDRAM is not set
@@ -608,11 +633,6 @@ CONFIG_MTD_NAND=m
608# CONFIG_MTD_NAND_VERIFY_WRITE is not set 633# CONFIG_MTD_NAND_VERIFY_WRITE is not set
609# CONFIG_MTD_NAND_ECC_SMC is not set 634# CONFIG_MTD_NAND_ECC_SMC is not set
610# CONFIG_MTD_NAND_MUSEUM_IDS is not set 635# CONFIG_MTD_NAND_MUSEUM_IDS is not set
611CONFIG_MTD_NAND_BFIN=m
612CONFIG_BFIN_NAND_BASE=0x20212000
613CONFIG_BFIN_NAND_CLE=2
614CONFIG_BFIN_NAND_ALE=1
615CONFIG_BFIN_NAND_READY=3
616CONFIG_MTD_NAND_IDS=m 636CONFIG_MTD_NAND_IDS=m
617# CONFIG_MTD_NAND_BF5XX is not set 637# CONFIG_MTD_NAND_BF5XX is not set
618# CONFIG_MTD_NAND_DISKONCHIP is not set 638# CONFIG_MTD_NAND_DISKONCHIP is not set
@@ -622,6 +642,11 @@ CONFIG_MTD_NAND_IDS=m
622# CONFIG_MTD_ONENAND is not set 642# CONFIG_MTD_ONENAND is not set
623 643
624# 644#
645# LPDDR flash memory drivers
646#
647# CONFIG_MTD_LPDDR is not set
648
649#
625# UBI - Unsorted block images 650# UBI - Unsorted block images
626# 651#
627# CONFIG_MTD_UBI is not set 652# CONFIG_MTD_UBI is not set
@@ -639,10 +664,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
639# CONFIG_ATA_OVER_ETH is not set 664# CONFIG_ATA_OVER_ETH is not set
640# CONFIG_BLK_DEV_HD is not set 665# CONFIG_BLK_DEV_HD is not set
641CONFIG_MISC_DEVICES=y 666CONFIG_MISC_DEVICES=y
642# CONFIG_EEPROM_93CX6 is not set 667# CONFIG_AD525X_DPOT is not set
643# CONFIG_ICS932S401 is not set 668# CONFIG_ICS932S401 is not set
644# CONFIG_ENCLOSURE_SERVICES is not set 669# CONFIG_ENCLOSURE_SERVICES is not set
670# CONFIG_ISL29003 is not set
645# CONFIG_C2PORT is not set 671# CONFIG_C2PORT is not set
672
673#
674# EEPROM support
675#
676# CONFIG_EEPROM_AT24 is not set
677# CONFIG_EEPROM_AT25 is not set
678# CONFIG_EEPROM_LEGACY is not set
679# CONFIG_EEPROM_MAX6875 is not set
680# CONFIG_EEPROM_93CX6 is not set
646CONFIG_HAVE_IDE=y 681CONFIG_HAVE_IDE=y
647# CONFIG_IDE is not set 682# CONFIG_IDE is not set
648 683
@@ -666,10 +701,6 @@ CONFIG_BLK_DEV_SR=m
666# CONFIG_BLK_DEV_SR_VENDOR is not set 701# CONFIG_BLK_DEV_SR_VENDOR is not set
667# CONFIG_CHR_DEV_SG is not set 702# CONFIG_CHR_DEV_SG is not set
668# CONFIG_CHR_DEV_SCH is not set 703# CONFIG_CHR_DEV_SCH is not set
669
670#
671# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
672#
673# CONFIG_SCSI_MULTI_LUN is not set 704# CONFIG_SCSI_MULTI_LUN is not set
674# CONFIG_SCSI_CONSTANTS is not set 705# CONFIG_SCSI_CONSTANTS is not set
675# CONFIG_SCSI_LOGGING is not set 706# CONFIG_SCSI_LOGGING is not set
@@ -686,6 +717,7 @@ CONFIG_SCSI_WAIT_SCAN=m
686# CONFIG_SCSI_SRP_ATTRS is not set 717# CONFIG_SCSI_SRP_ATTRS is not set
687# CONFIG_SCSI_LOWLEVEL is not set 718# CONFIG_SCSI_LOWLEVEL is not set
688# CONFIG_SCSI_DH is not set 719# CONFIG_SCSI_DH is not set
720# CONFIG_SCSI_OSD_INITIATOR is not set
689# CONFIG_ATA is not set 721# CONFIG_ATA is not set
690# CONFIG_MD is not set 722# CONFIG_MD is not set
691CONFIG_NETDEVICES=y 723CONFIG_NETDEVICES=y
@@ -710,6 +742,9 @@ CONFIG_PHYLIB=y
710# CONFIG_BROADCOM_PHY is not set 742# CONFIG_BROADCOM_PHY is not set
711# CONFIG_ICPLUS_PHY is not set 743# CONFIG_ICPLUS_PHY is not set
712# CONFIG_REALTEK_PHY is not set 744# CONFIG_REALTEK_PHY is not set
745# CONFIG_NATIONAL_PHY is not set
746# CONFIG_STE10XP is not set
747# CONFIG_LSI_ET1011C_PHY is not set
713# CONFIG_FIXED_PHY is not set 748# CONFIG_FIXED_PHY is not set
714# CONFIG_MDIO_BITBANG is not set 749# CONFIG_MDIO_BITBANG is not set
715CONFIG_NET_ETHERNET=y 750CONFIG_NET_ETHERNET=y
@@ -720,9 +755,12 @@ CONFIG_BFIN_TX_DESC_NUM=10
720CONFIG_BFIN_RX_DESC_NUM=20 755CONFIG_BFIN_RX_DESC_NUM=20
721CONFIG_BFIN_MAC_RMII=y 756CONFIG_BFIN_MAC_RMII=y
722# CONFIG_SMC91X is not set 757# CONFIG_SMC91X is not set
723# CONFIG_SMSC911X is not set
724# CONFIG_DM9000 is not set 758# CONFIG_DM9000 is not set
725# CONFIG_ENC28J60 is not set 759# CONFIG_ENC28J60 is not set
760# CONFIG_ETHOC is not set
761# CONFIG_SMSC911X is not set
762# CONFIG_DNET is not set
763# CONFIG_ADF702X is not set
726# CONFIG_IBM_NEW_EMAC_ZMII is not set 764# CONFIG_IBM_NEW_EMAC_ZMII is not set
727# CONFIG_IBM_NEW_EMAC_RGMII is not set 765# CONFIG_IBM_NEW_EMAC_RGMII is not set
728# CONFIG_IBM_NEW_EMAC_TAH is not set 766# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -731,15 +769,16 @@ CONFIG_BFIN_MAC_RMII=y
731# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 769# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
732# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 770# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
733# CONFIG_B44 is not set 771# CONFIG_B44 is not set
772# CONFIG_KS8842 is not set
773# CONFIG_KS8851 is not set
774# CONFIG_KS8851_MLL is not set
734# CONFIG_NETDEV_1000 is not set 775# CONFIG_NETDEV_1000 is not set
735# CONFIG_NETDEV_10000 is not set 776# CONFIG_NETDEV_10000 is not set
777# CONFIG_WLAN is not set
736 778
737# 779#
738# Wireless LAN 780# Enable WiMAX (Networking options) to see the WiMAX drivers
739# 781#
740# CONFIG_WLAN_PRE80211 is not set
741# CONFIG_WLAN_80211 is not set
742# CONFIG_IWLWIFI_LEDS is not set
743 782
744# 783#
745# USB Network Adapters 784# USB Network Adapters
@@ -789,7 +828,11 @@ CONFIG_INPUT_MISC=y
789# CONFIG_INPUT_YEALINK is not set 828# CONFIG_INPUT_YEALINK is not set
790# CONFIG_INPUT_CM109 is not set 829# CONFIG_INPUT_CM109 is not set
791# CONFIG_INPUT_UINPUT is not set 830# CONFIG_INPUT_UINPUT is not set
792# CONFIG_CONFIG_INPUT_PCF8574 is not set 831# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
832# CONFIG_INPUT_BFIN_ROTARY is not set
833# CONFIG_INPUT_AD714X is not set
834# CONFIG_INPUT_ADXL34X is not set
835# CONFIG_INPUT_PCF8574 is not set
793 836
794# 837#
795# Hardware I/O ports 838# Hardware I/O ports
@@ -800,16 +843,13 @@ CONFIG_INPUT_MISC=y
800# 843#
801# Character devices 844# Character devices
802# 845#
803# CONFIG_AD9960 is not set
804CONFIG_BFIN_DMA_INTERFACE=m 846CONFIG_BFIN_DMA_INTERFACE=m
805# CONFIG_BFIN_PPI is not set 847# CONFIG_BFIN_PPI is not set
806# CONFIG_BFIN_PPIFCD is not set 848# CONFIG_BFIN_PPIFCD is not set
807# CONFIG_BFIN_SIMPLE_TIMER is not set 849# CONFIG_BFIN_SIMPLE_TIMER is not set
808# CONFIG_BFIN_SPI_ADC is not set 850# CONFIG_BFIN_SPI_ADC is not set
809CONFIG_BFIN_SPORT=m 851CONFIG_BFIN_SPORT=m
810# CONFIG_BFIN_TIMER_LATENCY is not set
811# CONFIG_BFIN_TWI_LCD is not set 852# CONFIG_BFIN_TWI_LCD is not set
812CONFIG_SIMPLE_GPIO=m
813CONFIG_VT=y 853CONFIG_VT=y
814CONFIG_CONSOLE_TRANSLATIONS=y 854CONFIG_CONSOLE_TRANSLATIONS=y
815CONFIG_VT_CONSOLE=y 855CONFIG_VT_CONSOLE=y
@@ -827,6 +867,7 @@ CONFIG_BFIN_JTAG_COMM=m
827# 867#
828# Non-8250 serial port support 868# Non-8250 serial port support
829# 869#
870# CONFIG_SERIAL_MAX3100 is not set
830CONFIG_SERIAL_BFIN=y 871CONFIG_SERIAL_BFIN=y
831CONFIG_SERIAL_BFIN_CONSOLE=y 872CONFIG_SERIAL_BFIN_CONSOLE=y
832CONFIG_SERIAL_BFIN_DMA=y 873CONFIG_SERIAL_BFIN_DMA=y
@@ -838,14 +879,10 @@ CONFIG_SERIAL_CORE=y
838CONFIG_SERIAL_CORE_CONSOLE=y 879CONFIG_SERIAL_CORE_CONSOLE=y
839# CONFIG_SERIAL_BFIN_SPORT is not set 880# CONFIG_SERIAL_BFIN_SPORT is not set
840CONFIG_UNIX98_PTYS=y 881CONFIG_UNIX98_PTYS=y
882# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
841# CONFIG_LEGACY_PTYS is not set 883# CONFIG_LEGACY_PTYS is not set
842CONFIG_BFIN_OTP=y 884CONFIG_BFIN_OTP=y
843# CONFIG_BFIN_OTP_WRITE_ENABLE is not set 885# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
844
845#
846# CAN, the car bus and industrial fieldbus
847#
848# CONFIG_CAN4LINUX is not set
849# CONFIG_IPMI_HANDLER is not set 886# CONFIG_IPMI_HANDLER is not set
850# CONFIG_HW_RANDOM is not set 887# CONFIG_HW_RANDOM is not set
851# CONFIG_R3964 is not set 888# CONFIG_R3964 is not set
@@ -853,6 +890,7 @@ CONFIG_BFIN_OTP=y
853# CONFIG_TCG_TPM is not set 890# CONFIG_TCG_TPM is not set
854CONFIG_I2C=y 891CONFIG_I2C=y
855CONFIG_I2C_BOARDINFO=y 892CONFIG_I2C_BOARDINFO=y
893CONFIG_I2C_COMPAT=y
856CONFIG_I2C_CHARDEV=m 894CONFIG_I2C_CHARDEV=m
857CONFIG_I2C_HELPER_AUTO=y 895CONFIG_I2C_HELPER_AUTO=y
858 896
@@ -886,14 +924,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
886# Miscellaneous I2C Chip support 924# Miscellaneous I2C Chip support
887# 925#
888# CONFIG_DS1682 is not set 926# CONFIG_DS1682 is not set
889# CONFIG_EEPROM_AT24 is not set
890# CONFIG_SENSORS_AD5252 is not set
891# CONFIG_EEPROM_LEGACY is not set
892# CONFIG_SENSORS_PCF8574 is not set
893# CONFIG_PCF8575 is not set
894# CONFIG_SENSORS_PCA9539 is not set
895# CONFIG_SENSORS_PCF8591 is not set
896# CONFIG_SENSORS_MAX6875 is not set
897# CONFIG_SENSORS_TSL2550 is not set 927# CONFIG_SENSORS_TSL2550 is not set
898# CONFIG_I2C_DEBUG_CORE is not set 928# CONFIG_I2C_DEBUG_CORE is not set
899# CONFIG_I2C_DEBUG_ALGO is not set 929# CONFIG_I2C_DEBUG_ALGO is not set
@@ -910,13 +940,18 @@ CONFIG_SPI_BFIN=y
910# CONFIG_SPI_BFIN_LOCK is not set 940# CONFIG_SPI_BFIN_LOCK is not set
911# CONFIG_SPI_BFIN_SPORT is not set 941# CONFIG_SPI_BFIN_SPORT is not set
912# CONFIG_SPI_BITBANG is not set 942# CONFIG_SPI_BITBANG is not set
943# CONFIG_SPI_GPIO is not set
913 944
914# 945#
915# SPI Protocol Masters 946# SPI Protocol Masters
916# 947#
917# CONFIG_EEPROM_AT25 is not set
918# CONFIG_SPI_SPIDEV is not set 948# CONFIG_SPI_SPIDEV is not set
919# CONFIG_SPI_TLE62X0 is not set 949# CONFIG_SPI_TLE62X0 is not set
950
951#
952# PPS support
953#
954# CONFIG_PPS is not set
920CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 955CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
921CONFIG_GPIOLIB=y 956CONFIG_GPIOLIB=y
922# CONFIG_DEBUG_GPIO is not set 957# CONFIG_DEBUG_GPIO is not set
@@ -932,6 +967,7 @@ CONFIG_GPIO_SYSFS=y
932# CONFIG_GPIO_MAX732X is not set 967# CONFIG_GPIO_MAX732X is not set
933# CONFIG_GPIO_PCA953X is not set 968# CONFIG_GPIO_PCA953X is not set
934# CONFIG_GPIO_PCF857X is not set 969# CONFIG_GPIO_PCF857X is not set
970# CONFIG_GPIO_ADP5588 is not set
935 971
936# 972#
937# PCI GPIO expanders: 973# PCI GPIO expanders:
@@ -942,11 +978,15 @@ CONFIG_GPIO_SYSFS=y
942# 978#
943# CONFIG_GPIO_MAX7301 is not set 979# CONFIG_GPIO_MAX7301 is not set
944# CONFIG_GPIO_MCP23S08 is not set 980# CONFIG_GPIO_MCP23S08 is not set
981# CONFIG_GPIO_MC33880 is not set
982
983#
984# AC97 GPIO expanders:
985#
945# CONFIG_W1 is not set 986# CONFIG_W1 is not set
946# CONFIG_POWER_SUPPLY is not set 987# CONFIG_POWER_SUPPLY is not set
947# CONFIG_HWMON is not set 988# CONFIG_HWMON is not set
948# CONFIG_THERMAL is not set 989# CONFIG_THERMAL is not set
949# CONFIG_THERMAL_HWMON is not set
950CONFIG_WATCHDOG=y 990CONFIG_WATCHDOG=y
951# CONFIG_WATCHDOG_NOWAYOUT is not set 991# CONFIG_WATCHDOG_NOWAYOUT is not set
952 992
@@ -973,28 +1013,21 @@ CONFIG_SSB_POSSIBLE=y
973# CONFIG_MFD_CORE is not set 1013# CONFIG_MFD_CORE is not set
974# CONFIG_MFD_SM501 is not set 1014# CONFIG_MFD_SM501 is not set
975# CONFIG_HTC_PASIC3 is not set 1015# CONFIG_HTC_PASIC3 is not set
1016# CONFIG_UCB1400_CORE is not set
1017# CONFIG_TPS65010 is not set
1018# CONFIG_TWL4030_CORE is not set
976# CONFIG_MFD_TMIO is not set 1019# CONFIG_MFD_TMIO is not set
977# CONFIG_PMIC_DA903X is not set 1020# CONFIG_PMIC_DA903X is not set
978# CONFIG_PMIC_ADP5520 is not set 1021# CONFIG_PMIC_ADP5520 is not set
979# CONFIG_MFD_WM8400 is not set 1022# CONFIG_MFD_WM8400 is not set
1023# CONFIG_MFD_WM831X is not set
980# CONFIG_MFD_WM8350_I2C is not set 1024# CONFIG_MFD_WM8350_I2C is not set
1025# CONFIG_MFD_PCF50633 is not set
1026# CONFIG_MFD_MC13783 is not set
1027# CONFIG_AB3100_CORE is not set
1028# CONFIG_EZX_PCAP is not set
981# CONFIG_REGULATOR is not set 1029# CONFIG_REGULATOR is not set
982 1030# CONFIG_MEDIA_SUPPORT is not set
983#
984# Multimedia devices
985#
986
987#
988# Multimedia core support
989#
990# CONFIG_VIDEO_DEV is not set
991# CONFIG_DVB_CORE is not set
992# CONFIG_VIDEO_MEDIA is not set
993
994#
995# Multimedia drivers
996#
997# CONFIG_DAB is not set
998 1031
999# 1032#
1000# Graphics support 1033# Graphics support
@@ -1030,15 +1063,18 @@ CONFIG_FB_BFIN_T350MCQB=y
1030# CONFIG_FB_VIRTUAL is not set 1063# CONFIG_FB_VIRTUAL is not set
1031# CONFIG_FB_METRONOME is not set 1064# CONFIG_FB_METRONOME is not set
1032# CONFIG_FB_MB862XX is not set 1065# CONFIG_FB_MB862XX is not set
1066# CONFIG_FB_BROADSHEET is not set
1033CONFIG_BACKLIGHT_LCD_SUPPORT=y 1067CONFIG_BACKLIGHT_LCD_SUPPORT=y
1034CONFIG_LCD_CLASS_DEVICE=m 1068CONFIG_LCD_CLASS_DEVICE=m
1069# CONFIG_LCD_LMS283GF05 is not set
1035CONFIG_LCD_LTV350QV=m 1070CONFIG_LCD_LTV350QV=m
1036# CONFIG_LCD_ILI9320 is not set 1071# CONFIG_LCD_ILI9320 is not set
1037# CONFIG_LCD_TDO24M is not set 1072# CONFIG_LCD_TDO24M is not set
1038# CONFIG_LCD_VGG2432A4 is not set 1073# CONFIG_LCD_VGG2432A4 is not set
1039# CONFIG_LCD_PLATFORM is not set 1074# CONFIG_LCD_PLATFORM is not set
1040CONFIG_BACKLIGHT_CLASS_DEVICE=m 1075CONFIG_BACKLIGHT_CLASS_DEVICE=m
1041# CONFIG_BACKLIGHT_CORGI is not set 1076CONFIG_BACKLIGHT_GENERIC=m
1077# CONFIG_BACKLIGHT_ADP8870 is not set
1042 1078
1043# 1079#
1044# Display device support 1080# Display device support
@@ -1066,6 +1102,7 @@ CONFIG_SOUND=m
1066CONFIG_SND=m 1102CONFIG_SND=m
1067CONFIG_SND_TIMER=m 1103CONFIG_SND_TIMER=m
1068CONFIG_SND_PCM=m 1104CONFIG_SND_PCM=m
1105CONFIG_SND_JACK=y
1069# CONFIG_SND_SEQUENCER is not set 1106# CONFIG_SND_SEQUENCER is not set
1070# CONFIG_SND_MIXER_OSS is not set 1107# CONFIG_SND_MIXER_OSS is not set
1071# CONFIG_SND_PCM_OSS is not set 1108# CONFIG_SND_PCM_OSS is not set
@@ -1074,6 +1111,11 @@ CONFIG_SND_SUPPORT_OLD_API=y
1074CONFIG_SND_VERBOSE_PROCFS=y 1111CONFIG_SND_VERBOSE_PROCFS=y
1075# CONFIG_SND_VERBOSE_PRINTK is not set 1112# CONFIG_SND_VERBOSE_PRINTK is not set
1076# CONFIG_SND_DEBUG is not set 1113# CONFIG_SND_DEBUG is not set
1114# CONFIG_SND_RAWMIDI_SEQ is not set
1115# CONFIG_SND_OPL3_LIB_SEQ is not set
1116# CONFIG_SND_OPL4_LIB_SEQ is not set
1117# CONFIG_SND_SBAWE_SEQ is not set
1118# CONFIG_SND_EMU10K1_SEQ is not set
1077CONFIG_SND_DRIVERS=y 1119CONFIG_SND_DRIVERS=y
1078# CONFIG_SND_DUMMY is not set 1120# CONFIG_SND_DUMMY is not set
1079# CONFIG_SND_MTPAV is not set 1121# CONFIG_SND_MTPAV is not set
@@ -1084,7 +1126,6 @@ CONFIG_SND_SPI=y
1084# 1126#
1085# ALSA Blackfin devices 1127# ALSA Blackfin devices
1086# 1128#
1087# CONFIG_SND_BLACKFIN_AD1836 is not set
1088# CONFIG_SND_BFIN_AD73322 is not set 1129# CONFIG_SND_BFIN_AD73322 is not set
1089CONFIG_SND_USB=y 1130CONFIG_SND_USB=y
1090# CONFIG_SND_USB_AUDIO is not set 1131# CONFIG_SND_USB_AUDIO is not set
@@ -1094,15 +1135,19 @@ CONFIG_SND_SOC_AC97_BUS=y
1094CONFIG_SND_BF5XX_I2S=m 1135CONFIG_SND_BF5XX_I2S=m
1095CONFIG_SND_BF5XX_SOC_SSM2602=m 1136CONFIG_SND_BF5XX_SOC_SSM2602=m
1096# CONFIG_SND_BF5XX_SOC_AD73311 is not set 1137# CONFIG_SND_BF5XX_SOC_AD73311 is not set
1138# CONFIG_SND_BF5XX_SOC_ADAU1371 is not set
1139# CONFIG_SND_BF5XX_SOC_ADAU1761 is not set
1140# CONFIG_SND_BF5XX_TDM is not set
1097CONFIG_SND_BF5XX_AC97=m 1141CONFIG_SND_BF5XX_AC97=m
1098CONFIG_SND_BF5XX_MMAP_SUPPORT=y 1142CONFIG_SND_BF5XX_MMAP_SUPPORT=y
1099# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set 1143# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set
1144# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
1145CONFIG_SND_BF5XX_SOC_AD1980=m
1100CONFIG_SND_BF5XX_SOC_SPORT=m 1146CONFIG_SND_BF5XX_SOC_SPORT=m
1101CONFIG_SND_BF5XX_SOC_I2S=m 1147CONFIG_SND_BF5XX_SOC_I2S=m
1102CONFIG_SND_BF5XX_SOC_AC97=m 1148CONFIG_SND_BF5XX_SOC_AC97=m
1103CONFIG_SND_BF5XX_SOC_AD1980=m
1104CONFIG_SND_BF5XX_SPORT_NUM=0 1149CONFIG_SND_BF5XX_SPORT_NUM=0
1105# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set 1150CONFIG_SND_SOC_I2C_AND_SPI=m
1106# CONFIG_SND_SOC_ALL_CODECS is not set 1151# CONFIG_SND_SOC_ALL_CODECS is not set
1107CONFIG_SND_SOC_AD1980=m 1152CONFIG_SND_SOC_AD1980=m
1108CONFIG_SND_SOC_SSM2602=m 1153CONFIG_SND_SOC_SSM2602=m
@@ -1110,7 +1155,6 @@ CONFIG_SND_SOC_SSM2602=m
1110CONFIG_AC97_BUS=m 1155CONFIG_AC97_BUS=m
1111CONFIG_HID_SUPPORT=y 1156CONFIG_HID_SUPPORT=y
1112CONFIG_HID=y 1157CONFIG_HID=y
1113# CONFIG_HID_DEBUG is not set
1114# CONFIG_HIDRAW is not set 1158# CONFIG_HIDRAW is not set
1115 1159
1116# 1160#
@@ -1123,30 +1167,35 @@ CONFIG_USB_HID=y
1123# 1167#
1124# Special HID drivers 1168# Special HID drivers
1125# 1169#
1126CONFIG_HID_COMPAT=y
1127CONFIG_HID_A4TECH=y 1170CONFIG_HID_A4TECH=y
1128CONFIG_HID_APPLE=y 1171CONFIG_HID_APPLE=y
1129CONFIG_HID_BELKIN=y 1172CONFIG_HID_BELKIN=y
1130CONFIG_HID_BRIGHT=y
1131CONFIG_HID_CHERRY=y 1173CONFIG_HID_CHERRY=y
1132CONFIG_HID_CHICONY=y 1174CONFIG_HID_CHICONY=y
1133CONFIG_HID_CYPRESS=y 1175CONFIG_HID_CYPRESS=y
1134CONFIG_HID_DELL=y 1176# CONFIG_HID_DRAGONRISE is not set
1135CONFIG_HID_EZKEY=y 1177CONFIG_HID_EZKEY=y
1178# CONFIG_HID_KYE is not set
1136CONFIG_HID_GYRATION=y 1179CONFIG_HID_GYRATION=y
1180# CONFIG_HID_TWINHAN is not set
1181# CONFIG_HID_KENSINGTON is not set
1137CONFIG_HID_LOGITECH=y 1182CONFIG_HID_LOGITECH=y
1138# CONFIG_LOGITECH_FF is not set 1183# CONFIG_LOGITECH_FF is not set
1139# CONFIG_LOGIRUMBLEPAD2_FF is not set 1184# CONFIG_LOGIRUMBLEPAD2_FF is not set
1140CONFIG_HID_MICROSOFT=y 1185CONFIG_HID_MICROSOFT=y
1141CONFIG_HID_MONTEREY=y 1186CONFIG_HID_MONTEREY=y
1187# CONFIG_HID_NTRIG is not set
1142CONFIG_HID_PANTHERLORD=y 1188CONFIG_HID_PANTHERLORD=y
1143# CONFIG_PANTHERLORD_FF is not set 1189# CONFIG_PANTHERLORD_FF is not set
1144CONFIG_HID_PETALYNX=y 1190CONFIG_HID_PETALYNX=y
1145CONFIG_HID_SAMSUNG=y 1191CONFIG_HID_SAMSUNG=y
1146CONFIG_HID_SONY=y 1192CONFIG_HID_SONY=y
1147CONFIG_HID_SUNPLUS=y 1193CONFIG_HID_SUNPLUS=y
1148CONFIG_THRUSTMASTER_FF=m 1194# CONFIG_HID_GREENASIA is not set
1149CONFIG_ZEROPLUS_FF=m 1195# CONFIG_HID_SMARTJOYPLUS is not set
1196# CONFIG_HID_TOPSEED is not set
1197# CONFIG_HID_THRUSTMASTER is not set
1198# CONFIG_HID_ZEROPLUS is not set
1150CONFIG_USB_SUPPORT=y 1199CONFIG_USB_SUPPORT=y
1151CONFIG_USB_ARCH_HAS_HCD=y 1200CONFIG_USB_ARCH_HAS_HCD=y
1152# CONFIG_USB_ARCH_HAS_OHCI is not set 1201# CONFIG_USB_ARCH_HAS_OHCI is not set
@@ -1172,6 +1221,7 @@ CONFIG_USB_MON=y
1172# USB Host Controller Drivers 1221# USB Host Controller Drivers
1173# 1222#
1174# CONFIG_USB_C67X00_HCD is not set 1223# CONFIG_USB_C67X00_HCD is not set
1224# CONFIG_USB_OXU210HP_HCD is not set
1175# CONFIG_USB_ISP116X_HCD is not set 1225# CONFIG_USB_ISP116X_HCD is not set
1176# CONFIG_USB_ISP1760_HCD is not set 1226# CONFIG_USB_ISP1760_HCD is not set
1177# CONFIG_USB_ISP1362_HCD is not set 1227# CONFIG_USB_ISP1362_HCD is not set
@@ -1188,9 +1238,7 @@ CONFIG_USB_MUSB_HOST=y
1188# CONFIG_USB_MUSB_PERIPHERAL is not set 1238# CONFIG_USB_MUSB_PERIPHERAL is not set
1189# CONFIG_USB_MUSB_OTG is not set 1239# CONFIG_USB_MUSB_OTG is not set
1190CONFIG_USB_MUSB_HDRC_HCD=y 1240CONFIG_USB_MUSB_HDRC_HCD=y
1191# CONFIG_MUSB_PIO_ONLY is not set 1241CONFIG_MUSB_PIO_ONLY=y
1192CONFIG_USB_INVENTRA_DMA=y
1193# CONFIG_USB_TI_CPPI_DMA is not set
1194# CONFIG_USB_MUSB_DEBUG is not set 1242# CONFIG_USB_MUSB_DEBUG is not set
1195 1243
1196# 1244#
@@ -1202,18 +1250,17 @@ CONFIG_USB_INVENTRA_DMA=y
1202# CONFIG_USB_TMC is not set 1250# CONFIG_USB_TMC is not set
1203 1251
1204# 1252#
1205# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1253# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1206# 1254#
1207 1255
1208# 1256#
1209# see USB_STORAGE Help for more information 1257# also be needed; see USB_STORAGE Help for more info
1210# 1258#
1211CONFIG_USB_STORAGE=y 1259CONFIG_USB_STORAGE=y
1212# CONFIG_USB_STORAGE_DEBUG is not set 1260# CONFIG_USB_STORAGE_DEBUG is not set
1213# CONFIG_USB_STORAGE_DATAFAB is not set 1261# CONFIG_USB_STORAGE_DATAFAB is not set
1214# CONFIG_USB_STORAGE_FREECOM is not set 1262# CONFIG_USB_STORAGE_FREECOM is not set
1215# CONFIG_USB_STORAGE_ISD200 is not set 1263# CONFIG_USB_STORAGE_ISD200 is not set
1216# CONFIG_USB_STORAGE_DPCM is not set
1217# CONFIG_USB_STORAGE_USBAT is not set 1264# CONFIG_USB_STORAGE_USBAT is not set
1218# CONFIG_USB_STORAGE_SDDR09 is not set 1265# CONFIG_USB_STORAGE_SDDR09 is not set
1219# CONFIG_USB_STORAGE_SDDR55 is not set 1266# CONFIG_USB_STORAGE_SDDR55 is not set
@@ -1249,7 +1296,6 @@ CONFIG_USB_STORAGE=y
1249# CONFIG_USB_LED is not set 1296# CONFIG_USB_LED is not set
1250# CONFIG_USB_CYPRESS_CY7C63 is not set 1297# CONFIG_USB_CYPRESS_CY7C63 is not set
1251# CONFIG_USB_CYTHERM is not set 1298# CONFIG_USB_CYTHERM is not set
1252# CONFIG_USB_PHIDGET is not set
1253# CONFIG_USB_IDMOUSE is not set 1299# CONFIG_USB_IDMOUSE is not set
1254# CONFIG_USB_FTDI_ELAN is not set 1300# CONFIG_USB_FTDI_ELAN is not set
1255# CONFIG_USB_APPLEDISPLAY is not set 1301# CONFIG_USB_APPLEDISPLAY is not set
@@ -1261,6 +1307,13 @@ CONFIG_USB_STORAGE=y
1261# CONFIG_USB_ISIGHTFW is not set 1307# CONFIG_USB_ISIGHTFW is not set
1262# CONFIG_USB_VST is not set 1308# CONFIG_USB_VST is not set
1263# CONFIG_USB_GADGET is not set 1309# CONFIG_USB_GADGET is not set
1310
1311#
1312# OTG and related infrastructure
1313#
1314CONFIG_USB_OTG_UTILS=y
1315# CONFIG_USB_GPIO_VBUS is not set
1316CONFIG_NOP_USB_XCEIV=y
1264# CONFIG_MMC is not set 1317# CONFIG_MMC is not set
1265# CONFIG_MEMSTICK is not set 1318# CONFIG_MEMSTICK is not set
1266# CONFIG_NEW_LEDS is not set 1319# CONFIG_NEW_LEDS is not set
@@ -1296,6 +1349,7 @@ CONFIG_RTC_INTF_DEV=y
1296# CONFIG_RTC_DRV_S35390A is not set 1349# CONFIG_RTC_DRV_S35390A is not set
1297# CONFIG_RTC_DRV_FM3130 is not set 1350# CONFIG_RTC_DRV_FM3130 is not set
1298# CONFIG_RTC_DRV_RX8581 is not set 1351# CONFIG_RTC_DRV_RX8581 is not set
1352# CONFIG_RTC_DRV_RX8025 is not set
1299 1353
1300# 1354#
1301# SPI RTC drivers 1355# SPI RTC drivers
@@ -1307,6 +1361,7 @@ CONFIG_RTC_INTF_DEV=y
1307# CONFIG_RTC_DRV_R9701 is not set 1361# CONFIG_RTC_DRV_R9701 is not set
1308# CONFIG_RTC_DRV_RS5C348 is not set 1362# CONFIG_RTC_DRV_RS5C348 is not set
1309# CONFIG_RTC_DRV_DS3234 is not set 1363# CONFIG_RTC_DRV_DS3234 is not set
1364# CONFIG_RTC_DRV_PCF2123 is not set
1310 1365
1311# 1366#
1312# Platform RTC drivers 1367# Platform RTC drivers
@@ -1327,10 +1382,21 @@ CONFIG_RTC_INTF_DEV=y
1327# 1382#
1328CONFIG_RTC_DRV_BFIN=y 1383CONFIG_RTC_DRV_BFIN=y
1329# CONFIG_DMADEVICES is not set 1384# CONFIG_DMADEVICES is not set
1385# CONFIG_AUXDISPLAY is not set
1330# CONFIG_UIO is not set 1386# CONFIG_UIO is not set
1387
1388#
1389# TI VLYNQ
1390#
1331# CONFIG_STAGING is not set 1391# CONFIG_STAGING is not set
1332 1392
1333# 1393#
1394# Firmware Drivers
1395#
1396# CONFIG_FIRMWARE_MEMMAP is not set
1397# CONFIG_SIGMA is not set
1398
1399#
1334# File systems 1400# File systems
1335# 1401#
1336CONFIG_EXT2_FS=m 1402CONFIG_EXT2_FS=m
@@ -1340,9 +1406,13 @@ CONFIG_EXT2_FS=m
1340# CONFIG_REISERFS_FS is not set 1406# CONFIG_REISERFS_FS is not set
1341# CONFIG_JFS_FS is not set 1407# CONFIG_JFS_FS is not set
1342# CONFIG_FS_POSIX_ACL is not set 1408# CONFIG_FS_POSIX_ACL is not set
1343CONFIG_FILE_LOCKING=y
1344# CONFIG_XFS_FS is not set 1409# CONFIG_XFS_FS is not set
1410# CONFIG_GFS2_FS is not set
1345# CONFIG_OCFS2_FS is not set 1411# CONFIG_OCFS2_FS is not set
1412# CONFIG_BTRFS_FS is not set
1413# CONFIG_NILFS2_FS is not set
1414CONFIG_FILE_LOCKING=y
1415CONFIG_FSNOTIFY=y
1346# CONFIG_DNOTIFY is not set 1416# CONFIG_DNOTIFY is not set
1347CONFIG_INOTIFY=y 1417CONFIG_INOTIFY=y
1348CONFIG_INOTIFY_USER=y 1418CONFIG_INOTIFY_USER=y
@@ -1352,6 +1422,11 @@ CONFIG_INOTIFY_USER=y
1352# CONFIG_FUSE_FS is not set 1422# CONFIG_FUSE_FS is not set
1353 1423
1354# 1424#
1425# Caches
1426#
1427# CONFIG_FSCACHE is not set
1428
1429#
1355# CD-ROM/DVD Filesystems 1430# CD-ROM/DVD Filesystems
1356# 1431#
1357CONFIG_ISO9660_FS=m 1432CONFIG_ISO9660_FS=m
@@ -1376,13 +1451,9 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1376CONFIG_PROC_FS=y 1451CONFIG_PROC_FS=y
1377CONFIG_PROC_SYSCTL=y 1452CONFIG_PROC_SYSCTL=y
1378CONFIG_SYSFS=y 1453CONFIG_SYSFS=y
1379# CONFIG_TMPFS is not set
1380# CONFIG_HUGETLB_PAGE is not set 1454# CONFIG_HUGETLB_PAGE is not set
1381# CONFIG_CONFIGFS_FS is not set 1455# CONFIG_CONFIGFS_FS is not set
1382 1456CONFIG_MISC_FILESYSTEMS=y
1383#
1384# Miscellaneous filesystems
1385#
1386# CONFIG_ADFS_FS is not set 1457# CONFIG_ADFS_FS is not set
1387# CONFIG_AFFS_FS is not set 1458# CONFIG_AFFS_FS is not set
1388# CONFIG_HFS_FS is not set 1459# CONFIG_HFS_FS is not set
@@ -1401,17 +1472,8 @@ CONFIG_JFFS2_ZLIB=y
1401# CONFIG_JFFS2_LZO is not set 1472# CONFIG_JFFS2_LZO is not set
1402CONFIG_JFFS2_RTIME=y 1473CONFIG_JFFS2_RTIME=y
1403# CONFIG_JFFS2_RUBIN is not set 1474# CONFIG_JFFS2_RUBIN is not set
1404CONFIG_YAFFS_FS=m
1405CONFIG_YAFFS_YAFFS1=y
1406# CONFIG_YAFFS_9BYTE_TAGS is not set
1407# CONFIG_YAFFS_DOES_ECC is not set
1408CONFIG_YAFFS_YAFFS2=y
1409CONFIG_YAFFS_AUTO_YAFFS2=y
1410# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1411# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1412# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1413CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1414# CONFIG_CRAMFS is not set 1475# CONFIG_CRAMFS is not set
1476# CONFIG_SQUASHFS is not set
1415# CONFIG_VXFS_FS is not set 1477# CONFIG_VXFS_FS is not set
1416# CONFIG_MINIX_FS is not set 1478# CONFIG_MINIX_FS is not set
1417# CONFIG_OMFS_FS is not set 1479# CONFIG_OMFS_FS is not set
@@ -1430,7 +1492,6 @@ CONFIG_LOCKD=m
1430CONFIG_LOCKD_V4=y 1492CONFIG_LOCKD_V4=y
1431CONFIG_NFS_COMMON=y 1493CONFIG_NFS_COMMON=y
1432CONFIG_SUNRPC=m 1494CONFIG_SUNRPC=m
1433# CONFIG_SUNRPC_REGISTER_V4 is not set
1434# CONFIG_RPCSEC_GSS_KRB5 is not set 1495# CONFIG_RPCSEC_GSS_KRB5 is not set
1435# CONFIG_RPCSEC_GSS_SPKM3 is not set 1496# CONFIG_RPCSEC_GSS_SPKM3 is not set
1436CONFIG_SMB_FS=m 1497CONFIG_SMB_FS=m
@@ -1445,7 +1506,7 @@ CONFIG_SMB_FS=m
1445# 1506#
1446# CONFIG_PARTITION_ADVANCED is not set 1507# CONFIG_PARTITION_ADVANCED is not set
1447CONFIG_MSDOS_PARTITION=y 1508CONFIG_MSDOS_PARTITION=y
1448CONFIG_NLS=m 1509CONFIG_NLS=y
1449CONFIG_NLS_DEFAULT="iso8859-1" 1510CONFIG_NLS_DEFAULT="iso8859-1"
1450CONFIG_NLS_CODEPAGE_437=m 1511CONFIG_NLS_CODEPAGE_437=m
1451# CONFIG_NLS_CODEPAGE_737 is not set 1512# CONFIG_NLS_CODEPAGE_737 is not set
@@ -1495,14 +1556,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1495CONFIG_ENABLE_MUST_CHECK=y 1556CONFIG_ENABLE_MUST_CHECK=y
1496CONFIG_FRAME_WARN=1024 1557CONFIG_FRAME_WARN=1024
1497# CONFIG_MAGIC_SYSRQ is not set 1558# CONFIG_MAGIC_SYSRQ is not set
1559# CONFIG_STRIP_ASM_SYMS is not set
1498# CONFIG_UNUSED_SYMBOLS is not set 1560# CONFIG_UNUSED_SYMBOLS is not set
1499CONFIG_DEBUG_FS=y 1561CONFIG_DEBUG_FS=y
1500# CONFIG_HEADERS_CHECK is not set 1562# CONFIG_HEADERS_CHECK is not set
1563CONFIG_DEBUG_SECTION_MISMATCH=y
1501CONFIG_DEBUG_KERNEL=y 1564CONFIG_DEBUG_KERNEL=y
1502CONFIG_DEBUG_SHIRQ=y 1565CONFIG_DEBUG_SHIRQ=y
1503CONFIG_DETECT_SOFTLOCKUP=y 1566CONFIG_DETECT_SOFTLOCKUP=y
1504# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1567# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1505CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1568CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1569CONFIG_DETECT_HUNG_TASK=y
1570# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1571CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1506CONFIG_SCHED_DEBUG=y 1572CONFIG_SCHED_DEBUG=y
1507# CONFIG_SCHEDSTATS is not set 1573# CONFIG_SCHEDSTATS is not set
1508# CONFIG_TIMER_STATS is not set 1574# CONFIG_TIMER_STATS is not set
@@ -1510,31 +1576,39 @@ CONFIG_SCHED_DEBUG=y
1510# CONFIG_DEBUG_SLAB is not set 1576# CONFIG_DEBUG_SLAB is not set
1511# CONFIG_DEBUG_SPINLOCK is not set 1577# CONFIG_DEBUG_SPINLOCK is not set
1512# CONFIG_DEBUG_MUTEXES is not set 1578# CONFIG_DEBUG_MUTEXES is not set
1579# CONFIG_DEBUG_LOCK_ALLOC is not set
1580# CONFIG_PROVE_LOCKING is not set
1581# CONFIG_LOCK_STAT is not set
1513# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1582# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1514# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1583# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1515# CONFIG_DEBUG_KOBJECT is not set 1584# CONFIG_DEBUG_KOBJECT is not set
1516CONFIG_DEBUG_BUGVERBOSE=y 1585CONFIG_DEBUG_BUGVERBOSE=y
1517CONFIG_DEBUG_INFO=y 1586CONFIG_DEBUG_INFO=y
1518# CONFIG_DEBUG_VM is not set 1587# CONFIG_DEBUG_VM is not set
1588# CONFIG_DEBUG_NOMMU_REGIONS is not set
1519# CONFIG_DEBUG_WRITECOUNT is not set 1589# CONFIG_DEBUG_WRITECOUNT is not set
1520# CONFIG_DEBUG_MEMORY_INIT is not set 1590# CONFIG_DEBUG_MEMORY_INIT is not set
1521# CONFIG_DEBUG_LIST is not set 1591# CONFIG_DEBUG_LIST is not set
1522# CONFIG_DEBUG_SG is not set 1592# CONFIG_DEBUG_SG is not set
1593# CONFIG_DEBUG_NOTIFIERS is not set
1594# CONFIG_DEBUG_CREDENTIALS is not set
1523# CONFIG_FRAME_POINTER is not set 1595# CONFIG_FRAME_POINTER is not set
1524# CONFIG_BOOT_PRINTK_DELAY is not set 1596# CONFIG_BOOT_PRINTK_DELAY is not set
1525# CONFIG_RCU_TORTURE_TEST is not set 1597# CONFIG_RCU_TORTURE_TEST is not set
1526# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1598# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1527# CONFIG_BACKTRACE_SELF_TEST is not set 1599# CONFIG_BACKTRACE_SELF_TEST is not set
1528# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1600# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1601# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1529# CONFIG_FAULT_INJECTION is not set 1602# CONFIG_FAULT_INJECTION is not set
1530 1603# CONFIG_PAGE_POISONING is not set
1531# 1604CONFIG_HAVE_FUNCTION_TRACER=y
1532# Tracers 1605CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1533# 1606CONFIG_TRACING_SUPPORT=y
1534# CONFIG_SCHED_TRACER is not set 1607# CONFIG_FTRACE is not set
1535# CONFIG_CONTEXT_SWITCH_TRACER is not set 1608# CONFIG_BRANCH_PROFILE_NONE is not set
1536# CONFIG_BOOT_TRACER is not set 1609# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1537# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1610# CONFIG_PROFILE_ALL_BRANCHES is not set
1611# CONFIG_DYNAMIC_DEBUG is not set
1538# CONFIG_SAMPLES is not set 1612# CONFIG_SAMPLES is not set
1539CONFIG_HAVE_ARCH_KGDB=y 1613CONFIG_HAVE_ARCH_KGDB=y
1540# CONFIG_KGDB is not set 1614# CONFIG_KGDB is not set
@@ -1559,6 +1633,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1559CONFIG_EARLY_PRINTK=y 1633CONFIG_EARLY_PRINTK=y
1560CONFIG_CPLB_INFO=y 1634CONFIG_CPLB_INFO=y
1561CONFIG_ACCESS_CHECK=y 1635CONFIG_ACCESS_CHECK=y
1636# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1562 1637
1563# 1638#
1564# Security options 1639# Security options
@@ -1567,15 +1642,15 @@ CONFIG_ACCESS_CHECK=y
1567CONFIG_SECURITY=y 1642CONFIG_SECURITY=y
1568# CONFIG_SECURITYFS is not set 1643# CONFIG_SECURITYFS is not set
1569# CONFIG_SECURITY_NETWORK is not set 1644# CONFIG_SECURITY_NETWORK is not set
1645# CONFIG_SECURITY_PATH is not set
1570# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1646# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1571# CONFIG_SECURITY_ROOTPLUG is not set 1647# CONFIG_SECURITY_ROOTPLUG is not set
1572CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1648# CONFIG_SECURITY_TOMOYO is not set
1573CONFIG_CRYPTO=y 1649CONFIG_CRYPTO=y
1574 1650
1575# 1651#
1576# Crypto core or helper 1652# Crypto core or helper
1577# 1653#
1578# CONFIG_CRYPTO_FIPS is not set
1579# CONFIG_CRYPTO_MANAGER is not set 1654# CONFIG_CRYPTO_MANAGER is not set
1580# CONFIG_CRYPTO_MANAGER2 is not set 1655# CONFIG_CRYPTO_MANAGER2 is not set
1581# CONFIG_CRYPTO_GF128MUL is not set 1656# CONFIG_CRYPTO_GF128MUL is not set
@@ -1607,11 +1682,13 @@ CONFIG_CRYPTO=y
1607# 1682#
1608# CONFIG_CRYPTO_HMAC is not set 1683# CONFIG_CRYPTO_HMAC is not set
1609# CONFIG_CRYPTO_XCBC is not set 1684# CONFIG_CRYPTO_XCBC is not set
1685# CONFIG_CRYPTO_VMAC is not set
1610 1686
1611# 1687#
1612# Digest 1688# Digest
1613# 1689#
1614# CONFIG_CRYPTO_CRC32C is not set 1690# CONFIG_CRYPTO_CRC32C is not set
1691# CONFIG_CRYPTO_GHASH is not set
1615# CONFIG_CRYPTO_MD4 is not set 1692# CONFIG_CRYPTO_MD4 is not set
1616# CONFIG_CRYPTO_MD5 is not set 1693# CONFIG_CRYPTO_MD5 is not set
1617# CONFIG_CRYPTO_MICHAEL_MIC is not set 1694# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1648,6 +1725,7 @@ CONFIG_CRYPTO=y
1648# Compression 1725# Compression
1649# 1726#
1650# CONFIG_CRYPTO_DEFLATE is not set 1727# CONFIG_CRYPTO_DEFLATE is not set
1728# CONFIG_CRYPTO_ZLIB is not set
1651# CONFIG_CRYPTO_LZO is not set 1729# CONFIG_CRYPTO_LZO is not set
1652 1730
1653# 1731#
@@ -1655,11 +1733,13 @@ CONFIG_CRYPTO=y
1655# 1733#
1656# CONFIG_CRYPTO_ANSI_CPRNG is not set 1734# CONFIG_CRYPTO_ANSI_CPRNG is not set
1657CONFIG_CRYPTO_HW=y 1735CONFIG_CRYPTO_HW=y
1736# CONFIG_BINARY_PRINTF is not set
1658 1737
1659# 1738#
1660# Library routines 1739# Library routines
1661# 1740#
1662CONFIG_BITREVERSE=y 1741CONFIG_BITREVERSE=y
1742CONFIG_GENERIC_FIND_LAST_BIT=y
1663CONFIG_CRC_CCITT=m 1743CONFIG_CRC_CCITT=m
1664# CONFIG_CRC16 is not set 1744# CONFIG_CRC16 is not set
1665# CONFIG_CRC_T10DIF is not set 1745# CONFIG_CRC_T10DIF is not set
@@ -1669,6 +1749,8 @@ CONFIG_CRC32=y
1669# CONFIG_LIBCRC32C is not set 1749# CONFIG_LIBCRC32C is not set
1670CONFIG_ZLIB_INFLATE=y 1750CONFIG_ZLIB_INFLATE=y
1671CONFIG_ZLIB_DEFLATE=m 1751CONFIG_ZLIB_DEFLATE=m
1752CONFIG_DECOMPRESS_GZIP=y
1672CONFIG_HAS_IOMEM=y 1753CONFIG_HAS_IOMEM=y
1673CONFIG_HAS_IOPORT=y 1754CONFIG_HAS_IOPORT=y
1674CONFIG_HAS_DMA=y 1755CONFIG_HAS_DMA=y
1756CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig
index 50f9a23ccdbd..0b13d5836a48 100644
--- a/arch/blackfin/configs/BF533-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF533-EZKIT_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="anticipatory" 132CONFIG_DEFAULT_IOSCHED="anticipatory"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_BF533=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=3 174CONFIG_BF_REV_MIN=3
@@ -228,7 +256,7 @@ CONFIG_GENERIC_TIME=y
228CONFIG_GENERIC_CLOCKEVENTS=y 256CONFIG_GENERIC_CLOCKEVENTS=y
229# CONFIG_TICKSOURCE_GPTMR0 is not set 257# CONFIG_TICKSOURCE_GPTMR0 is not set
230CONFIG_TICKSOURCE_CORETMR=y 258CONFIG_TICKSOURCE_CORETMR=y
231# CONFIG_CYCLES_CLOCKSOURCE is not set 259CONFIG_CYCLES_CLOCKSOURCE=y
232# CONFIG_GPTMR0_CLOCKSOURCE is not set 260# CONFIG_GPTMR0_CLOCKSOURCE is not set
233CONFIG_TICK_ONESHOT=y 261CONFIG_TICK_ONESHOT=y
234# CONFIG_NO_HZ is not set 262# CONFIG_NO_HZ is not set
@@ -280,7 +308,6 @@ CONFIG_FLATMEM=y
280CONFIG_FLAT_NODE_MEM_MAP=y 308CONFIG_FLAT_NODE_MEM_MAP=y
281CONFIG_PAGEFLAGS_EXTENDED=y 309CONFIG_PAGEFLAGS_EXTENDED=y
282CONFIG_SPLIT_PTLOCK_CPUS=4 310CONFIG_SPLIT_PTLOCK_CPUS=4
283# CONFIG_RESOURCES_64BIT is not set
284# CONFIG_PHYS_ADDR_T_64BIT is not set 311# CONFIG_PHYS_ADDR_T_64BIT is not set
285CONFIG_ZONE_DMA_FLAG=1 312CONFIG_ZONE_DMA_FLAG=1
286CONFIG_VIRT_TO_BUS=y 313CONFIG_VIRT_TO_BUS=y
@@ -289,19 +316,18 @@ CONFIG_BFIN_GPTIMERS=m
289# CONFIG_DMA_UNCACHED_4M is not set 316# CONFIG_DMA_UNCACHED_4M is not set
290# CONFIG_DMA_UNCACHED_2M is not set 317# CONFIG_DMA_UNCACHED_2M is not set
291CONFIG_DMA_UNCACHED_1M=y 318CONFIG_DMA_UNCACHED_1M=y
319# CONFIG_DMA_UNCACHED_512K is not set
320# CONFIG_DMA_UNCACHED_256K is not set
321# CONFIG_DMA_UNCACHED_128K is not set
292# CONFIG_DMA_UNCACHED_NONE is not set 322# CONFIG_DMA_UNCACHED_NONE is not set
293 323
294# 324#
295# Cache Support 325# Cache Support
296# 326#
297#
298# Cache Support
299#
300CONFIG_BFIN_ICACHE=y 327CONFIG_BFIN_ICACHE=y
301# CONFIG_BFIN_ICACHE_LOCK is not set 328CONFIG_BFIN_EXTMEM_ICACHEABLE=y
302CONFIG_BFIN_DCACHE=y 329CONFIG_BFIN_DCACHE=y
303# CONFIG_BFIN_DCACHE_BANKA is not set 330# CONFIG_BFIN_DCACHE_BANKA is not set
304CONFIG_BFIN_EXTMEM_ICACHEABLE=y
305CONFIG_BFIN_EXTMEM_DCACHEABLE=y 331CONFIG_BFIN_EXTMEM_DCACHEABLE=y
306CONFIG_BFIN_EXTMEM_WRITEBACK=y 332CONFIG_BFIN_EXTMEM_WRITEBACK=y
307# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 333# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -312,7 +338,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
312# CONFIG_MPU is not set 338# CONFIG_MPU is not set
313 339
314# 340#
315# Asynchonous Memory Configuration 341# Asynchronous Memory Configuration
316# 342#
317 343
318# 344#
@@ -358,6 +384,7 @@ CONFIG_PM=y
358CONFIG_PM_SLEEP=y 384CONFIG_PM_SLEEP=y
359CONFIG_SUSPEND=y 385CONFIG_SUSPEND=y
360CONFIG_SUSPEND_FREEZER=y 386CONFIG_SUSPEND_FREEZER=y
387# CONFIG_PM_RUNTIME is not set
361CONFIG_ARCH_SUSPEND_POSSIBLE=y 388CONFIG_ARCH_SUSPEND_POSSIBLE=y
362CONFIG_PM_BFIN_SLEEP_DEEPER=y 389CONFIG_PM_BFIN_SLEEP_DEEPER=y
363# CONFIG_PM_BFIN_SLEEP is not set 390# CONFIG_PM_BFIN_SLEEP is not set
@@ -379,11 +406,6 @@ CONFIG_NET=y
379CONFIG_PACKET=y 406CONFIG_PACKET=y
380# CONFIG_PACKET_MMAP is not set 407# CONFIG_PACKET_MMAP is not set
381CONFIG_UNIX=y 408CONFIG_UNIX=y
382CONFIG_XFRM=y
383# CONFIG_XFRM_USER is not set
384# CONFIG_XFRM_SUB_POLICY is not set
385# CONFIG_XFRM_MIGRATE is not set
386# CONFIG_XFRM_STATISTICS is not set
387# CONFIG_NET_KEY is not set 409# CONFIG_NET_KEY is not set
388CONFIG_INET=y 410CONFIG_INET=y
389# CONFIG_IP_MULTICAST is not set 411# CONFIG_IP_MULTICAST is not set
@@ -407,7 +429,6 @@ CONFIG_IP_PNP=y
407# CONFIG_INET_XFRM_MODE_BEET is not set 429# CONFIG_INET_XFRM_MODE_BEET is not set
408# CONFIG_INET_LRO is not set 430# CONFIG_INET_LRO is not set
409# CONFIG_INET_DIAG is not set 431# CONFIG_INET_DIAG is not set
410CONFIG_INET_TCP_DIAG=y
411# CONFIG_TCP_CONG_ADVANCED is not set 432# CONFIG_TCP_CONG_ADVANCED is not set
412CONFIG_TCP_CONG_CUBIC=y 433CONFIG_TCP_CONG_CUBIC=y
413CONFIG_DEFAULT_TCP_CONG="cubic" 434CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -418,6 +439,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
418# CONFIG_NETFILTER is not set 439# CONFIG_NETFILTER is not set
419# CONFIG_IP_DCCP is not set 440# CONFIG_IP_DCCP is not set
420# CONFIG_IP_SCTP is not set 441# CONFIG_IP_SCTP is not set
442# CONFIG_RDS is not set
421# CONFIG_TIPC is not set 443# CONFIG_TIPC is not set
422# CONFIG_ATM is not set 444# CONFIG_ATM is not set
423# CONFIG_BRIDGE is not set 445# CONFIG_BRIDGE is not set
@@ -431,7 +453,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
431# CONFIG_LAPB is not set 453# CONFIG_LAPB is not set
432# CONFIG_ECONET is not set 454# CONFIG_ECONET is not set
433# CONFIG_WAN_ROUTER is not set 455# CONFIG_WAN_ROUTER is not set
456# CONFIG_PHONET is not set
457# CONFIG_IEEE802154 is not set
434# CONFIG_NET_SCHED is not set 458# CONFIG_NET_SCHED is not set
459# CONFIG_DCB is not set
435 460
436# 461#
437# Network testing 462# Network testing
@@ -475,13 +500,8 @@ CONFIG_IRTTY_SIR=m
475# 500#
476# CONFIG_BT is not set 501# CONFIG_BT is not set
477# CONFIG_AF_RXRPC is not set 502# CONFIG_AF_RXRPC is not set
478# CONFIG_PHONET is not set 503# CONFIG_WIRELESS is not set
479CONFIG_WIRELESS=y 504# CONFIG_WIMAX is not set
480# CONFIG_CFG80211 is not set
481CONFIG_WIRELESS_OLD_REGULATORY=y
482# CONFIG_WIRELESS_EXT is not set
483# CONFIG_MAC80211 is not set
484# CONFIG_IEEE80211 is not set
485# CONFIG_RFKILL is not set 505# CONFIG_RFKILL is not set
486# CONFIG_NET_9P is not set 506# CONFIG_NET_9P is not set
487 507
@@ -502,6 +522,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
502# CONFIG_CONNECTOR is not set 522# CONFIG_CONNECTOR is not set
503CONFIG_MTD=y 523CONFIG_MTD=y
504# CONFIG_MTD_DEBUG is not set 524# CONFIG_MTD_DEBUG is not set
525# CONFIG_MTD_TESTS is not set
505# CONFIG_MTD_CONCAT is not set 526# CONFIG_MTD_CONCAT is not set
506CONFIG_MTD_PARTITIONS=y 527CONFIG_MTD_PARTITIONS=y
507# CONFIG_MTD_REDBOOT_PARTS is not set 528# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -559,6 +580,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
559# 580#
560# CONFIG_MTD_DATAFLASH is not set 581# CONFIG_MTD_DATAFLASH is not set
561# CONFIG_MTD_M25P80 is not set 582# CONFIG_MTD_M25P80 is not set
583# CONFIG_MTD_SST25L is not set
562# CONFIG_MTD_SLRAM is not set 584# CONFIG_MTD_SLRAM is not set
563# CONFIG_MTD_PHRAM is not set 585# CONFIG_MTD_PHRAM is not set
564# CONFIG_MTD_MTDRAM is not set 586# CONFIG_MTD_MTDRAM is not set
@@ -574,6 +596,11 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
574# CONFIG_MTD_ONENAND is not set 596# CONFIG_MTD_ONENAND is not set
575 597
576# 598#
599# LPDDR flash memory drivers
600#
601# CONFIG_MTD_LPDDR is not set
602
603#
577# UBI - Unsorted block images 604# UBI - Unsorted block images
578# 605#
579# CONFIG_MTD_UBI is not set 606# CONFIG_MTD_UBI is not set
@@ -590,9 +617,14 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
590# CONFIG_ATA_OVER_ETH is not set 617# CONFIG_ATA_OVER_ETH is not set
591# CONFIG_BLK_DEV_HD is not set 618# CONFIG_BLK_DEV_HD is not set
592CONFIG_MISC_DEVICES=y 619CONFIG_MISC_DEVICES=y
593# CONFIG_EEPROM_93CX6 is not set
594# CONFIG_ENCLOSURE_SERVICES is not set 620# CONFIG_ENCLOSURE_SERVICES is not set
595# CONFIG_C2PORT is not set 621# CONFIG_C2PORT is not set
622
623#
624# EEPROM support
625#
626# CONFIG_EEPROM_AT25 is not set
627# CONFIG_EEPROM_93CX6 is not set
596CONFIG_HAVE_IDE=y 628CONFIG_HAVE_IDE=y
597# CONFIG_IDE is not set 629# CONFIG_IDE is not set
598 630
@@ -616,9 +648,12 @@ CONFIG_NETDEVICES=y
616CONFIG_NET_ETHERNET=y 648CONFIG_NET_ETHERNET=y
617CONFIG_MII=y 649CONFIG_MII=y
618CONFIG_SMC91X=y 650CONFIG_SMC91X=y
619# CONFIG_SMSC911X is not set
620# CONFIG_DM9000 is not set 651# CONFIG_DM9000 is not set
621# CONFIG_ENC28J60 is not set 652# CONFIG_ENC28J60 is not set
653# CONFIG_ETHOC is not set
654# CONFIG_SMSC911X is not set
655# CONFIG_DNET is not set
656# CONFIG_ADF702X is not set
622# CONFIG_IBM_NEW_EMAC_ZMII is not set 657# CONFIG_IBM_NEW_EMAC_ZMII is not set
623# CONFIG_IBM_NEW_EMAC_RGMII is not set 658# CONFIG_IBM_NEW_EMAC_RGMII is not set
624# CONFIG_IBM_NEW_EMAC_TAH is not set 659# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -627,15 +662,16 @@ CONFIG_SMC91X=y
627# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 662# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
628# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 663# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
629# CONFIG_B44 is not set 664# CONFIG_B44 is not set
665# CONFIG_KS8842 is not set
666# CONFIG_KS8851 is not set
667# CONFIG_KS8851_MLL is not set
630# CONFIG_NETDEV_1000 is not set 668# CONFIG_NETDEV_1000 is not set
631# CONFIG_NETDEV_10000 is not set 669# CONFIG_NETDEV_10000 is not set
670# CONFIG_WLAN is not set
632 671
633# 672#
634# Wireless LAN 673# Enable WiMAX (Networking options) to see the WiMAX drivers
635# 674#
636# CONFIG_WLAN_PRE80211 is not set
637# CONFIG_WLAN_80211 is not set
638# CONFIG_IWLWIFI_LEDS is not set
639# CONFIG_WAN is not set 675# CONFIG_WAN is not set
640# CONFIG_PPP is not set 676# CONFIG_PPP is not set
641# CONFIG_SLIP is not set 677# CONFIG_SLIP is not set
@@ -679,15 +715,12 @@ CONFIG_INPUT_EVDEV=m
679# 715#
680# Character devices 716# Character devices
681# 717#
682# CONFIG_AD9960 is not set
683CONFIG_BFIN_DMA_INTERFACE=m 718CONFIG_BFIN_DMA_INTERFACE=m
684# CONFIG_BFIN_PPI is not set 719# CONFIG_BFIN_PPI is not set
685# CONFIG_BFIN_PPIFCD is not set 720# CONFIG_BFIN_PPIFCD is not set
686# CONFIG_BFIN_SIMPLE_TIMER is not set 721# CONFIG_BFIN_SIMPLE_TIMER is not set
687# CONFIG_BFIN_SPI_ADC is not set 722# CONFIG_BFIN_SPI_ADC is not set
688CONFIG_BFIN_SPORT=y 723CONFIG_BFIN_SPORT=y
689# CONFIG_BFIN_TIMER_LATENCY is not set
690CONFIG_SIMPLE_GPIO=m
691# CONFIG_VT is not set 724# CONFIG_VT is not set
692# CONFIG_DEVKMEM is not set 725# CONFIG_DEVKMEM is not set
693CONFIG_BFIN_JTAG_COMM=m 726CONFIG_BFIN_JTAG_COMM=m
@@ -701,6 +734,7 @@ CONFIG_BFIN_JTAG_COMM=m
701# 734#
702# Non-8250 serial port support 735# Non-8250 serial port support
703# 736#
737# CONFIG_SERIAL_MAX3100 is not set
704CONFIG_SERIAL_BFIN=y 738CONFIG_SERIAL_BFIN=y
705CONFIG_SERIAL_BFIN_CONSOLE=y 739CONFIG_SERIAL_BFIN_CONSOLE=y
706CONFIG_SERIAL_BFIN_DMA=y 740CONFIG_SERIAL_BFIN_DMA=y
@@ -711,12 +745,8 @@ CONFIG_SERIAL_CORE=y
711CONFIG_SERIAL_CORE_CONSOLE=y 745CONFIG_SERIAL_CORE_CONSOLE=y
712# CONFIG_SERIAL_BFIN_SPORT is not set 746# CONFIG_SERIAL_BFIN_SPORT is not set
713CONFIG_UNIX98_PTYS=y 747CONFIG_UNIX98_PTYS=y
748# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
714# CONFIG_LEGACY_PTYS is not set 749# CONFIG_LEGACY_PTYS is not set
715
716#
717# CAN, the car bus and industrial fieldbus
718#
719# CONFIG_CAN4LINUX is not set
720# CONFIG_IPMI_HANDLER is not set 750# CONFIG_IPMI_HANDLER is not set
721# CONFIG_HW_RANDOM is not set 751# CONFIG_HW_RANDOM is not set
722# CONFIG_R3964 is not set 752# CONFIG_R3964 is not set
@@ -734,13 +764,18 @@ CONFIG_SPI_BFIN=y
734# CONFIG_SPI_BFIN_LOCK is not set 764# CONFIG_SPI_BFIN_LOCK is not set
735# CONFIG_SPI_BFIN_SPORT is not set 765# CONFIG_SPI_BFIN_SPORT is not set
736# CONFIG_SPI_BITBANG is not set 766# CONFIG_SPI_BITBANG is not set
767# CONFIG_SPI_GPIO is not set
737 768
738# 769#
739# SPI Protocol Masters 770# SPI Protocol Masters
740# 771#
741# CONFIG_EEPROM_AT25 is not set
742# CONFIG_SPI_SPIDEV is not set 772# CONFIG_SPI_SPIDEV is not set
743# CONFIG_SPI_TLE62X0 is not set 773# CONFIG_SPI_TLE62X0 is not set
774
775#
776# PPS support
777#
778# CONFIG_PPS is not set
744CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 779CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
745CONFIG_GPIOLIB=y 780CONFIG_GPIOLIB=y
746# CONFIG_DEBUG_GPIO is not set 781# CONFIG_DEBUG_GPIO is not set
@@ -753,9 +788,6 @@ CONFIG_GPIO_SYSFS=y
753# 788#
754# I2C GPIO expanders: 789# I2C GPIO expanders:
755# 790#
756# CONFIG_GPIO_MAX732X is not set
757# CONFIG_GPIO_PCA953X is not set
758# CONFIG_GPIO_PCF857X is not set
759 791
760# 792#
761# PCI GPIO expanders: 793# PCI GPIO expanders:
@@ -766,11 +798,15 @@ CONFIG_GPIO_SYSFS=y
766# 798#
767# CONFIG_GPIO_MAX7301 is not set 799# CONFIG_GPIO_MAX7301 is not set
768# CONFIG_GPIO_MCP23S08 is not set 800# CONFIG_GPIO_MCP23S08 is not set
801# CONFIG_GPIO_MC33880 is not set
802
803#
804# AC97 GPIO expanders:
805#
769# CONFIG_W1 is not set 806# CONFIG_W1 is not set
770# CONFIG_POWER_SUPPLY is not set 807# CONFIG_POWER_SUPPLY is not set
771# CONFIG_HWMON is not set 808# CONFIG_HWMON is not set
772# CONFIG_THERMAL is not set 809# CONFIG_THERMAL is not set
773# CONFIG_THERMAL_HWMON is not set
774CONFIG_WATCHDOG=y 810CONFIG_WATCHDOG=y
775# CONFIG_WATCHDOG_NOWAYOUT is not set 811# CONFIG_WATCHDOG_NOWAYOUT is not set
776 812
@@ -793,23 +829,10 @@ CONFIG_SSB_POSSIBLE=y
793# CONFIG_MFD_SM501 is not set 829# CONFIG_MFD_SM501 is not set
794# CONFIG_HTC_PASIC3 is not set 830# CONFIG_HTC_PASIC3 is not set
795# CONFIG_MFD_TMIO is not set 831# CONFIG_MFD_TMIO is not set
832# CONFIG_MFD_MC13783 is not set
833# CONFIG_EZX_PCAP is not set
796# CONFIG_REGULATOR is not set 834# CONFIG_REGULATOR is not set
797 835# CONFIG_MEDIA_SUPPORT is not set
798#
799# Multimedia devices
800#
801
802#
803# Multimedia core support
804#
805# CONFIG_VIDEO_DEV is not set
806# CONFIG_DVB_CORE is not set
807# CONFIG_VIDEO_MEDIA is not set
808
809#
810# Multimedia drivers
811#
812# CONFIG_DAB is not set
813 836
814# 837#
815# Graphics support 838# Graphics support
@@ -826,14 +849,12 @@ CONFIG_SSB_POSSIBLE=y
826# CONFIG_SOUND is not set 849# CONFIG_SOUND is not set
827CONFIG_HID_SUPPORT=y 850CONFIG_HID_SUPPORT=y
828CONFIG_HID=m 851CONFIG_HID=m
829# CONFIG_HID_DEBUG is not set
830# CONFIG_HIDRAW is not set 852# CONFIG_HIDRAW is not set
831# CONFIG_HID_PID is not set 853# CONFIG_HID_PID is not set
832 854
833# 855#
834# Special HID drivers 856# Special HID drivers
835# 857#
836CONFIG_HID_COMPAT=y
837# CONFIG_USB_SUPPORT is not set 858# CONFIG_USB_SUPPORT is not set
838# CONFIG_MMC is not set 859# CONFIG_MMC is not set
839# CONFIG_MEMSTICK is not set 860# CONFIG_MEMSTICK is not set
@@ -864,6 +885,7 @@ CONFIG_RTC_INTF_DEV=y
864# CONFIG_RTC_DRV_R9701 is not set 885# CONFIG_RTC_DRV_R9701 is not set
865# CONFIG_RTC_DRV_RS5C348 is not set 886# CONFIG_RTC_DRV_RS5C348 is not set
866# CONFIG_RTC_DRV_DS3234 is not set 887# CONFIG_RTC_DRV_DS3234 is not set
888# CONFIG_RTC_DRV_PCF2123 is not set
867 889
868# 890#
869# Platform RTC drivers 891# Platform RTC drivers
@@ -884,10 +906,20 @@ CONFIG_RTC_INTF_DEV=y
884# 906#
885CONFIG_RTC_DRV_BFIN=y 907CONFIG_RTC_DRV_BFIN=y
886# CONFIG_DMADEVICES is not set 908# CONFIG_DMADEVICES is not set
909# CONFIG_AUXDISPLAY is not set
887# CONFIG_UIO is not set 910# CONFIG_UIO is not set
911
912#
913# TI VLYNQ
914#
888# CONFIG_STAGING is not set 915# CONFIG_STAGING is not set
889 916
890# 917#
918# Firmware Drivers
919#
920# CONFIG_FIRMWARE_MEMMAP is not set
921
922#
891# File systems 923# File systems
892# 924#
893# CONFIG_EXT2_FS is not set 925# CONFIG_EXT2_FS is not set
@@ -896,9 +928,13 @@ CONFIG_RTC_DRV_BFIN=y
896# CONFIG_REISERFS_FS is not set 928# CONFIG_REISERFS_FS is not set
897# CONFIG_JFS_FS is not set 929# CONFIG_JFS_FS is not set
898# CONFIG_FS_POSIX_ACL is not set 930# CONFIG_FS_POSIX_ACL is not set
899CONFIG_FILE_LOCKING=y
900# CONFIG_XFS_FS is not set 931# CONFIG_XFS_FS is not set
932# CONFIG_GFS2_FS is not set
901# CONFIG_OCFS2_FS is not set 933# CONFIG_OCFS2_FS is not set
934# CONFIG_BTRFS_FS is not set
935# CONFIG_NILFS2_FS is not set
936CONFIG_FILE_LOCKING=y
937CONFIG_FSNOTIFY=y
902# CONFIG_DNOTIFY is not set 938# CONFIG_DNOTIFY is not set
903CONFIG_INOTIFY=y 939CONFIG_INOTIFY=y
904CONFIG_INOTIFY_USER=y 940CONFIG_INOTIFY_USER=y
@@ -908,6 +944,11 @@ CONFIG_INOTIFY_USER=y
908# CONFIG_FUSE_FS is not set 944# CONFIG_FUSE_FS is not set
909 945
910# 946#
947# Caches
948#
949# CONFIG_FSCACHE is not set
950
951#
911# CD-ROM/DVD Filesystems 952# CD-ROM/DVD Filesystems
912# 953#
913# CONFIG_ISO9660_FS is not set 954# CONFIG_ISO9660_FS is not set
@@ -926,13 +967,9 @@ CONFIG_INOTIFY_USER=y
926CONFIG_PROC_FS=y 967CONFIG_PROC_FS=y
927CONFIG_PROC_SYSCTL=y 968CONFIG_PROC_SYSCTL=y
928CONFIG_SYSFS=y 969CONFIG_SYSFS=y
929# CONFIG_TMPFS is not set
930# CONFIG_HUGETLB_PAGE is not set 970# CONFIG_HUGETLB_PAGE is not set
931# CONFIG_CONFIGFS_FS is not set 971# CONFIG_CONFIGFS_FS is not set
932 972CONFIG_MISC_FILESYSTEMS=y
933#
934# Miscellaneous filesystems
935#
936# CONFIG_ADFS_FS is not set 973# CONFIG_ADFS_FS is not set
937# CONFIG_AFFS_FS is not set 974# CONFIG_AFFS_FS is not set
938# CONFIG_HFS_FS is not set 975# CONFIG_HFS_FS is not set
@@ -951,17 +988,8 @@ CONFIG_JFFS2_ZLIB=y
951# CONFIG_JFFS2_LZO is not set 988# CONFIG_JFFS2_LZO is not set
952CONFIG_JFFS2_RTIME=y 989CONFIG_JFFS2_RTIME=y
953# CONFIG_JFFS2_RUBIN is not set 990# CONFIG_JFFS2_RUBIN is not set
954CONFIG_YAFFS_FS=m
955CONFIG_YAFFS_YAFFS1=y
956# CONFIG_YAFFS_9BYTE_TAGS is not set
957# CONFIG_YAFFS_DOES_ECC is not set
958CONFIG_YAFFS_YAFFS2=y
959CONFIG_YAFFS_AUTO_YAFFS2=y
960# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
961# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
962# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
963CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
964# CONFIG_CRAMFS is not set 991# CONFIG_CRAMFS is not set
992# CONFIG_SQUASHFS is not set
965# CONFIG_VXFS_FS is not set 993# CONFIG_VXFS_FS is not set
966# CONFIG_MINIX_FS is not set 994# CONFIG_MINIX_FS is not set
967# CONFIG_OMFS_FS is not set 995# CONFIG_OMFS_FS is not set
@@ -980,7 +1008,6 @@ CONFIG_LOCKD=m
980CONFIG_LOCKD_V4=y 1008CONFIG_LOCKD_V4=y
981CONFIG_NFS_COMMON=y 1009CONFIG_NFS_COMMON=y
982CONFIG_SUNRPC=m 1010CONFIG_SUNRPC=m
983# CONFIG_SUNRPC_REGISTER_V4 is not set
984# CONFIG_RPCSEC_GSS_KRB5 is not set 1011# CONFIG_RPCSEC_GSS_KRB5 is not set
985# CONFIG_RPCSEC_GSS_SPKM3 is not set 1012# CONFIG_RPCSEC_GSS_SPKM3 is not set
986CONFIG_SMB_FS=m 1013CONFIG_SMB_FS=m
@@ -1045,14 +1072,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1045CONFIG_ENABLE_MUST_CHECK=y 1072CONFIG_ENABLE_MUST_CHECK=y
1046CONFIG_FRAME_WARN=1024 1073CONFIG_FRAME_WARN=1024
1047# CONFIG_MAGIC_SYSRQ is not set 1074# CONFIG_MAGIC_SYSRQ is not set
1075# CONFIG_STRIP_ASM_SYMS is not set
1048# CONFIG_UNUSED_SYMBOLS is not set 1076# CONFIG_UNUSED_SYMBOLS is not set
1049CONFIG_DEBUG_FS=y 1077CONFIG_DEBUG_FS=y
1050# CONFIG_HEADERS_CHECK is not set 1078# CONFIG_HEADERS_CHECK is not set
1079CONFIG_DEBUG_SECTION_MISMATCH=y
1051CONFIG_DEBUG_KERNEL=y 1080CONFIG_DEBUG_KERNEL=y
1052CONFIG_DEBUG_SHIRQ=y 1081CONFIG_DEBUG_SHIRQ=y
1053CONFIG_DETECT_SOFTLOCKUP=y 1082CONFIG_DETECT_SOFTLOCKUP=y
1054# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1083# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1055CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1084CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1085CONFIG_DETECT_HUNG_TASK=y
1086# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1087CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1056CONFIG_SCHED_DEBUG=y 1088CONFIG_SCHED_DEBUG=y
1057# CONFIG_SCHEDSTATS is not set 1089# CONFIG_SCHEDSTATS is not set
1058# CONFIG_TIMER_STATS is not set 1090# CONFIG_TIMER_STATS is not set
@@ -1060,31 +1092,39 @@ CONFIG_SCHED_DEBUG=y
1060# CONFIG_DEBUG_SLAB is not set 1092# CONFIG_DEBUG_SLAB is not set
1061# CONFIG_DEBUG_SPINLOCK is not set 1093# CONFIG_DEBUG_SPINLOCK is not set
1062# CONFIG_DEBUG_MUTEXES is not set 1094# CONFIG_DEBUG_MUTEXES is not set
1095# CONFIG_DEBUG_LOCK_ALLOC is not set
1096# CONFIG_PROVE_LOCKING is not set
1097# CONFIG_LOCK_STAT is not set
1063# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1098# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1064# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1099# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1065# CONFIG_DEBUG_KOBJECT is not set 1100# CONFIG_DEBUG_KOBJECT is not set
1066CONFIG_DEBUG_BUGVERBOSE=y 1101CONFIG_DEBUG_BUGVERBOSE=y
1067CONFIG_DEBUG_INFO=y 1102CONFIG_DEBUG_INFO=y
1068# CONFIG_DEBUG_VM is not set 1103# CONFIG_DEBUG_VM is not set
1104# CONFIG_DEBUG_NOMMU_REGIONS is not set
1069# CONFIG_DEBUG_WRITECOUNT is not set 1105# CONFIG_DEBUG_WRITECOUNT is not set
1070# CONFIG_DEBUG_MEMORY_INIT is not set 1106# CONFIG_DEBUG_MEMORY_INIT is not set
1071# CONFIG_DEBUG_LIST is not set 1107# CONFIG_DEBUG_LIST is not set
1072# CONFIG_DEBUG_SG is not set 1108# CONFIG_DEBUG_SG is not set
1109# CONFIG_DEBUG_NOTIFIERS is not set
1110# CONFIG_DEBUG_CREDENTIALS is not set
1073# CONFIG_FRAME_POINTER is not set 1111# CONFIG_FRAME_POINTER is not set
1074# CONFIG_BOOT_PRINTK_DELAY is not set 1112# CONFIG_BOOT_PRINTK_DELAY is not set
1075# CONFIG_RCU_TORTURE_TEST is not set 1113# CONFIG_RCU_TORTURE_TEST is not set
1076# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1114# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1077# CONFIG_BACKTRACE_SELF_TEST is not set 1115# CONFIG_BACKTRACE_SELF_TEST is not set
1078# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1116# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1117# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1079# CONFIG_FAULT_INJECTION is not set 1118# CONFIG_FAULT_INJECTION is not set
1080 1119# CONFIG_PAGE_POISONING is not set
1081# 1120CONFIG_HAVE_FUNCTION_TRACER=y
1082# Tracers 1121CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1083# 1122CONFIG_TRACING_SUPPORT=y
1084# CONFIG_SCHED_TRACER is not set 1123# CONFIG_FTRACE is not set
1085# CONFIG_CONTEXT_SWITCH_TRACER is not set 1124# CONFIG_BRANCH_PROFILE_NONE is not set
1086# CONFIG_BOOT_TRACER is not set 1125# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1087# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1126# CONFIG_PROFILE_ALL_BRANCHES is not set
1127# CONFIG_DYNAMIC_DEBUG is not set
1088# CONFIG_SAMPLES is not set 1128# CONFIG_SAMPLES is not set
1089CONFIG_HAVE_ARCH_KGDB=y 1129CONFIG_HAVE_ARCH_KGDB=y
1090# CONFIG_KGDB is not set 1130# CONFIG_KGDB is not set
@@ -1109,6 +1149,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1109CONFIG_EARLY_PRINTK=y 1149CONFIG_EARLY_PRINTK=y
1110CONFIG_CPLB_INFO=y 1150CONFIG_CPLB_INFO=y
1111CONFIG_ACCESS_CHECK=y 1151CONFIG_ACCESS_CHECK=y
1152# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1112 1153
1113# 1154#
1114# Security options 1155# Security options
@@ -1117,14 +1158,14 @@ CONFIG_ACCESS_CHECK=y
1117CONFIG_SECURITY=y 1158CONFIG_SECURITY=y
1118# CONFIG_SECURITYFS is not set 1159# CONFIG_SECURITYFS is not set
1119# CONFIG_SECURITY_NETWORK is not set 1160# CONFIG_SECURITY_NETWORK is not set
1161# CONFIG_SECURITY_PATH is not set
1120# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1162# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1121CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1163# CONFIG_SECURITY_TOMOYO is not set
1122CONFIG_CRYPTO=y 1164CONFIG_CRYPTO=y
1123 1165
1124# 1166#
1125# Crypto core or helper 1167# Crypto core or helper
1126# 1168#
1127# CONFIG_CRYPTO_FIPS is not set
1128# CONFIG_CRYPTO_MANAGER is not set 1169# CONFIG_CRYPTO_MANAGER is not set
1129# CONFIG_CRYPTO_MANAGER2 is not set 1170# CONFIG_CRYPTO_MANAGER2 is not set
1130# CONFIG_CRYPTO_GF128MUL is not set 1171# CONFIG_CRYPTO_GF128MUL is not set
@@ -1156,11 +1197,13 @@ CONFIG_CRYPTO=y
1156# 1197#
1157# CONFIG_CRYPTO_HMAC is not set 1198# CONFIG_CRYPTO_HMAC is not set
1158# CONFIG_CRYPTO_XCBC is not set 1199# CONFIG_CRYPTO_XCBC is not set
1200# CONFIG_CRYPTO_VMAC is not set
1159 1201
1160# 1202#
1161# Digest 1203# Digest
1162# 1204#
1163# CONFIG_CRYPTO_CRC32C is not set 1205# CONFIG_CRYPTO_CRC32C is not set
1206# CONFIG_CRYPTO_GHASH is not set
1164# CONFIG_CRYPTO_MD4 is not set 1207# CONFIG_CRYPTO_MD4 is not set
1165# CONFIG_CRYPTO_MD5 is not set 1208# CONFIG_CRYPTO_MD5 is not set
1166# CONFIG_CRYPTO_MICHAEL_MIC is not set 1209# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1197,6 +1240,7 @@ CONFIG_CRYPTO=y
1197# Compression 1240# Compression
1198# 1241#
1199# CONFIG_CRYPTO_DEFLATE is not set 1242# CONFIG_CRYPTO_DEFLATE is not set
1243# CONFIG_CRYPTO_ZLIB is not set
1200# CONFIG_CRYPTO_LZO is not set 1244# CONFIG_CRYPTO_LZO is not set
1201 1245
1202# 1246#
@@ -1204,11 +1248,13 @@ CONFIG_CRYPTO=y
1204# 1248#
1205# CONFIG_CRYPTO_ANSI_CPRNG is not set 1249# CONFIG_CRYPTO_ANSI_CPRNG is not set
1206CONFIG_CRYPTO_HW=y 1250CONFIG_CRYPTO_HW=y
1251# CONFIG_BINARY_PRINTF is not set
1207 1252
1208# 1253#
1209# Library routines 1254# Library routines
1210# 1255#
1211CONFIG_BITREVERSE=y 1256CONFIG_BITREVERSE=y
1257CONFIG_GENERIC_FIND_LAST_BIT=y
1212CONFIG_CRC_CCITT=m 1258CONFIG_CRC_CCITT=m
1213# CONFIG_CRC16 is not set 1259# CONFIG_CRC16 is not set
1214# CONFIG_CRC_T10DIF is not set 1260# CONFIG_CRC_T10DIF is not set
@@ -1218,6 +1264,8 @@ CONFIG_CRC32=y
1218# CONFIG_LIBCRC32C is not set 1264# CONFIG_LIBCRC32C is not set
1219CONFIG_ZLIB_INFLATE=y 1265CONFIG_ZLIB_INFLATE=y
1220CONFIG_ZLIB_DEFLATE=m 1266CONFIG_ZLIB_DEFLATE=m
1267CONFIG_DECOMPRESS_GZIP=y
1221CONFIG_HAS_IOMEM=y 1268CONFIG_HAS_IOMEM=y
1222CONFIG_HAS_IOPORT=y 1269CONFIG_HAS_IOPORT=y
1223CONFIG_HAS_DMA=y 1270CONFIG_HAS_DMA=y
1271CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig
index 6c60c8286318..c3fe6e5b612f 100644
--- a/arch/blackfin/configs/BF533-STAMP_defconfig
+++ b/arch/blackfin/configs/BF533-STAMP_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="anticipatory" 132CONFIG_DEFAULT_IOSCHED="anticipatory"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_BF533=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=3 174CONFIG_BF_REV_MIN=3
@@ -228,7 +256,7 @@ CONFIG_GENERIC_TIME=y
228CONFIG_GENERIC_CLOCKEVENTS=y 256CONFIG_GENERIC_CLOCKEVENTS=y
229# CONFIG_TICKSOURCE_GPTMR0 is not set 257# CONFIG_TICKSOURCE_GPTMR0 is not set
230CONFIG_TICKSOURCE_CORETMR=y 258CONFIG_TICKSOURCE_CORETMR=y
231# CONFIG_CYCLES_CLOCKSOURCE is not set 259CONFIG_CYCLES_CLOCKSOURCE=y
232# CONFIG_GPTMR0_CLOCKSOURCE is not set 260# CONFIG_GPTMR0_CLOCKSOURCE is not set
233CONFIG_TICK_ONESHOT=y 261CONFIG_TICK_ONESHOT=y
234# CONFIG_NO_HZ is not set 262# CONFIG_NO_HZ is not set
@@ -280,7 +308,6 @@ CONFIG_FLATMEM=y
280CONFIG_FLAT_NODE_MEM_MAP=y 308CONFIG_FLAT_NODE_MEM_MAP=y
281CONFIG_PAGEFLAGS_EXTENDED=y 309CONFIG_PAGEFLAGS_EXTENDED=y
282CONFIG_SPLIT_PTLOCK_CPUS=4 310CONFIG_SPLIT_PTLOCK_CPUS=4
283# CONFIG_RESOURCES_64BIT is not set
284# CONFIG_PHYS_ADDR_T_64BIT is not set 311# CONFIG_PHYS_ADDR_T_64BIT is not set
285CONFIG_ZONE_DMA_FLAG=1 312CONFIG_ZONE_DMA_FLAG=1
286CONFIG_VIRT_TO_BUS=y 313CONFIG_VIRT_TO_BUS=y
@@ -289,16 +316,18 @@ CONFIG_BFIN_GPTIMERS=m
289# CONFIG_DMA_UNCACHED_4M is not set 316# CONFIG_DMA_UNCACHED_4M is not set
290# CONFIG_DMA_UNCACHED_2M is not set 317# CONFIG_DMA_UNCACHED_2M is not set
291CONFIG_DMA_UNCACHED_1M=y 318CONFIG_DMA_UNCACHED_1M=y
319# CONFIG_DMA_UNCACHED_512K is not set
320# CONFIG_DMA_UNCACHED_256K is not set
321# CONFIG_DMA_UNCACHED_128K is not set
292# CONFIG_DMA_UNCACHED_NONE is not set 322# CONFIG_DMA_UNCACHED_NONE is not set
293 323
294# 324#
295# Cache Support 325# Cache Support
296# 326#
297CONFIG_BFIN_ICACHE=y 327CONFIG_BFIN_ICACHE=y
298# CONFIG_BFIN_ICACHE_LOCK is not set 328CONFIG_BFIN_EXTMEM_ICACHEABLE=y
299CONFIG_BFIN_DCACHE=y 329CONFIG_BFIN_DCACHE=y
300# CONFIG_BFIN_DCACHE_BANKA is not set 330# CONFIG_BFIN_DCACHE_BANKA is not set
301CONFIG_BFIN_EXTMEM_ICACHEABLE=y
302CONFIG_BFIN_EXTMEM_DCACHEABLE=y 331CONFIG_BFIN_EXTMEM_DCACHEABLE=y
303CONFIG_BFIN_EXTMEM_WRITEBACK=y 332CONFIG_BFIN_EXTMEM_WRITEBACK=y
304# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 333# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -309,7 +338,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
309# CONFIG_MPU is not set 338# CONFIG_MPU is not set
310 339
311# 340#
312# Asynchonous Memory Configuration 341# Asynchronous Memory Configuration
313# 342#
314 343
315# 344#
@@ -355,6 +384,7 @@ CONFIG_PM=y
355CONFIG_PM_SLEEP=y 384CONFIG_PM_SLEEP=y
356CONFIG_SUSPEND=y 385CONFIG_SUSPEND=y
357CONFIG_SUSPEND_FREEZER=y 386CONFIG_SUSPEND_FREEZER=y
387# CONFIG_PM_RUNTIME is not set
358CONFIG_ARCH_SUSPEND_POSSIBLE=y 388CONFIG_ARCH_SUSPEND_POSSIBLE=y
359CONFIG_PM_BFIN_SLEEP_DEEPER=y 389CONFIG_PM_BFIN_SLEEP_DEEPER=y
360# CONFIG_PM_BFIN_SLEEP is not set 390# CONFIG_PM_BFIN_SLEEP is not set
@@ -376,11 +406,6 @@ CONFIG_NET=y
376CONFIG_PACKET=y 406CONFIG_PACKET=y
377# CONFIG_PACKET_MMAP is not set 407# CONFIG_PACKET_MMAP is not set
378CONFIG_UNIX=y 408CONFIG_UNIX=y
379CONFIG_XFRM=y
380# CONFIG_XFRM_USER is not set
381# CONFIG_XFRM_SUB_POLICY is not set
382# CONFIG_XFRM_MIGRATE is not set
383# CONFIG_XFRM_STATISTICS is not set
384# CONFIG_NET_KEY is not set 409# CONFIG_NET_KEY is not set
385CONFIG_INET=y 410CONFIG_INET=y
386# CONFIG_IP_MULTICAST is not set 411# CONFIG_IP_MULTICAST is not set
@@ -404,7 +429,6 @@ CONFIG_IP_PNP=y
404# CONFIG_INET_XFRM_MODE_BEET is not set 429# CONFIG_INET_XFRM_MODE_BEET is not set
405# CONFIG_INET_LRO is not set 430# CONFIG_INET_LRO is not set
406# CONFIG_INET_DIAG is not set 431# CONFIG_INET_DIAG is not set
407CONFIG_INET_TCP_DIAG=y
408# CONFIG_TCP_CONG_ADVANCED is not set 432# CONFIG_TCP_CONG_ADVANCED is not set
409CONFIG_TCP_CONG_CUBIC=y 433CONFIG_TCP_CONG_CUBIC=y
410CONFIG_DEFAULT_TCP_CONG="cubic" 434CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -415,6 +439,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
415# CONFIG_NETFILTER is not set 439# CONFIG_NETFILTER is not set
416# CONFIG_IP_DCCP is not set 440# CONFIG_IP_DCCP is not set
417# CONFIG_IP_SCTP is not set 441# CONFIG_IP_SCTP is not set
442# CONFIG_RDS is not set
418# CONFIG_TIPC is not set 443# CONFIG_TIPC is not set
419# CONFIG_ATM is not set 444# CONFIG_ATM is not set
420# CONFIG_BRIDGE is not set 445# CONFIG_BRIDGE is not set
@@ -428,7 +453,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
428# CONFIG_LAPB is not set 453# CONFIG_LAPB is not set
429# CONFIG_ECONET is not set 454# CONFIG_ECONET is not set
430# CONFIG_WAN_ROUTER is not set 455# CONFIG_WAN_ROUTER is not set
456# CONFIG_PHONET is not set
457# CONFIG_IEEE802154 is not set
431# CONFIG_NET_SCHED is not set 458# CONFIG_NET_SCHED is not set
459# CONFIG_DCB is not set
432 460
433# 461#
434# Network testing 462# Network testing
@@ -474,13 +502,8 @@ CONFIG_SIR_BFIN_DMA=y
474# 502#
475# CONFIG_BT is not set 503# CONFIG_BT is not set
476# CONFIG_AF_RXRPC is not set 504# CONFIG_AF_RXRPC is not set
477# CONFIG_PHONET is not set 505# CONFIG_WIRELESS is not set
478CONFIG_WIRELESS=y 506# CONFIG_WIMAX is not set
479# CONFIG_CFG80211 is not set
480CONFIG_WIRELESS_OLD_REGULATORY=y
481# CONFIG_WIRELESS_EXT is not set
482# CONFIG_MAC80211 is not set
483# CONFIG_IEEE80211 is not set
484# CONFIG_RFKILL is not set 507# CONFIG_RFKILL is not set
485# CONFIG_NET_9P is not set 508# CONFIG_NET_9P is not set
486 509
@@ -501,6 +524,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
501# CONFIG_CONNECTOR is not set 524# CONFIG_CONNECTOR is not set
502CONFIG_MTD=y 525CONFIG_MTD=y
503# CONFIG_MTD_DEBUG is not set 526# CONFIG_MTD_DEBUG is not set
527# CONFIG_MTD_TESTS is not set
504# CONFIG_MTD_CONCAT is not set 528# CONFIG_MTD_CONCAT is not set
505CONFIG_MTD_PARTITIONS=y 529CONFIG_MTD_PARTITIONS=y
506# CONFIG_MTD_REDBOOT_PARTS is not set 530# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -560,6 +584,7 @@ CONFIG_MTD_BFIN_ASYNC=m
560# 584#
561# CONFIG_MTD_DATAFLASH is not set 585# CONFIG_MTD_DATAFLASH is not set
562# CONFIG_MTD_M25P80 is not set 586# CONFIG_MTD_M25P80 is not set
587# CONFIG_MTD_SST25L is not set
563# CONFIG_MTD_SLRAM is not set 588# CONFIG_MTD_SLRAM is not set
564# CONFIG_MTD_PHRAM is not set 589# CONFIG_MTD_PHRAM is not set
565# CONFIG_MTD_MTDRAM is not set 590# CONFIG_MTD_MTDRAM is not set
@@ -575,6 +600,11 @@ CONFIG_MTD_BFIN_ASYNC=m
575# CONFIG_MTD_ONENAND is not set 600# CONFIG_MTD_ONENAND is not set
576 601
577# 602#
603# LPDDR flash memory drivers
604#
605# CONFIG_MTD_LPDDR is not set
606
607#
578# UBI - Unsorted block images 608# UBI - Unsorted block images
579# 609#
580# CONFIG_MTD_UBI is not set 610# CONFIG_MTD_UBI is not set
@@ -591,10 +621,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
591# CONFIG_ATA_OVER_ETH is not set 621# CONFIG_ATA_OVER_ETH is not set
592# CONFIG_BLK_DEV_HD is not set 622# CONFIG_BLK_DEV_HD is not set
593CONFIG_MISC_DEVICES=y 623CONFIG_MISC_DEVICES=y
594# CONFIG_EEPROM_93CX6 is not set 624# CONFIG_AD525X_DPOT is not set
595# CONFIG_ICS932S401 is not set 625# CONFIG_ICS932S401 is not set
596# CONFIG_ENCLOSURE_SERVICES is not set 626# CONFIG_ENCLOSURE_SERVICES is not set
627# CONFIG_ISL29003 is not set
597# CONFIG_C2PORT is not set 628# CONFIG_C2PORT is not set
629
630#
631# EEPROM support
632#
633# CONFIG_EEPROM_AT24 is not set
634# CONFIG_EEPROM_AT25 is not set
635# CONFIG_EEPROM_LEGACY is not set
636# CONFIG_EEPROM_MAX6875 is not set
637# CONFIG_EEPROM_93CX6 is not set
598CONFIG_HAVE_IDE=y 638CONFIG_HAVE_IDE=y
599# CONFIG_IDE is not set 639# CONFIG_IDE is not set
600 640
@@ -618,9 +658,12 @@ CONFIG_NETDEVICES=y
618CONFIG_NET_ETHERNET=y 658CONFIG_NET_ETHERNET=y
619CONFIG_MII=y 659CONFIG_MII=y
620CONFIG_SMC91X=y 660CONFIG_SMC91X=y
621# CONFIG_SMSC911X is not set
622# CONFIG_DM9000 is not set 661# CONFIG_DM9000 is not set
623# CONFIG_ENC28J60 is not set 662# CONFIG_ENC28J60 is not set
663# CONFIG_ETHOC is not set
664# CONFIG_SMSC911X is not set
665# CONFIG_DNET is not set
666# CONFIG_ADF702X is not set
624# CONFIG_IBM_NEW_EMAC_ZMII is not set 667# CONFIG_IBM_NEW_EMAC_ZMII is not set
625# CONFIG_IBM_NEW_EMAC_RGMII is not set 668# CONFIG_IBM_NEW_EMAC_RGMII is not set
626# CONFIG_IBM_NEW_EMAC_TAH is not set 669# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -629,15 +672,16 @@ CONFIG_SMC91X=y
629# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 672# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
630# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 673# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
631# CONFIG_B44 is not set 674# CONFIG_B44 is not set
675# CONFIG_KS8842 is not set
676# CONFIG_KS8851 is not set
677# CONFIG_KS8851_MLL is not set
632# CONFIG_NETDEV_1000 is not set 678# CONFIG_NETDEV_1000 is not set
633# CONFIG_NETDEV_10000 is not set 679# CONFIG_NETDEV_10000 is not set
680# CONFIG_WLAN is not set
634 681
635# 682#
636# Wireless LAN 683# Enable WiMAX (Networking options) to see the WiMAX drivers
637# 684#
638# CONFIG_WLAN_PRE80211 is not set
639# CONFIG_WLAN_80211 is not set
640# CONFIG_IWLWIFI_LEDS is not set
641# CONFIG_WAN is not set 685# CONFIG_WAN is not set
642# CONFIG_PPP is not set 686# CONFIG_PPP is not set
643# CONFIG_SLIP is not set 687# CONFIG_SLIP is not set
@@ -672,7 +716,10 @@ CONFIG_INPUT_EVDEV=m
672# CONFIG_INPUT_TOUCHSCREEN is not set 716# CONFIG_INPUT_TOUCHSCREEN is not set
673CONFIG_INPUT_MISC=y 717CONFIG_INPUT_MISC=y
674# CONFIG_INPUT_UINPUT is not set 718# CONFIG_INPUT_UINPUT is not set
675CONFIG_CONFIG_INPUT_PCF8574=m 719# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
720# CONFIG_INPUT_AD714X is not set
721# CONFIG_INPUT_ADXL34X is not set
722# CONFIG_INPUT_PCF8574 is not set
676 723
677# 724#
678# Hardware I/O ports 725# Hardware I/O ports
@@ -683,16 +730,13 @@ CONFIG_CONFIG_INPUT_PCF8574=m
683# 730#
684# Character devices 731# Character devices
685# 732#
686# CONFIG_AD9960 is not set
687CONFIG_BFIN_DMA_INTERFACE=m 733CONFIG_BFIN_DMA_INTERFACE=m
688# CONFIG_BFIN_PPI is not set 734# CONFIG_BFIN_PPI is not set
689# CONFIG_BFIN_PPIFCD is not set 735# CONFIG_BFIN_PPIFCD is not set
690# CONFIG_BFIN_SIMPLE_TIMER is not set 736# CONFIG_BFIN_SIMPLE_TIMER is not set
691# CONFIG_BFIN_SPI_ADC is not set 737# CONFIG_BFIN_SPI_ADC is not set
692CONFIG_BFIN_SPORT=m 738CONFIG_BFIN_SPORT=m
693# CONFIG_BFIN_TIMER_LATENCY is not set
694# CONFIG_BFIN_TWI_LCD is not set 739# CONFIG_BFIN_TWI_LCD is not set
695CONFIG_SIMPLE_GPIO=m
696# CONFIG_VT is not set 740# CONFIG_VT is not set
697# CONFIG_DEVKMEM is not set 741# CONFIG_DEVKMEM is not set
698CONFIG_BFIN_JTAG_COMM=m 742CONFIG_BFIN_JTAG_COMM=m
@@ -706,6 +750,7 @@ CONFIG_BFIN_JTAG_COMM=m
706# 750#
707# Non-8250 serial port support 751# Non-8250 serial port support
708# 752#
753# CONFIG_SERIAL_MAX3100 is not set
709CONFIG_SERIAL_BFIN=y 754CONFIG_SERIAL_BFIN=y
710CONFIG_SERIAL_BFIN_CONSOLE=y 755CONFIG_SERIAL_BFIN_CONSOLE=y
711CONFIG_SERIAL_BFIN_DMA=y 756CONFIG_SERIAL_BFIN_DMA=y
@@ -716,12 +761,8 @@ CONFIG_SERIAL_CORE=y
716CONFIG_SERIAL_CORE_CONSOLE=y 761CONFIG_SERIAL_CORE_CONSOLE=y
717# CONFIG_SERIAL_BFIN_SPORT is not set 762# CONFIG_SERIAL_BFIN_SPORT is not set
718CONFIG_UNIX98_PTYS=y 763CONFIG_UNIX98_PTYS=y
764# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
719# CONFIG_LEGACY_PTYS is not set 765# CONFIG_LEGACY_PTYS is not set
720
721#
722# CAN, the car bus and industrial fieldbus
723#
724# CONFIG_CAN4LINUX is not set
725# CONFIG_IPMI_HANDLER is not set 766# CONFIG_IPMI_HANDLER is not set
726# CONFIG_HW_RANDOM is not set 767# CONFIG_HW_RANDOM is not set
727# CONFIG_R3964 is not set 768# CONFIG_R3964 is not set
@@ -729,6 +770,7 @@ CONFIG_UNIX98_PTYS=y
729# CONFIG_TCG_TPM is not set 770# CONFIG_TCG_TPM is not set
730CONFIG_I2C=m 771CONFIG_I2C=m
731CONFIG_I2C_BOARDINFO=y 772CONFIG_I2C_BOARDINFO=y
773CONFIG_I2C_COMPAT=y
732CONFIG_I2C_CHARDEV=m 774CONFIG_I2C_CHARDEV=m
733CONFIG_I2C_HELPER_AUTO=y 775CONFIG_I2C_HELPER_AUTO=y
734 776
@@ -759,14 +801,6 @@ CONFIG_I2C_HELPER_AUTO=y
759# Miscellaneous I2C Chip support 801# Miscellaneous I2C Chip support
760# 802#
761# CONFIG_DS1682 is not set 803# CONFIG_DS1682 is not set
762# CONFIG_EEPROM_AT24 is not set
763# CONFIG_SENSORS_AD5252 is not set
764# CONFIG_EEPROM_LEGACY is not set
765# CONFIG_SENSORS_PCF8574 is not set
766# CONFIG_PCF8575 is not set
767# CONFIG_SENSORS_PCA9539 is not set
768# CONFIG_SENSORS_PCF8591 is not set
769# CONFIG_SENSORS_MAX6875 is not set
770# CONFIG_SENSORS_TSL2550 is not set 804# CONFIG_SENSORS_TSL2550 is not set
771# CONFIG_I2C_DEBUG_CORE is not set 805# CONFIG_I2C_DEBUG_CORE is not set
772# CONFIG_I2C_DEBUG_ALGO is not set 806# CONFIG_I2C_DEBUG_ALGO is not set
@@ -783,13 +817,18 @@ CONFIG_SPI_BFIN=y
783# CONFIG_SPI_BFIN_LOCK is not set 817# CONFIG_SPI_BFIN_LOCK is not set
784# CONFIG_SPI_BFIN_SPORT is not set 818# CONFIG_SPI_BFIN_SPORT is not set
785# CONFIG_SPI_BITBANG is not set 819# CONFIG_SPI_BITBANG is not set
820# CONFIG_SPI_GPIO is not set
786 821
787# 822#
788# SPI Protocol Masters 823# SPI Protocol Masters
789# 824#
790# CONFIG_EEPROM_AT25 is not set
791# CONFIG_SPI_SPIDEV is not set 825# CONFIG_SPI_SPIDEV is not set
792# CONFIG_SPI_TLE62X0 is not set 826# CONFIG_SPI_TLE62X0 is not set
827
828#
829# PPS support
830#
831# CONFIG_PPS is not set
793CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 832CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
794CONFIG_GPIOLIB=y 833CONFIG_GPIOLIB=y
795# CONFIG_DEBUG_GPIO is not set 834# CONFIG_DEBUG_GPIO is not set
@@ -805,6 +844,7 @@ CONFIG_GPIO_SYSFS=y
805# CONFIG_GPIO_MAX732X is not set 844# CONFIG_GPIO_MAX732X is not set
806# CONFIG_GPIO_PCA953X is not set 845# CONFIG_GPIO_PCA953X is not set
807# CONFIG_GPIO_PCF857X is not set 846# CONFIG_GPIO_PCF857X is not set
847# CONFIG_GPIO_ADP5588 is not set
808 848
809# 849#
810# PCI GPIO expanders: 850# PCI GPIO expanders:
@@ -815,11 +855,15 @@ CONFIG_GPIO_SYSFS=y
815# 855#
816# CONFIG_GPIO_MAX7301 is not set 856# CONFIG_GPIO_MAX7301 is not set
817# CONFIG_GPIO_MCP23S08 is not set 857# CONFIG_GPIO_MCP23S08 is not set
858# CONFIG_GPIO_MC33880 is not set
859
860#
861# AC97 GPIO expanders:
862#
818# CONFIG_W1 is not set 863# CONFIG_W1 is not set
819# CONFIG_POWER_SUPPLY is not set 864# CONFIG_POWER_SUPPLY is not set
820# CONFIG_HWMON is not set 865# CONFIG_HWMON is not set
821# CONFIG_THERMAL is not set 866# CONFIG_THERMAL is not set
822# CONFIG_THERMAL_HWMON is not set
823CONFIG_WATCHDOG=y 867CONFIG_WATCHDOG=y
824# CONFIG_WATCHDOG_NOWAYOUT is not set 868# CONFIG_WATCHDOG_NOWAYOUT is not set
825 869
@@ -841,26 +885,18 @@ CONFIG_SSB_POSSIBLE=y
841# CONFIG_MFD_CORE is not set 885# CONFIG_MFD_CORE is not set
842# CONFIG_MFD_SM501 is not set 886# CONFIG_MFD_SM501 is not set
843# CONFIG_HTC_PASIC3 is not set 887# CONFIG_HTC_PASIC3 is not set
888# CONFIG_UCB1400_CORE is not set
889# CONFIG_TPS65010 is not set
844# CONFIG_MFD_TMIO is not set 890# CONFIG_MFD_TMIO is not set
845# CONFIG_MFD_WM8400 is not set 891# CONFIG_MFD_WM8400 is not set
892# CONFIG_MFD_WM831X is not set
846# CONFIG_MFD_WM8350_I2C is not set 893# CONFIG_MFD_WM8350_I2C is not set
894# CONFIG_MFD_PCF50633 is not set
895# CONFIG_MFD_MC13783 is not set
896# CONFIG_AB3100_CORE is not set
897# CONFIG_EZX_PCAP is not set
847# CONFIG_REGULATOR is not set 898# CONFIG_REGULATOR is not set
848 899# CONFIG_MEDIA_SUPPORT is not set
849#
850# Multimedia devices
851#
852
853#
854# Multimedia core support
855#
856# CONFIG_VIDEO_DEV is not set
857# CONFIG_DVB_CORE is not set
858# CONFIG_VIDEO_MEDIA is not set
859
860#
861# Multimedia drivers
862#
863# CONFIG_DAB is not set
864 900
865# 901#
866# Graphics support 902# Graphics support
@@ -904,6 +940,7 @@ CONFIG_ADV7393_1XMEM=y
904# CONFIG_FB_VIRTUAL is not set 940# CONFIG_FB_VIRTUAL is not set
905# CONFIG_FB_METRONOME is not set 941# CONFIG_FB_METRONOME is not set
906# CONFIG_FB_MB862XX is not set 942# CONFIG_FB_MB862XX is not set
943# CONFIG_FB_BROADSHEET is not set
907# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 944# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
908 945
909# 946#
@@ -913,19 +950,27 @@ CONFIG_ADV7393_1XMEM=y
913# CONFIG_LOGO is not set 950# CONFIG_LOGO is not set
914CONFIG_SOUND=m 951CONFIG_SOUND=m
915CONFIG_SOUND_OSS_CORE=y 952CONFIG_SOUND_OSS_CORE=y
953CONFIG_SOUND_OSS_CORE_PRECLAIM=y
916CONFIG_SND=m 954CONFIG_SND=m
917CONFIG_SND_TIMER=m 955CONFIG_SND_TIMER=m
918CONFIG_SND_PCM=m 956CONFIG_SND_PCM=m
957CONFIG_SND_JACK=y
919# CONFIG_SND_SEQUENCER is not set 958# CONFIG_SND_SEQUENCER is not set
920CONFIG_SND_OSSEMUL=y 959CONFIG_SND_OSSEMUL=y
921CONFIG_SND_MIXER_OSS=m 960CONFIG_SND_MIXER_OSS=m
922CONFIG_SND_PCM_OSS=m 961CONFIG_SND_PCM_OSS=m
923CONFIG_SND_PCM_OSS_PLUGINS=y 962CONFIG_SND_PCM_OSS_PLUGINS=y
963# CONFIG_SND_HRTIMER is not set
924# CONFIG_SND_DYNAMIC_MINORS is not set 964# CONFIG_SND_DYNAMIC_MINORS is not set
925CONFIG_SND_SUPPORT_OLD_API=y 965CONFIG_SND_SUPPORT_OLD_API=y
926CONFIG_SND_VERBOSE_PROCFS=y 966CONFIG_SND_VERBOSE_PROCFS=y
927# CONFIG_SND_VERBOSE_PRINTK is not set 967# CONFIG_SND_VERBOSE_PRINTK is not set
928# CONFIG_SND_DEBUG is not set 968# CONFIG_SND_DEBUG is not set
969# CONFIG_SND_RAWMIDI_SEQ is not set
970# CONFIG_SND_OPL3_LIB_SEQ is not set
971# CONFIG_SND_OPL4_LIB_SEQ is not set
972# CONFIG_SND_SBAWE_SEQ is not set
973# CONFIG_SND_EMU10K1_SEQ is not set
929CONFIG_SND_DRIVERS=y 974CONFIG_SND_DRIVERS=y
930# CONFIG_SND_DUMMY is not set 975# CONFIG_SND_DUMMY is not set
931# CONFIG_SND_MTPAV is not set 976# CONFIG_SND_MTPAV is not set
@@ -936,13 +981,6 @@ CONFIG_SND_SPI=y
936# 981#
937# ALSA Blackfin devices 982# ALSA Blackfin devices
938# 983#
939CONFIG_SND_BLACKFIN_AD1836=m
940CONFIG_SND_BLACKFIN_AD1836_TDM=y
941# CONFIG_SND_BLACKFIN_AD1836_I2S is not set
942CONFIG_SND_BLACKFIN_AD1836_MULSUB=y
943# CONFIG_SND_BLACKFIN_AD1836_5P1 is not set
944CONFIG_SND_BLACKFIN_SPORT=0
945CONFIG_SND_BLACKFIN_SPI_PFBIT=4
946CONFIG_SND_BFIN_SPORT=0 984CONFIG_SND_BFIN_SPORT=0
947CONFIG_SND_BFIN_AD73322=m 985CONFIG_SND_BFIN_AD73322=m
948CONFIG_SND_BFIN_AD73322_SPORT0_SE=10 986CONFIG_SND_BFIN_AD73322_SPORT0_SE=10
@@ -953,16 +991,20 @@ CONFIG_SND_SOC_AC97_BUS=y
953CONFIG_SND_BF5XX_I2S=m 991CONFIG_SND_BF5XX_I2S=m
954# CONFIG_SND_BF5XX_SOC_SSM2602 is not set 992# CONFIG_SND_BF5XX_SOC_SSM2602 is not set
955CONFIG_SND_BF5XX_SOC_AD73311=m 993CONFIG_SND_BF5XX_SOC_AD73311=m
994# CONFIG_SND_BF5XX_SOC_ADAU1371 is not set
995# CONFIG_SND_BF5XX_SOC_ADAU1761 is not set
956CONFIG_SND_BFIN_AD73311_SE=4 996CONFIG_SND_BFIN_AD73311_SE=4
997# CONFIG_SND_BF5XX_TDM is not set
957CONFIG_SND_BF5XX_AC97=m 998CONFIG_SND_BF5XX_AC97=m
958CONFIG_SND_BF5XX_MMAP_SUPPORT=y 999CONFIG_SND_BF5XX_MMAP_SUPPORT=y
959# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set 1000# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set
1001# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
1002CONFIG_SND_BF5XX_SOC_AD1980=m
960CONFIG_SND_BF5XX_SOC_SPORT=m 1003CONFIG_SND_BF5XX_SOC_SPORT=m
961CONFIG_SND_BF5XX_SOC_I2S=m 1004CONFIG_SND_BF5XX_SOC_I2S=m
962CONFIG_SND_BF5XX_SOC_AC97=m 1005CONFIG_SND_BF5XX_SOC_AC97=m
963CONFIG_SND_BF5XX_SOC_AD1980=m
964CONFIG_SND_BF5XX_SPORT_NUM=0 1006CONFIG_SND_BF5XX_SPORT_NUM=0
965# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set 1007CONFIG_SND_SOC_I2C_AND_SPI=m
966# CONFIG_SND_SOC_ALL_CODECS is not set 1008# CONFIG_SND_SOC_ALL_CODECS is not set
967CONFIG_SND_SOC_AD1980=m 1009CONFIG_SND_SOC_AD1980=m
968CONFIG_SND_SOC_AD73311=m 1010CONFIG_SND_SOC_AD73311=m
@@ -970,14 +1012,12 @@ CONFIG_SND_SOC_AD73311=m
970CONFIG_AC97_BUS=m 1012CONFIG_AC97_BUS=m
971CONFIG_HID_SUPPORT=y 1013CONFIG_HID_SUPPORT=y
972CONFIG_HID=y 1014CONFIG_HID=y
973# CONFIG_HID_DEBUG is not set
974# CONFIG_HIDRAW is not set 1015# CONFIG_HIDRAW is not set
975# CONFIG_HID_PID is not set 1016# CONFIG_HID_PID is not set
976 1017
977# 1018#
978# Special HID drivers 1019# Special HID drivers
979# 1020#
980CONFIG_HID_COMPAT=y
981# CONFIG_USB_SUPPORT is not set 1021# CONFIG_USB_SUPPORT is not set
982# CONFIG_MMC is not set 1022# CONFIG_MMC is not set
983# CONFIG_MEMSTICK is not set 1023# CONFIG_MEMSTICK is not set
@@ -1014,6 +1054,7 @@ CONFIG_RTC_INTF_DEV=y
1014# CONFIG_RTC_DRV_S35390A is not set 1054# CONFIG_RTC_DRV_S35390A is not set
1015# CONFIG_RTC_DRV_FM3130 is not set 1055# CONFIG_RTC_DRV_FM3130 is not set
1016# CONFIG_RTC_DRV_RX8581 is not set 1056# CONFIG_RTC_DRV_RX8581 is not set
1057# CONFIG_RTC_DRV_RX8025 is not set
1017 1058
1018# 1059#
1019# SPI RTC drivers 1060# SPI RTC drivers
@@ -1025,6 +1066,7 @@ CONFIG_RTC_INTF_DEV=y
1025# CONFIG_RTC_DRV_R9701 is not set 1066# CONFIG_RTC_DRV_R9701 is not set
1026# CONFIG_RTC_DRV_RS5C348 is not set 1067# CONFIG_RTC_DRV_RS5C348 is not set
1027# CONFIG_RTC_DRV_DS3234 is not set 1068# CONFIG_RTC_DRV_DS3234 is not set
1069# CONFIG_RTC_DRV_PCF2123 is not set
1028 1070
1029# 1071#
1030# Platform RTC drivers 1072# Platform RTC drivers
@@ -1045,10 +1087,21 @@ CONFIG_RTC_INTF_DEV=y
1045# 1087#
1046CONFIG_RTC_DRV_BFIN=y 1088CONFIG_RTC_DRV_BFIN=y
1047# CONFIG_DMADEVICES is not set 1089# CONFIG_DMADEVICES is not set
1090# CONFIG_AUXDISPLAY is not set
1048# CONFIG_UIO is not set 1091# CONFIG_UIO is not set
1092
1093#
1094# TI VLYNQ
1095#
1049# CONFIG_STAGING is not set 1096# CONFIG_STAGING is not set
1050 1097
1051# 1098#
1099# Firmware Drivers
1100#
1101# CONFIG_FIRMWARE_MEMMAP is not set
1102# CONFIG_SIGMA is not set
1103
1104#
1052# File systems 1105# File systems
1053# 1106#
1054# CONFIG_EXT2_FS is not set 1107# CONFIG_EXT2_FS is not set
@@ -1057,9 +1110,13 @@ CONFIG_RTC_DRV_BFIN=y
1057# CONFIG_REISERFS_FS is not set 1110# CONFIG_REISERFS_FS is not set
1058# CONFIG_JFS_FS is not set 1111# CONFIG_JFS_FS is not set
1059# CONFIG_FS_POSIX_ACL is not set 1112# CONFIG_FS_POSIX_ACL is not set
1060CONFIG_FILE_LOCKING=y
1061# CONFIG_XFS_FS is not set 1113# CONFIG_XFS_FS is not set
1114# CONFIG_GFS2_FS is not set
1062# CONFIG_OCFS2_FS is not set 1115# CONFIG_OCFS2_FS is not set
1116# CONFIG_BTRFS_FS is not set
1117# CONFIG_NILFS2_FS is not set
1118CONFIG_FILE_LOCKING=y
1119CONFIG_FSNOTIFY=y
1063# CONFIG_DNOTIFY is not set 1120# CONFIG_DNOTIFY is not set
1064CONFIG_INOTIFY=y 1121CONFIG_INOTIFY=y
1065CONFIG_INOTIFY_USER=y 1122CONFIG_INOTIFY_USER=y
@@ -1069,6 +1126,11 @@ CONFIG_INOTIFY_USER=y
1069# CONFIG_FUSE_FS is not set 1126# CONFIG_FUSE_FS is not set
1070 1127
1071# 1128#
1129# Caches
1130#
1131# CONFIG_FSCACHE is not set
1132
1133#
1072# CD-ROM/DVD Filesystems 1134# CD-ROM/DVD Filesystems
1073# 1135#
1074# CONFIG_ISO9660_FS is not set 1136# CONFIG_ISO9660_FS is not set
@@ -1087,13 +1149,9 @@ CONFIG_INOTIFY_USER=y
1087CONFIG_PROC_FS=y 1149CONFIG_PROC_FS=y
1088CONFIG_PROC_SYSCTL=y 1150CONFIG_PROC_SYSCTL=y
1089CONFIG_SYSFS=y 1151CONFIG_SYSFS=y
1090# CONFIG_TMPFS is not set
1091# CONFIG_HUGETLB_PAGE is not set 1152# CONFIG_HUGETLB_PAGE is not set
1092# CONFIG_CONFIGFS_FS is not set 1153# CONFIG_CONFIGFS_FS is not set
1093 1154CONFIG_MISC_FILESYSTEMS=y
1094#
1095# Miscellaneous filesystems
1096#
1097# CONFIG_ADFS_FS is not set 1155# CONFIG_ADFS_FS is not set
1098# CONFIG_AFFS_FS is not set 1156# CONFIG_AFFS_FS is not set
1099# CONFIG_HFS_FS is not set 1157# CONFIG_HFS_FS is not set
@@ -1112,17 +1170,8 @@ CONFIG_JFFS2_ZLIB=y
1112# CONFIG_JFFS2_LZO is not set 1170# CONFIG_JFFS2_LZO is not set
1113CONFIG_JFFS2_RTIME=y 1171CONFIG_JFFS2_RTIME=y
1114# CONFIG_JFFS2_RUBIN is not set 1172# CONFIG_JFFS2_RUBIN is not set
1115CONFIG_YAFFS_FS=m
1116CONFIG_YAFFS_YAFFS1=y
1117# CONFIG_YAFFS_9BYTE_TAGS is not set
1118# CONFIG_YAFFS_DOES_ECC is not set
1119CONFIG_YAFFS_YAFFS2=y
1120CONFIG_YAFFS_AUTO_YAFFS2=y
1121# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1122# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1123# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1124CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1125# CONFIG_CRAMFS is not set 1173# CONFIG_CRAMFS is not set
1174# CONFIG_SQUASHFS is not set
1126# CONFIG_VXFS_FS is not set 1175# CONFIG_VXFS_FS is not set
1127# CONFIG_MINIX_FS is not set 1176# CONFIG_MINIX_FS is not set
1128# CONFIG_OMFS_FS is not set 1177# CONFIG_OMFS_FS is not set
@@ -1141,7 +1190,6 @@ CONFIG_LOCKD=m
1141CONFIG_LOCKD_V4=y 1190CONFIG_LOCKD_V4=y
1142CONFIG_NFS_COMMON=y 1191CONFIG_NFS_COMMON=y
1143CONFIG_SUNRPC=m 1192CONFIG_SUNRPC=m
1144# CONFIG_SUNRPC_REGISTER_V4 is not set
1145# CONFIG_RPCSEC_GSS_KRB5 is not set 1193# CONFIG_RPCSEC_GSS_KRB5 is not set
1146# CONFIG_RPCSEC_GSS_SPKM3 is not set 1194# CONFIG_RPCSEC_GSS_SPKM3 is not set
1147CONFIG_SMB_FS=m 1195CONFIG_SMB_FS=m
@@ -1206,14 +1254,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1206CONFIG_ENABLE_MUST_CHECK=y 1254CONFIG_ENABLE_MUST_CHECK=y
1207CONFIG_FRAME_WARN=1024 1255CONFIG_FRAME_WARN=1024
1208# CONFIG_MAGIC_SYSRQ is not set 1256# CONFIG_MAGIC_SYSRQ is not set
1257# CONFIG_STRIP_ASM_SYMS is not set
1209# CONFIG_UNUSED_SYMBOLS is not set 1258# CONFIG_UNUSED_SYMBOLS is not set
1210CONFIG_DEBUG_FS=y 1259CONFIG_DEBUG_FS=y
1211# CONFIG_HEADERS_CHECK is not set 1260# CONFIG_HEADERS_CHECK is not set
1261CONFIG_DEBUG_SECTION_MISMATCH=y
1212CONFIG_DEBUG_KERNEL=y 1262CONFIG_DEBUG_KERNEL=y
1213CONFIG_DEBUG_SHIRQ=y 1263CONFIG_DEBUG_SHIRQ=y
1214CONFIG_DETECT_SOFTLOCKUP=y 1264CONFIG_DETECT_SOFTLOCKUP=y
1215# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1265# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1216CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1266CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1267CONFIG_DETECT_HUNG_TASK=y
1268# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1269CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1217CONFIG_SCHED_DEBUG=y 1270CONFIG_SCHED_DEBUG=y
1218# CONFIG_SCHEDSTATS is not set 1271# CONFIG_SCHEDSTATS is not set
1219# CONFIG_TIMER_STATS is not set 1272# CONFIG_TIMER_STATS is not set
@@ -1221,31 +1274,39 @@ CONFIG_SCHED_DEBUG=y
1221# CONFIG_DEBUG_SLAB is not set 1274# CONFIG_DEBUG_SLAB is not set
1222# CONFIG_DEBUG_SPINLOCK is not set 1275# CONFIG_DEBUG_SPINLOCK is not set
1223# CONFIG_DEBUG_MUTEXES is not set 1276# CONFIG_DEBUG_MUTEXES is not set
1277# CONFIG_DEBUG_LOCK_ALLOC is not set
1278# CONFIG_PROVE_LOCKING is not set
1279# CONFIG_LOCK_STAT is not set
1224# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1280# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1225# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1281# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1226# CONFIG_DEBUG_KOBJECT is not set 1282# CONFIG_DEBUG_KOBJECT is not set
1227CONFIG_DEBUG_BUGVERBOSE=y 1283CONFIG_DEBUG_BUGVERBOSE=y
1228CONFIG_DEBUG_INFO=y 1284CONFIG_DEBUG_INFO=y
1229# CONFIG_DEBUG_VM is not set 1285# CONFIG_DEBUG_VM is not set
1286# CONFIG_DEBUG_NOMMU_REGIONS is not set
1230# CONFIG_DEBUG_WRITECOUNT is not set 1287# CONFIG_DEBUG_WRITECOUNT is not set
1231# CONFIG_DEBUG_MEMORY_INIT is not set 1288# CONFIG_DEBUG_MEMORY_INIT is not set
1232# CONFIG_DEBUG_LIST is not set 1289# CONFIG_DEBUG_LIST is not set
1233# CONFIG_DEBUG_SG is not set 1290# CONFIG_DEBUG_SG is not set
1291# CONFIG_DEBUG_NOTIFIERS is not set
1292# CONFIG_DEBUG_CREDENTIALS is not set
1234# CONFIG_FRAME_POINTER is not set 1293# CONFIG_FRAME_POINTER is not set
1235# CONFIG_BOOT_PRINTK_DELAY is not set 1294# CONFIG_BOOT_PRINTK_DELAY is not set
1236# CONFIG_RCU_TORTURE_TEST is not set 1295# CONFIG_RCU_TORTURE_TEST is not set
1237# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1296# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1238# CONFIG_BACKTRACE_SELF_TEST is not set 1297# CONFIG_BACKTRACE_SELF_TEST is not set
1239# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1298# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1299# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1240# CONFIG_FAULT_INJECTION is not set 1300# CONFIG_FAULT_INJECTION is not set
1241 1301# CONFIG_PAGE_POISONING is not set
1242# 1302CONFIG_HAVE_FUNCTION_TRACER=y
1243# Tracers 1303CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1244# 1304CONFIG_TRACING_SUPPORT=y
1245# CONFIG_SCHED_TRACER is not set 1305# CONFIG_FTRACE is not set
1246# CONFIG_CONTEXT_SWITCH_TRACER is not set 1306# CONFIG_BRANCH_PROFILE_NONE is not set
1247# CONFIG_BOOT_TRACER is not set 1307# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1248# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1308# CONFIG_PROFILE_ALL_BRANCHES is not set
1309# CONFIG_DYNAMIC_DEBUG is not set
1249# CONFIG_SAMPLES is not set 1310# CONFIG_SAMPLES is not set
1250CONFIG_HAVE_ARCH_KGDB=y 1311CONFIG_HAVE_ARCH_KGDB=y
1251# CONFIG_KGDB is not set 1312# CONFIG_KGDB is not set
@@ -1270,6 +1331,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1270CONFIG_EARLY_PRINTK=y 1331CONFIG_EARLY_PRINTK=y
1271CONFIG_CPLB_INFO=y 1332CONFIG_CPLB_INFO=y
1272CONFIG_ACCESS_CHECK=y 1333CONFIG_ACCESS_CHECK=y
1334# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1273 1335
1274# 1336#
1275# Security options 1337# Security options
@@ -1278,14 +1340,14 @@ CONFIG_ACCESS_CHECK=y
1278CONFIG_SECURITY=y 1340CONFIG_SECURITY=y
1279# CONFIG_SECURITYFS is not set 1341# CONFIG_SECURITYFS is not set
1280# CONFIG_SECURITY_NETWORK is not set 1342# CONFIG_SECURITY_NETWORK is not set
1343# CONFIG_SECURITY_PATH is not set
1281# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1344# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1282CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1345# CONFIG_SECURITY_TOMOYO is not set
1283CONFIG_CRYPTO=y 1346CONFIG_CRYPTO=y
1284 1347
1285# 1348#
1286# Crypto core or helper 1349# Crypto core or helper
1287# 1350#
1288# CONFIG_CRYPTO_FIPS is not set
1289# CONFIG_CRYPTO_MANAGER is not set 1351# CONFIG_CRYPTO_MANAGER is not set
1290# CONFIG_CRYPTO_MANAGER2 is not set 1352# CONFIG_CRYPTO_MANAGER2 is not set
1291# CONFIG_CRYPTO_GF128MUL is not set 1353# CONFIG_CRYPTO_GF128MUL is not set
@@ -1317,11 +1379,13 @@ CONFIG_CRYPTO=y
1317# 1379#
1318# CONFIG_CRYPTO_HMAC is not set 1380# CONFIG_CRYPTO_HMAC is not set
1319# CONFIG_CRYPTO_XCBC is not set 1381# CONFIG_CRYPTO_XCBC is not set
1382# CONFIG_CRYPTO_VMAC is not set
1320 1383
1321# 1384#
1322# Digest 1385# Digest
1323# 1386#
1324# CONFIG_CRYPTO_CRC32C is not set 1387# CONFIG_CRYPTO_CRC32C is not set
1388# CONFIG_CRYPTO_GHASH is not set
1325# CONFIG_CRYPTO_MD4 is not set 1389# CONFIG_CRYPTO_MD4 is not set
1326# CONFIG_CRYPTO_MD5 is not set 1390# CONFIG_CRYPTO_MD5 is not set
1327# CONFIG_CRYPTO_MICHAEL_MIC is not set 1391# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1358,6 +1422,7 @@ CONFIG_CRYPTO=y
1358# Compression 1422# Compression
1359# 1423#
1360# CONFIG_CRYPTO_DEFLATE is not set 1424# CONFIG_CRYPTO_DEFLATE is not set
1425# CONFIG_CRYPTO_ZLIB is not set
1361# CONFIG_CRYPTO_LZO is not set 1426# CONFIG_CRYPTO_LZO is not set
1362 1427
1363# 1428#
@@ -1365,11 +1430,13 @@ CONFIG_CRYPTO=y
1365# 1430#
1366# CONFIG_CRYPTO_ANSI_CPRNG is not set 1431# CONFIG_CRYPTO_ANSI_CPRNG is not set
1367CONFIG_CRYPTO_HW=y 1432CONFIG_CRYPTO_HW=y
1433# CONFIG_BINARY_PRINTF is not set
1368 1434
1369# 1435#
1370# Library routines 1436# Library routines
1371# 1437#
1372CONFIG_BITREVERSE=y 1438CONFIG_BITREVERSE=y
1439CONFIG_GENERIC_FIND_LAST_BIT=y
1373CONFIG_CRC_CCITT=m 1440CONFIG_CRC_CCITT=m
1374# CONFIG_CRC16 is not set 1441# CONFIG_CRC16 is not set
1375# CONFIG_CRC_T10DIF is not set 1442# CONFIG_CRC_T10DIF is not set
@@ -1379,6 +1446,8 @@ CONFIG_CRC32=y
1379# CONFIG_LIBCRC32C is not set 1446# CONFIG_LIBCRC32C is not set
1380CONFIG_ZLIB_INFLATE=y 1447CONFIG_ZLIB_INFLATE=y
1381CONFIG_ZLIB_DEFLATE=m 1448CONFIG_ZLIB_DEFLATE=m
1449CONFIG_DECOMPRESS_GZIP=y
1382CONFIG_HAS_IOMEM=y 1450CONFIG_HAS_IOMEM=y
1383CONFIG_HAS_IOPORT=y 1451CONFIG_HAS_IOPORT=y
1384CONFIG_HAS_DMA=y 1452CONFIG_HAS_DMA=y
1453CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig
index 2908595b67c5..7596cf7673f1 100644
--- a/arch/blackfin/configs/BF537-STAMP_defconfig
+++ b/arch/blackfin/configs/BF537-STAMP_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="anticipatory" 132CONFIG_DEFAULT_IOSCHED="anticipatory"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_FREEZER=y
132CONFIG_BF537=y 160CONFIG_BF537=y
133# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=2 174CONFIG_BF_REV_MIN=2
@@ -184,7 +212,8 @@ CONFIG_IRQ_MEM_DMA1=13
184CONFIG_IRQ_WATCH=13 212CONFIG_IRQ_WATCH=13
185CONFIG_IRQ_SPI=10 213CONFIG_IRQ_SPI=10
186CONFIG_BFIN537_STAMP=y 214CONFIG_BFIN537_STAMP=y
187# CONFIG_BFIN537_BLUETECHNIX_CM is not set 215# CONFIG_BFIN537_BLUETECHNIX_CM_E is not set
216# CONFIG_BFIN537_BLUETECHNIX_CM_U is not set
188# CONFIG_BFIN537_BLUETECHNIX_TCM is not set 217# CONFIG_BFIN537_BLUETECHNIX_TCM is not set
189# CONFIG_PNAV10 is not set 218# CONFIG_PNAV10 is not set
190# CONFIG_CAMSIG_MINOTAUR is not set 219# CONFIG_CAMSIG_MINOTAUR is not set
@@ -235,7 +264,7 @@ CONFIG_GENERIC_TIME=y
235CONFIG_GENERIC_CLOCKEVENTS=y 264CONFIG_GENERIC_CLOCKEVENTS=y
236# CONFIG_TICKSOURCE_GPTMR0 is not set 265# CONFIG_TICKSOURCE_GPTMR0 is not set
237CONFIG_TICKSOURCE_CORETMR=y 266CONFIG_TICKSOURCE_CORETMR=y
238# CONFIG_CYCLES_CLOCKSOURCE is not set 267CONFIG_CYCLES_CLOCKSOURCE=y
239# CONFIG_GPTMR0_CLOCKSOURCE is not set 268# CONFIG_GPTMR0_CLOCKSOURCE is not set
240CONFIG_TICK_ONESHOT=y 269CONFIG_TICK_ONESHOT=y
241# CONFIG_NO_HZ is not set 270# CONFIG_NO_HZ is not set
@@ -287,7 +316,6 @@ CONFIG_FLATMEM=y
287CONFIG_FLAT_NODE_MEM_MAP=y 316CONFIG_FLAT_NODE_MEM_MAP=y
288CONFIG_PAGEFLAGS_EXTENDED=y 317CONFIG_PAGEFLAGS_EXTENDED=y
289CONFIG_SPLIT_PTLOCK_CPUS=4 318CONFIG_SPLIT_PTLOCK_CPUS=4
290# CONFIG_RESOURCES_64BIT is not set
291# CONFIG_PHYS_ADDR_T_64BIT is not set 319# CONFIG_PHYS_ADDR_T_64BIT is not set
292CONFIG_ZONE_DMA_FLAG=1 320CONFIG_ZONE_DMA_FLAG=1
293CONFIG_VIRT_TO_BUS=y 321CONFIG_VIRT_TO_BUS=y
@@ -296,16 +324,18 @@ CONFIG_BFIN_GPTIMERS=m
296# CONFIG_DMA_UNCACHED_4M is not set 324# CONFIG_DMA_UNCACHED_4M is not set
297# CONFIG_DMA_UNCACHED_2M is not set 325# CONFIG_DMA_UNCACHED_2M is not set
298CONFIG_DMA_UNCACHED_1M=y 326CONFIG_DMA_UNCACHED_1M=y
327# CONFIG_DMA_UNCACHED_512K is not set
328# CONFIG_DMA_UNCACHED_256K is not set
329# CONFIG_DMA_UNCACHED_128K is not set
299# CONFIG_DMA_UNCACHED_NONE is not set 330# CONFIG_DMA_UNCACHED_NONE is not set
300 331
301# 332#
302# Cache Support 333# Cache Support
303# 334#
304CONFIG_BFIN_ICACHE=y 335CONFIG_BFIN_ICACHE=y
305# CONFIG_BFIN_ICACHE_LOCK is not set 336CONFIG_BFIN_EXTMEM_ICACHEABLE=y
306CONFIG_BFIN_DCACHE=y 337CONFIG_BFIN_DCACHE=y
307# CONFIG_BFIN_DCACHE_BANKA is not set 338# CONFIG_BFIN_DCACHE_BANKA is not set
308CONFIG_BFIN_EXTMEM_ICACHEABLE=y
309CONFIG_BFIN_EXTMEM_DCACHEABLE=y 339CONFIG_BFIN_EXTMEM_DCACHEABLE=y
310CONFIG_BFIN_EXTMEM_WRITEBACK=y 340CONFIG_BFIN_EXTMEM_WRITEBACK=y
311# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 341# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -316,7 +346,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
316# CONFIG_MPU is not set 346# CONFIG_MPU is not set
317 347
318# 348#
319# Asynchonous Memory Configuration 349# Asynchronous Memory Configuration
320# 350#
321 351
322# 352#
@@ -362,6 +392,7 @@ CONFIG_PM=y
362CONFIG_PM_SLEEP=y 392CONFIG_PM_SLEEP=y
363CONFIG_SUSPEND=y 393CONFIG_SUSPEND=y
364CONFIG_SUSPEND_FREEZER=y 394CONFIG_SUSPEND_FREEZER=y
395# CONFIG_PM_RUNTIME is not set
365CONFIG_ARCH_SUSPEND_POSSIBLE=y 396CONFIG_ARCH_SUSPEND_POSSIBLE=y
366CONFIG_PM_BFIN_SLEEP_DEEPER=y 397CONFIG_PM_BFIN_SLEEP_DEEPER=y
367# CONFIG_PM_BFIN_SLEEP is not set 398# CONFIG_PM_BFIN_SLEEP is not set
@@ -384,11 +415,6 @@ CONFIG_NET=y
384CONFIG_PACKET=y 415CONFIG_PACKET=y
385# CONFIG_PACKET_MMAP is not set 416# CONFIG_PACKET_MMAP is not set
386CONFIG_UNIX=y 417CONFIG_UNIX=y
387CONFIG_XFRM=y
388# CONFIG_XFRM_USER is not set
389# CONFIG_XFRM_SUB_POLICY is not set
390# CONFIG_XFRM_MIGRATE is not set
391# CONFIG_XFRM_STATISTICS is not set
392# CONFIG_NET_KEY is not set 418# CONFIG_NET_KEY is not set
393CONFIG_INET=y 419CONFIG_INET=y
394# CONFIG_IP_MULTICAST is not set 420# CONFIG_IP_MULTICAST is not set
@@ -412,7 +438,6 @@ CONFIG_IP_PNP=y
412# CONFIG_INET_XFRM_MODE_BEET is not set 438# CONFIG_INET_XFRM_MODE_BEET is not set
413# CONFIG_INET_LRO is not set 439# CONFIG_INET_LRO is not set
414# CONFIG_INET_DIAG is not set 440# CONFIG_INET_DIAG is not set
415CONFIG_INET_TCP_DIAG=y
416# CONFIG_TCP_CONG_ADVANCED is not set 441# CONFIG_TCP_CONG_ADVANCED is not set
417CONFIG_TCP_CONG_CUBIC=y 442CONFIG_TCP_CONG_CUBIC=y
418CONFIG_DEFAULT_TCP_CONG="cubic" 443CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -423,6 +448,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
423# CONFIG_NETFILTER is not set 448# CONFIG_NETFILTER is not set
424# CONFIG_IP_DCCP is not set 449# CONFIG_IP_DCCP is not set
425# CONFIG_IP_SCTP is not set 450# CONFIG_IP_SCTP is not set
451# CONFIG_RDS is not set
426# CONFIG_TIPC is not set 452# CONFIG_TIPC is not set
427# CONFIG_ATM is not set 453# CONFIG_ATM is not set
428# CONFIG_BRIDGE is not set 454# CONFIG_BRIDGE is not set
@@ -436,14 +462,34 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
436# CONFIG_LAPB is not set 462# CONFIG_LAPB is not set
437# CONFIG_ECONET is not set 463# CONFIG_ECONET is not set
438# CONFIG_WAN_ROUTER is not set 464# CONFIG_WAN_ROUTER is not set
465# CONFIG_PHONET is not set
466# CONFIG_IEEE802154 is not set
439# CONFIG_NET_SCHED is not set 467# CONFIG_NET_SCHED is not set
468# CONFIG_DCB is not set
440 469
441# 470#
442# Network testing 471# Network testing
443# 472#
444# CONFIG_NET_PKTGEN is not set 473# CONFIG_NET_PKTGEN is not set
445# CONFIG_HAMRADIO is not set 474# CONFIG_HAMRADIO is not set
446# CONFIG_CAN is not set 475CONFIG_CAN=m
476CONFIG_CAN_RAW=m
477CONFIG_CAN_BCM=m
478
479#
480# CAN Device Drivers
481#
482# CONFIG_CAN_VCAN is not set
483CONFIG_CAN_DEV=m
484# CONFIG_CAN_CALC_BITTIMING is not set
485CONFIG_CAN_BFIN=m
486# CONFIG_CAN_SJA1000 is not set
487
488#
489# CAN USB interfaces
490#
491# CONFIG_CAN_EMS_USB is not set
492# CONFIG_CAN_DEBUG_DEVICES is not set
447CONFIG_IRDA=m 493CONFIG_IRDA=m
448 494
449# 495#
@@ -483,13 +529,8 @@ CONFIG_SIR_BFIN_DMA=y
483# 529#
484# CONFIG_BT is not set 530# CONFIG_BT is not set
485# CONFIG_AF_RXRPC is not set 531# CONFIG_AF_RXRPC is not set
486# CONFIG_PHONET is not set 532# CONFIG_WIRELESS is not set
487CONFIG_WIRELESS=y 533# CONFIG_WIMAX is not set
488# CONFIG_CFG80211 is not set
489CONFIG_WIRELESS_OLD_REGULATORY=y
490# CONFIG_WIRELESS_EXT is not set
491# CONFIG_MAC80211 is not set
492# CONFIG_IEEE80211 is not set
493# CONFIG_RFKILL is not set 534# CONFIG_RFKILL is not set
494# CONFIG_NET_9P is not set 535# CONFIG_NET_9P is not set
495 536
@@ -510,6 +551,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
510# CONFIG_CONNECTOR is not set 551# CONFIG_CONNECTOR is not set
511CONFIG_MTD=y 552CONFIG_MTD=y
512# CONFIG_MTD_DEBUG is not set 553# CONFIG_MTD_DEBUG is not set
554# CONFIG_MTD_TESTS is not set
513# CONFIG_MTD_CONCAT is not set 555# CONFIG_MTD_CONCAT is not set
514CONFIG_MTD_PARTITIONS=y 556CONFIG_MTD_PARTITIONS=y
515# CONFIG_MTD_REDBOOT_PARTS is not set 557# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -568,6 +610,7 @@ CONFIG_MTD_PHYSMAP=m
568# 610#
569# CONFIG_MTD_DATAFLASH is not set 611# CONFIG_MTD_DATAFLASH is not set
570# CONFIG_MTD_M25P80 is not set 612# CONFIG_MTD_M25P80 is not set
613# CONFIG_MTD_SST25L is not set
571# CONFIG_MTD_SLRAM is not set 614# CONFIG_MTD_SLRAM is not set
572# CONFIG_MTD_PHRAM is not set 615# CONFIG_MTD_PHRAM is not set
573# CONFIG_MTD_MTDRAM is not set 616# CONFIG_MTD_MTDRAM is not set
@@ -583,6 +626,11 @@ CONFIG_MTD_PHYSMAP=m
583# CONFIG_MTD_ONENAND is not set 626# CONFIG_MTD_ONENAND is not set
584 627
585# 628#
629# LPDDR flash memory drivers
630#
631# CONFIG_MTD_LPDDR is not set
632
633#
586# UBI - Unsorted block images 634# UBI - Unsorted block images
587# 635#
588# CONFIG_MTD_UBI is not set 636# CONFIG_MTD_UBI is not set
@@ -599,10 +647,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
599# CONFIG_ATA_OVER_ETH is not set 647# CONFIG_ATA_OVER_ETH is not set
600# CONFIG_BLK_DEV_HD is not set 648# CONFIG_BLK_DEV_HD is not set
601CONFIG_MISC_DEVICES=y 649CONFIG_MISC_DEVICES=y
602# CONFIG_EEPROM_93CX6 is not set 650# CONFIG_AD525X_DPOT is not set
603# CONFIG_ICS932S401 is not set 651# CONFIG_ICS932S401 is not set
604# CONFIG_ENCLOSURE_SERVICES is not set 652# CONFIG_ENCLOSURE_SERVICES is not set
653# CONFIG_ISL29003 is not set
605# CONFIG_C2PORT is not set 654# CONFIG_C2PORT is not set
655
656#
657# EEPROM support
658#
659# CONFIG_EEPROM_AT24 is not set
660# CONFIG_EEPROM_AT25 is not set
661# CONFIG_EEPROM_LEGACY is not set
662# CONFIG_EEPROM_MAX6875 is not set
663# CONFIG_EEPROM_93CX6 is not set
606CONFIG_HAVE_IDE=y 664CONFIG_HAVE_IDE=y
607# CONFIG_IDE is not set 665# CONFIG_IDE is not set
608 666
@@ -637,6 +695,9 @@ CONFIG_SMSC_PHY=y
637# CONFIG_BROADCOM_PHY is not set 695# CONFIG_BROADCOM_PHY is not set
638# CONFIG_ICPLUS_PHY is not set 696# CONFIG_ICPLUS_PHY is not set
639# CONFIG_REALTEK_PHY is not set 697# CONFIG_REALTEK_PHY is not set
698# CONFIG_NATIONAL_PHY is not set
699# CONFIG_STE10XP is not set
700# CONFIG_LSI_ET1011C_PHY is not set
640# CONFIG_FIXED_PHY is not set 701# CONFIG_FIXED_PHY is not set
641# CONFIG_MDIO_BITBANG is not set 702# CONFIG_MDIO_BITBANG is not set
642CONFIG_NET_ETHERNET=y 703CONFIG_NET_ETHERNET=y
@@ -647,9 +708,12 @@ CONFIG_BFIN_TX_DESC_NUM=10
647CONFIG_BFIN_RX_DESC_NUM=20 708CONFIG_BFIN_RX_DESC_NUM=20
648# CONFIG_BFIN_MAC_RMII is not set 709# CONFIG_BFIN_MAC_RMII is not set
649# CONFIG_SMC91X is not set 710# CONFIG_SMC91X is not set
650# CONFIG_SMSC911X is not set
651# CONFIG_DM9000 is not set 711# CONFIG_DM9000 is not set
652# CONFIG_ENC28J60 is not set 712# CONFIG_ENC28J60 is not set
713# CONFIG_ETHOC is not set
714# CONFIG_SMSC911X is not set
715# CONFIG_DNET is not set
716# CONFIG_ADF702X is not set
653# CONFIG_IBM_NEW_EMAC_ZMII is not set 717# CONFIG_IBM_NEW_EMAC_ZMII is not set
654# CONFIG_IBM_NEW_EMAC_RGMII is not set 718# CONFIG_IBM_NEW_EMAC_RGMII is not set
655# CONFIG_IBM_NEW_EMAC_TAH is not set 719# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -658,15 +722,16 @@ CONFIG_BFIN_RX_DESC_NUM=20
658# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 722# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
659# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 723# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
660# CONFIG_B44 is not set 724# CONFIG_B44 is not set
725# CONFIG_KS8842 is not set
726# CONFIG_KS8851 is not set
727# CONFIG_KS8851_MLL is not set
661# CONFIG_NETDEV_1000 is not set 728# CONFIG_NETDEV_1000 is not set
662# CONFIG_NETDEV_10000 is not set 729# CONFIG_NETDEV_10000 is not set
730# CONFIG_WLAN is not set
663 731
664# 732#
665# Wireless LAN 733# Enable WiMAX (Networking options) to see the WiMAX drivers
666# 734#
667# CONFIG_WLAN_PRE80211 is not set
668# CONFIG_WLAN_80211 is not set
669# CONFIG_IWLWIFI_LEDS is not set
670# CONFIG_WAN is not set 735# CONFIG_WAN is not set
671# CONFIG_PPP is not set 736# CONFIG_PPP is not set
672# CONFIG_SLIP is not set 737# CONFIG_SLIP is not set
@@ -701,7 +766,10 @@ CONFIG_INPUT_EVDEV=m
701# CONFIG_INPUT_TOUCHSCREEN is not set 766# CONFIG_INPUT_TOUCHSCREEN is not set
702CONFIG_INPUT_MISC=y 767CONFIG_INPUT_MISC=y
703# CONFIG_INPUT_UINPUT is not set 768# CONFIG_INPUT_UINPUT is not set
704CONFIG_CONFIG_INPUT_PCF8574=m 769# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
770# CONFIG_INPUT_AD714X is not set
771# CONFIG_INPUT_ADXL34X is not set
772# CONFIG_INPUT_PCF8574 is not set
705 773
706# 774#
707# Hardware I/O ports 775# Hardware I/O ports
@@ -712,16 +780,13 @@ CONFIG_CONFIG_INPUT_PCF8574=m
712# 780#
713# Character devices 781# Character devices
714# 782#
715# CONFIG_AD9960 is not set
716CONFIG_BFIN_DMA_INTERFACE=m 783CONFIG_BFIN_DMA_INTERFACE=m
717# CONFIG_BFIN_PPI is not set 784# CONFIG_BFIN_PPI is not set
718# CONFIG_BFIN_PPIFCD is not set 785# CONFIG_BFIN_PPIFCD is not set
719# CONFIG_BFIN_SIMPLE_TIMER is not set 786# CONFIG_BFIN_SIMPLE_TIMER is not set
720# CONFIG_BFIN_SPI_ADC is not set 787# CONFIG_BFIN_SPI_ADC is not set
721CONFIG_BFIN_SPORT=m 788CONFIG_BFIN_SPORT=m
722# CONFIG_BFIN_TIMER_LATENCY is not set
723# CONFIG_BFIN_TWI_LCD is not set 789# CONFIG_BFIN_TWI_LCD is not set
724CONFIG_SIMPLE_GPIO=m
725# CONFIG_VT is not set 790# CONFIG_VT is not set
726# CONFIG_DEVKMEM is not set 791# CONFIG_DEVKMEM is not set
727CONFIG_BFIN_JTAG_COMM=m 792CONFIG_BFIN_JTAG_COMM=m
@@ -735,6 +800,7 @@ CONFIG_BFIN_JTAG_COMM=m
735# 800#
736# Non-8250 serial port support 801# Non-8250 serial port support
737# 802#
803# CONFIG_SERIAL_MAX3100 is not set
738CONFIG_SERIAL_BFIN=y 804CONFIG_SERIAL_BFIN=y
739CONFIG_SERIAL_BFIN_CONSOLE=y 805CONFIG_SERIAL_BFIN_CONSOLE=y
740CONFIG_SERIAL_BFIN_DMA=y 806CONFIG_SERIAL_BFIN_DMA=y
@@ -746,17 +812,8 @@ CONFIG_SERIAL_CORE=y
746CONFIG_SERIAL_CORE_CONSOLE=y 812CONFIG_SERIAL_CORE_CONSOLE=y
747# CONFIG_SERIAL_BFIN_SPORT is not set 813# CONFIG_SERIAL_BFIN_SPORT is not set
748CONFIG_UNIX98_PTYS=y 814CONFIG_UNIX98_PTYS=y
815# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
749# CONFIG_LEGACY_PTYS is not set 816# CONFIG_LEGACY_PTYS is not set
750
751#
752# CAN, the car bus and industrial fieldbus
753#
754CONFIG_CAN4LINUX=y
755
756#
757# linux embedded drivers
758#
759CONFIG_CAN_BLACKFIN=m
760# CONFIG_IPMI_HANDLER is not set 817# CONFIG_IPMI_HANDLER is not set
761# CONFIG_HW_RANDOM is not set 818# CONFIG_HW_RANDOM is not set
762# CONFIG_R3964 is not set 819# CONFIG_R3964 is not set
@@ -764,6 +821,7 @@ CONFIG_CAN_BLACKFIN=m
764# CONFIG_TCG_TPM is not set 821# CONFIG_TCG_TPM is not set
765CONFIG_I2C=m 822CONFIG_I2C=m
766CONFIG_I2C_BOARDINFO=y 823CONFIG_I2C_BOARDINFO=y
824CONFIG_I2C_COMPAT=y
767CONFIG_I2C_CHARDEV=m 825CONFIG_I2C_CHARDEV=m
768CONFIG_I2C_HELPER_AUTO=y 826CONFIG_I2C_HELPER_AUTO=y
769 827
@@ -796,14 +854,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
796# Miscellaneous I2C Chip support 854# Miscellaneous I2C Chip support
797# 855#
798# CONFIG_DS1682 is not set 856# CONFIG_DS1682 is not set
799# CONFIG_EEPROM_AT24 is not set
800CONFIG_SENSORS_AD5252=m
801# CONFIG_EEPROM_LEGACY is not set
802# CONFIG_SENSORS_PCF8574 is not set
803# CONFIG_PCF8575 is not set
804# CONFIG_SENSORS_PCA9539 is not set
805# CONFIG_SENSORS_PCF8591 is not set
806# CONFIG_SENSORS_MAX6875 is not set
807# CONFIG_SENSORS_TSL2550 is not set 857# CONFIG_SENSORS_TSL2550 is not set
808# CONFIG_I2C_DEBUG_CORE is not set 858# CONFIG_I2C_DEBUG_CORE is not set
809# CONFIG_I2C_DEBUG_ALGO is not set 859# CONFIG_I2C_DEBUG_ALGO is not set
@@ -820,13 +870,18 @@ CONFIG_SPI_BFIN=y
820# CONFIG_SPI_BFIN_LOCK is not set 870# CONFIG_SPI_BFIN_LOCK is not set
821# CONFIG_SPI_BFIN_SPORT is not set 871# CONFIG_SPI_BFIN_SPORT is not set
822# CONFIG_SPI_BITBANG is not set 872# CONFIG_SPI_BITBANG is not set
873# CONFIG_SPI_GPIO is not set
823 874
824# 875#
825# SPI Protocol Masters 876# SPI Protocol Masters
826# 877#
827# CONFIG_EEPROM_AT25 is not set
828# CONFIG_SPI_SPIDEV is not set 878# CONFIG_SPI_SPIDEV is not set
829# CONFIG_SPI_TLE62X0 is not set 879# CONFIG_SPI_TLE62X0 is not set
880
881#
882# PPS support
883#
884# CONFIG_PPS is not set
830CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 885CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
831CONFIG_GPIOLIB=y 886CONFIG_GPIOLIB=y
832# CONFIG_DEBUG_GPIO is not set 887# CONFIG_DEBUG_GPIO is not set
@@ -842,6 +897,7 @@ CONFIG_GPIO_SYSFS=y
842# CONFIG_GPIO_MAX732X is not set 897# CONFIG_GPIO_MAX732X is not set
843# CONFIG_GPIO_PCA953X is not set 898# CONFIG_GPIO_PCA953X is not set
844# CONFIG_GPIO_PCF857X is not set 899# CONFIG_GPIO_PCF857X is not set
900# CONFIG_GPIO_ADP5588 is not set
845 901
846# 902#
847# PCI GPIO expanders: 903# PCI GPIO expanders:
@@ -852,11 +908,15 @@ CONFIG_GPIO_SYSFS=y
852# 908#
853# CONFIG_GPIO_MAX7301 is not set 909# CONFIG_GPIO_MAX7301 is not set
854# CONFIG_GPIO_MCP23S08 is not set 910# CONFIG_GPIO_MCP23S08 is not set
911# CONFIG_GPIO_MC33880 is not set
912
913#
914# AC97 GPIO expanders:
915#
855# CONFIG_W1 is not set 916# CONFIG_W1 is not set
856# CONFIG_POWER_SUPPLY is not set 917# CONFIG_POWER_SUPPLY is not set
857# CONFIG_HWMON is not set 918# CONFIG_HWMON is not set
858# CONFIG_THERMAL is not set 919# CONFIG_THERMAL is not set
859# CONFIG_THERMAL_HWMON is not set
860CONFIG_WATCHDOG=y 920CONFIG_WATCHDOG=y
861# CONFIG_WATCHDOG_NOWAYOUT is not set 921# CONFIG_WATCHDOG_NOWAYOUT is not set
862 922
@@ -878,26 +938,18 @@ CONFIG_SSB_POSSIBLE=y
878# CONFIG_MFD_CORE is not set 938# CONFIG_MFD_CORE is not set
879# CONFIG_MFD_SM501 is not set 939# CONFIG_MFD_SM501 is not set
880# CONFIG_HTC_PASIC3 is not set 940# CONFIG_HTC_PASIC3 is not set
941# CONFIG_UCB1400_CORE is not set
942# CONFIG_TPS65010 is not set
881# CONFIG_MFD_TMIO is not set 943# CONFIG_MFD_TMIO is not set
882# CONFIG_MFD_WM8400 is not set 944# CONFIG_MFD_WM8400 is not set
945# CONFIG_MFD_WM831X is not set
883# CONFIG_MFD_WM8350_I2C is not set 946# CONFIG_MFD_WM8350_I2C is not set
947# CONFIG_MFD_PCF50633 is not set
948# CONFIG_MFD_MC13783 is not set
949# CONFIG_AB3100_CORE is not set
950# CONFIG_EZX_PCAP is not set
884# CONFIG_REGULATOR is not set 951# CONFIG_REGULATOR is not set
885 952# CONFIG_MEDIA_SUPPORT is not set
886#
887# Multimedia devices
888#
889
890#
891# Multimedia core support
892#
893# CONFIG_VIDEO_DEV is not set
894# CONFIG_DVB_CORE is not set
895# CONFIG_VIDEO_MEDIA is not set
896
897#
898# Multimedia drivers
899#
900# CONFIG_DAB is not set
901 953
902# 954#
903# Graphics support 955# Graphics support
@@ -929,9 +981,6 @@ CONFIG_FB_CFB_IMAGEBLIT=m
929# CONFIG_FB_BFIN_T350MCQB is not set 981# CONFIG_FB_BFIN_T350MCQB is not set
930# CONFIG_FB_BFIN_LQ035Q1 is not set 982# CONFIG_FB_BFIN_LQ035Q1 is not set
931CONFIG_FB_BF537_LQ035=m 983CONFIG_FB_BF537_LQ035=m
932CONFIG_LQ035_SLAVE_ADDR=0x58
933# CONFIG_FB_BFIN_LANDSCAPE is not set
934# CONFIG_FB_BFIN_BGR is not set
935CONFIG_FB_BFIN_7393=m 984CONFIG_FB_BFIN_7393=m
936CONFIG_NTSC=y 985CONFIG_NTSC=y
937# CONFIG_PAL is not set 986# CONFIG_PAL is not set
@@ -946,15 +995,18 @@ CONFIG_ADV7393_1XMEM=y
946# CONFIG_FB_VIRTUAL is not set 995# CONFIG_FB_VIRTUAL is not set
947# CONFIG_FB_METRONOME is not set 996# CONFIG_FB_METRONOME is not set
948# CONFIG_FB_MB862XX is not set 997# CONFIG_FB_MB862XX is not set
998# CONFIG_FB_BROADSHEET is not set
949CONFIG_BACKLIGHT_LCD_SUPPORT=y 999CONFIG_BACKLIGHT_LCD_SUPPORT=y
950CONFIG_LCD_CLASS_DEVICE=m 1000CONFIG_LCD_CLASS_DEVICE=m
1001# CONFIG_LCD_LMS283GF05 is not set
951# CONFIG_LCD_LTV350QV is not set 1002# CONFIG_LCD_LTV350QV is not set
952# CONFIG_LCD_ILI9320 is not set 1003# CONFIG_LCD_ILI9320 is not set
953# CONFIG_LCD_TDO24M is not set 1004# CONFIG_LCD_TDO24M is not set
954# CONFIG_LCD_VGG2432A4 is not set 1005# CONFIG_LCD_VGG2432A4 is not set
955# CONFIG_LCD_PLATFORM is not set 1006# CONFIG_LCD_PLATFORM is not set
956CONFIG_BACKLIGHT_CLASS_DEVICE=m 1007CONFIG_BACKLIGHT_CLASS_DEVICE=m
957CONFIG_BACKLIGHT_CORGI=m 1008CONFIG_BACKLIGHT_GENERIC=m
1009# CONFIG_BACKLIGHT_ADP8870 is not set
958 1010
959# 1011#
960# Display device support 1012# Display device support
@@ -963,19 +1015,27 @@ CONFIG_BACKLIGHT_CORGI=m
963# CONFIG_LOGO is not set 1015# CONFIG_LOGO is not set
964CONFIG_SOUND=m 1016CONFIG_SOUND=m
965CONFIG_SOUND_OSS_CORE=y 1017CONFIG_SOUND_OSS_CORE=y
1018CONFIG_SOUND_OSS_CORE_PRECLAIM=y
966CONFIG_SND=m 1019CONFIG_SND=m
967CONFIG_SND_TIMER=m 1020CONFIG_SND_TIMER=m
968CONFIG_SND_PCM=m 1021CONFIG_SND_PCM=m
1022CONFIG_SND_JACK=y
969# CONFIG_SND_SEQUENCER is not set 1023# CONFIG_SND_SEQUENCER is not set
970CONFIG_SND_OSSEMUL=y 1024CONFIG_SND_OSSEMUL=y
971CONFIG_SND_MIXER_OSS=m 1025CONFIG_SND_MIXER_OSS=m
972CONFIG_SND_PCM_OSS=m 1026CONFIG_SND_PCM_OSS=m
973CONFIG_SND_PCM_OSS_PLUGINS=y 1027CONFIG_SND_PCM_OSS_PLUGINS=y
1028# CONFIG_SND_HRTIMER is not set
974# CONFIG_SND_DYNAMIC_MINORS is not set 1029# CONFIG_SND_DYNAMIC_MINORS is not set
975CONFIG_SND_SUPPORT_OLD_API=y 1030CONFIG_SND_SUPPORT_OLD_API=y
976CONFIG_SND_VERBOSE_PROCFS=y 1031CONFIG_SND_VERBOSE_PROCFS=y
977# CONFIG_SND_VERBOSE_PRINTK is not set 1032# CONFIG_SND_VERBOSE_PRINTK is not set
978# CONFIG_SND_DEBUG is not set 1033# CONFIG_SND_DEBUG is not set
1034# CONFIG_SND_RAWMIDI_SEQ is not set
1035# CONFIG_SND_OPL3_LIB_SEQ is not set
1036# CONFIG_SND_OPL4_LIB_SEQ is not set
1037# CONFIG_SND_SBAWE_SEQ is not set
1038# CONFIG_SND_EMU10K1_SEQ is not set
979CONFIG_SND_DRIVERS=y 1039CONFIG_SND_DRIVERS=y
980# CONFIG_SND_DUMMY is not set 1040# CONFIG_SND_DUMMY is not set
981# CONFIG_SND_MTPAV is not set 1041# CONFIG_SND_MTPAV is not set
@@ -986,13 +1046,6 @@ CONFIG_SND_SPI=y
986# 1046#
987# ALSA Blackfin devices 1047# ALSA Blackfin devices
988# 1048#
989CONFIG_SND_BLACKFIN_AD1836=m
990CONFIG_SND_BLACKFIN_AD1836_TDM=y
991# CONFIG_SND_BLACKFIN_AD1836_I2S is not set
992CONFIG_SND_BLACKFIN_AD1836_MULSUB=y
993# CONFIG_SND_BLACKFIN_AD1836_5P1 is not set
994CONFIG_SND_BLACKFIN_SPORT=0
995CONFIG_SND_BLACKFIN_SPI_PFBIT=4
996CONFIG_SND_BFIN_SPORT=0 1049CONFIG_SND_BFIN_SPORT=0
997CONFIG_SND_BFIN_AD73322=m 1050CONFIG_SND_BFIN_AD73322=m
998CONFIG_SND_BFIN_AD73322_SPORT0_SE=10 1051CONFIG_SND_BFIN_AD73322_SPORT0_SE=10
@@ -1003,16 +1056,20 @@ CONFIG_SND_SOC_AC97_BUS=y
1003CONFIG_SND_BF5XX_I2S=m 1056CONFIG_SND_BF5XX_I2S=m
1004# CONFIG_SND_BF5XX_SOC_SSM2602 is not set 1057# CONFIG_SND_BF5XX_SOC_SSM2602 is not set
1005CONFIG_SND_BF5XX_SOC_AD73311=m 1058CONFIG_SND_BF5XX_SOC_AD73311=m
1059# CONFIG_SND_BF5XX_SOC_ADAU1371 is not set
1060# CONFIG_SND_BF5XX_SOC_ADAU1761 is not set
1006CONFIG_SND_BFIN_AD73311_SE=4 1061CONFIG_SND_BFIN_AD73311_SE=4
1062# CONFIG_SND_BF5XX_TDM is not set
1007CONFIG_SND_BF5XX_AC97=m 1063CONFIG_SND_BF5XX_AC97=m
1008CONFIG_SND_BF5XX_MMAP_SUPPORT=y 1064CONFIG_SND_BF5XX_MMAP_SUPPORT=y
1009# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set 1065# CONFIG_SND_BF5XX_MULTICHAN_SUPPORT is not set
1066# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
1067CONFIG_SND_BF5XX_SOC_AD1980=m
1010CONFIG_SND_BF5XX_SOC_SPORT=m 1068CONFIG_SND_BF5XX_SOC_SPORT=m
1011CONFIG_SND_BF5XX_SOC_I2S=m 1069CONFIG_SND_BF5XX_SOC_I2S=m
1012CONFIG_SND_BF5XX_SOC_AC97=m 1070CONFIG_SND_BF5XX_SOC_AC97=m
1013CONFIG_SND_BF5XX_SOC_AD1980=m
1014CONFIG_SND_BF5XX_SPORT_NUM=0 1071CONFIG_SND_BF5XX_SPORT_NUM=0
1015# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set 1072CONFIG_SND_SOC_I2C_AND_SPI=m
1016# CONFIG_SND_SOC_ALL_CODECS is not set 1073# CONFIG_SND_SOC_ALL_CODECS is not set
1017CONFIG_SND_SOC_AD1980=m 1074CONFIG_SND_SOC_AD1980=m
1018CONFIG_SND_SOC_AD73311=m 1075CONFIG_SND_SOC_AD73311=m
@@ -1020,14 +1077,12 @@ CONFIG_SND_SOC_AD73311=m
1020CONFIG_AC97_BUS=m 1077CONFIG_AC97_BUS=m
1021CONFIG_HID_SUPPORT=y 1078CONFIG_HID_SUPPORT=y
1022CONFIG_HID=y 1079CONFIG_HID=y
1023# CONFIG_HID_DEBUG is not set
1024# CONFIG_HIDRAW is not set 1080# CONFIG_HIDRAW is not set
1025# CONFIG_HID_PID is not set 1081# CONFIG_HID_PID is not set
1026 1082
1027# 1083#
1028# Special HID drivers 1084# Special HID drivers
1029# 1085#
1030CONFIG_HID_COMPAT=y
1031# CONFIG_USB_SUPPORT is not set 1086# CONFIG_USB_SUPPORT is not set
1032# CONFIG_MMC is not set 1087# CONFIG_MMC is not set
1033# CONFIG_MEMSTICK is not set 1088# CONFIG_MEMSTICK is not set
@@ -1064,6 +1119,7 @@ CONFIG_RTC_INTF_DEV=y
1064# CONFIG_RTC_DRV_S35390A is not set 1119# CONFIG_RTC_DRV_S35390A is not set
1065# CONFIG_RTC_DRV_FM3130 is not set 1120# CONFIG_RTC_DRV_FM3130 is not set
1066# CONFIG_RTC_DRV_RX8581 is not set 1121# CONFIG_RTC_DRV_RX8581 is not set
1122# CONFIG_RTC_DRV_RX8025 is not set
1067 1123
1068# 1124#
1069# SPI RTC drivers 1125# SPI RTC drivers
@@ -1075,6 +1131,7 @@ CONFIG_RTC_INTF_DEV=y
1075# CONFIG_RTC_DRV_R9701 is not set 1131# CONFIG_RTC_DRV_R9701 is not set
1076# CONFIG_RTC_DRV_RS5C348 is not set 1132# CONFIG_RTC_DRV_RS5C348 is not set
1077# CONFIG_RTC_DRV_DS3234 is not set 1133# CONFIG_RTC_DRV_DS3234 is not set
1134# CONFIG_RTC_DRV_PCF2123 is not set
1078 1135
1079# 1136#
1080# Platform RTC drivers 1137# Platform RTC drivers
@@ -1095,10 +1152,21 @@ CONFIG_RTC_INTF_DEV=y
1095# 1152#
1096CONFIG_RTC_DRV_BFIN=y 1153CONFIG_RTC_DRV_BFIN=y
1097# CONFIG_DMADEVICES is not set 1154# CONFIG_DMADEVICES is not set
1155# CONFIG_AUXDISPLAY is not set
1098# CONFIG_UIO is not set 1156# CONFIG_UIO is not set
1157
1158#
1159# TI VLYNQ
1160#
1099# CONFIG_STAGING is not set 1161# CONFIG_STAGING is not set
1100 1162
1101# 1163#
1164# Firmware Drivers
1165#
1166# CONFIG_FIRMWARE_MEMMAP is not set
1167# CONFIG_SIGMA is not set
1168
1169#
1102# File systems 1170# File systems
1103# 1171#
1104# CONFIG_EXT2_FS is not set 1172# CONFIG_EXT2_FS is not set
@@ -1107,9 +1175,13 @@ CONFIG_RTC_DRV_BFIN=y
1107# CONFIG_REISERFS_FS is not set 1175# CONFIG_REISERFS_FS is not set
1108# CONFIG_JFS_FS is not set 1176# CONFIG_JFS_FS is not set
1109# CONFIG_FS_POSIX_ACL is not set 1177# CONFIG_FS_POSIX_ACL is not set
1110CONFIG_FILE_LOCKING=y
1111# CONFIG_XFS_FS is not set 1178# CONFIG_XFS_FS is not set
1179# CONFIG_GFS2_FS is not set
1112# CONFIG_OCFS2_FS is not set 1180# CONFIG_OCFS2_FS is not set
1181# CONFIG_BTRFS_FS is not set
1182# CONFIG_NILFS2_FS is not set
1183CONFIG_FILE_LOCKING=y
1184CONFIG_FSNOTIFY=y
1113# CONFIG_DNOTIFY is not set 1185# CONFIG_DNOTIFY is not set
1114CONFIG_INOTIFY=y 1186CONFIG_INOTIFY=y
1115CONFIG_INOTIFY_USER=y 1187CONFIG_INOTIFY_USER=y
@@ -1119,6 +1191,11 @@ CONFIG_INOTIFY_USER=y
1119# CONFIG_FUSE_FS is not set 1191# CONFIG_FUSE_FS is not set
1120 1192
1121# 1193#
1194# Caches
1195#
1196# CONFIG_FSCACHE is not set
1197
1198#
1122# CD-ROM/DVD Filesystems 1199# CD-ROM/DVD Filesystems
1123# 1200#
1124# CONFIG_ISO9660_FS is not set 1201# CONFIG_ISO9660_FS is not set
@@ -1137,13 +1214,9 @@ CONFIG_INOTIFY_USER=y
1137CONFIG_PROC_FS=y 1214CONFIG_PROC_FS=y
1138CONFIG_PROC_SYSCTL=y 1215CONFIG_PROC_SYSCTL=y
1139CONFIG_SYSFS=y 1216CONFIG_SYSFS=y
1140# CONFIG_TMPFS is not set
1141# CONFIG_HUGETLB_PAGE is not set 1217# CONFIG_HUGETLB_PAGE is not set
1142# CONFIG_CONFIGFS_FS is not set 1218# CONFIG_CONFIGFS_FS is not set
1143 1219CONFIG_MISC_FILESYSTEMS=y
1144#
1145# Miscellaneous filesystems
1146#
1147# CONFIG_ADFS_FS is not set 1220# CONFIG_ADFS_FS is not set
1148# CONFIG_AFFS_FS is not set 1221# CONFIG_AFFS_FS is not set
1149# CONFIG_HFS_FS is not set 1222# CONFIG_HFS_FS is not set
@@ -1162,17 +1235,8 @@ CONFIG_JFFS2_ZLIB=y
1162# CONFIG_JFFS2_LZO is not set 1235# CONFIG_JFFS2_LZO is not set
1163CONFIG_JFFS2_RTIME=y 1236CONFIG_JFFS2_RTIME=y
1164# CONFIG_JFFS2_RUBIN is not set 1237# CONFIG_JFFS2_RUBIN is not set
1165CONFIG_YAFFS_FS=m
1166CONFIG_YAFFS_YAFFS1=y
1167# CONFIG_YAFFS_9BYTE_TAGS is not set
1168# CONFIG_YAFFS_DOES_ECC is not set
1169CONFIG_YAFFS_YAFFS2=y
1170CONFIG_YAFFS_AUTO_YAFFS2=y
1171# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1172# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1173# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1174CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1175# CONFIG_CRAMFS is not set 1238# CONFIG_CRAMFS is not set
1239# CONFIG_SQUASHFS is not set
1176# CONFIG_VXFS_FS is not set 1240# CONFIG_VXFS_FS is not set
1177# CONFIG_MINIX_FS is not set 1241# CONFIG_MINIX_FS is not set
1178# CONFIG_OMFS_FS is not set 1242# CONFIG_OMFS_FS is not set
@@ -1191,7 +1255,6 @@ CONFIG_LOCKD=m
1191CONFIG_LOCKD_V4=y 1255CONFIG_LOCKD_V4=y
1192CONFIG_NFS_COMMON=y 1256CONFIG_NFS_COMMON=y
1193CONFIG_SUNRPC=m 1257CONFIG_SUNRPC=m
1194# CONFIG_SUNRPC_REGISTER_V4 is not set
1195# CONFIG_RPCSEC_GSS_KRB5 is not set 1258# CONFIG_RPCSEC_GSS_KRB5 is not set
1196# CONFIG_RPCSEC_GSS_SPKM3 is not set 1259# CONFIG_RPCSEC_GSS_SPKM3 is not set
1197CONFIG_SMB_FS=m 1260CONFIG_SMB_FS=m
@@ -1256,14 +1319,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1256CONFIG_ENABLE_MUST_CHECK=y 1319CONFIG_ENABLE_MUST_CHECK=y
1257CONFIG_FRAME_WARN=1024 1320CONFIG_FRAME_WARN=1024
1258# CONFIG_MAGIC_SYSRQ is not set 1321# CONFIG_MAGIC_SYSRQ is not set
1322# CONFIG_STRIP_ASM_SYMS is not set
1259# CONFIG_UNUSED_SYMBOLS is not set 1323# CONFIG_UNUSED_SYMBOLS is not set
1260CONFIG_DEBUG_FS=y 1324CONFIG_DEBUG_FS=y
1261# CONFIG_HEADERS_CHECK is not set 1325# CONFIG_HEADERS_CHECK is not set
1326CONFIG_DEBUG_SECTION_MISMATCH=y
1262CONFIG_DEBUG_KERNEL=y 1327CONFIG_DEBUG_KERNEL=y
1263CONFIG_DEBUG_SHIRQ=y 1328CONFIG_DEBUG_SHIRQ=y
1264CONFIG_DETECT_SOFTLOCKUP=y 1329CONFIG_DETECT_SOFTLOCKUP=y
1265# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1330# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1266CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1331CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1332CONFIG_DETECT_HUNG_TASK=y
1333# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1334CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1267CONFIG_SCHED_DEBUG=y 1335CONFIG_SCHED_DEBUG=y
1268# CONFIG_SCHEDSTATS is not set 1336# CONFIG_SCHEDSTATS is not set
1269# CONFIG_TIMER_STATS is not set 1337# CONFIG_TIMER_STATS is not set
@@ -1271,31 +1339,39 @@ CONFIG_SCHED_DEBUG=y
1271# CONFIG_DEBUG_SLAB is not set 1339# CONFIG_DEBUG_SLAB is not set
1272# CONFIG_DEBUG_SPINLOCK is not set 1340# CONFIG_DEBUG_SPINLOCK is not set
1273# CONFIG_DEBUG_MUTEXES is not set 1341# CONFIG_DEBUG_MUTEXES is not set
1342# CONFIG_DEBUG_LOCK_ALLOC is not set
1343# CONFIG_PROVE_LOCKING is not set
1344# CONFIG_LOCK_STAT is not set
1274# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1345# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1275# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1346# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1276# CONFIG_DEBUG_KOBJECT is not set 1347# CONFIG_DEBUG_KOBJECT is not set
1277CONFIG_DEBUG_BUGVERBOSE=y 1348CONFIG_DEBUG_BUGVERBOSE=y
1278CONFIG_DEBUG_INFO=y 1349CONFIG_DEBUG_INFO=y
1279# CONFIG_DEBUG_VM is not set 1350# CONFIG_DEBUG_VM is not set
1351# CONFIG_DEBUG_NOMMU_REGIONS is not set
1280# CONFIG_DEBUG_WRITECOUNT is not set 1352# CONFIG_DEBUG_WRITECOUNT is not set
1281# CONFIG_DEBUG_MEMORY_INIT is not set 1353# CONFIG_DEBUG_MEMORY_INIT is not set
1282# CONFIG_DEBUG_LIST is not set 1354# CONFIG_DEBUG_LIST is not set
1283# CONFIG_DEBUG_SG is not set 1355# CONFIG_DEBUG_SG is not set
1356# CONFIG_DEBUG_NOTIFIERS is not set
1357# CONFIG_DEBUG_CREDENTIALS is not set
1284# CONFIG_FRAME_POINTER is not set 1358# CONFIG_FRAME_POINTER is not set
1285# CONFIG_BOOT_PRINTK_DELAY is not set 1359# CONFIG_BOOT_PRINTK_DELAY is not set
1286# CONFIG_RCU_TORTURE_TEST is not set 1360# CONFIG_RCU_TORTURE_TEST is not set
1287# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1361# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1288# CONFIG_BACKTRACE_SELF_TEST is not set 1362# CONFIG_BACKTRACE_SELF_TEST is not set
1289# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1363# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1364# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1290# CONFIG_FAULT_INJECTION is not set 1365# CONFIG_FAULT_INJECTION is not set
1291 1366# CONFIG_PAGE_POISONING is not set
1292# 1367CONFIG_HAVE_FUNCTION_TRACER=y
1293# Tracers 1368CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1294# 1369CONFIG_TRACING_SUPPORT=y
1295# CONFIG_SCHED_TRACER is not set 1370# CONFIG_FTRACE is not set
1296# CONFIG_CONTEXT_SWITCH_TRACER is not set 1371# CONFIG_BRANCH_PROFILE_NONE is not set
1297# CONFIG_BOOT_TRACER is not set 1372# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1298# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1373# CONFIG_PROFILE_ALL_BRANCHES is not set
1374# CONFIG_DYNAMIC_DEBUG is not set
1299# CONFIG_SAMPLES is not set 1375# CONFIG_SAMPLES is not set
1300CONFIG_HAVE_ARCH_KGDB=y 1376CONFIG_HAVE_ARCH_KGDB=y
1301# CONFIG_KGDB is not set 1377# CONFIG_KGDB is not set
@@ -1320,6 +1396,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1320CONFIG_EARLY_PRINTK=y 1396CONFIG_EARLY_PRINTK=y
1321CONFIG_CPLB_INFO=y 1397CONFIG_CPLB_INFO=y
1322CONFIG_ACCESS_CHECK=y 1398CONFIG_ACCESS_CHECK=y
1399# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1323 1400
1324# 1401#
1325# Security options 1402# Security options
@@ -1328,14 +1405,14 @@ CONFIG_ACCESS_CHECK=y
1328CONFIG_SECURITY=y 1405CONFIG_SECURITY=y
1329# CONFIG_SECURITYFS is not set 1406# CONFIG_SECURITYFS is not set
1330# CONFIG_SECURITY_NETWORK is not set 1407# CONFIG_SECURITY_NETWORK is not set
1408# CONFIG_SECURITY_PATH is not set
1331# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1409# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1332CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1410# CONFIG_SECURITY_TOMOYO is not set
1333CONFIG_CRYPTO=y 1411CONFIG_CRYPTO=y
1334 1412
1335# 1413#
1336# Crypto core or helper 1414# Crypto core or helper
1337# 1415#
1338# CONFIG_CRYPTO_FIPS is not set
1339# CONFIG_CRYPTO_MANAGER is not set 1416# CONFIG_CRYPTO_MANAGER is not set
1340# CONFIG_CRYPTO_MANAGER2 is not set 1417# CONFIG_CRYPTO_MANAGER2 is not set
1341# CONFIG_CRYPTO_GF128MUL is not set 1418# CONFIG_CRYPTO_GF128MUL is not set
@@ -1367,11 +1444,13 @@ CONFIG_CRYPTO=y
1367# 1444#
1368# CONFIG_CRYPTO_HMAC is not set 1445# CONFIG_CRYPTO_HMAC is not set
1369# CONFIG_CRYPTO_XCBC is not set 1446# CONFIG_CRYPTO_XCBC is not set
1447# CONFIG_CRYPTO_VMAC is not set
1370 1448
1371# 1449#
1372# Digest 1450# Digest
1373# 1451#
1374# CONFIG_CRYPTO_CRC32C is not set 1452# CONFIG_CRYPTO_CRC32C is not set
1453# CONFIG_CRYPTO_GHASH is not set
1375# CONFIG_CRYPTO_MD4 is not set 1454# CONFIG_CRYPTO_MD4 is not set
1376# CONFIG_CRYPTO_MD5 is not set 1455# CONFIG_CRYPTO_MD5 is not set
1377# CONFIG_CRYPTO_MICHAEL_MIC is not set 1456# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1408,6 +1487,7 @@ CONFIG_CRYPTO=y
1408# Compression 1487# Compression
1409# 1488#
1410# CONFIG_CRYPTO_DEFLATE is not set 1489# CONFIG_CRYPTO_DEFLATE is not set
1490# CONFIG_CRYPTO_ZLIB is not set
1411# CONFIG_CRYPTO_LZO is not set 1491# CONFIG_CRYPTO_LZO is not set
1412 1492
1413# 1493#
@@ -1415,11 +1495,13 @@ CONFIG_CRYPTO=y
1415# 1495#
1416# CONFIG_CRYPTO_ANSI_CPRNG is not set 1496# CONFIG_CRYPTO_ANSI_CPRNG is not set
1417CONFIG_CRYPTO_HW=y 1497CONFIG_CRYPTO_HW=y
1498# CONFIG_BINARY_PRINTF is not set
1418 1499
1419# 1500#
1420# Library routines 1501# Library routines
1421# 1502#
1422CONFIG_BITREVERSE=y 1503CONFIG_BITREVERSE=y
1504CONFIG_GENERIC_FIND_LAST_BIT=y
1423CONFIG_CRC_CCITT=m 1505CONFIG_CRC_CCITT=m
1424# CONFIG_CRC16 is not set 1506# CONFIG_CRC16 is not set
1425# CONFIG_CRC_T10DIF is not set 1507# CONFIG_CRC_T10DIF is not set
@@ -1429,6 +1511,8 @@ CONFIG_CRC32=y
1429# CONFIG_LIBCRC32C is not set 1511# CONFIG_LIBCRC32C is not set
1430CONFIG_ZLIB_INFLATE=y 1512CONFIG_ZLIB_INFLATE=y
1431CONFIG_ZLIB_DEFLATE=m 1513CONFIG_ZLIB_DEFLATE=m
1514CONFIG_DECOMPRESS_GZIP=y
1432CONFIG_HAS_IOMEM=y 1515CONFIG_HAS_IOMEM=y
1433CONFIG_HAS_IOPORT=y 1516CONFIG_HAS_IOPORT=y
1434CONFIG_HAS_DMA=y 1517CONFIG_HAS_DMA=y
1518CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF538-EZKIT_defconfig b/arch/blackfin/configs/BF538-EZKIT_defconfig
index 09ea2499555e..bc1871d89fd5 100644
--- a/arch/blackfin/configs/BF538-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF538-EZKIT_defconfig
@@ -1,22 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# Thu May 21 05:50:01 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
10CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
11CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
12CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
17CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
18CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
20 25
21# 26#
22# General setup 27# General setup
@@ -26,22 +31,41 @@ CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
28CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
29CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
30CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
34# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
35CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
36CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
37CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_CGROUPS is not set
39# CONFIG_GROUP_SCHED is not set 59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
40# CONFIG_SYSFS_DEPRECATED_V2 is not set 61# CONFIG_SYSFS_DEPRECATED_V2 is not set
41# CONFIG_RELAY is not set 62# CONFIG_RELAY is not set
42# CONFIG_NAMESPACES is not set 63# CONFIG_NAMESPACES is not set
43CONFIG_BLK_DEV_INITRD=y 64CONFIG_BLK_DEV_INITRD=y
44CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
66CONFIG_RD_GZIP=y
67# CONFIG_RD_BZIP2 is not set
68# CONFIG_RD_LZMA is not set
45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 69# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
46CONFIG_SYSCTL=y 70CONFIG_SYSCTL=y
47CONFIG_ANON_INODES=y 71CONFIG_ANON_INODES=y
@@ -62,6 +86,10 @@ CONFIG_EPOLL=y
62# CONFIG_TIMERFD is not set 86# CONFIG_TIMERFD is not set
63# CONFIG_EVENTFD is not set 87# CONFIG_EVENTFD is not set
64# CONFIG_AIO is not set 88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
65CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
66CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
67CONFIG_SLAB=y 95CONFIG_SLAB=y
@@ -69,11 +97,15 @@ CONFIG_SLAB=y
69# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
70CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
71# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
72# CONFIG_MARKERS is not set
73CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
74# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
75CONFIG_SLABINFO=y 108CONFIG_SLABINFO=y
76CONFIG_TINY_SHMEM=y
77CONFIG_BASE_SMALL=0 109CONFIG_BASE_SMALL=0
78CONFIG_MODULES=y 110CONFIG_MODULES=y
79# CONFIG_MODULE_FORCE_LOAD is not set 111# CONFIG_MODULE_FORCE_LOAD is not set
@@ -81,11 +113,8 @@ CONFIG_MODULE_UNLOAD=y
81# CONFIG_MODULE_FORCE_UNLOAD is not set 113# CONFIG_MODULE_FORCE_UNLOAD is not set
82# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
83# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
84CONFIG_KMOD=y
85CONFIG_BLOCK=y 116CONFIG_BLOCK=y
86# CONFIG_LBD is not set 117# CONFIG_LBDAF is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
90# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
91 120
@@ -101,7 +130,6 @@ CONFIG_DEFAULT_AS=y
101# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
102# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="anticipatory" 132CONFIG_DEFAULT_IOSCHED="anticipatory"
104CONFIG_CLASSIC_RCU=y
105# CONFIG_PREEMPT_NONE is not set 133# CONFIG_PREEMPT_NONE is not set
106CONFIG_PREEMPT_VOLUNTARY=y 134CONFIG_PREEMPT_VOLUNTARY=y
107# CONFIG_PREEMPT is not set 135# CONFIG_PREEMPT is not set
@@ -132,15 +160,15 @@ CONFIG_PREEMPT_VOLUNTARY=y
132# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
133CONFIG_BF538=y 161CONFIG_BF538=y
134# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
135# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
136# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
137# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
138# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
139# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
140# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
141# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
142# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
143# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
144# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
145# CONFIG_BF561 is not set 173# CONFIG_BF561 is not set
146CONFIG_BF_REV_MIN=4 174CONFIG_BF_REV_MIN=4
@@ -246,7 +274,7 @@ CONFIG_GENERIC_TIME=y
246CONFIG_GENERIC_CLOCKEVENTS=y 274CONFIG_GENERIC_CLOCKEVENTS=y
247# CONFIG_TICKSOURCE_GPTMR0 is not set 275# CONFIG_TICKSOURCE_GPTMR0 is not set
248CONFIG_TICKSOURCE_CORETMR=y 276CONFIG_TICKSOURCE_CORETMR=y
249# CONFIG_CYCLES_CLOCKSOURCE is not set 277CONFIG_CYCLES_CLOCKSOURCE=y
250# CONFIG_GPTMR0_CLOCKSOURCE is not set 278# CONFIG_GPTMR0_CLOCKSOURCE is not set
251CONFIG_TICK_ONESHOT=y 279CONFIG_TICK_ONESHOT=y
252# CONFIG_NO_HZ is not set 280# CONFIG_NO_HZ is not set
@@ -298,7 +326,6 @@ CONFIG_FLATMEM=y
298CONFIG_FLAT_NODE_MEM_MAP=y 326CONFIG_FLAT_NODE_MEM_MAP=y
299CONFIG_PAGEFLAGS_EXTENDED=y 327CONFIG_PAGEFLAGS_EXTENDED=y
300CONFIG_SPLIT_PTLOCK_CPUS=4 328CONFIG_SPLIT_PTLOCK_CPUS=4
301# CONFIG_RESOURCES_64BIT is not set
302# CONFIG_PHYS_ADDR_T_64BIT is not set 329# CONFIG_PHYS_ADDR_T_64BIT is not set
303CONFIG_ZONE_DMA_FLAG=1 330CONFIG_ZONE_DMA_FLAG=1
304CONFIG_VIRT_TO_BUS=y 331CONFIG_VIRT_TO_BUS=y
@@ -307,16 +334,18 @@ CONFIG_BFIN_GPTIMERS=m
307# CONFIG_DMA_UNCACHED_4M is not set 334# CONFIG_DMA_UNCACHED_4M is not set
308# CONFIG_DMA_UNCACHED_2M is not set 335# CONFIG_DMA_UNCACHED_2M is not set
309CONFIG_DMA_UNCACHED_1M=y 336CONFIG_DMA_UNCACHED_1M=y
337# CONFIG_DMA_UNCACHED_512K is not set
338# CONFIG_DMA_UNCACHED_256K is not set
339# CONFIG_DMA_UNCACHED_128K is not set
310# CONFIG_DMA_UNCACHED_NONE is not set 340# CONFIG_DMA_UNCACHED_NONE is not set
311 341
312# 342#
313# Cache Support 343# Cache Support
314# 344#
315CONFIG_BFIN_ICACHE=y 345CONFIG_BFIN_ICACHE=y
316# CONFIG_BFIN_ICACHE_LOCK is not set 346CONFIG_BFIN_EXTMEM_ICACHEABLE=y
317CONFIG_BFIN_DCACHE=y 347CONFIG_BFIN_DCACHE=y
318# CONFIG_BFIN_DCACHE_BANKA is not set 348# CONFIG_BFIN_DCACHE_BANKA is not set
319CONFIG_BFIN_EXTMEM_ICACHEABLE=y
320CONFIG_BFIN_EXTMEM_DCACHEABLE=y 349CONFIG_BFIN_EXTMEM_DCACHEABLE=y
321CONFIG_BFIN_EXTMEM_WRITEBACK=y 350CONFIG_BFIN_EXTMEM_WRITEBACK=y
322# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 351# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -327,7 +356,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
327# CONFIG_MPU is not set 356# CONFIG_MPU is not set
328 357
329# 358#
330# Asynchonous Memory Configuration 359# Asynchronous Memory Configuration
331# 360#
332 361
333# 362#
@@ -383,11 +412,6 @@ CONFIG_NET=y
383CONFIG_PACKET=y 412CONFIG_PACKET=y
384# CONFIG_PACKET_MMAP is not set 413# CONFIG_PACKET_MMAP is not set
385CONFIG_UNIX=y 414CONFIG_UNIX=y
386CONFIG_XFRM=y
387# CONFIG_XFRM_USER is not set
388# CONFIG_XFRM_SUB_POLICY is not set
389# CONFIG_XFRM_MIGRATE is not set
390# CONFIG_XFRM_STATISTICS is not set
391# CONFIG_NET_KEY is not set 415# CONFIG_NET_KEY is not set
392CONFIG_INET=y 416CONFIG_INET=y
393# CONFIG_IP_MULTICAST is not set 417# CONFIG_IP_MULTICAST is not set
@@ -411,7 +435,6 @@ CONFIG_IP_PNP=y
411# CONFIG_INET_XFRM_MODE_BEET is not set 435# CONFIG_INET_XFRM_MODE_BEET is not set
412# CONFIG_INET_LRO is not set 436# CONFIG_INET_LRO is not set
413# CONFIG_INET_DIAG is not set 437# CONFIG_INET_DIAG is not set
414CONFIG_INET_TCP_DIAG=y
415# CONFIG_TCP_CONG_ADVANCED is not set 438# CONFIG_TCP_CONG_ADVANCED is not set
416CONFIG_TCP_CONG_CUBIC=y 439CONFIG_TCP_CONG_CUBIC=y
417CONFIG_DEFAULT_TCP_CONG="cubic" 440CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -422,6 +445,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
422# CONFIG_NETFILTER is not set 445# CONFIG_NETFILTER is not set
423# CONFIG_IP_DCCP is not set 446# CONFIG_IP_DCCP is not set
424# CONFIG_IP_SCTP is not set 447# CONFIG_IP_SCTP is not set
448# CONFIG_RDS is not set
425# CONFIG_TIPC is not set 449# CONFIG_TIPC is not set
426# CONFIG_ATM is not set 450# CONFIG_ATM is not set
427# CONFIG_BRIDGE is not set 451# CONFIG_BRIDGE is not set
@@ -435,14 +459,34 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
435# CONFIG_LAPB is not set 459# CONFIG_LAPB is not set
436# CONFIG_ECONET is not set 460# CONFIG_ECONET is not set
437# CONFIG_WAN_ROUTER is not set 461# CONFIG_WAN_ROUTER is not set
462# CONFIG_PHONET is not set
463# CONFIG_IEEE802154 is not set
438# CONFIG_NET_SCHED is not set 464# CONFIG_NET_SCHED is not set
465# CONFIG_DCB is not set
439 466
440# 467#
441# Network testing 468# Network testing
442# 469#
443# CONFIG_NET_PKTGEN is not set 470# CONFIG_NET_PKTGEN is not set
444# CONFIG_HAMRADIO is not set 471# CONFIG_HAMRADIO is not set
445# CONFIG_CAN is not set 472CONFIG_CAN=m
473CONFIG_CAN_RAW=m
474CONFIG_CAN_BCM=m
475
476#
477# CAN Device Drivers
478#
479# CONFIG_CAN_VCAN is not set
480CONFIG_CAN_DEV=m
481# CONFIG_CAN_CALC_BITTIMING is not set
482CONFIG_CAN_BFIN=m
483# CONFIG_CAN_SJA1000 is not set
484
485#
486# CAN USB interfaces
487#
488# CONFIG_CAN_EMS_USB is not set
489# CONFIG_CAN_DEBUG_DEVICES is not set
446CONFIG_IRDA=m 490CONFIG_IRDA=m
447 491
448# 492#
@@ -481,13 +525,8 @@ CONFIG_SIR_BFIN_DMA=y
481# 525#
482# CONFIG_BT is not set 526# CONFIG_BT is not set
483# CONFIG_AF_RXRPC is not set 527# CONFIG_AF_RXRPC is not set
484# CONFIG_PHONET is not set 528# CONFIG_WIRELESS is not set
485CONFIG_WIRELESS=y 529# CONFIG_WIMAX is not set
486# CONFIG_CFG80211 is not set
487CONFIG_WIRELESS_OLD_REGULATORY=y
488# CONFIG_WIRELESS_EXT is not set
489# CONFIG_MAC80211 is not set
490# CONFIG_IEEE80211 is not set
491# CONFIG_RFKILL is not set 530# CONFIG_RFKILL is not set
492# CONFIG_NET_9P is not set 531# CONFIG_NET_9P is not set
493 532
@@ -508,6 +547,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
508# CONFIG_CONNECTOR is not set 547# CONFIG_CONNECTOR is not set
509CONFIG_MTD=y 548CONFIG_MTD=y
510# CONFIG_MTD_DEBUG is not set 549# CONFIG_MTD_DEBUG is not set
550# CONFIG_MTD_TESTS is not set
511# CONFIG_MTD_CONCAT is not set 551# CONFIG_MTD_CONCAT is not set
512CONFIG_MTD_PARTITIONS=y 552CONFIG_MTD_PARTITIONS=y
513# CONFIG_MTD_REDBOOT_PARTS is not set 553# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -566,6 +606,7 @@ CONFIG_MTD_PHYSMAP=m
566# 606#
567# CONFIG_MTD_DATAFLASH is not set 607# CONFIG_MTD_DATAFLASH is not set
568# CONFIG_MTD_M25P80 is not set 608# CONFIG_MTD_M25P80 is not set
609# CONFIG_MTD_SST25L is not set
569# CONFIG_MTD_SLRAM is not set 610# CONFIG_MTD_SLRAM is not set
570# CONFIG_MTD_PHRAM is not set 611# CONFIG_MTD_PHRAM is not set
571# CONFIG_MTD_MTDRAM is not set 612# CONFIG_MTD_MTDRAM is not set
@@ -581,11 +622,6 @@ CONFIG_MTD_NAND=m
581# CONFIG_MTD_NAND_VERIFY_WRITE is not set 622# CONFIG_MTD_NAND_VERIFY_WRITE is not set
582# CONFIG_MTD_NAND_ECC_SMC is not set 623# CONFIG_MTD_NAND_ECC_SMC is not set
583# CONFIG_MTD_NAND_MUSEUM_IDS is not set 624# CONFIG_MTD_NAND_MUSEUM_IDS is not set
584CONFIG_MTD_NAND_BFIN=m
585CONFIG_BFIN_NAND_BASE=0x20212000
586CONFIG_BFIN_NAND_CLE=2
587CONFIG_BFIN_NAND_ALE=1
588CONFIG_BFIN_NAND_READY=3
589CONFIG_MTD_NAND_IDS=m 625CONFIG_MTD_NAND_IDS=m
590# CONFIG_MTD_NAND_DISKONCHIP is not set 626# CONFIG_MTD_NAND_DISKONCHIP is not set
591# CONFIG_MTD_NAND_NANDSIM is not set 627# CONFIG_MTD_NAND_NANDSIM is not set
@@ -593,6 +629,11 @@ CONFIG_MTD_NAND_IDS=m
593# CONFIG_MTD_ONENAND is not set 629# CONFIG_MTD_ONENAND is not set
594 630
595# 631#
632# LPDDR flash memory drivers
633#
634# CONFIG_MTD_LPDDR is not set
635
636#
596# UBI - Unsorted block images 637# UBI - Unsorted block images
597# 638#
598# CONFIG_MTD_UBI is not set 639# CONFIG_MTD_UBI is not set
@@ -643,14 +684,20 @@ CONFIG_SMSC_PHY=y
643# CONFIG_BROADCOM_PHY is not set 684# CONFIG_BROADCOM_PHY is not set
644# CONFIG_ICPLUS_PHY is not set 685# CONFIG_ICPLUS_PHY is not set
645# CONFIG_REALTEK_PHY is not set 686# CONFIG_REALTEK_PHY is not set
687# CONFIG_NATIONAL_PHY is not set
688# CONFIG_STE10XP is not set
689# CONFIG_LSI_ET1011C_PHY is not set
646# CONFIG_FIXED_PHY is not set 690# CONFIG_FIXED_PHY is not set
647# CONFIG_MDIO_BITBANG is not set 691# CONFIG_MDIO_BITBANG is not set
648CONFIG_NET_ETHERNET=y 692CONFIG_NET_ETHERNET=y
649CONFIG_MII=y 693CONFIG_MII=y
650CONFIG_SMC91X=y 694CONFIG_SMC91X=y
651# CONFIG_SMSC911X is not set
652# CONFIG_DM9000 is not set 695# CONFIG_DM9000 is not set
653# CONFIG_ENC28J60 is not set 696# CONFIG_ENC28J60 is not set
697# CONFIG_ETHOC is not set
698# CONFIG_SMSC911X is not set
699# CONFIG_DNET is not set
700# CONFIG_ADF702X is not set
654# CONFIG_IBM_NEW_EMAC_ZMII is not set 701# CONFIG_IBM_NEW_EMAC_ZMII is not set
655# CONFIG_IBM_NEW_EMAC_RGMII is not set 702# CONFIG_IBM_NEW_EMAC_RGMII is not set
656# CONFIG_IBM_NEW_EMAC_TAH is not set 703# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -659,15 +706,16 @@ CONFIG_SMC91X=y
659# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 706# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
660# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 707# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
661# CONFIG_B44 is not set 708# CONFIG_B44 is not set
709# CONFIG_KS8842 is not set
710# CONFIG_KS8851 is not set
711# CONFIG_KS8851_MLL is not set
662# CONFIG_NETDEV_1000 is not set 712# CONFIG_NETDEV_1000 is not set
663# CONFIG_NETDEV_10000 is not set 713# CONFIG_NETDEV_10000 is not set
714# CONFIG_WLAN is not set
664 715
665# 716#
666# Wireless LAN 717# Enable WiMAX (Networking options) to see the WiMAX drivers
667# 718#
668# CONFIG_WLAN_PRE80211 is not set
669# CONFIG_WLAN_80211 is not set
670# CONFIG_IWLWIFI_LEDS is not set
671# CONFIG_WAN is not set 719# CONFIG_WAN is not set
672# CONFIG_PPP is not set 720# CONFIG_PPP is not set
673# CONFIG_SLIP is not set 721# CONFIG_SLIP is not set
@@ -700,14 +748,17 @@ CONFIG_INPUT_EVDEV=m
700# CONFIG_INPUT_JOYSTICK is not set 748# CONFIG_INPUT_JOYSTICK is not set
701# CONFIG_INPUT_TABLET is not set 749# CONFIG_INPUT_TABLET is not set
702CONFIG_INPUT_TOUCHSCREEN=y 750CONFIG_INPUT_TOUCHSCREEN=y
751# CONFIG_TOUCHSCREEN_ADS7846 is not set
703# CONFIG_TOUCHSCREEN_AD7877 is not set 752# CONFIG_TOUCHSCREEN_AD7877 is not set
704# CONFIG_TOUCHSCREEN_AD7879_I2C is not set 753# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
705CONFIG_TOUCHSCREEN_AD7879_SPI=y 754CONFIG_TOUCHSCREEN_AD7879_SPI=y
706CONFIG_TOUCHSCREEN_AD7879=y 755CONFIG_TOUCHSCREEN_AD7879=y
707# CONFIG_TOUCHSCREEN_ADS7846 is not set 756# CONFIG_TOUCHSCREEN_EETI is not set
708# CONFIG_TOUCHSCREEN_FUJITSU is not set 757# CONFIG_TOUCHSCREEN_FUJITSU is not set
709# CONFIG_TOUCHSCREEN_GUNZE is not set 758# CONFIG_TOUCHSCREEN_GUNZE is not set
710# CONFIG_TOUCHSCREEN_ELO is not set 759# CONFIG_TOUCHSCREEN_ELO is not set
760# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
761# CONFIG_TOUCHSCREEN_MCS5000 is not set
711# CONFIG_TOUCHSCREEN_MTOUCH is not set 762# CONFIG_TOUCHSCREEN_MTOUCH is not set
712# CONFIG_TOUCHSCREEN_INEXIO is not set 763# CONFIG_TOUCHSCREEN_INEXIO is not set
713# CONFIG_TOUCHSCREEN_MK712 is not set 764# CONFIG_TOUCHSCREEN_MK712 is not set
@@ -715,9 +766,13 @@ CONFIG_TOUCHSCREEN_AD7879=y
715# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set 766# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
716# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 767# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
717# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 768# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
769# CONFIG_TOUCHSCREEN_TSC2007 is not set
718CONFIG_INPUT_MISC=y 770CONFIG_INPUT_MISC=y
719# CONFIG_INPUT_UINPUT is not set 771# CONFIG_INPUT_UINPUT is not set
720# CONFIG_CONFIG_INPUT_PCF8574 is not set 772# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
773# CONFIG_INPUT_AD714X is not set
774# CONFIG_INPUT_ADXL34X is not set
775# CONFIG_INPUT_PCF8574 is not set
721 776
722# 777#
723# Hardware I/O ports 778# Hardware I/O ports
@@ -728,16 +783,13 @@ CONFIG_INPUT_MISC=y
728# 783#
729# Character devices 784# Character devices
730# 785#
731# CONFIG_AD9960 is not set
732CONFIG_BFIN_DMA_INTERFACE=m 786CONFIG_BFIN_DMA_INTERFACE=m
733# CONFIG_BFIN_PPI is not set 787# CONFIG_BFIN_PPI is not set
734# CONFIG_BFIN_PPIFCD is not set 788# CONFIG_BFIN_PPIFCD is not set
735# CONFIG_BFIN_SIMPLE_TIMER is not set 789# CONFIG_BFIN_SIMPLE_TIMER is not set
736# CONFIG_BFIN_SPI_ADC is not set 790# CONFIG_BFIN_SPI_ADC is not set
737CONFIG_BFIN_SPORT=m 791CONFIG_BFIN_SPORT=m
738# CONFIG_BFIN_TIMER_LATENCY is not set
739# CONFIG_BFIN_TWI_LCD is not set 792# CONFIG_BFIN_TWI_LCD is not set
740CONFIG_SIMPLE_GPIO=m
741# CONFIG_VT is not set 793# CONFIG_VT is not set
742# CONFIG_DEVKMEM is not set 794# CONFIG_DEVKMEM is not set
743CONFIG_BFIN_JTAG_COMM=m 795CONFIG_BFIN_JTAG_COMM=m
@@ -751,6 +803,7 @@ CONFIG_BFIN_JTAG_COMM=m
751# 803#
752# Non-8250 serial port support 804# Non-8250 serial port support
753# 805#
806# CONFIG_SERIAL_MAX3100 is not set
754CONFIG_SERIAL_BFIN=y 807CONFIG_SERIAL_BFIN=y
755CONFIG_SERIAL_BFIN_CONSOLE=y 808CONFIG_SERIAL_BFIN_CONSOLE=y
756CONFIG_SERIAL_BFIN_DMA=y 809CONFIG_SERIAL_BFIN_DMA=y
@@ -765,12 +818,8 @@ CONFIG_SERIAL_CORE=y
765CONFIG_SERIAL_CORE_CONSOLE=y 818CONFIG_SERIAL_CORE_CONSOLE=y
766# CONFIG_SERIAL_BFIN_SPORT is not set 819# CONFIG_SERIAL_BFIN_SPORT is not set
767CONFIG_UNIX98_PTYS=y 820CONFIG_UNIX98_PTYS=y
821# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
768# CONFIG_LEGACY_PTYS is not set 822# CONFIG_LEGACY_PTYS is not set
769
770#
771# CAN, the car bus and industrial fieldbus
772#
773# CONFIG_CAN4LINUX is not set
774# CONFIG_IPMI_HANDLER is not set 823# CONFIG_IPMI_HANDLER is not set
775# CONFIG_HW_RANDOM is not set 824# CONFIG_HW_RANDOM is not set
776# CONFIG_R3964 is not set 825# CONFIG_R3964 is not set
@@ -778,6 +827,7 @@ CONFIG_UNIX98_PTYS=y
778# CONFIG_TCG_TPM is not set 827# CONFIG_TCG_TPM is not set
779CONFIG_I2C=m 828CONFIG_I2C=m
780CONFIG_I2C_BOARDINFO=y 829CONFIG_I2C_BOARDINFO=y
830CONFIG_I2C_COMPAT=y
781# CONFIG_I2C_CHARDEV is not set 831# CONFIG_I2C_CHARDEV is not set
782CONFIG_I2C_HELPER_AUTO=y 832CONFIG_I2C_HELPER_AUTO=y
783 833
@@ -810,14 +860,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
810# Miscellaneous I2C Chip support 860# Miscellaneous I2C Chip support
811# 861#
812# CONFIG_DS1682 is not set 862# CONFIG_DS1682 is not set
813# CONFIG_EEPROM_AT24 is not set
814# CONFIG_SENSORS_AD5252 is not set
815# CONFIG_EEPROM_LEGACY is not set
816# CONFIG_SENSORS_PCF8574 is not set
817# CONFIG_PCF8575 is not set
818# CONFIG_SENSORS_PCA9539 is not set
819# CONFIG_SENSORS_PCF8591 is not set
820# CONFIG_SENSORS_MAX6875 is not set
821# CONFIG_SENSORS_TSL2550 is not set 863# CONFIG_SENSORS_TSL2550 is not set
822# CONFIG_I2C_DEBUG_CORE is not set 864# CONFIG_I2C_DEBUG_CORE is not set
823# CONFIG_I2C_DEBUG_ALGO is not set 865# CONFIG_I2C_DEBUG_ALGO is not set
@@ -834,13 +876,18 @@ CONFIG_SPI_BFIN=y
834# CONFIG_SPI_BFIN_LOCK is not set 876# CONFIG_SPI_BFIN_LOCK is not set
835# CONFIG_SPI_BFIN_SPORT is not set 877# CONFIG_SPI_BFIN_SPORT is not set
836# CONFIG_SPI_BITBANG is not set 878# CONFIG_SPI_BITBANG is not set
879# CONFIG_SPI_GPIO is not set
837 880
838# 881#
839# SPI Protocol Masters 882# SPI Protocol Masters
840# 883#
841# CONFIG_EEPROM_AT25 is not set
842# CONFIG_SPI_SPIDEV is not set 884# CONFIG_SPI_SPIDEV is not set
843# CONFIG_SPI_TLE62X0 is not set 885# CONFIG_SPI_TLE62X0 is not set
886
887#
888# PPS support
889#
890# CONFIG_PPS is not set
844CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 891CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
845CONFIG_GPIOLIB=y 892CONFIG_GPIOLIB=y
846# CONFIG_DEBUG_GPIO is not set 893# CONFIG_DEBUG_GPIO is not set
@@ -856,6 +903,7 @@ CONFIG_GPIO_SYSFS=y
856# CONFIG_GPIO_MAX732X is not set 903# CONFIG_GPIO_MAX732X is not set
857# CONFIG_GPIO_PCA953X is not set 904# CONFIG_GPIO_PCA953X is not set
858# CONFIG_GPIO_PCF857X is not set 905# CONFIG_GPIO_PCF857X is not set
906# CONFIG_GPIO_ADP5588 is not set
859 907
860# 908#
861# PCI GPIO expanders: 909# PCI GPIO expanders:
@@ -866,11 +914,15 @@ CONFIG_GPIO_SYSFS=y
866# 914#
867# CONFIG_GPIO_MAX7301 is not set 915# CONFIG_GPIO_MAX7301 is not set
868# CONFIG_GPIO_MCP23S08 is not set 916# CONFIG_GPIO_MCP23S08 is not set
917# CONFIG_GPIO_MC33880 is not set
918
919#
920# AC97 GPIO expanders:
921#
869# CONFIG_W1 is not set 922# CONFIG_W1 is not set
870# CONFIG_POWER_SUPPLY is not set 923# CONFIG_POWER_SUPPLY is not set
871# CONFIG_HWMON is not set 924# CONFIG_HWMON is not set
872# CONFIG_THERMAL is not set 925# CONFIG_THERMAL is not set
873# CONFIG_THERMAL_HWMON is not set
874CONFIG_WATCHDOG=y 926CONFIG_WATCHDOG=y
875# CONFIG_WATCHDOG_NOWAYOUT is not set 927# CONFIG_WATCHDOG_NOWAYOUT is not set
876 928
@@ -892,26 +944,17 @@ CONFIG_SSB_POSSIBLE=y
892# CONFIG_MFD_CORE is not set 944# CONFIG_MFD_CORE is not set
893# CONFIG_MFD_SM501 is not set 945# CONFIG_MFD_SM501 is not set
894# CONFIG_HTC_PASIC3 is not set 946# CONFIG_HTC_PASIC3 is not set
947# CONFIG_TPS65010 is not set
895# CONFIG_MFD_TMIO is not set 948# CONFIG_MFD_TMIO is not set
896# CONFIG_MFD_WM8400 is not set 949# CONFIG_MFD_WM8400 is not set
950# CONFIG_MFD_WM831X is not set
897# CONFIG_MFD_WM8350_I2C is not set 951# CONFIG_MFD_WM8350_I2C is not set
952# CONFIG_MFD_PCF50633 is not set
953# CONFIG_MFD_MC13783 is not set
954# CONFIG_AB3100_CORE is not set
955# CONFIG_EZX_PCAP is not set
898# CONFIG_REGULATOR is not set 956# CONFIG_REGULATOR is not set
899 957# CONFIG_MEDIA_SUPPORT is not set
900#
901# Multimedia devices
902#
903
904#
905# Multimedia core support
906#
907# CONFIG_VIDEO_DEV is not set
908# CONFIG_DVB_CORE is not set
909# CONFIG_VIDEO_MEDIA is not set
910
911#
912# Multimedia drivers
913#
914# CONFIG_DAB is not set
915 958
916# 959#
917# Graphics support 960# Graphics support
@@ -947,6 +990,7 @@ CONFIG_FB_BFIN_LQ035Q1=m
947# CONFIG_FB_VIRTUAL is not set 990# CONFIG_FB_VIRTUAL is not set
948# CONFIG_FB_METRONOME is not set 991# CONFIG_FB_METRONOME is not set
949# CONFIG_FB_MB862XX is not set 992# CONFIG_FB_MB862XX is not set
993# CONFIG_FB_BROADSHEET is not set
950# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 994# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
951 995
952# 996#
@@ -957,14 +1001,12 @@ CONFIG_FB_BFIN_LQ035Q1=m
957# CONFIG_SOUND is not set 1001# CONFIG_SOUND is not set
958CONFIG_HID_SUPPORT=y 1002CONFIG_HID_SUPPORT=y
959CONFIG_HID=y 1003CONFIG_HID=y
960# CONFIG_HID_DEBUG is not set
961# CONFIG_HIDRAW is not set 1004# CONFIG_HIDRAW is not set
962# CONFIG_HID_PID is not set 1005# CONFIG_HID_PID is not set
963 1006
964# 1007#
965# Special HID drivers 1008# Special HID drivers
966# 1009#
967CONFIG_HID_COMPAT=y
968# CONFIG_USB_SUPPORT is not set 1010# CONFIG_USB_SUPPORT is not set
969# CONFIG_MMC is not set 1011# CONFIG_MMC is not set
970# CONFIG_MEMSTICK is not set 1012# CONFIG_MEMSTICK is not set
@@ -1001,6 +1043,7 @@ CONFIG_RTC_INTF_DEV=y
1001# CONFIG_RTC_DRV_S35390A is not set 1043# CONFIG_RTC_DRV_S35390A is not set
1002# CONFIG_RTC_DRV_FM3130 is not set 1044# CONFIG_RTC_DRV_FM3130 is not set
1003# CONFIG_RTC_DRV_RX8581 is not set 1045# CONFIG_RTC_DRV_RX8581 is not set
1046# CONFIG_RTC_DRV_RX8025 is not set
1004 1047
1005# 1048#
1006# SPI RTC drivers 1049# SPI RTC drivers
@@ -1012,6 +1055,7 @@ CONFIG_RTC_INTF_DEV=y
1012# CONFIG_RTC_DRV_R9701 is not set 1055# CONFIG_RTC_DRV_R9701 is not set
1013# CONFIG_RTC_DRV_RS5C348 is not set 1056# CONFIG_RTC_DRV_RS5C348 is not set
1014# CONFIG_RTC_DRV_DS3234 is not set 1057# CONFIG_RTC_DRV_DS3234 is not set
1058# CONFIG_RTC_DRV_PCF2123 is not set
1015 1059
1016# 1060#
1017# Platform RTC drivers 1061# Platform RTC drivers
@@ -1032,10 +1076,21 @@ CONFIG_RTC_INTF_DEV=y
1032# 1076#
1033CONFIG_RTC_DRV_BFIN=y 1077CONFIG_RTC_DRV_BFIN=y
1034# CONFIG_DMADEVICES is not set 1078# CONFIG_DMADEVICES is not set
1079# CONFIG_AUXDISPLAY is not set
1035# CONFIG_UIO is not set 1080# CONFIG_UIO is not set
1081
1082#
1083# TI VLYNQ
1084#
1036# CONFIG_STAGING is not set 1085# CONFIG_STAGING is not set
1037 1086
1038# 1087#
1088# Firmware Drivers
1089#
1090# CONFIG_FIRMWARE_MEMMAP is not set
1091# CONFIG_SIGMA is not set
1092
1093#
1039# File systems 1094# File systems
1040# 1095#
1041# CONFIG_EXT2_FS is not set 1096# CONFIG_EXT2_FS is not set
@@ -1044,9 +1099,13 @@ CONFIG_RTC_DRV_BFIN=y
1044# CONFIG_REISERFS_FS is not set 1099# CONFIG_REISERFS_FS is not set
1045# CONFIG_JFS_FS is not set 1100# CONFIG_JFS_FS is not set
1046# CONFIG_FS_POSIX_ACL is not set 1101# CONFIG_FS_POSIX_ACL is not set
1047CONFIG_FILE_LOCKING=y
1048# CONFIG_XFS_FS is not set 1102# CONFIG_XFS_FS is not set
1103# CONFIG_GFS2_FS is not set
1049# CONFIG_OCFS2_FS is not set 1104# CONFIG_OCFS2_FS is not set
1105# CONFIG_BTRFS_FS is not set
1106# CONFIG_NILFS2_FS is not set
1107CONFIG_FILE_LOCKING=y
1108CONFIG_FSNOTIFY=y
1050# CONFIG_DNOTIFY is not set 1109# CONFIG_DNOTIFY is not set
1051CONFIG_INOTIFY=y 1110CONFIG_INOTIFY=y
1052CONFIG_INOTIFY_USER=y 1111CONFIG_INOTIFY_USER=y
@@ -1056,6 +1115,11 @@ CONFIG_INOTIFY_USER=y
1056# CONFIG_FUSE_FS is not set 1115# CONFIG_FUSE_FS is not set
1057 1116
1058# 1117#
1118# Caches
1119#
1120# CONFIG_FSCACHE is not set
1121
1122#
1059# CD-ROM/DVD Filesystems 1123# CD-ROM/DVD Filesystems
1060# 1124#
1061# CONFIG_ISO9660_FS is not set 1125# CONFIG_ISO9660_FS is not set
@@ -1074,13 +1138,9 @@ CONFIG_INOTIFY_USER=y
1074CONFIG_PROC_FS=y 1138CONFIG_PROC_FS=y
1075CONFIG_PROC_SYSCTL=y 1139CONFIG_PROC_SYSCTL=y
1076CONFIG_SYSFS=y 1140CONFIG_SYSFS=y
1077# CONFIG_TMPFS is not set
1078# CONFIG_HUGETLB_PAGE is not set 1141# CONFIG_HUGETLB_PAGE is not set
1079# CONFIG_CONFIGFS_FS is not set 1142# CONFIG_CONFIGFS_FS is not set
1080 1143CONFIG_MISC_FILESYSTEMS=y
1081#
1082# Miscellaneous filesystems
1083#
1084# CONFIG_ADFS_FS is not set 1144# CONFIG_ADFS_FS is not set
1085# CONFIG_AFFS_FS is not set 1145# CONFIG_AFFS_FS is not set
1086# CONFIG_HFS_FS is not set 1146# CONFIG_HFS_FS is not set
@@ -1099,17 +1159,8 @@ CONFIG_JFFS2_ZLIB=y
1099# CONFIG_JFFS2_LZO is not set 1159# CONFIG_JFFS2_LZO is not set
1100CONFIG_JFFS2_RTIME=y 1160CONFIG_JFFS2_RTIME=y
1101# CONFIG_JFFS2_RUBIN is not set 1161# CONFIG_JFFS2_RUBIN is not set
1102CONFIG_YAFFS_FS=m
1103CONFIG_YAFFS_YAFFS1=y
1104# CONFIG_YAFFS_9BYTE_TAGS is not set
1105# CONFIG_YAFFS_DOES_ECC is not set
1106CONFIG_YAFFS_YAFFS2=y
1107CONFIG_YAFFS_AUTO_YAFFS2=y
1108# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1109# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1110# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1111CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1112# CONFIG_CRAMFS is not set 1162# CONFIG_CRAMFS is not set
1163# CONFIG_SQUASHFS is not set
1113# CONFIG_VXFS_FS is not set 1164# CONFIG_VXFS_FS is not set
1114# CONFIG_MINIX_FS is not set 1165# CONFIG_MINIX_FS is not set
1115# CONFIG_OMFS_FS is not set 1166# CONFIG_OMFS_FS is not set
@@ -1128,7 +1179,6 @@ CONFIG_LOCKD=m
1128CONFIG_LOCKD_V4=y 1179CONFIG_LOCKD_V4=y
1129CONFIG_NFS_COMMON=y 1180CONFIG_NFS_COMMON=y
1130CONFIG_SUNRPC=m 1181CONFIG_SUNRPC=m
1131# CONFIG_SUNRPC_REGISTER_V4 is not set
1132# CONFIG_RPCSEC_GSS_KRB5 is not set 1182# CONFIG_RPCSEC_GSS_KRB5 is not set
1133# CONFIG_RPCSEC_GSS_SPKM3 is not set 1183# CONFIG_RPCSEC_GSS_SPKM3 is not set
1134CONFIG_SMB_FS=m 1184CONFIG_SMB_FS=m
@@ -1193,14 +1243,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1193CONFIG_ENABLE_MUST_CHECK=y 1243CONFIG_ENABLE_MUST_CHECK=y
1194CONFIG_FRAME_WARN=1024 1244CONFIG_FRAME_WARN=1024
1195# CONFIG_MAGIC_SYSRQ is not set 1245# CONFIG_MAGIC_SYSRQ is not set
1246# CONFIG_STRIP_ASM_SYMS is not set
1196# CONFIG_UNUSED_SYMBOLS is not set 1247# CONFIG_UNUSED_SYMBOLS is not set
1197CONFIG_DEBUG_FS=y 1248CONFIG_DEBUG_FS=y
1198# CONFIG_HEADERS_CHECK is not set 1249# CONFIG_HEADERS_CHECK is not set
1250CONFIG_DEBUG_SECTION_MISMATCH=y
1199CONFIG_DEBUG_KERNEL=y 1251CONFIG_DEBUG_KERNEL=y
1200CONFIG_DEBUG_SHIRQ=y 1252CONFIG_DEBUG_SHIRQ=y
1201CONFIG_DETECT_SOFTLOCKUP=y 1253CONFIG_DETECT_SOFTLOCKUP=y
1202# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 1254# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1203CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 1255CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1256CONFIG_DETECT_HUNG_TASK=y
1257# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1258CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1204CONFIG_SCHED_DEBUG=y 1259CONFIG_SCHED_DEBUG=y
1205# CONFIG_SCHEDSTATS is not set 1260# CONFIG_SCHEDSTATS is not set
1206# CONFIG_TIMER_STATS is not set 1261# CONFIG_TIMER_STATS is not set
@@ -1208,31 +1263,39 @@ CONFIG_SCHED_DEBUG=y
1208# CONFIG_DEBUG_SLAB is not set 1263# CONFIG_DEBUG_SLAB is not set
1209# CONFIG_DEBUG_SPINLOCK is not set 1264# CONFIG_DEBUG_SPINLOCK is not set
1210# CONFIG_DEBUG_MUTEXES is not set 1265# CONFIG_DEBUG_MUTEXES is not set
1266# CONFIG_DEBUG_LOCK_ALLOC is not set
1267# CONFIG_PROVE_LOCKING is not set
1268# CONFIG_LOCK_STAT is not set
1211# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1269# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1212# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1270# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1213# CONFIG_DEBUG_KOBJECT is not set 1271# CONFIG_DEBUG_KOBJECT is not set
1214CONFIG_DEBUG_BUGVERBOSE=y 1272CONFIG_DEBUG_BUGVERBOSE=y
1215CONFIG_DEBUG_INFO=y 1273CONFIG_DEBUG_INFO=y
1216# CONFIG_DEBUG_VM is not set 1274# CONFIG_DEBUG_VM is not set
1275# CONFIG_DEBUG_NOMMU_REGIONS is not set
1217# CONFIG_DEBUG_WRITECOUNT is not set 1276# CONFIG_DEBUG_WRITECOUNT is not set
1218# CONFIG_DEBUG_MEMORY_INIT is not set 1277# CONFIG_DEBUG_MEMORY_INIT is not set
1219# CONFIG_DEBUG_LIST is not set 1278# CONFIG_DEBUG_LIST is not set
1220# CONFIG_DEBUG_SG is not set 1279# CONFIG_DEBUG_SG is not set
1280# CONFIG_DEBUG_NOTIFIERS is not set
1281# CONFIG_DEBUG_CREDENTIALS is not set
1221# CONFIG_FRAME_POINTER is not set 1282# CONFIG_FRAME_POINTER is not set
1222# CONFIG_BOOT_PRINTK_DELAY is not set 1283# CONFIG_BOOT_PRINTK_DELAY is not set
1223# CONFIG_RCU_TORTURE_TEST is not set 1284# CONFIG_RCU_TORTURE_TEST is not set
1224# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1285# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1225# CONFIG_BACKTRACE_SELF_TEST is not set 1286# CONFIG_BACKTRACE_SELF_TEST is not set
1226# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1287# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1288# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1227# CONFIG_FAULT_INJECTION is not set 1289# CONFIG_FAULT_INJECTION is not set
1228 1290# CONFIG_PAGE_POISONING is not set
1229# 1291CONFIG_HAVE_FUNCTION_TRACER=y
1230# Tracers 1292CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1231# 1293CONFIG_TRACING_SUPPORT=y
1232# CONFIG_SCHED_TRACER is not set 1294# CONFIG_FTRACE is not set
1233# CONFIG_CONTEXT_SWITCH_TRACER is not set 1295# CONFIG_BRANCH_PROFILE_NONE is not set
1234# CONFIG_BOOT_TRACER is not set 1296# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1235# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1297# CONFIG_PROFILE_ALL_BRANCHES is not set
1298# CONFIG_DYNAMIC_DEBUG is not set
1236# CONFIG_SAMPLES is not set 1299# CONFIG_SAMPLES is not set
1237CONFIG_HAVE_ARCH_KGDB=y 1300CONFIG_HAVE_ARCH_KGDB=y
1238# CONFIG_KGDB is not set 1301# CONFIG_KGDB is not set
@@ -1257,6 +1320,7 @@ CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1257CONFIG_EARLY_PRINTK=y 1320CONFIG_EARLY_PRINTK=y
1258CONFIG_CPLB_INFO=y 1321CONFIG_CPLB_INFO=y
1259CONFIG_ACCESS_CHECK=y 1322CONFIG_ACCESS_CHECK=y
1323# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1260 1324
1261# 1325#
1262# Security options 1326# Security options
@@ -1265,14 +1329,14 @@ CONFIG_ACCESS_CHECK=y
1265CONFIG_SECURITY=y 1329CONFIG_SECURITY=y
1266# CONFIG_SECURITYFS is not set 1330# CONFIG_SECURITYFS is not set
1267# CONFIG_SECURITY_NETWORK is not set 1331# CONFIG_SECURITY_NETWORK is not set
1332# CONFIG_SECURITY_PATH is not set
1268# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1333# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1269CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1334# CONFIG_SECURITY_TOMOYO is not set
1270CONFIG_CRYPTO=y 1335CONFIG_CRYPTO=y
1271 1336
1272# 1337#
1273# Crypto core or helper 1338# Crypto core or helper
1274# 1339#
1275# CONFIG_CRYPTO_FIPS is not set
1276# CONFIG_CRYPTO_MANAGER is not set 1340# CONFIG_CRYPTO_MANAGER is not set
1277# CONFIG_CRYPTO_MANAGER2 is not set 1341# CONFIG_CRYPTO_MANAGER2 is not set
1278# CONFIG_CRYPTO_GF128MUL is not set 1342# CONFIG_CRYPTO_GF128MUL is not set
@@ -1304,11 +1368,13 @@ CONFIG_CRYPTO=y
1304# 1368#
1305# CONFIG_CRYPTO_HMAC is not set 1369# CONFIG_CRYPTO_HMAC is not set
1306# CONFIG_CRYPTO_XCBC is not set 1370# CONFIG_CRYPTO_XCBC is not set
1371# CONFIG_CRYPTO_VMAC is not set
1307 1372
1308# 1373#
1309# Digest 1374# Digest
1310# 1375#
1311# CONFIG_CRYPTO_CRC32C is not set 1376# CONFIG_CRYPTO_CRC32C is not set
1377# CONFIG_CRYPTO_GHASH is not set
1312# CONFIG_CRYPTO_MD4 is not set 1378# CONFIG_CRYPTO_MD4 is not set
1313# CONFIG_CRYPTO_MD5 is not set 1379# CONFIG_CRYPTO_MD5 is not set
1314# CONFIG_CRYPTO_MICHAEL_MIC is not set 1380# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1345,6 +1411,7 @@ CONFIG_CRYPTO=y
1345# Compression 1411# Compression
1346# 1412#
1347# CONFIG_CRYPTO_DEFLATE is not set 1413# CONFIG_CRYPTO_DEFLATE is not set
1414# CONFIG_CRYPTO_ZLIB is not set
1348# CONFIG_CRYPTO_LZO is not set 1415# CONFIG_CRYPTO_LZO is not set
1349 1416
1350# 1417#
@@ -1352,11 +1419,13 @@ CONFIG_CRYPTO=y
1352# 1419#
1353# CONFIG_CRYPTO_ANSI_CPRNG is not set 1420# CONFIG_CRYPTO_ANSI_CPRNG is not set
1354CONFIG_CRYPTO_HW=y 1421CONFIG_CRYPTO_HW=y
1422# CONFIG_BINARY_PRINTF is not set
1355 1423
1356# 1424#
1357# Library routines 1425# Library routines
1358# 1426#
1359CONFIG_BITREVERSE=y 1427CONFIG_BITREVERSE=y
1428CONFIG_GENERIC_FIND_LAST_BIT=y
1360CONFIG_CRC_CCITT=m 1429CONFIG_CRC_CCITT=m
1361# CONFIG_CRC16 is not set 1430# CONFIG_CRC16 is not set
1362# CONFIG_CRC_T10DIF is not set 1431# CONFIG_CRC_T10DIF is not set
@@ -1366,6 +1435,8 @@ CONFIG_CRC32=y
1366# CONFIG_LIBCRC32C is not set 1435# CONFIG_LIBCRC32C is not set
1367CONFIG_ZLIB_INFLATE=y 1436CONFIG_ZLIB_INFLATE=y
1368CONFIG_ZLIB_DEFLATE=m 1437CONFIG_ZLIB_DEFLATE=m
1438CONFIG_DECOMPRESS_GZIP=y
1369CONFIG_HAS_IOMEM=y 1439CONFIG_HAS_IOMEM=y
1370CONFIG_HAS_IOPORT=y 1440CONFIG_HAS_IOPORT=y
1371CONFIG_HAS_DMA=y 1441CONFIG_HAS_DMA=y
1442CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index eb3e98b6f3f0..ca309cfc6ac4 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -1,7 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31.5 3# Linux kernel version: 2.6.32.2
4# Mon Nov 2 22:02:56 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
@@ -12,7 +11,6 @@ CONFIG_GENERIC_CSUM=y
12CONFIG_GENERIC_BUG=y 11CONFIG_GENERIC_BUG=y
13CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
14CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
17CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
18CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
@@ -49,11 +47,12 @@ CONFIG_SYSVIPC_SYSCTL=y
49# 47#
50# RCU Subsystem 48# RCU Subsystem
51# 49#
52CONFIG_CLASSIC_RCU=y 50CONFIG_TREE_RCU=y
53# CONFIG_TREE_RCU is not set 51# CONFIG_TREE_PREEMPT_RCU is not set
54# CONFIG_PREEMPT_RCU is not set 52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set 55# CONFIG_TREE_RCU_TRACE is not set
56# CONFIG_PREEMPT_RCU_TRACE is not set
57CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
58CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
59CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
@@ -89,24 +88,23 @@ CONFIG_EPOLL=y
89# CONFIG_AIO is not set 88# CONFIG_AIO is not set
90 89
91# 90#
92# Performance Counters 91# Kernel Performance Events And Counters
93# 92#
94CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
95# CONFIG_STRIP_ASM_SYMS is not set
96CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
97CONFIG_SLAB=y 95CONFIG_SLAB=y
98# CONFIG_SLUB is not set 96# CONFIG_SLUB is not set
99# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
100CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
101# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
102# CONFIG_MARKERS is not set
103CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
104 101
105# 102#
106# GCOV-based kernel profiling 103# GCOV-based kernel profiling
107# 104#
108# CONFIG_GCOV_KERNEL is not set 105# CONFIG_GCOV_KERNEL is not set
109# CONFIG_SLOW_WORK is not set 106CONFIG_SLOW_WORK=y
107# CONFIG_SLOW_WORK_DEBUG is not set
110# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 108# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
111CONFIG_SLABINFO=y 109CONFIG_SLABINFO=y
112CONFIG_BASE_SMALL=0 110CONFIG_BASE_SMALL=0
@@ -163,15 +161,15 @@ CONFIG_PREEMPT_VOLUNTARY=y
163# CONFIG_BF537 is not set 161# CONFIG_BF537 is not set
164# CONFIG_BF538 is not set 162# CONFIG_BF538 is not set
165# CONFIG_BF539 is not set 163# CONFIG_BF539 is not set
166# CONFIG_BF542 is not set 164# CONFIG_BF542_std is not set
167# CONFIG_BF542M is not set 165# CONFIG_BF542M is not set
168# CONFIG_BF544 is not set 166# CONFIG_BF544_std is not set
169# CONFIG_BF544M is not set 167# CONFIG_BF544M is not set
170# CONFIG_BF547 is not set 168# CONFIG_BF547_std is not set
171# CONFIG_BF547M is not set 169# CONFIG_BF547M is not set
172CONFIG_BF548_std=y 170CONFIG_BF548_std=y
173# CONFIG_BF548M is not set 171# CONFIG_BF548M is not set
174# CONFIG_BF549 is not set 172# CONFIG_BF549_std is not set
175# CONFIG_BF549M is not set 173# CONFIG_BF549M is not set
176# CONFIG_BF561 is not set 174# CONFIG_BF561 is not set
177CONFIG_BF_REV_MIN=0 175CONFIG_BF_REV_MIN=0
@@ -185,7 +183,6 @@ CONFIG_BF_REV_0_2=y
185# CONFIG_BF_REV_0_6 is not set 183# CONFIG_BF_REV_0_6 is not set
186# CONFIG_BF_REV_ANY is not set 184# CONFIG_BF_REV_ANY is not set
187# CONFIG_BF_REV_NONE is not set 185# CONFIG_BF_REV_NONE is not set
188CONFIG_BF54x=y
189CONFIG_IRQ_PLL_WAKEUP=7 186CONFIG_IRQ_PLL_WAKEUP=7
190CONFIG_IRQ_RTC=8 187CONFIG_IRQ_RTC=8
191CONFIG_IRQ_SPORT0_RX=9 188CONFIG_IRQ_SPORT0_RX=9
@@ -221,6 +218,8 @@ CONFIG_IRQ_SPI1=10
221CONFIG_IRQ_SPI2=10 218CONFIG_IRQ_SPI2=10
222CONFIG_IRQ_TWI0=11 219CONFIG_IRQ_TWI0=11
223CONFIG_IRQ_TWI1=11 220CONFIG_IRQ_TWI1=11
221CONFIG_BF548=y
222CONFIG_BF54x=y
224CONFIG_BFIN548_EZKIT=y 223CONFIG_BFIN548_EZKIT=y
225# CONFIG_BFIN548_BLUETECHNIX_CM is not set 224# CONFIG_BFIN548_BLUETECHNIX_CM is not set
226 225
@@ -387,12 +386,14 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
387# CONFIG_PHYS_ADDR_T_64BIT is not set 386# CONFIG_PHYS_ADDR_T_64BIT is not set
388CONFIG_ZONE_DMA_FLAG=1 387CONFIG_ZONE_DMA_FLAG=1
389CONFIG_VIRT_TO_BUS=y 388CONFIG_VIRT_TO_BUS=y
390CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
391CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0 389CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
392CONFIG_BFIN_GPTIMERS=m 390CONFIG_BFIN_GPTIMERS=m
393# CONFIG_DMA_UNCACHED_4M is not set 391# CONFIG_DMA_UNCACHED_4M is not set
394CONFIG_DMA_UNCACHED_2M=y 392CONFIG_DMA_UNCACHED_2M=y
395# CONFIG_DMA_UNCACHED_1M is not set 393# CONFIG_DMA_UNCACHED_1M is not set
394# CONFIG_DMA_UNCACHED_512K is not set
395# CONFIG_DMA_UNCACHED_256K is not set
396# CONFIG_DMA_UNCACHED_128K is not set
396# CONFIG_DMA_UNCACHED_NONE is not set 397# CONFIG_DMA_UNCACHED_NONE is not set
397 398
398# 399#
@@ -505,6 +506,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
505# CONFIG_NETFILTER is not set 506# CONFIG_NETFILTER is not set
506# CONFIG_IP_DCCP is not set 507# CONFIG_IP_DCCP is not set
507# CONFIG_IP_SCTP is not set 508# CONFIG_IP_SCTP is not set
509# CONFIG_RDS is not set
508# CONFIG_TIPC is not set 510# CONFIG_TIPC is not set
509# CONFIG_ATM is not set 511# CONFIG_ATM is not set
510# CONFIG_BRIDGE is not set 512# CONFIG_BRIDGE is not set
@@ -528,7 +530,24 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
528# 530#
529# CONFIG_NET_PKTGEN is not set 531# CONFIG_NET_PKTGEN is not set
530# CONFIG_HAMRADIO is not set 532# CONFIG_HAMRADIO is not set
531# CONFIG_CAN is not set 533CONFIG_CAN=m
534CONFIG_CAN_RAW=m
535CONFIG_CAN_BCM=m
536
537#
538# CAN Device Drivers
539#
540# CONFIG_CAN_VCAN is not set
541CONFIG_CAN_DEV=m
542# CONFIG_CAN_CALC_BITTIMING is not set
543CONFIG_CAN_BFIN=m
544# CONFIG_CAN_SJA1000 is not set
545
546#
547# CAN USB interfaces
548#
549# CONFIG_CAN_EMS_USB is not set
550# CONFIG_CAN_DEBUG_DEVICES is not set
532CONFIG_IRDA=m 551CONFIG_IRDA=m
533 552
534# 553#
@@ -663,6 +682,7 @@ CONFIG_MTD_PHYSMAP=y
663# CONFIG_MTD_DATAFLASH is not set 682# CONFIG_MTD_DATAFLASH is not set
664CONFIG_MTD_M25P80=y 683CONFIG_MTD_M25P80=y
665CONFIG_M25PXX_USE_FAST_READ=y 684CONFIG_M25PXX_USE_FAST_READ=y
685# CONFIG_MTD_SST25L is not set
666# CONFIG_MTD_SLRAM is not set 686# CONFIG_MTD_SLRAM is not set
667# CONFIG_MTD_PHRAM is not set 687# CONFIG_MTD_PHRAM is not set
668# CONFIG_MTD_MTDRAM is not set 688# CONFIG_MTD_MTDRAM is not set
@@ -711,10 +731,10 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
711# CONFIG_ATA_OVER_ETH is not set 731# CONFIG_ATA_OVER_ETH is not set
712# CONFIG_BLK_DEV_HD is not set 732# CONFIG_BLK_DEV_HD is not set
713CONFIG_MISC_DEVICES=y 733CONFIG_MISC_DEVICES=y
734# CONFIG_AD525X_DPOT is not set
714# CONFIG_ICS932S401 is not set 735# CONFIG_ICS932S401 is not set
715# CONFIG_ENCLOSURE_SERVICES is not set 736# CONFIG_ENCLOSURE_SERVICES is not set
716# CONFIG_ISL29003 is not set 737# CONFIG_ISL29003 is not set
717# CONFIG_AD525X_DPOT is not set
718# CONFIG_C2PORT is not set 738# CONFIG_C2PORT is not set
719 739
720# 740#
@@ -767,7 +787,8 @@ CONFIG_SCSI_WAIT_SCAN=m
767# CONFIG_SCSI_OSD_INITIATOR is not set 787# CONFIG_SCSI_OSD_INITIATOR is not set
768CONFIG_ATA=y 788CONFIG_ATA=y
769# CONFIG_ATA_NONSTANDARD is not set 789# CONFIG_ATA_NONSTANDARD is not set
770CONFIG_SATA_PMP=y 790CONFIG_ATA_VERBOSE_ERROR=y
791# CONFIG_SATA_PMP is not set
771CONFIG_ATA_SFF=y 792CONFIG_ATA_SFF=y
772# CONFIG_SATA_MV is not set 793# CONFIG_SATA_MV is not set
773# CONFIG_PATA_PLATFORM is not set 794# CONFIG_PATA_PLATFORM is not set
@@ -808,6 +829,7 @@ CONFIG_MII=y
808# CONFIG_ETHOC is not set 829# CONFIG_ETHOC is not set
809CONFIG_SMSC911X=y 830CONFIG_SMSC911X=y
810# CONFIG_DNET is not set 831# CONFIG_DNET is not set
832# CONFIG_ADF702X is not set
811# CONFIG_IBM_NEW_EMAC_ZMII is not set 833# CONFIG_IBM_NEW_EMAC_ZMII is not set
812# CONFIG_IBM_NEW_EMAC_RGMII is not set 834# CONFIG_IBM_NEW_EMAC_RGMII is not set
813# CONFIG_IBM_NEW_EMAC_TAH is not set 835# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -818,12 +840,10 @@ CONFIG_SMSC911X=y
818# CONFIG_B44 is not set 840# CONFIG_B44 is not set
819# CONFIG_KS8842 is not set 841# CONFIG_KS8842 is not set
820# CONFIG_KS8851 is not set 842# CONFIG_KS8851 is not set
843# CONFIG_KS8851_MLL is not set
821# CONFIG_NETDEV_1000 is not set 844# CONFIG_NETDEV_1000 is not set
822# CONFIG_NETDEV_10000 is not set 845# CONFIG_NETDEV_10000 is not set
823 846CONFIG_WLAN=y
824#
825# Wireless LAN
826#
827# CONFIG_WLAN_PRE80211 is not set 847# CONFIG_WLAN_PRE80211 is not set
828CONFIG_WLAN_80211=y 848CONFIG_WLAN_80211=y
829CONFIG_LIBERTAS=m 849CONFIG_LIBERTAS=m
@@ -877,10 +897,12 @@ CONFIG_INPUT_EVBUG=m
877CONFIG_INPUT_KEYBOARD=y 897CONFIG_INPUT_KEYBOARD=y
878# CONFIG_KEYBOARD_ADP5588 is not set 898# CONFIG_KEYBOARD_ADP5588 is not set
879# CONFIG_KEYBOARD_ATKBD is not set 899# CONFIG_KEYBOARD_ATKBD is not set
900# CONFIG_QT2160 is not set
880CONFIG_KEYBOARD_BFIN=y 901CONFIG_KEYBOARD_BFIN=y
881# CONFIG_KEYBOARD_LKKBD is not set 902# CONFIG_KEYBOARD_LKKBD is not set
882# CONFIG_KEYBOARD_GPIO is not set 903# CONFIG_KEYBOARD_GPIO is not set
883# CONFIG_KEYBOARD_MATRIX is not set 904# CONFIG_KEYBOARD_MATRIX is not set
905# CONFIG_KEYBOARD_MAX7359 is not set
884# CONFIG_KEYBOARD_NEWTON is not set 906# CONFIG_KEYBOARD_NEWTON is not set
885# CONFIG_KEYBOARD_OPENCORES is not set 907# CONFIG_KEYBOARD_OPENCORES is not set
886# CONFIG_KEYBOARD_STOWAWAY is not set 908# CONFIG_KEYBOARD_STOWAWAY is not set
@@ -900,6 +922,7 @@ CONFIG_TOUCHSCREEN_AD7877=m
900# CONFIG_TOUCHSCREEN_GUNZE is not set 922# CONFIG_TOUCHSCREEN_GUNZE is not set
901# CONFIG_TOUCHSCREEN_ELO is not set 923# CONFIG_TOUCHSCREEN_ELO is not set
902# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set 924# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
925# CONFIG_TOUCHSCREEN_MCS5000 is not set
903# CONFIG_TOUCHSCREEN_MTOUCH is not set 926# CONFIG_TOUCHSCREEN_MTOUCH is not set
904# CONFIG_TOUCHSCREEN_INEXIO is not set 927# CONFIG_TOUCHSCREEN_INEXIO is not set
905# CONFIG_TOUCHSCREEN_MK712 is not set 928# CONFIG_TOUCHSCREEN_MK712 is not set
@@ -910,7 +933,6 @@ CONFIG_TOUCHSCREEN_AD7877=m
910# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set 933# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
911# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 934# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
912# CONFIG_TOUCHSCREEN_TSC2007 is not set 935# CONFIG_TOUCHSCREEN_TSC2007 is not set
913# CONFIG_TOUCHSCREEN_W90X900 is not set
914CONFIG_INPUT_MISC=y 936CONFIG_INPUT_MISC=y
915# CONFIG_INPUT_ATI_REMOTE is not set 937# CONFIG_INPUT_ATI_REMOTE is not set
916# CONFIG_INPUT_ATI_REMOTE2 is not set 938# CONFIG_INPUT_ATI_REMOTE2 is not set
@@ -976,11 +998,6 @@ CONFIG_UNIX98_PTYS=y
976# CONFIG_LEGACY_PTYS is not set 998# CONFIG_LEGACY_PTYS is not set
977CONFIG_BFIN_OTP=y 999CONFIG_BFIN_OTP=y
978# CONFIG_BFIN_OTP_WRITE_ENABLE is not set 1000# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
979
980#
981# CAN, the car bus and industrial fieldbus
982#
983# CONFIG_CAN4LINUX is not set
984# CONFIG_IPMI_HANDLER is not set 1001# CONFIG_IPMI_HANDLER is not set
985# CONFIG_HW_RANDOM is not set 1002# CONFIG_HW_RANDOM is not set
986# CONFIG_R3964 is not set 1003# CONFIG_R3964 is not set
@@ -988,6 +1005,7 @@ CONFIG_BFIN_OTP=y
988# CONFIG_TCG_TPM is not set 1005# CONFIG_TCG_TPM is not set
989CONFIG_I2C=y 1006CONFIG_I2C=y
990CONFIG_I2C_BOARDINFO=y 1007CONFIG_I2C_BOARDINFO=y
1008CONFIG_I2C_COMPAT=y
991CONFIG_I2C_CHARDEV=y 1009CONFIG_I2C_CHARDEV=y
992CONFIG_I2C_HELPER_AUTO=y 1010CONFIG_I2C_HELPER_AUTO=y
993 1011
@@ -1021,9 +1039,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
1021# Miscellaneous I2C Chip support 1039# Miscellaneous I2C Chip support
1022# 1040#
1023# CONFIG_DS1682 is not set 1041# CONFIG_DS1682 is not set
1024# CONFIG_SENSORS_PCF8574 is not set
1025# CONFIG_PCF8575 is not set
1026# CONFIG_SENSORS_PCA9539 is not set
1027# CONFIG_SENSORS_TSL2550 is not set 1042# CONFIG_SENSORS_TSL2550 is not set
1028# CONFIG_I2C_DEBUG_CORE is not set 1043# CONFIG_I2C_DEBUG_CORE is not set
1029# CONFIG_I2C_DEBUG_ALGO is not set 1044# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1078,11 +1093,15 @@ CONFIG_GPIO_SYSFS=y
1078# 1093#
1079# CONFIG_GPIO_MAX7301 is not set 1094# CONFIG_GPIO_MAX7301 is not set
1080# CONFIG_GPIO_MCP23S08 is not set 1095# CONFIG_GPIO_MCP23S08 is not set
1096# CONFIG_GPIO_MC33880 is not set
1097
1098#
1099# AC97 GPIO expanders:
1100#
1081# CONFIG_W1 is not set 1101# CONFIG_W1 is not set
1082# CONFIG_POWER_SUPPLY is not set 1102# CONFIG_POWER_SUPPLY is not set
1083# CONFIG_HWMON is not set 1103# CONFIG_HWMON is not set
1084# CONFIG_THERMAL is not set 1104# CONFIG_THERMAL is not set
1085# CONFIG_THERMAL_HWMON is not set
1086CONFIG_WATCHDOG=y 1105CONFIG_WATCHDOG=y
1087# CONFIG_WATCHDOG_NOWAYOUT is not set 1106# CONFIG_WATCHDOG_NOWAYOUT is not set
1088 1107
@@ -1116,8 +1135,10 @@ CONFIG_SSB_POSSIBLE=y
1116# CONFIG_PMIC_DA903X is not set 1135# CONFIG_PMIC_DA903X is not set
1117# CONFIG_PMIC_ADP5520 is not set 1136# CONFIG_PMIC_ADP5520 is not set
1118# CONFIG_MFD_WM8400 is not set 1137# CONFIG_MFD_WM8400 is not set
1138# CONFIG_MFD_WM831X is not set
1119# CONFIG_MFD_WM8350_I2C is not set 1139# CONFIG_MFD_WM8350_I2C is not set
1120# CONFIG_MFD_PCF50633 is not set 1140# CONFIG_MFD_PCF50633 is not set
1141# CONFIG_MFD_MC13783 is not set
1121# CONFIG_AB3100_CORE is not set 1142# CONFIG_AB3100_CORE is not set
1122# CONFIG_EZX_PCAP is not set 1143# CONFIG_EZX_PCAP is not set
1123# CONFIG_REGULATOR is not set 1144# CONFIG_REGULATOR is not set
@@ -1192,6 +1213,7 @@ CONFIG_LOGO=y
1192CONFIG_LOGO_BLACKFIN_CLUT224=y 1213CONFIG_LOGO_BLACKFIN_CLUT224=y
1193CONFIG_SOUND=y 1214CONFIG_SOUND=y
1194CONFIG_SOUND_OSS_CORE=y 1215CONFIG_SOUND_OSS_CORE=y
1216CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1195CONFIG_SND=y 1217CONFIG_SND=y
1196CONFIG_SND_TIMER=y 1218CONFIG_SND_TIMER=y
1197CONFIG_SND_PCM=y 1219CONFIG_SND_PCM=y
@@ -1245,7 +1267,6 @@ CONFIG_SND_SOC_AD1980=y
1245CONFIG_AC97_BUS=y 1267CONFIG_AC97_BUS=y
1246CONFIG_HID_SUPPORT=y 1268CONFIG_HID_SUPPORT=y
1247CONFIG_HID=y 1269CONFIG_HID=y
1248# CONFIG_HID_DEBUG is not set
1249# CONFIG_HIDRAW is not set 1270# CONFIG_HIDRAW is not set
1250 1271
1251# 1272#
@@ -1268,6 +1289,7 @@ CONFIG_HID_CYPRESS=y
1268CONFIG_HID_EZKEY=y 1289CONFIG_HID_EZKEY=y
1269# CONFIG_HID_KYE is not set 1290# CONFIG_HID_KYE is not set
1270CONFIG_HID_GYRATION=y 1291CONFIG_HID_GYRATION=y
1292# CONFIG_HID_TWINHAN is not set
1271# CONFIG_HID_KENSINGTON is not set 1293# CONFIG_HID_KENSINGTON is not set
1272CONFIG_HID_LOGITECH=y 1294CONFIG_HID_LOGITECH=y
1273# CONFIG_LOGITECH_FF is not set 1295# CONFIG_LOGITECH_FF is not set
@@ -1422,10 +1444,11 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1422# MMC/SD/SDIO Host Controller Drivers 1444# MMC/SD/SDIO Host Controller Drivers
1423# 1445#
1424# CONFIG_MMC_SDHCI is not set 1446# CONFIG_MMC_SDHCI is not set
1447# CONFIG_MMC_AT91 is not set
1448# CONFIG_MMC_ATMELMCI is not set
1449# CONFIG_MMC_SPI is not set
1425CONFIG_SDH_BFIN=y 1450CONFIG_SDH_BFIN=y
1426# CONFIG_SDH_BFIN_MISSING_CMD_PULLUP_WORKAROUND is not set 1451# CONFIG_SDH_BFIN_MISSING_CMD_PULLUP_WORKAROUND is not set
1427# CONFIG_SDH_BFIN_ENABLE_SDIO_IRQ is not set
1428# CONFIG_MMC_SPI is not set
1429# CONFIG_MEMSTICK is not set 1452# CONFIG_MEMSTICK is not set
1430# CONFIG_NEW_LEDS is not set 1453# CONFIG_NEW_LEDS is not set
1431# CONFIG_ACCESSIBILITY is not set 1454# CONFIG_ACCESSIBILITY is not set
@@ -1472,6 +1495,7 @@ CONFIG_RTC_INTF_DEV=y
1472# CONFIG_RTC_DRV_R9701 is not set 1495# CONFIG_RTC_DRV_R9701 is not set
1473# CONFIG_RTC_DRV_RS5C348 is not set 1496# CONFIG_RTC_DRV_RS5C348 is not set
1474# CONFIG_RTC_DRV_DS3234 is not set 1497# CONFIG_RTC_DRV_DS3234 is not set
1498# CONFIG_RTC_DRV_PCF2123 is not set
1475 1499
1476# 1500#
1477# Platform RTC drivers 1501# Platform RTC drivers
@@ -1522,6 +1546,7 @@ CONFIG_FS_MBCACHE=y
1522# CONFIG_XFS_FS is not set 1546# CONFIG_XFS_FS is not set
1523# CONFIG_OCFS2_FS is not set 1547# CONFIG_OCFS2_FS is not set
1524# CONFIG_BTRFS_FS is not set 1548# CONFIG_BTRFS_FS is not set
1549# CONFIG_NILFS2_FS is not set
1525CONFIG_FILE_LOCKING=y 1550CONFIG_FILE_LOCKING=y
1526CONFIG_FSNOTIFY=y 1551CONFIG_FSNOTIFY=y
1527# CONFIG_DNOTIFY is not set 1552# CONFIG_DNOTIFY is not set
@@ -1563,7 +1588,6 @@ CONFIG_NTFS_RW=y
1563CONFIG_PROC_FS=y 1588CONFIG_PROC_FS=y
1564CONFIG_PROC_SYSCTL=y 1589CONFIG_PROC_SYSCTL=y
1565CONFIG_SYSFS=y 1590CONFIG_SYSFS=y
1566# CONFIG_TMPFS is not set
1567# CONFIG_HUGETLB_PAGE is not set 1591# CONFIG_HUGETLB_PAGE is not set
1568# CONFIG_CONFIGFS_FS is not set 1592# CONFIG_CONFIGFS_FS is not set
1569CONFIG_MISC_FILESYSTEMS=y 1593CONFIG_MISC_FILESYSTEMS=y
@@ -1595,7 +1619,6 @@ CONFIG_JFFS2_RTIME=y
1595# CONFIG_ROMFS_FS is not set 1619# CONFIG_ROMFS_FS is not set
1596# CONFIG_SYSV_FS is not set 1620# CONFIG_SYSV_FS is not set
1597# CONFIG_UFS_FS is not set 1621# CONFIG_UFS_FS is not set
1598# CONFIG_NILFS2_FS is not set
1599CONFIG_NETWORK_FILESYSTEMS=y 1622CONFIG_NETWORK_FILESYSTEMS=y
1600CONFIG_NFS_FS=m 1623CONFIG_NFS_FS=m
1601CONFIG_NFS_V3=y 1624CONFIG_NFS_V3=y
@@ -1680,6 +1703,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1680CONFIG_ENABLE_MUST_CHECK=y 1703CONFIG_ENABLE_MUST_CHECK=y
1681CONFIG_FRAME_WARN=1024 1704CONFIG_FRAME_WARN=1024
1682# CONFIG_MAGIC_SYSRQ is not set 1705# CONFIG_MAGIC_SYSRQ is not set
1706# CONFIG_STRIP_ASM_SYMS is not set
1683# CONFIG_UNUSED_SYMBOLS is not set 1707# CONFIG_UNUSED_SYMBOLS is not set
1684CONFIG_DEBUG_FS=y 1708CONFIG_DEBUG_FS=y
1685# CONFIG_HEADERS_CHECK is not set 1709# CONFIG_HEADERS_CHECK is not set
@@ -1714,12 +1738,14 @@ CONFIG_DEBUG_INFO=y
1714# CONFIG_DEBUG_LIST is not set 1738# CONFIG_DEBUG_LIST is not set
1715# CONFIG_DEBUG_SG is not set 1739# CONFIG_DEBUG_SG is not set
1716# CONFIG_DEBUG_NOTIFIERS is not set 1740# CONFIG_DEBUG_NOTIFIERS is not set
1741# CONFIG_DEBUG_CREDENTIALS is not set
1717# CONFIG_FRAME_POINTER is not set 1742# CONFIG_FRAME_POINTER is not set
1718# CONFIG_BOOT_PRINTK_DELAY is not set 1743# CONFIG_BOOT_PRINTK_DELAY is not set
1719# CONFIG_RCU_TORTURE_TEST is not set 1744# CONFIG_RCU_TORTURE_TEST is not set
1720# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1745# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1721# CONFIG_BACKTRACE_SELF_TEST is not set 1746# CONFIG_BACKTRACE_SELF_TEST is not set
1722# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1747# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1748# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1723# CONFIG_FAULT_INJECTION is not set 1749# CONFIG_FAULT_INJECTION is not set
1724# CONFIG_PAGE_POISONING is not set 1750# CONFIG_PAGE_POISONING is not set
1725CONFIG_HAVE_FUNCTION_TRACER=y 1751CONFIG_HAVE_FUNCTION_TRACER=y
@@ -1730,7 +1756,6 @@ CONFIG_TRACING_SUPPORT=y
1730# CONFIG_SAMPLES is not set 1756# CONFIG_SAMPLES is not set
1731CONFIG_HAVE_ARCH_KGDB=y 1757CONFIG_HAVE_ARCH_KGDB=y
1732# CONFIG_KGDB is not set 1758# CONFIG_KGDB is not set
1733# CONFIG_KMEMCHECK is not set
1734# CONFIG_DEBUG_STACKOVERFLOW is not set 1759# CONFIG_DEBUG_STACKOVERFLOW is not set
1735# CONFIG_DEBUG_STACK_USAGE is not set 1760# CONFIG_DEBUG_STACK_USAGE is not set
1736CONFIG_DEBUG_VERBOSE=y 1761CONFIG_DEBUG_VERBOSE=y
@@ -1766,7 +1791,6 @@ CONFIG_CRYPTO=y
1766# 1791#
1767# Crypto core or helper 1792# Crypto core or helper
1768# 1793#
1769# CONFIG_CRYPTO_FIPS is not set
1770# CONFIG_CRYPTO_MANAGER is not set 1794# CONFIG_CRYPTO_MANAGER is not set
1771# CONFIG_CRYPTO_MANAGER2 is not set 1795# CONFIG_CRYPTO_MANAGER2 is not set
1772# CONFIG_CRYPTO_GF128MUL is not set 1796# CONFIG_CRYPTO_GF128MUL is not set
@@ -1798,11 +1822,13 @@ CONFIG_CRYPTO=y
1798# 1822#
1799# CONFIG_CRYPTO_HMAC is not set 1823# CONFIG_CRYPTO_HMAC is not set
1800# CONFIG_CRYPTO_XCBC is not set 1824# CONFIG_CRYPTO_XCBC is not set
1825# CONFIG_CRYPTO_VMAC is not set
1801 1826
1802# 1827#
1803# Digest 1828# Digest
1804# 1829#
1805# CONFIG_CRYPTO_CRC32C is not set 1830# CONFIG_CRYPTO_CRC32C is not set
1831# CONFIG_CRYPTO_GHASH is not set
1806# CONFIG_CRYPTO_MD4 is not set 1832# CONFIG_CRYPTO_MD4 is not set
1807# CONFIG_CRYPTO_MD5 is not set 1833# CONFIG_CRYPTO_MD5 is not set
1808# CONFIG_CRYPTO_MICHAEL_MIC is not set 1834# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/blackfin/configs/BF561-ACVILON_defconfig b/arch/blackfin/configs/BF561-ACVILON_defconfig
index b9b0f93d0bd3..6a776ce75e9c 100644
--- a/arch/blackfin/configs/BF561-ACVILON_defconfig
+++ b/arch/blackfin/configs/BF561-ACVILON_defconfig
@@ -114,7 +114,7 @@ CONFIG_MODULE_UNLOAD=y
114# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
115# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
116CONFIG_BLOCK=y 116CONFIG_BLOCK=y
117CONFIG_LBDAF=y 117# CONFIG_LBDAF is not set
118# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
119# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
120 120
@@ -1486,19 +1486,10 @@ CONFIG_DEBUG_INFO=y
1486CONFIG_HAVE_FUNCTION_TRACER=y 1486CONFIG_HAVE_FUNCTION_TRACER=y
1487CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1487CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1488CONFIG_TRACING_SUPPORT=y 1488CONFIG_TRACING_SUPPORT=y
1489CONFIG_FTRACE=y 1489# CONFIG_FTRACE is not set
1490# CONFIG_FUNCTION_TRACER is not set 1490# CONFIG_BRANCH_PROFILE_NONE is not set
1491# CONFIG_IRQSOFF_TRACER is not set
1492# CONFIG_SCHED_TRACER is not set
1493# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1494# CONFIG_BOOT_TRACER is not set
1495CONFIG_BRANCH_PROFILE_NONE=y
1496# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set 1491# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1497# CONFIG_PROFILE_ALL_BRANCHES is not set 1492# CONFIG_PROFILE_ALL_BRANCHES is not set
1498# CONFIG_STACK_TRACER is not set
1499# CONFIG_KMEMTRACE is not set
1500# CONFIG_WORKQUEUE_TRACER is not set
1501# CONFIG_BLK_DEV_IO_TRACE is not set
1502# CONFIG_DYNAMIC_DEBUG is not set 1493# CONFIG_DYNAMIC_DEBUG is not set
1503# CONFIG_SAMPLES is not set 1494# CONFIG_SAMPLES is not set
1504CONFIG_HAVE_ARCH_KGDB=y 1495CONFIG_HAVE_ARCH_KGDB=y
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig
index e3ecdcc3e76b..792ff0938835 100644
--- a/arch/blackfin/configs/BF561-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF561-EZKIT_defconfig
@@ -1,7 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31.5 3# Linux kernel version: 2.6.32.2
4# Mon Nov 2 21:59:31 2009
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
@@ -12,7 +11,6 @@ CONFIG_GENERIC_CSUM=y
12CONFIG_GENERIC_BUG=y 11CONFIG_GENERIC_BUG=y
13CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
14CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
17CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
18CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
@@ -49,11 +47,12 @@ CONFIG_SYSVIPC_SYSCTL=y
49# 47#
50# RCU Subsystem 48# RCU Subsystem
51# 49#
52CONFIG_CLASSIC_RCU=y 50CONFIG_TREE_RCU=y
53# CONFIG_TREE_RCU is not set 51# CONFIG_TREE_PREEMPT_RCU is not set
54# CONFIG_PREEMPT_RCU is not set 52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set 55# CONFIG_TREE_RCU_TRACE is not set
56# CONFIG_PREEMPT_RCU_TRACE is not set
57CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
58CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
59CONFIG_LOG_BUF_SHIFT=14 58CONFIG_LOG_BUF_SHIFT=14
@@ -89,17 +88,15 @@ CONFIG_EPOLL=y
89# CONFIG_AIO is not set 88# CONFIG_AIO is not set
90 89
91# 90#
92# Performance Counters 91# Kernel Performance Events And Counters
93# 92#
94CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
95# CONFIG_STRIP_ASM_SYMS is not set
96CONFIG_COMPAT_BRK=y 94CONFIG_COMPAT_BRK=y
97CONFIG_SLAB=y 95CONFIG_SLAB=y
98# CONFIG_SLUB is not set 96# CONFIG_SLUB is not set
99# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
100CONFIG_MMAP_ALLOW_UNINITIALIZED=y 98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
101# CONFIG_PROFILING is not set 99# CONFIG_PROFILING is not set
102# CONFIG_MARKERS is not set
103CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
104 101
105# 102#
@@ -163,15 +160,15 @@ CONFIG_PREEMPT_VOLUNTARY=y
163# CONFIG_BF537 is not set 160# CONFIG_BF537 is not set
164# CONFIG_BF538 is not set 161# CONFIG_BF538 is not set
165# CONFIG_BF539 is not set 162# CONFIG_BF539 is not set
166# CONFIG_BF542 is not set 163# CONFIG_BF542_std is not set
167# CONFIG_BF542M is not set 164# CONFIG_BF542M is not set
168# CONFIG_BF544 is not set 165# CONFIG_BF544_std is not set
169# CONFIG_BF544M is not set 166# CONFIG_BF544M is not set
170# CONFIG_BF547 is not set 167# CONFIG_BF547_std is not set
171# CONFIG_BF547M is not set 168# CONFIG_BF547M is not set
172# CONFIG_BF548 is not set 169# CONFIG_BF548_std is not set
173# CONFIG_BF548M is not set 170# CONFIG_BF548M is not set
174# CONFIG_BF549 is not set 171# CONFIG_BF549_std is not set
175# CONFIG_BF549M is not set 172# CONFIG_BF549M is not set
176CONFIG_BF561=y 173CONFIG_BF561=y
177# CONFIG_SMP is not set 174# CONFIG_SMP is not set
@@ -180,9 +177,9 @@ CONFIG_BF_REV_MAX=5
180# CONFIG_BF_REV_0_0 is not set 177# CONFIG_BF_REV_0_0 is not set
181# CONFIG_BF_REV_0_1 is not set 178# CONFIG_BF_REV_0_1 is not set
182# CONFIG_BF_REV_0_2 is not set 179# CONFIG_BF_REV_0_2 is not set
183# CONFIG_BF_REV_0_3 is not set 180CONFIG_BF_REV_0_3=y
184# CONFIG_BF_REV_0_4 is not set 181# CONFIG_BF_REV_0_4 is not set
185CONFIG_BF_REV_0_5=y 182# CONFIG_BF_REV_0_5 is not set
186# CONFIG_BF_REV_0_6 is not set 183# CONFIG_BF_REV_0_6 is not set
187# CONFIG_BF_REV_ANY is not set 184# CONFIG_BF_REV_ANY is not set
188# CONFIG_BF_REV_NONE is not set 185# CONFIG_BF_REV_NONE is not set
@@ -298,7 +295,7 @@ CONFIG_GENERIC_TIME=y
298CONFIG_GENERIC_CLOCKEVENTS=y 295CONFIG_GENERIC_CLOCKEVENTS=y
299# CONFIG_TICKSOURCE_GPTMR0 is not set 296# CONFIG_TICKSOURCE_GPTMR0 is not set
300CONFIG_TICKSOURCE_CORETMR=y 297CONFIG_TICKSOURCE_CORETMR=y
301# CONFIG_CYCLES_CLOCKSOURCE is not set 298CONFIG_CYCLES_CLOCKSOURCE=y
302# CONFIG_GPTMR0_CLOCKSOURCE is not set 299# CONFIG_GPTMR0_CLOCKSOURCE is not set
303CONFIG_TICK_ONESHOT=y 300CONFIG_TICK_ONESHOT=y
304# CONFIG_NO_HZ is not set 301# CONFIG_NO_HZ is not set
@@ -353,12 +350,14 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
353# CONFIG_PHYS_ADDR_T_64BIT is not set 350# CONFIG_PHYS_ADDR_T_64BIT is not set
354CONFIG_ZONE_DMA_FLAG=1 351CONFIG_ZONE_DMA_FLAG=1
355CONFIG_VIRT_TO_BUS=y 352CONFIG_VIRT_TO_BUS=y
356CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
357CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0 353CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
358CONFIG_BFIN_GPTIMERS=m 354CONFIG_BFIN_GPTIMERS=m
359# CONFIG_DMA_UNCACHED_4M is not set 355# CONFIG_DMA_UNCACHED_4M is not set
360# CONFIG_DMA_UNCACHED_2M is not set 356# CONFIG_DMA_UNCACHED_2M is not set
361CONFIG_DMA_UNCACHED_1M=y 357CONFIG_DMA_UNCACHED_1M=y
358# CONFIG_DMA_UNCACHED_512K is not set
359# CONFIG_DMA_UNCACHED_256K is not set
360# CONFIG_DMA_UNCACHED_128K is not set
362# CONFIG_DMA_UNCACHED_NONE is not set 361# CONFIG_DMA_UNCACHED_NONE is not set
363 362
364# 363#
@@ -370,9 +369,11 @@ CONFIG_BFIN_EXTMEM_ICACHEABLE=y
370CONFIG_BFIN_DCACHE=y 369CONFIG_BFIN_DCACHE=y
371# CONFIG_BFIN_DCACHE_BANKA is not set 370# CONFIG_BFIN_DCACHE_BANKA is not set
372CONFIG_BFIN_EXTMEM_DCACHEABLE=y 371CONFIG_BFIN_EXTMEM_DCACHEABLE=y
373CONFIG_BFIN_EXTMEM_WRITEBACK=y 372# CONFIG_BFIN_EXTMEM_WRITEBACK is not set
374# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 373CONFIG_BFIN_EXTMEM_WRITETHROUGH=y
375# CONFIG_BFIN_L2_DCACHEABLE is not set 374CONFIG_BFIN_L2_DCACHEABLE=y
375# CONFIG_BFIN_L2_WRITEBACK is not set
376CONFIG_BFIN_L2_WRITETHROUGH=y
376 377
377# 378#
378# Memory Protection Unit 379# Memory Protection Unit
@@ -472,6 +473,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
472# CONFIG_NETFILTER is not set 473# CONFIG_NETFILTER is not set
473# CONFIG_IP_DCCP is not set 474# CONFIG_IP_DCCP is not set
474# CONFIG_IP_SCTP is not set 475# CONFIG_IP_SCTP is not set
476# CONFIG_RDS is not set
475# CONFIG_TIPC is not set 477# CONFIG_TIPC is not set
476# CONFIG_ATM is not set 478# CONFIG_ATM is not set
477# CONFIG_BRIDGE is not set 479# CONFIG_BRIDGE is not set
@@ -613,6 +615,7 @@ CONFIG_MTD_PHYSMAP=m
613# 615#
614# CONFIG_MTD_DATAFLASH is not set 616# CONFIG_MTD_DATAFLASH is not set
615# CONFIG_MTD_M25P80 is not set 617# CONFIG_MTD_M25P80 is not set
618# CONFIG_MTD_SST25L is not set
616# CONFIG_MTD_SLRAM is not set 619# CONFIG_MTD_SLRAM is not set
617# CONFIG_MTD_PHRAM is not set 620# CONFIG_MTD_PHRAM is not set
618# CONFIG_MTD_MTDRAM is not set 621# CONFIG_MTD_MTDRAM is not set
@@ -685,6 +688,7 @@ CONFIG_SMC91X=y
685# CONFIG_ETHOC is not set 688# CONFIG_ETHOC is not set
686# CONFIG_SMSC911X is not set 689# CONFIG_SMSC911X is not set
687# CONFIG_DNET is not set 690# CONFIG_DNET is not set
691# CONFIG_ADF702X is not set
688# CONFIG_IBM_NEW_EMAC_ZMII is not set 692# CONFIG_IBM_NEW_EMAC_ZMII is not set
689# CONFIG_IBM_NEW_EMAC_RGMII is not set 693# CONFIG_IBM_NEW_EMAC_RGMII is not set
690# CONFIG_IBM_NEW_EMAC_TAH is not set 694# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -695,14 +699,10 @@ CONFIG_SMC91X=y
695# CONFIG_B44 is not set 699# CONFIG_B44 is not set
696# CONFIG_KS8842 is not set 700# CONFIG_KS8842 is not set
697# CONFIG_KS8851 is not set 701# CONFIG_KS8851 is not set
702# CONFIG_KS8851_MLL is not set
698# CONFIG_NETDEV_1000 is not set 703# CONFIG_NETDEV_1000 is not set
699# CONFIG_NETDEV_10000 is not set 704# CONFIG_NETDEV_10000 is not set
700 705# CONFIG_WLAN is not set
701#
702# Wireless LAN
703#
704# CONFIG_WLAN_PRE80211 is not set
705# CONFIG_WLAN_80211 is not set
706 706
707# 707#
708# Enable WiMAX (Networking options) to see the WiMAX drivers 708# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -782,11 +782,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y
782CONFIG_UNIX98_PTYS=y 782CONFIG_UNIX98_PTYS=y
783# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 783# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
784# CONFIG_LEGACY_PTYS is not set 784# CONFIG_LEGACY_PTYS is not set
785
786#
787# CAN, the car bus and industrial fieldbus
788#
789# CONFIG_CAN4LINUX is not set
790# CONFIG_IPMI_HANDLER is not set 785# CONFIG_IPMI_HANDLER is not set
791# CONFIG_HW_RANDOM is not set 786# CONFIG_HW_RANDOM is not set
792# CONFIG_R3964 is not set 787# CONFIG_R3964 is not set
@@ -838,11 +833,15 @@ CONFIG_GPIO_SYSFS=y
838# 833#
839# CONFIG_GPIO_MAX7301 is not set 834# CONFIG_GPIO_MAX7301 is not set
840# CONFIG_GPIO_MCP23S08 is not set 835# CONFIG_GPIO_MCP23S08 is not set
836# CONFIG_GPIO_MC33880 is not set
837
838#
839# AC97 GPIO expanders:
840#
841# CONFIG_W1 is not set 841# CONFIG_W1 is not set
842# CONFIG_POWER_SUPPLY is not set 842# CONFIG_POWER_SUPPLY is not set
843# CONFIG_HWMON is not set 843# CONFIG_HWMON is not set
844# CONFIG_THERMAL is not set 844# CONFIG_THERMAL is not set
845# CONFIG_THERMAL_HWMON is not set
846CONFIG_WATCHDOG=y 845CONFIG_WATCHDOG=y
847# CONFIG_WATCHDOG_NOWAYOUT is not set 846# CONFIG_WATCHDOG_NOWAYOUT is not set
848 847
@@ -865,6 +864,7 @@ CONFIG_SSB_POSSIBLE=y
865# CONFIG_MFD_SM501 is not set 864# CONFIG_MFD_SM501 is not set
866# CONFIG_HTC_PASIC3 is not set 865# CONFIG_HTC_PASIC3 is not set
867# CONFIG_MFD_TMIO is not set 866# CONFIG_MFD_TMIO is not set
867# CONFIG_MFD_MC13783 is not set
868# CONFIG_EZX_PCAP is not set 868# CONFIG_EZX_PCAP is not set
869# CONFIG_REGULATOR is not set 869# CONFIG_REGULATOR is not set
870# CONFIG_MEDIA_SUPPORT is not set 870# CONFIG_MEDIA_SUPPORT is not set
@@ -884,7 +884,6 @@ CONFIG_SSB_POSSIBLE=y
884# CONFIG_SOUND is not set 884# CONFIG_SOUND is not set
885CONFIG_HID_SUPPORT=y 885CONFIG_HID_SUPPORT=y
886CONFIG_HID=m 886CONFIG_HID=m
887# CONFIG_HID_DEBUG is not set
888# CONFIG_HIDRAW is not set 887# CONFIG_HIDRAW is not set
889# CONFIG_HID_PID is not set 888# CONFIG_HID_PID is not set
890 889
@@ -923,6 +922,7 @@ CONFIG_HID=m
923# CONFIG_XFS_FS is not set 922# CONFIG_XFS_FS is not set
924# CONFIG_OCFS2_FS is not set 923# CONFIG_OCFS2_FS is not set
925# CONFIG_BTRFS_FS is not set 924# CONFIG_BTRFS_FS is not set
925# CONFIG_NILFS2_FS is not set
926CONFIG_FILE_LOCKING=y 926CONFIG_FILE_LOCKING=y
927CONFIG_FSNOTIFY=y 927CONFIG_FSNOTIFY=y
928# CONFIG_DNOTIFY is not set 928# CONFIG_DNOTIFY is not set
@@ -957,7 +957,6 @@ CONFIG_INOTIFY_USER=y
957CONFIG_PROC_FS=y 957CONFIG_PROC_FS=y
958CONFIG_PROC_SYSCTL=y 958CONFIG_PROC_SYSCTL=y
959CONFIG_SYSFS=y 959CONFIG_SYSFS=y
960# CONFIG_TMPFS is not set
961# CONFIG_HUGETLB_PAGE is not set 960# CONFIG_HUGETLB_PAGE is not set
962# CONFIG_CONFIGFS_FS is not set 961# CONFIG_CONFIGFS_FS is not set
963CONFIG_MISC_FILESYSTEMS=y 962CONFIG_MISC_FILESYSTEMS=y
@@ -989,7 +988,6 @@ CONFIG_JFFS2_RTIME=y
989# CONFIG_ROMFS_FS is not set 988# CONFIG_ROMFS_FS is not set
990# CONFIG_SYSV_FS is not set 989# CONFIG_SYSV_FS is not set
991# CONFIG_UFS_FS is not set 990# CONFIG_UFS_FS is not set
992# CONFIG_NILFS2_FS is not set
993CONFIG_NETWORK_FILESYSTEMS=y 991CONFIG_NETWORK_FILESYSTEMS=y
994CONFIG_NFS_FS=m 992CONFIG_NFS_FS=m
995CONFIG_NFS_V3=y 993CONFIG_NFS_V3=y
@@ -1064,6 +1062,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1064CONFIG_ENABLE_MUST_CHECK=y 1062CONFIG_ENABLE_MUST_CHECK=y
1065CONFIG_FRAME_WARN=1024 1063CONFIG_FRAME_WARN=1024
1066# CONFIG_MAGIC_SYSRQ is not set 1064# CONFIG_MAGIC_SYSRQ is not set
1065# CONFIG_STRIP_ASM_SYMS is not set
1067# CONFIG_UNUSED_SYMBOLS is not set 1066# CONFIG_UNUSED_SYMBOLS is not set
1068CONFIG_DEBUG_FS=y 1067CONFIG_DEBUG_FS=y
1069# CONFIG_HEADERS_CHECK is not set 1068# CONFIG_HEADERS_CHECK is not set
@@ -1098,26 +1097,24 @@ CONFIG_DEBUG_INFO=y
1098# CONFIG_DEBUG_LIST is not set 1097# CONFIG_DEBUG_LIST is not set
1099# CONFIG_DEBUG_SG is not set 1098# CONFIG_DEBUG_SG is not set
1100# CONFIG_DEBUG_NOTIFIERS is not set 1099# CONFIG_DEBUG_NOTIFIERS is not set
1100# CONFIG_DEBUG_CREDENTIALS is not set
1101# CONFIG_FRAME_POINTER is not set 1101# CONFIG_FRAME_POINTER is not set
1102# CONFIG_BOOT_PRINTK_DELAY is not set 1102# CONFIG_BOOT_PRINTK_DELAY is not set
1103# CONFIG_RCU_TORTURE_TEST is not set 1103# CONFIG_RCU_TORTURE_TEST is not set
1104# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1104# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1105# CONFIG_BACKTRACE_SELF_TEST is not set 1105# CONFIG_BACKTRACE_SELF_TEST is not set
1106# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1106# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1107# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1107# CONFIG_FAULT_INJECTION is not set 1108# CONFIG_FAULT_INJECTION is not set
1108# CONFIG_PAGE_POISONING is not set 1109# CONFIG_PAGE_POISONING is not set
1109CONFIG_HAVE_FUNCTION_TRACER=y 1110CONFIG_HAVE_FUNCTION_TRACER=y
1110CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 1111CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1111CONFIG_TRACING_SUPPORT=y 1112CONFIG_TRACING_SUPPORT=y
1112# CONFIG_FTRACE is not set 1113# CONFIG_FTRACE is not set
1113# CONFIG_BRANCH_PROFILE_NONE is not set
1114# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1115# CONFIG_PROFILE_ALL_BRANCHES is not set
1116# CONFIG_DYNAMIC_DEBUG is not set 1114# CONFIG_DYNAMIC_DEBUG is not set
1117# CONFIG_SAMPLES is not set 1115# CONFIG_SAMPLES is not set
1118CONFIG_HAVE_ARCH_KGDB=y 1116CONFIG_HAVE_ARCH_KGDB=y
1119# CONFIG_KGDB is not set 1117# CONFIG_KGDB is not set
1120# CONFIG_KMEMCHECK is not set
1121# CONFIG_DEBUG_STACKOVERFLOW is not set 1118# CONFIG_DEBUG_STACKOVERFLOW is not set
1122# CONFIG_DEBUG_STACK_USAGE is not set 1119# CONFIG_DEBUG_STACK_USAGE is not set
1123CONFIG_DEBUG_VERBOSE=y 1120CONFIG_DEBUG_VERBOSE=y
@@ -1153,7 +1150,6 @@ CONFIG_CRYPTO=y
1153# 1150#
1154# Crypto core or helper 1151# Crypto core or helper
1155# 1152#
1156# CONFIG_CRYPTO_FIPS is not set
1157# CONFIG_CRYPTO_MANAGER is not set 1153# CONFIG_CRYPTO_MANAGER is not set
1158# CONFIG_CRYPTO_MANAGER2 is not set 1154# CONFIG_CRYPTO_MANAGER2 is not set
1159# CONFIG_CRYPTO_GF128MUL is not set 1155# CONFIG_CRYPTO_GF128MUL is not set
@@ -1185,11 +1181,13 @@ CONFIG_CRYPTO=y
1185# 1181#
1186# CONFIG_CRYPTO_HMAC is not set 1182# CONFIG_CRYPTO_HMAC is not set
1187# CONFIG_CRYPTO_XCBC is not set 1183# CONFIG_CRYPTO_XCBC is not set
1184# CONFIG_CRYPTO_VMAC is not set
1188 1185
1189# 1186#
1190# Digest 1187# Digest
1191# 1188#
1192# CONFIG_CRYPTO_CRC32C is not set 1189# CONFIG_CRYPTO_CRC32C is not set
1190# CONFIG_CRYPTO_GHASH is not set
1193# CONFIG_CRYPTO_MD4 is not set 1191# CONFIG_CRYPTO_MD4 is not set
1194# CONFIG_CRYPTO_MD5 is not set 1192# CONFIG_CRYPTO_MD5 is not set
1195# CONFIG_CRYPTO_MICHAEL_MIC is not set 1193# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/blackfin/configs/H8606_defconfig b/arch/blackfin/configs/H8606_defconfig
index bc7fae3d8b83..ed0a7ebeb85c 100644
--- a/arch/blackfin/configs/H8606_defconfig
+++ b/arch/blackfin/configs/H8606_defconfig
@@ -834,13 +834,6 @@ CONFIG_SND_VERBOSE_PROCFS=y
834# 834#
835# ALSA Blackfin devices 835# ALSA Blackfin devices
836# 836#
837CONFIG_SND_BLACKFIN_AD1836=m
838CONFIG_SND_BLACKFIN_AD1836_TDM=y
839# CONFIG_SND_BLACKFIN_AD1836_I2S is not set
840CONFIG_SND_BLACKFIN_AD1836_MULSUB=y
841# CONFIG_SND_BLACKFIN_AD1836_5P1 is not set
842CONFIG_SND_BLACKFIN_SPORT=0
843CONFIG_SND_BLACKFIN_SPI_PFBIT=4
844# CONFIG_SND_BFIN_AD73311 is not set 837# CONFIG_SND_BFIN_AD73311 is not set
845 838
846# 839#
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig
index 67d12768602a..ad58fede1f41 100644
--- a/arch/blackfin/configs/PNAV-10_defconfig
+++ b/arch/blackfin/configs/PNAV-10_defconfig
@@ -1,21 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28.10 3# Linux kernel version: 2.6.32.2
4# 4#
5# CONFIG_MMU is not set 5# CONFIG_MMU is not set
6# CONFIG_FPU is not set 6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y 9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
10CONFIG_ZONE_DMA=y 12CONFIG_ZONE_DMA=y
11CONFIG_GENERIC_FIND_NEXT_BIT=y 13CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_GPIO=y 17CONFIG_GENERIC_GPIO=y
16CONFIG_FORCE_MAX_ZONEORDER=14 18CONFIG_FORCE_MAX_ZONEORDER=14
17CONFIG_GENERIC_CALIBRATE_DELAY=y 19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
19 25
20# 26#
21# General setup 27# General setup
@@ -25,16 +31,32 @@ CONFIG_BROKEN_ON_SMP=y
25CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
26CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
27CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37CONFIG_KERNEL_GZIP=y
38# CONFIG_KERNEL_BZIP2 is not set
39# CONFIG_KERNEL_LZMA is not set
28CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
29CONFIG_SYSVIPC_SYSCTL=y 41CONFIG_SYSVIPC_SYSCTL=y
30# CONFIG_POSIX_MQUEUE is not set 42# CONFIG_POSIX_MQUEUE is not set
31# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
32# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
33# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
34# CONFIG_IKCONFIG is not set 56# CONFIG_IKCONFIG is not set
35CONFIG_LOG_BUF_SHIFT=14 57CONFIG_LOG_BUF_SHIFT=14
36# CONFIG_CGROUPS is not set
37# CONFIG_GROUP_SCHED is not set 58# CONFIG_GROUP_SCHED is not set
59# CONFIG_CGROUPS is not set
38# CONFIG_SYSFS_DEPRECATED_V2 is not set 60# CONFIG_SYSFS_DEPRECATED_V2 is not set
39# CONFIG_RELAY is not set 61# CONFIG_RELAY is not set
40# CONFIG_NAMESPACES is not set 62# CONFIG_NAMESPACES is not set
@@ -58,6 +80,10 @@ CONFIG_SIGNALFD=y
58CONFIG_TIMERFD=y 80CONFIG_TIMERFD=y
59CONFIG_EVENTFD=y 81CONFIG_EVENTFD=y
60# CONFIG_AIO is not set 82# CONFIG_AIO is not set
83
84#
85# Kernel Performance Events And Counters
86#
61CONFIG_VM_EVENT_COUNTERS=y 87CONFIG_VM_EVENT_COUNTERS=y
62CONFIG_COMPAT_BRK=y 88CONFIG_COMPAT_BRK=y
63CONFIG_SLAB=y 89CONFIG_SLAB=y
@@ -65,11 +91,14 @@ CONFIG_SLAB=y
65# CONFIG_SLOB is not set 91# CONFIG_SLOB is not set
66CONFIG_MMAP_ALLOW_UNINITIALIZED=y 92CONFIG_MMAP_ALLOW_UNINITIALIZED=y
67# CONFIG_PROFILING is not set 93# CONFIG_PROFILING is not set
68# CONFIG_MARKERS is not set
69CONFIG_HAVE_OPROFILE=y 94CONFIG_HAVE_OPROFILE=y
95
96#
97# GCOV-based kernel profiling
98#
99# CONFIG_SLOW_WORK is not set
70# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 100# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
71CONFIG_SLABINFO=y 101CONFIG_SLABINFO=y
72CONFIG_TINY_SHMEM=y
73CONFIG_BASE_SMALL=0 102CONFIG_BASE_SMALL=0
74CONFIG_MODULES=y 103CONFIG_MODULES=y
75# CONFIG_MODULE_FORCE_LOAD is not set 104# CONFIG_MODULE_FORCE_LOAD is not set
@@ -77,11 +106,8 @@ CONFIG_MODULE_UNLOAD=y
77# CONFIG_MODULE_FORCE_UNLOAD is not set 106# CONFIG_MODULE_FORCE_UNLOAD is not set
78# CONFIG_MODVERSIONS is not set 107# CONFIG_MODVERSIONS is not set
79# CONFIG_MODULE_SRCVERSION_ALL is not set 108# CONFIG_MODULE_SRCVERSION_ALL is not set
80CONFIG_KMOD=y
81CONFIG_BLOCK=y 109CONFIG_BLOCK=y
82# CONFIG_LBD is not set 110# CONFIG_LBDAF 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 111# CONFIG_BLK_DEV_BSG is not set
86# CONFIG_BLK_DEV_INTEGRITY is not set 112# CONFIG_BLK_DEV_INTEGRITY is not set
87 113
@@ -97,7 +123,6 @@ CONFIG_DEFAULT_AS=y
97# CONFIG_DEFAULT_CFQ is not set 123# CONFIG_DEFAULT_CFQ is not set
98# CONFIG_DEFAULT_NOOP is not set 124# CONFIG_DEFAULT_NOOP is not set
99CONFIG_DEFAULT_IOSCHED="anticipatory" 125CONFIG_DEFAULT_IOSCHED="anticipatory"
100CONFIG_CLASSIC_RCU=y
101# CONFIG_PREEMPT_NONE is not set 126# CONFIG_PREEMPT_NONE is not set
102CONFIG_PREEMPT_VOLUNTARY=y 127CONFIG_PREEMPT_VOLUNTARY=y
103# CONFIG_PREEMPT is not set 128# CONFIG_PREEMPT is not set
@@ -128,15 +153,15 @@ CONFIG_PREEMPT_VOLUNTARY=y
128CONFIG_BF537=y 153CONFIG_BF537=y
129# CONFIG_BF538 is not set 154# CONFIG_BF538 is not set
130# CONFIG_BF539 is not set 155# CONFIG_BF539 is not set
131# CONFIG_BF542 is not set 156# CONFIG_BF542_std is not set
132# CONFIG_BF542M is not set 157# CONFIG_BF542M is not set
133# CONFIG_BF544 is not set 158# CONFIG_BF544_std is not set
134# CONFIG_BF544M is not set 159# CONFIG_BF544M is not set
135# CONFIG_BF547 is not set 160# CONFIG_BF547_std is not set
136# CONFIG_BF547M is not set 161# CONFIG_BF547M is not set
137# CONFIG_BF548 is not set 162# CONFIG_BF548_std is not set
138# CONFIG_BF548M is not set 163# CONFIG_BF548M is not set
139# CONFIG_BF549 is not set 164# CONFIG_BF549_std is not set
140# CONFIG_BF549M is not set 165# CONFIG_BF549M is not set
141# CONFIG_BF561 is not set 166# CONFIG_BF561 is not set
142CONFIG_BF_REV_MIN=2 167CONFIG_BF_REV_MIN=2
@@ -180,7 +205,8 @@ CONFIG_IRQ_MEM_DMA1=13
180CONFIG_IRQ_WATCH=13 205CONFIG_IRQ_WATCH=13
181CONFIG_IRQ_SPI=10 206CONFIG_IRQ_SPI=10
182# CONFIG_BFIN537_STAMP is not set 207# CONFIG_BFIN537_STAMP is not set
183# CONFIG_BFIN537_BLUETECHNIX_CM is not set 208# CONFIG_BFIN537_BLUETECHNIX_CM_E is not set
209# CONFIG_BFIN537_BLUETECHNIX_CM_U is not set
184# CONFIG_BFIN537_BLUETECHNIX_TCM is not set 210# CONFIG_BFIN537_BLUETECHNIX_TCM is not set
185CONFIG_PNAV10=y 211CONFIG_PNAV10=y
186# CONFIG_CAMSIG_MINOTAUR is not set 212# CONFIG_CAMSIG_MINOTAUR is not set
@@ -282,7 +308,6 @@ CONFIG_FLATMEM=y
282CONFIG_FLAT_NODE_MEM_MAP=y 308CONFIG_FLAT_NODE_MEM_MAP=y
283CONFIG_PAGEFLAGS_EXTENDED=y 309CONFIG_PAGEFLAGS_EXTENDED=y
284CONFIG_SPLIT_PTLOCK_CPUS=4 310CONFIG_SPLIT_PTLOCK_CPUS=4
285# CONFIG_RESOURCES_64BIT is not set
286# CONFIG_PHYS_ADDR_T_64BIT is not set 311# CONFIG_PHYS_ADDR_T_64BIT is not set
287CONFIG_ZONE_DMA_FLAG=1 312CONFIG_ZONE_DMA_FLAG=1
288CONFIG_VIRT_TO_BUS=y 313CONFIG_VIRT_TO_BUS=y
@@ -291,16 +316,18 @@ CONFIG_BFIN_GPTIMERS=y
291# CONFIG_DMA_UNCACHED_4M is not set 316# CONFIG_DMA_UNCACHED_4M is not set
292# CONFIG_DMA_UNCACHED_2M is not set 317# CONFIG_DMA_UNCACHED_2M is not set
293CONFIG_DMA_UNCACHED_1M=y 318CONFIG_DMA_UNCACHED_1M=y
319# CONFIG_DMA_UNCACHED_512K is not set
320# CONFIG_DMA_UNCACHED_256K is not set
321# CONFIG_DMA_UNCACHED_128K is not set
294# CONFIG_DMA_UNCACHED_NONE is not set 322# CONFIG_DMA_UNCACHED_NONE is not set
295 323
296# 324#
297# Cache Support 325# Cache Support
298# 326#
299CONFIG_BFIN_ICACHE=y 327CONFIG_BFIN_ICACHE=y
300# CONFIG_BFIN_ICACHE_LOCK is not set 328CONFIG_BFIN_EXTMEM_ICACHEABLE=y
301CONFIG_BFIN_DCACHE=y 329CONFIG_BFIN_DCACHE=y
302# CONFIG_BFIN_DCACHE_BANKA is not set 330# CONFIG_BFIN_DCACHE_BANKA is not set
303CONFIG_BFIN_EXTMEM_ICACHEABLE=y
304CONFIG_BFIN_EXTMEM_DCACHEABLE=y 331CONFIG_BFIN_EXTMEM_DCACHEABLE=y
305CONFIG_BFIN_EXTMEM_WRITEBACK=y 332CONFIG_BFIN_EXTMEM_WRITEBACK=y
306# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set 333# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
@@ -311,7 +338,7 @@ CONFIG_BFIN_EXTMEM_WRITEBACK=y
311# CONFIG_MPU is not set 338# CONFIG_MPU is not set
312 339
313# 340#
314# Asynchonous Memory Configuration 341# Asynchronous Memory Configuration
315# 342#
316 343
317# 344#
@@ -367,11 +394,6 @@ CONFIG_NET=y
367CONFIG_PACKET=y 394CONFIG_PACKET=y
368# CONFIG_PACKET_MMAP is not set 395# CONFIG_PACKET_MMAP is not set
369CONFIG_UNIX=y 396CONFIG_UNIX=y
370CONFIG_XFRM=y
371# CONFIG_XFRM_USER is not set
372# CONFIG_XFRM_SUB_POLICY is not set
373# CONFIG_XFRM_MIGRATE is not set
374# CONFIG_XFRM_STATISTICS is not set
375# CONFIG_NET_KEY is not set 397# CONFIG_NET_KEY is not set
376CONFIG_INET=y 398CONFIG_INET=y
377# CONFIG_IP_MULTICAST is not set 399# CONFIG_IP_MULTICAST is not set
@@ -395,7 +417,6 @@ CONFIG_IP_PNP=y
395# CONFIG_INET_XFRM_MODE_BEET is not set 417# CONFIG_INET_XFRM_MODE_BEET is not set
396# CONFIG_INET_LRO is not set 418# CONFIG_INET_LRO is not set
397# CONFIG_INET_DIAG is not set 419# CONFIG_INET_DIAG is not set
398CONFIG_INET_TCP_DIAG=y
399# CONFIG_TCP_CONG_ADVANCED is not set 420# CONFIG_TCP_CONG_ADVANCED is not set
400CONFIG_TCP_CONG_CUBIC=y 421CONFIG_TCP_CONG_CUBIC=y
401CONFIG_DEFAULT_TCP_CONG="cubic" 422CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -406,6 +427,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_NETFILTER is not set 427# CONFIG_NETFILTER is not set
407# CONFIG_IP_DCCP is not set 428# CONFIG_IP_DCCP is not set
408# CONFIG_IP_SCTP is not set 429# CONFIG_IP_SCTP is not set
430# CONFIG_RDS is not set
409# CONFIG_TIPC is not set 431# CONFIG_TIPC is not set
410# CONFIG_ATM is not set 432# CONFIG_ATM is not set
411# CONFIG_BRIDGE is not set 433# CONFIG_BRIDGE is not set
@@ -419,7 +441,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
419# CONFIG_LAPB is not set 441# CONFIG_LAPB is not set
420# CONFIG_ECONET is not set 442# CONFIG_ECONET is not set
421# CONFIG_WAN_ROUTER is not set 443# CONFIG_WAN_ROUTER is not set
444# CONFIG_PHONET is not set
445# CONFIG_IEEE802154 is not set
422# CONFIG_NET_SCHED is not set 446# CONFIG_NET_SCHED is not set
447# CONFIG_DCB is not set
423 448
424# 449#
425# Network testing 450# Network testing
@@ -430,13 +455,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
430# CONFIG_IRDA is not set 455# CONFIG_IRDA is not set
431# CONFIG_BT is not set 456# CONFIG_BT is not set
432# CONFIG_AF_RXRPC is not set 457# CONFIG_AF_RXRPC is not set
433# CONFIG_PHONET is not set 458# CONFIG_WIRELESS is not set
434CONFIG_WIRELESS=y 459# CONFIG_WIMAX is not set
435# CONFIG_CFG80211 is not set
436CONFIG_WIRELESS_OLD_REGULATORY=y
437# CONFIG_WIRELESS_EXT is not set
438# CONFIG_MAC80211 is not set
439# CONFIG_IEEE80211 is not set
440# CONFIG_RFKILL is not set 460# CONFIG_RFKILL is not set
441# CONFIG_NET_9P is not set 461# CONFIG_NET_9P is not set
442 462
@@ -455,6 +475,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
455# CONFIG_CONNECTOR is not set 475# CONFIG_CONNECTOR is not set
456CONFIG_MTD=y 476CONFIG_MTD=y
457# CONFIG_MTD_DEBUG is not set 477# CONFIG_MTD_DEBUG is not set
478# CONFIG_MTD_TESTS is not set
458# CONFIG_MTD_CONCAT is not set 479# CONFIG_MTD_CONCAT is not set
459CONFIG_MTD_PARTITIONS=y 480CONFIG_MTD_PARTITIONS=y
460# CONFIG_MTD_REDBOOT_PARTS is not set 481# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -506,6 +527,7 @@ CONFIG_MTD_UCLINUX=y
506# 527#
507# CONFIG_MTD_DATAFLASH is not set 528# CONFIG_MTD_DATAFLASH is not set
508# CONFIG_MTD_M25P80 is not set 529# CONFIG_MTD_M25P80 is not set
530# CONFIG_MTD_SST25L is not set
509# CONFIG_MTD_SLRAM is not set 531# CONFIG_MTD_SLRAM is not set
510# CONFIG_MTD_PHRAM is not set 532# CONFIG_MTD_PHRAM is not set
511# CONFIG_MTD_MTDRAM is not set 533# CONFIG_MTD_MTDRAM is not set
@@ -521,11 +543,6 @@ CONFIG_MTD_NAND=y
521# CONFIG_MTD_NAND_VERIFY_WRITE is not set 543# CONFIG_MTD_NAND_VERIFY_WRITE is not set
522# CONFIG_MTD_NAND_ECC_SMC is not set 544# CONFIG_MTD_NAND_ECC_SMC is not set
523# CONFIG_MTD_NAND_MUSEUM_IDS is not set 545# CONFIG_MTD_NAND_MUSEUM_IDS is not set
524CONFIG_MTD_NAND_BFIN=y
525CONFIG_BFIN_NAND_BASE=0x20100000
526CONFIG_BFIN_NAND_CLE=2
527CONFIG_BFIN_NAND_ALE=1
528CONFIG_BFIN_NAND_READY=44
529CONFIG_MTD_NAND_IDS=y 546CONFIG_MTD_NAND_IDS=y
530# CONFIG_MTD_NAND_DISKONCHIP is not set 547# CONFIG_MTD_NAND_DISKONCHIP is not set
531# CONFIG_MTD_NAND_NANDSIM is not set 548# CONFIG_MTD_NAND_NANDSIM is not set
@@ -533,6 +550,11 @@ CONFIG_MTD_NAND_IDS=y
533# CONFIG_MTD_ONENAND is not set 550# CONFIG_MTD_ONENAND is not set
534 551
535# 552#
553# LPDDR flash memory drivers
554#
555# CONFIG_MTD_LPDDR is not set
556
557#
536# UBI - Unsorted block images 558# UBI - Unsorted block images
537# 559#
538# CONFIG_MTD_UBI is not set 560# CONFIG_MTD_UBI is not set
@@ -549,10 +571,20 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
549# CONFIG_ATA_OVER_ETH is not set 571# CONFIG_ATA_OVER_ETH is not set
550# CONFIG_BLK_DEV_HD is not set 572# CONFIG_BLK_DEV_HD is not set
551CONFIG_MISC_DEVICES=y 573CONFIG_MISC_DEVICES=y
552# CONFIG_EEPROM_93CX6 is not set 574# CONFIG_AD525X_DPOT is not set
553# CONFIG_ICS932S401 is not set 575# CONFIG_ICS932S401 is not set
554# CONFIG_ENCLOSURE_SERVICES is not set 576# CONFIG_ENCLOSURE_SERVICES is not set
577# CONFIG_ISL29003 is not set
555# CONFIG_C2PORT is not set 578# CONFIG_C2PORT is not set
579
580#
581# EEPROM support
582#
583# CONFIG_EEPROM_AT24 is not set
584# CONFIG_EEPROM_AT25 is not set
585# CONFIG_EEPROM_LEGACY is not set
586# CONFIG_EEPROM_MAX6875 is not set
587# CONFIG_EEPROM_93CX6 is not set
556CONFIG_HAVE_IDE=y 588CONFIG_HAVE_IDE=y
557# CONFIG_IDE is not set 589# CONFIG_IDE is not set
558 590
@@ -587,6 +619,9 @@ CONFIG_PHYLIB=y
587# CONFIG_BROADCOM_PHY is not set 619# CONFIG_BROADCOM_PHY is not set
588# CONFIG_ICPLUS_PHY is not set 620# CONFIG_ICPLUS_PHY is not set
589# CONFIG_REALTEK_PHY is not set 621# CONFIG_REALTEK_PHY is not set
622# CONFIG_NATIONAL_PHY is not set
623# CONFIG_STE10XP is not set
624# CONFIG_LSI_ET1011C_PHY is not set
590# CONFIG_FIXED_PHY is not set 625# CONFIG_FIXED_PHY is not set
591# CONFIG_MDIO_BITBANG is not set 626# CONFIG_MDIO_BITBANG is not set
592CONFIG_NET_ETHERNET=y 627CONFIG_NET_ETHERNET=y
@@ -597,9 +632,12 @@ CONFIG_BFIN_TX_DESC_NUM=100
597CONFIG_BFIN_RX_DESC_NUM=100 632CONFIG_BFIN_RX_DESC_NUM=100
598CONFIG_BFIN_MAC_RMII=y 633CONFIG_BFIN_MAC_RMII=y
599# CONFIG_SMC91X is not set 634# CONFIG_SMC91X is not set
600# CONFIG_SMSC911X is not set
601# CONFIG_DM9000 is not set 635# CONFIG_DM9000 is not set
602# CONFIG_ENC28J60 is not set 636# CONFIG_ENC28J60 is not set
637# CONFIG_ETHOC is not set
638# CONFIG_SMSC911X is not set
639# CONFIG_DNET is not set
640# CONFIG_ADF702X is not set
603# CONFIG_IBM_NEW_EMAC_ZMII is not set 641# CONFIG_IBM_NEW_EMAC_ZMII is not set
604# CONFIG_IBM_NEW_EMAC_RGMII is not set 642# CONFIG_IBM_NEW_EMAC_RGMII is not set
605# CONFIG_IBM_NEW_EMAC_TAH is not set 643# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -608,15 +646,16 @@ CONFIG_BFIN_MAC_RMII=y
608# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 646# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
609# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 647# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
610# CONFIG_B44 is not set 648# CONFIG_B44 is not set
649# CONFIG_KS8842 is not set
650# CONFIG_KS8851 is not set
651# CONFIG_KS8851_MLL is not set
611# CONFIG_NETDEV_1000 is not set 652# CONFIG_NETDEV_1000 is not set
612# CONFIG_NETDEV_10000 is not set 653# CONFIG_NETDEV_10000 is not set
654# CONFIG_WLAN is not set
613 655
614# 656#
615# Wireless LAN 657# Enable WiMAX (Networking options) to see the WiMAX drivers
616# 658#
617# CONFIG_WLAN_PRE80211 is not set
618# CONFIG_WLAN_80211 is not set
619# CONFIG_IWLWIFI_LEDS is not set
620# CONFIG_WAN is not set 659# CONFIG_WAN is not set
621# CONFIG_PPP is not set 660# CONFIG_PPP is not set
622# CONFIG_SLIP is not set 661# CONFIG_SLIP is not set
@@ -649,14 +688,17 @@ CONFIG_INPUT_EVDEV=y
649# CONFIG_INPUT_JOYSTICK is not set 688# CONFIG_INPUT_JOYSTICK is not set
650# CONFIG_INPUT_TABLET is not set 689# CONFIG_INPUT_TABLET is not set
651CONFIG_INPUT_TOUCHSCREEN=y 690CONFIG_INPUT_TOUCHSCREEN=y
691# CONFIG_TOUCHSCREEN_ADS7846 is not set
652CONFIG_TOUCHSCREEN_AD7877=y 692CONFIG_TOUCHSCREEN_AD7877=y
653# CONFIG_TOUCHSCREEN_AD7879_I2C is not set 693# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
654# CONFIG_TOUCHSCREEN_AD7879_SPI is not set 694# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
655# CONFIG_TOUCHSCREEN_AD7879 is not set 695# CONFIG_TOUCHSCREEN_AD7879 is not set
656# CONFIG_TOUCHSCREEN_ADS7846 is not set 696# CONFIG_TOUCHSCREEN_EETI is not set
657# CONFIG_TOUCHSCREEN_FUJITSU is not set 697# CONFIG_TOUCHSCREEN_FUJITSU is not set
658# CONFIG_TOUCHSCREEN_GUNZE is not set 698# CONFIG_TOUCHSCREEN_GUNZE is not set
659# CONFIG_TOUCHSCREEN_ELO is not set 699# CONFIG_TOUCHSCREEN_ELO is not set
700# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
701# CONFIG_TOUCHSCREEN_MCS5000 is not set
660# CONFIG_TOUCHSCREEN_MTOUCH is not set 702# CONFIG_TOUCHSCREEN_MTOUCH is not set
661# CONFIG_TOUCHSCREEN_INEXIO is not set 703# CONFIG_TOUCHSCREEN_INEXIO is not set
662# CONFIG_TOUCHSCREEN_MK712 is not set 704# CONFIG_TOUCHSCREEN_MK712 is not set
@@ -665,6 +707,7 @@ CONFIG_TOUCHSCREEN_AD7877=y
665# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 707# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
666# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set 708# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
667# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 709# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
710# CONFIG_TOUCHSCREEN_TSC2007 is not set
668CONFIG_INPUT_MISC=y 711CONFIG_INPUT_MISC=y
669# CONFIG_INPUT_ATI_REMOTE is not set 712# CONFIG_INPUT_ATI_REMOTE is not set
670# CONFIG_INPUT_ATI_REMOTE2 is not set 713# CONFIG_INPUT_ATI_REMOTE2 is not set
@@ -673,7 +716,9 @@ CONFIG_INPUT_MISC=y
673# CONFIG_INPUT_YEALINK is not set 716# CONFIG_INPUT_YEALINK is not set
674# CONFIG_INPUT_CM109 is not set 717# CONFIG_INPUT_CM109 is not set
675CONFIG_INPUT_UINPUT=y 718CONFIG_INPUT_UINPUT=y
676# CONFIG_CONFIG_INPUT_PCF8574 is not set 719# CONFIG_INPUT_AD714X is not set
720# CONFIG_INPUT_ADXL34X is not set
721# CONFIG_INPUT_PCF8574 is not set
677 722
678# 723#
679# Hardware I/O ports 724# Hardware I/O ports
@@ -684,16 +729,13 @@ CONFIG_INPUT_UINPUT=y
684# 729#
685# Character devices 730# Character devices
686# 731#
687# CONFIG_AD9960 is not set
688CONFIG_BFIN_DMA_INTERFACE=m 732CONFIG_BFIN_DMA_INTERFACE=m
689# CONFIG_BFIN_PPI is not set 733# CONFIG_BFIN_PPI is not set
690# CONFIG_BFIN_PPIFCD is not set 734# CONFIG_BFIN_PPIFCD is not set
691# CONFIG_BFIN_SIMPLE_TIMER is not set 735# CONFIG_BFIN_SIMPLE_TIMER is not set
692# CONFIG_BFIN_SPI_ADC is not set 736# CONFIG_BFIN_SPI_ADC is not set
693CONFIG_BFIN_SPORT=y 737CONFIG_BFIN_SPORT=y
694# CONFIG_BFIN_TIMER_LATENCY is not set
695# CONFIG_BFIN_TWI_LCD is not set 738# CONFIG_BFIN_TWI_LCD is not set
696# CONFIG_SIMPLE_GPIO is not set
697# CONFIG_VT is not set 739# CONFIG_VT is not set
698CONFIG_DEVKMEM=y 740CONFIG_DEVKMEM=y
699# CONFIG_BFIN_JTAG_COMM is not set 741# CONFIG_BFIN_JTAG_COMM is not set
@@ -707,6 +749,7 @@ CONFIG_DEVKMEM=y
707# 749#
708# Non-8250 serial port support 750# Non-8250 serial port support
709# 751#
752# CONFIG_SERIAL_MAX3100 is not set
710CONFIG_SERIAL_BFIN=y 753CONFIG_SERIAL_BFIN=y
711CONFIG_SERIAL_BFIN_CONSOLE=y 754CONFIG_SERIAL_BFIN_CONSOLE=y
712CONFIG_SERIAL_BFIN_DMA=y 755CONFIG_SERIAL_BFIN_DMA=y
@@ -719,24 +762,17 @@ CONFIG_SERIAL_CORE=y
719CONFIG_SERIAL_CORE_CONSOLE=y 762CONFIG_SERIAL_CORE_CONSOLE=y
720# CONFIG_SERIAL_BFIN_SPORT is not set 763# CONFIG_SERIAL_BFIN_SPORT is not set
721CONFIG_UNIX98_PTYS=y 764CONFIG_UNIX98_PTYS=y
765# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
722# CONFIG_LEGACY_PTYS is not set 766# CONFIG_LEGACY_PTYS is not set
723
724#
725# CAN, the car bus and industrial fieldbus
726#
727CONFIG_CAN4LINUX=y
728
729#
730# linux embedded drivers
731#
732CONFIG_CAN_BLACKFIN=m
733# CONFIG_IPMI_HANDLER is not set 767# CONFIG_IPMI_HANDLER is not set
734CONFIG_HW_RANDOM=y 768CONFIG_HW_RANDOM=y
769# CONFIG_HW_RANDOM_TIMERIOMEM is not set
735# CONFIG_R3964 is not set 770# CONFIG_R3964 is not set
736# CONFIG_RAW_DRIVER is not set 771# CONFIG_RAW_DRIVER is not set
737# CONFIG_TCG_TPM is not set 772# CONFIG_TCG_TPM is not set
738CONFIG_I2C=y 773CONFIG_I2C=y
739CONFIG_I2C_BOARDINFO=y 774CONFIG_I2C_BOARDINFO=y
775CONFIG_I2C_COMPAT=y
740CONFIG_I2C_CHARDEV=y 776CONFIG_I2C_CHARDEV=y
741CONFIG_I2C_HELPER_AUTO=y 777CONFIG_I2C_HELPER_AUTO=y
742 778
@@ -769,14 +805,6 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
769# Miscellaneous I2C Chip support 805# Miscellaneous I2C Chip support
770# 806#
771# CONFIG_DS1682 is not set 807# CONFIG_DS1682 is not set
772# CONFIG_EEPROM_AT24 is not set
773# CONFIG_SENSORS_AD5252 is not set
774# CONFIG_EEPROM_LEGACY is not set
775CONFIG_SENSORS_PCF8574=m
776# CONFIG_PCF8575 is not set
777# CONFIG_SENSORS_PCA9539 is not set
778# CONFIG_SENSORS_PCF8591 is not set
779# CONFIG_SENSORS_MAX6875 is not set
780# CONFIG_SENSORS_TSL2550 is not set 808# CONFIG_SENSORS_TSL2550 is not set
781# CONFIG_I2C_DEBUG_CORE is not set 809# CONFIG_I2C_DEBUG_CORE is not set
782# CONFIG_I2C_DEBUG_ALGO is not set 810# CONFIG_I2C_DEBUG_ALGO is not set
@@ -792,20 +820,29 @@ CONFIG_SPI_BFIN=y
792# CONFIG_SPI_BFIN_LOCK is not set 820# CONFIG_SPI_BFIN_LOCK is not set
793# CONFIG_SPI_BFIN_SPORT is not set 821# CONFIG_SPI_BFIN_SPORT is not set
794# CONFIG_SPI_BITBANG is not set 822# CONFIG_SPI_BITBANG is not set
823# CONFIG_SPI_GPIO is not set
795 824
796# 825#
797# SPI Protocol Masters 826# SPI Protocol Masters
798# 827#
799# CONFIG_EEPROM_AT25 is not set
800# CONFIG_SPI_SPIDEV is not set 828# CONFIG_SPI_SPIDEV is not set
801# CONFIG_SPI_TLE62X0 is not set 829# CONFIG_SPI_TLE62X0 is not set
830
831#
832# PPS support
833#
834# CONFIG_PPS is not set
802CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 835CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
803# CONFIG_GPIOLIB is not set 836# CONFIG_GPIOLIB is not set
804# CONFIG_W1 is not set 837# CONFIG_W1 is not set
805# CONFIG_POWER_SUPPLY is not set 838# CONFIG_POWER_SUPPLY is not set
806CONFIG_HWMON=y 839CONFIG_HWMON=y
807# CONFIG_HWMON_VID is not set 840# CONFIG_HWMON_VID is not set
808# CONFIG_SENSORS_AD5252 is not set 841# CONFIG_HWMON_DEBUG_CHIP is not set
842
843#
844# Native drivers
845#
809# CONFIG_SENSORS_AD7414 is not set 846# CONFIG_SENSORS_AD7414 is not set
810# CONFIG_SENSORS_AD7418 is not set 847# CONFIG_SENSORS_AD7418 is not set
811# CONFIG_SENSORS_ADCXX is not set 848# CONFIG_SENSORS_ADCXX is not set
@@ -818,11 +855,13 @@ CONFIG_HWMON=y
818# CONFIG_SENSORS_ADT7462 is not set 855# CONFIG_SENSORS_ADT7462 is not set
819# CONFIG_SENSORS_ADT7470 is not set 856# CONFIG_SENSORS_ADT7470 is not set
820# CONFIG_SENSORS_ADT7473 is not set 857# CONFIG_SENSORS_ADT7473 is not set
858# CONFIG_SENSORS_ADT7475 is not set
821# CONFIG_SENSORS_ATXP1 is not set 859# CONFIG_SENSORS_ATXP1 is not set
822# CONFIG_SENSORS_DS1621 is not set 860# CONFIG_SENSORS_DS1621 is not set
823# CONFIG_SENSORS_F71805F is not set 861# CONFIG_SENSORS_F71805F is not set
824# CONFIG_SENSORS_F71882FG is not set 862# CONFIG_SENSORS_F71882FG is not set
825# CONFIG_SENSORS_F75375S is not set 863# CONFIG_SENSORS_F75375S is not set
864# CONFIG_SENSORS_G760A is not set
826# CONFIG_SENSORS_GL518SM is not set 865# CONFIG_SENSORS_GL518SM is not set
827# CONFIG_SENSORS_GL520SM is not set 866# CONFIG_SENSORS_GL520SM is not set
828# CONFIG_SENSORS_IT87 is not set 867# CONFIG_SENSORS_IT87 is not set
@@ -838,17 +877,24 @@ CONFIG_HWMON=y
838# CONFIG_SENSORS_LM90 is not set 877# CONFIG_SENSORS_LM90 is not set
839# CONFIG_SENSORS_LM92 is not set 878# CONFIG_SENSORS_LM92 is not set
840# CONFIG_SENSORS_LM93 is not set 879# CONFIG_SENSORS_LM93 is not set
880# CONFIG_SENSORS_LTC4215 is not set
881# CONFIG_SENSORS_LTC4245 is not set
882# CONFIG_SENSORS_LM95241 is not set
841# CONFIG_SENSORS_MAX1111 is not set 883# CONFIG_SENSORS_MAX1111 is not set
842# CONFIG_SENSORS_MAX1619 is not set 884# CONFIG_SENSORS_MAX1619 is not set
843# CONFIG_SENSORS_MAX6650 is not set 885# CONFIG_SENSORS_MAX6650 is not set
844# CONFIG_SENSORS_PC87360 is not set 886# CONFIG_SENSORS_PC87360 is not set
845# CONFIG_SENSORS_PC87427 is not set 887# CONFIG_SENSORS_PC87427 is not set
888# CONFIG_SENSORS_PCF8591 is not set
889# CONFIG_SENSORS_SHT15 is not set
846# CONFIG_SENSORS_DME1737 is not set 890# CONFIG_SENSORS_DME1737 is not set
847# CONFIG_SENSORS_SMSC47M1 is not set 891# CONFIG_SENSORS_SMSC47M1 is not set
848# CONFIG_SENSORS_SMSC47M192 is not set 892# CONFIG_SENSORS_SMSC47M192 is not set
849# CONFIG_SENSORS_SMSC47B397 is not set 893# CONFIG_SENSORS_SMSC47B397 is not set
850# CONFIG_SENSORS_ADS7828 is not set 894# CONFIG_SENSORS_ADS7828 is not set
851# CONFIG_SENSORS_THMC50 is not set 895# CONFIG_SENSORS_THMC50 is not set
896# CONFIG_SENSORS_TMP401 is not set
897# CONFIG_SENSORS_TMP421 is not set
852# CONFIG_SENSORS_VT1211 is not set 898# CONFIG_SENSORS_VT1211 is not set
853# CONFIG_SENSORS_W83781D is not set 899# CONFIG_SENSORS_W83781D is not set
854# CONFIG_SENSORS_W83791D is not set 900# CONFIG_SENSORS_W83791D is not set
@@ -858,9 +904,8 @@ CONFIG_HWMON=y
858# CONFIG_SENSORS_W83L786NG is not set 904# CONFIG_SENSORS_W83L786NG is not set
859# CONFIG_SENSORS_W83627HF is not set 905# CONFIG_SENSORS_W83627HF is not set
860# CONFIG_SENSORS_W83627EHF is not set 906# CONFIG_SENSORS_W83627EHF is not set
861# CONFIG_HWMON_DEBUG_CHIP is not set 907# CONFIG_SENSORS_LIS3_SPI is not set
862# CONFIG_THERMAL is not set 908# CONFIG_THERMAL is not set
863# CONFIG_THERMAL_HWMON is not set
864# CONFIG_WATCHDOG is not set 909# CONFIG_WATCHDOG is not set
865CONFIG_SSB_POSSIBLE=y 910CONFIG_SSB_POSSIBLE=y
866 911
@@ -875,28 +920,19 @@ CONFIG_SSB_POSSIBLE=y
875# CONFIG_MFD_CORE is not set 920# CONFIG_MFD_CORE is not set
876# CONFIG_MFD_SM501 is not set 921# CONFIG_MFD_SM501 is not set
877# CONFIG_HTC_PASIC3 is not set 922# CONFIG_HTC_PASIC3 is not set
923# CONFIG_TWL4030_CORE is not set
878# CONFIG_MFD_TMIO is not set 924# CONFIG_MFD_TMIO is not set
879# CONFIG_PMIC_DA903X is not set 925# CONFIG_PMIC_DA903X is not set
880# CONFIG_PMIC_ADP5520 is not set 926# CONFIG_PMIC_ADP5520 is not set
881# CONFIG_MFD_WM8400 is not set 927# CONFIG_MFD_WM8400 is not set
928# CONFIG_MFD_WM831X is not set
882# CONFIG_MFD_WM8350_I2C is not set 929# CONFIG_MFD_WM8350_I2C is not set
930# CONFIG_MFD_PCF50633 is not set
931# CONFIG_MFD_MC13783 is not set
932# CONFIG_AB3100_CORE is not set
933# CONFIG_EZX_PCAP is not set
883# CONFIG_REGULATOR is not set 934# CONFIG_REGULATOR is not set
884 935# CONFIG_MEDIA_SUPPORT is not set
885#
886# Multimedia devices
887#
888
889#
890# Multimedia core support
891#
892# CONFIG_VIDEO_DEV is not set
893# CONFIG_DVB_CORE is not set
894# CONFIG_VIDEO_MEDIA is not set
895
896#
897# Multimedia drivers
898#
899CONFIG_DAB=y
900 936
901# 937#
902# Graphics support 938# Graphics support
@@ -928,24 +964,24 @@ CONFIG_FB_CFB_IMAGEBLIT=y
928# CONFIG_FB_BFIN_T350MCQB is not set 964# CONFIG_FB_BFIN_T350MCQB is not set
929# CONFIG_FB_BFIN_LQ035Q1 is not set 965# CONFIG_FB_BFIN_LQ035Q1 is not set
930CONFIG_FB_BF537_LQ035=y 966CONFIG_FB_BF537_LQ035=y
931CONFIG_LQ035_SLAVE_ADDR=0x58
932CONFIG_FB_BFIN_LANDSCAPE=y
933# CONFIG_FB_BFIN_BGR is not set
934# CONFIG_FB_BFIN_7393 is not set 967# CONFIG_FB_BFIN_7393 is not set
935# CONFIG_FB_HITACHI_TX09 is not set 968# CONFIG_FB_HITACHI_TX09 is not set
936# CONFIG_FB_S1D13XXX is not set 969# CONFIG_FB_S1D13XXX is not set
937# CONFIG_FB_VIRTUAL is not set 970# CONFIG_FB_VIRTUAL is not set
938# CONFIG_FB_METRONOME is not set 971# CONFIG_FB_METRONOME is not set
939# CONFIG_FB_MB862XX is not set 972# CONFIG_FB_MB862XX is not set
973# CONFIG_FB_BROADSHEET is not set
940CONFIG_BACKLIGHT_LCD_SUPPORT=y 974CONFIG_BACKLIGHT_LCD_SUPPORT=y
941CONFIG_LCD_CLASS_DEVICE=y 975CONFIG_LCD_CLASS_DEVICE=y
976# CONFIG_LCD_LMS283GF05 is not set
942# CONFIG_LCD_LTV350QV is not set 977# CONFIG_LCD_LTV350QV is not set
943# CONFIG_LCD_ILI9320 is not set 978# CONFIG_LCD_ILI9320 is not set
944# CONFIG_LCD_TDO24M is not set 979# CONFIG_LCD_TDO24M is not set
945# CONFIG_LCD_VGG2432A4 is not set 980# CONFIG_LCD_VGG2432A4 is not set
946# CONFIG_LCD_PLATFORM is not set 981# CONFIG_LCD_PLATFORM is not set
947CONFIG_BACKLIGHT_CLASS_DEVICE=y 982CONFIG_BACKLIGHT_CLASS_DEVICE=y
948# CONFIG_BACKLIGHT_CORGI is not set 983CONFIG_BACKLIGHT_GENERIC=y
984# CONFIG_BACKLIGHT_ADP8870 is not set
949 985
950# 986#
951# Display device support 987# Display device support
@@ -954,6 +990,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
954# CONFIG_LOGO is not set 990# CONFIG_LOGO is not set
955CONFIG_SOUND=y 991CONFIG_SOUND=y
956CONFIG_SOUND_OSS_CORE=y 992CONFIG_SOUND_OSS_CORE=y
993CONFIG_SOUND_OSS_CORE_PRECLAIM=y
957CONFIG_SND=m 994CONFIG_SND=m
958# CONFIG_SND_SEQUENCER is not set 995# CONFIG_SND_SEQUENCER is not set
959# CONFIG_SND_MIXER_OSS is not set 996# CONFIG_SND_MIXER_OSS is not set
@@ -963,6 +1000,11 @@ CONFIG_SND=m
963# CONFIG_SND_VERBOSE_PROCFS is not set 1000# CONFIG_SND_VERBOSE_PROCFS is not set
964# CONFIG_SND_VERBOSE_PRINTK is not set 1001# CONFIG_SND_VERBOSE_PRINTK is not set
965# CONFIG_SND_DEBUG is not set 1002# CONFIG_SND_DEBUG is not set
1003# CONFIG_SND_RAWMIDI_SEQ is not set
1004# CONFIG_SND_OPL3_LIB_SEQ is not set
1005# CONFIG_SND_OPL4_LIB_SEQ is not set
1006# CONFIG_SND_SBAWE_SEQ is not set
1007# CONFIG_SND_EMU10K1_SEQ is not set
966CONFIG_SND_DRIVERS=y 1008CONFIG_SND_DRIVERS=y
967# CONFIG_SND_DUMMY is not set 1009# CONFIG_SND_DUMMY is not set
968# CONFIG_SND_MTPAV is not set 1010# CONFIG_SND_MTPAV is not set
@@ -973,7 +1015,6 @@ CONFIG_SND_SPI=y
973# 1015#
974# ALSA Blackfin devices 1016# ALSA Blackfin devices
975# 1017#
976# CONFIG_SND_BLACKFIN_AD1836 is not set
977# CONFIG_SND_BFIN_AD73322 is not set 1018# CONFIG_SND_BFIN_AD73322 is not set
978# CONFIG_SND_SOC is not set 1019# CONFIG_SND_SOC is not set
979CONFIG_SOUND_PRIME=y 1020CONFIG_SOUND_PRIME=y
@@ -993,9 +1034,13 @@ CONFIG_USB_ARCH_HAS_HCD=y
993# 1034#
994 1035
995# 1036#
996# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1037# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
997# 1038#
998# CONFIG_USB_GADGET is not set 1039# CONFIG_USB_GADGET is not set
1040
1041#
1042# OTG and related infrastructure
1043#
999# CONFIG_MMC is not set 1044# CONFIG_MMC is not set
1000# CONFIG_MEMSTICK is not set 1045# CONFIG_MEMSTICK is not set
1001# CONFIG_NEW_LEDS is not set 1046# CONFIG_NEW_LEDS is not set
@@ -1031,6 +1076,7 @@ CONFIG_RTC_INTF_DEV=y
1031# CONFIG_RTC_DRV_S35390A is not set 1076# CONFIG_RTC_DRV_S35390A is not set
1032# CONFIG_RTC_DRV_FM3130 is not set 1077# CONFIG_RTC_DRV_FM3130 is not set
1033# CONFIG_RTC_DRV_RX8581 is not set 1078# CONFIG_RTC_DRV_RX8581 is not set
1079# CONFIG_RTC_DRV_RX8025 is not set
1034 1080
1035# 1081#
1036# SPI RTC drivers 1082# SPI RTC drivers
@@ -1042,6 +1088,7 @@ CONFIG_RTC_INTF_DEV=y
1042# CONFIG_RTC_DRV_R9701 is not set 1088# CONFIG_RTC_DRV_R9701 is not set
1043# CONFIG_RTC_DRV_RS5C348 is not set 1089# CONFIG_RTC_DRV_RS5C348 is not set
1044# CONFIG_RTC_DRV_DS3234 is not set 1090# CONFIG_RTC_DRV_DS3234 is not set
1091# CONFIG_RTC_DRV_PCF2123 is not set
1045 1092
1046# 1093#
1047# Platform RTC drivers 1094# Platform RTC drivers
@@ -1062,10 +1109,21 @@ CONFIG_RTC_INTF_DEV=y
1062# 1109#
1063CONFIG_RTC_DRV_BFIN=y 1110CONFIG_RTC_DRV_BFIN=y
1064# CONFIG_DMADEVICES is not set 1111# CONFIG_DMADEVICES is not set
1112# CONFIG_AUXDISPLAY is not set
1065# CONFIG_UIO is not set 1113# CONFIG_UIO is not set
1114
1115#
1116# TI VLYNQ
1117#
1066# CONFIG_STAGING is not set 1118# CONFIG_STAGING is not set
1067 1119
1068# 1120#
1121# Firmware Drivers
1122#
1123# CONFIG_FIRMWARE_MEMMAP is not set
1124# CONFIG_SIGMA is not set
1125
1126#
1069# File systems 1127# File systems
1070# 1128#
1071CONFIG_EXT2_FS=y 1129CONFIG_EXT2_FS=y
@@ -1078,9 +1136,13 @@ CONFIG_FS_MBCACHE=y
1078# CONFIG_REISERFS_FS is not set 1136# CONFIG_REISERFS_FS is not set
1079# CONFIG_JFS_FS is not set 1137# CONFIG_JFS_FS is not set
1080# CONFIG_FS_POSIX_ACL is not set 1138# CONFIG_FS_POSIX_ACL is not set
1081CONFIG_FILE_LOCKING=y
1082# CONFIG_XFS_FS is not set 1139# CONFIG_XFS_FS is not set
1140# CONFIG_GFS2_FS is not set
1083# CONFIG_OCFS2_FS is not set 1141# CONFIG_OCFS2_FS is not set
1142# CONFIG_BTRFS_FS is not set
1143# CONFIG_NILFS2_FS is not set
1144CONFIG_FILE_LOCKING=y
1145CONFIG_FSNOTIFY=y
1084# CONFIG_DNOTIFY is not set 1146# CONFIG_DNOTIFY is not set
1085CONFIG_INOTIFY=y 1147CONFIG_INOTIFY=y
1086CONFIG_INOTIFY_USER=y 1148CONFIG_INOTIFY_USER=y
@@ -1090,6 +1152,11 @@ CONFIG_INOTIFY_USER=y
1090# CONFIG_FUSE_FS is not set 1152# CONFIG_FUSE_FS is not set
1091 1153
1092# 1154#
1155# Caches
1156#
1157# CONFIG_FSCACHE is not set
1158
1159#
1093# CD-ROM/DVD Filesystems 1160# CD-ROM/DVD Filesystems
1094# 1161#
1095# CONFIG_ISO9660_FS is not set 1162# CONFIG_ISO9660_FS is not set
@@ -1108,13 +1175,9 @@ CONFIG_INOTIFY_USER=y
1108CONFIG_PROC_FS=y 1175CONFIG_PROC_FS=y
1109CONFIG_PROC_SYSCTL=y 1176CONFIG_PROC_SYSCTL=y
1110CONFIG_SYSFS=y 1177CONFIG_SYSFS=y
1111# CONFIG_TMPFS is not set
1112# CONFIG_HUGETLB_PAGE is not set 1178# CONFIG_HUGETLB_PAGE is not set
1113# CONFIG_CONFIGFS_FS is not set 1179# CONFIG_CONFIGFS_FS is not set
1114 1180CONFIG_MISC_FILESYSTEMS=y
1115#
1116# Miscellaneous filesystems
1117#
1118# CONFIG_ADFS_FS is not set 1181# CONFIG_ADFS_FS is not set
1119# CONFIG_AFFS_FS is not set 1182# CONFIG_AFFS_FS is not set
1120# CONFIG_HFS_FS is not set 1183# CONFIG_HFS_FS is not set
@@ -1123,17 +1186,8 @@ CONFIG_SYSFS=y
1123# CONFIG_BFS_FS is not set 1186# CONFIG_BFS_FS is not set
1124# CONFIG_EFS_FS is not set 1187# CONFIG_EFS_FS is not set
1125# CONFIG_JFFS2_FS is not set 1188# CONFIG_JFFS2_FS is not set
1126CONFIG_YAFFS_FS=y
1127CONFIG_YAFFS_YAFFS1=y
1128# CONFIG_YAFFS_9BYTE_TAGS is not set
1129# CONFIG_YAFFS_DOES_ECC is not set
1130CONFIG_YAFFS_YAFFS2=y
1131CONFIG_YAFFS_AUTO_YAFFS2=y
1132# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1133# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1134# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1135CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1136# CONFIG_CRAMFS is not set 1189# CONFIG_CRAMFS is not set
1190# CONFIG_SQUASHFS is not set
1137# CONFIG_VXFS_FS is not set 1191# CONFIG_VXFS_FS is not set
1138# CONFIG_MINIX_FS is not set 1192# CONFIG_MINIX_FS is not set
1139# CONFIG_OMFS_FS is not set 1193# CONFIG_OMFS_FS is not set
@@ -1152,7 +1206,6 @@ CONFIG_LOCKD=m
1152CONFIG_LOCKD_V4=y 1206CONFIG_LOCKD_V4=y
1153CONFIG_NFS_COMMON=y 1207CONFIG_NFS_COMMON=y
1154CONFIG_SUNRPC=m 1208CONFIG_SUNRPC=m
1155# CONFIG_SUNRPC_REGISTER_V4 is not set
1156# CONFIG_RPCSEC_GSS_KRB5 is not set 1209# CONFIG_RPCSEC_GSS_KRB5 is not set
1157# CONFIG_RPCSEC_GSS_SPKM3 is not set 1210# CONFIG_RPCSEC_GSS_SPKM3 is not set
1158CONFIG_SMB_FS=m 1211CONFIG_SMB_FS=m
@@ -1217,18 +1270,19 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1217CONFIG_ENABLE_MUST_CHECK=y 1270CONFIG_ENABLE_MUST_CHECK=y
1218CONFIG_FRAME_WARN=1024 1271CONFIG_FRAME_WARN=1024
1219# CONFIG_MAGIC_SYSRQ is not set 1272# CONFIG_MAGIC_SYSRQ is not set
1273# CONFIG_STRIP_ASM_SYMS is not set
1220# CONFIG_UNUSED_SYMBOLS is not set 1274# CONFIG_UNUSED_SYMBOLS is not set
1221# CONFIG_DEBUG_FS is not set 1275# CONFIG_DEBUG_FS is not set
1222# CONFIG_HEADERS_CHECK is not set 1276# CONFIG_HEADERS_CHECK is not set
1277CONFIG_DEBUG_SECTION_MISMATCH=y
1223# CONFIG_DEBUG_KERNEL is not set 1278# CONFIG_DEBUG_KERNEL is not set
1224# CONFIG_DEBUG_BUGVERBOSE is not set 1279# CONFIG_DEBUG_BUGVERBOSE is not set
1225# CONFIG_DEBUG_MEMORY_INIT is not set 1280# CONFIG_DEBUG_MEMORY_INIT is not set
1226# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1281# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1227 1282CONFIG_HAVE_FUNCTION_TRACER=y
1228# 1283CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1229# Tracers 1284CONFIG_TRACING_SUPPORT=y
1230# 1285# CONFIG_FTRACE is not set
1231# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1232# CONFIG_SAMPLES is not set 1286# CONFIG_SAMPLES is not set
1233CONFIG_HAVE_ARCH_KGDB=y 1287CONFIG_HAVE_ARCH_KGDB=y
1234CONFIG_DEBUG_VERBOSE=y 1288CONFIG_DEBUG_VERBOSE=y
@@ -1245,6 +1299,7 @@ CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1245# CONFIG_EARLY_PRINTK is not set 1299# CONFIG_EARLY_PRINTK is not set
1246# CONFIG_CPLB_INFO is not set 1300# CONFIG_CPLB_INFO is not set
1247# CONFIG_ACCESS_CHECK is not set 1301# CONFIG_ACCESS_CHECK is not set
1302# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1248 1303
1249# 1304#
1250# Security options 1305# Security options
@@ -1253,14 +1308,14 @@ CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1253CONFIG_SECURITY=y 1308CONFIG_SECURITY=y
1254# CONFIG_SECURITYFS is not set 1309# CONFIG_SECURITYFS is not set
1255# CONFIG_SECURITY_NETWORK is not set 1310# CONFIG_SECURITY_NETWORK is not set
1311# CONFIG_SECURITY_PATH is not set
1256# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1312# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1257CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 1313# CONFIG_SECURITY_TOMOYO is not set
1258CONFIG_CRYPTO=y 1314CONFIG_CRYPTO=y
1259 1315
1260# 1316#
1261# Crypto core or helper 1317# Crypto core or helper
1262# 1318#
1263# CONFIG_CRYPTO_FIPS is not set
1264# CONFIG_CRYPTO_MANAGER is not set 1319# CONFIG_CRYPTO_MANAGER is not set
1265# CONFIG_CRYPTO_MANAGER2 is not set 1320# CONFIG_CRYPTO_MANAGER2 is not set
1266# CONFIG_CRYPTO_GF128MUL is not set 1321# CONFIG_CRYPTO_GF128MUL is not set
@@ -1292,11 +1347,13 @@ CONFIG_CRYPTO=y
1292# 1347#
1293# CONFIG_CRYPTO_HMAC is not set 1348# CONFIG_CRYPTO_HMAC is not set
1294# CONFIG_CRYPTO_XCBC is not set 1349# CONFIG_CRYPTO_XCBC is not set
1350# CONFIG_CRYPTO_VMAC is not set
1295 1351
1296# 1352#
1297# Digest 1353# Digest
1298# 1354#
1299# CONFIG_CRYPTO_CRC32C is not set 1355# CONFIG_CRYPTO_CRC32C is not set
1356# CONFIG_CRYPTO_GHASH is not set
1300# CONFIG_CRYPTO_MD4 is not set 1357# CONFIG_CRYPTO_MD4 is not set
1301# CONFIG_CRYPTO_MD5 is not set 1358# CONFIG_CRYPTO_MD5 is not set
1302# CONFIG_CRYPTO_MICHAEL_MIC is not set 1359# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1333,6 +1390,7 @@ CONFIG_CRYPTO=y
1333# Compression 1390# Compression
1334# 1391#
1335# CONFIG_CRYPTO_DEFLATE is not set 1392# CONFIG_CRYPTO_DEFLATE is not set
1393# CONFIG_CRYPTO_ZLIB is not set
1336# CONFIG_CRYPTO_LZO is not set 1394# CONFIG_CRYPTO_LZO is not set
1337 1395
1338# 1396#
@@ -1340,11 +1398,13 @@ CONFIG_CRYPTO=y
1340# 1398#
1341# CONFIG_CRYPTO_ANSI_CPRNG is not set 1399# CONFIG_CRYPTO_ANSI_CPRNG is not set
1342CONFIG_CRYPTO_HW=y 1400CONFIG_CRYPTO_HW=y
1401# CONFIG_BINARY_PRINTF is not set
1343 1402
1344# 1403#
1345# Library routines 1404# Library routines
1346# 1405#
1347CONFIG_BITREVERSE=y 1406CONFIG_BITREVERSE=y
1407CONFIG_GENERIC_FIND_LAST_BIT=y
1348CONFIG_CRC_CCITT=m 1408CONFIG_CRC_CCITT=m
1349# CONFIG_CRC16 is not set 1409# CONFIG_CRC16 is not set
1350# CONFIG_CRC_T10DIF is not set 1410# CONFIG_CRC_T10DIF is not set
@@ -1356,3 +1416,4 @@ CONFIG_ZLIB_INFLATE=y
1356CONFIG_HAS_IOMEM=y 1416CONFIG_HAS_IOMEM=y
1357CONFIG_HAS_IOPORT=y 1417CONFIG_HAS_IOPORT=y
1358CONFIG_HAS_DMA=y 1418CONFIG_HAS_DMA=y
1419CONFIG_NLATTR=y
diff --git a/arch/blackfin/configs/TCM-BF518_defconfig b/arch/blackfin/configs/TCM-BF518_defconfig
new file mode 100644
index 000000000000..4d31e2a4ed46
--- /dev/null
+++ b/arch/blackfin/configs/TCM-BF518_defconfig
@@ -0,0 +1,1375 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32.3
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_GENERIC_CSUM=y
11CONFIG_GENERIC_BUG=y
12CONFIG_ZONE_DMA=y
13CONFIG_GENERIC_FIND_NEXT_BIT=y
14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
17CONFIG_GENERIC_GPIO=y
18CONFIG_FORCE_MAX_ZONEORDER=14
19CONFIG_GENERIC_CALIBRATE_DELAY=y
20CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_TRACE_IRQFLAGS_SUPPORT=y
23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
25
26#
27# General setup
28#
29CONFIG_EXPERIMENTAL=y
30CONFIG_BROKEN_ON_SMP=y
31CONFIG_INIT_ENV_ARG_LIMIT=32
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_HAVE_KERNEL_GZIP=y
35CONFIG_HAVE_KERNEL_BZIP2=y
36CONFIG_HAVE_KERNEL_LZMA=y
37# CONFIG_KERNEL_GZIP is not set
38# CONFIG_KERNEL_BZIP2 is not set
39CONFIG_KERNEL_LZMA=y
40CONFIG_SYSVIPC=y
41CONFIG_SYSVIPC_SYSCTL=y
42# CONFIG_POSIX_MQUEUE is not set
43# CONFIG_BSD_PROCESS_ACCT is not set
44# CONFIG_TASKSTATS is not set
45# CONFIG_AUDIT is not set
46
47#
48# RCU Subsystem
49#
50CONFIG_TREE_RCU=y
51# CONFIG_TREE_PREEMPT_RCU is not set
52# CONFIG_RCU_TRACE is not set
53CONFIG_RCU_FANOUT=32
54# CONFIG_RCU_FANOUT_EXACT is not set
55# CONFIG_TREE_RCU_TRACE is not set
56CONFIG_IKCONFIG=y
57CONFIG_IKCONFIG_PROC=y
58CONFIG_LOG_BUF_SHIFT=14
59# CONFIG_GROUP_SCHED is not set
60# CONFIG_CGROUPS is not set
61# CONFIG_SYSFS_DEPRECATED_V2 is not set
62# CONFIG_RELAY is not set
63# CONFIG_NAMESPACES is not set
64CONFIG_BLK_DEV_INITRD=y
65CONFIG_INITRAMFS_SOURCE=""
66# CONFIG_RD_GZIP is not set
67# CONFIG_RD_BZIP2 is not set
68CONFIG_RD_LZMA=y
69CONFIG_CC_OPTIMIZE_FOR_SIZE=y
70CONFIG_SYSCTL=y
71CONFIG_ANON_INODES=y
72CONFIG_EMBEDDED=y
73CONFIG_UID16=y
74# CONFIG_SYSCTL_SYSCALL is not set
75CONFIG_KALLSYMS=y
76# CONFIG_KALLSYMS_ALL is not set
77# CONFIG_KALLSYMS_EXTRA_PASS is not set
78CONFIG_HOTPLUG=y
79CONFIG_PRINTK=y
80CONFIG_BUG=y
81# CONFIG_ELF_CORE is not set
82CONFIG_BASE_FULL=y
83# CONFIG_FUTEX is not set
84CONFIG_EPOLL=y
85# CONFIG_SIGNALFD is not set
86# CONFIG_TIMERFD is not set
87# CONFIG_EVENTFD is not set
88# CONFIG_AIO is not set
89
90#
91# Kernel Performance Events And Counters
92#
93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_COMPAT_BRK=y
95CONFIG_SLAB=y
96# CONFIG_SLUB is not set
97# CONFIG_SLOB is not set
98CONFIG_MMAP_ALLOW_UNINITIALIZED=y
99# CONFIG_PROFILING is not set
100CONFIG_HAVE_OPROFILE=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
106# CONFIG_SLOW_WORK is not set
107# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
108CONFIG_SLABINFO=y
109CONFIG_BASE_SMALL=0
110CONFIG_MODULES=y
111# CONFIG_MODULE_FORCE_LOAD is not set
112CONFIG_MODULE_UNLOAD=y
113# CONFIG_MODULE_FORCE_UNLOAD is not set
114# CONFIG_MODVERSIONS is not set
115# CONFIG_MODULE_SRCVERSION_ALL is not set
116CONFIG_BLOCK=y
117# CONFIG_LBDAF is not set
118# CONFIG_BLK_DEV_BSG is not set
119# CONFIG_BLK_DEV_INTEGRITY is not set
120
121#
122# IO Schedulers
123#
124CONFIG_IOSCHED_NOOP=y
125# CONFIG_IOSCHED_AS is not set
126# CONFIG_IOSCHED_DEADLINE is not set
127# CONFIG_IOSCHED_CFQ is not set
128# CONFIG_DEFAULT_AS is not set
129# CONFIG_DEFAULT_DEADLINE is not set
130# CONFIG_DEFAULT_CFQ is not set
131CONFIG_DEFAULT_NOOP=y
132CONFIG_DEFAULT_IOSCHED="noop"
133# CONFIG_PREEMPT_NONE is not set
134CONFIG_PREEMPT_VOLUNTARY=y
135# CONFIG_PREEMPT is not set
136# CONFIG_FREEZER is not set
137
138#
139# Blackfin Processor Options
140#
141
142#
143# Processor and Board Settings
144#
145# CONFIG_BF512 is not set
146# CONFIG_BF514 is not set
147# CONFIG_BF516 is not set
148CONFIG_BF518=y
149# CONFIG_BF522 is not set
150# CONFIG_BF523 is not set
151# CONFIG_BF524 is not set
152# CONFIG_BF525 is not set
153# CONFIG_BF526 is not set
154# CONFIG_BF527 is not set
155# CONFIG_BF531 is not set
156# CONFIG_BF532 is not set
157# CONFIG_BF533 is not set
158# CONFIG_BF534 is not set
159# CONFIG_BF536 is not set
160# CONFIG_BF537 is not set
161# CONFIG_BF538 is not set
162# CONFIG_BF539 is not set
163# CONFIG_BF542_std is not set
164# CONFIG_BF542M is not set
165# CONFIG_BF544_std is not set
166# CONFIG_BF544M is not set
167# CONFIG_BF547_std is not set
168# CONFIG_BF547M is not set
169# CONFIG_BF548_std is not set
170# CONFIG_BF548M is not set
171# CONFIG_BF549_std is not set
172# CONFIG_BF549M is not set
173# CONFIG_BF561 is not set
174CONFIG_BF_REV_MIN=0
175CONFIG_BF_REV_MAX=2
176# CONFIG_BF_REV_0_0 is not set
177CONFIG_BF_REV_0_1=y
178# CONFIG_BF_REV_0_2 is not set
179# CONFIG_BF_REV_0_3 is not set
180# CONFIG_BF_REV_0_4 is not set
181# CONFIG_BF_REV_0_5 is not set
182# CONFIG_BF_REV_0_6 is not set
183# CONFIG_BF_REV_ANY is not set
184# CONFIG_BF_REV_NONE is not set
185CONFIG_BF51x=y
186# CONFIG_BFIN518F_EZBRD is not set
187CONFIG_BFIN518F_TCM=y
188
189#
190# BF518 Specific Configuration
191#
192
193#
194# Alternative Multiplexing Scheme
195#
196# CONFIG_BF518_SPORT0_PORTF is not set
197CONFIG_BF518_SPORT0_PORTG=y
198CONFIG_BF518_SPORT0_TSCLK_PG10=y
199# CONFIG_BF518_SPORT0_TSCLK_PG14 is not set
200CONFIG_BF518_UART1_PORTF=y
201# CONFIG_BF518_UART1_PORTG is not set
202
203#
204# Interrupt Priority Assignment
205#
206
207#
208# Priority
209#
210CONFIG_IRQ_PLL_WAKEUP=7
211CONFIG_IRQ_DMA0_ERROR=7
212CONFIG_IRQ_DMAR0_BLK=7
213CONFIG_IRQ_DMAR1_BLK=7
214CONFIG_IRQ_DMAR0_OVR=7
215CONFIG_IRQ_DMAR1_OVR=7
216CONFIG_IRQ_PPI_ERROR=7
217CONFIG_IRQ_MAC_ERROR=7
218CONFIG_IRQ_SPORT0_ERROR=7
219CONFIG_IRQ_SPORT1_ERROR=7
220CONFIG_IRQ_PTP_ERROR=7
221CONFIG_IRQ_UART0_ERROR=7
222CONFIG_IRQ_UART1_ERROR=7
223CONFIG_IRQ_RTC=8
224CONFIG_IRQ_PPI=8
225CONFIG_IRQ_SPORT0_RX=9
226CONFIG_IRQ_SPORT0_TX=9
227CONFIG_IRQ_SPORT1_RX=9
228CONFIG_IRQ_SPORT1_TX=9
229CONFIG_IRQ_TWI=10
230CONFIG_IRQ_SPI0=10
231CONFIG_IRQ_UART0_RX=10
232CONFIG_IRQ_UART0_TX=10
233CONFIG_IRQ_UART1_RX=10
234CONFIG_IRQ_UART1_TX=10
235CONFIG_IRQ_OPTSEC=11
236CONFIG_IRQ_CNT=11
237CONFIG_IRQ_MAC_RX=11
238CONFIG_IRQ_PORTH_INTA=11
239CONFIG_IRQ_MAC_TX=11
240CONFIG_IRQ_PORTH_INTB=11
241CONFIG_IRQ_TIMER0=12
242CONFIG_IRQ_TIMER1=12
243CONFIG_IRQ_TIMER2=12
244CONFIG_IRQ_TIMER3=12
245CONFIG_IRQ_TIMER4=12
246CONFIG_IRQ_TIMER5=12
247CONFIG_IRQ_TIMER6=12
248CONFIG_IRQ_TIMER7=12
249CONFIG_IRQ_PORTG_INTA=12
250CONFIG_IRQ_PORTG_INTB=12
251CONFIG_IRQ_MEM_DMA0=13
252CONFIG_IRQ_MEM_DMA1=13
253CONFIG_IRQ_WATCH=13
254CONFIG_IRQ_PORTF_INTA=13
255CONFIG_IRQ_PORTF_INTB=13
256CONFIG_IRQ_SPI0_ERROR=7
257CONFIG_IRQ_SPI1_ERROR=7
258CONFIG_IRQ_RSI_INT0=7
259CONFIG_IRQ_RSI_INT1=7
260CONFIG_IRQ_PWM_TRIP=10
261CONFIG_IRQ_PWM_SYNC=10
262CONFIG_IRQ_PTP_STAT=10
263
264#
265# Board customizations
266#
267# CONFIG_CMDLINE_BOOL is not set
268CONFIG_BOOT_LOAD=0x1000
269
270#
271# Clock/PLL Setup
272#
273CONFIG_CLKIN_HZ=25000000
274# CONFIG_BFIN_KERNEL_CLOCK is not set
275CONFIG_MAX_VCO_HZ=400000000
276CONFIG_MIN_VCO_HZ=50000000
277CONFIG_MAX_SCLK_HZ=133333333
278CONFIG_MIN_SCLK_HZ=27000000
279
280#
281# Kernel Timer/Scheduler
282#
283# CONFIG_HZ_100 is not set
284CONFIG_HZ_250=y
285# CONFIG_HZ_300 is not set
286# CONFIG_HZ_1000 is not set
287CONFIG_HZ=250
288# CONFIG_SCHED_HRTICK is not set
289CONFIG_GENERIC_TIME=y
290CONFIG_GENERIC_CLOCKEVENTS=y
291
292#
293# Clock event device
294#
295# CONFIG_TICKSOURCE_GPTMR0 is not set
296CONFIG_TICKSOURCE_CORETMR=y
297
298#
299# Clock souce
300#
301# CONFIG_CYCLES_CLOCKSOURCE is not set
302# CONFIG_GPTMR0_CLOCKSOURCE is not set
303# CONFIG_NO_HZ is not set
304# CONFIG_HIGH_RES_TIMERS is not set
305CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
306
307#
308# Misc
309#
310CONFIG_BFIN_SCRATCH_REG_RETN=y
311# CONFIG_BFIN_SCRATCH_REG_RETE is not set
312# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
313
314#
315# Blackfin Kernel Optimizations
316#
317
318#
319# Memory Optimizations
320#
321CONFIG_I_ENTRY_L1=y
322CONFIG_EXCPT_IRQ_SYSC_L1=y
323CONFIG_DO_IRQ_L1=y
324CONFIG_CORE_TIMER_IRQ_L1=y
325CONFIG_IDLE_L1=y
326# CONFIG_SCHEDULE_L1 is not set
327CONFIG_ARITHMETIC_OPS_L1=y
328CONFIG_ACCESS_OK_L1=y
329# CONFIG_MEMSET_L1 is not set
330# CONFIG_MEMCPY_L1 is not set
331# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set
332# CONFIG_IP_CHECKSUM_L1 is not set
333CONFIG_CACHELINE_ALIGNED_L1=y
334# CONFIG_SYSCALL_TAB_L1 is not set
335# CONFIG_CPLB_SWITCH_TAB_L1 is not set
336CONFIG_APP_STACK_L1=y
337
338#
339# Speed Optimizations
340#
341CONFIG_BFIN_INS_LOWOVERHEAD=y
342CONFIG_RAMKERNEL=y
343# CONFIG_ROMKERNEL is not set
344CONFIG_SELECT_MEMORY_MODEL=y
345CONFIG_FLATMEM_MANUAL=y
346# CONFIG_DISCONTIGMEM_MANUAL is not set
347# CONFIG_SPARSEMEM_MANUAL is not set
348CONFIG_FLATMEM=y
349CONFIG_FLAT_NODE_MEM_MAP=y
350CONFIG_PAGEFLAGS_EXTENDED=y
351CONFIG_SPLIT_PTLOCK_CPUS=4
352# CONFIG_PHYS_ADDR_T_64BIT is not set
353CONFIG_ZONE_DMA_FLAG=1
354CONFIG_VIRT_TO_BUS=y
355CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
356CONFIG_BFIN_GPTIMERS=m
357# CONFIG_DMA_UNCACHED_4M is not set
358# CONFIG_DMA_UNCACHED_2M is not set
359CONFIG_DMA_UNCACHED_1M=y
360# CONFIG_DMA_UNCACHED_512K is not set
361# CONFIG_DMA_UNCACHED_256K is not set
362# CONFIG_DMA_UNCACHED_128K is not set
363# CONFIG_DMA_UNCACHED_NONE is not set
364
365#
366# Cache Support
367#
368CONFIG_BFIN_ICACHE=y
369CONFIG_BFIN_EXTMEM_ICACHEABLE=y
370CONFIG_BFIN_DCACHE=y
371# CONFIG_BFIN_DCACHE_BANKA is not set
372CONFIG_BFIN_EXTMEM_DCACHEABLE=y
373CONFIG_BFIN_EXTMEM_WRITEBACK=y
374# CONFIG_BFIN_EXTMEM_WRITETHROUGH is not set
375
376#
377# Memory Protection Unit
378#
379# CONFIG_MPU is not set
380
381#
382# Asynchronous Memory Configuration
383#
384
385#
386# EBIU_AMGCTL Global Control
387#
388CONFIG_C_AMCKEN=y
389CONFIG_C_CDPRIO=y
390# CONFIG_C_AMBEN is not set
391# CONFIG_C_AMBEN_B0 is not set
392# CONFIG_C_AMBEN_B0_B1 is not set
393# CONFIG_C_AMBEN_B0_B1_B2 is not set
394CONFIG_C_AMBEN_ALL=y
395
396#
397# EBIU_AMBCTL Control
398#
399CONFIG_BANK_0=0x7BB0
400CONFIG_BANK_1=0x7BB0
401CONFIG_BANK_2=0x7BB0
402CONFIG_BANK_3=0x99B2
403
404#
405# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
406#
407# CONFIG_ARCH_SUPPORTS_MSI is not set
408# CONFIG_PCCARD is not set
409
410#
411# Executable file formats
412#
413CONFIG_BINFMT_ELF_FDPIC=y
414CONFIG_BINFMT_FLAT=y
415CONFIG_BINFMT_ZFLAT=y
416# CONFIG_BINFMT_SHARED_FLAT is not set
417# CONFIG_HAVE_AOUT is not set
418# CONFIG_BINFMT_MISC is not set
419
420#
421# Power management options
422#
423# CONFIG_PM is not set
424CONFIG_ARCH_SUSPEND_POSSIBLE=y
425
426#
427# CPU Frequency scaling
428#
429# CONFIG_CPU_FREQ is not set
430CONFIG_NET=y
431
432#
433# Networking options
434#
435CONFIG_PACKET=y
436# CONFIG_PACKET_MMAP is not set
437CONFIG_UNIX=y
438# CONFIG_NET_KEY is not set
439CONFIG_INET=y
440# CONFIG_IP_MULTICAST is not set
441# CONFIG_IP_ADVANCED_ROUTER is not set
442CONFIG_IP_FIB_HASH=y
443CONFIG_IP_PNP=y
444# CONFIG_IP_PNP_DHCP is not set
445# CONFIG_IP_PNP_BOOTP is not set
446# CONFIG_IP_PNP_RARP is not set
447# CONFIG_NET_IPIP is not set
448# CONFIG_NET_IPGRE is not set
449# CONFIG_ARPD is not set
450# CONFIG_SYN_COOKIES is not set
451# CONFIG_INET_AH is not set
452# CONFIG_INET_ESP is not set
453# CONFIG_INET_IPCOMP is not set
454# CONFIG_INET_XFRM_TUNNEL is not set
455# CONFIG_INET_TUNNEL is not set
456# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
457# CONFIG_INET_XFRM_MODE_TUNNEL is not set
458# CONFIG_INET_XFRM_MODE_BEET is not set
459# CONFIG_INET_LRO is not set
460# CONFIG_INET_DIAG is not set
461# CONFIG_TCP_CONG_ADVANCED is not set
462CONFIG_TCP_CONG_CUBIC=y
463CONFIG_DEFAULT_TCP_CONG="cubic"
464# CONFIG_TCP_MD5SIG is not set
465# CONFIG_IPV6 is not set
466# CONFIG_NETLABEL is not set
467# CONFIG_NETWORK_SECMARK is not set
468# CONFIG_NETFILTER is not set
469# CONFIG_IP_DCCP is not set
470# CONFIG_IP_SCTP is not set
471# CONFIG_RDS is not set
472# CONFIG_TIPC is not set
473# CONFIG_ATM is not set
474# CONFIG_BRIDGE is not set
475# CONFIG_NET_DSA is not set
476# CONFIG_VLAN_8021Q is not set
477# CONFIG_DECNET is not set
478# CONFIG_LLC2 is not set
479# CONFIG_IPX is not set
480# CONFIG_ATALK is not set
481# CONFIG_X25 is not set
482# CONFIG_LAPB is not set
483# CONFIG_ECONET is not set
484# CONFIG_WAN_ROUTER is not set
485# CONFIG_PHONET is not set
486# CONFIG_IEEE802154 is not set
487# CONFIG_NET_SCHED is not set
488# CONFIG_DCB is not set
489
490#
491# Network testing
492#
493# CONFIG_NET_PKTGEN is not set
494# CONFIG_HAMRADIO is not set
495# CONFIG_CAN is not set
496# CONFIG_IRDA is not set
497# CONFIG_BT is not set
498# CONFIG_AF_RXRPC is not set
499# CONFIG_WIRELESS is not set
500# CONFIG_WIMAX is not set
501# CONFIG_RFKILL is not set
502# CONFIG_NET_9P is not set
503
504#
505# Device Drivers
506#
507
508#
509# Generic Driver Options
510#
511CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
512CONFIG_STANDALONE=y
513CONFIG_PREVENT_FIRMWARE_BUILD=y
514# CONFIG_FW_LOADER is not set
515# CONFIG_DEBUG_DRIVER is not set
516# CONFIG_DEBUG_DEVRES is not set
517# CONFIG_SYS_HYPERVISOR is not set
518# CONFIG_CONNECTOR is not set
519CONFIG_MTD=y
520# CONFIG_MTD_DEBUG is not set
521# CONFIG_MTD_TESTS is not set
522# CONFIG_MTD_CONCAT is not set
523CONFIG_MTD_PARTITIONS=y
524# CONFIG_MTD_REDBOOT_PARTS is not set
525CONFIG_MTD_CMDLINE_PARTS=y
526# CONFIG_MTD_AR7_PARTS is not set
527
528#
529# User Modules And Translation Layers
530#
531CONFIG_MTD_CHAR=y
532CONFIG_MTD_BLKDEVS=y
533CONFIG_MTD_BLOCK=y
534# CONFIG_FTL is not set
535# CONFIG_NFTL is not set
536# CONFIG_INFTL is not set
537# CONFIG_RFD_FTL is not set
538# CONFIG_SSFDC is not set
539# CONFIG_MTD_OOPS is not set
540
541#
542# RAM/ROM/Flash chip drivers
543#
544CONFIG_MTD_CFI=y
545# CONFIG_MTD_JEDECPROBE is not set
546CONFIG_MTD_GEN_PROBE=y
547CONFIG_MTD_CFI_ADV_OPTIONS=y
548CONFIG_MTD_CFI_NOSWAP=y
549# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
550# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
551CONFIG_MTD_CFI_GEOMETRY=y
552# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
553CONFIG_MTD_MAP_BANK_WIDTH_2=y
554# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
555# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
556# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
557# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
558CONFIG_MTD_CFI_I1=y
559# CONFIG_MTD_CFI_I2 is not set
560# CONFIG_MTD_CFI_I4 is not set
561# CONFIG_MTD_CFI_I8 is not set
562# CONFIG_MTD_OTP is not set
563CONFIG_MTD_CFI_INTELEXT=y
564# CONFIG_MTD_CFI_AMDSTD is not set
565# CONFIG_MTD_CFI_STAA is not set
566CONFIG_MTD_CFI_UTIL=y
567CONFIG_MTD_RAM=y
568CONFIG_MTD_ROM=m
569# CONFIG_MTD_ABSENT is not set
570
571#
572# Mapping drivers for chip access
573#
574# CONFIG_MTD_COMPLEX_MAPPINGS is not set
575CONFIG_MTD_PHYSMAP=y
576# CONFIG_MTD_PHYSMAP_COMPAT is not set
577# CONFIG_MTD_UCLINUX is not set
578# CONFIG_MTD_PLATRAM is not set
579
580#
581# Self-contained MTD device drivers
582#
583# CONFIG_MTD_DATAFLASH is not set
584# CONFIG_MTD_M25P80 is not set
585# CONFIG_MTD_SST25L is not set
586# CONFIG_MTD_SLRAM is not set
587# CONFIG_MTD_PHRAM is not set
588# CONFIG_MTD_MTDRAM is not set
589# CONFIG_MTD_BLOCK2MTD is not set
590
591#
592# Disk-On-Chip Device Drivers
593#
594# CONFIG_MTD_DOC2000 is not set
595# CONFIG_MTD_DOC2001 is not set
596# CONFIG_MTD_DOC2001PLUS is not set
597# CONFIG_MTD_NAND is not set
598# CONFIG_MTD_ONENAND is not set
599
600#
601# LPDDR flash memory drivers
602#
603# CONFIG_MTD_LPDDR is not set
604
605#
606# UBI - Unsorted block images
607#
608# CONFIG_MTD_UBI is not set
609# CONFIG_PARPORT is not set
610CONFIG_BLK_DEV=y
611# CONFIG_BLK_DEV_COW_COMMON is not set
612# CONFIG_BLK_DEV_LOOP is not set
613# CONFIG_BLK_DEV_NBD is not set
614CONFIG_BLK_DEV_RAM=y
615CONFIG_BLK_DEV_RAM_COUNT=16
616CONFIG_BLK_DEV_RAM_SIZE=4096
617# CONFIG_BLK_DEV_XIP is not set
618# CONFIG_CDROM_PKTCDVD is not set
619# CONFIG_ATA_OVER_ETH is not set
620# CONFIG_BLK_DEV_HD is not set
621CONFIG_MISC_DEVICES=y
622# CONFIG_AD525X_DPOT is not set
623# CONFIG_ICS932S401 is not set
624# CONFIG_ENCLOSURE_SERVICES is not set
625# CONFIG_ISL29003 is not set
626# CONFIG_C2PORT is not set
627
628#
629# EEPROM support
630#
631# CONFIG_EEPROM_AT24 is not set
632# CONFIG_EEPROM_AT25 is not set
633# CONFIG_EEPROM_LEGACY is not set
634# CONFIG_EEPROM_MAX6875 is not set
635# CONFIG_EEPROM_93CX6 is not set
636CONFIG_HAVE_IDE=y
637# CONFIG_IDE is not set
638
639#
640# SCSI device support
641#
642# CONFIG_RAID_ATTRS is not set
643# CONFIG_SCSI is not set
644# CONFIG_SCSI_DMA is not set
645# CONFIG_SCSI_NETLINK is not set
646# CONFIG_ATA is not set
647# CONFIG_MD is not set
648CONFIG_NETDEVICES=y
649# CONFIG_DUMMY is not set
650# CONFIG_BONDING is not set
651# CONFIG_MACVLAN is not set
652# CONFIG_EQUALIZER is not set
653# CONFIG_TUN is not set
654# CONFIG_VETH is not set
655CONFIG_PHYLIB=y
656
657#
658# MII PHY device drivers
659#
660# CONFIG_MARVELL_PHY is not set
661# CONFIG_DAVICOM_PHY is not set
662# CONFIG_QSEMI_PHY is not set
663# CONFIG_LXT_PHY is not set
664# CONFIG_CICADA_PHY is not set
665# CONFIG_VITESSE_PHY is not set
666# CONFIG_SMSC_PHY is not set
667# CONFIG_BROADCOM_PHY is not set
668# CONFIG_ICPLUS_PHY is not set
669# CONFIG_REALTEK_PHY is not set
670# CONFIG_NATIONAL_PHY is not set
671# CONFIG_STE10XP is not set
672# CONFIG_LSI_ET1011C_PHY is not set
673# CONFIG_FIXED_PHY is not set
674# CONFIG_MDIO_BITBANG is not set
675CONFIG_NET_ETHERNET=y
676CONFIG_MII=y
677CONFIG_BFIN_MAC=y
678CONFIG_BFIN_TX_DESC_NUM=10
679CONFIG_BFIN_RX_DESC_NUM=20
680# CONFIG_BFIN_MAC_RMII is not set
681CONFIG_BFIN_MAC_USE_HWSTAMP=y
682# CONFIG_SMC91X is not set
683# CONFIG_DM9000 is not set
684# CONFIG_ENC28J60 is not set
685# CONFIG_ETHOC is not set
686# CONFIG_SMSC911X is not set
687# CONFIG_DNET is not set
688# CONFIG_ADF702X is not set
689# CONFIG_IBM_NEW_EMAC_ZMII is not set
690# CONFIG_IBM_NEW_EMAC_RGMII is not set
691# CONFIG_IBM_NEW_EMAC_TAH is not set
692# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
693# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
694# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
695# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
696# CONFIG_B44 is not set
697# CONFIG_KS8842 is not set
698# CONFIG_KS8851 is not set
699# CONFIG_KS8851_MLL is not set
700# CONFIG_NETDEV_1000 is not set
701# CONFIG_NETDEV_10000 is not set
702# CONFIG_WLAN is not set
703
704#
705# Enable WiMAX (Networking options) to see the WiMAX drivers
706#
707# CONFIG_WAN is not set
708# CONFIG_PPP is not set
709# CONFIG_SLIP is not set
710# CONFIG_NETCONSOLE is not set
711# CONFIG_NETPOLL is not set
712# CONFIG_NET_POLL_CONTROLLER is not set
713# CONFIG_ISDN is not set
714# CONFIG_PHONE is not set
715
716#
717# Input device support
718#
719CONFIG_INPUT=y
720# CONFIG_INPUT_FF_MEMLESS is not set
721# CONFIG_INPUT_POLLDEV is not set
722
723#
724# Userland interfaces
725#
726# CONFIG_INPUT_MOUSEDEV is not set
727# CONFIG_INPUT_JOYDEV is not set
728# CONFIG_INPUT_EVDEV is not set
729# CONFIG_INPUT_EVBUG is not set
730
731#
732# Input Device Drivers
733#
734# CONFIG_INPUT_KEYBOARD is not set
735# CONFIG_INPUT_MOUSE is not set
736# CONFIG_INPUT_JOYSTICK is not set
737# CONFIG_INPUT_TABLET is not set
738# CONFIG_INPUT_TOUCHSCREEN is not set
739CONFIG_INPUT_MISC=y
740# CONFIG_INPUT_UINPUT is not set
741# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
742# CONFIG_INPUT_AD714X is not set
743# CONFIG_INPUT_ADXL34X is not set
744# CONFIG_INPUT_PCF8574 is not set
745
746#
747# Hardware I/O ports
748#
749# CONFIG_SERIO is not set
750# CONFIG_GAMEPORT is not set
751
752#
753# Character devices
754#
755CONFIG_BFIN_DMA_INTERFACE=m
756# CONFIG_BFIN_PPI is not set
757# CONFIG_BFIN_PPIFCD is not set
758# CONFIG_BFIN_SIMPLE_TIMER is not set
759# CONFIG_BFIN_SPI_ADC is not set
760# CONFIG_BFIN_SPORT is not set
761# CONFIG_BFIN_TWI_LCD is not set
762CONFIG_VT=y
763CONFIG_CONSOLE_TRANSLATIONS=y
764CONFIG_VT_CONSOLE=y
765CONFIG_HW_CONSOLE=y
766# CONFIG_VT_HW_CONSOLE_BINDING is not set
767# CONFIG_DEVKMEM is not set
768CONFIG_BFIN_JTAG_COMM=m
769# CONFIG_SERIAL_NONSTANDARD is not set
770
771#
772# Serial drivers
773#
774# CONFIG_SERIAL_8250 is not set
775
776#
777# Non-8250 serial port support
778#
779# CONFIG_SERIAL_MAX3100 is not set
780CONFIG_SERIAL_BFIN=y
781CONFIG_SERIAL_BFIN_CONSOLE=y
782CONFIG_SERIAL_BFIN_DMA=y
783# CONFIG_SERIAL_BFIN_PIO is not set
784CONFIG_SERIAL_BFIN_UART0=y
785# CONFIG_BFIN_UART0_CTSRTS is not set
786# CONFIG_SERIAL_BFIN_UART1 is not set
787CONFIG_SERIAL_CORE=y
788CONFIG_SERIAL_CORE_CONSOLE=y
789# CONFIG_SERIAL_BFIN_SPORT is not set
790CONFIG_UNIX98_PTYS=y
791# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
792# CONFIG_LEGACY_PTYS is not set
793CONFIG_BFIN_OTP=y
794# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
795# CONFIG_IPMI_HANDLER is not set
796# CONFIG_HW_RANDOM is not set
797# CONFIG_R3964 is not set
798# CONFIG_RAW_DRIVER is not set
799# CONFIG_TCG_TPM is not set
800CONFIG_I2C=y
801CONFIG_I2C_BOARDINFO=y
802CONFIG_I2C_COMPAT=y
803CONFIG_I2C_CHARDEV=y
804CONFIG_I2C_HELPER_AUTO=y
805
806#
807# I2C Hardware Bus support
808#
809
810#
811# I2C system bus drivers (mostly embedded / system-on-chip)
812#
813CONFIG_I2C_BLACKFIN_TWI=y
814CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
815# CONFIG_I2C_GPIO is not set
816# CONFIG_I2C_OCORES is not set
817# CONFIG_I2C_SIMTEC is not set
818
819#
820# External I2C/SMBus adapter drivers
821#
822# CONFIG_I2C_PARPORT_LIGHT is not set
823# CONFIG_I2C_TAOS_EVM is not set
824
825#
826# Other I2C/SMBus bus drivers
827#
828# CONFIG_I2C_PCA_PLATFORM is not set
829# CONFIG_I2C_STUB is not set
830
831#
832# Miscellaneous I2C Chip support
833#
834# CONFIG_DS1682 is not set
835# CONFIG_SENSORS_TSL2550 is not set
836# CONFIG_I2C_DEBUG_CORE is not set
837# CONFIG_I2C_DEBUG_ALGO is not set
838# CONFIG_I2C_DEBUG_BUS is not set
839# CONFIG_I2C_DEBUG_CHIP is not set
840CONFIG_SPI=y
841# CONFIG_SPI_DEBUG is not set
842CONFIG_SPI_MASTER=y
843
844#
845# SPI Master Controller Drivers
846#
847CONFIG_SPI_BFIN=y
848CONFIG_SPI_BFIN_LOCK=y
849# CONFIG_SPI_BFIN_SPORT is not set
850# CONFIG_SPI_BITBANG is not set
851# CONFIG_SPI_GPIO is not set
852
853#
854# SPI Protocol Masters
855#
856# CONFIG_SPI_SPIDEV is not set
857# CONFIG_SPI_TLE62X0 is not set
858
859#
860# PPS support
861#
862# CONFIG_PPS is not set
863CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
864CONFIG_GPIOLIB=y
865# CONFIG_DEBUG_GPIO is not set
866CONFIG_GPIO_SYSFS=y
867
868#
869# Memory mapped GPIO expanders:
870#
871
872#
873# I2C GPIO expanders:
874#
875# CONFIG_GPIO_MAX732X is not set
876# CONFIG_GPIO_PCA953X is not set
877# CONFIG_GPIO_PCF857X is not set
878# CONFIG_GPIO_ADP5588 is not set
879
880#
881# PCI GPIO expanders:
882#
883
884#
885# SPI GPIO expanders:
886#
887# CONFIG_GPIO_MAX7301 is not set
888# CONFIG_GPIO_MCP23S08 is not set
889# CONFIG_GPIO_MC33880 is not set
890
891#
892# AC97 GPIO expanders:
893#
894# CONFIG_W1 is not set
895# CONFIG_POWER_SUPPLY is not set
896# CONFIG_HWMON is not set
897# CONFIG_THERMAL is not set
898CONFIG_WATCHDOG=y
899# CONFIG_WATCHDOG_NOWAYOUT is not set
900
901#
902# Watchdog Device Drivers
903#
904# CONFIG_SOFT_WATCHDOG is not set
905CONFIG_BFIN_WDT=y
906CONFIG_SSB_POSSIBLE=y
907
908#
909# Sonics Silicon Backplane
910#
911# CONFIG_SSB is not set
912
913#
914# Multifunction device drivers
915#
916# CONFIG_MFD_CORE is not set
917# CONFIG_MFD_SM501 is not set
918# CONFIG_HTC_PASIC3 is not set
919# CONFIG_TPS65010 is not set
920# CONFIG_TWL4030_CORE is not set
921# CONFIG_MFD_TMIO is not set
922# CONFIG_PMIC_DA903X is not set
923# CONFIG_PMIC_ADP5520 is not set
924# CONFIG_MFD_WM8400 is not set
925# CONFIG_MFD_WM831X is not set
926# CONFIG_MFD_WM8350_I2C is not set
927# CONFIG_MFD_PCF50633 is not set
928# CONFIG_MFD_MC13783 is not set
929# CONFIG_AB3100_CORE is not set
930# CONFIG_EZX_PCAP is not set
931# CONFIG_REGULATOR is not set
932# CONFIG_MEDIA_SUPPORT is not set
933
934#
935# Graphics support
936#
937# CONFIG_VGASTATE is not set
938# CONFIG_VIDEO_OUTPUT_CONTROL is not set
939# CONFIG_FB is not set
940# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
941
942#
943# Display device support
944#
945# CONFIG_DISPLAY_SUPPORT is not set
946
947#
948# Console display driver support
949#
950CONFIG_DUMMY_CONSOLE=y
951# CONFIG_SOUND is not set
952# CONFIG_HID_SUPPORT is not set
953# CONFIG_USB_SUPPORT is not set
954CONFIG_MMC=y
955CONFIG_MMC_DEBUG=y
956# CONFIG_MMC_UNSAFE_RESUME is not set
957
958#
959# MMC/SD/SDIO Card Drivers
960#
961CONFIG_MMC_BLOCK=y
962CONFIG_MMC_BLOCK_BOUNCE=y
963# CONFIG_SDIO_UART is not set
964# CONFIG_MMC_TEST is not set
965
966#
967# MMC/SD/SDIO Host Controller Drivers
968#
969# CONFIG_MMC_SDHCI is not set
970# CONFIG_MMC_AT91 is not set
971# CONFIG_MMC_ATMELMCI is not set
972CONFIG_MMC_SPI=y
973# CONFIG_SDH_BFIN is not set
974# CONFIG_MEMSTICK is not set
975# CONFIG_NEW_LEDS is not set
976# CONFIG_ACCESSIBILITY is not set
977CONFIG_RTC_LIB=y
978CONFIG_RTC_CLASS=y
979CONFIG_RTC_HCTOSYS=y
980CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
981# CONFIG_RTC_DEBUG is not set
982
983#
984# RTC interfaces
985#
986CONFIG_RTC_INTF_SYSFS=y
987CONFIG_RTC_INTF_PROC=y
988CONFIG_RTC_INTF_DEV=y
989# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
990# CONFIG_RTC_DRV_TEST is not set
991
992#
993# I2C RTC drivers
994#
995# CONFIG_RTC_DRV_DS1307 is not set
996# CONFIG_RTC_DRV_DS1374 is not set
997# CONFIG_RTC_DRV_DS1672 is not set
998# CONFIG_RTC_DRV_MAX6900 is not set
999# CONFIG_RTC_DRV_RS5C372 is not set
1000# CONFIG_RTC_DRV_ISL1208 is not set
1001# CONFIG_RTC_DRV_X1205 is not set
1002# CONFIG_RTC_DRV_PCF8563 is not set
1003# CONFIG_RTC_DRV_PCF8583 is not set
1004# CONFIG_RTC_DRV_M41T80 is not set
1005# CONFIG_RTC_DRV_S35390A is not set
1006# CONFIG_RTC_DRV_FM3130 is not set
1007# CONFIG_RTC_DRV_RX8581 is not set
1008# CONFIG_RTC_DRV_RX8025 is not set
1009
1010#
1011# SPI RTC drivers
1012#
1013# CONFIG_RTC_DRV_M41T94 is not set
1014# CONFIG_RTC_DRV_DS1305 is not set
1015# CONFIG_RTC_DRV_DS1390 is not set
1016# CONFIG_RTC_DRV_MAX6902 is not set
1017# CONFIG_RTC_DRV_R9701 is not set
1018# CONFIG_RTC_DRV_RS5C348 is not set
1019# CONFIG_RTC_DRV_DS3234 is not set
1020# CONFIG_RTC_DRV_PCF2123 is not set
1021
1022#
1023# Platform RTC drivers
1024#
1025# CONFIG_RTC_DRV_DS1286 is not set
1026# CONFIG_RTC_DRV_DS1511 is not set
1027# CONFIG_RTC_DRV_DS1553 is not set
1028# CONFIG_RTC_DRV_DS1742 is not set
1029# CONFIG_RTC_DRV_STK17TA8 is not set
1030# CONFIG_RTC_DRV_M48T86 is not set
1031# CONFIG_RTC_DRV_M48T35 is not set
1032# CONFIG_RTC_DRV_M48T59 is not set
1033# CONFIG_RTC_DRV_BQ4802 is not set
1034# CONFIG_RTC_DRV_V3020 is not set
1035
1036#
1037# on-CPU RTC drivers
1038#
1039CONFIG_RTC_DRV_BFIN=y
1040# CONFIG_DMADEVICES is not set
1041# CONFIG_AUXDISPLAY is not set
1042# CONFIG_UIO is not set
1043
1044#
1045# TI VLYNQ
1046#
1047# CONFIG_STAGING is not set
1048
1049#
1050# Firmware Drivers
1051#
1052# CONFIG_FIRMWARE_MEMMAP is not set
1053# CONFIG_SIGMA is not set
1054
1055#
1056# File systems
1057#
1058CONFIG_EXT2_FS=y
1059# CONFIG_EXT2_FS_XATTR is not set
1060# CONFIG_EXT3_FS is not set
1061# CONFIG_EXT4_FS is not set
1062# CONFIG_REISERFS_FS is not set
1063# CONFIG_JFS_FS is not set
1064# CONFIG_FS_POSIX_ACL is not set
1065# CONFIG_XFS_FS is not set
1066# CONFIG_OCFS2_FS is not set
1067# CONFIG_BTRFS_FS is not set
1068# CONFIG_NILFS2_FS is not set
1069CONFIG_FILE_LOCKING=y
1070CONFIG_FSNOTIFY=y
1071# CONFIG_DNOTIFY is not set
1072CONFIG_INOTIFY=y
1073CONFIG_INOTIFY_USER=y
1074# CONFIG_QUOTA is not set
1075# CONFIG_AUTOFS_FS is not set
1076# CONFIG_AUTOFS4_FS is not set
1077# CONFIG_FUSE_FS is not set
1078
1079#
1080# Caches
1081#
1082# CONFIG_FSCACHE is not set
1083
1084#
1085# CD-ROM/DVD Filesystems
1086#
1087# CONFIG_ISO9660_FS is not set
1088# CONFIG_UDF_FS is not set
1089
1090#
1091# DOS/FAT/NT Filesystems
1092#
1093CONFIG_FAT_FS=m
1094# CONFIG_MSDOS_FS is not set
1095CONFIG_VFAT_FS=m
1096CONFIG_FAT_DEFAULT_CODEPAGE=437
1097CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1098# CONFIG_NTFS_FS is not set
1099
1100#
1101# Pseudo filesystems
1102#
1103CONFIG_PROC_FS=y
1104CONFIG_PROC_SYSCTL=y
1105CONFIG_SYSFS=y
1106# CONFIG_HUGETLB_PAGE is not set
1107# CONFIG_CONFIGFS_FS is not set
1108# CONFIG_MISC_FILESYSTEMS is not set
1109CONFIG_NETWORK_FILESYSTEMS=y
1110CONFIG_NFS_FS=y
1111CONFIG_NFS_V3=y
1112# CONFIG_NFS_V3_ACL is not set
1113# CONFIG_NFS_V4 is not set
1114CONFIG_ROOT_NFS=y
1115# CONFIG_NFSD is not set
1116CONFIG_LOCKD=y
1117CONFIG_LOCKD_V4=y
1118CONFIG_NFS_COMMON=y
1119CONFIG_SUNRPC=y
1120# CONFIG_RPCSEC_GSS_KRB5 is not set
1121# CONFIG_RPCSEC_GSS_SPKM3 is not set
1122# CONFIG_SMB_FS is not set
1123# CONFIG_CIFS is not set
1124# CONFIG_NCP_FS is not set
1125# CONFIG_CODA_FS is not set
1126# CONFIG_AFS_FS is not set
1127
1128#
1129# Partition Types
1130#
1131# CONFIG_PARTITION_ADVANCED is not set
1132CONFIG_MSDOS_PARTITION=y
1133CONFIG_NLS=m
1134CONFIG_NLS_DEFAULT="iso8859-1"
1135CONFIG_NLS_CODEPAGE_437=m
1136# CONFIG_NLS_CODEPAGE_737 is not set
1137# CONFIG_NLS_CODEPAGE_775 is not set
1138# CONFIG_NLS_CODEPAGE_850 is not set
1139# CONFIG_NLS_CODEPAGE_852 is not set
1140# CONFIG_NLS_CODEPAGE_855 is not set
1141# CONFIG_NLS_CODEPAGE_857 is not set
1142# CONFIG_NLS_CODEPAGE_860 is not set
1143# CONFIG_NLS_CODEPAGE_861 is not set
1144# CONFIG_NLS_CODEPAGE_862 is not set
1145# CONFIG_NLS_CODEPAGE_863 is not set
1146# CONFIG_NLS_CODEPAGE_864 is not set
1147# CONFIG_NLS_CODEPAGE_865 is not set
1148# CONFIG_NLS_CODEPAGE_866 is not set
1149# CONFIG_NLS_CODEPAGE_869 is not set
1150# CONFIG_NLS_CODEPAGE_936 is not set
1151# CONFIG_NLS_CODEPAGE_950 is not set
1152# CONFIG_NLS_CODEPAGE_932 is not set
1153# CONFIG_NLS_CODEPAGE_949 is not set
1154# CONFIG_NLS_CODEPAGE_874 is not set
1155# CONFIG_NLS_ISO8859_8 is not set
1156# CONFIG_NLS_CODEPAGE_1250 is not set
1157# CONFIG_NLS_CODEPAGE_1251 is not set
1158# CONFIG_NLS_ASCII is not set
1159CONFIG_NLS_ISO8859_1=m
1160# CONFIG_NLS_ISO8859_2 is not set
1161# CONFIG_NLS_ISO8859_3 is not set
1162# CONFIG_NLS_ISO8859_4 is not set
1163# CONFIG_NLS_ISO8859_5 is not set
1164# CONFIG_NLS_ISO8859_6 is not set
1165# CONFIG_NLS_ISO8859_7 is not set
1166# CONFIG_NLS_ISO8859_9 is not set
1167# CONFIG_NLS_ISO8859_13 is not set
1168# CONFIG_NLS_ISO8859_14 is not set
1169# CONFIG_NLS_ISO8859_15 is not set
1170# CONFIG_NLS_KOI8_R is not set
1171# CONFIG_NLS_KOI8_U is not set
1172CONFIG_NLS_UTF8=m
1173# CONFIG_DLM is not set
1174
1175#
1176# Kernel hacking
1177#
1178# CONFIG_PRINTK_TIME is not set
1179CONFIG_ENABLE_WARN_DEPRECATED=y
1180CONFIG_ENABLE_MUST_CHECK=y
1181CONFIG_FRAME_WARN=1024
1182# CONFIG_MAGIC_SYSRQ is not set
1183# CONFIG_STRIP_ASM_SYMS is not set
1184# CONFIG_UNUSED_SYMBOLS is not set
1185CONFIG_DEBUG_FS=y
1186# CONFIG_HEADERS_CHECK is not set
1187CONFIG_DEBUG_SECTION_MISMATCH=y
1188CONFIG_DEBUG_KERNEL=y
1189CONFIG_DEBUG_SHIRQ=y
1190CONFIG_DETECT_SOFTLOCKUP=y
1191# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1192CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1193CONFIG_DETECT_HUNG_TASK=y
1194# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1195CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1196CONFIG_SCHED_DEBUG=y
1197# CONFIG_SCHEDSTATS is not set
1198# CONFIG_TIMER_STATS is not set
1199# CONFIG_DEBUG_OBJECTS is not set
1200# CONFIG_DEBUG_SLAB is not set
1201# CONFIG_DEBUG_SPINLOCK is not set
1202# CONFIG_DEBUG_MUTEXES is not set
1203# CONFIG_DEBUG_LOCK_ALLOC is not set
1204# CONFIG_PROVE_LOCKING is not set
1205# CONFIG_LOCK_STAT is not set
1206# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1207# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1208# CONFIG_DEBUG_KOBJECT is not set
1209CONFIG_DEBUG_BUGVERBOSE=y
1210CONFIG_DEBUG_INFO=y
1211# CONFIG_DEBUG_VM is not set
1212# CONFIG_DEBUG_NOMMU_REGIONS is not set
1213# CONFIG_DEBUG_WRITECOUNT is not set
1214# CONFIG_DEBUG_MEMORY_INIT is not set
1215# CONFIG_DEBUG_LIST is not set
1216# CONFIG_DEBUG_SG is not set
1217# CONFIG_DEBUG_NOTIFIERS is not set
1218# CONFIG_DEBUG_CREDENTIALS is not set
1219# CONFIG_FRAME_POINTER is not set
1220# CONFIG_BOOT_PRINTK_DELAY is not set
1221# CONFIG_RCU_TORTURE_TEST is not set
1222# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1223# CONFIG_BACKTRACE_SELF_TEST is not set
1224# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1225# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1226# CONFIG_FAULT_INJECTION is not set
1227# CONFIG_PAGE_POISONING is not set
1228CONFIG_HAVE_FUNCTION_TRACER=y
1229CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1230CONFIG_TRACING_SUPPORT=y
1231# CONFIG_FTRACE is not set
1232# CONFIG_DYNAMIC_DEBUG is not set
1233# CONFIG_SAMPLES is not set
1234CONFIG_HAVE_ARCH_KGDB=y
1235# CONFIG_KGDB is not set
1236# CONFIG_DEBUG_STACKOVERFLOW is not set
1237# CONFIG_DEBUG_STACK_USAGE is not set
1238CONFIG_DEBUG_VERBOSE=y
1239CONFIG_DEBUG_MMRS=y
1240CONFIG_DEBUG_HWERR=y
1241CONFIG_EXACT_HWERR=y
1242CONFIG_DEBUG_DOUBLEFAULT=y
1243CONFIG_DEBUG_DOUBLEFAULT_PRINT=y
1244# CONFIG_DEBUG_DOUBLEFAULT_RESET is not set
1245# CONFIG_DEBUG_ICACHE_CHECK is not set
1246CONFIG_DEBUG_HUNT_FOR_ZERO=y
1247CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1248# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF is not set
1249CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE=y
1250# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1251CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=1
1252# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1253CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE=y
1254CONFIG_EARLY_PRINTK=y
1255CONFIG_CPLB_INFO=y
1256CONFIG_ACCESS_CHECK=y
1257# CONFIG_BFIN_ISRAM_SELF_TEST is not set
1258
1259#
1260# Security options
1261#
1262# CONFIG_KEYS is not set
1263CONFIG_SECURITY=y
1264# CONFIG_SECURITYFS is not set
1265# CONFIG_SECURITY_NETWORK is not set
1266# CONFIG_SECURITY_PATH is not set
1267# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1268# CONFIG_SECURITY_TOMOYO is not set
1269CONFIG_CRYPTO=y
1270
1271#
1272# Crypto core or helper
1273#
1274# CONFIG_CRYPTO_MANAGER is not set
1275# CONFIG_CRYPTO_MANAGER2 is not set
1276# CONFIG_CRYPTO_GF128MUL is not set
1277# CONFIG_CRYPTO_NULL is not set
1278# CONFIG_CRYPTO_CRYPTD is not set
1279# CONFIG_CRYPTO_AUTHENC is not set
1280# CONFIG_CRYPTO_TEST is not set
1281
1282#
1283# Authenticated Encryption with Associated Data
1284#
1285# CONFIG_CRYPTO_CCM is not set
1286# CONFIG_CRYPTO_GCM is not set
1287# CONFIG_CRYPTO_SEQIV is not set
1288
1289#
1290# Block modes
1291#
1292# CONFIG_CRYPTO_CBC is not set
1293# CONFIG_CRYPTO_CTR is not set
1294# CONFIG_CRYPTO_CTS is not set
1295# CONFIG_CRYPTO_ECB is not set
1296# CONFIG_CRYPTO_LRW is not set
1297# CONFIG_CRYPTO_PCBC is not set
1298# CONFIG_CRYPTO_XTS is not set
1299
1300#
1301# Hash modes
1302#
1303# CONFIG_CRYPTO_HMAC is not set
1304# CONFIG_CRYPTO_XCBC is not set
1305# CONFIG_CRYPTO_VMAC is not set
1306
1307#
1308# Digest
1309#
1310# CONFIG_CRYPTO_CRC32C is not set
1311# CONFIG_CRYPTO_GHASH is not set
1312# CONFIG_CRYPTO_MD4 is not set
1313# CONFIG_CRYPTO_MD5 is not set
1314# CONFIG_CRYPTO_MICHAEL_MIC is not set
1315# CONFIG_CRYPTO_RMD128 is not set
1316# CONFIG_CRYPTO_RMD160 is not set
1317# CONFIG_CRYPTO_RMD256 is not set
1318# CONFIG_CRYPTO_RMD320 is not set
1319# CONFIG_CRYPTO_SHA1 is not set
1320# CONFIG_CRYPTO_SHA256 is not set
1321# CONFIG_CRYPTO_SHA512 is not set
1322# CONFIG_CRYPTO_TGR192 is not set
1323# CONFIG_CRYPTO_WP512 is not set
1324
1325#
1326# Ciphers
1327#
1328# CONFIG_CRYPTO_AES is not set
1329# CONFIG_CRYPTO_ANUBIS is not set
1330# CONFIG_CRYPTO_ARC4 is not set
1331# CONFIG_CRYPTO_BLOWFISH is not set
1332# CONFIG_CRYPTO_CAMELLIA is not set
1333# CONFIG_CRYPTO_CAST5 is not set
1334# CONFIG_CRYPTO_CAST6 is not set
1335# CONFIG_CRYPTO_DES is not set
1336# CONFIG_CRYPTO_FCRYPT is not set
1337# CONFIG_CRYPTO_KHAZAD is not set
1338# CONFIG_CRYPTO_SALSA20 is not set
1339# CONFIG_CRYPTO_SEED is not set
1340# CONFIG_CRYPTO_SERPENT is not set
1341# CONFIG_CRYPTO_TEA is not set
1342# CONFIG_CRYPTO_TWOFISH is not set
1343
1344#
1345# Compression
1346#
1347# CONFIG_CRYPTO_DEFLATE is not set
1348# CONFIG_CRYPTO_ZLIB is not set
1349# CONFIG_CRYPTO_LZO is not set
1350
1351#
1352# Random Number Generation
1353#
1354# CONFIG_CRYPTO_ANSI_CPRNG is not set
1355CONFIG_CRYPTO_HW=y
1356# CONFIG_BINARY_PRINTF is not set
1357
1358#
1359# Library routines
1360#
1361CONFIG_BITREVERSE=y
1362CONFIG_GENERIC_FIND_LAST_BIT=y
1363CONFIG_CRC_CCITT=m
1364# CONFIG_CRC16 is not set
1365# CONFIG_CRC_T10DIF is not set
1366CONFIG_CRC_ITU_T=y
1367CONFIG_CRC32=y
1368CONFIG_CRC7=y
1369# CONFIG_LIBCRC32C is not set
1370CONFIG_ZLIB_INFLATE=y
1371CONFIG_DECOMPRESS_LZMA=y
1372CONFIG_HAS_IOMEM=y
1373CONFIG_HAS_IOPORT=y
1374CONFIG_HAS_DMA=y
1375CONFIG_NLATTR=y
diff --git a/arch/blackfin/include/asm/bfin-lq035q1.h b/arch/blackfin/include/asm/bfin-lq035q1.h
index 57bc21ac2296..836895156b5b 100644
--- a/arch/blackfin/include/asm/bfin-lq035q1.h
+++ b/arch/blackfin/include/asm/bfin-lq035q1.h
@@ -8,6 +8,9 @@
8#ifndef BFIN_LQ035Q1_H 8#ifndef BFIN_LQ035Q1_H
9#define BFIN_LQ035Q1_H 9#define BFIN_LQ035Q1_H
10 10
11/*
12 * LCD Modes
13 */
11#define LQ035_RL (0 << 8) /* Right -> Left Scan */ 14#define LQ035_RL (0 << 8) /* Right -> Left Scan */
12#define LQ035_LR (1 << 8) /* Left -> Right Scan */ 15#define LQ035_LR (1 << 8) /* Left -> Right Scan */
13#define LQ035_TB (1 << 9) /* Top -> Botton Scan */ 16#define LQ035_TB (1 << 9) /* Top -> Botton Scan */
@@ -17,9 +20,18 @@
17#define LQ035_NORM (1 << 13) /* Reversal */ 20#define LQ035_NORM (1 << 13) /* Reversal */
18#define LQ035_REV (0 << 13) /* Reversal */ 21#define LQ035_REV (0 << 13) /* Reversal */
19 22
23/*
24 * PPI Modes
25 */
26
27#define USE_RGB565_16_BIT_PPI 1
28#define USE_RGB565_8_BIT_PPI 2
29#define USE_RGB888_8_BIT_PPI 3
30
20struct bfin_lq035q1fb_disp_info { 31struct bfin_lq035q1fb_disp_info {
21 32
22 unsigned mode; 33 unsigned mode;
34 unsigned ppi_mode;
23 /* GPIOs */ 35 /* GPIOs */
24 int use_bl; 36 int use_bl;
25 unsigned gpio_bl; 37 unsigned gpio_bl;
diff --git a/arch/blackfin/include/asm/bfin_can.h b/arch/blackfin/include/asm/bfin_can.h
new file mode 100644
index 000000000000..eec0076a385b
--- /dev/null
+++ b/arch/blackfin/include/asm/bfin_can.h
@@ -0,0 +1,725 @@
1/*
2 * bfin_can.h - interface to Blackfin CANs
3 *
4 * Copyright 2004-2009 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2 or later.
7 */
8
9#ifndef __ASM_BFIN_CAN_H__
10#define __ASM_BFIN_CAN_H__
11
12/*
13 * transmit and receive channels
14 */
15#define TRANSMIT_CHL 24
16#define RECEIVE_STD_CHL 0
17#define RECEIVE_EXT_CHL 4
18#define RECEIVE_RTR_CHL 8
19#define RECEIVE_EXT_RTR_CHL 12
20#define MAX_CHL_NUMBER 32
21
22/*
23 * All Blackfin system MMRs are padded to 32bits even if the register
24 * itself is only 16bits. So use a helper macro to streamline this.
25 */
26#define __BFP(m) u16 m; u16 __pad_##m
27
28/*
29 * bfin can registers layout
30 */
31struct bfin_can_mask_regs {
32 __BFP(aml);
33 __BFP(amh);
34};
35
36struct bfin_can_channel_regs {
37 u16 data[8];
38 __BFP(dlc);
39 __BFP(tsv);
40 __BFP(id0);
41 __BFP(id1);
42};
43
44struct bfin_can_regs {
45 /*
46 * global control and status registers
47 */
48 __BFP(mc1); /* offset 0x00 */
49 __BFP(md1); /* offset 0x04 */
50 __BFP(trs1); /* offset 0x08 */
51 __BFP(trr1); /* offset 0x0c */
52 __BFP(ta1); /* offset 0x10 */
53 __BFP(aa1); /* offset 0x14 */
54 __BFP(rmp1); /* offset 0x18 */
55 __BFP(rml1); /* offset 0x1c */
56 __BFP(mbtif1); /* offset 0x20 */
57 __BFP(mbrif1); /* offset 0x24 */
58 __BFP(mbim1); /* offset 0x28 */
59 __BFP(rfh1); /* offset 0x2c */
60 __BFP(opss1); /* offset 0x30 */
61 u32 __pad1[3];
62 __BFP(mc2); /* offset 0x40 */
63 __BFP(md2); /* offset 0x44 */
64 __BFP(trs2); /* offset 0x48 */
65 __BFP(trr2); /* offset 0x4c */
66 __BFP(ta2); /* offset 0x50 */
67 __BFP(aa2); /* offset 0x54 */
68 __BFP(rmp2); /* offset 0x58 */
69 __BFP(rml2); /* offset 0x5c */
70 __BFP(mbtif2); /* offset 0x60 */
71 __BFP(mbrif2); /* offset 0x64 */
72 __BFP(mbim2); /* offset 0x68 */
73 __BFP(rfh2); /* offset 0x6c */
74 __BFP(opss2); /* offset 0x70 */
75 u32 __pad2[3];
76 __BFP(clock); /* offset 0x80 */
77 __BFP(timing); /* offset 0x84 */
78 __BFP(debug); /* offset 0x88 */
79 __BFP(status); /* offset 0x8c */
80 __BFP(cec); /* offset 0x90 */
81 __BFP(gis); /* offset 0x94 */
82 __BFP(gim); /* offset 0x98 */
83 __BFP(gif); /* offset 0x9c */
84 __BFP(control); /* offset 0xa0 */
85 __BFP(intr); /* offset 0xa4 */
86 u32 __pad3[1];
87 __BFP(mbtd); /* offset 0xac */
88 __BFP(ewr); /* offset 0xb0 */
89 __BFP(esr); /* offset 0xb4 */
90 u32 __pad4[2];
91 __BFP(ucreg); /* offset 0xc0 */
92 __BFP(uccnt); /* offset 0xc4 */
93 __BFP(ucrc); /* offset 0xc8 */
94 __BFP(uccnf); /* offset 0xcc */
95 u32 __pad5[12];
96
97 /*
98 * channel(mailbox) mask and message registers
99 */
100 struct bfin_can_mask_regs msk[MAX_CHL_NUMBER]; /* offset 0x100 */
101 struct bfin_can_channel_regs chl[MAX_CHL_NUMBER]; /* offset 0x200 */
102};
103
104#undef __BFP
105
106/* CAN_CONTROL Masks */
107#define SRS 0x0001 /* Software Reset */
108#define DNM 0x0002 /* Device Net Mode */
109#define ABO 0x0004 /* Auto-Bus On Enable */
110#define TXPRIO 0x0008 /* TX Priority (Priority/Mailbox*) */
111#define WBA 0x0010 /* Wake-Up On CAN Bus Activity Enable */
112#define SMR 0x0020 /* Sleep Mode Request */
113#define CSR 0x0040 /* CAN Suspend Mode Request */
114#define CCR 0x0080 /* CAN Configuration Mode Request */
115
116/* CAN_STATUS Masks */
117#define WT 0x0001 /* TX Warning Flag */
118#define WR 0x0002 /* RX Warning Flag */
119#define EP 0x0004 /* Error Passive Mode */
120#define EBO 0x0008 /* Error Bus Off Mode */
121#define SMA 0x0020 /* Sleep Mode Acknowledge */
122#define CSA 0x0040 /* Suspend Mode Acknowledge */
123#define CCA 0x0080 /* Configuration Mode Acknowledge */
124#define MBPTR 0x1F00 /* Mailbox Pointer */
125#define TRM 0x4000 /* Transmit Mode */
126#define REC 0x8000 /* Receive Mode */
127
128/* CAN_CLOCK Masks */
129#define BRP 0x03FF /* Bit-Rate Pre-Scaler */
130
131/* CAN_TIMING Masks */
132#define TSEG1 0x000F /* Time Segment 1 */
133#define TSEG2 0x0070 /* Time Segment 2 */
134#define SAM 0x0080 /* Sampling */
135#define SJW 0x0300 /* Synchronization Jump Width */
136
137/* CAN_DEBUG Masks */
138#define DEC 0x0001 /* Disable CAN Error Counters */
139#define DRI 0x0002 /* Disable CAN RX Input */
140#define DTO 0x0004 /* Disable CAN TX Output */
141#define DIL 0x0008 /* Disable CAN Internal Loop */
142#define MAA 0x0010 /* Mode Auto-Acknowledge Enable */
143#define MRB 0x0020 /* Mode Read Back Enable */
144#define CDE 0x8000 /* CAN Debug Enable */
145
146/* CAN_CEC Masks */
147#define RXECNT 0x00FF /* Receive Error Counter */
148#define TXECNT 0xFF00 /* Transmit Error Counter */
149
150/* CAN_INTR Masks */
151#define MBRIRQ 0x0001 /* Mailbox Receive Interrupt */
152#define MBTIRQ 0x0002 /* Mailbox Transmit Interrupt */
153#define GIRQ 0x0004 /* Global Interrupt */
154#define SMACK 0x0008 /* Sleep Mode Acknowledge */
155#define CANTX 0x0040 /* CAN TX Bus Value */
156#define CANRX 0x0080 /* CAN RX Bus Value */
157
158/* CAN_MBxx_ID1 and CAN_MBxx_ID0 Masks */
159#define DFC 0xFFFF /* Data Filtering Code (If Enabled) (ID0) */
160#define EXTID_LO 0xFFFF /* Lower 16 Bits of Extended Identifier (ID0) */
161#define EXTID_HI 0x0003 /* Upper 2 Bits of Extended Identifier (ID1) */
162#define BASEID 0x1FFC /* Base Identifier */
163#define IDE 0x2000 /* Identifier Extension */
164#define RTR 0x4000 /* Remote Frame Transmission Request */
165#define AME 0x8000 /* Acceptance Mask Enable */
166
167/* CAN_MBxx_TIMESTAMP Masks */
168#define TSV 0xFFFF /* Timestamp */
169
170/* CAN_MBxx_LENGTH Masks */
171#define DLC 0x000F /* Data Length Code */
172
173/* CAN_AMxxH and CAN_AMxxL Masks */
174#define DFM 0xFFFF /* Data Field Mask (If Enabled) (CAN_AMxxL) */
175#define EXTID_LO 0xFFFF /* Lower 16 Bits of Extended Identifier (CAN_AMxxL) */
176#define EXTID_HI 0x0003 /* Upper 2 Bits of Extended Identifier (CAN_AMxxH) */
177#define BASEID 0x1FFC /* Base Identifier */
178#define AMIDE 0x2000 /* Acceptance Mask ID Extension Enable */
179#define FMD 0x4000 /* Full Mask Data Field Enable */
180#define FDF 0x8000 /* Filter On Data Field Enable */
181
182/* CAN_MC1 Masks */
183#define MC0 0x0001 /* Enable Mailbox 0 */
184#define MC1 0x0002 /* Enable Mailbox 1 */
185#define MC2 0x0004 /* Enable Mailbox 2 */
186#define MC3 0x0008 /* Enable Mailbox 3 */
187#define MC4 0x0010 /* Enable Mailbox 4 */
188#define MC5 0x0020 /* Enable Mailbox 5 */
189#define MC6 0x0040 /* Enable Mailbox 6 */
190#define MC7 0x0080 /* Enable Mailbox 7 */
191#define MC8 0x0100 /* Enable Mailbox 8 */
192#define MC9 0x0200 /* Enable Mailbox 9 */
193#define MC10 0x0400 /* Enable Mailbox 10 */
194#define MC11 0x0800 /* Enable Mailbox 11 */
195#define MC12 0x1000 /* Enable Mailbox 12 */
196#define MC13 0x2000 /* Enable Mailbox 13 */
197#define MC14 0x4000 /* Enable Mailbox 14 */
198#define MC15 0x8000 /* Enable Mailbox 15 */
199
200/* CAN_MC2 Masks */
201#define MC16 0x0001 /* Enable Mailbox 16 */
202#define MC17 0x0002 /* Enable Mailbox 17 */
203#define MC18 0x0004 /* Enable Mailbox 18 */
204#define MC19 0x0008 /* Enable Mailbox 19 */
205#define MC20 0x0010 /* Enable Mailbox 20 */
206#define MC21 0x0020 /* Enable Mailbox 21 */
207#define MC22 0x0040 /* Enable Mailbox 22 */
208#define MC23 0x0080 /* Enable Mailbox 23 */
209#define MC24 0x0100 /* Enable Mailbox 24 */
210#define MC25 0x0200 /* Enable Mailbox 25 */
211#define MC26 0x0400 /* Enable Mailbox 26 */
212#define MC27 0x0800 /* Enable Mailbox 27 */
213#define MC28 0x1000 /* Enable Mailbox 28 */
214#define MC29 0x2000 /* Enable Mailbox 29 */
215#define MC30 0x4000 /* Enable Mailbox 30 */
216#define MC31 0x8000 /* Enable Mailbox 31 */
217
218/* CAN_MD1 Masks */
219#define MD0 0x0001 /* Enable Mailbox 0 For Receive */
220#define MD1 0x0002 /* Enable Mailbox 1 For Receive */
221#define MD2 0x0004 /* Enable Mailbox 2 For Receive */
222#define MD3 0x0008 /* Enable Mailbox 3 For Receive */
223#define MD4 0x0010 /* Enable Mailbox 4 For Receive */
224#define MD5 0x0020 /* Enable Mailbox 5 For Receive */
225#define MD6 0x0040 /* Enable Mailbox 6 For Receive */
226#define MD7 0x0080 /* Enable Mailbox 7 For Receive */
227#define MD8 0x0100 /* Enable Mailbox 8 For Receive */
228#define MD9 0x0200 /* Enable Mailbox 9 For Receive */
229#define MD10 0x0400 /* Enable Mailbox 10 For Receive */
230#define MD11 0x0800 /* Enable Mailbox 11 For Receive */
231#define MD12 0x1000 /* Enable Mailbox 12 For Receive */
232#define MD13 0x2000 /* Enable Mailbox 13 For Receive */
233#define MD14 0x4000 /* Enable Mailbox 14 For Receive */
234#define MD15 0x8000 /* Enable Mailbox 15 For Receive */
235
236/* CAN_MD2 Masks */
237#define MD16 0x0001 /* Enable Mailbox 16 For Receive */
238#define MD17 0x0002 /* Enable Mailbox 17 For Receive */
239#define MD18 0x0004 /* Enable Mailbox 18 For Receive */
240#define MD19 0x0008 /* Enable Mailbox 19 For Receive */
241#define MD20 0x0010 /* Enable Mailbox 20 For Receive */
242#define MD21 0x0020 /* Enable Mailbox 21 For Receive */
243#define MD22 0x0040 /* Enable Mailbox 22 For Receive */
244#define MD23 0x0080 /* Enable Mailbox 23 For Receive */
245#define MD24 0x0100 /* Enable Mailbox 24 For Receive */
246#define MD25 0x0200 /* Enable Mailbox 25 For Receive */
247#define MD26 0x0400 /* Enable Mailbox 26 For Receive */
248#define MD27 0x0800 /* Enable Mailbox 27 For Receive */
249#define MD28 0x1000 /* Enable Mailbox 28 For Receive */
250#define MD29 0x2000 /* Enable Mailbox 29 For Receive */
251#define MD30 0x4000 /* Enable Mailbox 30 For Receive */
252#define MD31 0x8000 /* Enable Mailbox 31 For Receive */
253
254/* CAN_RMP1 Masks */
255#define RMP0 0x0001 /* RX Message Pending In Mailbox 0 */
256#define RMP1 0x0002 /* RX Message Pending In Mailbox 1 */
257#define RMP2 0x0004 /* RX Message Pending In Mailbox 2 */
258#define RMP3 0x0008 /* RX Message Pending In Mailbox 3 */
259#define RMP4 0x0010 /* RX Message Pending In Mailbox 4 */
260#define RMP5 0x0020 /* RX Message Pending In Mailbox 5 */
261#define RMP6 0x0040 /* RX Message Pending In Mailbox 6 */
262#define RMP7 0x0080 /* RX Message Pending In Mailbox 7 */
263#define RMP8 0x0100 /* RX Message Pending In Mailbox 8 */
264#define RMP9 0x0200 /* RX Message Pending In Mailbox 9 */
265#define RMP10 0x0400 /* RX Message Pending In Mailbox 10 */
266#define RMP11 0x0800 /* RX Message Pending In Mailbox 11 */
267#define RMP12 0x1000 /* RX Message Pending In Mailbox 12 */
268#define RMP13 0x2000 /* RX Message Pending In Mailbox 13 */
269#define RMP14 0x4000 /* RX Message Pending In Mailbox 14 */
270#define RMP15 0x8000 /* RX Message Pending In Mailbox 15 */
271
272/* CAN_RMP2 Masks */
273#define RMP16 0x0001 /* RX Message Pending In Mailbox 16 */
274#define RMP17 0x0002 /* RX Message Pending In Mailbox 17 */
275#define RMP18 0x0004 /* RX Message Pending In Mailbox 18 */
276#define RMP19 0x0008 /* RX Message Pending In Mailbox 19 */
277#define RMP20 0x0010 /* RX Message Pending In Mailbox 20 */
278#define RMP21 0x0020 /* RX Message Pending In Mailbox 21 */
279#define RMP22 0x0040 /* RX Message Pending In Mailbox 22 */
280#define RMP23 0x0080 /* RX Message Pending In Mailbox 23 */
281#define RMP24 0x0100 /* RX Message Pending In Mailbox 24 */
282#define RMP25 0x0200 /* RX Message Pending In Mailbox 25 */
283#define RMP26 0x0400 /* RX Message Pending In Mailbox 26 */
284#define RMP27 0x0800 /* RX Message Pending In Mailbox 27 */
285#define RMP28 0x1000 /* RX Message Pending In Mailbox 28 */
286#define RMP29 0x2000 /* RX Message Pending In Mailbox 29 */
287#define RMP30 0x4000 /* RX Message Pending In Mailbox 30 */
288#define RMP31 0x8000 /* RX Message Pending In Mailbox 31 */
289
290/* CAN_RML1 Masks */
291#define RML0 0x0001 /* RX Message Lost In Mailbox 0 */
292#define RML1 0x0002 /* RX Message Lost In Mailbox 1 */
293#define RML2 0x0004 /* RX Message Lost In Mailbox 2 */
294#define RML3 0x0008 /* RX Message Lost In Mailbox 3 */
295#define RML4 0x0010 /* RX Message Lost In Mailbox 4 */
296#define RML5 0x0020 /* RX Message Lost In Mailbox 5 */
297#define RML6 0x0040 /* RX Message Lost In Mailbox 6 */
298#define RML7 0x0080 /* RX Message Lost In Mailbox 7 */
299#define RML8 0x0100 /* RX Message Lost In Mailbox 8 */
300#define RML9 0x0200 /* RX Message Lost In Mailbox 9 */
301#define RML10 0x0400 /* RX Message Lost In Mailbox 10 */
302#define RML11 0x0800 /* RX Message Lost In Mailbox 11 */
303#define RML12 0x1000 /* RX Message Lost In Mailbox 12 */
304#define RML13 0x2000 /* RX Message Lost In Mailbox 13 */
305#define RML14 0x4000 /* RX Message Lost In Mailbox 14 */
306#define RML15 0x8000 /* RX Message Lost In Mailbox 15 */
307
308/* CAN_RML2 Masks */
309#define RML16 0x0001 /* RX Message Lost In Mailbox 16 */
310#define RML17 0x0002 /* RX Message Lost In Mailbox 17 */
311#define RML18 0x0004 /* RX Message Lost In Mailbox 18 */
312#define RML19 0x0008 /* RX Message Lost In Mailbox 19 */
313#define RML20 0x0010 /* RX Message Lost In Mailbox 20 */
314#define RML21 0x0020 /* RX Message Lost In Mailbox 21 */
315#define RML22 0x0040 /* RX Message Lost In Mailbox 22 */
316#define RML23 0x0080 /* RX Message Lost In Mailbox 23 */
317#define RML24 0x0100 /* RX Message Lost In Mailbox 24 */
318#define RML25 0x0200 /* RX Message Lost In Mailbox 25 */
319#define RML26 0x0400 /* RX Message Lost In Mailbox 26 */
320#define RML27 0x0800 /* RX Message Lost In Mailbox 27 */
321#define RML28 0x1000 /* RX Message Lost In Mailbox 28 */
322#define RML29 0x2000 /* RX Message Lost In Mailbox 29 */
323#define RML30 0x4000 /* RX Message Lost In Mailbox 30 */
324#define RML31 0x8000 /* RX Message Lost In Mailbox 31 */
325
326/* CAN_OPSS1 Masks */
327#define OPSS0 0x0001 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 0 */
328#define OPSS1 0x0002 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 1 */
329#define OPSS2 0x0004 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 2 */
330#define OPSS3 0x0008 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 3 */
331#define OPSS4 0x0010 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 4 */
332#define OPSS5 0x0020 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 5 */
333#define OPSS6 0x0040 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 6 */
334#define OPSS7 0x0080 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 7 */
335#define OPSS8 0x0100 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 8 */
336#define OPSS9 0x0200 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 9 */
337#define OPSS10 0x0400 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 10 */
338#define OPSS11 0x0800 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 11 */
339#define OPSS12 0x1000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 12 */
340#define OPSS13 0x2000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 13 */
341#define OPSS14 0x4000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 14 */
342#define OPSS15 0x8000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 15 */
343
344/* CAN_OPSS2 Masks */
345#define OPSS16 0x0001 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 16 */
346#define OPSS17 0x0002 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 17 */
347#define OPSS18 0x0004 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 18 */
348#define OPSS19 0x0008 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 19 */
349#define OPSS20 0x0010 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 20 */
350#define OPSS21 0x0020 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 21 */
351#define OPSS22 0x0040 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 22 */
352#define OPSS23 0x0080 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 23 */
353#define OPSS24 0x0100 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 24 */
354#define OPSS25 0x0200 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 25 */
355#define OPSS26 0x0400 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 26 */
356#define OPSS27 0x0800 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 27 */
357#define OPSS28 0x1000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 28 */
358#define OPSS29 0x2000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 29 */
359#define OPSS30 0x4000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 30 */
360#define OPSS31 0x8000 /* Enable RX Overwrite Protection or TX Single-Shot For Mailbox 31 */
361
362/* CAN_TRR1 Masks */
363#define TRR0 0x0001 /* Deny But Don't Lock Access To Mailbox 0 */
364#define TRR1 0x0002 /* Deny But Don't Lock Access To Mailbox 1 */
365#define TRR2 0x0004 /* Deny But Don't Lock Access To Mailbox 2 */
366#define TRR3 0x0008 /* Deny But Don't Lock Access To Mailbox 3 */
367#define TRR4 0x0010 /* Deny But Don't Lock Access To Mailbox 4 */
368#define TRR5 0x0020 /* Deny But Don't Lock Access To Mailbox 5 */
369#define TRR6 0x0040 /* Deny But Don't Lock Access To Mailbox 6 */
370#define TRR7 0x0080 /* Deny But Don't Lock Access To Mailbox 7 */
371#define TRR8 0x0100 /* Deny But Don't Lock Access To Mailbox 8 */
372#define TRR9 0x0200 /* Deny But Don't Lock Access To Mailbox 9 */
373#define TRR10 0x0400 /* Deny But Don't Lock Access To Mailbox 10 */
374#define TRR11 0x0800 /* Deny But Don't Lock Access To Mailbox 11 */
375#define TRR12 0x1000 /* Deny But Don't Lock Access To Mailbox 12 */
376#define TRR13 0x2000 /* Deny But Don't Lock Access To Mailbox 13 */
377#define TRR14 0x4000 /* Deny But Don't Lock Access To Mailbox 14 */
378#define TRR15 0x8000 /* Deny But Don't Lock Access To Mailbox 15 */
379
380/* CAN_TRR2 Masks */
381#define TRR16 0x0001 /* Deny But Don't Lock Access To Mailbox 16 */
382#define TRR17 0x0002 /* Deny But Don't Lock Access To Mailbox 17 */
383#define TRR18 0x0004 /* Deny But Don't Lock Access To Mailbox 18 */
384#define TRR19 0x0008 /* Deny But Don't Lock Access To Mailbox 19 */
385#define TRR20 0x0010 /* Deny But Don't Lock Access To Mailbox 20 */
386#define TRR21 0x0020 /* Deny But Don't Lock Access To Mailbox 21 */
387#define TRR22 0x0040 /* Deny But Don't Lock Access To Mailbox 22 */
388#define TRR23 0x0080 /* Deny But Don't Lock Access To Mailbox 23 */
389#define TRR24 0x0100 /* Deny But Don't Lock Access To Mailbox 24 */
390#define TRR25 0x0200 /* Deny But Don't Lock Access To Mailbox 25 */
391#define TRR26 0x0400 /* Deny But Don't Lock Access To Mailbox 26 */
392#define TRR27 0x0800 /* Deny But Don't Lock Access To Mailbox 27 */
393#define TRR28 0x1000 /* Deny But Don't Lock Access To Mailbox 28 */
394#define TRR29 0x2000 /* Deny But Don't Lock Access To Mailbox 29 */
395#define TRR30 0x4000 /* Deny But Don't Lock Access To Mailbox 30 */
396#define TRR31 0x8000 /* Deny But Don't Lock Access To Mailbox 31 */
397
398/* CAN_TRS1 Masks */
399#define TRS0 0x0001 /* Remote Frame Request For Mailbox 0 */
400#define TRS1 0x0002 /* Remote Frame Request For Mailbox 1 */
401#define TRS2 0x0004 /* Remote Frame Request For Mailbox 2 */
402#define TRS3 0x0008 /* Remote Frame Request For Mailbox 3 */
403#define TRS4 0x0010 /* Remote Frame Request For Mailbox 4 */
404#define TRS5 0x0020 /* Remote Frame Request For Mailbox 5 */
405#define TRS6 0x0040 /* Remote Frame Request For Mailbox 6 */
406#define TRS7 0x0080 /* Remote Frame Request For Mailbox 7 */
407#define TRS8 0x0100 /* Remote Frame Request For Mailbox 8 */
408#define TRS9 0x0200 /* Remote Frame Request For Mailbox 9 */
409#define TRS10 0x0400 /* Remote Frame Request For Mailbox 10 */
410#define TRS11 0x0800 /* Remote Frame Request For Mailbox 11 */
411#define TRS12 0x1000 /* Remote Frame Request For Mailbox 12 */
412#define TRS13 0x2000 /* Remote Frame Request For Mailbox 13 */
413#define TRS14 0x4000 /* Remote Frame Request For Mailbox 14 */
414#define TRS15 0x8000 /* Remote Frame Request For Mailbox 15 */
415
416/* CAN_TRS2 Masks */
417#define TRS16 0x0001 /* Remote Frame Request For Mailbox 16 */
418#define TRS17 0x0002 /* Remote Frame Request For Mailbox 17 */
419#define TRS18 0x0004 /* Remote Frame Request For Mailbox 18 */
420#define TRS19 0x0008 /* Remote Frame Request For Mailbox 19 */
421#define TRS20 0x0010 /* Remote Frame Request For Mailbox 20 */
422#define TRS21 0x0020 /* Remote Frame Request For Mailbox 21 */
423#define TRS22 0x0040 /* Remote Frame Request For Mailbox 22 */
424#define TRS23 0x0080 /* Remote Frame Request For Mailbox 23 */
425#define TRS24 0x0100 /* Remote Frame Request For Mailbox 24 */
426#define TRS25 0x0200 /* Remote Frame Request For Mailbox 25 */
427#define TRS26 0x0400 /* Remote Frame Request For Mailbox 26 */
428#define TRS27 0x0800 /* Remote Frame Request For Mailbox 27 */
429#define TRS28 0x1000 /* Remote Frame Request For Mailbox 28 */
430#define TRS29 0x2000 /* Remote Frame Request For Mailbox 29 */
431#define TRS30 0x4000 /* Remote Frame Request For Mailbox 30 */
432#define TRS31 0x8000 /* Remote Frame Request For Mailbox 31 */
433
434/* CAN_AA1 Masks */
435#define AA0 0x0001 /* Aborted Message In Mailbox 0 */
436#define AA1 0x0002 /* Aborted Message In Mailbox 1 */
437#define AA2 0x0004 /* Aborted Message In Mailbox 2 */
438#define AA3 0x0008 /* Aborted Message In Mailbox 3 */
439#define AA4 0x0010 /* Aborted Message In Mailbox 4 */
440#define AA5 0x0020 /* Aborted Message In Mailbox 5 */
441#define AA6 0x0040 /* Aborted Message In Mailbox 6 */
442#define AA7 0x0080 /* Aborted Message In Mailbox 7 */
443#define AA8 0x0100 /* Aborted Message In Mailbox 8 */
444#define AA9 0x0200 /* Aborted Message In Mailbox 9 */
445#define AA10 0x0400 /* Aborted Message In Mailbox 10 */
446#define AA11 0x0800 /* Aborted Message In Mailbox 11 */
447#define AA12 0x1000 /* Aborted Message In Mailbox 12 */
448#define AA13 0x2000 /* Aborted Message In Mailbox 13 */
449#define AA14 0x4000 /* Aborted Message In Mailbox 14 */
450#define AA15 0x8000 /* Aborted Message In Mailbox 15 */
451
452/* CAN_AA2 Masks */
453#define AA16 0x0001 /* Aborted Message In Mailbox 16 */
454#define AA17 0x0002 /* Aborted Message In Mailbox 17 */
455#define AA18 0x0004 /* Aborted Message In Mailbox 18 */
456#define AA19 0x0008 /* Aborted Message In Mailbox 19 */
457#define AA20 0x0010 /* Aborted Message In Mailbox 20 */
458#define AA21 0x0020 /* Aborted Message In Mailbox 21 */
459#define AA22 0x0040 /* Aborted Message In Mailbox 22 */
460#define AA23 0x0080 /* Aborted Message In Mailbox 23 */
461#define AA24 0x0100 /* Aborted Message In Mailbox 24 */
462#define AA25 0x0200 /* Aborted Message In Mailbox 25 */
463#define AA26 0x0400 /* Aborted Message In Mailbox 26 */
464#define AA27 0x0800 /* Aborted Message In Mailbox 27 */
465#define AA28 0x1000 /* Aborted Message In Mailbox 28 */
466#define AA29 0x2000 /* Aborted Message In Mailbox 29 */
467#define AA30 0x4000 /* Aborted Message In Mailbox 30 */
468#define AA31 0x8000 /* Aborted Message In Mailbox 31 */
469
470/* CAN_TA1 Masks */
471#define TA0 0x0001 /* Transmit Successful From Mailbox 0 */
472#define TA1 0x0002 /* Transmit Successful From Mailbox 1 */
473#define TA2 0x0004 /* Transmit Successful From Mailbox 2 */
474#define TA3 0x0008 /* Transmit Successful From Mailbox 3 */
475#define TA4 0x0010 /* Transmit Successful From Mailbox 4 */
476#define TA5 0x0020 /* Transmit Successful From Mailbox 5 */
477#define TA6 0x0040 /* Transmit Successful From Mailbox 6 */
478#define TA7 0x0080 /* Transmit Successful From Mailbox 7 */
479#define TA8 0x0100 /* Transmit Successful From Mailbox 8 */
480#define TA9 0x0200 /* Transmit Successful From Mailbox 9 */
481#define TA10 0x0400 /* Transmit Successful From Mailbox 10 */
482#define TA11 0x0800 /* Transmit Successful From Mailbox 11 */
483#define TA12 0x1000 /* Transmit Successful From Mailbox 12 */
484#define TA13 0x2000 /* Transmit Successful From Mailbox 13 */
485#define TA14 0x4000 /* Transmit Successful From Mailbox 14 */
486#define TA15 0x8000 /* Transmit Successful From Mailbox 15 */
487
488/* CAN_TA2 Masks */
489#define TA16 0x0001 /* Transmit Successful From Mailbox 16 */
490#define TA17 0x0002 /* Transmit Successful From Mailbox 17 */
491#define TA18 0x0004 /* Transmit Successful From Mailbox 18 */
492#define TA19 0x0008 /* Transmit Successful From Mailbox 19 */
493#define TA20 0x0010 /* Transmit Successful From Mailbox 20 */
494#define TA21 0x0020 /* Transmit Successful From Mailbox 21 */
495#define TA22 0x0040 /* Transmit Successful From Mailbox 22 */
496#define TA23 0x0080 /* Transmit Successful From Mailbox 23 */
497#define TA24 0x0100 /* Transmit Successful From Mailbox 24 */
498#define TA25 0x0200 /* Transmit Successful From Mailbox 25 */
499#define TA26 0x0400 /* Transmit Successful From Mailbox 26 */
500#define TA27 0x0800 /* Transmit Successful From Mailbox 27 */
501#define TA28 0x1000 /* Transmit Successful From Mailbox 28 */
502#define TA29 0x2000 /* Transmit Successful From Mailbox 29 */
503#define TA30 0x4000 /* Transmit Successful From Mailbox 30 */
504#define TA31 0x8000 /* Transmit Successful From Mailbox 31 */
505
506/* CAN_MBTD Masks */
507#define TDPTR 0x001F /* Mailbox To Temporarily Disable */
508#define TDA 0x0040 /* Temporary Disable Acknowledge */
509#define TDR 0x0080 /* Temporary Disable Request */
510
511/* CAN_RFH1 Masks */
512#define RFH0 0x0001 /* Enable Automatic Remote Frame Handling For Mailbox 0 */
513#define RFH1 0x0002 /* Enable Automatic Remote Frame Handling For Mailbox 1 */
514#define RFH2 0x0004 /* Enable Automatic Remote Frame Handling For Mailbox 2 */
515#define RFH3 0x0008 /* Enable Automatic Remote Frame Handling For Mailbox 3 */
516#define RFH4 0x0010 /* Enable Automatic Remote Frame Handling For Mailbox 4 */
517#define RFH5 0x0020 /* Enable Automatic Remote Frame Handling For Mailbox 5 */
518#define RFH6 0x0040 /* Enable Automatic Remote Frame Handling For Mailbox 6 */
519#define RFH7 0x0080 /* Enable Automatic Remote Frame Handling For Mailbox 7 */
520#define RFH8 0x0100 /* Enable Automatic Remote Frame Handling For Mailbox 8 */
521#define RFH9 0x0200 /* Enable Automatic Remote Frame Handling For Mailbox 9 */
522#define RFH10 0x0400 /* Enable Automatic Remote Frame Handling For Mailbox 10 */
523#define RFH11 0x0800 /* Enable Automatic Remote Frame Handling For Mailbox 11 */
524#define RFH12 0x1000 /* Enable Automatic Remote Frame Handling For Mailbox 12 */
525#define RFH13 0x2000 /* Enable Automatic Remote Frame Handling For Mailbox 13 */
526#define RFH14 0x4000 /* Enable Automatic Remote Frame Handling For Mailbox 14 */
527#define RFH15 0x8000 /* Enable Automatic Remote Frame Handling For Mailbox 15 */
528
529/* CAN_RFH2 Masks */
530#define RFH16 0x0001 /* Enable Automatic Remote Frame Handling For Mailbox 16 */
531#define RFH17 0x0002 /* Enable Automatic Remote Frame Handling For Mailbox 17 */
532#define RFH18 0x0004 /* Enable Automatic Remote Frame Handling For Mailbox 18 */
533#define RFH19 0x0008 /* Enable Automatic Remote Frame Handling For Mailbox 19 */
534#define RFH20 0x0010 /* Enable Automatic Remote Frame Handling For Mailbox 20 */
535#define RFH21 0x0020 /* Enable Automatic Remote Frame Handling For Mailbox 21 */
536#define RFH22 0x0040 /* Enable Automatic Remote Frame Handling For Mailbox 22 */
537#define RFH23 0x0080 /* Enable Automatic Remote Frame Handling For Mailbox 23 */
538#define RFH24 0x0100 /* Enable Automatic Remote Frame Handling For Mailbox 24 */
539#define RFH25 0x0200 /* Enable Automatic Remote Frame Handling For Mailbox 25 */
540#define RFH26 0x0400 /* Enable Automatic Remote Frame Handling For Mailbox 26 */
541#define RFH27 0x0800 /* Enable Automatic Remote Frame Handling For Mailbox 27 */
542#define RFH28 0x1000 /* Enable Automatic Remote Frame Handling For Mailbox 28 */
543#define RFH29 0x2000 /* Enable Automatic Remote Frame Handling For Mailbox 29 */
544#define RFH30 0x4000 /* Enable Automatic Remote Frame Handling For Mailbox 30 */
545#define RFH31 0x8000 /* Enable Automatic Remote Frame Handling For Mailbox 31 */
546
547/* CAN_MBTIF1 Masks */
548#define MBTIF0 0x0001 /* TX Interrupt Active In Mailbox 0 */
549#define MBTIF1 0x0002 /* TX Interrupt Active In Mailbox 1 */
550#define MBTIF2 0x0004 /* TX Interrupt Active In Mailbox 2 */
551#define MBTIF3 0x0008 /* TX Interrupt Active In Mailbox 3 */
552#define MBTIF4 0x0010 /* TX Interrupt Active In Mailbox 4 */
553#define MBTIF5 0x0020 /* TX Interrupt Active In Mailbox 5 */
554#define MBTIF6 0x0040 /* TX Interrupt Active In Mailbox 6 */
555#define MBTIF7 0x0080 /* TX Interrupt Active In Mailbox 7 */
556#define MBTIF8 0x0100 /* TX Interrupt Active In Mailbox 8 */
557#define MBTIF9 0x0200 /* TX Interrupt Active In Mailbox 9 */
558#define MBTIF10 0x0400 /* TX Interrupt Active In Mailbox 10 */
559#define MBTIF11 0x0800 /* TX Interrupt Active In Mailbox 11 */
560#define MBTIF12 0x1000 /* TX Interrupt Active In Mailbox 12 */
561#define MBTIF13 0x2000 /* TX Interrupt Active In Mailbox 13 */
562#define MBTIF14 0x4000 /* TX Interrupt Active In Mailbox 14 */
563#define MBTIF15 0x8000 /* TX Interrupt Active In Mailbox 15 */
564
565/* CAN_MBTIF2 Masks */
566#define MBTIF16 0x0001 /* TX Interrupt Active In Mailbox 16 */
567#define MBTIF17 0x0002 /* TX Interrupt Active In Mailbox 17 */
568#define MBTIF18 0x0004 /* TX Interrupt Active In Mailbox 18 */
569#define MBTIF19 0x0008 /* TX Interrupt Active In Mailbox 19 */
570#define MBTIF20 0x0010 /* TX Interrupt Active In Mailbox 20 */
571#define MBTIF21 0x0020 /* TX Interrupt Active In Mailbox 21 */
572#define MBTIF22 0x0040 /* TX Interrupt Active In Mailbox 22 */
573#define MBTIF23 0x0080 /* TX Interrupt Active In Mailbox 23 */
574#define MBTIF24 0x0100 /* TX Interrupt Active In Mailbox 24 */
575#define MBTIF25 0x0200 /* TX Interrupt Active In Mailbox 25 */
576#define MBTIF26 0x0400 /* TX Interrupt Active In Mailbox 26 */
577#define MBTIF27 0x0800 /* TX Interrupt Active In Mailbox 27 */
578#define MBTIF28 0x1000 /* TX Interrupt Active In Mailbox 28 */
579#define MBTIF29 0x2000 /* TX Interrupt Active In Mailbox 29 */
580#define MBTIF30 0x4000 /* TX Interrupt Active In Mailbox 30 */
581#define MBTIF31 0x8000 /* TX Interrupt Active In Mailbox 31 */
582
583/* CAN_MBRIF1 Masks */
584#define MBRIF0 0x0001 /* RX Interrupt Active In Mailbox 0 */
585#define MBRIF1 0x0002 /* RX Interrupt Active In Mailbox 1 */
586#define MBRIF2 0x0004 /* RX Interrupt Active In Mailbox 2 */
587#define MBRIF3 0x0008 /* RX Interrupt Active In Mailbox 3 */
588#define MBRIF4 0x0010 /* RX Interrupt Active In Mailbox 4 */
589#define MBRIF5 0x0020 /* RX Interrupt Active In Mailbox 5 */
590#define MBRIF6 0x0040 /* RX Interrupt Active In Mailbox 6 */
591#define MBRIF7 0x0080 /* RX Interrupt Active In Mailbox 7 */
592#define MBRIF8 0x0100 /* RX Interrupt Active In Mailbox 8 */
593#define MBRIF9 0x0200 /* RX Interrupt Active In Mailbox 9 */
594#define MBRIF10 0x0400 /* RX Interrupt Active In Mailbox 10 */
595#define MBRIF11 0x0800 /* RX Interrupt Active In Mailbox 11 */
596#define MBRIF12 0x1000 /* RX Interrupt Active In Mailbox 12 */
597#define MBRIF13 0x2000 /* RX Interrupt Active In Mailbox 13 */
598#define MBRIF14 0x4000 /* RX Interrupt Active In Mailbox 14 */
599#define MBRIF15 0x8000 /* RX Interrupt Active In Mailbox 15 */
600
601/* CAN_MBRIF2 Masks */
602#define MBRIF16 0x0001 /* RX Interrupt Active In Mailbox 16 */
603#define MBRIF17 0x0002 /* RX Interrupt Active In Mailbox 17 */
604#define MBRIF18 0x0004 /* RX Interrupt Active In Mailbox 18 */
605#define MBRIF19 0x0008 /* RX Interrupt Active In Mailbox 19 */
606#define MBRIF20 0x0010 /* RX Interrupt Active In Mailbox 20 */
607#define MBRIF21 0x0020 /* RX Interrupt Active In Mailbox 21 */
608#define MBRIF22 0x0040 /* RX Interrupt Active In Mailbox 22 */
609#define MBRIF23 0x0080 /* RX Interrupt Active In Mailbox 23 */
610#define MBRIF24 0x0100 /* RX Interrupt Active In Mailbox 24 */
611#define MBRIF25 0x0200 /* RX Interrupt Active In Mailbox 25 */
612#define MBRIF26 0x0400 /* RX Interrupt Active In Mailbox 26 */
613#define MBRIF27 0x0800 /* RX Interrupt Active In Mailbox 27 */
614#define MBRIF28 0x1000 /* RX Interrupt Active In Mailbox 28 */
615#define MBRIF29 0x2000 /* RX Interrupt Active In Mailbox 29 */
616#define MBRIF30 0x4000 /* RX Interrupt Active In Mailbox 30 */
617#define MBRIF31 0x8000 /* RX Interrupt Active In Mailbox 31 */
618
619/* CAN_MBIM1 Masks */
620#define MBIM0 0x0001 /* Enable Interrupt For Mailbox 0 */
621#define MBIM1 0x0002 /* Enable Interrupt For Mailbox 1 */
622#define MBIM2 0x0004 /* Enable Interrupt For Mailbox 2 */
623#define MBIM3 0x0008 /* Enable Interrupt For Mailbox 3 */
624#define MBIM4 0x0010 /* Enable Interrupt For Mailbox 4 */
625#define MBIM5 0x0020 /* Enable Interrupt For Mailbox 5 */
626#define MBIM6 0x0040 /* Enable Interrupt For Mailbox 6 */
627#define MBIM7 0x0080 /* Enable Interrupt For Mailbox 7 */
628#define MBIM8 0x0100 /* Enable Interrupt For Mailbox 8 */
629#define MBIM9 0x0200 /* Enable Interrupt For Mailbox 9 */
630#define MBIM10 0x0400 /* Enable Interrupt For Mailbox 10 */
631#define MBIM11 0x0800 /* Enable Interrupt For Mailbox 11 */
632#define MBIM12 0x1000 /* Enable Interrupt For Mailbox 12 */
633#define MBIM13 0x2000 /* Enable Interrupt For Mailbox 13 */
634#define MBIM14 0x4000 /* Enable Interrupt For Mailbox 14 */
635#define MBIM15 0x8000 /* Enable Interrupt For Mailbox 15 */
636
637/* CAN_MBIM2 Masks */
638#define MBIM16 0x0001 /* Enable Interrupt For Mailbox 16 */
639#define MBIM17 0x0002 /* Enable Interrupt For Mailbox 17 */
640#define MBIM18 0x0004 /* Enable Interrupt For Mailbox 18 */
641#define MBIM19 0x0008 /* Enable Interrupt For Mailbox 19 */
642#define MBIM20 0x0010 /* Enable Interrupt For Mailbox 20 */
643#define MBIM21 0x0020 /* Enable Interrupt For Mailbox 21 */
644#define MBIM22 0x0040 /* Enable Interrupt For Mailbox 22 */
645#define MBIM23 0x0080 /* Enable Interrupt For Mailbox 23 */
646#define MBIM24 0x0100 /* Enable Interrupt For Mailbox 24 */
647#define MBIM25 0x0200 /* Enable Interrupt For Mailbox 25 */
648#define MBIM26 0x0400 /* Enable Interrupt For Mailbox 26 */
649#define MBIM27 0x0800 /* Enable Interrupt For Mailbox 27 */
650#define MBIM28 0x1000 /* Enable Interrupt For Mailbox 28 */
651#define MBIM29 0x2000 /* Enable Interrupt For Mailbox 29 */
652#define MBIM30 0x4000 /* Enable Interrupt For Mailbox 30 */
653#define MBIM31 0x8000 /* Enable Interrupt For Mailbox 31 */
654
655/* CAN_GIM Masks */
656#define EWTIM 0x0001 /* Enable TX Error Count Interrupt */
657#define EWRIM 0x0002 /* Enable RX Error Count Interrupt */
658#define EPIM 0x0004 /* Enable Error-Passive Mode Interrupt */
659#define BOIM 0x0008 /* Enable Bus Off Interrupt */
660#define WUIM 0x0010 /* Enable Wake-Up Interrupt */
661#define UIAIM 0x0020 /* Enable Access To Unimplemented Address Interrupt */
662#define AAIM 0x0040 /* Enable Abort Acknowledge Interrupt */
663#define RMLIM 0x0080 /* Enable RX Message Lost Interrupt */
664#define UCEIM 0x0100 /* Enable Universal Counter Overflow Interrupt */
665#define EXTIM 0x0200 /* Enable External Trigger Output Interrupt */
666#define ADIM 0x0400 /* Enable Access Denied Interrupt */
667
668/* CAN_GIS Masks */
669#define EWTIS 0x0001 /* TX Error Count IRQ Status */
670#define EWRIS 0x0002 /* RX Error Count IRQ Status */
671#define EPIS 0x0004 /* Error-Passive Mode IRQ Status */
672#define BOIS 0x0008 /* Bus Off IRQ Status */
673#define WUIS 0x0010 /* Wake-Up IRQ Status */
674#define UIAIS 0x0020 /* Access To Unimplemented Address IRQ Status */
675#define AAIS 0x0040 /* Abort Acknowledge IRQ Status */
676#define RMLIS 0x0080 /* RX Message Lost IRQ Status */
677#define UCEIS 0x0100 /* Universal Counter Overflow IRQ Status */
678#define EXTIS 0x0200 /* External Trigger Output IRQ Status */
679#define ADIS 0x0400 /* Access Denied IRQ Status */
680
681/* CAN_GIF Masks */
682#define EWTIF 0x0001 /* TX Error Count IRQ Flag */
683#define EWRIF 0x0002 /* RX Error Count IRQ Flag */
684#define EPIF 0x0004 /* Error-Passive Mode IRQ Flag */
685#define BOIF 0x0008 /* Bus Off IRQ Flag */
686#define WUIF 0x0010 /* Wake-Up IRQ Flag */
687#define UIAIF 0x0020 /* Access To Unimplemented Address IRQ Flag */
688#define AAIF 0x0040 /* Abort Acknowledge IRQ Flag */
689#define RMLIF 0x0080 /* RX Message Lost IRQ Flag */
690#define UCEIF 0x0100 /* Universal Counter Overflow IRQ Flag */
691#define EXTIF 0x0200 /* External Trigger Output IRQ Flag */
692#define ADIF 0x0400 /* Access Denied IRQ Flag */
693
694/* CAN_UCCNF Masks */
695#define UCCNF 0x000F /* Universal Counter Mode */
696#define UC_STAMP 0x0001 /* Timestamp Mode */
697#define UC_WDOG 0x0002 /* Watchdog Mode */
698#define UC_AUTOTX 0x0003 /* Auto-Transmit Mode */
699#define UC_ERROR 0x0006 /* CAN Error Frame Count */
700#define UC_OVER 0x0007 /* CAN Overload Frame Count */
701#define UC_LOST 0x0008 /* Arbitration Lost During TX Count */
702#define UC_AA 0x0009 /* TX Abort Count */
703#define UC_TA 0x000A /* TX Successful Count */
704#define UC_REJECT 0x000B /* RX Message Rejected Count */
705#define UC_RML 0x000C /* RX Message Lost Count */
706#define UC_RX 0x000D /* Total Successful RX Messages Count */
707#define UC_RMP 0x000E /* Successful RX W/Matching ID Count */
708#define UC_ALL 0x000F /* Correct Message On CAN Bus Line Count */
709#define UCRC 0x0020 /* Universal Counter Reload/Clear */
710#define UCCT 0x0040 /* Universal Counter CAN Trigger */
711#define UCE 0x0080 /* Universal Counter Enable */
712
713/* CAN_ESR Masks */
714#define ACKE 0x0004 /* Acknowledge Error */
715#define SER 0x0008 /* Stuff Error */
716#define CRCE 0x0010 /* CRC Error */
717#define SA0 0x0020 /* Stuck At Dominant Error */
718#define BEF 0x0040 /* Bit Error Flag */
719#define FER 0x0080 /* Form Error Flag */
720
721/* CAN_EWR Masks */
722#define EWLREC 0x00FF /* RX Error Count Limit (For EWRIS) */
723#define EWLTEC 0xFF00 /* TX Error Count Limit (For EWTIS) */
724
725#endif
diff --git a/arch/blackfin/include/asm/bfin_sport.h b/arch/blackfin/include/asm/bfin_sport.h
index b558908e1c79..9626cf7e4251 100644
--- a/arch/blackfin/include/asm/bfin_sport.h
+++ b/arch/blackfin/include/asm/bfin_sport.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * bfin_sport.h - userspace header for bfin sport driver 2 * bfin_sport.h - interface to Blackfin SPORTs
3 * 3 *
4 * Copyright 2004-2008 Analog Devices Inc. 4 * Copyright 2004-2009 Analog Devices Inc.
5 * 5 *
6 * Licensed under the GPL-2 or later. 6 * Licensed under the GPL-2 or later.
7 */ 7 */
@@ -9,16 +9,6 @@
9#ifndef __BFIN_SPORT_H__ 9#ifndef __BFIN_SPORT_H__
10#define __BFIN_SPORT_H__ 10#define __BFIN_SPORT_H__
11 11
12#ifdef __KERNEL__
13#include <linux/cdev.h>
14#include <linux/mutex.h>
15#include <linux/sched.h>
16#include <linux/wait.h>
17#endif
18
19#define SPORT_MAJOR 237
20#define SPORT_NR_DEVS 2
21
22/* Sport mode: it can be set to TDM, i2s or others */ 12/* Sport mode: it can be set to TDM, i2s or others */
23#define NORM_MODE 0x0 13#define NORM_MODE 0x0
24#define TDM_MODE 0x1 14#define TDM_MODE 0x1
@@ -35,7 +25,7 @@ struct sport_config {
35 unsigned int mode:3; 25 unsigned int mode:3;
36 26
37 /* if TDM mode is selected, channels must be set */ 27 /* if TDM mode is selected, channels must be set */
38 int channels; /* Must be in 8 units */ 28 int channels; /* Must be in 8 units */
39 unsigned int frame_delay:4; /* Delay between frame sync pulse and first bit */ 29 unsigned int frame_delay:4; /* Delay between frame sync pulse and first bit */
40 30
41 /* I2S mode */ 31 /* I2S mode */
@@ -69,94 +59,137 @@ struct sport_config {
69 59
70#ifdef __KERNEL__ 60#ifdef __KERNEL__
71 61
72struct sport_register { 62#include <linux/types.h>
73 unsigned short tcr1;
74 unsigned short reserved0;
75 unsigned short tcr2;
76 unsigned short reserved1;
77 unsigned short tclkdiv;
78 unsigned short reserved2;
79 unsigned short tfsdiv;
80 unsigned short reserved3;
81 unsigned long tx;
82 unsigned long reserved_l0;
83 unsigned long rx;
84 unsigned long reserved_l1;
85 unsigned short rcr1;
86 unsigned short reserved4;
87 unsigned short rcr2;
88 unsigned short reserved5;
89 unsigned short rclkdiv;
90 unsigned short reserved6;
91 unsigned short rfsdiv;
92 unsigned short reserved7;
93 unsigned short stat;
94 unsigned short reserved8;
95 unsigned short chnl;
96 unsigned short reserved9;
97 unsigned short mcmc1;
98 unsigned short reserved10;
99 unsigned short mcmc2;
100 unsigned short reserved11;
101 unsigned long mtcs0;
102 unsigned long mtcs1;
103 unsigned long mtcs2;
104 unsigned long mtcs3;
105 unsigned long mrcs0;
106 unsigned long mrcs1;
107 unsigned long mrcs2;
108 unsigned long mrcs3;
109};
110
111struct sport_dev {
112 struct cdev cdev; /* Char device structure */
113
114 int sport_num;
115 63
116 int dma_rx_chan; 64/*
117 int dma_tx_chan; 65 * All Blackfin system MMRs are padded to 32bits even if the register
118 66 * itself is only 16bits. So use a helper macro to streamline this.
119 int rx_irq; 67 */
120 unsigned char *rx_buf; /* Buffer store the received data */ 68#define __BFP(m) u16 m; u16 __pad_##m
121 int rx_len; /* How many bytes will be received */ 69struct sport_register {
122 int rx_received; /* How many bytes has been received */ 70 __BFP(tcr1);
123 71 __BFP(tcr2);
124 int tx_irq; 72 __BFP(tclkdiv);
125 const unsigned char *tx_buf; 73 __BFP(tfsdiv);
126 int tx_len; 74 union {
127 int tx_sent; 75 u32 tx32;
128 76 u16 tx16;
129 int err_irq; 77 };
130 78 u32 __pad_tx;
131 struct mutex mutex; /* mutual exclusion semaphore */ 79 union {
132 struct task_struct *task; 80 u32 rx32; /* use the anomaly wrapper below */
133 81 u16 rx16;
134 wait_queue_head_t waitq; 82 };
135 int wait_con; 83 u32 __pad_rx;
136 struct sport_register *regs; 84 __BFP(rcr1);
137 struct sport_config config; 85 __BFP(rcr2);
86 __BFP(rclkdiv);
87 __BFP(rfsdiv);
88 __BFP(stat);
89 __BFP(chnl);
90 __BFP(mcmc1);
91 __BFP(mcmc2);
92 u32 mtcs0;
93 u32 mtcs1;
94 u32 mtcs2;
95 u32 mtcs3;
96 u32 mrcs0;
97 u32 mrcs1;
98 u32 mrcs2;
99 u32 mrcs3;
138}; 100};
101#undef __BFP
102
103#define bfin_read_sport_rx32(base) \
104({ \
105 struct sport_register *__mmrs = (void *)base; \
106 u32 __ret; \
107 unsigned long flags; \
108 if (ANOMALY_05000473) \
109 local_irq_save(flags); \
110 __ret = __mmrs->rx32; \
111 if (ANOMALY_05000473) \
112 local_irq_restore(flags); \
113 __ret; \
114})
139 115
140#endif 116#endif
141 117
142#define SPORT_TCR1 0 118/* Workaround defBF*.h SPORT MMRs till they get cleansed */
143#define SPORT_TCR2 1 119#undef DTYPE_NORM
144#define SPORT_TCLKDIV 2 120#undef SLEN
145#define SPORT_TFSDIV 3 121#undef SP_WOFF
146#define SPORT_RCR1 8 122#undef SP_WSIZE
147#define SPORT_RCR2 9 123
148#define SPORT_RCLKDIV 10 124/* SPORT_TCR1 Masks */
149#define SPORT_RFSDIV 11 125#define TSPEN 0x0001 /* TX enable */
150#define SPORT_CHANNEL 13 126#define ITCLK 0x0002 /* Internal TX Clock Select */
151#define SPORT_MCMC1 14 127#define TDTYPE 0x000C /* TX Data Formatting Select */
152#define SPORT_MCMC2 15 128#define DTYPE_NORM 0x0000 /* Data Format Normal */
153#define SPORT_MTCS0 16 129#define DTYPE_ULAW 0x0008 /* Compand Using u-Law */
154#define SPORT_MTCS1 17 130#define DTYPE_ALAW 0x000C /* Compand Using A-Law */
155#define SPORT_MTCS2 18 131#define TLSBIT 0x0010 /* TX Bit Order */
156#define SPORT_MTCS3 19 132#define ITFS 0x0200 /* Internal TX Frame Sync Select */
157#define SPORT_MRCS0 20 133#define TFSR 0x0400 /* TX Frame Sync Required Select */
158#define SPORT_MRCS1 21 134#define DITFS 0x0800 /* Data Independent TX Frame Sync Select */
159#define SPORT_MRCS2 22 135#define LTFS 0x1000 /* Low TX Frame Sync Select */
160#define SPORT_MRCS3 23 136#define LATFS 0x2000 /* Late TX Frame Sync Select */
137#define TCKFE 0x4000 /* TX Clock Falling Edge Select */
138
139/* SPORT_TCR2 Masks */
140#define SLEN 0x001F /* SPORT TX Word Length (2 - 31) */
141#define DP_SLEN(x) BFIN_DEPOSIT(SLEN, x)
142#define EX_SLEN(x) BFIN_EXTRACT(SLEN, x)
143#define TXSE 0x0100 /* TX Secondary Enable */
144#define TSFSE 0x0200 /* TX Stereo Frame Sync Enable */
145#define TRFST 0x0400 /* TX Right-First Data Order */
146
147/* SPORT_RCR1 Masks */
148#define RSPEN 0x0001 /* RX enable */
149#define IRCLK 0x0002 /* Internal RX Clock Select */
150#define RDTYPE 0x000C /* RX Data Formatting Select */
151/* DTYPE_* defined above */
152#define RLSBIT 0x0010 /* RX Bit Order */
153#define IRFS 0x0200 /* Internal RX Frame Sync Select */
154#define RFSR 0x0400 /* RX Frame Sync Required Select */
155#define LRFS 0x1000 /* Low RX Frame Sync Select */
156#define LARFS 0x2000 /* Late RX Frame Sync Select */
157#define RCKFE 0x4000 /* RX Clock Falling Edge Select */
158
159/* SPORT_RCR2 Masks */
160/* SLEN defined above */
161#define RXSE 0x0100 /* RX Secondary Enable */
162#define RSFSE 0x0200 /* RX Stereo Frame Sync Enable */
163#define RRFST 0x0400 /* Right-First Data Order */
164
165/* SPORT_STAT Masks */
166#define RXNE 0x0001 /* RX FIFO Not Empty Status */
167#define RUVF 0x0002 /* RX Underflow Status */
168#define ROVF 0x0004 /* RX Overflow Status */
169#define TXF 0x0008 /* TX FIFO Full Status */
170#define TUVF 0x0010 /* TX Underflow Status */
171#define TOVF 0x0020 /* TX Overflow Status */
172#define TXHRE 0x0040 /* TX Hold Register Empty */
173
174/* SPORT_MCMC1 Masks */
175#define SP_WOFF 0x03FF /* Multichannel Window Offset Field */
176#define DP_SP_WOFF(x) BFIN_DEPOSIT(SP_WOFF, x)
177#define EX_SP_WOFF(x) BFIN_EXTRACT(SP_WOFF, x)
178#define SP_WSIZE 0xF000 /* Multichannel Window Size Field */
179#define DP_SP_WSIZE(x) BFIN_DEPOSIT(SP_WSIZE, x)
180#define EX_SP_WSIZE(x) BFIN_EXTRACT(SP_WSIZE, x)
181
182/* SPORT_MCMC2 Masks */
183#define MCCRM 0x0003 /* Multichannel Clock Recovery Mode */
184#define REC_BYPASS 0x0000 /* Bypass Mode (No Clock Recovery) */
185#define REC_2FROM4 0x0002 /* Recover 2 MHz Clock from 4 MHz Clock */
186#define REC_8FROM16 0x0003 /* Recover 8 MHz Clock from 16 MHz Clock */
187#define MCDTXPE 0x0004 /* Multichannel DMA Transmit Packing */
188#define MCDRXPE 0x0008 /* Multichannel DMA Receive Packing */
189#define MCMEN 0x0010 /* Multichannel Frame Mode Enable */
190#define FSDR 0x0080 /* Multichannel Frame Sync to Data Relationship */
191#define MFD 0xF000 /* Multichannel Frame Delay */
192#define DP_MFD(x) BFIN_DEPOSIT(MFD, x)
193#define EX_MFD(x) BFIN_EXTRACT(MFD, x)
161 194
162#endif 195#endif
diff --git a/arch/blackfin/include/asm/bfin_watchdog.h b/arch/blackfin/include/asm/bfin_watchdog.h
new file mode 100644
index 000000000000..dce09829a095
--- /dev/null
+++ b/arch/blackfin/include/asm/bfin_watchdog.h
@@ -0,0 +1,30 @@
1/*
2 * bfin_watchdog.h - Blackfin watchdog definitions
3 *
4 * Copyright 2006-2010 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2 or later.
7 */
8
9#ifndef _BFIN_WATCHDOG_H
10#define _BFIN_WATCHDOG_H
11
12/* Bit in SWRST that indicates boot caused by watchdog */
13#define SWRST_RESET_WDOG 0x4000
14
15/* Bit in WDOG_CTL that indicates watchdog has expired (WDR0) */
16#define WDOG_EXPIRED 0x8000
17
18/* Masks for WDEV field in WDOG_CTL register */
19#define ICTL_RESET 0x0
20#define ICTL_NMI 0x2
21#define ICTL_GPI 0x4
22#define ICTL_NONE 0x6
23#define ICTL_MASK 0x6
24
25/* Masks for WDEN field in WDOG_CTL register */
26#define WDEN_MASK 0x0FF0
27#define WDEN_ENABLE 0x0000
28#define WDEN_DISABLE 0x0AD0
29
30#endif
diff --git a/arch/blackfin/include/asm/bitops.h b/arch/blackfin/include/asm/bitops.h
index a2ff3fb3568d..605ba8e9b2e4 100644
--- a/arch/blackfin/include/asm/bitops.h
+++ b/arch/blackfin/include/asm/bitops.h
@@ -7,22 +7,41 @@
7#ifndef _BLACKFIN_BITOPS_H 7#ifndef _BLACKFIN_BITOPS_H
8#define _BLACKFIN_BITOPS_H 8#define _BLACKFIN_BITOPS_H
9 9
10#ifndef CONFIG_SMP 10#include <linux/compiler.h>
11# include <asm-generic/bitops.h> 11
12#else 12#include <asm-generic/bitops/__ffs.h>
13#include <asm-generic/bitops/ffz.h>
14#include <asm-generic/bitops/fls.h>
15#include <asm-generic/bitops/__fls.h>
16#include <asm-generic/bitops/fls64.h>
17#include <asm-generic/bitops/find.h>
13 18
14#ifndef _LINUX_BITOPS_H 19#ifndef _LINUX_BITOPS_H
15#error only <linux/bitops.h> can be included directly 20#error only <linux/bitops.h> can be included directly
16#endif 21#endif
17 22
18#include <linux/compiler.h>
19#include <asm/byteorder.h> /* swab32 */
20
21#include <asm-generic/bitops/ffs.h>
22#include <asm-generic/bitops/__ffs.h>
23#include <asm-generic/bitops/sched.h> 23#include <asm-generic/bitops/sched.h>
24#include <asm-generic/bitops/ffz.h> 24#include <asm-generic/bitops/ffs.h>
25#include <asm-generic/bitops/lock.h>
26#include <asm-generic/bitops/ext2-non-atomic.h>
27#include <asm-generic/bitops/ext2-atomic.h>
28#include <asm-generic/bitops/minix.h>
29
30#ifndef CONFIG_SMP
31#include <linux/irqflags.h>
32
33/*
34 * clear_bit may not imply a memory barrier
35 */
36#ifndef smp_mb__before_clear_bit
37#define smp_mb__before_clear_bit() smp_mb()
38#define smp_mb__after_clear_bit() smp_mb()
39#endif
40#include <asm-generic/bitops/atomic.h>
41#include <asm-generic/bitops/non-atomic.h>
42#else
25 43
44#include <asm/byteorder.h> /* swab32 */
26#include <linux/linkage.h> 45#include <linux/linkage.h>
27 46
28asmlinkage int __raw_bit_set_asm(volatile unsigned long *addr, int nr); 47asmlinkage int __raw_bit_set_asm(volatile unsigned long *addr, int nr);
@@ -89,19 +108,36 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
89 108
90#include <asm-generic/bitops/non-atomic.h> 109#include <asm-generic/bitops/non-atomic.h>
91 110
92#include <asm-generic/bitops/find.h> 111#endif /* CONFIG_SMP */
93#include <asm-generic/bitops/hweight.h>
94#include <asm-generic/bitops/lock.h>
95 112
96#include <asm-generic/bitops/ext2-atomic.h> 113/*
97#include <asm-generic/bitops/ext2-non-atomic.h> 114 * hweightN: returns the hamming weight (i.e. the number
115 * of bits set) of a N-bit word
116 */
98 117
99#include <asm-generic/bitops/minix.h> 118static inline unsigned int hweight32(unsigned int w)
119{
120 unsigned int res;
100 121
101#include <asm-generic/bitops/fls.h> 122 __asm__ ("%0.l = ONES %0;"
102#include <asm-generic/bitops/__fls.h> 123 "%0 = %0.l (Z);"
103#include <asm-generic/bitops/fls64.h> 124 : "=d" (res) : "d" (w));
125 return res;
126}
104 127
105#endif /* CONFIG_SMP */ 128static inline unsigned int hweight64(__u64 w)
129{
130 return hweight32((unsigned int)(w >> 32)) + hweight32((unsigned int)w);
131}
132
133static inline unsigned int hweight16(unsigned int w)
134{
135 return hweight32(w & 0xffff);
136}
137
138static inline unsigned int hweight8(unsigned int w)
139{
140 return hweight32(w & 0xff);
141}
106 142
107#endif /* _BLACKFIN_BITOPS_H */ 143#endif /* _BLACKFIN_BITOPS_H */
diff --git a/arch/blackfin/include/asm/context.S b/arch/blackfin/include/asm/context.S
index 5dffaf582a22..1f9060395a0a 100644
--- a/arch/blackfin/include/asm/context.S
+++ b/arch/blackfin/include/asm/context.S
@@ -73,6 +73,11 @@
73#else 73#else
74 cli r0; 74 cli r0;
75#endif 75#endif
76#ifdef CONFIG_TRACE_IRQFLAGS
77 sp += -12;
78 call _trace_hardirqs_off;
79 sp += 12;
80#endif
76 [--sp] = RETI; /*orig_pc*/ 81 [--sp] = RETI; /*orig_pc*/
77 /* Clear all L registers. */ 82 /* Clear all L registers. */
78 r0 = 0 (x); 83 r0 = 0 (x);
@@ -279,6 +284,13 @@
279 RETN = [sp++]; 284 RETN = [sp++];
280 RETX = [sp++]; 285 RETX = [sp++];
281 RETI = [sp++]; 286 RETI = [sp++];
287
288#ifdef CONFIG_TRACE_IRQFLAGS
289 sp += -12;
290 call _trace_hardirqs_on;
291 sp += 12;
292#endif
293
282 RETS = [sp++]; 294 RETS = [sp++];
283 295
284#ifdef CONFIG_SMP 296#ifdef CONFIG_SMP
@@ -374,3 +386,13 @@
374 386
375 (R7:0, P5:0) = [SP++]; 387 (R7:0, P5:0) = [SP++];
376.endm 388.endm
389
390.macro pseudo_long_call func:req, scratch:req
391#ifdef CONFIG_ROMKERNEL
392 \scratch\().l = \func;
393 \scratch\().h = \func;
394 call (\scratch);
395#else
396 call \func;
397#endif
398.endm
diff --git a/arch/blackfin/include/asm/cpu.h b/arch/blackfin/include/asm/cpu.h
index b191dc662bd8..16883e582e3c 100644
--- a/arch/blackfin/include/asm/cpu.h
+++ b/arch/blackfin/include/asm/cpu.h
@@ -17,8 +17,6 @@ struct blackfin_cpudata {
17 struct task_struct *idle; 17 struct task_struct *idle;
18 unsigned int imemctl; 18 unsigned int imemctl;
19 unsigned int dmemctl; 19 unsigned int dmemctl;
20 unsigned long dcache_invld_count;
21 unsigned long icache_invld_count;
22}; 20};
23 21
24DECLARE_PER_CPU(struct blackfin_cpudata, cpu_data); 22DECLARE_PER_CPU(struct blackfin_cpudata, cpu_data);
diff --git a/arch/blackfin/include/asm/def_LPBlackfin.h b/arch/blackfin/include/asm/def_LPBlackfin.h
index 25906468622f..f342ff0319df 100644
--- a/arch/blackfin/include/asm/def_LPBlackfin.h
+++ b/arch/blackfin/include/asm/def_LPBlackfin.h
@@ -12,6 +12,8 @@
12#include <mach/anomaly.h> 12#include <mach/anomaly.h>
13 13
14#define MK_BMSK_(x) (1<<x) 14#define MK_BMSK_(x) (1<<x)
15#define BFIN_DEPOSIT(mask, x) (((x) << __ffs(mask)) & (mask))
16#define BFIN_EXTRACT(mask, x) (((x) & (mask)) >> __ffs(mask))
15 17
16#ifndef __ASSEMBLY__ 18#ifndef __ASSEMBLY__
17 19
@@ -23,62 +25,30 @@
23# define NOP_PAD_ANOMALY_05000198 25# define NOP_PAD_ANOMALY_05000198
24#endif 26#endif
25 27
26#define bfin_read8(addr) ({ \ 28#define _bfin_readX(addr, size, asm_size, asm_ext) ({ \
27 uint32_t __v; \ 29 u32 __v; \
28 __asm__ __volatile__( \ 30 __asm__ __volatile__( \
29 NOP_PAD_ANOMALY_05000198 \ 31 NOP_PAD_ANOMALY_05000198 \
30 "%0 = b[%1] (z);" \ 32 "%0 = " #asm_size "[%1]" #asm_ext ";" \
31 : "=d" (__v) \ 33 : "=d" (__v) \
32 : "a" (addr) \ 34 : "a" (addr) \
33 ); \ 35 ); \
34 __v; }) 36 __v; })
35 37#define _bfin_writeX(addr, val, size, asm_size) \
36#define bfin_read16(addr) ({ \
37 uint32_t __v; \
38 __asm__ __volatile__( \
39 NOP_PAD_ANOMALY_05000198 \
40 "%0 = w[%1] (z);" \
41 : "=d" (__v) \
42 : "a" (addr) \
43 ); \
44 __v; })
45
46#define bfin_read32(addr) ({ \
47 uint32_t __v; \
48 __asm__ __volatile__( \
49 NOP_PAD_ANOMALY_05000198 \
50 "%0 = [%1];" \
51 : "=d" (__v) \
52 : "a" (addr) \
53 ); \
54 __v; })
55
56#define bfin_write8(addr, val) \
57 __asm__ __volatile__( \ 38 __asm__ __volatile__( \
58 NOP_PAD_ANOMALY_05000198 \ 39 NOP_PAD_ANOMALY_05000198 \
59 "b[%0] = %1;" \ 40 #asm_size "[%0] = %1;" \
60 : \ 41 : \
61 : "a" (addr), "d" ((uint8_t)(val)) \ 42 : "a" (addr), "d" ((u##size)(val)) \
62 : "memory" \ 43 : "memory" \
63 ) 44 )
64 45
65#define bfin_write16(addr, val) \ 46#define bfin_read8(addr) _bfin_readX(addr, 8, b, (z))
66 __asm__ __volatile__( \ 47#define bfin_read16(addr) _bfin_readX(addr, 16, w, (z))
67 NOP_PAD_ANOMALY_05000198 \ 48#define bfin_read32(addr) _bfin_readX(addr, 32, , )
68 "w[%0] = %1;" \ 49#define bfin_write8(addr, val) _bfin_writeX(addr, val, 8, b)
69 : \ 50#define bfin_write16(addr, val) _bfin_writeX(addr, val, 16, w)
70 : "a" (addr), "d" ((uint16_t)(val)) \ 51#define bfin_write32(addr, val) _bfin_writeX(addr, val, 32, )
71 : "memory" \
72 )
73
74#define bfin_write32(addr, val) \
75 __asm__ __volatile__( \
76 NOP_PAD_ANOMALY_05000198 \
77 "[%0] = %1;" \
78 : \
79 : "a" (addr), "d" (val) \
80 : "memory" \
81 )
82 52
83#endif /* __ASSEMBLY__ */ 53#endif /* __ASSEMBLY__ */
84 54
diff --git a/arch/blackfin/include/asm/delay.h b/arch/blackfin/include/asm/delay.h
index c31f91cc1d5d..171d8deb04a5 100644
--- a/arch/blackfin/include/asm/delay.h
+++ b/arch/blackfin/include/asm/delay.h
@@ -30,10 +30,22 @@ __asm__ __volatile__ (
30 30
31#define HZSCALE (268435456 / (1000000/HZ)) 31#define HZSCALE (268435456 / (1000000/HZ))
32 32
33static inline void udelay(unsigned long usecs) 33static inline unsigned long __to_delay(unsigned long scale)
34{ 34{
35 extern unsigned long loops_per_jiffy; 35 extern unsigned long loops_per_jiffy;
36 __delay((((usecs * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6); 36 return (((scale * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6;
37}
38
39static inline void udelay(unsigned long usecs)
40{
41 __delay(__to_delay(usecs));
37} 42}
38 43
44static inline void ndelay(unsigned long nsecs)
45{
46 __delay(__to_delay(1) * nsecs / 1000);
47}
48
49#define ndelay ndelay
50
39#endif 51#endif
diff --git a/arch/blackfin/include/asm/dma-mapping.h b/arch/blackfin/include/asm/dma-mapping.h
index 413a30314a6f..212cb80fd74b 100644
--- a/arch/blackfin/include/asm/dma-mapping.h
+++ b/arch/blackfin/include/asm/dma-mapping.h
@@ -44,13 +44,8 @@ dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
44extern void 44extern void
45__dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir); 45__dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir);
46static inline void 46static inline void
47_dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir) 47__dma_sync_inline(dma_addr_t addr, size_t size, enum dma_data_direction dir)
48{ 48{
49 if (!__builtin_constant_p(dir)) {
50 __dma_sync(addr, size, dir);
51 return;
52 }
53
54 switch (dir) { 49 switch (dir) {
55 case DMA_NONE: 50 case DMA_NONE:
56 BUG(); 51 BUG();
@@ -64,6 +59,14 @@ _dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir)
64 break; 59 break;
65 } 60 }
66} 61}
62static inline void
63_dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir)
64{
65 if (__builtin_constant_p(dir))
66 __dma_sync_inline(addr, size, dir);
67 else
68 __dma_sync(addr, size, dir);
69}
67 70
68static inline dma_addr_t 71static inline dma_addr_t
69dma_map_single(struct device *dev, void *ptr, size_t size, 72dma_map_single(struct device *dev, void *ptr, size_t size,
diff --git a/arch/blackfin/include/asm/dma.h b/arch/blackfin/include/asm/dma.h
index bd2e62243abe..2c09b1d50ec9 100644
--- a/arch/blackfin/include/asm/dma.h
+++ b/arch/blackfin/include/asm/dma.h
@@ -262,6 +262,10 @@ static inline void dma_disable_irq(unsigned int channel)
262{ 262{
263 disable_irq(dma_ch[channel].irq); 263 disable_irq(dma_ch[channel].irq);
264} 264}
265static inline void dma_disable_irq_nosync(unsigned int channel)
266{
267 disable_irq_nosync(dma_ch[channel].irq);
268}
265static inline void dma_enable_irq(unsigned int channel) 269static inline void dma_enable_irq(unsigned int channel)
266{ 270{
267 enable_irq(dma_ch[channel].irq); 271 enable_irq(dma_ch[channel].irq);
diff --git a/arch/blackfin/include/asm/dpmc.h b/arch/blackfin/include/asm/dpmc.h
index 1597ae5041ee..efcc3aebeae4 100644
--- a/arch/blackfin/include/asm/dpmc.h
+++ b/arch/blackfin/include/asm/dpmc.h
@@ -75,7 +75,7 @@
75 75
76#define VLEV 0x00F0 /* Internal Voltage Level */ 76#define VLEV 0x00F0 /* Internal Voltage Level */
77#ifdef __ADSPBF52x__ 77#ifdef __ADSPBF52x__
78#define VLEV_085 0x0040 /* VLEV = 0.85 V (-5% - +10% Accuracy) */ 78#define VLEV_085 0x0040 /* VLEV = 0.85 V (-5% - +10% Accuracy) */
79#define VLEV_090 0x0050 /* VLEV = 0.90 V (-5% - +10% Accuracy) */ 79#define VLEV_090 0x0050 /* VLEV = 0.90 V (-5% - +10% Accuracy) */
80#define VLEV_095 0x0060 /* VLEV = 0.95 V (-5% - +10% Accuracy) */ 80#define VLEV_095 0x0060 /* VLEV = 0.95 V (-5% - +10% Accuracy) */
81#define VLEV_100 0x0070 /* VLEV = 1.00 V (-5% - +10% Accuracy) */ 81#define VLEV_100 0x0070 /* VLEV = 1.00 V (-5% - +10% Accuracy) */
@@ -84,7 +84,7 @@
84#define VLEV_115 0x00A0 /* VLEV = 1.15 V (-5% - +10% Accuracy) */ 84#define VLEV_115 0x00A0 /* VLEV = 1.15 V (-5% - +10% Accuracy) */
85#define VLEV_120 0x00B0 /* VLEV = 1.20 V (-5% - +10% Accuracy) */ 85#define VLEV_120 0x00B0 /* VLEV = 1.20 V (-5% - +10% Accuracy) */
86#else 86#else
87#define VLEV_085 0x0060 /* VLEV = 0.85 V (-5% - +10% Accuracy) */ 87#define VLEV_085 0x0060 /* VLEV = 0.85 V (-5% - +10% Accuracy) */
88#define VLEV_090 0x0070 /* VLEV = 0.90 V (-5% - +10% Accuracy) */ 88#define VLEV_090 0x0070 /* VLEV = 0.90 V (-5% - +10% Accuracy) */
89#define VLEV_095 0x0080 /* VLEV = 0.95 V (-5% - +10% Accuracy) */ 89#define VLEV_095 0x0080 /* VLEV = 0.95 V (-5% - +10% Accuracy) */
90#define VLEV_100 0x0090 /* VLEV = 1.00 V (-5% - +10% Accuracy) */ 90#define VLEV_100 0x0090 /* VLEV = 1.00 V (-5% - +10% Accuracy) */
diff --git a/arch/blackfin/include/asm/elf.h b/arch/blackfin/include/asm/elf.h
index 5b50f0ecacf8..117713adea7f 100644
--- a/arch/blackfin/include/asm/elf.h
+++ b/arch/blackfin/include/asm/elf.h
@@ -22,12 +22,15 @@
22#define EF_BFIN_CODE_IN_L2 0x00000040 /* --code-in-l2 */ 22#define EF_BFIN_CODE_IN_L2 0x00000040 /* --code-in-l2 */
23#define EF_BFIN_DATA_IN_L2 0x00000080 /* --data-in-l2 */ 23#define EF_BFIN_DATA_IN_L2 0x00000080 /* --data-in-l2 */
24 24
25#if 1 /* core dumps not supported, but linux/elfcore.h needs these */
25typedef unsigned long elf_greg_t; 26typedef unsigned long elf_greg_t;
26 27
27#define ELF_NGREG 40 /* (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) */ 28#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
28typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 29typedef elf_greg_t elf_gregset_t[ELF_NGREG];
29 30
30typedef struct { } elf_fpregset_t; 31typedef struct { } elf_fpregset_t;
32#endif
33
31/* 34/*
32 * This is used to ensure we don't load something for the wrong architecture. 35 * This is used to ensure we don't load something for the wrong architecture.
33 */ 36 */
@@ -55,6 +58,9 @@ do { \
55 _regs->p2 = _dynamic_addr; \ 58 _regs->p2 = _dynamic_addr; \
56} while(0) 59} while(0)
57 60
61#if 0
62#define CORE_DUMP_USE_REGSET
63#endif
58#define ELF_FDPIC_CORE_EFLAGS EF_BFIN_FDPIC 64#define ELF_FDPIC_CORE_EFLAGS EF_BFIN_FDPIC
59#define ELF_EXEC_PAGESIZE 4096 65#define ELF_EXEC_PAGESIZE 4096
60 66
diff --git a/arch/blackfin/include/asm/ftrace.h b/arch/blackfin/include/asm/ftrace.h
index 90c9b400ba6d..4cfe2d9ba7e8 100644
--- a/arch/blackfin/include/asm/ftrace.h
+++ b/arch/blackfin/include/asm/ftrace.h
@@ -10,4 +10,57 @@
10 10
11#define MCOUNT_INSN_SIZE 6 /* sizeof "[++sp] = rets; call __mcount;" */ 11#define MCOUNT_INSN_SIZE 6 /* sizeof "[++sp] = rets; call __mcount;" */
12 12
13#ifndef __ASSEMBLY__
14
15#ifdef CONFIG_FRAME_POINTER
16#include <linux/mm.h>
17
18extern inline void *return_address(unsigned int level)
19{
20 unsigned long *endstack, *fp, *ret_addr;
21 unsigned int current_level = 0;
22
23 if (level == 0)
24 return __builtin_return_address(0);
25
26 fp = (unsigned long *)__builtin_frame_address(0);
27 endstack = (unsigned long *)PAGE_ALIGN((unsigned long)&level);
28
29 while (((unsigned long)fp & 0x3) == 0 && fp &&
30 (fp + 1) < endstack && current_level < level) {
31 fp = (unsigned long *)*fp;
32 current_level++;
33 }
34
35 if (((unsigned long)fp & 0x3) == 0 && fp &&
36 (fp + 1) < endstack)
37 ret_addr = (unsigned long *)*(fp + 1);
38 else
39 ret_addr = NULL;
40
41 return ret_addr;
42}
43
44#else
45
46extern inline void *return_address(unsigned int level)
47{
48 return NULL;
49}
50
51#endif /* CONFIG_FRAME_POINTER */
52
53#define HAVE_ARCH_CALLER_ADDR
54
55/* inline function or macro may lead to unexpected result */
56#define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
57#define CALLER_ADDR1 ((unsigned long)return_address(1))
58#define CALLER_ADDR2 ((unsigned long)return_address(2))
59#define CALLER_ADDR3 ((unsigned long)return_address(3))
60#define CALLER_ADDR4 ((unsigned long)return_address(4))
61#define CALLER_ADDR5 ((unsigned long)return_address(5))
62#define CALLER_ADDR6 ((unsigned long)return_address(6))
63
64#endif /* __ASSEMBLY__ */
65
13#endif 66#endif
diff --git a/arch/blackfin/include/asm/gpio.h b/arch/blackfin/include/asm/gpio.h
index 539468a05057..91bd2d7b9d55 100644
--- a/arch/blackfin/include/asm/gpio.h
+++ b/arch/blackfin/include/asm/gpio.h
@@ -70,6 +70,8 @@
70 70
71#ifndef __ASSEMBLY__ 71#ifndef __ASSEMBLY__
72 72
73#include <linux/compiler.h>
74
73/*********************************************************** 75/***********************************************************
74* 76*
75* FUNCTIONS: Blackfin General Purpose Ports Access Functions 77* FUNCTIONS: Blackfin General Purpose Ports Access Functions
@@ -223,6 +225,9 @@ int bfin_gpio_direction_output(unsigned gpio, int value);
223int bfin_gpio_get_value(unsigned gpio); 225int bfin_gpio_get_value(unsigned gpio);
224void bfin_gpio_set_value(unsigned gpio, int value); 226void bfin_gpio_set_value(unsigned gpio, int value);
225 227
228#include <asm/irq.h>
229#include <asm/errno.h>
230
226#ifdef CONFIG_GPIOLIB 231#ifdef CONFIG_GPIOLIB
227#include <asm-generic/gpio.h> /* cansleep wrappers */ 232#include <asm-generic/gpio.h> /* cansleep wrappers */
228 233
@@ -247,6 +252,11 @@ static inline int gpio_cansleep(unsigned int gpio)
247 return __gpio_cansleep(gpio); 252 return __gpio_cansleep(gpio);
248} 253}
249 254
255static inline int gpio_to_irq(unsigned gpio)
256{
257 return __gpio_to_irq(gpio);
258}
259
250#else /* !CONFIG_GPIOLIB */ 260#else /* !CONFIG_GPIOLIB */
251 261
252static inline int gpio_request(unsigned gpio, const char *label) 262static inline int gpio_request(unsigned gpio, const char *label)
@@ -279,10 +289,6 @@ static inline void gpio_set_value(unsigned gpio, int value)
279 return bfin_gpio_set_value(gpio, value); 289 return bfin_gpio_set_value(gpio, value);
280} 290}
281 291
282#include <asm-generic/gpio.h> /* cansleep wrappers */
283#endif /* !CONFIG_GPIOLIB */
284#include <asm/irq.h>
285
286static inline int gpio_to_irq(unsigned gpio) 292static inline int gpio_to_irq(unsigned gpio)
287{ 293{
288 if (likely(gpio < MAX_BLACKFIN_GPIOS)) 294 if (likely(gpio < MAX_BLACKFIN_GPIOS))
@@ -291,6 +297,9 @@ static inline int gpio_to_irq(unsigned gpio)
291 return -EINVAL; 297 return -EINVAL;
292} 298}
293 299
300#include <asm-generic/gpio.h> /* cansleep wrappers */
301#endif /* !CONFIG_GPIOLIB */
302
294static inline int irq_to_gpio(unsigned irq) 303static inline int irq_to_gpio(unsigned irq)
295{ 304{
296 return (irq - GPIO_IRQ_BASE); 305 return (irq - GPIO_IRQ_BASE);
diff --git a/arch/blackfin/include/asm/irq.h b/arch/blackfin/include/asm/irq.h
index e7c0623f9091..12f4060a31b0 100644
--- a/arch/blackfin/include/asm/irq.h
+++ b/arch/blackfin/include/asm/irq.h
@@ -12,6 +12,9 @@
12 12
13#include <linux/irqflags.h> 13#include <linux/irqflags.h>
14 14
15/* IRQs that may be used by external irq_chip controllers */
16#define NR_SPARE_IRQS 32
17
15#include <mach/anomaly.h> 18#include <mach/anomaly.h>
16 19
17/* SYS_IRQS and NR_IRQS are defined in <mach-bf5xx/irq.h> */ 20/* SYS_IRQS and NR_IRQS are defined in <mach-bf5xx/irq.h> */
@@ -35,4 +38,8 @@
35 38
36#include <asm-generic/irq.h> 39#include <asm-generic/irq.h>
37 40
41#ifdef CONFIG_NMI_WATCHDOG
42# define ARCH_HAS_NMI_WATCHDOG
43#endif
44
38#endif /* _BFIN_IRQ_H_ */ 45#endif /* _BFIN_IRQ_H_ */
diff --git a/arch/blackfin/include/asm/mmu_context.h b/arch/blackfin/include/asm/mmu_context.h
index ae8ef4ffd806..e1a9b4624f91 100644
--- a/arch/blackfin/include/asm/mmu_context.h
+++ b/arch/blackfin/include/asm/mmu_context.h
@@ -7,12 +7,13 @@
7#ifndef __BLACKFIN_MMU_CONTEXT_H__ 7#ifndef __BLACKFIN_MMU_CONTEXT_H__
8#define __BLACKFIN_MMU_CONTEXT_H__ 8#define __BLACKFIN_MMU_CONTEXT_H__
9 9
10#include <linux/gfp.h> 10#include <linux/slab.h>
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <asm/setup.h> 12#include <asm/setup.h>
13#include <asm/page.h> 13#include <asm/page.h>
14#include <asm/pgalloc.h> 14#include <asm/pgalloc.h>
15#include <asm/cplbinit.h> 15#include <asm/cplbinit.h>
16#include <asm/sections.h>
16 17
17/* Note: L1 stacks are CPU-private things, so we bluntly disable this 18/* Note: L1 stacks are CPU-private things, so we bluntly disable this
18 feature in SMP mode, and use the per-CPU scratch SRAM bank only to 19 feature in SMP mode, and use the per-CPU scratch SRAM bank only to
@@ -117,9 +118,16 @@ static inline void protect_page(struct mm_struct *mm, unsigned long addr,
117 unsigned long flags) 118 unsigned long flags)
118{ 119{
119 unsigned long *mask = mm->context.page_rwx_mask; 120 unsigned long *mask = mm->context.page_rwx_mask;
120 unsigned long page = addr >> 12; 121 unsigned long page;
121 unsigned long idx = page >> 5; 122 unsigned long idx;
122 unsigned long bit = 1 << (page & 31); 123 unsigned long bit;
124
125 if (unlikely(addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE))
126 page = (addr - (ASYNC_BANK0_BASE - _ramend)) >> 12;
127 else
128 page = addr >> 12;
129 idx = page >> 5;
130 bit = 1 << (page & 31);
123 131
124 if (flags & VM_READ) 132 if (flags & VM_READ)
125 mask[idx] |= bit; 133 mask[idx] |= bit;
diff --git a/arch/blackfin/include/asm/nmi.h b/arch/blackfin/include/asm/nmi.h
new file mode 100644
index 000000000000..b9caac4fcfd8
--- /dev/null
+++ b/arch/blackfin/include/asm/nmi.h
@@ -0,0 +1,12 @@
1/*
2 * Copyright 2010 Analog Devices Inc.
3 *
4 * Licensed under the GPL-2
5 */
6
7#ifndef _BFIN_NMI_H_
8#define _BFIN_NMI_H_
9
10#include <linux/nmi.h>
11
12#endif
diff --git a/arch/blackfin/include/asm/page.h b/arch/blackfin/include/asm/page.h
index 1d04e4078340..d0ce975bcd48 100644
--- a/arch/blackfin/include/asm/page.h
+++ b/arch/blackfin/include/asm/page.h
@@ -15,4 +15,7 @@
15 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ 15 ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \
16 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 16 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
17 17
18#include <asm-generic/memory_model.h>
19#include <asm-generic/getorder.h>
20
18#endif 21#endif
diff --git a/arch/blackfin/include/asm/ptrace.h b/arch/blackfin/include/asm/ptrace.h
index b33a4488f498..aaa1c6c2bc19 100644
--- a/arch/blackfin/include/asm/ptrace.h
+++ b/arch/blackfin/include/asm/ptrace.h
@@ -24,6 +24,8 @@
24 24
25#ifndef __ASSEMBLY__ 25#ifndef __ASSEMBLY__
26 26
27struct task_struct;
28
27/* this struct defines the way the registers are stored on the 29/* this struct defines the way the registers are stored on the
28 stack during a system call. */ 30 stack during a system call. */
29 31
@@ -101,9 +103,30 @@ struct pt_regs {
101 master interrupt enable. */ 103 master interrupt enable. */
102#define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1))) 104#define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
103#define instruction_pointer(regs) ((regs)->pc) 105#define instruction_pointer(regs) ((regs)->pc)
106#define user_stack_pointer(regs) ((regs)->usp)
104#define profile_pc(regs) instruction_pointer(regs) 107#define profile_pc(regs) instruction_pointer(regs)
105extern void show_regs(struct pt_regs *); 108extern void show_regs(struct pt_regs *);
106 109
110#define arch_has_single_step() (1)
111extern void user_enable_single_step(struct task_struct *child);
112extern void user_disable_single_step(struct task_struct *child);
113/* common code demands this function */
114#define ptrace_disable(child) user_disable_single_step(child)
115
116/*
117 * Get the address of the live pt_regs for the specified task.
118 * These are saved onto the top kernel stack when the process
119 * is not running.
120 *
121 * Note: if a user thread is execve'd from kernel space, the
122 * kernel stack will not be empty on entry to the kernel, so
123 * ptracing these tasks will fail.
124 */
125#define task_pt_regs(task) \
126 (struct pt_regs *) \
127 ((unsigned long)task_stack_page(task) + \
128 (THREAD_SIZE - sizeof(struct pt_regs)))
129
107#endif /* __KERNEL__ */ 130#endif /* __KERNEL__ */
108 131
109#endif /* __ASSEMBLY__ */ 132#endif /* __ASSEMBLY__ */
@@ -173,4 +196,6 @@ extern void show_regs(struct pt_regs *);
173#define PT_FDPIC_EXEC 232 196#define PT_FDPIC_EXEC 232
174#define PT_FDPIC_INTERP 236 197#define PT_FDPIC_INTERP 236
175 198
199#define PT_LAST_PSEUDO PT_FDPIC_INTERP
200
176#endif /* _BFIN_PTRACE_H */ 201#endif /* _BFIN_PTRACE_H */
diff --git a/arch/blackfin/include/asm/sections.h b/arch/blackfin/include/asm/sections.h
index 42f6c53c59c6..14a3e66d9167 100644
--- a/arch/blackfin/include/asm/sections.h
+++ b/arch/blackfin/include/asm/sections.h
@@ -21,6 +21,9 @@ extern unsigned long memory_start, memory_end, physical_mem_end;
21extern char _stext_l1[], _etext_l1[], _text_l1_lma[], __weak _text_l1_len[]; 21extern char _stext_l1[], _etext_l1[], _text_l1_lma[], __weak _text_l1_len[];
22extern char _sdata_l1[], _edata_l1[], _sbss_l1[], _ebss_l1[], 22extern char _sdata_l1[], _edata_l1[], _sbss_l1[], _ebss_l1[],
23 _data_l1_lma[], __weak _data_l1_len[]; 23 _data_l1_lma[], __weak _data_l1_len[];
24#ifdef CONFIG_ROMKERNEL
25extern char _data_lma[], _data_len[], _sinitdata[], _einitdata[], _init_data_lma[], _init_data_len[];
26#endif
24extern char _sdata_b_l1[], _edata_b_l1[], _sbss_b_l1[], _ebss_b_l1[], 27extern char _sdata_b_l1[], _edata_b_l1[], _sbss_b_l1[], _ebss_b_l1[],
25 _data_b_l1_lma[], __weak _data_b_l1_len[]; 28 _data_b_l1_lma[], __weak _data_b_l1_len[];
26extern char _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], 29extern char _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[],
diff --git a/arch/blackfin/include/asm/smp.h b/arch/blackfin/include/asm/smp.h
index 6a0fe94b84a6..f5b537967116 100644
--- a/arch/blackfin/include/asm/smp.h
+++ b/arch/blackfin/include/asm/smp.h
@@ -22,8 +22,23 @@ extern char coreb_trampoline_start, coreb_trampoline_end;
22struct corelock_slot { 22struct corelock_slot {
23 int lock; 23 int lock;
24}; 24};
25extern struct corelock_slot corelock;
26
27#ifdef __ARCH_SYNC_CORE_ICACHE
28extern unsigned long icache_invld_count[NR_CPUS];
29#endif
30#ifdef __ARCH_SYNC_CORE_DCACHE
31extern unsigned long dcache_invld_count[NR_CPUS];
32#endif
25 33
26void smp_icache_flush_range_others(unsigned long start, 34void smp_icache_flush_range_others(unsigned long start,
27 unsigned long end); 35 unsigned long end);
36#ifdef CONFIG_HOTPLUG_CPU
37void coreb_sleep(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2);
38void cpu_die(void);
39void platform_cpu_die(void);
40int __cpu_disable(void);
41int __cpu_die(unsigned int cpu);
42#endif
28 43
29#endif /* !__ASM_BLACKFIN_SMP_H */ 44#endif /* !__ASM_BLACKFIN_SMP_H */
diff --git a/arch/blackfin/include/asm/syscall.h b/arch/blackfin/include/asm/syscall.h
new file mode 100644
index 000000000000..4921a4815cce
--- /dev/null
+++ b/arch/blackfin/include/asm/syscall.h
@@ -0,0 +1,96 @@
1/*
2 * Magic syscall break down functions
3 *
4 * Copyright 2010 Analog Devices Inc.
5 *
6 * Licensed under the GPL-2 or later.
7 */
8
9#ifndef __ASM_BLACKFIN_SYSCALL_H__
10#define __ASM_BLACKFIN_SYSCALL_H__
11
12/*
13 * Blackfin syscalls are simple:
14 * enter:
15 * p0: syscall number
16 * r{0,1,2,3,4,5}: syscall args 0,1,2,3,4,5
17 * exit:
18 * r0: return/error value
19 */
20
21#include <linux/err.h>
22#include <linux/sched.h>
23#include <asm/ptrace.h>
24
25static inline long
26syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
27{
28 return regs->p0;
29}
30
31static inline void
32syscall_rollback(struct task_struct *task, struct pt_regs *regs)
33{
34 regs->p0 = regs->orig_p0;
35}
36
37static inline long
38syscall_get_error(struct task_struct *task, struct pt_regs *regs)
39{
40 return IS_ERR_VALUE(regs->r0) ? regs->r0 : 0;
41}
42
43static inline long
44syscall_get_return_value(struct task_struct *task, struct pt_regs *regs)
45{
46 return regs->r0;
47}
48
49static inline void
50syscall_set_return_value(struct task_struct *task, struct pt_regs *regs,
51 int error, long val)
52{
53 regs->r0 = error ? -error : val;
54}
55
56/**
57 * syscall_get_arguments()
58 * @task: unused
59 * @regs: the register layout to extract syscall arguments from
60 * @i: first syscall argument to extract
61 * @n: number of syscall arguments to extract
62 * @args: array to return the syscall arguments in
63 *
64 * args[0] gets i'th argument, args[n - 1] gets the i+n-1'th argument
65 */
66static inline void
67syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
68 unsigned int i, unsigned int n, unsigned long *args)
69{
70 /*
71 * Assume the ptrace layout doesn't change -- r5 is first in memory,
72 * then r4, ..., then r0. So we simply reverse the ptrace register
73 * array in memory to store into the args array.
74 */
75 long *aregs = &regs->r0 - i;
76
77 BUG_ON(i > 5 || i + n > 6);
78
79 while (n--)
80 *args++ = *aregs--;
81}
82
83/* See syscall_get_arguments() comments */
84static inline void
85syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
86 unsigned int i, unsigned int n, const unsigned long *args)
87{
88 long *aregs = &regs->r0 - i;
89
90 BUG_ON(i > 5 || i + n > 6);
91
92 while (n--)
93 *aregs-- = *args++;
94}
95
96#endif
diff --git a/arch/blackfin/include/asm/thread_info.h b/arch/blackfin/include/asm/thread_info.h
index a40d9368c38a..e9a5614cdbb1 100644
--- a/arch/blackfin/include/asm/thread_info.h
+++ b/arch/blackfin/include/asm/thread_info.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright 2004-2009 Analog Devices Inc. 2 * Copyright 2004-2010 Analog Devices Inc.
3 * 3 *
4 * Licensed under the GPL-2 or later. 4 * Licensed under the GPL-2 or later.
5 */ 5 */
@@ -17,7 +17,7 @@
17/* Thread Align Mask to reach to the top of the stack 17/* Thread Align Mask to reach to the top of the stack
18 * for any process 18 * for any process
19 */ 19 */
20#define ALIGN_PAGE_MASK 0xffffe000 20#define ALIGN_PAGE_MASK 0xffffe000
21 21
22/* 22/*
23 * Size of kernel stack for each process. This must be a power of 2... 23 * Size of kernel stack for each process. This must be a power of 2...
@@ -57,7 +57,7 @@ struct thread_info {
57 .exec_domain = &default_exec_domain, \ 57 .exec_domain = &default_exec_domain, \
58 .flags = 0, \ 58 .flags = 0, \
59 .cpu = 0, \ 59 .cpu = 0, \
60 .preempt_count = INIT_PREEMPT_COUNT, \ 60 .preempt_count = INIT_PREEMPT_COUNT, \
61 .restart_block = { \ 61 .restart_block = { \
62 .fn = do_no_restart_syscall, \ 62 .fn = do_no_restart_syscall, \
63 }, \ 63 }, \
@@ -73,8 +73,7 @@ __attribute_const__
73static inline struct thread_info *current_thread_info(void) 73static inline struct thread_info *current_thread_info(void)
74{ 74{
75 struct thread_info *ti; 75 struct thread_info *ti;
76 __asm__("%0 = sp;" : "=da"(ti) : 76 __asm__("%0 = sp;" : "=da"(ti));
77 );
78 return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1)); 77 return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1));
79} 78}
80 79
@@ -99,21 +98,23 @@ static inline struct thread_info *current_thread_info(void)
99#define TIF_NEED_RESCHED 2 /* rescheduling necessary */ 98#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
100#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling 99#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling
101 TIF_NEED_RESCHED */ 100 TIF_NEED_RESCHED */
102#define TIF_MEMDIE 4 101#define TIF_MEMDIE 4
103#define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */ 102#define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
104#define TIF_FREEZE 6 /* is freezing for suspend */ 103#define TIF_FREEZE 6 /* is freezing for suspend */
105#define TIF_IRQ_SYNC 7 /* sync pipeline stage */ 104#define TIF_IRQ_SYNC 7 /* sync pipeline stage */
106#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */ 105#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
106#define TIF_SINGLESTEP 9
107 107
108/* as above, but as bit values */ 108/* as above, but as bit values */
109#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 109#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
110#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) 110#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
111#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) 111#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
112#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
113#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 112#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
114#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) 113#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
115#define _TIF_FREEZE (1<<TIF_FREEZE) 114#define _TIF_FREEZE (1<<TIF_FREEZE)
116#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC) 115#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC)
116#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
117#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
117 118
118#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ 119#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
119 120
diff --git a/arch/blackfin/include/asm/time.h b/arch/blackfin/include/asm/time.h
index 589e937ed1eb..9ca7db844d10 100644
--- a/arch/blackfin/include/asm/time.h
+++ b/arch/blackfin/include/asm/time.h
@@ -23,9 +23,7 @@
23 */ 23 */
24 24
25#ifndef CONFIG_CPU_FREQ 25#ifndef CONFIG_CPU_FREQ
26#define TIME_SCALE 1 26# define TIME_SCALE 1
27#define __bfin_cycles_off (0)
28#define __bfin_cycles_mod (0)
29#else 27#else
30/* 28/*
31 * Blackfin CPU frequency scaling supports max Core Clock 1, 1/2 and 1/4 . 29 * Blackfin CPU frequency scaling supports max Core Clock 1, 1/2 and 1/4 .
@@ -33,9 +31,16 @@
33 * adjust the Core Timer Presale Register. This way we don't lose time. 31 * adjust the Core Timer Presale Register. This way we don't lose time.
34 */ 32 */
35#define TIME_SCALE 4 33#define TIME_SCALE 4
34
35# ifdef CONFIG_CYCLES_CLOCKSOURCE
36extern unsigned long long __bfin_cycles_off; 36extern unsigned long long __bfin_cycles_off;
37extern unsigned int __bfin_cycles_mod; 37extern unsigned int __bfin_cycles_mod;
38# endif
39#endif
40
41#if defined(CONFIG_TICKSOURCE_CORETMR)
42extern void bfin_coretmr_init(void);
43extern void bfin_coretmr_clockevent_init(void);
38#endif 44#endif
39 45
40extern void __init setup_core_timer(void);
41#endif 46#endif
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile
index a8ddbc8ed5af..346a421f1562 100644
--- a/arch/blackfin/kernel/Makefile
+++ b/arch/blackfin/kernel/Makefile
@@ -25,6 +25,7 @@ obj-$(CONFIG_CPLB_INFO) += cplbinfo.o
25obj-$(CONFIG_MODULES) += module.o 25obj-$(CONFIG_MODULES) += module.o
26obj-$(CONFIG_KGDB) += kgdb.o 26obj-$(CONFIG_KGDB) += kgdb.o
27obj-$(CONFIG_KGDB_TESTS) += kgdb_test.o 27obj-$(CONFIG_KGDB_TESTS) += kgdb_test.o
28obj-$(CONFIG_NMI_WATCHDOG) += nmi.o
28obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 29obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
29obj-$(CONFIG_EARLY_PRINTK) += shadow_console.o 30obj-$(CONFIG_EARLY_PRINTK) += shadow_console.o
30obj-$(CONFIG_STACKTRACE) += stacktrace.o 31obj-$(CONFIG_STACKTRACE) += stacktrace.o
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 924c00286bab..26403d1c9e65 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -91,7 +91,7 @@ late_initcall(proc_dma_init);
91 */ 91 */
92int request_dma(unsigned int channel, const char *device_id) 92int request_dma(unsigned int channel, const char *device_id)
93{ 93{
94 pr_debug("request_dma() : BEGIN \n"); 94 pr_debug("request_dma() : BEGIN\n");
95 95
96 if (device_id == NULL) 96 if (device_id == NULL)
97 printk(KERN_WARNING "request_dma(%u): no device_id given\n", channel); 97 printk(KERN_WARNING "request_dma(%u): no device_id given\n", channel);
@@ -107,7 +107,7 @@ int request_dma(unsigned int channel, const char *device_id)
107#endif 107#endif
108 108
109 if (atomic_cmpxchg(&dma_ch[channel].chan_status, 0, 1)) { 109 if (atomic_cmpxchg(&dma_ch[channel].chan_status, 0, 1)) {
110 pr_debug("DMA CHANNEL IN USE \n"); 110 pr_debug("DMA CHANNEL IN USE\n");
111 return -EBUSY; 111 return -EBUSY;
112 } 112 }
113 113
@@ -131,7 +131,7 @@ int request_dma(unsigned int channel, const char *device_id)
131 * you have to request DMA, before doing any operations on 131 * you have to request DMA, before doing any operations on
132 * descriptor/channel 132 * descriptor/channel
133 */ 133 */
134 pr_debug("request_dma() : END \n"); 134 pr_debug("request_dma() : END\n");
135 return 0; 135 return 0;
136} 136}
137EXPORT_SYMBOL(request_dma); 137EXPORT_SYMBOL(request_dma);
@@ -171,7 +171,7 @@ static void clear_dma_buffer(unsigned int channel)
171 171
172void free_dma(unsigned int channel) 172void free_dma(unsigned int channel)
173{ 173{
174 pr_debug("freedma() : BEGIN \n"); 174 pr_debug("freedma() : BEGIN\n");
175 BUG_ON(channel >= MAX_DMA_CHANNELS || 175 BUG_ON(channel >= MAX_DMA_CHANNELS ||
176 !atomic_read(&dma_ch[channel].chan_status)); 176 !atomic_read(&dma_ch[channel].chan_status));
177 177
@@ -185,7 +185,7 @@ void free_dma(unsigned int channel)
185 /* Clear the DMA Variable in the Channel */ 185 /* Clear the DMA Variable in the Channel */
186 atomic_set(&dma_ch[channel].chan_status, 0); 186 atomic_set(&dma_ch[channel].chan_status, 0);
187 187
188 pr_debug("freedma() : END \n"); 188 pr_debug("freedma() : END\n");
189} 189}
190EXPORT_SYMBOL(free_dma); 190EXPORT_SYMBOL(free_dma);
191 191
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index a174596cc009..e35e20f00d9b 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -1289,44 +1289,50 @@ __initcall(gpio_register_proc);
1289#endif 1289#endif
1290 1290
1291#ifdef CONFIG_GPIOLIB 1291#ifdef CONFIG_GPIOLIB
1292int bfin_gpiolib_direction_input(struct gpio_chip *chip, unsigned gpio) 1292static int bfin_gpiolib_direction_input(struct gpio_chip *chip, unsigned gpio)
1293{ 1293{
1294 return bfin_gpio_direction_input(gpio); 1294 return bfin_gpio_direction_input(gpio);
1295} 1295}
1296 1296
1297int bfin_gpiolib_direction_output(struct gpio_chip *chip, unsigned gpio, int level) 1297static int bfin_gpiolib_direction_output(struct gpio_chip *chip, unsigned gpio, int level)
1298{ 1298{
1299 return bfin_gpio_direction_output(gpio, level); 1299 return bfin_gpio_direction_output(gpio, level);
1300} 1300}
1301 1301
1302int bfin_gpiolib_get_value(struct gpio_chip *chip, unsigned gpio) 1302static int bfin_gpiolib_get_value(struct gpio_chip *chip, unsigned gpio)
1303{ 1303{
1304 return bfin_gpio_get_value(gpio); 1304 return bfin_gpio_get_value(gpio);
1305} 1305}
1306 1306
1307void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value) 1307static void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value)
1308{ 1308{
1309 return bfin_gpio_set_value(gpio, value); 1309 return bfin_gpio_set_value(gpio, value);
1310} 1310}
1311 1311
1312int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio) 1312static int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio)
1313{ 1313{
1314 return bfin_gpio_request(gpio, chip->label); 1314 return bfin_gpio_request(gpio, chip->label);
1315} 1315}
1316 1316
1317void bfin_gpiolib_gpio_free(struct gpio_chip *chip, unsigned gpio) 1317static void bfin_gpiolib_gpio_free(struct gpio_chip *chip, unsigned gpio)
1318{ 1318{
1319 return bfin_gpio_free(gpio); 1319 return bfin_gpio_free(gpio);
1320} 1320}
1321 1321
1322static int bfin_gpiolib_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
1323{
1324 return gpio + GPIO_IRQ_BASE;
1325}
1326
1322static struct gpio_chip bfin_chip = { 1327static struct gpio_chip bfin_chip = {
1323 .label = "Blackfin-GPIOlib", 1328 .label = "BFIN-GPIO",
1324 .direction_input = bfin_gpiolib_direction_input, 1329 .direction_input = bfin_gpiolib_direction_input,
1325 .get = bfin_gpiolib_get_value, 1330 .get = bfin_gpiolib_get_value,
1326 .direction_output = bfin_gpiolib_direction_output, 1331 .direction_output = bfin_gpiolib_direction_output,
1327 .set = bfin_gpiolib_set_value, 1332 .set = bfin_gpiolib_set_value,
1328 .request = bfin_gpiolib_gpio_request, 1333 .request = bfin_gpiolib_gpio_request,
1329 .free = bfin_gpiolib_gpio_free, 1334 .free = bfin_gpiolib_gpio_free,
1335 .to_irq = bfin_gpiolib_gpio_to_irq,
1330 .base = 0, 1336 .base = 0,
1331 .ngpio = MAX_BLACKFIN_GPIOS, 1337 .ngpio = MAX_BLACKFIN_GPIOS,
1332}; 1338};
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
index 8d42b9e50dfa..30fd6417f069 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
@@ -64,6 +64,15 @@ void __init generate_cplb_tables_cpu(unsigned int cpu)
64 icplb_tbl[cpu][i_i++].data = i_data | (addr == 0 ? CPLB_USER_RD : 0); 64 icplb_tbl[cpu][i_i++].data = i_data | (addr == 0 ? CPLB_USER_RD : 0);
65 } 65 }
66 66
67#ifdef CONFIG_ROMKERNEL
68 /* Cover kernel XIP flash area */
69 addr = CONFIG_ROM_BASE & ~(4 * 1024 * 1024 - 1);
70 dcplb_tbl[cpu][i_d].addr = addr;
71 dcplb_tbl[cpu][i_d++].data = d_data | CPLB_USER_RD;
72 icplb_tbl[cpu][i_i].addr = addr;
73 icplb_tbl[cpu][i_i++].data = i_data | CPLB_USER_RD;
74#endif
75
67 /* Cover L1 memory. One 4M area for code and data each is enough. */ 76 /* Cover L1 memory. One 4M area for code and data each is enough. */
68#if L1_DATA_A_LENGTH > 0 || L1_DATA_B_LENGTH > 0 77#if L1_DATA_A_LENGTH > 0 || L1_DATA_B_LENGTH > 0
69 dcplb_tbl[cpu][i_d].addr = get_l1_data_a_start_cpu(cpu); 78 dcplb_tbl[cpu][i_d].addr = get_l1_data_a_start_cpu(cpu);
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
index 930c01c06813..87b25b1b30ed 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
@@ -31,6 +31,12 @@ int nr_dcplb_miss[NR_CPUS], nr_icplb_miss[NR_CPUS];
31int nr_icplb_supv_miss[NR_CPUS], nr_dcplb_prot[NR_CPUS]; 31int nr_icplb_supv_miss[NR_CPUS], nr_dcplb_prot[NR_CPUS];
32int nr_cplb_flush[NR_CPUS]; 32int nr_cplb_flush[NR_CPUS];
33 33
34#ifdef CONFIG_EXCPT_IRQ_SYSC_L1
35#define MGR_ATTR __attribute__((l1_text))
36#else
37#define MGR_ATTR
38#endif
39
34/* 40/*
35 * Given the contents of the status register, return the index of the 41 * Given the contents of the status register, return the index of the
36 * CPLB that caused the fault. 42 * CPLB that caused the fault.
@@ -59,7 +65,7 @@ static int icplb_rr_index[NR_CPUS], dcplb_rr_index[NR_CPUS];
59/* 65/*
60 * Find an ICPLB entry to be evicted and return its index. 66 * Find an ICPLB entry to be evicted and return its index.
61 */ 67 */
62static int evict_one_icplb(unsigned int cpu) 68MGR_ATTR static int evict_one_icplb(unsigned int cpu)
63{ 69{
64 int i; 70 int i;
65 for (i = first_switched_icplb; i < MAX_CPLBS; i++) 71 for (i = first_switched_icplb; i < MAX_CPLBS; i++)
@@ -74,7 +80,7 @@ static int evict_one_icplb(unsigned int cpu)
74 return i; 80 return i;
75} 81}
76 82
77static int evict_one_dcplb(unsigned int cpu) 83MGR_ATTR static int evict_one_dcplb(unsigned int cpu)
78{ 84{
79 int i; 85 int i;
80 for (i = first_switched_dcplb; i < MAX_CPLBS; i++) 86 for (i = first_switched_dcplb; i < MAX_CPLBS; i++)
@@ -89,7 +95,7 @@ static int evict_one_dcplb(unsigned int cpu)
89 return i; 95 return i;
90} 96}
91 97
92static noinline int dcplb_miss(unsigned int cpu) 98MGR_ATTR static noinline int dcplb_miss(unsigned int cpu)
93{ 99{
94 unsigned long addr = bfin_read_DCPLB_FAULT_ADDR(); 100 unsigned long addr = bfin_read_DCPLB_FAULT_ADDR();
95 int status = bfin_read_DCPLB_STATUS(); 101 int status = bfin_read_DCPLB_STATUS();
@@ -114,10 +120,15 @@ static noinline int dcplb_miss(unsigned int cpu)
114 d_data = L2_DMEMORY; 120 d_data = L2_DMEMORY;
115 } else if (addr >= physical_mem_end) { 121 } else if (addr >= physical_mem_end) {
116 if (addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) { 122 if (addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) {
117 addr &= ~(4 * 1024 * 1024 - 1); 123 mask = current_rwx_mask[cpu];
118 d_data &= ~PAGE_SIZE_4KB; 124 if (mask) {
119 d_data |= PAGE_SIZE_4MB; 125 int page = (addr - (ASYNC_BANK0_BASE - _ramend)) >> PAGE_SHIFT;
120 d_data |= CPLB_USER_RD | CPLB_USER_WR; 126 int idx = page >> 5;
127 int bit = 1 << (page & 31);
128
129 if (mask[idx] & bit)
130 d_data |= CPLB_USER_RD;
131 }
121 } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH 132 } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH
122 && (status & (FAULT_RW | FAULT_USERSUPV)) == FAULT_USERSUPV) { 133 && (status & (FAULT_RW | FAULT_USERSUPV)) == FAULT_USERSUPV) {
123 addr &= ~(1 * 1024 * 1024 - 1); 134 addr &= ~(1 * 1024 * 1024 - 1);
@@ -126,7 +137,9 @@ static noinline int dcplb_miss(unsigned int cpu)
126 } else 137 } else
127 return CPLB_PROT_VIOL; 138 return CPLB_PROT_VIOL;
128 } else if (addr >= _ramend) { 139 } else if (addr >= _ramend) {
129 d_data |= CPLB_USER_RD | CPLB_USER_WR; 140 d_data |= CPLB_USER_RD | CPLB_USER_WR;
141 if (reserved_mem_dcache_on)
142 d_data |= CPLB_L1_CHBL;
130 } else { 143 } else {
131 mask = current_rwx_mask[cpu]; 144 mask = current_rwx_mask[cpu];
132 if (mask) { 145 if (mask) {
@@ -156,7 +169,7 @@ static noinline int dcplb_miss(unsigned int cpu)
156 return 0; 169 return 0;
157} 170}
158 171
159static noinline int icplb_miss(unsigned int cpu) 172MGR_ATTR static noinline int icplb_miss(unsigned int cpu)
160{ 173{
161 unsigned long addr = bfin_read_ICPLB_FAULT_ADDR(); 174 unsigned long addr = bfin_read_ICPLB_FAULT_ADDR();
162 int status = bfin_read_ICPLB_STATUS(); 175 int status = bfin_read_ICPLB_STATUS();
@@ -204,10 +217,19 @@ static noinline int icplb_miss(unsigned int cpu)
204 i_data = L2_IMEMORY; 217 i_data = L2_IMEMORY;
205 } else if (addr >= physical_mem_end) { 218 } else if (addr >= physical_mem_end) {
206 if (addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) { 219 if (addr >= ASYNC_BANK0_BASE && addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) {
207 addr &= ~(4 * 1024 * 1024 - 1); 220 if (!(status & FAULT_USERSUPV)) {
208 i_data &= ~PAGE_SIZE_4KB; 221 unsigned long *mask = current_rwx_mask[cpu];
209 i_data |= PAGE_SIZE_4MB; 222
210 i_data |= CPLB_USER_RD; 223 if (mask) {
224 int page = (addr - (ASYNC_BANK0_BASE - _ramend)) >> PAGE_SHIFT;
225 int idx = page >> 5;
226 int bit = 1 << (page & 31);
227
228 mask += 2 * page_mask_nelts;
229 if (mask[idx] & bit)
230 i_data |= CPLB_USER_RD;
231 }
232 }
211 } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH 233 } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH
212 && (status & FAULT_USERSUPV)) { 234 && (status & FAULT_USERSUPV)) {
213 addr &= ~(1 * 1024 * 1024 - 1); 235 addr &= ~(1 * 1024 * 1024 - 1);
@@ -217,6 +239,8 @@ static noinline int icplb_miss(unsigned int cpu)
217 return CPLB_PROT_VIOL; 239 return CPLB_PROT_VIOL;
218 } else if (addr >= _ramend) { 240 } else if (addr >= _ramend) {
219 i_data |= CPLB_USER_RD; 241 i_data |= CPLB_USER_RD;
242 if (reserved_mem_icache_on)
243 i_data |= CPLB_L1_CHBL;
220 } else { 244 } else {
221 /* 245 /*
222 * Two cases to distinguish - a supervisor access must 246 * Two cases to distinguish - a supervisor access must
@@ -251,7 +275,7 @@ static noinline int icplb_miss(unsigned int cpu)
251 return 0; 275 return 0;
252} 276}
253 277
254static noinline int dcplb_protection_fault(unsigned int cpu) 278MGR_ATTR static noinline int dcplb_protection_fault(unsigned int cpu)
255{ 279{
256 int status = bfin_read_DCPLB_STATUS(); 280 int status = bfin_read_DCPLB_STATUS();
257 281
@@ -271,7 +295,7 @@ static noinline int dcplb_protection_fault(unsigned int cpu)
271 return CPLB_PROT_VIOL; 295 return CPLB_PROT_VIOL;
272} 296}
273 297
274int cplb_hdr(int seqstat, struct pt_regs *regs) 298MGR_ATTR int cplb_hdr(int seqstat, struct pt_regs *regs)
275{ 299{
276 int cause = seqstat & 0x3f; 300 int cause = seqstat & 0x3f;
277 unsigned int cpu = raw_smp_processor_id(); 301 unsigned int cpu = raw_smp_processor_id();
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinit.c b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
index 282a7919821b..bfe75af4e8bd 100644
--- a/arch/blackfin/kernel/cplb-nompu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-nompu/cplbinit.c
@@ -56,6 +56,15 @@ void __init generate_cplb_tables_cpu(unsigned int cpu)
56 i_tbl[i_i++].data = SDRAM_IGENERIC | PAGE_SIZE_4MB; 56 i_tbl[i_i++].data = SDRAM_IGENERIC | PAGE_SIZE_4MB;
57 } 57 }
58 58
59#ifdef CONFIG_ROMKERNEL
60 /* Cover kernel XIP flash area */
61 addr = CONFIG_ROM_BASE & ~(4 * 1024 * 1024 - 1);
62 d_tbl[i_d].addr = addr;
63 d_tbl[i_d++].data = SDRAM_DGENERIC | PAGE_SIZE_4MB;
64 i_tbl[i_i].addr = addr;
65 i_tbl[i_i++].data = SDRAM_IGENERIC | PAGE_SIZE_4MB;
66#endif
67
59 /* Cover L1 memory. One 4M area for code and data each is enough. */ 68 /* Cover L1 memory. One 4M area for code and data each is enough. */
60 if (cpu == 0) { 69 if (cpu == 0) {
61 if (L1_DATA_A_LENGTH || L1_DATA_B_LENGTH) { 70 if (L1_DATA_A_LENGTH || L1_DATA_B_LENGTH) {
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c
index e937f323d82c..04ddcfeb7981 100644
--- a/arch/blackfin/kernel/dma-mapping.c
+++ b/arch/blackfin/kernel/dma-mapping.c
@@ -116,7 +116,7 @@ EXPORT_SYMBOL(dma_free_coherent);
116void __dma_sync(dma_addr_t addr, size_t size, 116void __dma_sync(dma_addr_t addr, size_t size,
117 enum dma_data_direction dir) 117 enum dma_data_direction dir)
118{ 118{
119 _dma_sync(addr, size, dir); 119 __dma_sync_inline(addr, size, dir);
120} 120}
121EXPORT_SYMBOL(__dma_sync); 121EXPORT_SYMBOL(__dma_sync);
122 122
diff --git a/arch/blackfin/kernel/entry.S b/arch/blackfin/kernel/entry.S
index f27dc2292e1b..686478f5f66b 100644
--- a/arch/blackfin/kernel/entry.S
+++ b/arch/blackfin/kernel/entry.S
@@ -44,7 +44,7 @@ ENTRY(_ret_from_fork)
44 sti r4; 44 sti r4;
45#endif /* CONFIG_IPIPE */ 45#endif /* CONFIG_IPIPE */
46 SP += -12; 46 SP += -12;
47 call _schedule_tail; 47 pseudo_long_call _schedule_tail, p5;
48 SP += 12; 48 SP += 12;
49 r0 = [sp + PT_IPEND]; 49 r0 = [sp + PT_IPEND];
50 cc = bittst(r0,1); 50 cc = bittst(r0,1);
@@ -79,7 +79,7 @@ ENTRY(_sys_vfork)
79 r0 += 24; 79 r0 += 24;
80 [--sp] = rets; 80 [--sp] = rets;
81 SP += -12; 81 SP += -12;
82 call _bfin_vfork; 82 pseudo_long_call _bfin_vfork, p2;
83 SP += 12; 83 SP += 12;
84 rets = [sp++]; 84 rets = [sp++];
85 rts; 85 rts;
@@ -90,7 +90,7 @@ ENTRY(_sys_clone)
90 r0 += 24; 90 r0 += 24;
91 [--sp] = rets; 91 [--sp] = rets;
92 SP += -12; 92 SP += -12;
93 call _bfin_clone; 93 pseudo_long_call _bfin_clone, p2;
94 SP += 12; 94 SP += 12;
95 rets = [sp++]; 95 rets = [sp++];
96 rts; 96 rts;
@@ -101,7 +101,7 @@ ENTRY(_sys_rt_sigreturn)
101 r0 += 24; 101 r0 += 24;
102 [--sp] = rets; 102 [--sp] = rets;
103 SP += -12; 103 SP += -12;
104 call _do_rt_sigreturn; 104 pseudo_long_call _do_rt_sigreturn, p2;
105 SP += 12; 105 SP += 12;
106 rets = [sp++]; 106 rets = [sp++];
107 rts; 107 rts;
diff --git a/arch/blackfin/kernel/ftrace-entry.S b/arch/blackfin/kernel/ftrace-entry.S
index 76dd4fbcd17a..d66446b572c0 100644
--- a/arch/blackfin/kernel/ftrace-entry.S
+++ b/arch/blackfin/kernel/ftrace-entry.S
@@ -1,7 +1,7 @@
1/* 1/*
2 * mcount and friends -- ftrace stuff 2 * mcount and friends -- ftrace stuff
3 * 3 *
4 * Copyright (C) 2009 Analog Devices Inc. 4 * Copyright (C) 2009-2010 Analog Devices Inc.
5 * Licensed under the GPL-2 or later. 5 * Licensed under the GPL-2 or later.
6 */ 6 */
7 7
@@ -21,6 +21,15 @@
21 * function will be waiting there. mmmm pie. 21 * function will be waiting there. mmmm pie.
22 */ 22 */
23ENTRY(__mcount) 23ENTRY(__mcount)
24#ifdef CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST
25 /* optional micro optimization: return if stopped */
26 p1.l = _function_trace_stop;
27 p1.h = _function_trace_stop;
28 r3 = [p1];
29 cc = r3 == 0;
30 if ! cc jump _ftrace_stub (bp);
31#endif
32
24 /* save third function arg early so we can do testing below */ 33 /* save third function arg early so we can do testing below */
25 [--sp] = r2; 34 [--sp] = r2;
26 35
@@ -106,9 +115,12 @@ ENTRY(_ftrace_graph_caller)
106 [--sp] = r1; 115 [--sp] = r1;
107 [--sp] = rets; 116 [--sp] = rets;
108 117
109 /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */ 118 /* prepare_ftrace_return(parent, self_addr, frame_pointer) */
110 r0 = sp; 119 r0 = sp; /* unsigned long *parent */
111 r1 = rets; 120 r1 = rets; /* unsigned long self_addr */
121#ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST
122 r2 = fp; /* unsigned long frame_pointer */
123#endif
112 r0 += 16; /* skip the 4 local regs on stack */ 124 r0 += 16; /* skip the 4 local regs on stack */
113 r1 += -MCOUNT_INSN_SIZE; 125 r1 += -MCOUNT_INSN_SIZE;
114 call _prepare_ftrace_return; 126 call _prepare_ftrace_return;
@@ -127,6 +139,9 @@ ENTRY(_return_to_handler)
127 [--sp] = r1; 139 [--sp] = r1;
128 140
129 /* get original return address */ 141 /* get original return address */
142#ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST
143 r0 = fp; /* Blackfin is sane, so omit this */
144#endif
130 call _ftrace_return_to_handler; 145 call _ftrace_return_to_handler;
131 rets = r0; 146 rets = r0;
132 147
diff --git a/arch/blackfin/kernel/ftrace.c b/arch/blackfin/kernel/ftrace.c
index f2c85ac6f2da..a61d948ea925 100644
--- a/arch/blackfin/kernel/ftrace.c
+++ b/arch/blackfin/kernel/ftrace.c
@@ -16,7 +16,8 @@
16 * Hook the return address and push it in the stack of return addrs 16 * Hook the return address and push it in the stack of return addrs
17 * in current thread info. 17 * in current thread info.
18 */ 18 */
19void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) 19void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
20 unsigned long frame_pointer)
20{ 21{
21 struct ftrace_graph_ent trace; 22 struct ftrace_graph_ent trace;
22 unsigned long return_hooker = (unsigned long)&return_to_handler; 23 unsigned long return_hooker = (unsigned long)&return_to_handler;
@@ -24,7 +25,8 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr)
24 if (unlikely(atomic_read(&current->tracing_graph_pause))) 25 if (unlikely(atomic_read(&current->tracing_graph_pause)))
25 return; 26 return;
26 27
27 if (ftrace_push_return_trace(*parent, self_addr, &trace.depth, 0) == -EBUSY) 28 if (ftrace_push_return_trace(*parent, self_addr, &trace.depth,
29 frame_pointer) == -EBUSY)
28 return; 30 return;
29 31
30 trace.func = self_addr; 32 trace.func = self_addr;
diff --git a/arch/blackfin/kernel/init_task.c b/arch/blackfin/kernel/init_task.c
index 118c5b9dedac..d3970e8acd1a 100644
--- a/arch/blackfin/kernel/init_task.c
+++ b/arch/blackfin/kernel/init_task.c
@@ -28,5 +28,5 @@ EXPORT_SYMBOL(init_task);
28 * "init_task" linker map entry. 28 * "init_task" linker map entry.
29 */ 29 */
30union thread_union init_thread_union 30union thread_union init_thread_union
31 __attribute__ ((__section__(".init_task.data"))) = { 31 __init_task_data = {
32INIT_THREAD_INFO(init_task)}; 32INIT_THREAD_INFO(init_task)};
diff --git a/arch/blackfin/kernel/ipipe.c b/arch/blackfin/kernel/ipipe.c
index a77307a4473b..1a496cd71ba2 100644
--- a/arch/blackfin/kernel/ipipe.c
+++ b/arch/blackfin/kernel/ipipe.c
@@ -27,7 +27,6 @@
27#include <linux/interrupt.h> 27#include <linux/interrupt.h>
28#include <linux/percpu.h> 28#include <linux/percpu.h>
29#include <linux/bitops.h> 29#include <linux/bitops.h>
30#include <linux/slab.h>
31#include <linux/errno.h> 30#include <linux/errno.h>
32#include <linux/kthread.h> 31#include <linux/kthread.h>
33#include <linux/unistd.h> 32#include <linux/unistd.h>
diff --git a/arch/blackfin/kernel/kgdb.c b/arch/blackfin/kernel/kgdb.c
index 34c7c3ed2c9c..2c501ceb1e55 100644
--- a/arch/blackfin/kernel/kgdb.c
+++ b/arch/blackfin/kernel/kgdb.c
@@ -145,7 +145,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
145#endif 145#endif
146} 146}
147 147
148struct hw_breakpoint { 148static struct hw_breakpoint {
149 unsigned int occupied:1; 149 unsigned int occupied:1;
150 unsigned int skip:1; 150 unsigned int skip:1;
151 unsigned int enabled:1; 151 unsigned int enabled:1;
@@ -155,7 +155,7 @@ struct hw_breakpoint {
155 unsigned int addr; 155 unsigned int addr;
156} breakinfo[HW_WATCHPOINT_NUM]; 156} breakinfo[HW_WATCHPOINT_NUM];
157 157
158int bfin_set_hw_break(unsigned long addr, int len, enum kgdb_bptype type) 158static int bfin_set_hw_break(unsigned long addr, int len, enum kgdb_bptype type)
159{ 159{
160 int breakno; 160 int breakno;
161 int bfin_type; 161 int bfin_type;
@@ -202,7 +202,7 @@ int bfin_set_hw_break(unsigned long addr, int len, enum kgdb_bptype type)
202 return -ENOSPC; 202 return -ENOSPC;
203} 203}
204 204
205int bfin_remove_hw_break(unsigned long addr, int len, enum kgdb_bptype type) 205static int bfin_remove_hw_break(unsigned long addr, int len, enum kgdb_bptype type)
206{ 206{
207 int breakno; 207 int breakno;
208 int bfin_type; 208 int bfin_type;
@@ -230,7 +230,7 @@ int bfin_remove_hw_break(unsigned long addr, int len, enum kgdb_bptype type)
230 return 0; 230 return 0;
231} 231}
232 232
233void bfin_remove_all_hw_break(void) 233static void bfin_remove_all_hw_break(void)
234{ 234{
235 int breakno; 235 int breakno;
236 236
@@ -242,7 +242,7 @@ void bfin_remove_all_hw_break(void)
242 breakinfo[breakno].type = TYPE_DATA_WATCHPOINT; 242 breakinfo[breakno].type = TYPE_DATA_WATCHPOINT;
243} 243}
244 244
245void bfin_correct_hw_break(void) 245static void bfin_correct_hw_break(void)
246{ 246{
247 int breakno; 247 int breakno;
248 unsigned int wpiactl = 0; 248 unsigned int wpiactl = 0;
diff --git a/arch/blackfin/kernel/nmi.c b/arch/blackfin/kernel/nmi.c
new file mode 100644
index 000000000000..0b5f72f17fd0
--- /dev/null
+++ b/arch/blackfin/kernel/nmi.c
@@ -0,0 +1,299 @@
1/*
2 * Blackfin nmi_watchdog Driver
3 *
4 * Originally based on bfin_wdt.c
5 * Copyright 2010-2010 Analog Devices Inc.
6 * Graff Yang <graf.yang@analog.com>
7 *
8 * Enter bugs at http://blackfin.uclinux.org/
9 *
10 * Licensed under the GPL-2 or later.
11 */
12
13#include <linux/bitops.h>
14#include <linux/hardirq.h>
15#include <linux/sysdev.h>
16#include <linux/pm.h>
17#include <linux/nmi.h>
18#include <linux/smp.h>
19#include <linux/timer.h>
20#include <asm/blackfin.h>
21#include <asm/atomic.h>
22#include <asm/cacheflush.h>
23#include <asm/bfin_watchdog.h>
24
25#define DRV_NAME "nmi-wdt"
26
27#define NMI_WDT_TIMEOUT 5 /* 5 seconds */
28#define NMI_CHECK_TIMEOUT (4 * HZ) /* 4 seconds in jiffies */
29static int nmi_wdt_cpu = 1;
30
31static unsigned int timeout = NMI_WDT_TIMEOUT;
32static int nmi_active;
33
34static unsigned short wdoga_ctl;
35static unsigned int wdoga_cnt;
36static struct corelock_slot saved_corelock;
37static atomic_t nmi_touched[NR_CPUS];
38static struct timer_list ntimer;
39
40enum {
41 COREA_ENTER_NMI = 0,
42 COREA_EXIT_NMI,
43 COREB_EXIT_NMI,
44
45 NMI_EVENT_NR,
46};
47static unsigned long nmi_event __attribute__ ((__section__(".l2.bss")));
48
49/* we are in nmi, non-atomic bit ops is safe */
50static inline void set_nmi_event(int event)
51{
52 __set_bit(event, &nmi_event);
53}
54
55static inline void wait_nmi_event(int event)
56{
57 while (!test_bit(event, &nmi_event))
58 barrier();
59 __clear_bit(event, &nmi_event);
60}
61
62static inline void send_corea_nmi(void)
63{
64 wdoga_ctl = bfin_read_WDOGA_CTL();
65 wdoga_cnt = bfin_read_WDOGA_CNT();
66
67 bfin_write_WDOGA_CTL(WDEN_DISABLE);
68 bfin_write_WDOGA_CNT(0);
69 bfin_write_WDOGA_CTL(WDEN_ENABLE | ICTL_NMI);
70}
71
72static inline void restore_corea_nmi(void)
73{
74 bfin_write_WDOGA_CTL(WDEN_DISABLE);
75 bfin_write_WDOGA_CTL(WDOG_EXPIRED | WDEN_DISABLE | ICTL_NONE);
76
77 bfin_write_WDOGA_CNT(wdoga_cnt);
78 bfin_write_WDOGA_CTL(wdoga_ctl);
79}
80
81static inline void save_corelock(void)
82{
83 saved_corelock = corelock;
84 corelock.lock = 0;
85}
86
87static inline void restore_corelock(void)
88{
89 corelock = saved_corelock;
90}
91
92
93static inline void nmi_wdt_keepalive(void)
94{
95 bfin_write_WDOGB_STAT(0);
96}
97
98static inline void nmi_wdt_stop(void)
99{
100 bfin_write_WDOGB_CTL(WDEN_DISABLE);
101}
102
103/* before calling this function, you must stop the WDT */
104static inline void nmi_wdt_clear(void)
105{
106 /* clear TRO bit, disable event generation */
107 bfin_write_WDOGB_CTL(WDOG_EXPIRED | WDEN_DISABLE | ICTL_NONE);
108}
109
110static inline void nmi_wdt_start(void)
111{
112 bfin_write_WDOGB_CTL(WDEN_ENABLE | ICTL_NMI);
113}
114
115static inline int nmi_wdt_running(void)
116{
117 return ((bfin_read_WDOGB_CTL() & WDEN_MASK) != WDEN_DISABLE);
118}
119
120static inline int nmi_wdt_set_timeout(unsigned long t)
121{
122 u32 cnt, max_t, sclk;
123 int run;
124
125 sclk = get_sclk();
126 max_t = -1 / sclk;
127 cnt = t * sclk;
128 if (t > max_t) {
129 pr_warning("NMI: timeout value is too large\n");
130 return -EINVAL;
131 }
132
133 run = nmi_wdt_running();
134 nmi_wdt_stop();
135 bfin_write_WDOGB_CNT(cnt);
136 if (run)
137 nmi_wdt_start();
138
139 timeout = t;
140
141 return 0;
142}
143
144int check_nmi_wdt_touched(void)
145{
146 unsigned int this_cpu = smp_processor_id();
147 unsigned int cpu;
148
149 cpumask_t mask = cpu_online_map;
150
151 if (!atomic_read(&nmi_touched[this_cpu]))
152 return 0;
153
154 atomic_set(&nmi_touched[this_cpu], 0);
155
156 cpu_clear(this_cpu, mask);
157 for_each_cpu_mask(cpu, mask) {
158 invalidate_dcache_range((unsigned long)(&nmi_touched[cpu]),
159 (unsigned long)(&nmi_touched[cpu]));
160 if (!atomic_read(&nmi_touched[cpu]))
161 return 0;
162 atomic_set(&nmi_touched[cpu], 0);
163 }
164
165 return 1;
166}
167
168static void nmi_wdt_timer(unsigned long data)
169{
170 if (check_nmi_wdt_touched())
171 nmi_wdt_keepalive();
172
173 mod_timer(&ntimer, jiffies + NMI_CHECK_TIMEOUT);
174}
175
176static int __init init_nmi_wdt(void)
177{
178 nmi_wdt_set_timeout(timeout);
179 nmi_wdt_start();
180 nmi_active = true;
181
182 init_timer(&ntimer);
183 ntimer.function = nmi_wdt_timer;
184 ntimer.expires = jiffies + NMI_CHECK_TIMEOUT;
185 add_timer(&ntimer);
186
187 pr_info("nmi_wdt: initialized: timeout=%d sec\n", timeout);
188 return 0;
189}
190device_initcall(init_nmi_wdt);
191
192void touch_nmi_watchdog(void)
193{
194 atomic_set(&nmi_touched[smp_processor_id()], 1);
195}
196
197/* Suspend/resume support */
198#ifdef CONFIG_PM
199static int nmi_wdt_suspend(struct sys_device *dev, pm_message_t state)
200{
201 nmi_wdt_stop();
202 return 0;
203}
204
205static int nmi_wdt_resume(struct sys_device *dev)
206{
207 if (nmi_active)
208 nmi_wdt_start();
209 return 0;
210}
211
212static struct sysdev_class nmi_sysclass = {
213 .name = DRV_NAME,
214 .resume = nmi_wdt_resume,
215 .suspend = nmi_wdt_suspend,
216};
217
218static struct sys_device device_nmi_wdt = {
219 .id = 0,
220 .cls = &nmi_sysclass,
221};
222
223static int __init init_nmi_wdt_sysfs(void)
224{
225 int error;
226
227 if (!nmi_active)
228 return 0;
229
230 error = sysdev_class_register(&nmi_sysclass);
231 if (!error)
232 error = sysdev_register(&device_nmi_wdt);
233 return error;
234}
235late_initcall(init_nmi_wdt_sysfs);
236
237#endif /* CONFIG_PM */
238
239
240asmlinkage notrace void do_nmi(struct pt_regs *fp)
241{
242 unsigned int cpu = smp_processor_id();
243 nmi_enter();
244
245 cpu_pda[cpu].__nmi_count += 1;
246
247 if (cpu == nmi_wdt_cpu) {
248 /* CoreB goes here first */
249
250 /* reload the WDOG_STAT */
251 nmi_wdt_keepalive();
252
253 /* clear nmi interrupt for CoreB */
254 nmi_wdt_stop();
255 nmi_wdt_clear();
256
257 /* trigger NMI interrupt of CoreA */
258 send_corea_nmi();
259
260 /* waiting CoreB to enter NMI */
261 wait_nmi_event(COREA_ENTER_NMI);
262
263 /* recover WDOGA's settings */
264 restore_corea_nmi();
265
266 save_corelock();
267
268 /* corelock is save/cleared, CoreA is dummping messages */
269
270 wait_nmi_event(COREA_EXIT_NMI);
271 } else {
272 /* OK, CoreA entered NMI */
273 set_nmi_event(COREA_ENTER_NMI);
274 }
275
276 pr_emerg("\nNMI Watchdog detected LOCKUP, dump for CPU %d\n", cpu);
277 dump_bfin_process(fp);
278 dump_bfin_mem(fp);
279 show_regs(fp);
280 dump_bfin_trace_buffer();
281 show_stack(current, (unsigned long *)fp);
282
283 if (cpu == nmi_wdt_cpu) {
284 pr_emerg("This fault is not recoverable, sorry!\n");
285
286 /* CoreA dump finished, restore the corelock */
287 restore_corelock();
288
289 set_nmi_event(COREB_EXIT_NMI);
290 } else {
291 /* CoreB dump finished, notice the CoreA we are done */
292 set_nmi_event(COREA_EXIT_NMI);
293
294 /* synchronize with CoreA */
295 wait_nmi_event(COREB_EXIT_NMI);
296 }
297
298 nmi_exit();
299}
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index b56b0e485e0b..93ec07da2e51 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -11,6 +11,7 @@
11#include <linux/unistd.h> 11#include <linux/unistd.h>
12#include <linux/user.h> 12#include <linux/user.h>
13#include <linux/uaccess.h> 13#include <linux/uaccess.h>
14#include <linux/slab.h>
14#include <linux/sched.h> 15#include <linux/sched.h>
15#include <linux/tick.h> 16#include <linux/tick.h>
16#include <linux/fs.h> 17#include <linux/fs.h>
@@ -98,13 +99,6 @@ void cpu_idle(void)
98 } 99 }
99} 100}
100 101
101/* Fill in the fpu structure for a core dump. */
102
103int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpregs)
104{
105 return 1;
106}
107
108/* 102/*
109 * This gets run with P1 containing the 103 * This gets run with P1 containing the
110 * function to call, and R1 containing 104 * function to call, and R1 containing
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c
index 65567dc4b9f5..43eb969405d1 100644
--- a/arch/blackfin/kernel/ptrace.c
+++ b/arch/blackfin/kernel/ptrace.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * linux/kernel/ptrace.c is by Ross Biro 1/23/92, edited by Linus Torvalds 2 * linux/kernel/ptrace.c is by Ross Biro 1/23/92, edited by Linus Torvalds
3 * these modifications are Copyright 2004-2009 Analog Devices Inc. 3 * these modifications are Copyright 2004-2010 Analog Devices Inc.
4 * 4 *
5 * Licensed under the GPL-2 5 * Licensed under the GPL-2
6 */ 6 */
@@ -9,10 +9,13 @@
9#include <linux/sched.h> 9#include <linux/sched.h>
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <linux/elf.h>
12#include <linux/errno.h> 13#include <linux/errno.h>
13#include <linux/ptrace.h> 14#include <linux/ptrace.h>
14#include <linux/user.h> 15#include <linux/user.h>
16#include <linux/regset.h>
15#include <linux/signal.h> 17#include <linux/signal.h>
18#include <linux/tracehook.h>
16#include <linux/uaccess.h> 19#include <linux/uaccess.h>
17 20
18#include <asm/page.h> 21#include <asm/page.h>
@@ -25,90 +28,57 @@
25#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
26#include <asm/mem_map.h> 29#include <asm/mem_map.h>
27 30
28#define TEXT_OFFSET 0
29/* 31/*
30 * does not yet catch signals sent when the child dies. 32 * does not yet catch signals sent when the child dies.
31 * in exit.c or in signal.c. 33 * in exit.c or in signal.c.
32 */ 34 */
33 35
34/* determines which bits in the SYSCFG reg the user has access to. */
35/* 1 = access 0 = no access */
36#define SYSCFG_MASK 0x0007 /* SYSCFG reg */
37/* sets the trace bits. */
38#define TRACE_BITS 0x0001
39
40/* Find the stack offset for a register, relative to thread.esp0. */
41#define PT_REG(reg) ((long)&((struct pt_regs *)0)->reg)
42
43/*
44 * Get the address of the live pt_regs for the specified task.
45 * These are saved onto the top kernel stack when the process
46 * is not running.
47 *
48 * Note: if a user thread is execve'd from kernel space, the
49 * kernel stack will not be empty on entry to the kernel, so
50 * ptracing these tasks will fail.
51 */
52static inline struct pt_regs *get_user_regs(struct task_struct *task)
53{
54 return (struct pt_regs *)
55 ((unsigned long)task_stack_page(task) +
56 (THREAD_SIZE - sizeof(struct pt_regs)));
57}
58
59/*
60 * Get all user integer registers.
61 */
62static inline int ptrace_getregs(struct task_struct *tsk, void __user *uregs)
63{
64 struct pt_regs regs;
65 memcpy(&regs, get_user_regs(tsk), sizeof(regs));
66 regs.usp = tsk->thread.usp;
67 return copy_to_user(uregs, &regs, sizeof(struct pt_regs)) ? -EFAULT : 0;
68}
69
70/* Mapping from PT_xxx to the stack offset at which the register is
71 * saved. Notice that usp has no stack-slot and needs to be treated
72 * specially (see get_reg/put_reg below).
73 */
74
75/* 36/*
76 * Get contents of register REGNO in task TASK. 37 * Get contents of register REGNO in task TASK.
77 */ 38 */
78static inline long get_reg(struct task_struct *task, int regno) 39static inline long
40get_reg(struct task_struct *task, long regno, unsigned long __user *datap)
79{ 41{
80 unsigned char *reg_ptr; 42 long tmp;
43 struct pt_regs *regs = task_pt_regs(task);
81 44
82 struct pt_regs *regs = 45 if (regno & 3 || regno > PT_LAST_PSEUDO || regno < 0)
83 (struct pt_regs *)((unsigned long)task_stack_page(task) + 46 return -EIO;
84 (THREAD_SIZE - sizeof(struct pt_regs)));
85 reg_ptr = (char *)regs;
86 47
87 switch (regno) { 48 switch (regno) {
49 case PT_TEXT_ADDR:
50 tmp = task->mm->start_code;
51 break;
52 case PT_TEXT_END_ADDR:
53 tmp = task->mm->end_code;
54 break;
55 case PT_DATA_ADDR:
56 tmp = task->mm->start_data;
57 break;
88 case PT_USP: 58 case PT_USP:
89 return task->thread.usp; 59 tmp = task->thread.usp;
60 break;
90 default: 61 default:
91 if (regno <= 216) 62 if (regno < sizeof(*regs)) {
92 return *(long *)(reg_ptr + regno); 63 void *reg_ptr = regs;
64 tmp = *(long *)(reg_ptr + regno);
65 } else
66 return -EIO;
93 } 67 }
94 /* slight mystery ... never seems to come here but kernel misbehaves without this code! */
95 68
96 printk(KERN_WARNING "Request to get for unknown register %d\n", regno); 69 return put_user(tmp, datap);
97 return 0;
98} 70}
99 71
100/* 72/*
101 * Write contents of register REGNO in task TASK. 73 * Write contents of register REGNO in task TASK.
102 */ 74 */
103static inline int 75static inline int
104put_reg(struct task_struct *task, int regno, unsigned long data) 76put_reg(struct task_struct *task, long regno, unsigned long data)
105{ 77{
106 char *reg_ptr; 78 struct pt_regs *regs = task_pt_regs(task);
107 79
108 struct pt_regs *regs = 80 if (regno & 3 || regno > PT_LAST_PSEUDO || regno < 0)
109 (struct pt_regs *)((unsigned long)task_stack_page(task) + 81 return -EIO;
110 (THREAD_SIZE - sizeof(struct pt_regs)));
111 reg_ptr = (char *)regs;
112 82
113 switch (regno) { 83 switch (regno) {
114 case PT_PC: 84 case PT_PC:
@@ -125,10 +95,18 @@ put_reg(struct task_struct *task, int regno, unsigned long data)
125 regs->usp = data; 95 regs->usp = data;
126 task->thread.usp = data; 96 task->thread.usp = data;
127 break; 97 break;
98 case PT_SYSCFG: /* don't let userspace screw with this */
99 if ((data & ~1) != 0x6)
100 pr_warning("ptrace: ignore syscfg write of %#lx\n", data);
101 break; /* regs->syscfg = data; break; */
128 default: 102 default:
129 if (regno <= 216) 103 if (regno < sizeof(*regs)) {
130 *(long *)(reg_ptr + regno) = data; 104 void *reg_offset = regs;
105 *(long *)(reg_offset + regno) = data;
106 }
107 /* Ignore writes to pseudo registers */
131 } 108 }
109
132 return 0; 110 return 0;
133} 111}
134 112
@@ -160,24 +138,98 @@ static inline int is_user_addr_valid(struct task_struct *child,
160 return -EIO; 138 return -EIO;
161} 139}
162 140
163void ptrace_enable(struct task_struct *child) 141/*
142 * retrieve the contents of Blackfin userspace general registers
143 */
144static int genregs_get(struct task_struct *target,
145 const struct user_regset *regset,
146 unsigned int pos, unsigned int count,
147 void *kbuf, void __user *ubuf)
164{ 148{
165 unsigned long tmp; 149 struct pt_regs *regs = task_pt_regs(target);
166 tmp = get_reg(child, PT_SYSCFG) | (TRACE_BITS); 150 int ret;
167 put_reg(child, PT_SYSCFG, tmp); 151
152 /* This sucks ... */
153 regs->usp = target->thread.usp;
154
155 ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
156 regs, 0, sizeof(*regs));
157 if (ret < 0)
158 return ret;
159
160 return user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf,
161 sizeof(*regs), -1);
168} 162}
169 163
170/* 164/*
171 * Called by kernel/ptrace.c when detaching.. 165 * update the contents of the Blackfin userspace general registers
172 * 166 */
173 * Make sure the single step bit is not set. 167static int genregs_set(struct task_struct *target,
168 const struct user_regset *regset,
169 unsigned int pos, unsigned int count,
170 const void *kbuf, const void __user *ubuf)
171{
172 struct pt_regs *regs = task_pt_regs(target);
173 int ret;
174
175 /* Don't let people set SYSCFG (it's at the end of pt_regs) */
176 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
177 regs, 0, PT_SYSCFG);
178 if (ret < 0)
179 return ret;
180
181 /* This sucks ... */
182 target->thread.usp = regs->usp;
183 /* regs->retx = regs->pc; */
184
185 return user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
186 PT_SYSCFG, -1);
187}
188
189/*
190 * Define the register sets available on the Blackfin under Linux
174 */ 191 */
175void ptrace_disable(struct task_struct *child) 192enum bfin_regset {
193 REGSET_GENERAL,
194};
195
196static const struct user_regset bfin_regsets[] = {
197 [REGSET_GENERAL] = {
198 .core_note_type = NT_PRSTATUS,
199 .n = sizeof(struct pt_regs) / sizeof(long),
200 .size = sizeof(long),
201 .align = sizeof(long),
202 .get = genregs_get,
203 .set = genregs_set,
204 },
205};
206
207static const struct user_regset_view user_bfin_native_view = {
208 .name = "Blackfin",
209 .e_machine = EM_BLACKFIN,
210 .regsets = bfin_regsets,
211 .n = ARRAY_SIZE(bfin_regsets),
212};
213
214const struct user_regset_view *task_user_regset_view(struct task_struct *task)
215{
216 return &user_bfin_native_view;
217}
218
219void user_enable_single_step(struct task_struct *child)
220{
221 struct pt_regs *regs = task_pt_regs(child);
222 regs->syscfg |= SYSCFG_SSSTEP;
223
224 set_tsk_thread_flag(child, TIF_SINGLESTEP);
225}
226
227void user_disable_single_step(struct task_struct *child)
176{ 228{
177 unsigned long tmp; 229 struct pt_regs *regs = task_pt_regs(child);
178 /* make sure the single step bit is not set. */ 230 regs->syscfg &= ~SYSCFG_SSSTEP;
179 tmp = get_reg(child, PT_SYSCFG) & ~TRACE_BITS; 231
180 put_reg(child, PT_SYSCFG, tmp); 232 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
181} 233}
182 234
183long arch_ptrace(struct task_struct *child, long request, long addr, long data) 235long arch_ptrace(struct task_struct *child, long request, long addr, long data)
@@ -240,40 +292,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
240 break; 292 break;
241 } 293 }
242 294
243 /* read the word at location addr in the USER area. */
244 case PTRACE_PEEKUSR:
245 {
246 unsigned long tmp;
247 ret = -EIO;
248 tmp = 0;
249 if ((addr & 3) || (addr > (sizeof(struct pt_regs) + 16))) {
250 printk(KERN_WARNING "ptrace error : PEEKUSR : temporarily returning "
251 "0 - %x sizeof(pt_regs) is %lx\n",
252 (int)addr, sizeof(struct pt_regs));
253 break;
254 }
255 if (addr == sizeof(struct pt_regs)) {
256 /* PT_TEXT_ADDR */
257 tmp = child->mm->start_code + TEXT_OFFSET;
258 } else if (addr == (sizeof(struct pt_regs) + 4)) {
259 /* PT_TEXT_END_ADDR */
260 tmp = child->mm->end_code;
261 } else if (addr == (sizeof(struct pt_regs) + 8)) {
262 /* PT_DATA_ADDR */
263 tmp = child->mm->start_data;
264#ifdef CONFIG_BINFMT_ELF_FDPIC
265 } else if (addr == (sizeof(struct pt_regs) + 12)) {
266 goto case_PTRACE_GETFDPIC_EXEC;
267 } else if (addr == (sizeof(struct pt_regs) + 16)) {
268 goto case_PTRACE_GETFDPIC_INTERP;
269#endif
270 } else {
271 tmp = get_reg(child, addr);
272 }
273 ret = put_user(tmp, datap);
274 break;
275 }
276
277#ifdef CONFIG_BINFMT_ELF_FDPIC 295#ifdef CONFIG_BINFMT_ELF_FDPIC
278 case PTRACE_GETFDPIC: { 296 case PTRACE_GETFDPIC: {
279 unsigned long tmp = 0; 297 unsigned long tmp = 0;
@@ -336,78 +354,36 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
336 break; 354 break;
337 } 355 }
338 356
339 case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ 357 case PTRACE_PEEKUSR:
340 ret = -EIO; 358 switch (addr) {
341 if ((addr & 3) || (addr > (sizeof(struct pt_regs) + 16))) { 359#ifdef CONFIG_BINFMT_ELF_FDPIC /* backwards compat */
342 printk(KERN_WARNING "ptrace error : POKEUSR: temporarily returning 0\n"); 360 case PT_FDPIC_EXEC: goto case_PTRACE_GETFDPIC_EXEC;
343 break; 361 case PT_FDPIC_INTERP: goto case_PTRACE_GETFDPIC_INTERP;
344 } 362#endif
345 363 default:
346 if (addr >= (sizeof(struct pt_regs))) { 364 ret = get_reg(child, addr, datap);
347 ret = 0;
348 break;
349 }
350 if (addr == PT_SYSCFG) {
351 data &= SYSCFG_MASK;
352 data |= get_reg(child, PT_SYSCFG);
353 } 365 }
354 ret = put_reg(child, addr, data); 366 pr_debug("ptrace: PEEKUSR reg %li with %#lx = %i\n", addr, data, ret);
355 break; 367 break;
356 368
357 case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ 369 case PTRACE_POKEUSR:
358 case PTRACE_CONT: /* restart after signal. */ 370 ret = put_reg(child, addr, data);
359 pr_debug("ptrace: syscall/cont\n"); 371 pr_debug("ptrace: POKEUSR reg %li with %li = %i\n", addr, data, ret);
360
361 ret = -EIO;
362 if (!valid_signal(data))
363 break;
364 if (request == PTRACE_SYSCALL)
365 set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
366 else
367 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
368 child->exit_code = data;
369 ptrace_disable(child);
370 pr_debug("ptrace: before wake_up_process\n");
371 wake_up_process(child);
372 ret = 0;
373 break;
374
375 /*
376 * make the child exit. Best I can do is send it a sigkill.
377 * perhaps it should be put in the status that it wants to
378 * exit.
379 */
380 case PTRACE_KILL:
381 ret = 0;
382 if (child->exit_state == EXIT_ZOMBIE) /* already dead */
383 break;
384 child->exit_code = SIGKILL;
385 ptrace_disable(child);
386 wake_up_process(child);
387 break;
388
389 case PTRACE_SINGLESTEP: /* set the trap flag. */
390 pr_debug("ptrace: single step\n");
391 ret = -EIO;
392 if (!valid_signal(data))
393 break;
394 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
395 ptrace_enable(child);
396 child->exit_code = data;
397 wake_up_process(child);
398 ret = 0;
399 break; 372 break;
400 373
401 case PTRACE_GETREGS: 374 case PTRACE_GETREGS:
402 /* Get all gp regs from the child. */ 375 pr_debug("ptrace: PTRACE_GETREGS\n");
403 ret = ptrace_getregs(child, datap); 376 return copy_regset_to_user(child, &user_bfin_native_view,
404 break; 377 REGSET_GENERAL,
378 0, sizeof(struct pt_regs),
379 (void __user *)data);
405 380
406 case PTRACE_SETREGS: 381 case PTRACE_SETREGS:
407 printk(KERN_WARNING "ptrace: SETREGS: **** NOT IMPLEMENTED ***\n"); 382 pr_debug("ptrace: PTRACE_SETREGS\n");
408 /* Set all gp regs in the child. */ 383 return copy_regset_from_user(child, &user_bfin_native_view,
409 ret = 0; 384 REGSET_GENERAL,
410 break; 385 0, sizeof(struct pt_regs),
386 (const void __user *)data);
411 387
412 default: 388 default:
413 ret = ptrace_request(child, request, addr, data); 389 ret = ptrace_request(child, request, addr, data);
@@ -417,27 +393,21 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
417 return ret; 393 return ret;
418} 394}
419 395
420asmlinkage void syscall_trace(void) 396asmlinkage int syscall_trace_enter(struct pt_regs *regs)
421{ 397{
422 if (!test_thread_flag(TIF_SYSCALL_TRACE)) 398 int ret = 0;
423 return; 399
424 400 if (test_thread_flag(TIF_SYSCALL_TRACE))
425 if (!(current->ptrace & PT_PTRACED)) 401 ret = tracehook_report_syscall_entry(regs);
426 return; 402
427 403 return ret;
428 /* the 0x80 provides a way for the tracing parent to distinguish 404}
429 * between a syscall stop and SIGTRAP delivery 405
430 */ 406asmlinkage void syscall_trace_leave(struct pt_regs *regs)
431 ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) 407{
432 ? 0x80 : 0)); 408 int step;
433 409
434 /* 410 step = test_thread_flag(TIF_SINGLESTEP);
435 * this isn't the same as continuing with a signal, but it will do 411 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
436 * for normal use. strace only continues with a signal if the 412 tracehook_report_syscall_exit(regs, step);
437 * stopping signal is not SIGTRAP. -brl
438 */
439 if (current->exit_code) {
440 send_sig(current->exit_code, current, 1);
441 current->exit_code = 0;
442 }
443} 413}
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index 95448ae9c43a..8e2efceb364b 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -220,6 +220,16 @@ void __init bfin_relocate_l1_mem(void)
220 memcpy(_stext_l2, _l2_lma, l2_len); 220 memcpy(_stext_l2, _l2_lma, l2_len);
221} 221}
222 222
223#ifdef CONFIG_ROMKERNEL
224void __init bfin_relocate_xip_data(void)
225{
226 early_shadow_stamp();
227
228 memcpy(_sdata, _data_lma, (unsigned long)_data_len - THREAD_SIZE + sizeof(struct thread_info));
229 memcpy(_sinitdata, _init_data_lma, (unsigned long)_init_data_len);
230}
231#endif
232
223/* add_memory_region to memmap */ 233/* add_memory_region to memmap */
224static void __init add_memory_region(unsigned long long start, 234static void __init add_memory_region(unsigned long long start,
225 unsigned long long size, int type) 235 unsigned long long size, int type)
@@ -504,7 +514,7 @@ static __init void memory_setup(void)
504#endif 514#endif
505 unsigned long max_mem; 515 unsigned long max_mem;
506 516
507 _rambase = (unsigned long)_stext; 517 _rambase = CONFIG_BOOT_LOAD;
508 _ramstart = (unsigned long)_end; 518 _ramstart = (unsigned long)_end;
509 519
510 if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) { 520 if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) {
@@ -597,7 +607,12 @@ static __init void memory_setup(void)
597 } 607 }
598 608
599#ifdef CONFIG_MPU 609#ifdef CONFIG_MPU
610#if defined(CONFIG_ROMFS_ON_MTD) && defined(CONFIG_MTD_ROM)
611 page_mask_nelts = (((_ramend + ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE -
612 ASYNC_BANK0_BASE) >> PAGE_SHIFT) + 31) / 32;
613#else
600 page_mask_nelts = ((_ramend >> PAGE_SHIFT) + 31) / 32; 614 page_mask_nelts = ((_ramend >> PAGE_SHIFT) + 31) / 32;
615#endif
601 page_mask_order = get_order(3 * page_mask_nelts * sizeof(long)); 616 page_mask_order = get_order(3 * page_mask_nelts * sizeof(long));
602#endif 617#endif
603 618
@@ -630,7 +645,7 @@ static __init void memory_setup(void)
630 __bss_start, __bss_stop, 645 __bss_start, __bss_stop,
631 _sdata, _edata, 646 _sdata, _edata,
632 (void *)&init_thread_union, 647 (void *)&init_thread_union,
633 (void *)((int)(&init_thread_union) + 0x2000), 648 (void *)((int)(&init_thread_union) + THREAD_SIZE),
634 __init_begin, __init_end, 649 __init_begin, __init_end,
635 (void *)_ramstart, (void *)memory_end 650 (void *)_ramstart, (void *)memory_end
636#ifdef CONFIG_MTD_UCLINUX 651#ifdef CONFIG_MTD_UCLINUX
@@ -792,10 +807,17 @@ static inline int __init get_mem_size(void)
792 BUG(); 807 BUG();
793} 808}
794 809
810__attribute__((weak))
811void __init native_machine_early_platform_add_devices(void)
812{
813}
814
795void __init setup_arch(char **cmdline_p) 815void __init setup_arch(char **cmdline_p)
796{ 816{
797 unsigned long sclk, cclk; 817 unsigned long sclk, cclk;
798 818
819 native_machine_early_platform_add_devices();
820
799 enable_shadow_console(); 821 enable_shadow_console();
800 822
801 /* Check to make sure we are running on the right processor */ 823 /* Check to make sure we are running on the right processor */
@@ -1217,10 +1239,10 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1217 dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, 1239 dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS,
1218 BFIN_DLINES); 1240 BFIN_DLINES);
1219#ifdef __ARCH_SYNC_CORE_DCACHE 1241#ifdef __ARCH_SYNC_CORE_DCACHE
1220 seq_printf(m, "SMP Dcache Flushes\t: %lu\n\n", cpudata->dcache_invld_count); 1242 seq_printf(m, "SMP Dcache Flushes\t: %lu\n\n", dcache_invld_count[cpu_num]);
1221#endif 1243#endif
1222#ifdef __ARCH_SYNC_CORE_ICACHE 1244#ifdef __ARCH_SYNC_CORE_ICACHE
1223 seq_printf(m, "SMP Icache Flushes\t: %lu\n\n", cpudata->icache_invld_count); 1245 seq_printf(m, "SMP Icache Flushes\t: %lu\n\n", icache_invld_count[cpu_num]);
1224#endif 1246#endif
1225 1247
1226 if (cpu_num != num_possible_cpus() - 1) 1248 if (cpu_num != num_possible_cpus() - 1)
@@ -1249,8 +1271,8 @@ static int show_cpuinfo(struct seq_file *m, void *v)
1249 seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n", 1271 seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n",
1250 physical_mem_end >> 10, (void *)0, (void *)physical_mem_end); 1272 physical_mem_end >> 10, (void *)0, (void *)physical_mem_end);
1251 seq_printf(m, "kernel memory\t: %d kB (0x%p -> 0x%p)\n", 1273 seq_printf(m, "kernel memory\t: %d kB (0x%p -> 0x%p)\n",
1252 ((int)memory_end - (int)_stext) >> 10, 1274 ((int)memory_end - (int)_rambase) >> 10,
1253 _stext, 1275 (void *)_rambase,
1254 (void *)memory_end); 1276 (void *)memory_end);
1255 seq_printf(m, "\n"); 1277 seq_printf(m, "\n");
1256 1278
diff --git a/arch/blackfin/kernel/signal.c b/arch/blackfin/kernel/signal.c
index e0fd63e9e38a..d536f35d1f43 100644
--- a/arch/blackfin/kernel/signal.c
+++ b/arch/blackfin/kernel/signal.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright 2004-2009 Analog Devices Inc. 2 * Copyright 2004-2010 Analog Devices Inc.
3 * 3 *
4 * Licensed under the GPL-2 or later 4 * Licensed under the GPL-2 or later
5 */ 5 */
@@ -17,6 +17,7 @@
17#include <asm/cacheflush.h> 17#include <asm/cacheflush.h>
18#include <asm/ucontext.h> 18#include <asm/ucontext.h>
19#include <asm/fixed_code.h> 19#include <asm/fixed_code.h>
20#include <asm/syscall.h>
20 21
21#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 22#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
22 23
@@ -50,6 +51,9 @@ rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *p
50 unsigned long usp = 0; 51 unsigned long usp = 0;
51 int err = 0; 52 int err = 0;
52 53
54 /* Always make any pending restarted system calls return -EINTR */
55 current_thread_info()->restart_block.fn = do_no_restart_syscall;
56
53#define RESTORE(x) err |= __get_user(regs->x, &sc->sc_##x) 57#define RESTORE(x) err |= __get_user(regs->x, &sc->sc_##x)
54 58
55 /* restore passed registers */ 59 /* restore passed registers */
@@ -206,16 +210,6 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t * info,
206 regs->r1 = (unsigned long)(&frame->info); 210 regs->r1 = (unsigned long)(&frame->info);
207 regs->r2 = (unsigned long)(&frame->uc); 211 regs->r2 = (unsigned long)(&frame->uc);
208 212
209 /*
210 * Clear the trace flag when entering the signal handler, but
211 * notify any tracer that was single-stepping it. The tracer
212 * may want to single-step inside the handler too.
213 */
214 if (regs->syscfg & TRACE_BITS) {
215 regs->syscfg &= ~TRACE_BITS;
216 ptrace_notify(SIGTRAP);
217 }
218
219 return 0; 213 return 0;
220 214
221 give_sigsegv: 215 give_sigsegv:
@@ -247,6 +241,11 @@ handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
247 regs->r0 = regs->orig_r0; 241 regs->r0 = regs->orig_r0;
248 regs->pc -= 2; 242 regs->pc -= 2;
249 break; 243 break;
244
245 case -ERESTART_RESTARTBLOCK:
246 regs->p0 = __NR_restart_syscall;
247 regs->pc -= 2;
248 break;
250 } 249 }
251} 250}
252 251
@@ -315,6 +314,9 @@ asmlinkage void do_signal(struct pt_regs *regs)
315 * clear the TIF_RESTORE_SIGMASK flag */ 314 * clear the TIF_RESTORE_SIGMASK flag */
316 if (test_thread_flag(TIF_RESTORE_SIGMASK)) 315 if (test_thread_flag(TIF_RESTORE_SIGMASK))
317 clear_thread_flag(TIF_RESTORE_SIGMASK); 316 clear_thread_flag(TIF_RESTORE_SIGMASK);
317
318 tracehook_signal_handler(signr, &info, &ka, regs,
319 test_thread_flag(TIF_SINGLESTEP));
318 } 320 }
319 321
320 return; 322 return;
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c
index 17c38c5b5b22..cb7a01d4f009 100644
--- a/arch/blackfin/kernel/time-ts.c
+++ b/arch/blackfin/kernel/time-ts.c
@@ -21,6 +21,7 @@
21#include <asm/blackfin.h> 21#include <asm/blackfin.h>
22#include <asm/time.h> 22#include <asm/time.h>
23#include <asm/gptimers.h> 23#include <asm/gptimers.h>
24#include <asm/nmi.h>
24 25
25/* Accelerators for sched_clock() 26/* Accelerators for sched_clock()
26 * convert from cycles(64bits) => nanoseconds (64bits) 27 * convert from cycles(64bits) => nanoseconds (64bits)
@@ -50,7 +51,11 @@
50 51
51static notrace cycle_t bfin_read_cycles(struct clocksource *cs) 52static notrace cycle_t bfin_read_cycles(struct clocksource *cs)
52{ 53{
54#ifdef CONFIG_CPU_FREQ
53 return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod); 55 return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod);
56#else
57 return get_cycles();
58#endif
54} 59}
55 60
56static struct clocksource bfin_cs_cycles = { 61static struct clocksource bfin_cs_cycles = {
@@ -132,7 +137,6 @@ static int __init bfin_cs_gptimer0_init(void)
132# define bfin_cs_gptimer0_init() 137# define bfin_cs_gptimer0_init()
133#endif 138#endif
134 139
135
136#if defined(CONFIG_GPTMR0_CLOCKSOURCE) || defined(CONFIG_CYCLES_CLOCKSOURCE) 140#if defined(CONFIG_GPTMR0_CLOCKSOURCE) || defined(CONFIG_CYCLES_CLOCKSOURCE)
137/* prefer to use cycles since it has higher rating */ 141/* prefer to use cycles since it has higher rating */
138notrace unsigned long long sched_clock(void) 142notrace unsigned long long sched_clock(void)
@@ -145,47 +149,8 @@ notrace unsigned long long sched_clock(void)
145} 149}
146#endif 150#endif
147 151
148#ifdef CONFIG_CORE_TIMER_IRQ_L1
149__attribute__((l1_text))
150#endif
151irqreturn_t timer_interrupt(int irq, void *dev_id);
152
153static int bfin_timer_set_next_event(unsigned long, \
154 struct clock_event_device *);
155
156static void bfin_timer_set_mode(enum clock_event_mode, \
157 struct clock_event_device *);
158
159static struct clock_event_device clockevent_bfin = {
160#if defined(CONFIG_TICKSOURCE_GPTMR0)
161 .name = "bfin_gptimer0",
162 .rating = 300,
163 .irq = IRQ_TIMER0,
164#else
165 .name = "bfin_core_timer",
166 .rating = 350,
167 .irq = IRQ_CORETMR,
168#endif
169 .shift = 32,
170 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
171 .set_next_event = bfin_timer_set_next_event,
172 .set_mode = bfin_timer_set_mode,
173};
174
175static struct irqaction bfin_timer_irq = {
176#if defined(CONFIG_TICKSOURCE_GPTMR0)
177 .name = "Blackfin GPTimer0",
178#else
179 .name = "Blackfin CoreTimer",
180#endif
181 .flags = IRQF_DISABLED | IRQF_TIMER | \
182 IRQF_IRQPOLL | IRQF_PERCPU,
183 .handler = timer_interrupt,
184 .dev_id = &clockevent_bfin,
185};
186
187#if defined(CONFIG_TICKSOURCE_GPTMR0) 152#if defined(CONFIG_TICKSOURCE_GPTMR0)
188static int bfin_timer_set_next_event(unsigned long cycles, 153static int bfin_gptmr0_set_next_event(unsigned long cycles,
189 struct clock_event_device *evt) 154 struct clock_event_device *evt)
190{ 155{
191 disable_gptimers(TIMER0bit); 156 disable_gptimers(TIMER0bit);
@@ -196,7 +161,7 @@ static int bfin_timer_set_next_event(unsigned long cycles,
196 return 0; 161 return 0;
197} 162}
198 163
199static void bfin_timer_set_mode(enum clock_event_mode mode, 164static void bfin_gptmr0_set_mode(enum clock_event_mode mode,
200 struct clock_event_device *evt) 165 struct clock_event_device *evt)
201{ 166{
202 switch (mode) { 167 switch (mode) {
@@ -224,25 +189,65 @@ static void bfin_timer_set_mode(enum clock_event_mode mode,
224 } 189 }
225} 190}
226 191
227static void bfin_timer_ack(void) 192static void bfin_gptmr0_ack(void)
228{ 193{
229 set_gptimer_status(TIMER_GROUP1, TIMER_STATUS_TIMIL0); 194 set_gptimer_status(TIMER_GROUP1, TIMER_STATUS_TIMIL0);
230} 195}
231 196
232static void __init bfin_timer_init(void) 197static void __init bfin_gptmr0_init(void)
233{ 198{
234 disable_gptimers(TIMER0bit); 199 disable_gptimers(TIMER0bit);
235} 200}
236 201
237static unsigned long __init bfin_clockevent_check(void) 202#ifdef CONFIG_CORE_TIMER_IRQ_L1
203__attribute__((l1_text))
204#endif
205irqreturn_t bfin_gptmr0_interrupt(int irq, void *dev_id)
238{ 206{
239 setup_irq(IRQ_TIMER0, &bfin_timer_irq); 207 struct clock_event_device *evt = dev_id;
240 return get_sclk(); 208 smp_mb();
209 evt->event_handler(evt);
210 bfin_gptmr0_ack();
211 return IRQ_HANDLED;
241} 212}
242 213
243#else /* CONFIG_TICKSOURCE_CORETMR */ 214static struct irqaction gptmr0_irq = {
215 .name = "Blackfin GPTimer0",
216 .flags = IRQF_DISABLED | IRQF_TIMER | \
217 IRQF_IRQPOLL | IRQF_PERCPU,
218 .handler = bfin_gptmr0_interrupt,
219};
244 220
245static int bfin_timer_set_next_event(unsigned long cycles, 221static struct clock_event_device clockevent_gptmr0 = {
222 .name = "bfin_gptimer0",
223 .rating = 300,
224 .irq = IRQ_TIMER0,
225 .shift = 32,
226 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
227 .set_next_event = bfin_gptmr0_set_next_event,
228 .set_mode = bfin_gptmr0_set_mode,
229};
230
231static void __init bfin_gptmr0_clockevent_init(struct clock_event_device *evt)
232{
233 unsigned long clock_tick;
234
235 clock_tick = get_sclk();
236 evt->mult = div_sc(clock_tick, NSEC_PER_SEC, evt->shift);
237 evt->max_delta_ns = clockevent_delta2ns(-1, evt);
238 evt->min_delta_ns = clockevent_delta2ns(100, evt);
239
240 evt->cpumask = cpumask_of(0);
241
242 clockevents_register_device(evt);
243}
244#endif /* CONFIG_TICKSOURCE_GPTMR0 */
245
246#if defined(CONFIG_TICKSOURCE_CORETMR)
247/* per-cpu local core timer */
248static DEFINE_PER_CPU(struct clock_event_device, coretmr_events);
249
250static int bfin_coretmr_set_next_event(unsigned long cycles,
246 struct clock_event_device *evt) 251 struct clock_event_device *evt)
247{ 252{
248 bfin_write_TCNTL(TMPWR); 253 bfin_write_TCNTL(TMPWR);
@@ -253,7 +258,7 @@ static int bfin_timer_set_next_event(unsigned long cycles,
253 return 0; 258 return 0;
254} 259}
255 260
256static void bfin_timer_set_mode(enum clock_event_mode mode, 261static void bfin_coretmr_set_mode(enum clock_event_mode mode,
257 struct clock_event_device *evt) 262 struct clock_event_device *evt)
258{ 263{
259 switch (mode) { 264 switch (mode) {
@@ -285,19 +290,13 @@ static void bfin_timer_set_mode(enum clock_event_mode mode,
285 } 290 }
286} 291}
287 292
288static void bfin_timer_ack(void) 293void bfin_coretmr_init(void)
289{
290}
291
292static void __init bfin_timer_init(void)
293{ 294{
294 /* power up the timer, but don't enable it just yet */ 295 /* power up the timer, but don't enable it just yet */
295 bfin_write_TCNTL(TMPWR); 296 bfin_write_TCNTL(TMPWR);
296 CSYNC(); 297 CSYNC();
297 298
298 /* 299 /* the TSCALE prescaler counter. */
299 * the TSCALE prescaler counter.
300 */
301 bfin_write_TSCALE(TIME_SCALE - 1); 300 bfin_write_TSCALE(TIME_SCALE - 1);
302 bfin_write_TPERIOD(0); 301 bfin_write_TPERIOD(0);
303 bfin_write_TCOUNT(0); 302 bfin_write_TCOUNT(0);
@@ -305,48 +304,54 @@ static void __init bfin_timer_init(void)
305 CSYNC(); 304 CSYNC();
306} 305}
307 306
308static unsigned long __init bfin_clockevent_check(void) 307#ifdef CONFIG_CORE_TIMER_IRQ_L1
309{ 308__attribute__((l1_text))
310 setup_irq(IRQ_CORETMR, &bfin_timer_irq); 309#endif
311 return get_cclk() / TIME_SCALE; 310irqreturn_t bfin_coretmr_interrupt(int irq, void *dev_id)
312}
313
314void __init setup_core_timer(void)
315{ 311{
316 bfin_timer_init(); 312 int cpu = smp_processor_id();
317 bfin_timer_set_mode(CLOCK_EVT_MODE_PERIODIC, NULL); 313 struct clock_event_device *evt = &per_cpu(coretmr_events, cpu);
318}
319#endif /* CONFIG_TICKSOURCE_GPTMR0 */
320 314
321/*
322 * timer_interrupt() needs to keep up the real-time clock,
323 * as well as call the "do_timer()" routine every clocktick
324 */
325irqreturn_t timer_interrupt(int irq, void *dev_id)
326{
327 struct clock_event_device *evt = dev_id;
328 smp_mb(); 315 smp_mb();
329 evt->event_handler(evt); 316 evt->event_handler(evt);
330 bfin_timer_ack();
331 return IRQ_HANDLED;
332}
333
334static int __init bfin_clockevent_init(void)
335{
336 unsigned long timer_clk;
337 317
338 timer_clk = bfin_clockevent_check(); 318 touch_nmi_watchdog();
339 319
340 bfin_timer_init(); 320 return IRQ_HANDLED;
321}
341 322
342 clockevent_bfin.mult = div_sc(timer_clk, NSEC_PER_SEC, clockevent_bfin.shift); 323static struct irqaction coretmr_irq = {
343 clockevent_bfin.max_delta_ns = clockevent_delta2ns(-1, &clockevent_bfin); 324 .name = "Blackfin CoreTimer",
344 clockevent_bfin.min_delta_ns = clockevent_delta2ns(100, &clockevent_bfin); 325 .flags = IRQF_DISABLED | IRQF_TIMER | \
345 clockevent_bfin.cpumask = cpumask_of(0); 326 IRQF_IRQPOLL | IRQF_PERCPU,
346 clockevents_register_device(&clockevent_bfin); 327 .handler = bfin_coretmr_interrupt,
328};
347 329
348 return 0; 330void bfin_coretmr_clockevent_init(void)
331{
332 unsigned long clock_tick;
333 unsigned int cpu = smp_processor_id();
334 struct clock_event_device *evt = &per_cpu(coretmr_events, cpu);
335
336 evt->name = "bfin_core_timer";
337 evt->rating = 350;
338 evt->irq = -1;
339 evt->shift = 32;
340 evt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
341 evt->set_next_event = bfin_coretmr_set_next_event;
342 evt->set_mode = bfin_coretmr_set_mode;
343
344 clock_tick = get_cclk() / TIME_SCALE;
345 evt->mult = div_sc(clock_tick, NSEC_PER_SEC, evt->shift);
346 evt->max_delta_ns = clockevent_delta2ns(-1, evt);
347 evt->min_delta_ns = clockevent_delta2ns(100, evt);
348
349 evt->cpumask = cpumask_of(cpu);
350
351 clockevents_register_device(evt);
349} 352}
353#endif /* CONFIG_TICKSOURCE_CORETMR */
354
350 355
351void __init time_init(void) 356void __init time_init(void)
352{ 357{
@@ -370,5 +375,21 @@ void __init time_init(void)
370 375
371 bfin_cs_cycles_init(); 376 bfin_cs_cycles_init();
372 bfin_cs_gptimer0_init(); 377 bfin_cs_gptimer0_init();
373 bfin_clockevent_init(); 378
379#if defined(CONFIG_TICKSOURCE_CORETMR)
380 bfin_coretmr_init();
381 setup_irq(IRQ_CORETMR, &coretmr_irq);
382 bfin_coretmr_clockevent_init();
383#endif
384
385#if defined(CONFIG_TICKSOURCE_GPTMR0)
386 bfin_gptmr0_init();
387 setup_irq(IRQ_TIMER0, &gptmr0_irq);
388 gptmr0_irq.dev_id = &clockevent_gptmr0;
389 bfin_gptmr0_clockevent_init(&clockevent_gptmr0);
390#endif
391
392#if !defined(CONFIG_TICKSOURCE_CORETMR) && !defined(CONFIG_TICKSOURCE_GPTMR0)
393# error at least one clock event device is required
394#endif
374} 395}
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index d3cbcd6bd985..ba70c4bc2699 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -138,6 +138,12 @@ static void decode_address(char *buf, unsigned long address)
138 if (!mm) 138 if (!mm)
139 continue; 139 continue;
140 140
141 if (!down_read_trylock(&mm->mmap_sem)) {
142 if (!in_atomic)
143 mmput(mm);
144 continue;
145 }
146
141 for (n = rb_first(&mm->mm_rb); n; n = rb_next(n)) { 147 for (n = rb_first(&mm->mm_rb); n; n = rb_next(n)) {
142 struct vm_area_struct *vma; 148 struct vm_area_struct *vma;
143 149
@@ -177,6 +183,7 @@ static void decode_address(char *buf, unsigned long address)
177 sprintf(buf, "[ %s vma:0x%lx-0x%lx]", 183 sprintf(buf, "[ %s vma:0x%lx-0x%lx]",
178 name, vma->vm_start, vma->vm_end); 184 name, vma->vm_start, vma->vm_end);
179 185
186 up_read(&mm->mmap_sem);
180 if (!in_atomic) 187 if (!in_atomic)
181 mmput(mm); 188 mmput(mm);
182 189
@@ -186,11 +193,16 @@ static void decode_address(char *buf, unsigned long address)
186 goto done; 193 goto done;
187 } 194 }
188 } 195 }
196
197 up_read(&mm->mmap_sem);
189 if (!in_atomic) 198 if (!in_atomic)
190 mmput(mm); 199 mmput(mm);
191 } 200 }
192 201
193 /* we were unable to find this address anywhere */ 202 /*
203 * we were unable to find this address anywhere,
204 * or some MMs were skipped because they were in use.
205 */
194 sprintf(buf, "/* kernel dynamic memory */"); 206 sprintf(buf, "/* kernel dynamic memory */");
195 207
196done: 208done:
@@ -248,9 +260,7 @@ asmlinkage notrace void trap_c(struct pt_regs *fp)
248#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON 260#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
249 int j; 261 int j;
250#endif 262#endif
251#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
252 unsigned int cpu = raw_smp_processor_id(); 263 unsigned int cpu = raw_smp_processor_id();
253#endif
254 const char *strerror = NULL; 264 const char *strerror = NULL;
255 int sig = 0; 265 int sig = 0;
256 siginfo_t info; 266 siginfo_t info;
@@ -639,7 +649,17 @@ asmlinkage notrace void trap_c(struct pt_regs *fp)
639 { 649 {
640 info.si_signo = sig; 650 info.si_signo = sig;
641 info.si_errno = 0; 651 info.si_errno = 0;
642 info.si_addr = (void __user *)fp->pc; 652 switch (trapnr) {
653 case VEC_CPLB_VL:
654 case VEC_MISALI_D:
655 case VEC_CPLB_M:
656 case VEC_CPLB_MHIT:
657 info.si_addr = (void __user *)cpu_pda[cpu].dcplb_fault_addr;
658 break;
659 default:
660 info.si_addr = (void __user *)fp->pc;
661 break;
662 }
643 force_sig_info(sig, &info, current); 663 force_sig_info(sig, &info, current);
644 } 664 }
645 665
@@ -712,7 +732,7 @@ static void decode_instruction(unsigned short *address)
712 verbose_printk("RTE"); 732 verbose_printk("RTE");
713 else if (opcode == 0x0025) 733 else if (opcode == 0x0025)
714 verbose_printk("EMUEXCPT"); 734 verbose_printk("EMUEXCPT");
715 else if (opcode == 0x0040 && opcode <= 0x0047) 735 else if (opcode >= 0x0040 && opcode <= 0x0047)
716 verbose_printk("STI R%i", opcode & 7); 736 verbose_printk("STI R%i", opcode & 7);
717 else if (opcode >= 0x0050 && opcode <= 0x0057) 737 else if (opcode >= 0x0050 && opcode <= 0x0057)
718 verbose_printk("JUMP (P%i)", opcode & 7); 738 verbose_printk("JUMP (P%i)", opcode & 7);
@@ -1096,7 +1116,7 @@ void dump_bfin_mem(struct pt_regs *fp)
1096 /* And the last RETI points to the current userspace context */ 1116 /* And the last RETI points to the current userspace context */
1097 if ((fp + 1)->pc >= current->mm->start_code && 1117 if ((fp + 1)->pc >= current->mm->start_code &&
1098 (fp + 1)->pc <= current->mm->end_code) { 1118 (fp + 1)->pc <= current->mm->end_code) {
1099 verbose_printk(KERN_NOTICE "It might be better to look around here : \n"); 1119 verbose_printk(KERN_NOTICE "It might be better to look around here :\n");
1100 verbose_printk(KERN_NOTICE "-------------------------------------------\n"); 1120 verbose_printk(KERN_NOTICE "-------------------------------------------\n");
1101 show_regs(fp + 1); 1121 show_regs(fp + 1);
1102 verbose_printk(KERN_NOTICE "-------------------------------------------\n"); 1122 verbose_printk(KERN_NOTICE "-------------------------------------------\n");
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 66799e763dc9..984c78172397 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -15,7 +15,12 @@ _jiffies = _jiffies_64;
15 15
16SECTIONS 16SECTIONS
17{ 17{
18#ifdef CONFIG_RAMKERNEL
18 . = CONFIG_BOOT_LOAD; 19 . = CONFIG_BOOT_LOAD;
20#else
21 . = CONFIG_ROM_BASE;
22#endif
23
19 /* Neither the text, ro_data or bss section need to be aligned 24 /* Neither the text, ro_data or bss section need to be aligned
20 * So pack them back to back 25 * So pack them back to back
21 */ 26 */
@@ -31,6 +36,12 @@ SECTIONS
31 LOCK_TEXT 36 LOCK_TEXT
32 IRQENTRY_TEXT 37 IRQENTRY_TEXT
33 KPROBES_TEXT 38 KPROBES_TEXT
39#ifdef CONFIG_ROMKERNEL
40 __sinittext = .;
41 INIT_TEXT
42 __einittext = .;
43 EXIT_TEXT
44#endif
34 *(.text.*) 45 *(.text.*)
35 *(.fixup) 46 *(.fixup)
36 47
@@ -50,8 +61,14 @@ SECTIONS
50 61
51 /* Just in case the first read only is a 32-bit access */ 62 /* Just in case the first read only is a 32-bit access */
52 RO_DATA(4) 63 RO_DATA(4)
64 __rodata_end = .;
53 65
66#ifdef CONFIG_ROMKERNEL
67 . = CONFIG_BOOT_LOAD;
68 .bss : AT(__rodata_end)
69#else
54 .bss : 70 .bss :
71#endif
55 { 72 {
56 . = ALIGN(4); 73 . = ALIGN(4);
57 ___bss_start = .; 74 ___bss_start = .;
@@ -67,7 +84,11 @@ SECTIONS
67 ___bss_stop = .; 84 ___bss_stop = .;
68 } 85 }
69 86
87#if defined(CONFIG_ROMKERNEL)
88 .data : AT(LOADADDR(.bss) + SIZEOF(.bss))
89#else
70 .data : 90 .data :
91#endif
71 { 92 {
72 __sdata = .; 93 __sdata = .;
73 /* This gets done first, so the glob doesn't suck it in */ 94 /* This gets done first, so the glob doesn't suck it in */
@@ -94,6 +115,8 @@ SECTIONS
94 115
95 __edata = .; 116 __edata = .;
96 } 117 }
118 __data_lma = LOADADDR(.data);
119 __data_len = SIZEOF(.data);
97 120
98 /* The init section should be last, so when we free it, it goes into 121 /* The init section should be last, so when we free it, it goes into
99 * the general memory pool, and (hopefully) will decrease fragmentation 122 * the general memory pool, and (hopefully) will decrease fragmentation
@@ -103,25 +126,58 @@ SECTIONS
103 . = ALIGN(PAGE_SIZE); 126 . = ALIGN(PAGE_SIZE);
104 ___init_begin = .; 127 ___init_begin = .;
105 128
129#ifdef CONFIG_RAMKERNEL
106 INIT_TEXT_SECTION(PAGE_SIZE) 130 INIT_TEXT_SECTION(PAGE_SIZE)
107 . = ALIGN(16);
108 INIT_DATA_SECTION(16)
109 PERCPU(4)
110 131
111 /* we have to discard exit text and such at runtime, not link time, to 132 /* We have to discard exit text and such at runtime, not link time, to
112 * handle embedded cross-section references (alt instructions, bug 133 * handle embedded cross-section references (alt instructions, bug
113 * table, eh_frame, etc...) 134 * table, eh_frame, etc...). We need all of our .text up front and
135 * .data after it for PCREL call issues.
114 */ 136 */
115 .exit.text : 137 .exit.text :
116 { 138 {
117 EXIT_TEXT 139 EXIT_TEXT
118 } 140 }
141
142 . = ALIGN(16);
143 INIT_DATA_SECTION(16)
144 PERCPU(4)
145
119 .exit.data : 146 .exit.data :
120 { 147 {
121 EXIT_DATA 148 EXIT_DATA
122 } 149 }
123 150
124 .text_l1 L1_CODE_START : AT(LOADADDR(.exit.data) + SIZEOF(.exit.data)) 151 .text_l1 L1_CODE_START : AT(LOADADDR(.exit.data) + SIZEOF(.exit.data))
152#else
153 .init.data : AT(__data_lma + __data_len)
154 {
155 __sinitdata = .;
156 INIT_DATA
157 INIT_SETUP(16)
158 INIT_CALLS
159 CON_INITCALL
160 SECURITY_INITCALL
161 INIT_RAM_FS
162
163 . = ALIGN(4);
164 ___per_cpu_load = .;
165 ___per_cpu_start = .;
166 *(.data.percpu.first)
167 *(.data.percpu.page_aligned)
168 *(.data.percpu)
169 *(.data.percpu.shared_aligned)
170 ___per_cpu_end = .;
171
172 EXIT_DATA
173 __einitdata = .;
174 }
175 __init_data_lma = LOADADDR(.init.data);
176 __init_data_len = SIZEOF(.init.data);
177 __init_data_end = .;
178
179 .text_l1 L1_CODE_START : AT(__init_data_lma + __init_data_len)
180#endif
125 { 181 {
126 . = ALIGN(4); 182 . = ALIGN(4);
127 __stext_l1 = .; 183 __stext_l1 = .;
@@ -202,7 +258,11 @@ SECTIONS
202 /* Force trailing alignment of our init section so that when we 258 /* Force trailing alignment of our init section so that when we
203 * free our init memory, we don't leave behind a partial page. 259 * free our init memory, we don't leave behind a partial page.
204 */ 260 */
261#ifdef CONFIG_RAMKERNEL
205 . = __l2_lma + __l2_len; 262 . = __l2_lma + __l2_len;
263#else
264 . = __init_data_end;
265#endif
206 . = ALIGN(PAGE_SIZE); 266 . = ALIGN(PAGE_SIZE);
207 ___init_end = .; 267 ___init_end = .;
208 268
diff --git a/arch/blackfin/mach-bf518/boards/Kconfig b/arch/blackfin/mach-bf518/boards/Kconfig
index 96163514ed22..252261ec04c4 100644
--- a/arch/blackfin/mach-bf518/boards/Kconfig
+++ b/arch/blackfin/mach-bf518/boards/Kconfig
@@ -9,4 +9,9 @@ config BFIN518F_EZBRD
9 help 9 help
10 BF518-EZBRD board support. 10 BF518-EZBRD board support.
11 11
12config BFIN518F_TCM
13 bool "Bluetechnix TCM-BF518"
14 help
15 Bluetechnix TCM-BF518 board support.
16
12endchoice 17endchoice
diff --git a/arch/blackfin/mach-bf518/boards/Makefile b/arch/blackfin/mach-bf518/boards/Makefile
index 172e859c3a7f..a9ef25c6b302 100644
--- a/arch/blackfin/mach-bf518/boards/Makefile
+++ b/arch/blackfin/mach-bf518/boards/Makefile
@@ -3,3 +3,4 @@
3# 3#
4 4
5obj-$(CONFIG_BFIN518F_EZBRD) += ezbrd.o 5obj-$(CONFIG_BFIN518F_EZBRD) += ezbrd.o
6obj-$(CONFIG_BFIN518F_TCM) += tcm-bf518.o
diff --git a/arch/blackfin/mach-bf518/boards/ezbrd.c b/arch/blackfin/mach-bf518/boards/ezbrd.c
index 01975c017116..44d6d5299022 100644
--- a/arch/blackfin/mach-bf518/boards/ezbrd.c
+++ b/arch/blackfin/mach-bf518/boards/ezbrd.c
@@ -382,30 +382,93 @@ static struct platform_device bfin_spi1_device = {
382#endif /* spi master and devices */ 382#endif /* spi master and devices */
383 383
384#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 384#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
385static struct resource bfin_uart_resources[] = {
386#ifdef CONFIG_SERIAL_BFIN_UART0 385#ifdef CONFIG_SERIAL_BFIN_UART0
386static struct resource bfin_uart0_resources[] = {
387 { 387 {
388 .start = 0xFFC00400, 388 .start = UART0_THR,
389 .end = 0xFFC004FF, 389 .end = UART0_GCTL+2,
390 .flags = IORESOURCE_MEM, 390 .flags = IORESOURCE_MEM,
391 }, 391 },
392 {
393 .start = IRQ_UART0_RX,
394 .end = IRQ_UART0_RX+1,
395 .flags = IORESOURCE_IRQ,
396 },
397 {
398 .start = IRQ_UART0_ERROR,
399 .end = IRQ_UART0_ERROR,
400 .flags = IORESOURCE_IRQ,
401 },
402 {
403 .start = CH_UART0_TX,
404 .end = CH_UART0_TX,
405 .flags = IORESOURCE_DMA,
406 },
407 {
408 .start = CH_UART0_RX,
409 .end = CH_UART0_RX,
410 .flags = IORESOURCE_DMA,
411 },
412};
413
414unsigned short bfin_uart0_peripherals[] = {
415 P_UART0_TX, P_UART0_RX, 0
416};
417
418static struct platform_device bfin_uart0_device = {
419 .name = "bfin-uart",
420 .id = 0,
421 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
422 .resource = bfin_uart0_resources,
423 .dev = {
424 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
425 },
426};
392#endif 427#endif
393#ifdef CONFIG_SERIAL_BFIN_UART1 428#ifdef CONFIG_SERIAL_BFIN_UART1
429static struct resource bfin_uart1_resources[] = {
394 { 430 {
395 .start = 0xFFC02000, 431 .start = UART1_THR,
396 .end = 0xFFC020FF, 432 .end = UART1_GCTL+2,
397 .flags = IORESOURCE_MEM, 433 .flags = IORESOURCE_MEM,
398 }, 434 },
399#endif 435 {
436 .start = IRQ_UART1_RX,
437 .end = IRQ_UART1_RX+1,
438 .flags = IORESOURCE_IRQ,
439 },
440 {
441 .start = IRQ_UART1_ERROR,
442 .end = IRQ_UART1_ERROR,
443 .flags = IORESOURCE_IRQ,
444 },
445 {
446 .start = CH_UART1_TX,
447 .end = CH_UART1_TX,
448 .flags = IORESOURCE_DMA,
449 },
450 {
451 .start = CH_UART1_RX,
452 .end = CH_UART1_RX,
453 .flags = IORESOURCE_DMA,
454 },
455};
456
457unsigned short bfin_uart1_peripherals[] = {
458 P_UART1_TX, P_UART1_RX, 0
400}; 459};
401 460
402static struct platform_device bfin_uart_device = { 461static struct platform_device bfin_uart1_device = {
403 .name = "bfin-uart", 462 .name = "bfin-uart",
404 .id = 1, 463 .id = 1,
405 .num_resources = ARRAY_SIZE(bfin_uart_resources), 464 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
406 .resource = bfin_uart_resources, 465 .resource = bfin_uart1_resources,
466 .dev = {
467 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
468 },
407}; 469};
408#endif 470#endif
471#endif
409 472
410#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 473#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
411#ifdef CONFIG_BFIN_SIR0 474#ifdef CONFIG_BFIN_SIR0
@@ -499,16 +562,75 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
499}; 562};
500 563
501#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 564#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
565#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
566static struct resource bfin_sport0_uart_resources[] = {
567 {
568 .start = SPORT0_TCR1,
569 .end = SPORT0_MRCS3+4,
570 .flags = IORESOURCE_MEM,
571 },
572 {
573 .start = IRQ_SPORT0_RX,
574 .end = IRQ_SPORT0_RX+1,
575 .flags = IORESOURCE_IRQ,
576 },
577 {
578 .start = IRQ_SPORT0_ERROR,
579 .end = IRQ_SPORT0_ERROR,
580 .flags = IORESOURCE_IRQ,
581 },
582};
583
584unsigned short bfin_sport0_peripherals[] = {
585 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
586 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
587};
588
502static struct platform_device bfin_sport0_uart_device = { 589static struct platform_device bfin_sport0_uart_device = {
503 .name = "bfin-sport-uart", 590 .name = "bfin-sport-uart",
504 .id = 0, 591 .id = 0,
592 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
593 .resource = bfin_sport0_uart_resources,
594 .dev = {
595 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
596 },
597};
598#endif
599#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
600static struct resource bfin_sport1_uart_resources[] = {
601 {
602 .start = SPORT1_TCR1,
603 .end = SPORT1_MRCS3+4,
604 .flags = IORESOURCE_MEM,
605 },
606 {
607 .start = IRQ_SPORT1_RX,
608 .end = IRQ_SPORT1_RX+1,
609 .flags = IORESOURCE_IRQ,
610 },
611 {
612 .start = IRQ_SPORT1_ERROR,
613 .end = IRQ_SPORT1_ERROR,
614 .flags = IORESOURCE_IRQ,
615 },
616};
617
618unsigned short bfin_sport1_peripherals[] = {
619 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
620 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
505}; 621};
506 622
507static struct platform_device bfin_sport1_uart_device = { 623static struct platform_device bfin_sport1_uart_device = {
508 .name = "bfin-sport-uart", 624 .name = "bfin-sport-uart",
509 .id = 1, 625 .id = 1,
626 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
627 .resource = bfin_sport1_uart_resources,
628 .dev = {
629 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
630 },
510}; 631};
511#endif 632#endif
633#endif
512 634
513#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 635#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
514#include <linux/input.h> 636#include <linux/input.h>
@@ -593,7 +715,12 @@ static struct platform_device *stamp_devices[] __initdata = {
593#endif 715#endif
594 716
595#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 717#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
596 &bfin_uart_device, 718#ifdef CONFIG_SERIAL_BFIN_UART0
719 &bfin_uart0_device,
720#endif
721#ifdef CONFIG_SERIAL_BFIN_UART1
722 &bfin_uart1_device,
723#endif
597#endif 724#endif
598 725
599#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 726#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -610,9 +737,13 @@ static struct platform_device *stamp_devices[] __initdata = {
610#endif 737#endif
611 738
612#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 739#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
740#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
613 &bfin_sport0_uart_device, 741 &bfin_sport0_uart_device,
742#endif
743#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
614 &bfin_sport1_uart_device, 744 &bfin_sport1_uart_device,
615#endif 745#endif
746#endif
616 747
617#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 748#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
618 &bfin_device_gpiokeys, 749 &bfin_device_gpiokeys,
@@ -644,6 +775,33 @@ static int __init ezbrd_init(void)
644 775
645arch_initcall(ezbrd_init); 776arch_initcall(ezbrd_init);
646 777
778static struct platform_device *ezbrd_early_devices[] __initdata = {
779#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
780#ifdef CONFIG_SERIAL_BFIN_UART0
781 &bfin_uart0_device,
782#endif
783#ifdef CONFIG_SERIAL_BFIN_UART1
784 &bfin_uart1_device,
785#endif
786#endif
787
788#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
789#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
790 &bfin_sport0_uart_device,
791#endif
792#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
793 &bfin_sport1_uart_device,
794#endif
795#endif
796};
797
798void __init native_machine_early_platform_add_devices(void)
799{
800 printk(KERN_INFO "register early platform devices\n");
801 early_platform_add_devices(ezbrd_early_devices,
802 ARRAY_SIZE(ezbrd_early_devices));
803}
804
647void native_machine_restart(char *cmd) 805void native_machine_restart(char *cmd)
648{ 806{
649 /* workaround reboot hang when booting from SPI */ 807 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf518/boards/tcm-bf518.c b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
new file mode 100644
index 000000000000..9b72e5cb21fe
--- /dev/null
+++ b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
@@ -0,0 +1,753 @@
1/*
2 * Copyright 2004-2009 Analog Devices Inc.
3 * 2005 National ICT Australia (NICTA)
4 * Aidan Williams <aidan@nicta.com.au>
5 *
6 * Licensed under the GPL-2 or later.
7 */
8
9#include <linux/device.h>
10#include <linux/etherdevice.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/mtd.h>
13#include <linux/mtd/partitions.h>
14#include <linux/mtd/physmap.h>
15#include <linux/spi/spi.h>
16#include <linux/spi/flash.h>
17
18#include <linux/i2c.h>
19#include <linux/irq.h>
20#include <linux/interrupt.h>
21#include <asm/dma.h>
22#include <asm/bfin5xx_spi.h>
23#include <asm/reboot.h>
24#include <asm/portmux.h>
25#include <asm/dpmc.h>
26#include <asm/bfin_sdh.h>
27#include <linux/spi/ad7877.h>
28#include <net/dsa.h>
29
30/*
31 * Name the Board for the /proc/cpuinfo
32 */
33const char bfin_board_name[] = "Bluetechnix TCM-BF518";
34
35/*
36 * Driver needs to know address, irq and flag pin.
37 */
38
39#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
40static struct mtd_partition tcm_partitions[] = {
41 {
42 .name = "bootloader(nor)",
43 .size = 0x40000,
44 .offset = 0,
45 },
46 {
47 .name = "linux(nor)",
48 .size = 0x1C0000,
49 .offset = MTDPART_OFS_APPEND,
50 }
51};
52
53static struct physmap_flash_data tcm_flash_data = {
54 .width = 2,
55 .parts = tcm_partitions,
56 .nr_parts = ARRAY_SIZE(tcm_partitions),
57};
58
59static struct resource tcm_flash_resource = {
60 .start = 0x20000000,
61 .end = 0x201fffff,
62 .flags = IORESOURCE_MEM,
63};
64
65static struct platform_device tcm_flash_device = {
66 .name = "physmap-flash",
67 .id = 0,
68 .dev = {
69 .platform_data = &tcm_flash_data,
70 },
71 .num_resources = 1,
72 .resource = &tcm_flash_resource,
73};
74#endif
75
76#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
77static struct platform_device rtc_device = {
78 .name = "rtc-bfin",
79 .id = -1,
80};
81#endif
82
83#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
84static struct platform_device bfin_mii_bus = {
85 .name = "bfin_mii_bus",
86};
87
88static struct platform_device bfin_mac_device = {
89 .name = "bfin_mac",
90 .dev.platform_data = &bfin_mii_bus,
91};
92#endif
93
94#if defined(CONFIG_MTD_M25P80) \
95 || defined(CONFIG_MTD_M25P80_MODULE)
96static struct mtd_partition bfin_spi_flash_partitions[] = {
97 {
98 .name = "bootloader(spi)",
99 .size = 0x00040000,
100 .offset = 0,
101 .mask_flags = MTD_CAP_ROM
102 }, {
103 .name = "linux kernel(spi)",
104 .size = MTDPART_SIZ_FULL,
105 .offset = MTDPART_OFS_APPEND,
106 }
107};
108
109static struct flash_platform_data bfin_spi_flash_data = {
110 .name = "m25p80",
111 .parts = bfin_spi_flash_partitions,
112 .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
113 .type = "m25p16",
114};
115
116/* SPI flash chip (m25p64) */
117static struct bfin5xx_spi_chip spi_flash_chip_info = {
118 .enable_dma = 0, /* use dma transfer with this chip*/
119 .bits_per_word = 8,
120};
121#endif
122
123#if defined(CONFIG_BFIN_SPI_ADC) \
124 || defined(CONFIG_BFIN_SPI_ADC_MODULE)
125/* SPI ADC chip */
126static struct bfin5xx_spi_chip spi_adc_chip_info = {
127 .enable_dma = 1, /* use dma transfer with this chip*/
128 .bits_per_word = 16,
129};
130#endif
131
132#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
133static struct bfin5xx_spi_chip mmc_spi_chip_info = {
134 .enable_dma = 0,
135 .bits_per_word = 8,
136};
137#endif
138
139#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
140static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
141 .enable_dma = 0,
142 .bits_per_word = 16,
143};
144
145static const struct ad7877_platform_data bfin_ad7877_ts_info = {
146 .model = 7877,
147 .vref_delay_usecs = 50, /* internal, no capacitor */
148 .x_plate_ohms = 419,
149 .y_plate_ohms = 486,
150 .pressure_max = 1000,
151 .pressure_min = 0,
152 .stopacq_polarity = 1,
153 .first_conversion_delay = 3,
154 .acquisition_time = 1,
155 .averaging = 1,
156 .pen_down_acc_interval = 1,
157};
158#endif
159
160#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
161 && defined(CONFIG_SND_SOC_WM8731_SPI)
162static struct bfin5xx_spi_chip spi_wm8731_chip_info = {
163 .enable_dma = 0,
164 .bits_per_word = 16,
165};
166#endif
167
168#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
169static struct bfin5xx_spi_chip spidev_chip_info = {
170 .enable_dma = 0,
171 .bits_per_word = 8,
172};
173#endif
174
175static struct spi_board_info bfin_spi_board_info[] __initdata = {
176#if defined(CONFIG_MTD_M25P80) \
177 || defined(CONFIG_MTD_M25P80_MODULE)
178 {
179 /* the modalias must be the same as spi device driver name */
180 .modalias = "m25p80", /* Name of spi_driver for this device */
181 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
182 .bus_num = 0, /* Framework bus number */
183 .chip_select = 2, /* SPI0_SSEL2 */
184 .platform_data = &bfin_spi_flash_data,
185 .controller_data = &spi_flash_chip_info,
186 .mode = SPI_MODE_3,
187 },
188#endif
189
190#if defined(CONFIG_BFIN_SPI_ADC) \
191 || defined(CONFIG_BFIN_SPI_ADC_MODULE)
192 {
193 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
194 .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
195 .bus_num = 0, /* Framework bus number */
196 .chip_select = 1, /* Framework chip select. */
197 .platform_data = NULL, /* No spi_driver specific config */
198 .controller_data = &spi_adc_chip_info,
199 },
200#endif
201
202#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
203 {
204 .modalias = "mmc_spi",
205 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
206 .bus_num = 0,
207 .chip_select = 5,
208 .controller_data = &mmc_spi_chip_info,
209 .mode = SPI_MODE_3,
210 },
211#endif
212#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
213 {
214 .modalias = "ad7877",
215 .platform_data = &bfin_ad7877_ts_info,
216 .irq = IRQ_PF8,
217 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
218 .bus_num = 0,
219 .chip_select = 2,
220 .controller_data = &spi_ad7877_chip_info,
221 },
222#endif
223#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
224 && defined(CONFIG_SND_SOC_WM8731_SPI)
225 {
226 .modalias = "wm8731",
227 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
228 .bus_num = 0,
229 .chip_select = 5,
230 .controller_data = &spi_wm8731_chip_info,
231 .mode = SPI_MODE_0,
232 },
233#endif
234#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
235 {
236 .modalias = "spidev",
237 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
238 .bus_num = 0,
239 .chip_select = 1,
240 .controller_data = &spidev_chip_info,
241 },
242#endif
243#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
244 {
245 .modalias = "bfin-lq035q1-spi",
246 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
247 .bus_num = 0,
248 .chip_select = 1,
249 .controller_data = &lq035q1_spi_chip_info,
250 .mode = SPI_CPHA | SPI_CPOL,
251 },
252#endif
253};
254
255/* SPI controller data */
256#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
257/* SPI (0) */
258static struct bfin5xx_spi_master bfin_spi0_info = {
259 .num_chipselect = 6,
260 .enable_dma = 1, /* master has the ability to do dma transfer */
261 .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
262};
263
264static struct resource bfin_spi0_resource[] = {
265 [0] = {
266 .start = SPI0_REGBASE,
267 .end = SPI0_REGBASE + 0xFF,
268 .flags = IORESOURCE_MEM,
269 },
270 [1] = {
271 .start = CH_SPI0,
272 .end = CH_SPI0,
273 .flags = IORESOURCE_DMA,
274 },
275 [2] = {
276 .start = IRQ_SPI0,
277 .end = IRQ_SPI0,
278 .flags = IORESOURCE_IRQ,
279 },
280};
281
282static struct platform_device bfin_spi0_device = {
283 .name = "bfin-spi",
284 .id = 0, /* Bus number */
285 .num_resources = ARRAY_SIZE(bfin_spi0_resource),
286 .resource = bfin_spi0_resource,
287 .dev = {
288 .platform_data = &bfin_spi0_info, /* Passed to driver */
289 },
290};
291
292/* SPI (1) */
293static struct bfin5xx_spi_master bfin_spi1_info = {
294 .num_chipselect = 5,
295 .enable_dma = 1, /* master has the ability to do dma transfer */
296 .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0},
297};
298
299static struct resource bfin_spi1_resource[] = {
300 [0] = {
301 .start = SPI1_REGBASE,
302 .end = SPI1_REGBASE + 0xFF,
303 .flags = IORESOURCE_MEM,
304 },
305 [1] = {
306 .start = CH_SPI1,
307 .end = CH_SPI1,
308 .flags = IORESOURCE_DMA,
309 },
310 [2] = {
311 .start = IRQ_SPI1,
312 .end = IRQ_SPI1,
313 .flags = IORESOURCE_IRQ,
314 },
315};
316
317static struct platform_device bfin_spi1_device = {
318 .name = "bfin-spi",
319 .id = 1, /* Bus number */
320 .num_resources = ARRAY_SIZE(bfin_spi1_resource),
321 .resource = bfin_spi1_resource,
322 .dev = {
323 .platform_data = &bfin_spi1_info, /* Passed to driver */
324 },
325};
326#endif /* spi master and devices */
327
328#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
329#ifdef CONFIG_SERIAL_BFIN_UART0
330static struct resource bfin_uart0_resources[] = {
331 {
332 .start = UART0_THR,
333 .end = UART0_GCTL+2,
334 .flags = IORESOURCE_MEM,
335 },
336 {
337 .start = IRQ_UART0_RX,
338 .end = IRQ_UART0_RX+1,
339 .flags = IORESOURCE_IRQ,
340 },
341 {
342 .start = IRQ_UART0_ERROR,
343 .end = IRQ_UART0_ERROR,
344 .flags = IORESOURCE_IRQ,
345 },
346 {
347 .start = CH_UART0_TX,
348 .end = CH_UART0_TX,
349 .flags = IORESOURCE_DMA,
350 },
351 {
352 .start = CH_UART0_RX,
353 .end = CH_UART0_RX,
354 .flags = IORESOURCE_DMA,
355 },
356};
357
358unsigned short bfin_uart0_peripherals[] = {
359 P_UART0_TX, P_UART0_RX, 0
360};
361
362static struct platform_device bfin_uart0_device = {
363 .name = "bfin-uart",
364 .id = 0,
365 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
366 .resource = bfin_uart0_resources,
367 .dev = {
368 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
369 },
370};
371#endif
372#ifdef CONFIG_SERIAL_BFIN_UART1
373static struct resource bfin_uart1_resources[] = {
374 {
375 .start = UART1_THR,
376 .end = UART1_GCTL+2,
377 .flags = IORESOURCE_MEM,
378 },
379 {
380 .start = IRQ_UART1_RX,
381 .end = IRQ_UART1_RX+1,
382 .flags = IORESOURCE_IRQ,
383 },
384 {
385 .start = IRQ_UART1_ERROR,
386 .end = IRQ_UART1_ERROR,
387 .flags = IORESOURCE_IRQ,
388 },
389 {
390 .start = CH_UART1_TX,
391 .end = CH_UART1_TX,
392 .flags = IORESOURCE_DMA,
393 },
394 {
395 .start = CH_UART1_RX,
396 .end = CH_UART1_RX,
397 .flags = IORESOURCE_DMA,
398 },
399};
400
401unsigned short bfin_uart1_peripherals[] = {
402 P_UART1_TX, P_UART1_RX, 0
403};
404
405static struct platform_device bfin_uart1_device = {
406 .name = "bfin-uart",
407 .id = 1,
408 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
409 .resource = bfin_uart1_resources,
410 .dev = {
411 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
412 },
413};
414#endif
415#endif
416
417#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
418#ifdef CONFIG_BFIN_SIR0
419static struct resource bfin_sir0_resources[] = {
420 {
421 .start = 0xFFC00400,
422 .end = 0xFFC004FF,
423 .flags = IORESOURCE_MEM,
424 },
425 {
426 .start = IRQ_UART0_RX,
427 .end = IRQ_UART0_RX+1,
428 .flags = IORESOURCE_IRQ,
429 },
430 {
431 .start = CH_UART0_RX,
432 .end = CH_UART0_RX+1,
433 .flags = IORESOURCE_DMA,
434 },
435};
436
437static struct platform_device bfin_sir0_device = {
438 .name = "bfin_sir",
439 .id = 0,
440 .num_resources = ARRAY_SIZE(bfin_sir0_resources),
441 .resource = bfin_sir0_resources,
442};
443#endif
444#ifdef CONFIG_BFIN_SIR1
445static struct resource bfin_sir1_resources[] = {
446 {
447 .start = 0xFFC02000,
448 .end = 0xFFC020FF,
449 .flags = IORESOURCE_MEM,
450 },
451 {
452 .start = IRQ_UART1_RX,
453 .end = IRQ_UART1_RX+1,
454 .flags = IORESOURCE_IRQ,
455 },
456 {
457 .start = CH_UART1_RX,
458 .end = CH_UART1_RX+1,
459 .flags = IORESOURCE_DMA,
460 },
461};
462
463static struct platform_device bfin_sir1_device = {
464 .name = "bfin_sir",
465 .id = 1,
466 .num_resources = ARRAY_SIZE(bfin_sir1_resources),
467 .resource = bfin_sir1_resources,
468};
469#endif
470#endif
471
472#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
473static struct resource bfin_twi0_resource[] = {
474 [0] = {
475 .start = TWI0_REGBASE,
476 .end = TWI0_REGBASE,
477 .flags = IORESOURCE_MEM,
478 },
479 [1] = {
480 .start = IRQ_TWI,
481 .end = IRQ_TWI,
482 .flags = IORESOURCE_IRQ,
483 },
484};
485
486static struct platform_device i2c_bfin_twi_device = {
487 .name = "i2c-bfin-twi",
488 .id = 0,
489 .num_resources = ARRAY_SIZE(bfin_twi0_resource),
490 .resource = bfin_twi0_resource,
491};
492#endif
493
494static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
495#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
496 {
497 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
498 },
499#endif
500#if defined(CONFIG_INPUT_PCF8574) || defined(CONFIG_INPUT_PCF8574_MODULE)
501 {
502 I2C_BOARD_INFO("pcf8574_keypad", 0x27),
503 .irq = IRQ_PF8,
504 },
505#endif
506};
507
508#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
509#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
510static struct resource bfin_sport0_uart_resources[] = {
511 {
512 .start = SPORT0_TCR1,
513 .end = SPORT0_MRCS3+4,
514 .flags = IORESOURCE_MEM,
515 },
516 {
517 .start = IRQ_SPORT0_RX,
518 .end = IRQ_SPORT0_RX+1,
519 .flags = IORESOURCE_IRQ,
520 },
521 {
522 .start = IRQ_SPORT0_ERROR,
523 .end = IRQ_SPORT0_ERROR,
524 .flags = IORESOURCE_IRQ,
525 },
526};
527
528unsigned short bfin_sport0_peripherals[] = {
529 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
530 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
531};
532
533static struct platform_device bfin_sport0_uart_device = {
534 .name = "bfin-sport-uart",
535 .id = 0,
536 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
537 .resource = bfin_sport0_uart_resources,
538 .dev = {
539 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
540 },
541};
542#endif
543#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
544static struct resource bfin_sport1_uart_resources[] = {
545 {
546 .start = SPORT1_TCR1,
547 .end = SPORT1_MRCS3+4,
548 .flags = IORESOURCE_MEM,
549 },
550 {
551 .start = IRQ_SPORT1_RX,
552 .end = IRQ_SPORT1_RX+1,
553 .flags = IORESOURCE_IRQ,
554 },
555 {
556 .start = IRQ_SPORT1_ERROR,
557 .end = IRQ_SPORT1_ERROR,
558 .flags = IORESOURCE_IRQ,
559 },
560};
561
562unsigned short bfin_sport1_peripherals[] = {
563 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
564 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
565};
566
567static struct platform_device bfin_sport1_uart_device = {
568 .name = "bfin-sport-uart",
569 .id = 1,
570 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
571 .resource = bfin_sport1_uart_resources,
572 .dev = {
573 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
574 },
575};
576#endif
577#endif
578
579#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
580#include <linux/input.h>
581#include <linux/gpio_keys.h>
582
583static struct gpio_keys_button bfin_gpio_keys_table[] = {
584 {BTN_0, GPIO_PG0, 1, "gpio-keys: BTN0"},
585 {BTN_1, GPIO_PG13, 1, "gpio-keys: BTN1"},
586};
587
588static struct gpio_keys_platform_data bfin_gpio_keys_data = {
589 .buttons = bfin_gpio_keys_table,
590 .nbuttons = ARRAY_SIZE(bfin_gpio_keys_table),
591};
592
593static struct platform_device bfin_device_gpiokeys = {
594 .name = "gpio-keys",
595 .dev = {
596 .platform_data = &bfin_gpio_keys_data,
597 },
598};
599#endif
600
601#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
602
603static struct bfin_sd_host bfin_sdh_data = {
604 .dma_chan = CH_RSI,
605 .irq_int0 = IRQ_RSI_INT0,
606 .pin_req = {P_RSI_DATA0, P_RSI_DATA1, P_RSI_DATA2, P_RSI_DATA3, P_RSI_CMD, P_RSI_CLK, 0},
607};
608
609static struct platform_device bf51x_sdh_device = {
610 .name = "bfin-sdh",
611 .id = 0,
612 .dev = {
613 .platform_data = &bfin_sdh_data,
614 },
615};
616#endif
617
618static const unsigned int cclk_vlev_datasheet[] =
619{
620 VRPAIR(VLEV_100, 400000000),
621 VRPAIR(VLEV_105, 426000000),
622 VRPAIR(VLEV_110, 500000000),
623 VRPAIR(VLEV_115, 533000000),
624 VRPAIR(VLEV_120, 600000000),
625};
626
627static struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
628 .tuple_tab = cclk_vlev_datasheet,
629 .tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
630 .vr_settling_time = 25 /* us */,
631};
632
633static struct platform_device bfin_dpmc = {
634 .name = "bfin dpmc",
635 .dev = {
636 .platform_data = &bfin_dmpc_vreg_data,
637 },
638};
639
640static struct platform_device *tcm_devices[] __initdata = {
641
642 &bfin_dpmc,
643
644#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
645 &rtc_device,
646#endif
647
648#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
649 &bfin_mii_bus,
650 &bfin_mac_device,
651#endif
652
653#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
654 &bfin_spi0_device,
655 &bfin_spi1_device,
656#endif
657
658#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
659#ifdef CONFIG_SERIAL_BFIN_UART0
660 &bfin_uart0_device,
661#endif
662#ifdef CONFIG_SERIAL_BFIN_UART1
663 &bfin_uart1_device,
664#endif
665#endif
666
667#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
668#ifdef CONFIG_BFIN_SIR0
669 &bfin_sir0_device,
670#endif
671#ifdef CONFIG_BFIN_SIR1
672 &bfin_sir1_device,
673#endif
674#endif
675
676#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
677 &i2c_bfin_twi_device,
678#endif
679
680#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
681#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
682 &bfin_sport0_uart_device,
683#endif
684#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
685 &bfin_sport1_uart_device,
686#endif
687#endif
688
689#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
690 &bfin_device_gpiokeys,
691#endif
692
693#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
694 &bf51x_sdh_device,
695#endif
696
697#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
698 &tcm_flash_device,
699#endif
700};
701
702static int __init tcm_init(void)
703{
704 printk(KERN_INFO "%s(): registering device resources\n", __func__);
705 i2c_register_board_info(0, bfin_i2c_board_info,
706 ARRAY_SIZE(bfin_i2c_board_info));
707 platform_add_devices(tcm_devices, ARRAY_SIZE(tcm_devices));
708 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
709 return 0;
710}
711
712arch_initcall(tcm_init);
713
714static struct platform_device *tcm_early_devices[] __initdata = {
715#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
716#ifdef CONFIG_SERIAL_BFIN_UART0
717 &bfin_uart0_device,
718#endif
719#ifdef CONFIG_SERIAL_BFIN_UART1
720 &bfin_uart1_device,
721#endif
722#endif
723
724#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
725#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
726 &bfin_sport0_uart_device,
727#endif
728#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
729 &bfin_sport1_uart_device,
730#endif
731#endif
732};
733
734void __init native_machine_early_platform_add_devices(void)
735{
736 printk(KERN_INFO "register early platform devices\n");
737 early_platform_add_devices(tcm_early_devices,
738 ARRAY_SIZE(tcm_early_devices));
739}
740
741void native_machine_restart(char *cmd)
742{
743 /* workaround reboot hang when booting from SPI */
744 if ((bfin_read_SYSCR() & 0x7) == 0x3)
745 bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
746}
747
748void bfin_get_ether_addr(char *addr)
749{
750 random_ether_addr(addr);
751 printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
752}
753EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf518/include/mach/irq.h b/arch/blackfin/mach-bf518/include/mach/irq.h
index 14e52ec7afa5..435e76e31aaa 100644
--- a/arch/blackfin/mach-bf518/include/mach/irq.h
+++ b/arch/blackfin/mach-bf518/include/mach/irq.h
@@ -151,7 +151,17 @@
151 151
152#define GPIO_IRQ_BASE IRQ_PF0 152#define GPIO_IRQ_BASE IRQ_PF0
153 153
154#define NR_IRQS (IRQ_PH15 + 1) 154#define IRQ_MAC_PHYINT 119 /* PHY_INT Interrupt */
155#define IRQ_MAC_MMCINT 120 /* MMC Counter Interrupt */
156#define IRQ_MAC_RXFSINT 121 /* RX Frame-Status Interrupt */
157#define IRQ_MAC_TXFSINT 122 /* TX Frame-Status Interrupt */
158#define IRQ_MAC_WAKEDET 123 /* Wake-Up Interrupt */
159#define IRQ_MAC_RXDMAERR 124 /* RX DMA Direction Error Interrupt */
160#define IRQ_MAC_TXDMAERR 125 /* TX DMA Direction Error Interrupt */
161#define IRQ_MAC_STMDONE 126 /* Station Mgt. Transfer Done Interrupt */
162
163#define NR_MACH_IRQS (IRQ_MAC_STMDONE + 1)
164#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
155 165
156#define IVG7 7 166#define IVG7 7
157#define IVG8 8 167#define IVG8 8
diff --git a/arch/blackfin/mach-bf518/include/mach/mem_map.h b/arch/blackfin/mach-bf518/include/mach/mem_map.h
index 3c6777cb3532..073b5d73d391 100644
--- a/arch/blackfin/mach-bf518/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf518/include/mach/mem_map.h
@@ -41,7 +41,7 @@
41#define L1_DATA_A_START 0xFF800000 41#define L1_DATA_A_START 0xFF800000
42#define L1_DATA_B_START 0xFF900000 42#define L1_DATA_B_START 0xFF900000
43 43
44#define L1_CODE_LENGTH 0xC000 44#define L1_CODE_LENGTH 0x8000
45 45
46#ifdef CONFIG_BFIN_DCACHE 46#ifdef CONFIG_BFIN_DCACHE
47 47
diff --git a/arch/blackfin/mach-bf527/boards/Kconfig b/arch/blackfin/mach-bf527/boards/Kconfig
index df224d04e167..b14c28810a44 100644
--- a/arch/blackfin/mach-bf527/boards/Kconfig
+++ b/arch/blackfin/mach-bf527/boards/Kconfig
@@ -9,6 +9,11 @@ config BFIN527_EZKIT
9 help 9 help
10 BF527-EZKIT-LITE board support. 10 BF527-EZKIT-LITE board support.
11 11
12config BFIN527_EZKIT_V2
13 bool "BF527-EZKIT-V2"
14 help
15 BF527-EZKIT-LITE V2.1+ board support.
16
12config BFIN527_BLUETECHNIX_CM 17config BFIN527_BLUETECHNIX_CM
13 bool "Bluetechnix CM-BF527" 18 bool "Bluetechnix CM-BF527"
14 help 19 help
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile
index eb6ed3362f9f..51a5817c4a90 100644
--- a/arch/blackfin/mach-bf527/boards/Makefile
+++ b/arch/blackfin/mach-bf527/boards/Makefile
@@ -3,5 +3,6 @@
3# 3#
4 4
5obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o 5obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o
6obj-$(CONFIG_BFIN527_EZKIT_V2) += ezkit.o
6obj-$(CONFIG_BFIN527_BLUETECHNIX_CM) += cm_bf527.o 7obj-$(CONFIG_BFIN527_BLUETECHNIX_CM) += cm_bf527.o
7obj-$(CONFIG_BFIN526_EZBRD) += ezbrd.o 8obj-$(CONFIG_BFIN526_EZBRD) += ezbrd.o
diff --git a/arch/blackfin/mach-bf527/boards/cm_bf527.c b/arch/blackfin/mach-bf527/boards/cm_bf527.c
index 7ab0800e2914..ebe76d1e874a 100644
--- a/arch/blackfin/mach-bf527/boards/cm_bf527.c
+++ b/arch/blackfin/mach-bf527/boards/cm_bf527.c
@@ -18,7 +18,6 @@
18#include <linux/i2c.h> 18#include <linux/i2c.h>
19#include <linux/irq.h> 19#include <linux/irq.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/usb/sl811.h>
22#include <linux/usb/musb.h> 21#include <linux/usb/musb.h>
23#include <asm/dma.h> 22#include <asm/dma.h>
24#include <asm/bfin5xx_spi.h> 23#include <asm/bfin5xx_spi.h>
@@ -270,50 +269,6 @@ static struct platform_device dm9000_device = {
270}; 269};
271#endif 270#endif
272 271
273#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
274static struct resource sl811_hcd_resources[] = {
275 {
276 .start = 0x20340000,
277 .end = 0x20340000,
278 .flags = IORESOURCE_MEM,
279 }, {
280 .start = 0x20340004,
281 .end = 0x20340004,
282 .flags = IORESOURCE_MEM,
283 }, {
284 .start = CONFIG_USB_SL811_BFIN_IRQ,
285 .end = CONFIG_USB_SL811_BFIN_IRQ,
286 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
287 },
288};
289
290#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
291void sl811_port_power(struct device *dev, int is_on)
292{
293 gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
294 gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
295}
296#endif
297
298static struct sl811_platform_data sl811_priv = {
299 .potpg = 10,
300 .power = 250, /* == 500mA */
301#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
302 .port_power = &sl811_port_power,
303#endif
304};
305
306static struct platform_device sl811_hcd_device = {
307 .name = "sl811-hcd",
308 .id = 0,
309 .dev = {
310 .platform_data = &sl811_priv,
311 },
312 .num_resources = ARRAY_SIZE(sl811_hcd_resources),
313 .resource = sl811_hcd_resources,
314};
315#endif
316
317#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 272#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
318static struct platform_device bfin_mii_bus = { 273static struct platform_device bfin_mii_bus = {
319 .name = "bfin_mii_bus", 274 .name = "bfin_mii_bus",
@@ -384,8 +339,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
384}; 339};
385#endif 340#endif
386 341
387#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 342#if defined(CONFIG_SND_BLACKFIN_AD183X) \
388 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 343 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
389static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 344static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
390 .enable_dma = 0, 345 .enable_dma = 0,
391 .bits_per_word = 16, 346 .bits_per_word = 16,
@@ -462,8 +417,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
462 }, 417 },
463#endif 418#endif
464 419
465#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 420#if defined(CONFIG_SND_BLACKFIN_AD183X) \
466 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 421 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
467 { 422 {
468 .modalias = "ad1836", 423 .modalias = "ad1836",
469 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 424 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -603,30 +558,105 @@ static struct platform_device cm_flash_device = {
603#endif 558#endif
604 559
605#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 560#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
606static struct resource bfin_uart_resources[] = {
607#ifdef CONFIG_SERIAL_BFIN_UART0 561#ifdef CONFIG_SERIAL_BFIN_UART0
562static struct resource bfin_uart0_resources[] = {
608 { 563 {
609 .start = 0xFFC00400, 564 .start = UART0_THR,
610 .end = 0xFFC004FF, 565 .end = UART0_GCTL+2,
611 .flags = IORESOURCE_MEM, 566 .flags = IORESOURCE_MEM,
612 }, 567 },
568 {
569 .start = IRQ_UART0_RX,
570 .end = IRQ_UART0_RX+1,
571 .flags = IORESOURCE_IRQ,
572 },
573 {
574 .start = IRQ_UART0_ERROR,
575 .end = IRQ_UART0_ERROR,
576 .flags = IORESOURCE_IRQ,
577 },
578 {
579 .start = CH_UART0_TX,
580 .end = CH_UART0_TX,
581 .flags = IORESOURCE_DMA,
582 },
583 {
584 .start = CH_UART0_RX,
585 .end = CH_UART0_RX,
586 .flags = IORESOURCE_DMA,
587 },
588};
589
590unsigned short bfin_uart0_peripherals[] = {
591 P_UART0_TX, P_UART0_RX, 0
592};
593
594static struct platform_device bfin_uart0_device = {
595 .name = "bfin-uart",
596 .id = 0,
597 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
598 .resource = bfin_uart0_resources,
599 .dev = {
600 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
601 },
602};
613#endif 603#endif
614#ifdef CONFIG_SERIAL_BFIN_UART1 604#ifdef CONFIG_SERIAL_BFIN_UART1
605static struct resource bfin_uart1_resources[] = {
615 { 606 {
616 .start = 0xFFC02000, 607 .start = UART1_THR,
617 .end = 0xFFC020FF, 608 .end = UART1_GCTL+2,
618 .flags = IORESOURCE_MEM, 609 .flags = IORESOURCE_MEM,
619 }, 610 },
611 {
612 .start = IRQ_UART1_RX,
613 .end = IRQ_UART1_RX+1,
614 .flags = IORESOURCE_IRQ,
615 },
616 {
617 .start = IRQ_UART1_ERROR,
618 .end = IRQ_UART1_ERROR,
619 .flags = IORESOURCE_IRQ,
620 },
621 {
622 .start = CH_UART1_TX,
623 .end = CH_UART1_TX,
624 .flags = IORESOURCE_DMA,
625 },
626 {
627 .start = CH_UART1_RX,
628 .end = CH_UART1_RX,
629 .flags = IORESOURCE_DMA,
630 },
631#ifdef CONFIG_BFIN_UART1_CTSRTS
632 { /* CTS pin */
633 .start = GPIO_PF9,
634 .end = GPIO_PF9,
635 .flags = IORESOURCE_IO,
636 },
637 { /* RTS pin */
638 .start = GPIO_PF10,
639 .end = GPIO_PF10,
640 .flags = IORESOURCE_IO,
641 },
620#endif 642#endif
621}; 643};
622 644
623static struct platform_device bfin_uart_device = { 645unsigned short bfin_uart1_peripherals[] = {
646 P_UART1_TX, P_UART1_RX, 0
647};
648
649static struct platform_device bfin_uart1_device = {
624 .name = "bfin-uart", 650 .name = "bfin-uart",
625 .id = 1, 651 .id = 1,
626 .num_resources = ARRAY_SIZE(bfin_uart_resources), 652 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
627 .resource = bfin_uart_resources, 653 .resource = bfin_uart1_resources,
654 .dev = {
655 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
656 },
628}; 657};
629#endif 658#endif
659#endif
630 660
631#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 661#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
632#ifdef CONFIG_BFIN_SIR0 662#ifdef CONFIG_BFIN_SIR0
@@ -725,16 +755,75 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
725}; 755};
726 756
727#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 757#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
758#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
759static struct resource bfin_sport0_uart_resources[] = {
760 {
761 .start = SPORT0_TCR1,
762 .end = SPORT0_MRCS3+4,
763 .flags = IORESOURCE_MEM,
764 },
765 {
766 .start = IRQ_SPORT0_RX,
767 .end = IRQ_SPORT0_RX+1,
768 .flags = IORESOURCE_IRQ,
769 },
770 {
771 .start = IRQ_SPORT0_ERROR,
772 .end = IRQ_SPORT0_ERROR,
773 .flags = IORESOURCE_IRQ,
774 },
775};
776
777unsigned short bfin_sport0_peripherals[] = {
778 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
779 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
780};
781
728static struct platform_device bfin_sport0_uart_device = { 782static struct platform_device bfin_sport0_uart_device = {
729 .name = "bfin-sport-uart", 783 .name = "bfin-sport-uart",
730 .id = 0, 784 .id = 0,
785 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
786 .resource = bfin_sport0_uart_resources,
787 .dev = {
788 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
789 },
790};
791#endif
792#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
793static struct resource bfin_sport1_uart_resources[] = {
794 {
795 .start = SPORT1_TCR1,
796 .end = SPORT1_MRCS3+4,
797 .flags = IORESOURCE_MEM,
798 },
799 {
800 .start = IRQ_SPORT1_RX,
801 .end = IRQ_SPORT1_RX+1,
802 .flags = IORESOURCE_IRQ,
803 },
804 {
805 .start = IRQ_SPORT1_ERROR,
806 .end = IRQ_SPORT1_ERROR,
807 .flags = IORESOURCE_IRQ,
808 },
809};
810
811unsigned short bfin_sport1_peripherals[] = {
812 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
813 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
731}; 814};
732 815
733static struct platform_device bfin_sport1_uart_device = { 816static struct platform_device bfin_sport1_uart_device = {
734 .name = "bfin-sport-uart", 817 .name = "bfin-sport-uart",
735 .id = 1, 818 .id = 1,
819 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
820 .resource = bfin_sport1_uart_resources,
821 .dev = {
822 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
823 },
736}; 824};
737#endif 825#endif
826#endif
738 827
739#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 828#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
740#include <linux/input.h> 829#include <linux/input.h>
@@ -795,10 +884,6 @@ static struct platform_device *cmbf527_devices[] __initdata = {
795 &rtc_device, 884 &rtc_device,
796#endif 885#endif
797 886
798#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
799 &sl811_hcd_device,
800#endif
801
802#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE) 887#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
803 &bfin_isp1760_device, 888 &bfin_isp1760_device,
804#endif 889#endif
@@ -829,7 +914,12 @@ static struct platform_device *cmbf527_devices[] __initdata = {
829#endif 914#endif
830 915
831#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 916#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
832 &bfin_uart_device, 917#ifdef CONFIG_SERIAL_BFIN_UART0
918 &bfin_uart0_device,
919#endif
920#ifdef CONFIG_SERIAL_BFIN_UART1
921 &bfin_uart1_device,
922#endif
833#endif 923#endif
834 924
835#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 925#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -846,9 +936,13 @@ static struct platform_device *cmbf527_devices[] __initdata = {
846#endif 936#endif
847 937
848#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 938#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
939#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
849 &bfin_sport0_uart_device, 940 &bfin_sport0_uart_device,
941#endif
942#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
850 &bfin_sport1_uart_device, 943 &bfin_sport1_uart_device,
851#endif 944#endif
945#endif
852 946
853#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 947#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
854 &bfin_device_gpiokeys, 948 &bfin_device_gpiokeys,
@@ -871,6 +965,33 @@ static int __init cm_init(void)
871 965
872arch_initcall(cm_init); 966arch_initcall(cm_init);
873 967
968static struct platform_device *cmbf527_early_devices[] __initdata = {
969#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
970#ifdef CONFIG_SERIAL_BFIN_UART0
971 &bfin_uart0_device,
972#endif
973#ifdef CONFIG_SERIAL_BFIN_UART1
974 &bfin_uart1_device,
975#endif
976#endif
977
978#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
979#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
980 &bfin_sport0_uart_device,
981#endif
982#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
983 &bfin_sport1_uart_device,
984#endif
985#endif
986};
987
988void __init native_machine_early_platform_add_devices(void)
989{
990 printk(KERN_INFO "register early platform devices\n");
991 early_platform_add_devices(cmbf527_early_devices,
992 ARRAY_SIZE(cmbf527_early_devices));
993}
994
874void native_machine_restart(char *cmd) 995void native_machine_restart(char *cmd)
875{ 996{
876 /* workaround reboot hang when booting from SPI */ 997 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf527/boards/ezbrd.c b/arch/blackfin/mach-bf527/boards/ezbrd.c
index cad23b15d83c..55069af4f67d 100644
--- a/arch/blackfin/mach-bf527/boards/ezbrd.c
+++ b/arch/blackfin/mach-bf527/boards/ezbrd.c
@@ -274,8 +274,8 @@ static const struct ad7879_platform_data bfin_ad7879_ts_info = {
274 .median = 2, /* do 8 measurements */ 274 .median = 2, /* do 8 measurements */
275 .averaging = 1, /* take the average of 4 middle samples */ 275 .averaging = 1, /* take the average of 4 middle samples */
276 .pen_down_acc_interval = 255, /* 9.4 ms */ 276 .pen_down_acc_interval = 255, /* 9.4 ms */
277 .gpio_output = 1, /* configure AUX/VBAT/GPIO as GPIO output */ 277 .gpio_export = 1, /* Export GPIO to gpiolib */
278 .gpio_default = 1, /* During initialization set GPIO = HIGH */ 278 .gpio_base = -1, /* Dynamic allocation */
279}; 279};
280#endif 280#endif
281 281
@@ -439,30 +439,105 @@ static struct platform_device bfin_spi0_device = {
439#endif /* spi master and devices */ 439#endif /* spi master and devices */
440 440
441#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 441#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
442static struct resource bfin_uart_resources[] = {
443#ifdef CONFIG_SERIAL_BFIN_UART0 442#ifdef CONFIG_SERIAL_BFIN_UART0
443static struct resource bfin_uart0_resources[] = {
444 { 444 {
445 .start = 0xFFC00400, 445 .start = UART0_THR,
446 .end = 0xFFC004FF, 446 .end = UART0_GCTL+2,
447 .flags = IORESOURCE_MEM, 447 .flags = IORESOURCE_MEM,
448 }, 448 },
449 {
450 .start = IRQ_UART0_RX,
451 .end = IRQ_UART0_RX+1,
452 .flags = IORESOURCE_IRQ,
453 },
454 {
455 .start = IRQ_UART0_ERROR,
456 .end = IRQ_UART0_ERROR,
457 .flags = IORESOURCE_IRQ,
458 },
459 {
460 .start = CH_UART0_TX,
461 .end = CH_UART0_TX,
462 .flags = IORESOURCE_DMA,
463 },
464 {
465 .start = CH_UART0_RX,
466 .end = CH_UART0_RX,
467 .flags = IORESOURCE_DMA,
468 },
469};
470
471unsigned short bfin_uart0_peripherals[] = {
472 P_UART0_TX, P_UART0_RX, 0
473};
474
475static struct platform_device bfin_uart0_device = {
476 .name = "bfin-uart",
477 .id = 0,
478 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
479 .resource = bfin_uart0_resources,
480 .dev = {
481 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
482 },
483};
449#endif 484#endif
450#ifdef CONFIG_SERIAL_BFIN_UART1 485#ifdef CONFIG_SERIAL_BFIN_UART1
486static struct resource bfin_uart1_resources[] = {
451 { 487 {
452 .start = 0xFFC02000, 488 .start = UART1_THR,
453 .end = 0xFFC020FF, 489 .end = UART1_GCTL+2,
454 .flags = IORESOURCE_MEM, 490 .flags = IORESOURCE_MEM,
455 }, 491 },
492 {
493 .start = IRQ_UART1_RX,
494 .end = IRQ_UART1_RX+1,
495 .flags = IORESOURCE_IRQ,
496 },
497 {
498 .start = IRQ_UART1_ERROR,
499 .end = IRQ_UART1_ERROR,
500 .flags = IORESOURCE_IRQ,
501 },
502 {
503 .start = CH_UART1_TX,
504 .end = CH_UART1_TX,
505 .flags = IORESOURCE_DMA,
506 },
507 {
508 .start = CH_UART1_RX,
509 .end = CH_UART1_RX,
510 .flags = IORESOURCE_DMA,
511 },
512#ifdef CONFIG_BFIN_UART1_CTSRTS
513 { /* CTS pin */
514 .start = GPIO_PG0,
515 .end = GPIO_PG0,
516 .flags = IORESOURCE_IO,
517 },
518 { /* RTS pin */
519 .start = GPIO_PF10,
520 .end = GPIO_PF10,
521 .flags = IORESOURCE_IO,
522 },
456#endif 523#endif
457}; 524};
458 525
459static struct platform_device bfin_uart_device = { 526unsigned short bfin_uart1_peripherals[] = {
527 P_UART1_TX, P_UART1_RX, 0
528};
529
530static struct platform_device bfin_uart1_device = {
460 .name = "bfin-uart", 531 .name = "bfin-uart",
461 .id = 1, 532 .id = 1,
462 .num_resources = ARRAY_SIZE(bfin_uart_resources), 533 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
463 .resource = bfin_uart_resources, 534 .resource = bfin_uart1_resources,
535 .dev = {
536 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
537 },
464}; 538};
465#endif 539#endif
540#endif
466 541
467#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 542#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
468#ifdef CONFIG_BFIN_SIR0 543#ifdef CONFIG_BFIN_SIR0
@@ -556,16 +631,75 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
556}; 631};
557 632
558#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 633#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
634#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
635static struct resource bfin_sport0_uart_resources[] = {
636 {
637 .start = SPORT0_TCR1,
638 .end = SPORT0_MRCS3+4,
639 .flags = IORESOURCE_MEM,
640 },
641 {
642 .start = IRQ_SPORT0_RX,
643 .end = IRQ_SPORT0_RX+1,
644 .flags = IORESOURCE_IRQ,
645 },
646 {
647 .start = IRQ_SPORT0_ERROR,
648 .end = IRQ_SPORT0_ERROR,
649 .flags = IORESOURCE_IRQ,
650 },
651};
652
653unsigned short bfin_sport0_peripherals[] = {
654 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
655 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
656};
657
559static struct platform_device bfin_sport0_uart_device = { 658static struct platform_device bfin_sport0_uart_device = {
560 .name = "bfin-sport-uart", 659 .name = "bfin-sport-uart",
561 .id = 0, 660 .id = 0,
661 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
662 .resource = bfin_sport0_uart_resources,
663 .dev = {
664 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
665 },
666};
667#endif
668#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
669static struct resource bfin_sport1_uart_resources[] = {
670 {
671 .start = SPORT1_TCR1,
672 .end = SPORT1_MRCS3+4,
673 .flags = IORESOURCE_MEM,
674 },
675 {
676 .start = IRQ_SPORT1_RX,
677 .end = IRQ_SPORT1_RX+1,
678 .flags = IORESOURCE_IRQ,
679 },
680 {
681 .start = IRQ_SPORT1_ERROR,
682 .end = IRQ_SPORT1_ERROR,
683 .flags = IORESOURCE_IRQ,
684 },
685};
686
687unsigned short bfin_sport1_peripherals[] = {
688 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
689 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
562}; 690};
563 691
564static struct platform_device bfin_sport1_uart_device = { 692static struct platform_device bfin_sport1_uart_device = {
565 .name = "bfin-sport-uart", 693 .name = "bfin-sport-uart",
566 .id = 1, 694 .id = 1,
695 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
696 .resource = bfin_sport1_uart_resources,
697 .dev = {
698 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
699 },
567}; 700};
568#endif 701#endif
702#endif
569 703
570#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 704#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
571#include <linux/input.h> 705#include <linux/input.h>
@@ -615,9 +749,10 @@ static struct platform_device bfin_dpmc = {
615#include <asm/bfin-lq035q1.h> 749#include <asm/bfin-lq035q1.h>
616 750
617static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { 751static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
618 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, 752 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
619 .use_bl = 1, 753 .ppi_mode = USE_RGB565_16_BIT_PPI,
620 .gpio_bl = GPIO_PG12, 754 .use_bl = 1,
755 .gpio_bl = GPIO_PG12,
621}; 756};
622 757
623static struct resource bfin_lq035q1_resources[] = { 758static struct resource bfin_lq035q1_resources[] = {
@@ -665,7 +800,12 @@ static struct platform_device *stamp_devices[] __initdata = {
665#endif 800#endif
666 801
667#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 802#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
668 &bfin_uart_device, 803#ifdef CONFIG_SERIAL_BFIN_UART0
804 &bfin_uart0_device,
805#endif
806#ifdef CONFIG_SERIAL_BFIN_UART1
807 &bfin_uart1_device,
808#endif
669#endif 809#endif
670 810
671#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE) 811#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
@@ -686,9 +826,13 @@ static struct platform_device *stamp_devices[] __initdata = {
686#endif 826#endif
687 827
688#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 828#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
829#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
689 &bfin_sport0_uart_device, 830 &bfin_sport0_uart_device,
831#endif
832#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
690 &bfin_sport1_uart_device, 833 &bfin_sport1_uart_device,
691#endif 834#endif
835#endif
692 836
693#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 837#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
694 &bfin_device_gpiokeys, 838 &bfin_device_gpiokeys,
@@ -711,6 +855,33 @@ static int __init ezbrd_init(void)
711 855
712arch_initcall(ezbrd_init); 856arch_initcall(ezbrd_init);
713 857
858static struct platform_device *ezbrd_early_devices[] __initdata = {
859#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
860#ifdef CONFIG_SERIAL_BFIN_UART0
861 &bfin_uart0_device,
862#endif
863#ifdef CONFIG_SERIAL_BFIN_UART1
864 &bfin_uart1_device,
865#endif
866#endif
867
868#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
869#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
870 &bfin_sport0_uart_device,
871#endif
872#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
873 &bfin_sport1_uart_device,
874#endif
875#endif
876};
877
878void __init native_machine_early_platform_add_devices(void)
879{
880 printk(KERN_INFO "register early platform devices\n");
881 early_platform_add_devices(ezbrd_early_devices,
882 ARRAY_SIZE(ezbrd_early_devices));
883}
884
714void native_machine_restart(char *cmd) 885void native_machine_restart(char *cmd)
715{ 886{
716 /* workaround reboot hang when booting from SPI */ 887 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
index 5294fdd20732..923383386aa1 100644
--- a/arch/blackfin/mach-bf527/boards/ezkit.c
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -16,8 +16,9 @@
16#include <linux/i2c.h> 16#include <linux/i2c.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/usb/sl811.h>
20#include <linux/usb/musb.h> 19#include <linux/usb/musb.h>
20#include <linux/leds.h>
21#include <linux/input.h>
21#include <asm/dma.h> 22#include <asm/dma.h>
22#include <asm/bfin5xx_spi.h> 23#include <asm/bfin5xx_spi.h>
23#include <asm/reboot.h> 24#include <asm/reboot.h>
@@ -29,7 +30,11 @@
29/* 30/*
30 * Name the Board for the /proc/cpuinfo 31 * Name the Board for the /proc/cpuinfo
31 */ 32 */
33#ifdef CONFIG_BFIN527_EZKIT_V2
34const char bfin_board_name[] = "ADI BF527-EZKIT V2";
35#else
32const char bfin_board_name[] = "ADI BF527-EZKIT"; 36const char bfin_board_name[] = "ADI BF527-EZKIT";
37#endif
33 38
34/* 39/*
35 * Driver needs to know address, irq and flag pin. 40 * Driver needs to know address, irq and flag pin.
@@ -143,6 +148,33 @@ static struct platform_device bf52x_t350mcqb_device = {
143}; 148};
144#endif 149#endif
145 150
151#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
152#include <asm/bfin-lq035q1.h>
153
154static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
155 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
156 .ppi_mode = USE_RGB565_8_BIT_PPI,
157};
158
159static struct resource bfin_lq035q1_resources[] = {
160 {
161 .start = IRQ_PPI_ERROR,
162 .end = IRQ_PPI_ERROR,
163 .flags = IORESOURCE_IRQ,
164 },
165};
166
167static struct platform_device bfin_lq035q1_device = {
168 .name = "bfin-lq035q1",
169 .id = -1,
170 .num_resources = ARRAY_SIZE(bfin_lq035q1_resources),
171 .resource = bfin_lq035q1_resources,
172 .dev = {
173 .platform_data = &bfin_lq035q1_data,
174 },
175};
176#endif
177
146#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) 178#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
147static struct mtd_partition ezkit_partitions[] = { 179static struct mtd_partition ezkit_partitions[] = {
148 { 180 {
@@ -326,50 +358,6 @@ static struct platform_device dm9000_device = {
326}; 358};
327#endif 359#endif
328 360
329#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
330static struct resource sl811_hcd_resources[] = {
331 {
332 .start = 0x20340000,
333 .end = 0x20340000,
334 .flags = IORESOURCE_MEM,
335 }, {
336 .start = 0x20340004,
337 .end = 0x20340004,
338 .flags = IORESOURCE_MEM,
339 }, {
340 .start = CONFIG_USB_SL811_BFIN_IRQ,
341 .end = CONFIG_USB_SL811_BFIN_IRQ,
342 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
343 },
344};
345
346#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
347void sl811_port_power(struct device *dev, int is_on)
348{
349 gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
350 gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
351}
352#endif
353
354static struct sl811_platform_data sl811_priv = {
355 .potpg = 10,
356 .power = 250, /* == 500mA */
357#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
358 .port_power = &sl811_port_power,
359#endif
360};
361
362static struct platform_device sl811_hcd_device = {
363 .name = "sl811-hcd",
364 .id = 0,
365 .dev = {
366 .platform_data = &sl811_priv,
367 },
368 .num_resources = ARRAY_SIZE(sl811_hcd_resources),
369 .resource = sl811_hcd_resources,
370};
371#endif
372
373#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 361#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
374static struct platform_device bfin_mii_bus = { 362static struct platform_device bfin_mii_bus = {
375 .name = "bfin_mii_bus", 363 .name = "bfin_mii_bus",
@@ -440,8 +428,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
440}; 428};
441#endif 429#endif
442 430
443#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 431#if defined(CONFIG_SND_BLACKFIN_AD183X) \
444 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 432 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
445static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 433static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
446 .enable_dma = 0, 434 .enable_dma = 0,
447 .bits_per_word = 16, 435 .bits_per_word = 16,
@@ -488,8 +476,7 @@ static const struct ad7879_platform_data bfin_ad7879_ts_info = {
488 .median = 2, /* do 8 measurements */ 476 .median = 2, /* do 8 measurements */
489 .averaging = 1, /* take the average of 4 middle samples */ 477 .averaging = 1, /* take the average of 4 middle samples */
490 .pen_down_acc_interval = 255, /* 9.4 ms */ 478 .pen_down_acc_interval = 255, /* 9.4 ms */
491 .gpio_output = 1, /* configure AUX/VBAT/GPIO as GPIO output */ 479 .gpio_export = 0, /* Export GPIO to gpiolib */
492 .gpio_default = 1, /* During initialization set GPIO = HIGH */
493}; 480};
494#endif 481#endif
495 482
@@ -500,14 +487,6 @@ static struct bfin5xx_spi_chip spi_ad7879_chip_info = {
500}; 487};
501#endif 488#endif
502 489
503#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
504 && defined(CONFIG_SND_SOC_WM8731_SPI)
505static struct bfin5xx_spi_chip spi_wm8731_chip_info = {
506 .enable_dma = 0,
507 .bits_per_word = 16,
508};
509#endif
510
511#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 490#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
512static struct bfin5xx_spi_chip spidev_chip_info = { 491static struct bfin5xx_spi_chip spidev_chip_info = {
513 .enable_dma = 0, 492 .enable_dma = 0,
@@ -515,6 +494,29 @@ static struct bfin5xx_spi_chip spidev_chip_info = {
515}; 494};
516#endif 495#endif
517 496
497#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
498static struct platform_device bfin_i2s = {
499 .name = "bfin-i2s",
500 .id = CONFIG_SND_BF5XX_SPORT_NUM,
501 /* TODO: add platform data here */
502};
503#endif
504
505#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
506static struct platform_device bfin_tdm = {
507 .name = "bfin-tdm",
508 .id = CONFIG_SND_BF5XX_SPORT_NUM,
509 /* TODO: add platform data here */
510};
511#endif
512
513#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
514static struct bfin5xx_spi_chip lq035q1_spi_chip_info = {
515 .enable_dma = 0,
516 .bits_per_word = 8,
517};
518#endif
519
518static struct spi_board_info bfin_spi_board_info[] __initdata = { 520static struct spi_board_info bfin_spi_board_info[] __initdata = {
519#if defined(CONFIG_MTD_M25P80) \ 521#if defined(CONFIG_MTD_M25P80) \
520 || defined(CONFIG_MTD_M25P80_MODULE) 522 || defined(CONFIG_MTD_M25P80_MODULE)
@@ -542,8 +544,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
542 }, 544 },
543#endif 545#endif
544 546
545#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 547#if defined(CONFIG_SND_BLACKFIN_AD183X) \
546 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 548 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
547 { 549 {
548 .modalias = "ad1836", 550 .modalias = "ad1836",
549 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 551 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -586,17 +588,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
586 .mode = SPI_CPHA | SPI_CPOL, 588 .mode = SPI_CPHA | SPI_CPOL,
587 }, 589 },
588#endif 590#endif
589#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
590 && defined(CONFIG_SND_SOC_WM8731_SPI)
591 {
592 .modalias = "wm8731",
593 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
594 .bus_num = 0,
595 .chip_select = 5,
596 .controller_data = &spi_wm8731_chip_info,
597 .mode = SPI_MODE_0,
598 },
599#endif
600#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 591#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
601 { 592 {
602 .modalias = "spidev", 593 .modalias = "spidev",
@@ -606,6 +597,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
606 .controller_data = &spidev_chip_info, 597 .controller_data = &spidev_chip_info,
607 }, 598 },
608#endif 599#endif
600#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
601 {
602 .modalias = "bfin-lq035q1-spi",
603 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
604 .bus_num = 0,
605 .chip_select = 7,
606 .controller_data = &lq035q1_spi_chip_info,
607 .mode = SPI_CPHA | SPI_CPOL,
608 },
609#endif
609}; 610};
610 611
611#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 612#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
@@ -647,30 +648,105 @@ static struct platform_device bfin_spi0_device = {
647#endif /* spi master and devices */ 648#endif /* spi master and devices */
648 649
649#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 650#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
650static struct resource bfin_uart_resources[] = {
651#ifdef CONFIG_SERIAL_BFIN_UART0 651#ifdef CONFIG_SERIAL_BFIN_UART0
652static struct resource bfin_uart0_resources[] = {
652 { 653 {
653 .start = 0xFFC00400, 654 .start = UART0_THR,
654 .end = 0xFFC004FF, 655 .end = UART0_GCTL+2,
655 .flags = IORESOURCE_MEM, 656 .flags = IORESOURCE_MEM,
656 }, 657 },
658 {
659 .start = IRQ_UART0_RX,
660 .end = IRQ_UART0_RX+1,
661 .flags = IORESOURCE_IRQ,
662 },
663 {
664 .start = IRQ_UART0_ERROR,
665 .end = IRQ_UART0_ERROR,
666 .flags = IORESOURCE_IRQ,
667 },
668 {
669 .start = CH_UART0_TX,
670 .end = CH_UART0_TX,
671 .flags = IORESOURCE_DMA,
672 },
673 {
674 .start = CH_UART0_RX,
675 .end = CH_UART0_RX,
676 .flags = IORESOURCE_DMA,
677 },
678};
679
680unsigned short bfin_uart0_peripherals[] = {
681 P_UART0_TX, P_UART0_RX, 0
682};
683
684static struct platform_device bfin_uart0_device = {
685 .name = "bfin-uart",
686 .id = 0,
687 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
688 .resource = bfin_uart0_resources,
689 .dev = {
690 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
691 },
692};
657#endif 693#endif
658#ifdef CONFIG_SERIAL_BFIN_UART1 694#ifdef CONFIG_SERIAL_BFIN_UART1
695static struct resource bfin_uart1_resources[] = {
659 { 696 {
660 .start = 0xFFC02000, 697 .start = UART1_THR,
661 .end = 0xFFC020FF, 698 .end = UART1_GCTL+2,
662 .flags = IORESOURCE_MEM, 699 .flags = IORESOURCE_MEM,
663 }, 700 },
701 {
702 .start = IRQ_UART1_RX,
703 .end = IRQ_UART1_RX+1,
704 .flags = IORESOURCE_IRQ,
705 },
706 {
707 .start = IRQ_UART1_ERROR,
708 .end = IRQ_UART1_ERROR,
709 .flags = IORESOURCE_IRQ,
710 },
711 {
712 .start = CH_UART1_TX,
713 .end = CH_UART1_TX,
714 .flags = IORESOURCE_DMA,
715 },
716 {
717 .start = CH_UART1_RX,
718 .end = CH_UART1_RX,
719 .flags = IORESOURCE_DMA,
720 },
721#ifdef CONFIG_BFIN_UART1_CTSRTS
722 { /* CTS pin */
723 .start = GPIO_PF9,
724 .end = GPIO_PF9,
725 .flags = IORESOURCE_IO,
726 },
727 { /* RTS pin */
728 .start = GPIO_PF10,
729 .end = GPIO_PF10,
730 .flags = IORESOURCE_IO,
731 },
664#endif 732#endif
665}; 733};
666 734
667static struct platform_device bfin_uart_device = { 735unsigned short bfin_uart1_peripherals[] = {
736 P_UART1_TX, P_UART1_RX, 0
737};
738
739static struct platform_device bfin_uart1_device = {
668 .name = "bfin-uart", 740 .name = "bfin-uart",
669 .id = 1, 741 .id = 1,
670 .num_resources = ARRAY_SIZE(bfin_uart_resources), 742 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
671 .resource = bfin_uart_resources, 743 .resource = bfin_uart1_resources,
744 .dev = {
745 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
746 },
672}; 747};
673#endif 748#endif
749#endif
674 750
675#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 751#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
676#ifdef CONFIG_BFIN_SIR0 752#ifdef CONFIG_BFIN_SIR0
@@ -749,6 +825,71 @@ static struct platform_device i2c_bfin_twi_device = {
749}; 825};
750#endif 826#endif
751 827
828#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
829#include <linux/mfd/adp5520.h>
830
831 /*
832 * ADP5520/5501 LEDs Data
833 */
834
835static struct led_info adp5520_leds[] = {
836 {
837 .name = "adp5520-led1",
838 .default_trigger = "none",
839 .flags = FLAG_ID_ADP5520_LED1_ADP5501_LED0 | ADP5520_LED_OFFT_600ms,
840 },
841};
842
843static struct adp5520_leds_platform_data adp5520_leds_data = {
844 .num_leds = ARRAY_SIZE(adp5520_leds),
845 .leds = adp5520_leds,
846 .fade_in = ADP5520_FADE_T_600ms,
847 .fade_out = ADP5520_FADE_T_600ms,
848 .led_on_time = ADP5520_LED_ONT_600ms,
849};
850
851 /*
852 * ADP5520 Keypad Data
853 */
854
855static const unsigned short adp5520_keymap[ADP5520_KEYMAPSIZE] = {
856 [ADP5520_KEY(3, 3)] = KEY_1,
857 [ADP5520_KEY(2, 3)] = KEY_2,
858 [ADP5520_KEY(1, 3)] = KEY_3,
859 [ADP5520_KEY(0, 3)] = KEY_UP,
860 [ADP5520_KEY(3, 2)] = KEY_4,
861 [ADP5520_KEY(2, 2)] = KEY_5,
862 [ADP5520_KEY(1, 2)] = KEY_6,
863 [ADP5520_KEY(0, 2)] = KEY_DOWN,
864 [ADP5520_KEY(3, 1)] = KEY_7,
865 [ADP5520_KEY(2, 1)] = KEY_8,
866 [ADP5520_KEY(1, 1)] = KEY_9,
867 [ADP5520_KEY(0, 1)] = KEY_DOT,
868 [ADP5520_KEY(3, 0)] = KEY_BACKSPACE,
869 [ADP5520_KEY(2, 0)] = KEY_0,
870 [ADP5520_KEY(1, 0)] = KEY_HELP,
871 [ADP5520_KEY(0, 0)] = KEY_ENTER,
872};
873
874static struct adp5520_keys_platform_data adp5520_keys_data = {
875 .rows_en_mask = ADP5520_ROW_R3 | ADP5520_ROW_R2 | ADP5520_ROW_R1 | ADP5520_ROW_R0,
876 .cols_en_mask = ADP5520_COL_C3 | ADP5520_COL_C2 | ADP5520_COL_C1 | ADP5520_COL_C0,
877 .keymap = adp5520_keymap,
878 .keymapsize = ARRAY_SIZE(adp5520_keymap),
879 .repeat = 0,
880};
881
882 /*
883 * ADP5520/5501 Multifuction Device Init Data
884 */
885
886static struct adp5520_platform_data adp5520_pdev_data = {
887 .leds = &adp5520_leds_data,
888 .keys = &adp5520_keys_data,
889};
890
891#endif
892
752static struct i2c_board_info __initdata bfin_i2c_board_info[] = { 893static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
753#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) 894#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
754 { 895 {
@@ -766,22 +907,99 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
766 I2C_BOARD_INFO("bfin-adv7393", 0x2B), 907 I2C_BOARD_INFO("bfin-adv7393", 0x2B),
767 }, 908 },
768#endif 909#endif
910#if defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
911 {
912 I2C_BOARD_INFO("ad7879", 0x2C),
913 .irq = IRQ_PF8,
914 .platform_data = (void *)&bfin_ad7879_ts_info,
915 },
916#endif
917#if defined(CONFIG_PMIC_ADP5520) || defined(CONFIG_PMIC_ADP5520_MODULE)
918 {
919 I2C_BOARD_INFO("pmic-adp5520", 0x32),
920 .irq = IRQ_PF9,
921 .platform_data = (void *)&adp5520_pdev_data,
922 },
923#endif
924#if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE)
925 {
926 I2C_BOARD_INFO("ssm2602", 0x1b),
927 },
928#endif
769}; 929};
770 930
771#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 931#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
932#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
933static struct resource bfin_sport0_uart_resources[] = {
934 {
935 .start = SPORT0_TCR1,
936 .end = SPORT0_MRCS3+4,
937 .flags = IORESOURCE_MEM,
938 },
939 {
940 .start = IRQ_SPORT0_RX,
941 .end = IRQ_SPORT0_RX+1,
942 .flags = IORESOURCE_IRQ,
943 },
944 {
945 .start = IRQ_SPORT0_ERROR,
946 .end = IRQ_SPORT0_ERROR,
947 .flags = IORESOURCE_IRQ,
948 },
949};
950
951unsigned short bfin_sport0_peripherals[] = {
952 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
953 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
954};
955
772static struct platform_device bfin_sport0_uart_device = { 956static struct platform_device bfin_sport0_uart_device = {
773 .name = "bfin-sport-uart", 957 .name = "bfin-sport-uart",
774 .id = 0, 958 .id = 0,
959 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
960 .resource = bfin_sport0_uart_resources,
961 .dev = {
962 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
963 },
964};
965#endif
966#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
967static struct resource bfin_sport1_uart_resources[] = {
968 {
969 .start = SPORT1_TCR1,
970 .end = SPORT1_MRCS3+4,
971 .flags = IORESOURCE_MEM,
972 },
973 {
974 .start = IRQ_SPORT1_RX,
975 .end = IRQ_SPORT1_RX+1,
976 .flags = IORESOURCE_IRQ,
977 },
978 {
979 .start = IRQ_SPORT1_ERROR,
980 .end = IRQ_SPORT1_ERROR,
981 .flags = IORESOURCE_IRQ,
982 },
983};
984
985unsigned short bfin_sport1_peripherals[] = {
986 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
987 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
775}; 988};
776 989
777static struct platform_device bfin_sport1_uart_device = { 990static struct platform_device bfin_sport1_uart_device = {
778 .name = "bfin-sport-uart", 991 .name = "bfin-sport-uart",
779 .id = 1, 992 .id = 1,
993 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
994 .resource = bfin_sport1_uart_resources,
995 .dev = {
996 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
997 },
780}; 998};
781#endif 999#endif
1000#endif
782 1001
783#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 1002#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
784#include <linux/input.h>
785#include <linux/gpio_keys.h> 1003#include <linux/gpio_keys.h>
786 1004
787static struct gpio_keys_button bfin_gpio_keys_table[] = { 1005static struct gpio_keys_button bfin_gpio_keys_table[] = {
@@ -803,7 +1021,6 @@ static struct platform_device bfin_device_gpiokeys = {
803#endif 1021#endif
804 1022
805#if defined(CONFIG_INPUT_BFIN_ROTARY) || defined(CONFIG_INPUT_BFIN_ROTARY_MODULE) 1023#if defined(CONFIG_INPUT_BFIN_ROTARY) || defined(CONFIG_INPUT_BFIN_ROTARY_MODULE)
806#include <linux/input.h>
807#include <asm/bfin_rotary.h> 1024#include <asm/bfin_rotary.h>
808 1025
809static struct bfin_rotary_platform_data bfin_rotary_data = { 1026static struct bfin_rotary_platform_data bfin_rotary_data = {
@@ -872,10 +1089,6 @@ static struct platform_device *stamp_devices[] __initdata = {
872 &rtc_device, 1089 &rtc_device,
873#endif 1090#endif
874 1091
875#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
876 &sl811_hcd_device,
877#endif
878
879#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE) 1092#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
880 &bfin_isp1760_device, 1093 &bfin_isp1760_device,
881#endif 1094#endif
@@ -909,8 +1122,17 @@ static struct platform_device *stamp_devices[] __initdata = {
909 &bf52x_t350mcqb_device, 1122 &bf52x_t350mcqb_device,
910#endif 1123#endif
911 1124
1125#if defined(CONFIG_FB_BFIN_LQ035Q1) || defined(CONFIG_FB_BFIN_LQ035Q1_MODULE)
1126 &bfin_lq035q1_device,
1127#endif
1128
912#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 1129#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
913 &bfin_uart_device, 1130#ifdef CONFIG_SERIAL_BFIN_UART0
1131 &bfin_uart0_device,
1132#endif
1133#ifdef CONFIG_SERIAL_BFIN_UART1
1134 &bfin_uart1_device,
1135#endif
914#endif 1136#endif
915 1137
916#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 1138#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -927,9 +1149,13 @@ static struct platform_device *stamp_devices[] __initdata = {
927#endif 1149#endif
928 1150
929#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 1151#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
1152#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
930 &bfin_sport0_uart_device, 1153 &bfin_sport0_uart_device,
1154#endif
1155#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
931 &bfin_sport1_uart_device, 1156 &bfin_sport1_uart_device,
932#endif 1157#endif
1158#endif
933 1159
934#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 1160#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
935 &bfin_device_gpiokeys, 1161 &bfin_device_gpiokeys,
@@ -942,6 +1168,14 @@ static struct platform_device *stamp_devices[] __initdata = {
942#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) 1168#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
943 &ezkit_flash_device, 1169 &ezkit_flash_device,
944#endif 1170#endif
1171
1172#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
1173 &bfin_i2s,
1174#endif
1175
1176#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
1177 &bfin_tdm,
1178#endif
945}; 1179};
946 1180
947static int __init ezkit_init(void) 1181static int __init ezkit_init(void)
@@ -956,6 +1190,33 @@ static int __init ezkit_init(void)
956 1190
957arch_initcall(ezkit_init); 1191arch_initcall(ezkit_init);
958 1192
1193static struct platform_device *ezkit_early_devices[] __initdata = {
1194#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
1195#ifdef CONFIG_SERIAL_BFIN_UART0
1196 &bfin_uart0_device,
1197#endif
1198#ifdef CONFIG_SERIAL_BFIN_UART1
1199 &bfin_uart1_device,
1200#endif
1201#endif
1202
1203#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
1204#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1205 &bfin_sport0_uart_device,
1206#endif
1207#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1208 &bfin_sport1_uart_device,
1209#endif
1210#endif
1211};
1212
1213void __init native_machine_early_platform_add_devices(void)
1214{
1215 printk(KERN_INFO "register early platform devices\n");
1216 early_platform_add_devices(ezkit_early_devices,
1217 ARRAY_SIZE(ezkit_early_devices));
1218}
1219
959void native_machine_restart(char *cmd) 1220void native_machine_restart(char *cmd)
960{ 1221{
961 /* workaround reboot hang when booting from SPI */ 1222 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf527/include/mach/irq.h b/arch/blackfin/mach-bf527/include/mach/irq.h
index aa6579a64a2f..704d9253e41d 100644
--- a/arch/blackfin/mach-bf527/include/mach/irq.h
+++ b/arch/blackfin/mach-bf527/include/mach/irq.h
@@ -151,7 +151,17 @@
151 151
152#define GPIO_IRQ_BASE IRQ_PF0 152#define GPIO_IRQ_BASE IRQ_PF0
153 153
154#define NR_IRQS (IRQ_PH15+1) 154#define IRQ_MAC_PHYINT 119 /* PHY_INT Interrupt */
155#define IRQ_MAC_MMCINT 120 /* MMC Counter Interrupt */
156#define IRQ_MAC_RXFSINT 121 /* RX Frame-Status Interrupt */
157#define IRQ_MAC_TXFSINT 122 /* TX Frame-Status Interrupt */
158#define IRQ_MAC_WAKEDET 123 /* Wake-Up Interrupt */
159#define IRQ_MAC_RXDMAERR 124 /* RX DMA Direction Error Interrupt */
160#define IRQ_MAC_TXDMAERR 125 /* TX DMA Direction Error Interrupt */
161#define IRQ_MAC_STMDONE 126 /* Station Mgt. Transfer Done Interrupt */
162
163#define NR_MACH_IRQS (IRQ_MAC_STMDONE + 1)
164#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
155 165
156#define IVG7 7 166#define IVG7 7
157#define IVG8 8 167#define IVG8 8
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
index 4adceb0bdb6d..175371af0692 100644
--- a/arch/blackfin/mach-bf533/boards/H8606.c
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -171,7 +171,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
171}; 171};
172#endif 172#endif
173 173
174#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 174#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
175static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 175static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
176 .enable_dma = 0, 176 .enable_dma = 0,
177 .bits_per_word = 16, 177 .bits_per_word = 16,
@@ -206,7 +206,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
206 }, 206 },
207#endif 207#endif
208 208
209#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 209#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
210 { 210 {
211 .modalias = "ad1836", 211 .modalias = "ad1836",
212 .max_speed_hz = 16, 212 .max_speed_hz = 16,
@@ -257,21 +257,50 @@ static struct platform_device bfin_spi0_device = {
257#endif /* spi master and devices */ 257#endif /* spi master and devices */
258 258
259#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 259#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
260static struct resource bfin_uart_resources[] = { 260#ifdef CONFIG_SERIAL_BFIN_UART0
261static struct resource bfin_uart0_resources[] = {
261 { 262 {
262 .start = 0xFFC00400, 263 .start = BFIN_UART_THR,
263 .end = 0xFFC004FF, 264 .end = BFIN_UART_GCTL+2,
264 .flags = IORESOURCE_MEM, 265 .flags = IORESOURCE_MEM,
265 }, 266 },
267 {
268 .start = IRQ_UART0_RX,
269 .end = IRQ_UART0_RX + 1,
270 .flags = IORESOURCE_IRQ,
271 },
272 {
273 .start = IRQ_UART0_ERROR,
274 .end = IRQ_UART0_ERROR,
275 .flags = IORESOURCE_IRQ,
276 },
277 {
278 .start = CH_UART0_TX,
279 .end = CH_UART0_TX,
280 .flags = IORESOURCE_DMA,
281 },
282 {
283 .start = CH_UART0_RX,
284 .end = CH_UART0_RX,
285 .flags = IORESOURCE_DMA,
286 },
287};
288
289unsigned short bfin_uart0_peripherals[] = {
290 P_UART0_TX, P_UART0_RX, 0
266}; 291};
267 292
268static struct platform_device bfin_uart_device = { 293static struct platform_device bfin_uart0_device = {
269 .name = "bfin-uart", 294 .name = "bfin-uart",
270 .id = 1, 295 .id = 0,
271 .num_resources = ARRAY_SIZE(bfin_uart_resources), 296 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
272 .resource = bfin_uart_resources, 297 .resource = bfin_uart0_resources,
298 .dev = {
299 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
300 },
273}; 301};
274#endif 302#endif
303#endif
275 304
276#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 305#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
277#ifdef CONFIG_BFIN_SIR0 306#ifdef CONFIG_BFIN_SIR0
@@ -394,7 +423,9 @@ static struct platform_device *h8606_devices[] __initdata = {
394#endif 423#endif
395 424
396#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 425#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
397 &bfin_uart_device, 426#ifdef CONFIG_SERIAL_BFIN_UART0
427 &bfin_uart0_device,
428#endif
398#endif 429#endif
399 430
400#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE) 431#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
@@ -424,3 +455,18 @@ static int __init H8606_init(void)
424} 455}
425 456
426arch_initcall(H8606_init); 457arch_initcall(H8606_init);
458
459static struct platform_device *H8606_early_devices[] __initdata = {
460#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
461#ifdef CONFIG_SERIAL_BFIN_UART0
462 &bfin_uart0_device,
463#endif
464#endif
465};
466
467void __init native_machine_early_platform_add_devices(void)
468{
469 printk(KERN_INFO "register early platform devices\n");
470 early_platform_add_devices(H8606_early_devices,
471 ARRAY_SIZE(H8606_early_devices));
472}
diff --git a/arch/blackfin/mach-bf533/boards/blackstamp.c b/arch/blackfin/mach-bf533/boards/blackstamp.c
index b580884848d4..842b4fa76ea9 100644
--- a/arch/blackfin/mach-bf533/boards/blackstamp.c
+++ b/arch/blackfin/mach-bf533/boards/blackstamp.c
@@ -195,21 +195,50 @@ static struct platform_device bfin_spi0_device = {
195#endif /* spi master and devices */ 195#endif /* spi master and devices */
196 196
197#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 197#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
198static struct resource bfin_uart_resources[] = { 198#ifdef CONFIG_SERIAL_BFIN_UART0
199static struct resource bfin_uart0_resources[] = {
199 { 200 {
200 .start = 0xFFC00400, 201 .start = BFIN_UART_THR,
201 .end = 0xFFC004FF, 202 .end = BFIN_UART_GCTL+2,
202 .flags = IORESOURCE_MEM, 203 .flags = IORESOURCE_MEM,
203 }, 204 },
205 {
206 .start = IRQ_UART0_RX,
207 .end = IRQ_UART0_RX + 1,
208 .flags = IORESOURCE_IRQ,
209 },
210 {
211 .start = IRQ_UART0_ERROR,
212 .end = IRQ_UART0_ERROR,
213 .flags = IORESOURCE_IRQ,
214 },
215 {
216 .start = CH_UART0_TX,
217 .end = CH_UART0_TX,
218 .flags = IORESOURCE_DMA,
219 },
220 {
221 .start = CH_UART0_RX,
222 .end = CH_UART0_RX,
223 .flags = IORESOURCE_DMA,
224 },
225};
226
227unsigned short bfin_uart0_peripherals[] = {
228 P_UART0_TX, P_UART0_RX, 0
204}; 229};
205 230
206static struct platform_device bfin_uart_device = { 231static struct platform_device bfin_uart0_device = {
207 .name = "bfin-uart", 232 .name = "bfin-uart",
208 .id = 1, 233 .id = 0,
209 .num_resources = ARRAY_SIZE(bfin_uart_resources), 234 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
210 .resource = bfin_uart_resources, 235 .resource = bfin_uart0_resources,
236 .dev = {
237 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
238 },
211}; 239};
212#endif 240#endif
241#endif
213 242
214#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 243#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
215#ifdef CONFIG_BFIN_SIR0 244#ifdef CONFIG_BFIN_SIR0
@@ -241,16 +270,75 @@ static struct platform_device bfin_sir0_device = {
241#endif 270#endif
242 271
243#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 272#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
273#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
274static struct resource bfin_sport0_uart_resources[] = {
275 {
276 .start = SPORT0_TCR1,
277 .end = SPORT0_MRCS3+4,
278 .flags = IORESOURCE_MEM,
279 },
280 {
281 .start = IRQ_SPORT0_RX,
282 .end = IRQ_SPORT0_RX+1,
283 .flags = IORESOURCE_IRQ,
284 },
285 {
286 .start = IRQ_SPORT0_ERROR,
287 .end = IRQ_SPORT0_ERROR,
288 .flags = IORESOURCE_IRQ,
289 },
290};
291
292unsigned short bfin_sport0_peripherals[] = {
293 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
294 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
295};
296
244static struct platform_device bfin_sport0_uart_device = { 297static struct platform_device bfin_sport0_uart_device = {
245 .name = "bfin-sport-uart", 298 .name = "bfin-sport-uart",
246 .id = 0, 299 .id = 0,
300 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
301 .resource = bfin_sport0_uart_resources,
302 .dev = {
303 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
304 },
305};
306#endif
307#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
308static struct resource bfin_sport1_uart_resources[] = {
309 {
310 .start = SPORT1_TCR1,
311 .end = SPORT1_MRCS3+4,
312 .flags = IORESOURCE_MEM,
313 },
314 {
315 .start = IRQ_SPORT1_RX,
316 .end = IRQ_SPORT1_RX+1,
317 .flags = IORESOURCE_IRQ,
318 },
319 {
320 .start = IRQ_SPORT1_ERROR,
321 .end = IRQ_SPORT1_ERROR,
322 .flags = IORESOURCE_IRQ,
323 },
324};
325
326unsigned short bfin_sport1_peripherals[] = {
327 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
328 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
247}; 329};
248 330
249static struct platform_device bfin_sport1_uart_device = { 331static struct platform_device bfin_sport1_uart_device = {
250 .name = "bfin-sport-uart", 332 .name = "bfin-sport-uart",
251 .id = 1, 333 .id = 1,
334 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
335 .resource = bfin_sport1_uart_resources,
336 .dev = {
337 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
338 },
252}; 339};
253#endif 340#endif
341#endif
254 342
255#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 343#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
256#include <linux/input.h> 344#include <linux/input.h>
@@ -344,7 +432,9 @@ static struct platform_device *stamp_devices[] __initdata = {
344#endif 432#endif
345 433
346#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 434#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
347 &bfin_uart_device, 435#ifdef CONFIG_SERIAL_BFIN_UART0
436 &bfin_uart0_device,
437#endif
348#endif 438#endif
349 439
350#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 440#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -354,9 +444,13 @@ static struct platform_device *stamp_devices[] __initdata = {
354#endif 444#endif
355 445
356#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 446#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
447#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
357 &bfin_sport0_uart_device, 448 &bfin_sport0_uart_device,
449#endif
450#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
358 &bfin_sport1_uart_device, 451 &bfin_sport1_uart_device,
359#endif 452#endif
453#endif
360 454
361#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 455#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
362 &bfin_device_gpiokeys, 456 &bfin_device_gpiokeys,
@@ -392,3 +486,27 @@ static int __init blackstamp_init(void)
392} 486}
393 487
394arch_initcall(blackstamp_init); 488arch_initcall(blackstamp_init);
489
490static struct platform_device *stamp_early_devices[] __initdata = {
491#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
492#ifdef CONFIG_SERIAL_BFIN_UART0
493 &bfin_uart0_device,
494#endif
495#endif
496
497#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
498#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
499 &bfin_sport0_uart_device,
500#endif
501#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
502 &bfin_sport1_uart_device,
503#endif
504#endif
505};
506
507void __init native_machine_early_platform_add_devices(void)
508{
509 printk(KERN_INFO "register early platform devices\n");
510 early_platform_add_devices(stamp_early_devices,
511 ARRAY_SIZE(stamp_early_devices));
512}
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c
index 7fc3b860d4ae..fdcde61906dc 100644
--- a/arch/blackfin/mach-bf533/boards/cm_bf533.c
+++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c
@@ -71,7 +71,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
71}; 71};
72#endif 72#endif
73 73
74#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 74#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
75static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 75static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
76 .enable_dma = 0, 76 .enable_dma = 0,
77 .bits_per_word = 16, 77 .bits_per_word = 16,
@@ -110,7 +110,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
110 }, 110 },
111#endif 111#endif
112 112
113#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 113#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
114 { 114 {
115 .modalias = "ad1836", 115 .modalias = "ad1836",
116 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 116 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -242,21 +242,50 @@ static struct platform_device smsc911x_device = {
242#endif 242#endif
243 243
244#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 244#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
245static struct resource bfin_uart_resources[] = { 245#ifdef CONFIG_SERIAL_BFIN_UART0
246static struct resource bfin_uart0_resources[] = {
246 { 247 {
247 .start = 0xFFC00400, 248 .start = BFIN_UART_THR,
248 .end = 0xFFC004FF, 249 .end = BFIN_UART_GCTL+2,
249 .flags = IORESOURCE_MEM, 250 .flags = IORESOURCE_MEM,
250 }, 251 },
252 {
253 .start = IRQ_UART0_RX,
254 .end = IRQ_UART0_RX + 1,
255 .flags = IORESOURCE_IRQ,
256 },
257 {
258 .start = IRQ_UART0_ERROR,
259 .end = IRQ_UART0_ERROR,
260 .flags = IORESOURCE_IRQ,
261 },
262 {
263 .start = CH_UART0_TX,
264 .end = CH_UART0_TX,
265 .flags = IORESOURCE_DMA,
266 },
267 {
268 .start = CH_UART0_RX,
269 .end = CH_UART0_RX,
270 .flags = IORESOURCE_DMA,
271 },
272};
273
274unsigned short bfin_uart0_peripherals[] = {
275 P_UART0_TX, P_UART0_RX, 0
251}; 276};
252 277
253static struct platform_device bfin_uart_device = { 278static struct platform_device bfin_uart0_device = {
254 .name = "bfin-uart", 279 .name = "bfin-uart",
255 .id = 1, 280 .id = 0,
256 .num_resources = ARRAY_SIZE(bfin_uart_resources), 281 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
257 .resource = bfin_uart_resources, 282 .resource = bfin_uart0_resources,
283 .dev = {
284 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
285 },
258}; 286};
259#endif 287#endif
288#endif
260 289
261#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 290#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
262#ifdef CONFIG_BFIN_SIR0 291#ifdef CONFIG_BFIN_SIR0
@@ -288,16 +317,75 @@ static struct platform_device bfin_sir0_device = {
288#endif 317#endif
289 318
290#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 319#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
320#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
321static struct resource bfin_sport0_uart_resources[] = {
322 {
323 .start = SPORT0_TCR1,
324 .end = SPORT0_MRCS3+4,
325 .flags = IORESOURCE_MEM,
326 },
327 {
328 .start = IRQ_SPORT0_RX,
329 .end = IRQ_SPORT0_RX+1,
330 .flags = IORESOURCE_IRQ,
331 },
332 {
333 .start = IRQ_SPORT0_ERROR,
334 .end = IRQ_SPORT0_ERROR,
335 .flags = IORESOURCE_IRQ,
336 },
337};
338
339unsigned short bfin_sport0_peripherals[] = {
340 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
341 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
342};
343
291static struct platform_device bfin_sport0_uart_device = { 344static struct platform_device bfin_sport0_uart_device = {
292 .name = "bfin-sport-uart", 345 .name = "bfin-sport-uart",
293 .id = 0, 346 .id = 0,
347 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
348 .resource = bfin_sport0_uart_resources,
349 .dev = {
350 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
351 },
352};
353#endif
354#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
355static struct resource bfin_sport1_uart_resources[] = {
356 {
357 .start = SPORT1_TCR1,
358 .end = SPORT1_MRCS3+4,
359 .flags = IORESOURCE_MEM,
360 },
361 {
362 .start = IRQ_SPORT1_RX,
363 .end = IRQ_SPORT1_RX+1,
364 .flags = IORESOURCE_IRQ,
365 },
366 {
367 .start = IRQ_SPORT1_ERROR,
368 .end = IRQ_SPORT1_ERROR,
369 .flags = IORESOURCE_IRQ,
370 },
371};
372
373unsigned short bfin_sport1_peripherals[] = {
374 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
375 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
294}; 376};
295 377
296static struct platform_device bfin_sport1_uart_device = { 378static struct platform_device bfin_sport1_uart_device = {
297 .name = "bfin-sport-uart", 379 .name = "bfin-sport-uart",
298 .id = 1, 380 .id = 1,
381 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
382 .resource = bfin_sport1_uart_resources,
383 .dev = {
384 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
385 },
299}; 386};
300#endif 387#endif
388#endif
301 389
302#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 390#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
303static struct resource isp1362_hcd_resources[] = { 391static struct resource isp1362_hcd_resources[] = {
@@ -432,7 +520,9 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
432 &bfin_dpmc, 520 &bfin_dpmc,
433 521
434#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 522#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
435 &bfin_uart_device, 523#ifdef CONFIG_SERIAL_BFIN_UART0
524 &bfin_uart0_device,
525#endif
436#endif 526#endif
437 527
438#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 528#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -442,9 +532,13 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
442#endif 532#endif
443 533
444#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 534#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
535#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
445 &bfin_sport0_uart_device, 536 &bfin_sport0_uart_device,
537#endif
538#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
446 &bfin_sport1_uart_device, 539 &bfin_sport1_uart_device,
447#endif 540#endif
541#endif
448 542
449#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 543#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
450 &rtc_device, 544 &rtc_device,
@@ -486,3 +580,27 @@ static int __init cm_bf533_init(void)
486} 580}
487 581
488arch_initcall(cm_bf533_init); 582arch_initcall(cm_bf533_init);
583
584static struct platform_device *cm_bf533_early_devices[] __initdata = {
585#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
586#ifdef CONFIG_SERIAL_BFIN_UART0
587 &bfin_uart0_device,
588#endif
589#endif
590
591#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
592#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
593 &bfin_sport0_uart_device,
594#endif
595#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
596 &bfin_sport1_uart_device,
597#endif
598#endif
599};
600
601void __init native_machine_early_platform_add_devices(void)
602{
603 printk(KERN_INFO "register early platform devices\n");
604 early_platform_add_devices(cm_bf533_early_devices,
605 ARRAY_SIZE(cm_bf533_early_devices));
606}
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c
index d4689dcc198e..739773cb7fc6 100644
--- a/arch/blackfin/mach-bf533/boards/ezkit.c
+++ b/arch/blackfin/mach-bf533/boards/ezkit.c
@@ -222,7 +222,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
222}; 222};
223#endif 223#endif
224 224
225#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 225#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
226static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 226static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
227 .enable_dma = 0, 227 .enable_dma = 0,
228 .bits_per_word = 16, 228 .bits_per_word = 16,
@@ -261,7 +261,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
261 }, 261 },
262#endif 262#endif
263 263
264#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 264#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
265 { 265 {
266 .modalias = "ad1836", 266 .modalias = "ad1836",
267 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 267 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -320,21 +320,50 @@ static struct platform_device bfin_spi0_device = {
320#endif /* spi master and devices */ 320#endif /* spi master and devices */
321 321
322#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 322#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
323static struct resource bfin_uart_resources[] = { 323#ifdef CONFIG_SERIAL_BFIN_UART0
324static struct resource bfin_uart0_resources[] = {
324 { 325 {
325 .start = 0xFFC00400, 326 .start = BFIN_UART_THR,
326 .end = 0xFFC004FF, 327 .end = BFIN_UART_GCTL+2,
327 .flags = IORESOURCE_MEM, 328 .flags = IORESOURCE_MEM,
328 }, 329 },
330 {
331 .start = IRQ_UART0_RX,
332 .end = IRQ_UART0_RX + 1,
333 .flags = IORESOURCE_IRQ,
334 },
335 {
336 .start = IRQ_UART0_ERROR,
337 .end = IRQ_UART0_ERROR,
338 .flags = IORESOURCE_IRQ,
339 },
340 {
341 .start = CH_UART0_TX,
342 .end = CH_UART0_TX,
343 .flags = IORESOURCE_DMA,
344 },
345 {
346 .start = CH_UART0_RX,
347 .end = CH_UART0_RX,
348 .flags = IORESOURCE_DMA,
349 },
350};
351
352unsigned short bfin_uart0_peripherals[] = {
353 P_UART0_TX, P_UART0_RX, 0
329}; 354};
330 355
331static struct platform_device bfin_uart_device = { 356static struct platform_device bfin_uart0_device = {
332 .name = "bfin-uart", 357 .name = "bfin-uart",
333 .id = 1, 358 .id = 0,
334 .num_resources = ARRAY_SIZE(bfin_uart_resources), 359 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
335 .resource = bfin_uart_resources, 360 .resource = bfin_uart0_resources,
361 .dev = {
362 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
363 },
336}; 364};
337#endif 365#endif
366#endif
338 367
339#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 368#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
340#ifdef CONFIG_BFIN_SIR0 369#ifdef CONFIG_BFIN_SIR0
@@ -444,6 +473,30 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
444#endif 473#endif
445}; 474};
446 475
476#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
477static struct platform_device bfin_i2s = {
478 .name = "bfin-i2s",
479 .id = CONFIG_SND_BF5XX_SPORT_NUM,
480 /* TODO: add platform data here */
481};
482#endif
483
484#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
485static struct platform_device bfin_tdm = {
486 .name = "bfin-tdm",
487 .id = CONFIG_SND_BF5XX_SPORT_NUM,
488 /* TODO: add platform data here */
489};
490#endif
491
492#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
493static struct platform_device bfin_ac97 = {
494 .name = "bfin-ac97",
495 .id = CONFIG_SND_BF5XX_SPORT_NUM,
496 /* TODO: add platform data here */
497};
498#endif
499
447static struct platform_device *ezkit_devices[] __initdata = { 500static struct platform_device *ezkit_devices[] __initdata = {
448 501
449 &bfin_dpmc, 502 &bfin_dpmc,
@@ -471,7 +524,9 @@ static struct platform_device *ezkit_devices[] __initdata = {
471#endif 524#endif
472 525
473#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 526#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
474 &bfin_uart_device, 527#ifdef CONFIG_SERIAL_BFIN_UART0
528 &bfin_uart0_device,
529#endif
475#endif 530#endif
476 531
477#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 532#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -487,6 +542,18 @@ static struct platform_device *ezkit_devices[] __initdata = {
487#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 542#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
488 &i2c_gpio_device, 543 &i2c_gpio_device,
489#endif 544#endif
545
546#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
547 &bfin_i2s,
548#endif
549
550#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
551 &bfin_tdm,
552#endif
553
554#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
555 &bfin_ac97,
556#endif
490}; 557};
491 558
492static int __init ezkit_init(void) 559static int __init ezkit_init(void)
@@ -500,3 +567,18 @@ static int __init ezkit_init(void)
500} 567}
501 568
502arch_initcall(ezkit_init); 569arch_initcall(ezkit_init);
570
571static struct platform_device *ezkit_early_devices[] __initdata = {
572#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
573#ifdef CONFIG_SERIAL_BFIN_UART0
574 &bfin_uart0_device,
575#endif
576#endif
577};
578
579void __init native_machine_early_platform_add_devices(void)
580{
581 printk(KERN_INFO "register early platform devices\n");
582 early_platform_add_devices(ezkit_early_devices,
583 ARRAY_SIZE(ezkit_early_devices));
584}
diff --git a/arch/blackfin/mach-bf533/boards/ip0x.c b/arch/blackfin/mach-bf533/boards/ip0x.c
index 8ec42ba35b9e..7349970db978 100644
--- a/arch/blackfin/mach-bf533/boards/ip0x.c
+++ b/arch/blackfin/mach-bf533/boards/ip0x.c
@@ -19,6 +19,7 @@
19#include <linux/usb/isp1362.h> 19#include <linux/usb/isp1362.h>
20#endif 20#endif
21#include <asm/irq.h> 21#include <asm/irq.h>
22#include <asm/dma.h>
22#include <asm/bfin5xx_spi.h> 23#include <asm/bfin5xx_spi.h>
23#include <asm/portmux.h> 24#include <asm/portmux.h>
24 25
@@ -143,21 +144,50 @@ static struct platform_device spi_bfin_master_device = {
143#endif /* spi master and devices */ 144#endif /* spi master and devices */
144 145
145#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 146#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
146static struct resource bfin_uart_resources[] = { 147#ifdef CONFIG_SERIAL_BFIN_UART0
148static struct resource bfin_uart0_resources[] = {
147 { 149 {
148 .start = 0xFFC00400, 150 .start = BFIN_UART_THR,
149 .end = 0xFFC004FF, 151 .end = BFIN_UART_GCTL+2,
150 .flags = IORESOURCE_MEM, 152 .flags = IORESOURCE_MEM,
151 }, 153 },
154 {
155 .start = IRQ_UART0_RX,
156 .end = IRQ_UART0_RX + 1,
157 .flags = IORESOURCE_IRQ,
158 },
159 {
160 .start = IRQ_UART0_ERROR,
161 .end = IRQ_UART0_ERROR,
162 .flags = IORESOURCE_IRQ,
163 },
164 {
165 .start = CH_UART0_TX,
166 .end = CH_UART0_TX,
167 .flags = IORESOURCE_DMA,
168 },
169 {
170 .start = CH_UART0_RX,
171 .end = CH_UART0_RX,
172 .flags = IORESOURCE_DMA,
173 },
174};
175
176unsigned short bfin_uart0_peripherals[] = {
177 P_UART0_TX, P_UART0_RX, 0
152}; 178};
153 179
154static struct platform_device bfin_uart_device = { 180static struct platform_device bfin_uart0_device = {
155 .name = "bfin-uart", 181 .name = "bfin-uart",
156 .id = 1, 182 .id = 0,
157 .num_resources = ARRAY_SIZE(bfin_uart_resources), 183 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
158 .resource = bfin_uart_resources, 184 .resource = bfin_uart0_resources,
185 .dev = {
186 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
187 },
159}; 188};
160#endif 189#endif
190#endif
161 191
162#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 192#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
163#ifdef CONFIG_BFIN_SIR0 193#ifdef CONFIG_BFIN_SIR0
@@ -241,7 +271,9 @@ static struct platform_device *ip0x_devices[] __initdata = {
241#endif 271#endif
242 272
243#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 273#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
244 &bfin_uart_device, 274#ifdef CONFIG_SERIAL_BFIN_UART0
275 &bfin_uart0_device,
276#endif
245#endif 277#endif
246 278
247#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 279#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -276,3 +308,18 @@ static int __init ip0x_init(void)
276} 308}
277 309
278arch_initcall(ip0x_init); 310arch_initcall(ip0x_init);
311
312static struct platform_device *ip0x_early_devices[] __initdata = {
313#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
314#ifdef CONFIG_SERIAL_BFIN_UART0
315 &bfin_uart0_device,
316#endif
317#endif
318};
319
320void __init native_machine_early_platform_add_devices(void)
321{
322 printk(KERN_INFO "register early platform devices\n");
323 early_platform_add_devices(ip0x_early_devices,
324 ARRAY_SIZE(ip0x_early_devices));
325}
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c
index 6d68dcfa2da2..c457eaa60239 100644
--- a/arch/blackfin/mach-bf533/boards/stamp.c
+++ b/arch/blackfin/mach-bf533/boards/stamp.c
@@ -184,7 +184,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
184}; 184};
185#endif 185#endif
186 186
187#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 187#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
188static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 188static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
189 .enable_dma = 0, 189 .enable_dma = 0,
190 .bits_per_word = 16, 190 .bits_per_word = 16,
@@ -251,7 +251,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
251 }, 251 },
252#endif 252#endif
253 253
254#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 254#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
255 { 255 {
256 .modalias = "ad1836", 256 .modalias = "ad1836",
257 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 257 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -322,21 +322,50 @@ static struct platform_device bfin_spi0_device = {
322#endif /* spi master and devices */ 322#endif /* spi master and devices */
323 323
324#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 324#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
325static struct resource bfin_uart_resources[] = { 325#ifdef CONFIG_SERIAL_BFIN_UART0
326static struct resource bfin_uart0_resources[] = {
326 { 327 {
327 .start = 0xFFC00400, 328 .start = BFIN_UART_THR,
328 .end = 0xFFC004FF, 329 .end = BFIN_UART_GCTL+2,
329 .flags = IORESOURCE_MEM, 330 .flags = IORESOURCE_MEM,
330 }, 331 },
332 {
333 .start = IRQ_UART0_RX,
334 .end = IRQ_UART0_RX + 1,
335 .flags = IORESOURCE_IRQ,
336 },
337 {
338 .start = IRQ_UART0_ERROR,
339 .end = IRQ_UART0_ERROR,
340 .flags = IORESOURCE_IRQ,
341 },
342 {
343 .start = CH_UART0_TX,
344 .end = CH_UART0_TX,
345 .flags = IORESOURCE_DMA,
346 },
347 {
348 .start = CH_UART0_RX,
349 .end = CH_UART0_RX,
350 .flags = IORESOURCE_DMA,
351 },
331}; 352};
332 353
333static struct platform_device bfin_uart_device = { 354unsigned short bfin_uart0_peripherals[] = {
355 P_UART0_TX, P_UART0_RX, 0
356};
357
358static struct platform_device bfin_uart0_device = {
334 .name = "bfin-uart", 359 .name = "bfin-uart",
335 .id = 1, 360 .id = 0,
336 .num_resources = ARRAY_SIZE(bfin_uart_resources), 361 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
337 .resource = bfin_uart_resources, 362 .resource = bfin_uart0_resources,
363 .dev = {
364 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
365 },
338}; 366};
339#endif 367#endif
368#endif
340 369
341#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 370#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
342#ifdef CONFIG_BFIN_SIR0 371#ifdef CONFIG_BFIN_SIR0
@@ -368,16 +397,75 @@ static struct platform_device bfin_sir0_device = {
368#endif 397#endif
369 398
370#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 399#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
400#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
401static struct resource bfin_sport0_uart_resources[] = {
402 {
403 .start = SPORT0_TCR1,
404 .end = SPORT0_MRCS3+4,
405 .flags = IORESOURCE_MEM,
406 },
407 {
408 .start = IRQ_SPORT0_RX,
409 .end = IRQ_SPORT0_RX+1,
410 .flags = IORESOURCE_IRQ,
411 },
412 {
413 .start = IRQ_SPORT0_ERROR,
414 .end = IRQ_SPORT0_ERROR,
415 .flags = IORESOURCE_IRQ,
416 },
417};
418
419unsigned short bfin_sport0_peripherals[] = {
420 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
421 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
422};
423
371static struct platform_device bfin_sport0_uart_device = { 424static struct platform_device bfin_sport0_uart_device = {
372 .name = "bfin-sport-uart", 425 .name = "bfin-sport-uart",
373 .id = 0, 426 .id = 0,
427 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
428 .resource = bfin_sport0_uart_resources,
429 .dev = {
430 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
431 },
432};
433#endif
434#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
435static struct resource bfin_sport1_uart_resources[] = {
436 {
437 .start = SPORT1_TCR1,
438 .end = SPORT1_MRCS3+4,
439 .flags = IORESOURCE_MEM,
440 },
441 {
442 .start = IRQ_SPORT1_RX,
443 .end = IRQ_SPORT1_RX+1,
444 .flags = IORESOURCE_IRQ,
445 },
446 {
447 .start = IRQ_SPORT1_ERROR,
448 .end = IRQ_SPORT1_ERROR,
449 .flags = IORESOURCE_IRQ,
450 },
451};
452
453unsigned short bfin_sport1_peripherals[] = {
454 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
455 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
374}; 456};
375 457
376static struct platform_device bfin_sport1_uart_device = { 458static struct platform_device bfin_sport1_uart_device = {
377 .name = "bfin-sport-uart", 459 .name = "bfin-sport-uart",
378 .id = 1, 460 .id = 1,
461 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
462 .resource = bfin_sport1_uart_resources,
463 .dev = {
464 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
465 },
379}; 466};
380#endif 467#endif
468#endif
381 469
382#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 470#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
383#include <linux/input.h> 471#include <linux/input.h>
@@ -474,6 +562,30 @@ static struct platform_device bfin_dpmc = {
474 }, 562 },
475}; 563};
476 564
565#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
566static struct platform_device bfin_i2s = {
567 .name = "bfin-i2s",
568 .id = CONFIG_SND_BF5XX_SPORT_NUM,
569 /* TODO: add platform data here */
570};
571#endif
572
573#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
574static struct platform_device bfin_tdm = {
575 .name = "bfin-tdm",
576 .id = CONFIG_SND_BF5XX_SPORT_NUM,
577 /* TODO: add platform data here */
578};
579#endif
580
581#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
582static struct platform_device bfin_ac97 = {
583 .name = "bfin-ac97",
584 .id = CONFIG_SND_BF5XX_SPORT_NUM,
585 /* TODO: add platform data here */
586};
587#endif
588
477static struct platform_device *stamp_devices[] __initdata = { 589static struct platform_device *stamp_devices[] __initdata = {
478 590
479 &bfin_dpmc, 591 &bfin_dpmc,
@@ -495,7 +607,9 @@ static struct platform_device *stamp_devices[] __initdata = {
495#endif 607#endif
496 608
497#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 609#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
498 &bfin_uart_device, 610#ifdef CONFIG_SERIAL_BFIN_UART0
611 &bfin_uart0_device,
612#endif
499#endif 613#endif
500 614
501#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 615#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -505,9 +619,13 @@ static struct platform_device *stamp_devices[] __initdata = {
505#endif 619#endif
506 620
507#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 621#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
622#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
508 &bfin_sport0_uart_device, 623 &bfin_sport0_uart_device,
624#endif
625#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
509 &bfin_sport1_uart_device, 626 &bfin_sport1_uart_device,
510#endif 627#endif
628#endif
511 629
512#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 630#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
513 &bfin_device_gpiokeys, 631 &bfin_device_gpiokeys,
@@ -520,6 +638,18 @@ static struct platform_device *stamp_devices[] __initdata = {
520#if defined(CONFIG_MTD_BFIN_ASYNC) || defined(CONFIG_MTD_BFIN_ASYNC_MODULE) 638#if defined(CONFIG_MTD_BFIN_ASYNC) || defined(CONFIG_MTD_BFIN_ASYNC_MODULE)
521 &stamp_flash_device, 639 &stamp_flash_device,
522#endif 640#endif
641
642#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
643 &bfin_i2s,
644#endif
645
646#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
647 &bfin_tdm,
648#endif
649
650#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
651 &bfin_ac97,
652#endif
523}; 653};
524 654
525static int __init stamp_init(void) 655static int __init stamp_init(void)
@@ -548,6 +678,30 @@ static int __init stamp_init(void)
548 678
549arch_initcall(stamp_init); 679arch_initcall(stamp_init);
550 680
681static struct platform_device *stamp_early_devices[] __initdata = {
682#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
683#ifdef CONFIG_SERIAL_BFIN_UART0
684 &bfin_uart0_device,
685#endif
686#endif
687
688#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
689#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
690 &bfin_sport0_uart_device,
691#endif
692#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
693 &bfin_sport1_uart_device,
694#endif
695#endif
696};
697
698void __init native_machine_early_platform_add_devices(void)
699{
700 printk(KERN_INFO "register early platform devices\n");
701 early_platform_add_devices(stamp_early_devices,
702 ARRAY_SIZE(stamp_early_devices));
703}
704
551void native_machine_restart(char *cmd) 705void native_machine_restart(char *cmd)
552{ 706{
553 /* workaround pull up on cpld / flash pin not being strong enough */ 707 /* workaround pull up on cpld / flash pin not being strong enough */
diff --git a/arch/blackfin/mach-bf533/include/mach/irq.h b/arch/blackfin/mach-bf533/include/mach/irq.h
index c31498be0bbb..1f7e9765d954 100644
--- a/arch/blackfin/mach-bf533/include/mach/irq.h
+++ b/arch/blackfin/mach-bf533/include/mach/irq.h
@@ -104,7 +104,8 @@ Core Emulation **
104 104
105#define GPIO_IRQ_BASE IRQ_PF0 105#define GPIO_IRQ_BASE IRQ_PF0
106 106
107#define NR_IRQS (IRQ_PF15+1) 107#define NR_MACH_IRQS (IRQ_PF15 + 1)
108#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
108 109
109#define IVG7 7 110#define IVG7 7
110#define IVG8 8 111#define IVG8 8
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537e.c b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
index c85f4d770535..d35fc5fe4c2b 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
@@ -73,7 +73,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
73}; 73};
74#endif 74#endif
75 75
76#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 76#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
77static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 77static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
78 .enable_dma = 0, 78 .enable_dma = 0,
79 .bits_per_word = 16, 79 .bits_per_word = 16,
@@ -112,7 +112,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
112 }, 112 },
113#endif 113#endif
114 114
115#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 115#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
116 { 116 {
117 .modalias = "ad1836", 117 .modalias = "ad1836",
118 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 118 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -329,8 +329,8 @@ static struct platform_device cm_flash_device = {
329#ifdef CONFIG_SERIAL_BFIN_UART0 329#ifdef CONFIG_SERIAL_BFIN_UART0
330static struct resource bfin_uart0_resources[] = { 330static struct resource bfin_uart0_resources[] = {
331 { 331 {
332 .start = 0xFFC00400, 332 .start = UART0_THR,
333 .end = 0xFFC004FF, 333 .end = UART0_GCTL+2,
334 .flags = IORESOURCE_MEM, 334 .flags = IORESOURCE_MEM,
335 }, 335 },
336 { 336 {
@@ -373,18 +373,25 @@ static struct resource bfin_uart0_resources[] = {
373#endif 373#endif
374}; 374};
375 375
376unsigned short bfin_uart0_peripherals[] = {
377 P_UART0_TX, P_UART0_RX, 0
378};
379
376static struct platform_device bfin_uart0_device = { 380static struct platform_device bfin_uart0_device = {
377 .name = "bfin-uart", 381 .name = "bfin-uart",
378 .id = 0, 382 .id = 0,
379 .num_resources = ARRAY_SIZE(bfin_uart0_resources), 383 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
380 .resource = bfin_uart0_resources, 384 .resource = bfin_uart0_resources,
385 .dev = {
386 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
387 },
381}; 388};
382#endif 389#endif
383#ifdef CONFIG_SERIAL_BFIN_UART1 390#ifdef CONFIG_SERIAL_BFIN_UART1
384static struct resource bfin_uart1_resources[] = { 391static struct resource bfin_uart1_resources[] = {
385 { 392 {
386 .start = 0xFFC02000, 393 .start = UART1_THR,
387 .end = 0xFFC020FF, 394 .end = UART1_GCTL+2,
388 .flags = IORESOURCE_MEM, 395 .flags = IORESOURCE_MEM,
389 }, 396 },
390 { 397 {
@@ -427,11 +434,18 @@ static struct resource bfin_uart1_resources[] = {
427#endif 434#endif
428}; 435};
429 436
437unsigned short bfin_uart1_peripherals[] = {
438 P_UART1_TX, P_UART1_RX, 0
439};
440
430static struct platform_device bfin_uart1_device = { 441static struct platform_device bfin_uart1_device = {
431 .name = "bfin-uart", 442 .name = "bfin-uart",
432 .id = 1, 443 .id = 1,
433 .num_resources = ARRAY_SIZE(bfin_uart1_resources), 444 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
434 .resource = bfin_uart1_resources, 445 .resource = bfin_uart1_resources,
446 .dev = {
447 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
448 },
435}; 449};
436#endif 450#endif
437#endif 451#endif
@@ -512,16 +526,75 @@ static struct platform_device i2c_bfin_twi_device = {
512#endif 526#endif
513 527
514#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 528#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
529#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
530static struct resource bfin_sport0_uart_resources[] = {
531 {
532 .start = SPORT0_TCR1,
533 .end = SPORT0_MRCS3+4,
534 .flags = IORESOURCE_MEM,
535 },
536 {
537 .start = IRQ_SPORT0_RX,
538 .end = IRQ_SPORT0_RX+1,
539 .flags = IORESOURCE_IRQ,
540 },
541 {
542 .start = IRQ_SPORT0_ERROR,
543 .end = IRQ_SPORT0_ERROR,
544 .flags = IORESOURCE_IRQ,
545 },
546};
547
548unsigned short bfin_sport0_peripherals[] = {
549 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
550 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
551};
552
515static struct platform_device bfin_sport0_uart_device = { 553static struct platform_device bfin_sport0_uart_device = {
516 .name = "bfin-sport-uart", 554 .name = "bfin-sport-uart",
517 .id = 0, 555 .id = 0,
556 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
557 .resource = bfin_sport0_uart_resources,
558 .dev = {
559 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
560 },
561};
562#endif
563#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
564static struct resource bfin_sport1_uart_resources[] = {
565 {
566 .start = SPORT1_TCR1,
567 .end = SPORT1_MRCS3+4,
568 .flags = IORESOURCE_MEM,
569 },
570 {
571 .start = IRQ_SPORT1_RX,
572 .end = IRQ_SPORT1_RX+1,
573 .flags = IORESOURCE_IRQ,
574 },
575 {
576 .start = IRQ_SPORT1_ERROR,
577 .end = IRQ_SPORT1_ERROR,
578 .flags = IORESOURCE_IRQ,
579 },
580};
581
582unsigned short bfin_sport1_peripherals[] = {
583 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
584 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
518}; 585};
519 586
520static struct platform_device bfin_sport1_uart_device = { 587static struct platform_device bfin_sport1_uart_device = {
521 .name = "bfin-sport-uart", 588 .name = "bfin-sport-uart",
522 .id = 1, 589 .id = 1,
590 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
591 .resource = bfin_sport1_uart_resources,
592 .dev = {
593 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
594 },
523}; 595};
524#endif 596#endif
597#endif
525 598
526#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 599#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
527static struct platform_device bfin_mii_bus = { 600static struct platform_device bfin_mii_bus = {
@@ -633,9 +706,13 @@ static struct platform_device *cm_bf537e_devices[] __initdata = {
633#endif 706#endif
634 707
635#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 708#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
709#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
636 &bfin_sport0_uart_device, 710 &bfin_sport0_uart_device,
711#endif
712#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
637 &bfin_sport1_uart_device, 713 &bfin_sport1_uart_device,
638#endif 714#endif
715#endif
639 716
640#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 717#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
641 &isp1362_hcd_device, 718 &isp1362_hcd_device,
@@ -683,6 +760,33 @@ static int __init cm_bf537e_init(void)
683 760
684arch_initcall(cm_bf537e_init); 761arch_initcall(cm_bf537e_init);
685 762
763static struct platform_device *cm_bf537e_early_devices[] __initdata = {
764#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
765#ifdef CONFIG_SERIAL_BFIN_UART0
766 &bfin_uart0_device,
767#endif
768#ifdef CONFIG_SERIAL_BFIN_UART1
769 &bfin_uart1_device,
770#endif
771#endif
772
773#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
774#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
775 &bfin_sport0_uart_device,
776#endif
777#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
778 &bfin_sport1_uart_device,
779#endif
780#endif
781};
782
783void __init native_machine_early_platform_add_devices(void)
784{
785 printk(KERN_INFO "register early platform devices\n");
786 early_platform_add_devices(cm_bf537e_early_devices,
787 ARRAY_SIZE(cm_bf537e_early_devices));
788}
789
686void bfin_get_ether_addr(char *addr) 790void bfin_get_ether_addr(char *addr)
687{ 791{
688 random_ether_addr(addr); 792 random_ether_addr(addr);
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537u.c b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
index ea11aa81340d..d464ad5b72b2 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537u.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
@@ -74,7 +74,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
74}; 74};
75#endif 75#endif
76 76
77#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 77#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
78static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 78static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
79 .enable_dma = 0, 79 .enable_dma = 0,
80 .bits_per_word = 16, 80 .bits_per_word = 16,
@@ -113,7 +113,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
113 }, 113 },
114#endif 114#endif
115 115
116#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 116#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
117 { 117 {
118 .modalias = "ad1836", 118 .modalias = "ad1836",
119 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 119 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -327,25 +327,93 @@ static struct platform_device cm_flash_device = {
327#endif 327#endif
328 328
329#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 329#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
330static struct resource bfin_uart_resources[] = { 330#ifdef CONFIG_SERIAL_BFIN_UART0
331static struct resource bfin_uart0_resources[] = {
331 { 332 {
332 .start = 0xFFC00400, 333 .start = UART0_THR,
333 .end = 0xFFC004FF, 334 .end = UART0_GCTL+2,
334 .flags = IORESOURCE_MEM, 335 .flags = IORESOURCE_MEM,
335 }, { 336 },
336 .start = 0xFFC02000, 337 {
337 .end = 0xFFC020FF, 338 .start = IRQ_UART0_RX,
339 .end = IRQ_UART0_RX+1,
340 .flags = IORESOURCE_IRQ,
341 },
342 {
343 .start = IRQ_UART0_ERROR,
344 .end = IRQ_UART0_ERROR,
345 .flags = IORESOURCE_IRQ,
346 },
347 {
348 .start = CH_UART0_TX,
349 .end = CH_UART0_TX,
350 .flags = IORESOURCE_DMA,
351 },
352 {
353 .start = CH_UART0_RX,
354 .end = CH_UART0_RX,
355 .flags = IORESOURCE_DMA,
356 },
357};
358
359unsigned short bfin_uart0_peripherals[] = {
360 P_UART0_TX, P_UART0_RX, 0
361};
362
363static struct platform_device bfin_uart0_device = {
364 .name = "bfin-uart",
365 .id = 0,
366 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
367 .resource = bfin_uart0_resources,
368 .dev = {
369 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
370 },
371};
372#endif
373#ifdef CONFIG_SERIAL_BFIN_UART1
374static struct resource bfin_uart1_resources[] = {
375 {
376 .start = UART1_THR,
377 .end = UART1_GCTL+2,
338 .flags = IORESOURCE_MEM, 378 .flags = IORESOURCE_MEM,
339 }, 379 },
380 {
381 .start = IRQ_UART1_RX,
382 .end = IRQ_UART1_RX+1,
383 .flags = IORESOURCE_IRQ,
384 },
385 {
386 .start = IRQ_UART1_ERROR,
387 .end = IRQ_UART1_ERROR,
388 .flags = IORESOURCE_IRQ,
389 },
390 {
391 .start = CH_UART1_TX,
392 .end = CH_UART1_TX,
393 .flags = IORESOURCE_DMA,
394 },
395 {
396 .start = CH_UART1_RX,
397 .end = CH_UART1_RX,
398 .flags = IORESOURCE_DMA,
399 },
400};
401
402unsigned short bfin_uart1_peripherals[] = {
403 P_UART1_TX, P_UART1_RX, 0
340}; 404};
341 405
342static struct platform_device bfin_uart_device = { 406static struct platform_device bfin_uart1_device = {
343 .name = "bfin-uart", 407 .name = "bfin-uart",
344 .id = 1, 408 .id = 1,
345 .num_resources = ARRAY_SIZE(bfin_uart_resources), 409 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
346 .resource = bfin_uart_resources, 410 .resource = bfin_uart1_resources,
411 .dev = {
412 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
413 },
347}; 414};
348#endif 415#endif
416#endif
349 417
350#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 418#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
351#ifdef CONFIG_BFIN_SIR0 419#ifdef CONFIG_BFIN_SIR0
@@ -423,16 +491,75 @@ static struct platform_device i2c_bfin_twi_device = {
423#endif 491#endif
424 492
425#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 493#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
494#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
495static struct resource bfin_sport0_uart_resources[] = {
496 {
497 .start = SPORT0_TCR1,
498 .end = SPORT0_MRCS3+4,
499 .flags = IORESOURCE_MEM,
500 },
501 {
502 .start = IRQ_SPORT0_RX,
503 .end = IRQ_SPORT0_RX+1,
504 .flags = IORESOURCE_IRQ,
505 },
506 {
507 .start = IRQ_SPORT0_ERROR,
508 .end = IRQ_SPORT0_ERROR,
509 .flags = IORESOURCE_IRQ,
510 },
511};
512
513unsigned short bfin_sport0_peripherals[] = {
514 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
515 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
516};
517
426static struct platform_device bfin_sport0_uart_device = { 518static struct platform_device bfin_sport0_uart_device = {
427 .name = "bfin-sport-uart", 519 .name = "bfin-sport-uart",
428 .id = 0, 520 .id = 0,
521 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
522 .resource = bfin_sport0_uart_resources,
523 .dev = {
524 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
525 },
526};
527#endif
528#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
529static struct resource bfin_sport1_uart_resources[] = {
530 {
531 .start = SPORT1_TCR1,
532 .end = SPORT1_MRCS3+4,
533 .flags = IORESOURCE_MEM,
534 },
535 {
536 .start = IRQ_SPORT1_RX,
537 .end = IRQ_SPORT1_RX+1,
538 .flags = IORESOURCE_IRQ,
539 },
540 {
541 .start = IRQ_SPORT1_ERROR,
542 .end = IRQ_SPORT1_ERROR,
543 .flags = IORESOURCE_IRQ,
544 },
545};
546
547unsigned short bfin_sport1_peripherals[] = {
548 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
549 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
429}; 550};
430 551
431static struct platform_device bfin_sport1_uart_device = { 552static struct platform_device bfin_sport1_uart_device = {
432 .name = "bfin-sport-uart", 553 .name = "bfin-sport-uart",
433 .id = 1, 554 .id = 1,
555 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
556 .resource = bfin_sport1_uart_resources,
557 .dev = {
558 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
559 },
434}; 560};
435#endif 561#endif
562#endif
436 563
437#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 564#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
438static struct platform_device bfin_mii_bus = { 565static struct platform_device bfin_mii_bus = {
@@ -522,7 +649,12 @@ static struct platform_device *cm_bf537u_devices[] __initdata = {
522#endif 649#endif
523 650
524#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 651#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
525 &bfin_uart_device, 652#ifdef CONFIG_SERIAL_BFIN_UART0
653 &bfin_uart0_device,
654#endif
655#ifdef CONFIG_SERIAL_BFIN_UART1
656 &bfin_uart1_device,
657#endif
526#endif 658#endif
527 659
528#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 660#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -539,9 +671,13 @@ static struct platform_device *cm_bf537u_devices[] __initdata = {
539#endif 671#endif
540 672
541#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 673#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
674#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
542 &bfin_sport0_uart_device, 675 &bfin_sport0_uart_device,
676#endif
677#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
543 &bfin_sport1_uart_device, 678 &bfin_sport1_uart_device,
544#endif 679#endif
680#endif
545 681
546#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 682#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
547 &isp1362_hcd_device, 683 &isp1362_hcd_device,
@@ -589,6 +725,33 @@ static int __init cm_bf537u_init(void)
589 725
590arch_initcall(cm_bf537u_init); 726arch_initcall(cm_bf537u_init);
591 727
728static struct platform_device *cm_bf537u_early_devices[] __initdata = {
729#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
730#ifdef CONFIG_SERIAL_BFIN_UART0
731 &bfin_uart0_device,
732#endif
733#ifdef CONFIG_SERIAL_BFIN_UART1
734 &bfin_uart1_device,
735#endif
736#endif
737
738#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
739#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
740 &bfin_sport0_uart_device,
741#endif
742#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
743 &bfin_sport1_uart_device,
744#endif
745#endif
746};
747
748void __init native_machine_early_platform_add_devices(void)
749{
750 printk(KERN_INFO "register early platform devices\n");
751 early_platform_add_devices(cm_bf537u_early_devices,
752 ARRAY_SIZE(cm_bf537u_early_devices));
753}
754
592void bfin_get_ether_addr(char *addr) 755void bfin_get_ether_addr(char *addr)
593{ 756{
594 random_ether_addr(addr); 757 random_ether_addr(addr);
diff --git a/arch/blackfin/mach-bf537/boards/minotaur.c b/arch/blackfin/mach-bf537/boards/minotaur.c
index 0da927252701..c489d602c590 100644
--- a/arch/blackfin/mach-bf537/boards/minotaur.c
+++ b/arch/blackfin/mach-bf537/boards/minotaur.c
@@ -211,25 +211,93 @@ static struct platform_device bfin_spi0_device = {
211#endif /* spi master and devices */ 211#endif /* spi master and devices */
212 212
213#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 213#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
214static struct resource bfin_uart_resources[] = { 214#ifdef CONFIG_SERIAL_BFIN_UART0
215static struct resource bfin_uart0_resources[] = {
215 { 216 {
216 .start = 0xFFC00400, 217 .start = UART0_THR,
217 .end = 0xFFC004FF, 218 .end = UART0_GCTL+2,
218 .flags = IORESOURCE_MEM, 219 .flags = IORESOURCE_MEM,
219 }, { 220 },
220 .start = 0xFFC02000, 221 {
221 .end = 0xFFC020FF, 222 .start = IRQ_UART0_RX,
223 .end = IRQ_UART0_RX+1,
224 .flags = IORESOURCE_IRQ,
225 },
226 {
227 .start = IRQ_UART0_ERROR,
228 .end = IRQ_UART0_ERROR,
229 .flags = IORESOURCE_IRQ,
230 },
231 {
232 .start = CH_UART0_TX,
233 .end = CH_UART0_TX,
234 .flags = IORESOURCE_DMA,
235 },
236 {
237 .start = CH_UART0_RX,
238 .end = CH_UART0_RX,
239 .flags = IORESOURCE_DMA,
240 },
241};
242
243unsigned short bfin_uart0_peripherals[] = {
244 P_UART0_TX, P_UART0_RX, 0
245};
246
247static struct platform_device bfin_uart0_device = {
248 .name = "bfin-uart",
249 .id = 0,
250 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
251 .resource = bfin_uart0_resources,
252 .dev = {
253 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
254 },
255};
256#endif
257#ifdef CONFIG_SERIAL_BFIN_UART1
258static struct resource bfin_uart1_resources[] = {
259 {
260 .start = UART1_THR,
261 .end = UART1_GCTL+2,
222 .flags = IORESOURCE_MEM, 262 .flags = IORESOURCE_MEM,
223 }, 263 },
264 {
265 .start = IRQ_UART1_RX,
266 .end = IRQ_UART1_RX+1,
267 .flags = IORESOURCE_IRQ,
268 },
269 {
270 .start = IRQ_UART1_ERROR,
271 .end = IRQ_UART1_ERROR,
272 .flags = IORESOURCE_IRQ,
273 },
274 {
275 .start = CH_UART1_TX,
276 .end = CH_UART1_TX,
277 .flags = IORESOURCE_DMA,
278 },
279 {
280 .start = CH_UART1_RX,
281 .end = CH_UART1_RX,
282 .flags = IORESOURCE_DMA,
283 },
284};
285
286unsigned short bfin_uart1_peripherals[] = {
287 P_UART1_TX, P_UART1_RX, 0
224}; 288};
225 289
226static struct platform_device bfin_uart_device = { 290static struct platform_device bfin_uart1_device = {
227 .name = "bfin-uart", 291 .name = "bfin-uart",
228 .id = 1, 292 .id = 1,
229 .num_resources = ARRAY_SIZE(bfin_uart_resources), 293 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
230 .resource = bfin_uart_resources, 294 .resource = bfin_uart1_resources,
295 .dev = {
296 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
297 },
231}; 298};
232#endif 299#endif
300#endif
233 301
234#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 302#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
235#ifdef CONFIG_BFIN_SIR0 303#ifdef CONFIG_BFIN_SIR0
@@ -309,16 +377,75 @@ static struct platform_device i2c_bfin_twi_device = {
309#endif 377#endif
310 378
311#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 379#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
380#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
381static struct resource bfin_sport0_uart_resources[] = {
382 {
383 .start = SPORT0_TCR1,
384 .end = SPORT0_MRCS3+4,
385 .flags = IORESOURCE_MEM,
386 },
387 {
388 .start = IRQ_SPORT0_RX,
389 .end = IRQ_SPORT0_RX+1,
390 .flags = IORESOURCE_IRQ,
391 },
392 {
393 .start = IRQ_SPORT0_ERROR,
394 .end = IRQ_SPORT0_ERROR,
395 .flags = IORESOURCE_IRQ,
396 },
397};
398
399unsigned short bfin_sport0_peripherals[] = {
400 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
401 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
402};
403
312static struct platform_device bfin_sport0_uart_device = { 404static struct platform_device bfin_sport0_uart_device = {
313 .name = "bfin-sport-uart", 405 .name = "bfin-sport-uart",
314 .id = 0, 406 .id = 0,
407 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
408 .resource = bfin_sport0_uart_resources,
409 .dev = {
410 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
411 },
412};
413#endif
414#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
415static struct resource bfin_sport1_uart_resources[] = {
416 {
417 .start = SPORT1_TCR1,
418 .end = SPORT1_MRCS3+4,
419 .flags = IORESOURCE_MEM,
420 },
421 {
422 .start = IRQ_SPORT1_RX,
423 .end = IRQ_SPORT1_RX+1,
424 .flags = IORESOURCE_IRQ,
425 },
426 {
427 .start = IRQ_SPORT1_ERROR,
428 .end = IRQ_SPORT1_ERROR,
429 .flags = IORESOURCE_IRQ,
430 },
431};
432
433unsigned short bfin_sport1_peripherals[] = {
434 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
435 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
315}; 436};
316 437
317static struct platform_device bfin_sport1_uart_device = { 438static struct platform_device bfin_sport1_uart_device = {
318 .name = "bfin-sport-uart", 439 .name = "bfin-sport-uart",
319 .id = 1, 440 .id = 1,
441 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
442 .resource = bfin_sport1_uart_resources,
443 .dev = {
444 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
445 },
320}; 446};
321#endif 447#endif
448#endif
322 449
323static struct platform_device *minotaur_devices[] __initdata = { 450static struct platform_device *minotaur_devices[] __initdata = {
324#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) 451#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
@@ -343,7 +470,12 @@ static struct platform_device *minotaur_devices[] __initdata = {
343#endif 470#endif
344 471
345#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 472#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
346 &bfin_uart_device, 473#ifdef CONFIG_SERIAL_BFIN_UART0
474 &bfin_uart0_device,
475#endif
476#ifdef CONFIG_SERIAL_BFIN_UART1
477 &bfin_uart1_device,
478#endif
347#endif 479#endif
348 480
349#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 481#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -360,9 +492,13 @@ static struct platform_device *minotaur_devices[] __initdata = {
360#endif 492#endif
361 493
362#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 494#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
495#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
363 &bfin_sport0_uart_device, 496 &bfin_sport0_uart_device,
497#endif
498#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
364 &bfin_sport1_uart_device, 499 &bfin_sport1_uart_device,
365#endif 500#endif
501#endif
366 502
367}; 503};
368 504
@@ -380,6 +516,33 @@ static int __init minotaur_init(void)
380 516
381arch_initcall(minotaur_init); 517arch_initcall(minotaur_init);
382 518
519static struct platform_device *minotaur_early_devices[] __initdata = {
520#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
521#ifdef CONFIG_SERIAL_BFIN_UART0
522 &bfin_uart0_device,
523#endif
524#ifdef CONFIG_SERIAL_BFIN_UART1
525 &bfin_uart1_device,
526#endif
527#endif
528
529#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
530#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
531 &bfin_sport0_uart_device,
532#endif
533#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
534 &bfin_sport1_uart_device,
535#endif
536#endif
537};
538
539void __init native_machine_early_platform_add_devices(void)
540{
541 printk(KERN_INFO "register early platform devices\n");
542 early_platform_add_devices(minotaur_early_devices,
543 ARRAY_SIZE(minotaur_early_devices));
544}
545
383void native_machine_restart(char *cmd) 546void native_machine_restart(char *cmd)
384{ 547{
385 /* workaround reboot hang when booting from SPI */ 548 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c
index 4e0afda472ab..812e8f991601 100644
--- a/arch/blackfin/mach-bf537/boards/pnav10.c
+++ b/arch/blackfin/mach-bf537/boards/pnav10.c
@@ -17,7 +17,6 @@
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/portmux.h> 19#include <asm/portmux.h>
20#include <linux/usb/sl811.h>
21 20
22#include <linux/spi/ad7877.h> 21#include <linux/spi/ad7877.h>
23 22
@@ -99,51 +98,6 @@ static struct platform_device smc91x_device = {
99}; 98};
100#endif 99#endif
101 100
102#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
103static struct resource sl811_hcd_resources[] = {
104 {
105 .start = 0x20340000,
106 .end = 0x20340000,
107 .flags = IORESOURCE_MEM,
108 }, {
109 .start = 0x20340004,
110 .end = 0x20340004,
111 .flags = IORESOURCE_MEM,
112 }, {
113 .start = CONFIG_USB_SL811_BFIN_IRQ,
114 .end = CONFIG_USB_SL811_BFIN_IRQ,
115 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
116 },
117};
118
119#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
120void sl811_port_power(struct device *dev, int is_on)
121{
122 gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
123 gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
124
125}
126#endif
127
128static struct sl811_platform_data sl811_priv = {
129 .potpg = 10,
130 .power = 250, /* == 500mA */
131#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
132 .port_power = &sl811_port_power,
133#endif
134};
135
136static struct platform_device sl811_hcd_device = {
137 .name = "sl811-hcd",
138 .id = 0,
139 .dev = {
140 .platform_data = &sl811_priv,
141 },
142 .num_resources = ARRAY_SIZE(sl811_hcd_resources),
143 .resource = sl811_hcd_resources,
144};
145#endif
146
147#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 101#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
148static struct platform_device bfin_mii_bus = { 102static struct platform_device bfin_mii_bus = {
149 .name = "bfin_mii_bus", 103 .name = "bfin_mii_bus",
@@ -221,8 +175,8 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
221}; 175};
222#endif 176#endif
223 177
224#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 178#if defined(CONFIG_SND_BLACKFIN_AD183X) \
225 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 179 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
226static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 180static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
227 .enable_dma = 0, 181 .enable_dma = 0,
228 .bits_per_word = 16, 182 .bits_per_word = 16,
@@ -284,8 +238,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
284 }, 238 },
285#endif 239#endif
286 240
287#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 241#if defined(CONFIG_SND_BLACKFIN_AD183X) \
288 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 242 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
289 { 243 {
290 .modalias = "ad1836", 244 .modalias = "ad1836",
291 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 245 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -362,25 +316,93 @@ static struct platform_device bfin_fb_device = {
362#endif 316#endif
363 317
364#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 318#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
365static struct resource bfin_uart_resources[] = { 319#ifdef CONFIG_SERIAL_BFIN_UART0
320static struct resource bfin_uart0_resources[] = {
366 { 321 {
367 .start = 0xFFC00400, 322 .start = UART0_THR,
368 .end = 0xFFC004FF, 323 .end = UART0_GCTL+2,
369 .flags = IORESOURCE_MEM, 324 .flags = IORESOURCE_MEM,
370 }, { 325 },
371 .start = 0xFFC02000, 326 {
372 .end = 0xFFC020FF, 327 .start = IRQ_UART0_RX,
328 .end = IRQ_UART0_RX+1,
329 .flags = IORESOURCE_IRQ,
330 },
331 {
332 .start = IRQ_UART0_ERROR,
333 .end = IRQ_UART0_ERROR,
334 .flags = IORESOURCE_IRQ,
335 },
336 {
337 .start = CH_UART0_TX,
338 .end = CH_UART0_TX,
339 .flags = IORESOURCE_DMA,
340 },
341 {
342 .start = CH_UART0_RX,
343 .end = CH_UART0_RX,
344 .flags = IORESOURCE_DMA,
345 },
346};
347
348unsigned short bfin_uart0_peripherals[] = {
349 P_UART0_TX, P_UART0_RX, 0
350};
351
352static struct platform_device bfin_uart0_device = {
353 .name = "bfin-uart",
354 .id = 0,
355 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
356 .resource = bfin_uart0_resources,
357 .dev = {
358 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
359 },
360};
361#endif
362#ifdef CONFIG_SERIAL_BFIN_UART1
363static struct resource bfin_uart1_resources[] = {
364 {
365 .start = UART1_THR,
366 .end = UART1_GCTL+2,
373 .flags = IORESOURCE_MEM, 367 .flags = IORESOURCE_MEM,
374 }, 368 },
369 {
370 .start = IRQ_UART1_RX,
371 .end = IRQ_UART1_RX+1,
372 .flags = IORESOURCE_IRQ,
373 },
374 {
375 .start = IRQ_UART1_ERROR,
376 .end = IRQ_UART1_ERROR,
377 .flags = IORESOURCE_IRQ,
378 },
379 {
380 .start = CH_UART1_TX,
381 .end = CH_UART1_TX,
382 .flags = IORESOURCE_DMA,
383 },
384 {
385 .start = CH_UART1_RX,
386 .end = CH_UART1_RX,
387 .flags = IORESOURCE_DMA,
388 },
389};
390
391unsigned short bfin_uart1_peripherals[] = {
392 P_UART1_TX, P_UART1_RX, 0
375}; 393};
376 394
377static struct platform_device bfin_uart_device = { 395static struct platform_device bfin_uart1_device = {
378 .name = "bfin-uart", 396 .name = "bfin-uart",
379 .id = 1, 397 .id = 1,
380 .num_resources = ARRAY_SIZE(bfin_uart_resources), 398 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
381 .resource = bfin_uart_resources, 399 .resource = bfin_uart1_resources,
400 .dev = {
401 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
402 },
382}; 403};
383#endif 404#endif
405#endif
384 406
385#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 407#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
386#ifdef CONFIG_BFIN_SIR0 408#ifdef CONFIG_BFIN_SIR0
@@ -446,10 +468,6 @@ static struct platform_device *stamp_devices[] __initdata = {
446 &rtc_device, 468 &rtc_device,
447#endif 469#endif
448 470
449#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
450 &sl811_hcd_device,
451#endif
452
453#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) 471#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
454 &smc91x_device, 472 &smc91x_device,
455#endif 473#endif
@@ -472,7 +490,12 @@ static struct platform_device *stamp_devices[] __initdata = {
472#endif 490#endif
473 491
474#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 492#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
475 &bfin_uart_device, 493#ifdef CONFIG_SERIAL_BFIN_UART0
494 &bfin_uart0_device,
495#endif
496#ifdef CONFIG_SERIAL_BFIN_UART1
497 &bfin_uart1_device,
498#endif
476#endif 499#endif
477 500
478#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 501#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -498,6 +521,24 @@ static int __init pnav_init(void)
498 521
499arch_initcall(pnav_init); 522arch_initcall(pnav_init);
500 523
524static struct platform_device *stamp_early_devices[] __initdata = {
525#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
526#ifdef CONFIG_SERIAL_BFIN_UART0
527 &bfin_uart0_device,
528#endif
529#ifdef CONFIG_SERIAL_BFIN_UART1
530 &bfin_uart1_device,
531#endif
532#endif
533};
534
535void __init native_machine_early_platform_add_devices(void)
536{
537 printk(KERN_INFO "register early platform devices\n");
538 early_platform_add_devices(stamp_early_devices,
539 ARRAY_SIZE(stamp_early_devices));
540}
541
501void bfin_get_ether_addr(char *addr) 542void bfin_get_ether_addr(char *addr)
502{ 543{
503 random_ether_addr(addr); 544 random_ether_addr(addr);
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index ac9b52e0087c..9eaf5b05c11e 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -20,10 +20,12 @@
20#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 20#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
21#include <linux/usb/isp1362.h> 21#include <linux/usb/isp1362.h>
22#endif 22#endif
23#include <linux/i2c.h>
24#include <linux/i2c/adp5588.h>
25#include <linux/etherdevice.h>
23#include <linux/ata_platform.h> 26#include <linux/ata_platform.h>
24#include <linux/irq.h> 27#include <linux/irq.h>
25#include <linux/interrupt.h> 28#include <linux/interrupt.h>
26#include <linux/i2c.h>
27#include <linux/usb/sl811.h> 29#include <linux/usb/sl811.h>
28#include <linux/spi/mmc_spi.h> 30#include <linux/spi/mmc_spi.h>
29#include <linux/leds.h> 31#include <linux/leds.h>
@@ -33,6 +35,14 @@
33#include <asm/reboot.h> 35#include <asm/reboot.h>
34#include <asm/portmux.h> 36#include <asm/portmux.h>
35#include <asm/dpmc.h> 37#include <asm/dpmc.h>
38#ifdef CONFIG_REGULATOR_ADP_SWITCH
39#include <linux/regulator/adp_switch.h>
40#endif
41#ifdef CONFIG_REGULATOR_AD5398
42#include <linux/regulator/ad5398.h>
43#endif
44#include <linux/regulator/consumer.h>
45#include <linux/regulator/userspace-consumer.h>
36 46
37/* 47/*
38 * Name the Board for the /proc/cpuinfo 48 * Name the Board for the /proc/cpuinfo
@@ -208,8 +218,8 @@ static struct resource sl811_hcd_resources[] = {
208 .end = 0x20340004, 218 .end = 0x20340004,
209 .flags = IORESOURCE_MEM, 219 .flags = IORESOURCE_MEM,
210 }, { 220 }, {
211 .start = CONFIG_USB_SL811_BFIN_IRQ, 221 .start = IRQ_PF4,
212 .end = CONFIG_USB_SL811_BFIN_IRQ, 222 .end = IRQ_PF4,
213 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, 223 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
214 }, 224 },
215}; 225};
@@ -454,6 +464,9 @@ static struct physmap_flash_data stamp_flash_data = {
454 .width = 2, 464 .width = 2,
455 .parts = stamp_partitions, 465 .parts = stamp_partitions,
456 .nr_parts = ARRAY_SIZE(stamp_partitions), 466 .nr_parts = ARRAY_SIZE(stamp_partitions),
467#ifdef CONFIG_ROMKERNEL
468 .probe_type = "map_rom",
469#endif
457}; 470};
458 471
459static struct resource stamp_flash_resource = { 472static struct resource stamp_flash_resource = {
@@ -515,20 +528,19 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
515}; 528};
516#endif 529#endif
517 530
518#if defined(CONFIG_SND_BF5XX_SOC_AD1836) \ 531#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
519 || defined(CONFIG_SND_BF5XX_SOC_AD1836_MODULE) 532 || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
520static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 533static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
521 .enable_dma = 0, 534 .enable_dma = 0,
522 .bits_per_word = 16, 535 .bits_per_word = 16,
523}; 536};
524#endif 537#endif
525 538
526#if defined(CONFIG_SND_BF5XX_SOC_AD1938) \ 539#if defined(CONFIG_SND_BF5XX_SOC_AD193X) \
527 || defined(CONFIG_SND_BF5XX_SOC_AD1938_MODULE) 540 || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
528static struct bfin5xx_spi_chip ad1938_spi_chip_info = { 541static struct bfin5xx_spi_chip ad1938_spi_chip_info = {
529 .enable_dma = 0, 542 .enable_dma = 0,
530 .bits_per_word = 8, 543 .bits_per_word = 8,
531 .cs_gpio = GPIO_PF5,
532}; 544};
533#endif 545#endif
534 546
@@ -644,6 +656,42 @@ static struct ad714x_platform_data ad7142_i2c_platform_data = {
644}; 656};
645#endif 657#endif
646 658
659#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
660static struct bfin5xx_spi_chip ad2s90_spi_chip_info = {
661 .enable_dma = 0,
662 .bits_per_word = 16,
663};
664#endif
665
666#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
667unsigned short ad2s120x_platform_data[] = {
668 /* used as SAMPLE and RDVEL */
669 GPIO_PF5, GPIO_PF6, 0
670};
671
672static struct bfin5xx_spi_chip ad2s120x_spi_chip_info = {
673 .enable_dma = 0,
674 .bits_per_word = 16,
675};
676#endif
677
678#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
679unsigned short ad2s1210_platform_data[] = {
680 /* use as SAMPLE, A0, A1 */
681 GPIO_PF7, GPIO_PF8, GPIO_PF9,
682# if defined(CONFIG_AD2S1210_GPIO_INPUT) || defined(CONFIG_AD2S1210_GPIO_OUTPUT)
683 /* the RES0 and RES1 pins */
684 GPIO_PF4, GPIO_PF5,
685# endif
686 0,
687};
688
689static struct bfin5xx_spi_chip ad2s1210_spi_chip_info = {
690 .enable_dma = 0,
691 .bits_per_word = 8,
692};
693#endif
694
647#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) 695#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
648#define MMC_SPI_CARD_DETECT_INT IRQ_PF5 696#define MMC_SPI_CARD_DETECT_INT IRQ_PF5
649 697
@@ -686,11 +734,11 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = {
686 .y_plate_ohms = 486, 734 .y_plate_ohms = 486,
687 .pressure_max = 1000, 735 .pressure_max = 1000,
688 .pressure_min = 0, 736 .pressure_min = 0,
689 .stopacq_polarity = 1, 737 .stopacq_polarity = 1,
690 .first_conversion_delay = 3, 738 .first_conversion_delay = 3,
691 .acquisition_time = 1, 739 .acquisition_time = 1,
692 .averaging = 1, 740 .averaging = 1,
693 .pen_down_acc_interval = 1, 741 .pen_down_acc_interval = 1,
694}; 742};
695#endif 743#endif
696 744
@@ -701,13 +749,13 @@ static const struct ad7879_platform_data bfin_ad7879_ts_info = {
701 .x_plate_ohms = 620, /* 620 Ohm from the touch datasheet */ 749 .x_plate_ohms = 620, /* 620 Ohm from the touch datasheet */
702 .pressure_max = 10000, 750 .pressure_max = 10000,
703 .pressure_min = 0, 751 .pressure_min = 0,
704 .first_conversion_delay = 3, /* wait 512us before do a first conversion */ 752 .first_conversion_delay = 3, /* wait 512us before do a first conversion */
705 .acquisition_time = 1, /* 4us acquisition time per sample */ 753 .acquisition_time = 1, /* 4us acquisition time per sample */
706 .median = 2, /* do 8 measurements */ 754 .median = 2, /* do 8 measurements */
707 .averaging = 1, /* take the average of 4 middle samples */ 755 .averaging = 1, /* take the average of 4 middle samples */
708 .pen_down_acc_interval = 255, /* 9.4 ms */ 756 .pen_down_acc_interval = 255, /* 9.4 ms */
709 .gpio_output = 1, /* configure AUX/VBAT/GPIO as GPIO output */ 757 .gpio_export = 1, /* Export GPIO to gpiolib */
710 .gpio_default = 1, /* During initialization set GPIO = HIGH */ 758 .gpio_base = -1, /* Dynamic allocation */
711}; 759};
712#endif 760#endif
713 761
@@ -742,6 +790,11 @@ static const struct adxl34x_platform_data adxl34x_info = {
742/* .ev_code_act_inactivity = KEY_A,*/ /* EV_KEY */ 790/* .ev_code_act_inactivity = KEY_A,*/ /* EV_KEY */
743 .power_mode = ADXL_AUTO_SLEEP | ADXL_LINK, 791 .power_mode = ADXL_AUTO_SLEEP | ADXL_LINK,
744 .fifo_mode = ADXL_FIFO_STREAM, 792 .fifo_mode = ADXL_FIFO_STREAM,
793 .orientation_enable = ADXL_EN_ORIENTATION_3D,
794 .deadzone_angle = ADXL_DEADZONE_ANGLE_10p8,
795 .divisor_length = ADXL_LP_FILTER_DIVISOR_16,
796 /* EV_KEY {+Z, +Y, +X, -X, -Y, -Z} */
797 .ev_codes_orient_3d = {BTN_Z, BTN_Y, BTN_X, BTN_A, BTN_B, BTN_C},
745}; 798};
746#endif 799#endif
747 800
@@ -813,6 +866,35 @@ static struct adf702x_platform_data adf7021_platform_data = {
813 .adf702x_regs = adf7021_regs, 866 .adf702x_regs = adf7021_regs,
814 .tx_reg = TXREG, 867 .tx_reg = TXREG,
815}; 868};
869static inline void adf702x_mac_init(void)
870{
871 random_ether_addr(adf7021_platform_data.mac_addr);
872}
873#else
874static inline void adf702x_mac_init(void) {}
875#endif
876
877#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
878#include <linux/spi/ads7846.h>
879static struct bfin5xx_spi_chip ad7873_spi_chip_info = {
880 .bits_per_word = 8,
881};
882
883static int ads7873_get_pendown_state(void)
884{
885 return gpio_get_value(GPIO_PF6);
886}
887
888static struct ads7846_platform_data __initdata ad7873_pdata = {
889 .model = 7873, /* AD7873 */
890 .x_max = 0xfff,
891 .y_max = 0xfff,
892 .x_plate_ohms = 620,
893 .debounce_max = 1,
894 .debounce_rep = 0,
895 .debounce_tol = (~0),
896 .get_pendown_state = ads7873_get_pendown_state,
897};
816#endif 898#endif
817 899
818#if defined(CONFIG_MTD_DATAFLASH) \ 900#if defined(CONFIG_MTD_DATAFLASH) \
@@ -893,24 +975,25 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
893 }, 975 },
894#endif 976#endif
895 977
896#if defined(CONFIG_SND_BF5XX_SOC_AD1836) \ 978#if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
897 || defined(CONFIG_SND_BF5XX_SOC_AD1836_MODULE) 979 || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
898 { 980 {
899 .modalias = "ad1836", 981 .modalias = "ad183x",
900 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 982 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
901 .bus_num = 0, 983 .bus_num = 0,
902 .chip_select = 4,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */ 984 .chip_select = 4,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */
985 .platform_data = "ad1836", /* only includes chip name for the moment */
903 .controller_data = &ad1836_spi_chip_info, 986 .controller_data = &ad1836_spi_chip_info,
904 .mode = SPI_MODE_3, 987 .mode = SPI_MODE_3,
905 }, 988 },
906#endif 989#endif
907 990
908#if defined(CONFIG_SND_BF5XX_SOC_AD1938) || defined(CONFIG_SND_BF5XX_SOC_AD1938_MODULE) 991#if defined(CONFIG_SND_BF5XX_SOC_AD193X) || defined(CONFIG_SND_BF5XX_SOC_AD193X_MODULE)
909 { 992 {
910 .modalias = "ad1938", 993 .modalias = "ad193x",
911 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 994 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
912 .bus_num = 0, 995 .bus_num = 0,
913 .chip_select = 0,/* CONFIG_SND_BLACKFIN_SPI_PFBIT */ 996 .chip_select = 5,
914 .controller_data = &ad1938_spi_chip_info, 997 .controller_data = &ad1938_spi_chip_info,
915 .mode = SPI_MODE_3, 998 .mode = SPI_MODE_3,
916 }, 999 },
@@ -929,6 +1012,37 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
929 }, 1012 },
930#endif 1013#endif
931 1014
1015#if defined(CONFIG_AD2S90) || defined(CONFIG_AD2S90_MODULE)
1016 {
1017 .modalias = "ad2s90",
1018 .bus_num = 0,
1019 .chip_select = 3, /* change it for your board */
1020 .platform_data = NULL,
1021 .controller_data = &ad2s90_spi_chip_info,
1022 },
1023#endif
1024
1025#if defined(CONFIG_AD2S120X) || defined(CONFIG_AD2S120X_MODULE)
1026 {
1027 .modalias = "ad2s120x",
1028 .bus_num = 0,
1029 .chip_select = 4, /* CS, change it for your board */
1030 .platform_data = ad2s120x_platform_data,
1031 .controller_data = &ad2s120x_spi_chip_info,
1032 },
1033#endif
1034
1035#if defined(CONFIG_AD2S1210) || defined(CONFIG_AD2S1210_MODULE)
1036 {
1037 .modalias = "ad2s1210",
1038 .max_speed_hz = 8192000,
1039 .bus_num = 0,
1040 .chip_select = 4, /* CS, change it for your board */
1041 .platform_data = ad2s1210_platform_data,
1042 .controller_data = &ad2s1210_spi_chip_info,
1043 },
1044#endif
1045
932#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE) 1046#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
933 { 1047 {
934 .modalias = "mmc_spi", 1048 .modalias = "mmc_spi",
@@ -1016,7 +1130,18 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
1016 .mode = SPI_MODE_0, 1130 .mode = SPI_MODE_0,
1017 }, 1131 },
1018#endif 1132#endif
1019 1133#if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
1134 {
1135 .modalias = "ads7846",
1136 .max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */
1137 .bus_num = 0,
1138 .irq = IRQ_PF6,
1139 .chip_select = GPIO_PF10 + MAX_CTRL_CS, /* GPIO controlled SSEL */
1140 .controller_data = &ad7873_spi_chip_info,
1141 .platform_data = &ad7873_pdata,
1142 .mode = SPI_MODE_0,
1143 },
1144#endif
1020}; 1145};
1021 1146
1022#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 1147#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
@@ -1132,9 +1257,10 @@ static struct platform_device bfin_fb_device = {
1132#include <asm/bfin-lq035q1.h> 1257#include <asm/bfin-lq035q1.h>
1133 1258
1134static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { 1259static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
1135 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, 1260 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
1136 .use_bl = 0, /* let something else control the LCD Blacklight */ 1261 .ppi_mode = USE_RGB565_16_BIT_PPI,
1137 .gpio_bl = GPIO_PF7, 1262 .use_bl = 0, /* let something else control the LCD Blacklight */
1263 .gpio_bl = GPIO_PF7,
1138}; 1264};
1139 1265
1140static struct resource bfin_lq035q1_resources[] = { 1266static struct resource bfin_lq035q1_resources[] = {
@@ -1148,8 +1274,8 @@ static struct resource bfin_lq035q1_resources[] = {
1148static struct platform_device bfin_lq035q1_device = { 1274static struct platform_device bfin_lq035q1_device = {
1149 .name = "bfin-lq035q1", 1275 .name = "bfin-lq035q1",
1150 .id = -1, 1276 .id = -1,
1151 .num_resources = ARRAY_SIZE(bfin_lq035q1_resources), 1277 .num_resources = ARRAY_SIZE(bfin_lq035q1_resources),
1152 .resource = bfin_lq035q1_resources, 1278 .resource = bfin_lq035q1_resources,
1153 .dev = { 1279 .dev = {
1154 .platform_data = &bfin_lq035q1_data, 1280 .platform_data = &bfin_lq035q1_data,
1155 }, 1281 },
@@ -1157,30 +1283,105 @@ static struct platform_device bfin_lq035q1_device = {
1157#endif 1283#endif
1158 1284
1159#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 1285#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
1160static struct resource bfin_uart_resources[] = {
1161#ifdef CONFIG_SERIAL_BFIN_UART0 1286#ifdef CONFIG_SERIAL_BFIN_UART0
1287static struct resource bfin_uart0_resources[] = {
1162 { 1288 {
1163 .start = 0xFFC00400, 1289 .start = UART0_THR,
1164 .end = 0xFFC004FF, 1290 .end = UART0_GCTL+2,
1165 .flags = IORESOURCE_MEM, 1291 .flags = IORESOURCE_MEM,
1166 }, 1292 },
1293 {
1294 .start = IRQ_UART0_RX,
1295 .end = IRQ_UART0_RX+1,
1296 .flags = IORESOURCE_IRQ,
1297 },
1298 {
1299 .start = IRQ_UART0_ERROR,
1300 .end = IRQ_UART0_ERROR,
1301 .flags = IORESOURCE_IRQ,
1302 },
1303 {
1304 .start = CH_UART0_TX,
1305 .end = CH_UART0_TX,
1306 .flags = IORESOURCE_DMA,
1307 },
1308 {
1309 .start = CH_UART0_RX,
1310 .end = CH_UART0_RX,
1311 .flags = IORESOURCE_DMA,
1312 },
1313#ifdef CONFIG_BFIN_UART0_CTSRTS
1314 { /* CTS pin */
1315 .start = GPIO_PG7,
1316 .end = GPIO_PG7,
1317 .flags = IORESOURCE_IO,
1318 },
1319 { /* RTS pin */
1320 .start = GPIO_PG6,
1321 .end = GPIO_PG6,
1322 .flags = IORESOURCE_IO,
1323 },
1324#endif
1325};
1326
1327unsigned short bfin_uart0_peripherals[] = {
1328 P_UART0_TX, P_UART0_RX, 0
1329};
1330
1331static struct platform_device bfin_uart0_device = {
1332 .name = "bfin-uart",
1333 .id = 0,
1334 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
1335 .resource = bfin_uart0_resources,
1336 .dev = {
1337 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
1338 },
1339};
1167#endif 1340#endif
1168#ifdef CONFIG_SERIAL_BFIN_UART1 1341#ifdef CONFIG_SERIAL_BFIN_UART1
1342static struct resource bfin_uart1_resources[] = {
1169 { 1343 {
1170 .start = 0xFFC02000, 1344 .start = UART1_THR,
1171 .end = 0xFFC020FF, 1345 .end = UART1_GCTL+2,
1172 .flags = IORESOURCE_MEM, 1346 .flags = IORESOURCE_MEM,
1173 }, 1347 },
1174#endif 1348 {
1349 .start = IRQ_UART1_RX,
1350 .end = IRQ_UART1_RX+1,
1351 .flags = IORESOURCE_IRQ,
1352 },
1353 {
1354 .start = IRQ_UART1_ERROR,
1355 .end = IRQ_UART1_ERROR,
1356 .flags = IORESOURCE_IRQ,
1357 },
1358 {
1359 .start = CH_UART1_TX,
1360 .end = CH_UART1_TX,
1361 .flags = IORESOURCE_DMA,
1362 },
1363 {
1364 .start = CH_UART1_RX,
1365 .end = CH_UART1_RX,
1366 .flags = IORESOURCE_DMA,
1367 },
1368};
1369
1370unsigned short bfin_uart1_peripherals[] = {
1371 P_UART1_TX, P_UART1_RX, 0
1175}; 1372};
1176 1373
1177static struct platform_device bfin_uart_device = { 1374static struct platform_device bfin_uart1_device = {
1178 .name = "bfin-uart", 1375 .name = "bfin-uart",
1179 .id = 1, 1376 .id = 1,
1180 .num_resources = ARRAY_SIZE(bfin_uart_resources), 1377 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
1181 .resource = bfin_uart_resources, 1378 .resource = bfin_uart1_resources,
1379 .dev = {
1380 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
1381 },
1182}; 1382};
1183#endif 1383#endif
1384#endif
1184 1385
1185#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 1386#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
1186#ifdef CONFIG_BFIN_SIR0 1387#ifdef CONFIG_BFIN_SIR0
@@ -1260,7 +1461,6 @@ static struct platform_device i2c_bfin_twi_device = {
1260#endif 1461#endif
1261 1462
1262#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE) 1463#if defined(CONFIG_KEYBOARD_ADP5588) || defined(CONFIG_KEYBOARD_ADP5588_MODULE)
1263#include <linux/i2c/adp5588.h>
1264static const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = { 1464static const unsigned short adp5588_keymap[ADP5588_KEYMAPSIZE] = {
1265 [0] = KEY_GRAVE, 1465 [0] = KEY_GRAVE,
1266 [1] = KEY_1, 1466 [1] = KEY_1,
@@ -1457,7 +1657,6 @@ static struct adp5520_platform_data adp5520_pdev_data = {
1457#endif 1657#endif
1458 1658
1459#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE) 1659#if defined(CONFIG_GPIO_ADP5588) || defined(CONFIG_GPIO_ADP5588_MODULE)
1460#include <linux/i2c/adp5588.h>
1461static struct adp5588_gpio_platform_data adp5588_gpio_data = { 1660static struct adp5588_gpio_platform_data adp5588_gpio_data = {
1462 .gpio_start = 50, 1661 .gpio_start = 50,
1463 .pullup_dis_mask = 0, 1662 .pullup_dis_mask = 0,
@@ -1516,6 +1715,101 @@ static struct adp8870_backlight_platform_data adp8870_pdata = {
1516}; 1715};
1517#endif 1716#endif
1518 1717
1718#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
1719#include <linux/i2c/adp8860.h>
1720static struct led_info adp8860_leds[] = {
1721 {
1722 .name = "adp8860-led7",
1723 .default_trigger = "none",
1724 .flags = ADP8860_LED_D7 | ADP8860_LED_OFFT_600ms,
1725 },
1726};
1727
1728static struct adp8860_backlight_platform_data adp8860_pdata = {
1729 .bl_led_assign = ADP8860_BL_D1 | ADP8860_BL_D2 | ADP8860_BL_D3 |
1730 ADP8860_BL_D4 | ADP8860_BL_D5 | ADP8860_BL_D6, /* 1 = Backlight 0 = Individual LED */
1731
1732 .bl_fade_in = ADP8860_FADE_T_1200ms, /* Backlight Fade-In Timer */
1733 .bl_fade_out = ADP8860_FADE_T_1200ms, /* Backlight Fade-Out Timer */
1734 .bl_fade_law = ADP8860_FADE_LAW_CUBIC1, /* fade-on/fade-off transfer characteristic */
1735
1736 .en_ambl_sens = 1, /* 1 = enable ambient light sensor */
1737 .abml_filt = ADP8860_BL_AMBL_FILT_320ms, /* Light sensor filter time */
1738
1739 .l1_daylight_max = ADP8860_BL_CUR_mA(20), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1740 .l1_daylight_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1741 .l2_office_max = ADP8860_BL_CUR_mA(6), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1742 .l2_office_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1743 .l3_dark_max = ADP8860_BL_CUR_mA(2), /* use BL_CUR_mA(I) 0 <= I <= 30 mA */
1744 .l3_dark_dim = ADP8860_BL_CUR_mA(0), /* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
1745
1746 .l2_trip = ADP8860_L2_COMP_CURR_uA(710), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1747 .l2_hyst = ADP8860_L2_COMP_CURR_uA(73), /* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
1748 .l3_trip = ADP8860_L3_COMP_CURR_uA(43), /* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1749 .l3_hyst = ADP8860_L3_COMP_CURR_uA(11), /* use L3_COMP_CURR_uA(I) 0 <= I <= 138 uA */
1750
1751 .leds = adp8860_leds,
1752 .num_leds = ARRAY_SIZE(adp8860_leds),
1753 .led_fade_law = ADP8860_FADE_LAW_SQUARE, /* fade-on/fade-off transfer characteristic */
1754 .led_fade_in = ADP8860_FADE_T_600ms,
1755 .led_fade_out = ADP8860_FADE_T_600ms,
1756 .led_on_time = ADP8860_LED_ONT_200ms,
1757};
1758#endif
1759
1760#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1761static struct regulator_consumer_supply ad5398_consumer = {
1762 .supply = "current",
1763};
1764
1765static struct regulator_init_data ad5398_regulator_data = {
1766 .constraints = {
1767 .name = "current range",
1768 .max_uA = 120000,
1769 .valid_ops_mask = REGULATOR_CHANGE_CURRENT | REGULATOR_CHANGE_STATUS,
1770 },
1771 .num_consumer_supplies = 1,
1772 .consumer_supplies = &ad5398_consumer,
1773};
1774
1775static struct ad5398_platform_data ad5398_i2c_platform_data = {
1776 .current_bits = 10,
1777 .current_offset = 4,
1778 .regulator_data = &ad5398_regulator_data,
1779};
1780
1781#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
1782 defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
1783static struct platform_device ad5398_virt_consumer_device = {
1784 .name = "reg-virt-consumer",
1785 .id = 0,
1786 .dev = {
1787 .platform_data = "current", /* Passed to driver */
1788 },
1789};
1790#endif
1791#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
1792 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
1793static struct regulator_bulk_data ad5398_bulk_data = {
1794 .supply = "current",
1795};
1796
1797static struct regulator_userspace_consumer_data ad5398_userspace_comsumer_data = {
1798 .name = "ad5398",
1799 .num_supplies = 1,
1800 .supplies = &ad5398_bulk_data,
1801};
1802
1803static struct platform_device ad5398_userspace_consumer_device = {
1804 .name = "reg-userspace-consumer",
1805 .id = 0,
1806 .dev = {
1807 .platform_data = &ad5398_userspace_comsumer_data,
1808 },
1809};
1810#endif
1811#endif
1812
1519static struct i2c_board_info __initdata bfin_i2c_board_info[] = { 1813static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
1520#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE) 1814#if defined(CONFIG_INPUT_AD714X_I2C) || defined(CONFIG_INPUT_AD714X_I2C_MODULE)
1521 { 1815 {
@@ -1524,6 +1818,52 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
1524 .platform_data = (void *)&ad7142_i2c_platform_data, 1818 .platform_data = (void *)&ad7142_i2c_platform_data,
1525 }, 1819 },
1526#endif 1820#endif
1821
1822#if defined(CONFIG_AD7150) || defined(CONFIG_AD7150_MODULE)
1823 {
1824 I2C_BOARD_INFO("ad7150", 0x48),
1825 .irq = IRQ_PG5, /* fixme: use real interrupt number */
1826 },
1827#endif
1828
1829#if defined(CONFIG_AD7152) || defined(CONFIG_AD7152_MODULE)
1830 {
1831 I2C_BOARD_INFO("ad7152", 0x48),
1832 },
1833#endif
1834
1835#if defined(CONFIG_AD774X) || defined(CONFIG_AD774X_MODULE)
1836 {
1837 I2C_BOARD_INFO("ad774x", 0x48),
1838 },
1839#endif
1840
1841#if defined(CONFIG_AD7414) || defined(CONFIG_AD7414_MODULE)
1842 {
1843 I2C_BOARD_INFO("ad7414", 0x9),
1844 .irq = IRQ_PG5,
1845 /*
1846 * platform_data pointer is borrwoed by the driver to
1847 * store custimer defined IRQ ALART level mode.
1848 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1849 */
1850 .platform_data = (void *)IRQF_TRIGGER_LOW,
1851 },
1852#endif
1853
1854#if defined(CONFIG_AD7416) || defined(CONFIG_AD7416_MODULE)
1855 {
1856 I2C_BOARD_INFO("ad7417", 0xb),
1857 .irq = IRQ_PG5,
1858 /*
1859 * platform_data pointer is borrwoed by the driver to
1860 * store custimer defined IRQ ALART level mode.
1861 * only IRQF_TRIGGER_HIGH and IRQF_TRIGGER_LOW are valid.
1862 */
1863 .platform_data = (void *)IRQF_TRIGGER_LOW,
1864 },
1865#endif
1866
1527#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE) 1867#if defined(CONFIG_BFIN_TWI_LCD) || defined(CONFIG_BFIN_TWI_LCD_MODULE)
1528 { 1868 {
1529 I2C_BOARD_INFO("pcf8574_lcd", 0x22), 1869 I2C_BOARD_INFO("pcf8574_lcd", 0x22),
@@ -1595,24 +1935,105 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
1595 I2C_BOARD_INFO("adau1761", 0x38), 1935 I2C_BOARD_INFO("adau1761", 0x38),
1596 }, 1936 },
1597#endif 1937#endif
1938#if defined(CONFIG_SND_SOC_ADAU1361) || defined(CONFIG_SND_SOC_ADAU1361_MODULE)
1939 {
1940 I2C_BOARD_INFO("adau1361", 0x38),
1941 },
1942#endif
1598#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE) 1943#if defined(CONFIG_AD525X_DPOT) || defined(CONFIG_AD525X_DPOT_MODULE)
1599 { 1944 {
1600 I2C_BOARD_INFO("ad5258", 0x18), 1945 I2C_BOARD_INFO("ad5258", 0x18),
1601 }, 1946 },
1602#endif 1947#endif
1948#if defined(CONFIG_SND_SOC_SSM2602) || defined(CONFIG_SND_SOC_SSM2602_MODULE)
1949 {
1950 I2C_BOARD_INFO("ssm2602", 0x1b),
1951 },
1952#endif
1953#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
1954 {
1955 I2C_BOARD_INFO("ad5398", 0xC),
1956 .platform_data = (void *)&ad5398_i2c_platform_data,
1957 },
1958#endif
1959#if defined(CONFIG_BACKLIGHT_ADP8860) || defined(CONFIG_BACKLIGHT_ADP8860_MODULE)
1960 {
1961 I2C_BOARD_INFO("adp8860", 0x2A),
1962 .platform_data = (void *)&adp8860_pdata,
1963 },
1964#endif
1603}; 1965};
1604 1966
1605#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 1967#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
1968#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1969static struct resource bfin_sport0_uart_resources[] = {
1970 {
1971 .start = SPORT0_TCR1,
1972 .end = SPORT0_MRCS3+4,
1973 .flags = IORESOURCE_MEM,
1974 },
1975 {
1976 .start = IRQ_SPORT0_RX,
1977 .end = IRQ_SPORT0_RX+1,
1978 .flags = IORESOURCE_IRQ,
1979 },
1980 {
1981 .start = IRQ_SPORT0_ERROR,
1982 .end = IRQ_SPORT0_ERROR,
1983 .flags = IORESOURCE_IRQ,
1984 },
1985};
1986
1987unsigned short bfin_sport0_peripherals[] = {
1988 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
1989 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
1990};
1991
1606static struct platform_device bfin_sport0_uart_device = { 1992static struct platform_device bfin_sport0_uart_device = {
1607 .name = "bfin-sport-uart", 1993 .name = "bfin-sport-uart",
1608 .id = 0, 1994 .id = 0,
1995 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
1996 .resource = bfin_sport0_uart_resources,
1997 .dev = {
1998 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
1999 },
2000};
2001#endif
2002#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2003static struct resource bfin_sport1_uart_resources[] = {
2004 {
2005 .start = SPORT1_TCR1,
2006 .end = SPORT1_MRCS3+4,
2007 .flags = IORESOURCE_MEM,
2008 },
2009 {
2010 .start = IRQ_SPORT1_RX,
2011 .end = IRQ_SPORT1_RX+1,
2012 .flags = IORESOURCE_IRQ,
2013 },
2014 {
2015 .start = IRQ_SPORT1_ERROR,
2016 .end = IRQ_SPORT1_ERROR,
2017 .flags = IORESOURCE_IRQ,
2018 },
2019};
2020
2021unsigned short bfin_sport1_peripherals[] = {
2022 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
2023 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
1609}; 2024};
1610 2025
1611static struct platform_device bfin_sport1_uart_device = { 2026static struct platform_device bfin_sport1_uart_device = {
1612 .name = "bfin-sport-uart", 2027 .name = "bfin-sport-uart",
1613 .id = 1, 2028 .id = 1,
2029 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
2030 .resource = bfin_sport1_uart_resources,
2031 .dev = {
2032 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
2033 },
1614}; 2034};
1615#endif 2035#endif
2036#endif
1616 2037
1617#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 2038#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
1618#define CF_IDE_NAND_CARD_USE_HDD_INTERFACE 2039#define CF_IDE_NAND_CARD_USE_HDD_INTERFACE
@@ -1701,13 +2122,121 @@ static struct platform_device bfin_dpmc = {
1701 }, 2122 },
1702}; 2123};
1703 2124
2125#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2126static struct platform_device bfin_i2s = {
2127 .name = "bfin-i2s",
2128 .id = CONFIG_SND_BF5XX_SPORT_NUM,
2129 /* TODO: add platform data here */
2130};
2131#endif
2132
1704#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) 2133#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
1705static struct platform_device bfin_tdm = { 2134static struct platform_device bfin_tdm = {
1706 .name = "bfin-tdm", 2135 .name = "bfin-tdm",
2136 .id = CONFIG_SND_BF5XX_SPORT_NUM,
1707 /* TODO: add platform data here */ 2137 /* TODO: add platform data here */
1708}; 2138};
1709#endif 2139#endif
1710 2140
2141#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2142static struct platform_device bfin_ac97 = {
2143 .name = "bfin-ac97",
2144 .id = CONFIG_SND_BF5XX_SPORT_NUM,
2145 /* TODO: add platform data here */
2146};
2147#endif
2148
2149#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2150#define REGULATOR_ADP122 "adp122"
2151#define REGULATOR_ADP150 "adp150"
2152
2153static struct regulator_consumer_supply adp122_consumers = {
2154 .supply = REGULATOR_ADP122,
2155};
2156
2157static struct regulator_consumer_supply adp150_consumers = {
2158 .supply = REGULATOR_ADP150,
2159};
2160
2161static struct regulator_init_data adp_switch_regulator_data[] = {
2162 {
2163 .constraints = {
2164 .name = REGULATOR_ADP122,
2165 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
2166 .min_uA = 0,
2167 .max_uA = 300000,
2168 },
2169 .num_consumer_supplies = 1, /* only 1 */
2170 .consumer_supplies = &adp122_consumers,
2171 .driver_data = (void *)GPIO_PF2, /* gpio port only */
2172 },
2173 {
2174 .constraints = {
2175 .name = REGULATOR_ADP150,
2176 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
2177 .min_uA = 0,
2178 .max_uA = 150000,
2179 },
2180 .num_consumer_supplies = 1, /* only 1 */
2181 .consumer_supplies = &adp150_consumers,
2182 .driver_data = (void *)GPIO_PF3, /* gpio port only */
2183 },
2184};
2185
2186static struct adp_switch_platform_data adp_switch_pdata = {
2187 .regulator_num = ARRAY_SIZE(adp_switch_regulator_data),
2188 .regulator_data = adp_switch_regulator_data,
2189};
2190
2191static struct platform_device adp_switch_device = {
2192 .name = "adp_switch",
2193 .id = 0,
2194 .dev = {
2195 .platform_data = &adp_switch_pdata,
2196 },
2197};
2198
2199#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2200 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2201static struct regulator_bulk_data adp122_bulk_data = {
2202 .supply = REGULATOR_ADP122,
2203};
2204
2205static struct regulator_userspace_consumer_data adp122_userspace_comsumer_data = {
2206 .name = REGULATOR_ADP122,
2207 .num_supplies = 1,
2208 .supplies = &adp122_bulk_data,
2209};
2210
2211static struct platform_device adp122_userspace_consumer_device = {
2212 .name = "reg-userspace-consumer",
2213 .id = 0,
2214 .dev = {
2215 .platform_data = &adp122_userspace_comsumer_data,
2216 },
2217};
2218
2219static struct regulator_bulk_data adp150_bulk_data = {
2220 .supply = REGULATOR_ADP150,
2221};
2222
2223static struct regulator_userspace_consumer_data adp150_userspace_comsumer_data = {
2224 .name = REGULATOR_ADP150,
2225 .num_supplies = 1,
2226 .supplies = &adp150_bulk_data,
2227};
2228
2229static struct platform_device adp150_userspace_consumer_device = {
2230 .name = "reg-userspace-consumer",
2231 .id = 1,
2232 .dev = {
2233 .platform_data = &adp150_userspace_comsumer_data,
2234 },
2235};
2236#endif
2237#endif
2238
2239
1711static struct platform_device *stamp_devices[] __initdata = { 2240static struct platform_device *stamp_devices[] __initdata = {
1712 2241
1713 &bfin_dpmc, 2242 &bfin_dpmc,
@@ -1771,7 +2300,12 @@ static struct platform_device *stamp_devices[] __initdata = {
1771#endif 2300#endif
1772 2301
1773#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 2302#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
1774 &bfin_uart_device, 2303#ifdef CONFIG_SERIAL_BFIN_UART0
2304 &bfin_uart0_device,
2305#endif
2306#ifdef CONFIG_SERIAL_BFIN_UART1
2307 &bfin_uart1_device,
2308#endif
1775#endif 2309#endif
1776 2310
1777#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 2311#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -1788,9 +2322,13 @@ static struct platform_device *stamp_devices[] __initdata = {
1788#endif 2322#endif
1789 2323
1790#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 2324#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
2325#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1791 &bfin_sport0_uart_device, 2326 &bfin_sport0_uart_device,
2327#endif
2328#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1792 &bfin_sport1_uart_device, 2329 &bfin_sport1_uart_device,
1793#endif 2330#endif
2331#endif
1794 2332
1795#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) 2333#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
1796 &bfin_pata_device, 2334 &bfin_pata_device,
@@ -1808,18 +2346,46 @@ static struct platform_device *stamp_devices[] __initdata = {
1808 &stamp_flash_device, 2346 &stamp_flash_device,
1809#endif 2347#endif
1810 2348
2349#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
2350 &bfin_i2s,
2351#endif
2352
1811#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) 2353#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
1812 &bfin_tdm, 2354 &bfin_tdm,
1813#endif 2355#endif
2356
2357#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
2358 &bfin_ac97,
2359#endif
2360#if defined(CONFIG_REGULATOR_AD5398) || defined(CONFIG_REGULATOR_AD5398_MODULE)
2361#if defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER) || \
2362 defined(CONFIG_REGULATOR_VIRTUAL_CONSUMER_MODULE)
2363 &ad5398_virt_consumer_device,
2364#endif
2365#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2366 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2367 &ad5398_userspace_consumer_device,
2368#endif
2369#endif
2370
2371#if defined(CONFIG_REGULATOR_ADP_SWITCH) || defined(CONFIG_REGULATOR_ADP_SWITCH_MODULE)
2372 &adp_switch_device,
2373#if defined(CONFIG_REGULATOR_USERSPACE_CONSUMER) || \
2374 defined(CONFIG_REGULATOR_USERSPACE_CONSUMER_MODULE)
2375 &adp122_userspace_consumer_device,
2376 &adp150_userspace_consumer_device,
2377#endif
2378#endif
1814}; 2379};
1815 2380
1816static int __init stamp_init(void) 2381static int __init stamp_init(void)
1817{ 2382{
1818 printk(KERN_INFO "%s(): registering device resources\n", __func__); 2383 printk(KERN_INFO "%s(): registering device resources\n", __func__);
1819 i2c_register_board_info(0, bfin_i2c_board_info,
1820 ARRAY_SIZE(bfin_i2c_board_info));
1821 bfin_plat_nand_init(); 2384 bfin_plat_nand_init();
2385 adf702x_mac_init();
1822 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); 2386 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
2387 i2c_register_board_info(0, bfin_i2c_board_info,
2388 ARRAY_SIZE(bfin_i2c_board_info));
1823 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); 2389 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
1824 2390
1825 return 0; 2391 return 0;
@@ -1827,6 +2393,34 @@ static int __init stamp_init(void)
1827 2393
1828arch_initcall(stamp_init); 2394arch_initcall(stamp_init);
1829 2395
2396
2397static struct platform_device *stamp_early_devices[] __initdata = {
2398#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
2399#ifdef CONFIG_SERIAL_BFIN_UART0
2400 &bfin_uart0_device,
2401#endif
2402#ifdef CONFIG_SERIAL_BFIN_UART1
2403 &bfin_uart1_device,
2404#endif
2405#endif
2406
2407#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
2408#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
2409 &bfin_sport0_uart_device,
2410#endif
2411#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
2412 &bfin_sport1_uart_device,
2413#endif
2414#endif
2415};
2416
2417void __init native_machine_early_platform_add_devices(void)
2418{
2419 printk(KERN_INFO "register early platform devices\n");
2420 early_platform_add_devices(stamp_early_devices,
2421 ARRAY_SIZE(stamp_early_devices));
2422}
2423
1830void native_machine_restart(char *cmd) 2424void native_machine_restart(char *cmd)
1831{ 2425{
1832 /* workaround reboot hang when booting from SPI */ 2426 /* workaround reboot hang when booting from SPI */
diff --git a/arch/blackfin/mach-bf537/boards/tcm_bf537.c b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
index 57163b65a4f5..4f0a2e72ce4c 100644
--- a/arch/blackfin/mach-bf537/boards/tcm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
@@ -74,7 +74,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
74}; 74};
75#endif 75#endif
76 76
77#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 77#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
78static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 78static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
79 .enable_dma = 0, 79 .enable_dma = 0,
80 .bits_per_word = 16, 80 .bits_per_word = 16,
@@ -113,7 +113,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
113 }, 113 },
114#endif 114#endif
115 115
116#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 116#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
117 { 117 {
118 .modalias = "ad1836", 118 .modalias = "ad1836",
119 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 119 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -327,25 +327,93 @@ static struct platform_device cm_flash_device = {
327#endif 327#endif
328 328
329#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 329#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
330static struct resource bfin_uart_resources[] = { 330#ifdef CONFIG_SERIAL_BFIN_UART0
331static struct resource bfin_uart0_resources[] = {
331 { 332 {
332 .start = 0xFFC00400, 333 .start = UART0_THR,
333 .end = 0xFFC004FF, 334 .end = UART0_GCTL+2,
334 .flags = IORESOURCE_MEM, 335 .flags = IORESOURCE_MEM,
335 }, { 336 },
336 .start = 0xFFC02000, 337 {
337 .end = 0xFFC020FF, 338 .start = IRQ_UART0_RX,
339 .end = IRQ_UART0_RX+1,
340 .flags = IORESOURCE_IRQ,
341 },
342 {
343 .start = IRQ_UART0_ERROR,
344 .end = IRQ_UART0_ERROR,
345 .flags = IORESOURCE_IRQ,
346 },
347 {
348 .start = CH_UART0_TX,
349 .end = CH_UART0_TX,
350 .flags = IORESOURCE_DMA,
351 },
352 {
353 .start = CH_UART0_RX,
354 .end = CH_UART0_RX,
355 .flags = IORESOURCE_DMA,
356 },
357};
358
359unsigned short bfin_uart0_peripherals[] = {
360 P_UART0_TX, P_UART0_RX, 0
361};
362
363static struct platform_device bfin_uart0_device = {
364 .name = "bfin-uart",
365 .id = 0,
366 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
367 .resource = bfin_uart0_resources,
368 .dev = {
369 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
370 },
371};
372#endif
373#ifdef CONFIG_SERIAL_BFIN_UART1
374static struct resource bfin_uart1_resources[] = {
375 {
376 .start = UART1_THR,
377 .end = UART1_GCTL+2,
338 .flags = IORESOURCE_MEM, 378 .flags = IORESOURCE_MEM,
339 }, 379 },
380 {
381 .start = IRQ_UART1_RX,
382 .end = IRQ_UART1_RX+1,
383 .flags = IORESOURCE_IRQ,
384 },
385 {
386 .start = IRQ_UART1_ERROR,
387 .end = IRQ_UART1_ERROR,
388 .flags = IORESOURCE_IRQ,
389 },
390 {
391 .start = CH_UART1_TX,
392 .end = CH_UART1_TX,
393 .flags = IORESOURCE_DMA,
394 },
395 {
396 .start = CH_UART1_RX,
397 .end = CH_UART1_RX,
398 .flags = IORESOURCE_DMA,
399 },
400};
401
402unsigned short bfin_uart1_peripherals[] = {
403 P_UART1_TX, P_UART1_RX, 0
340}; 404};
341 405
342static struct platform_device bfin_uart_device = { 406static struct platform_device bfin_uart1_device = {
343 .name = "bfin-uart", 407 .name = "bfin-uart",
344 .id = 1, 408 .id = 1,
345 .num_resources = ARRAY_SIZE(bfin_uart_resources), 409 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
346 .resource = bfin_uart_resources, 410 .resource = bfin_uart1_resources,
411 .dev = {
412 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
413 },
347}; 414};
348#endif 415#endif
416#endif
349 417
350#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 418#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
351#ifdef CONFIG_BFIN_SIR0 419#ifdef CONFIG_BFIN_SIR0
@@ -425,16 +493,75 @@ static struct platform_device i2c_bfin_twi_device = {
425#endif 493#endif
426 494
427#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 495#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
496#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
497static struct resource bfin_sport0_uart_resources[] = {
498 {
499 .start = SPORT0_TCR1,
500 .end = SPORT0_MRCS3+4,
501 .flags = IORESOURCE_MEM,
502 },
503 {
504 .start = IRQ_SPORT0_RX,
505 .end = IRQ_SPORT0_RX+1,
506 .flags = IORESOURCE_IRQ,
507 },
508 {
509 .start = IRQ_SPORT0_ERROR,
510 .end = IRQ_SPORT0_ERROR,
511 .flags = IORESOURCE_IRQ,
512 },
513};
514
515unsigned short bfin_sport0_peripherals[] = {
516 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
517 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
518};
519
428static struct platform_device bfin_sport0_uart_device = { 520static struct platform_device bfin_sport0_uart_device = {
429 .name = "bfin-sport-uart", 521 .name = "bfin-sport-uart",
430 .id = 0, 522 .id = 0,
523 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
524 .resource = bfin_sport0_uart_resources,
525 .dev = {
526 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
527 },
528};
529#endif
530#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
531static struct resource bfin_sport1_uart_resources[] = {
532 {
533 .start = SPORT1_TCR1,
534 .end = SPORT1_MRCS3+4,
535 .flags = IORESOURCE_MEM,
536 },
537 {
538 .start = IRQ_SPORT1_RX,
539 .end = IRQ_SPORT1_RX+1,
540 .flags = IORESOURCE_IRQ,
541 },
542 {
543 .start = IRQ_SPORT1_ERROR,
544 .end = IRQ_SPORT1_ERROR,
545 .flags = IORESOURCE_IRQ,
546 },
547};
548
549unsigned short bfin_sport1_peripherals[] = {
550 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
551 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
431}; 552};
432 553
433static struct platform_device bfin_sport1_uart_device = { 554static struct platform_device bfin_sport1_uart_device = {
434 .name = "bfin-sport-uart", 555 .name = "bfin-sport-uart",
435 .id = 1, 556 .id = 1,
557 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
558 .resource = bfin_sport1_uart_resources,
559 .dev = {
560 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
561 },
436}; 562};
437#endif 563#endif
564#endif
438 565
439#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) 566#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
440static struct platform_device bfin_mii_bus = { 567static struct platform_device bfin_mii_bus = {
@@ -524,7 +651,12 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
524#endif 651#endif
525 652
526#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 653#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
527 &bfin_uart_device, 654#ifdef CONFIG_SERIAL_BFIN_UART0
655 &bfin_uart0_device,
656#endif
657#ifdef CONFIG_SERIAL_BFIN_UART1
658 &bfin_uart1_device,
659#endif
528#endif 660#endif
529 661
530#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 662#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -541,9 +673,13 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
541#endif 673#endif
542 674
543#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) 675#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
676#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
544 &bfin_sport0_uart_device, 677 &bfin_sport0_uart_device,
678#endif
679#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
545 &bfin_sport1_uart_device, 680 &bfin_sport1_uart_device,
546#endif 681#endif
682#endif
547 683
548#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 684#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
549 &isp1362_hcd_device, 685 &isp1362_hcd_device,
@@ -591,6 +727,33 @@ static int __init tcm_bf537_init(void)
591 727
592arch_initcall(tcm_bf537_init); 728arch_initcall(tcm_bf537_init);
593 729
730static struct platform_device *cm_bf537_early_devices[] __initdata = {
731#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
732#ifdef CONFIG_SERIAL_BFIN_UART0
733 &bfin_uart0_device,
734#endif
735#ifdef CONFIG_SERIAL_BFIN_UART1
736 &bfin_uart1_device,
737#endif
738#endif
739
740#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
741#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
742 &bfin_sport0_uart_device,
743#endif
744#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
745 &bfin_sport1_uart_device,
746#endif
747#endif
748};
749
750void __init native_machine_early_platform_add_devices(void)
751{
752 printk(KERN_INFO "register early platform devices\n");
753 early_platform_add_devices(cm_bf537_early_devices,
754 ARRAY_SIZE(cm_bf537_early_devices));
755}
756
594void bfin_get_ether_addr(char *addr) 757void bfin_get_ether_addr(char *addr)
595{ 758{
596 random_ether_addr(addr); 759 random_ether_addr(addr);
diff --git a/arch/blackfin/mach-bf537/include/mach/irq.h b/arch/blackfin/mach-bf537/include/mach/irq.h
index 0defa9457e7f..789a4f226f7b 100644
--- a/arch/blackfin/mach-bf537/include/mach/irq.h
+++ b/arch/blackfin/mach-bf537/include/mach/irq.h
@@ -134,7 +134,17 @@
134 134
135#define GPIO_IRQ_BASE IRQ_PF0 135#define GPIO_IRQ_BASE IRQ_PF0
136 136
137#define NR_IRQS (IRQ_PH15+1) 137#define IRQ_MAC_PHYINT 98 /* PHY_INT Interrupt */
138#define IRQ_MAC_MMCINT 99 /* MMC Counter Interrupt */
139#define IRQ_MAC_RXFSINT 100 /* RX Frame-Status Interrupt */
140#define IRQ_MAC_TXFSINT 101 /* TX Frame-Status Interrupt */
141#define IRQ_MAC_WAKEDET 102 /* Wake-Up Interrupt */
142#define IRQ_MAC_RXDMAERR 103 /* RX DMA Direction Error Interrupt */
143#define IRQ_MAC_TXDMAERR 104 /* TX DMA Direction Error Interrupt */
144#define IRQ_MAC_STMDONE 105 /* Station Mgt. Transfer Done Interrupt */
145
146#define NR_MACH_IRQS (IRQ_MAC_STMDONE + 1)
147#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
138 148
139#define IVG7 7 149#define IVG7 7
140#define IVG8 8 150#define IVG8 8
diff --git a/arch/blackfin/mach-bf538/boards/ezkit.c b/arch/blackfin/mach-bf538/boards/ezkit.c
index c296bb1ed503..1a1f65855b03 100644
--- a/arch/blackfin/mach-bf538/boards/ezkit.c
+++ b/arch/blackfin/mach-bf538/boards/ezkit.c
@@ -41,37 +41,148 @@ static struct platform_device rtc_device = {
41#endif 41#endif
42 42
43#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 43#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
44static struct resource bfin_uart_resources[] = {
45#ifdef CONFIG_SERIAL_BFIN_UART0 44#ifdef CONFIG_SERIAL_BFIN_UART0
45static struct resource bfin_uart0_resources[] = {
46 { 46 {
47 .start = 0xFFC00400, 47 .start = UART0_THR,
48 .end = 0xFFC004FF, 48 .end = UART0_GCTL+2,
49 .flags = IORESOURCE_MEM, 49 .flags = IORESOURCE_MEM,
50 }, 50 },
51 {
52 .start = IRQ_UART0_RX,
53 .end = IRQ_UART0_RX+1,
54 .flags = IORESOURCE_IRQ,
55 },
56 {
57 .start = IRQ_UART0_ERROR,
58 .end = IRQ_UART0_ERROR,
59 .flags = IORESOURCE_IRQ,
60 },
61 {
62 .start = CH_UART0_TX,
63 .end = CH_UART0_TX,
64 .flags = IORESOURCE_DMA,
65 },
66 {
67 .start = CH_UART0_RX,
68 .end = CH_UART0_RX,
69 .flags = IORESOURCE_DMA,
70 },
71#ifdef CONFIG_BFIN_UART0_CTSRTS
72 { /* CTS pin */
73 .start = GPIO_PG7,
74 .end = GPIO_PG7,
75 .flags = IORESOURCE_IO,
76 },
77 { /* RTS pin */
78 .start = GPIO_PG6,
79 .end = GPIO_PG6,
80 .flags = IORESOURCE_IO,
81 },
82#endif
83};
84
85unsigned short bfin_uart0_peripherals[] = {
86 P_UART0_TX, P_UART0_RX, 0
87};
88
89static struct platform_device bfin_uart0_device = {
90 .name = "bfin-uart",
91 .id = 0,
92 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
93 .resource = bfin_uart0_resources,
94 .dev = {
95 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
96 },
97};
51#endif 98#endif
52#ifdef CONFIG_SERIAL_BFIN_UART1 99#ifdef CONFIG_SERIAL_BFIN_UART1
100static struct resource bfin_uart1_resources[] = {
53 { 101 {
54 .start = 0xFFC02000, 102 .start = UART1_THR,
55 .end = 0xFFC020FF, 103 .end = UART1_GCTL+2,
56 .flags = IORESOURCE_MEM, 104 .flags = IORESOURCE_MEM,
57 }, 105 },
106 {
107 .start = IRQ_UART1_RX,
108 .end = IRQ_UART1_RX+1,
109 .flags = IORESOURCE_IRQ,
110 },
111 {
112 .start = IRQ_UART1_ERROR,
113 .end = IRQ_UART1_ERROR,
114 .flags = IORESOURCE_IRQ,
115 },
116 {
117 .start = CH_UART1_TX,
118 .end = CH_UART1_TX,
119 .flags = IORESOURCE_DMA,
120 },
121 {
122 .start = CH_UART1_RX,
123 .end = CH_UART1_RX,
124 .flags = IORESOURCE_DMA,
125 },
126};
127
128unsigned short bfin_uart1_peripherals[] = {
129 P_UART1_TX, P_UART1_RX, 0
130};
131
132static struct platform_device bfin_uart1_device = {
133 .name = "bfin-uart",
134 .id = 1,
135 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
136 .resource = bfin_uart1_resources,
137 .dev = {
138 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
139 },
140};
58#endif 141#endif
59#ifdef CONFIG_SERIAL_BFIN_UART2 142#ifdef CONFIG_SERIAL_BFIN_UART2
143static struct resource bfin_uart2_resources[] = {
60 { 144 {
61 .start = 0xFFC02100, 145 .start = UART2_THR,
62 .end = 0xFFC021FF, 146 .end = UART2_GCTL+2,
63 .flags = IORESOURCE_MEM, 147 .flags = IORESOURCE_MEM,
64 }, 148 },
65#endif 149 {
150 .start = IRQ_UART2_RX,
151 .end = IRQ_UART2_RX+1,
152 .flags = IORESOURCE_IRQ,
153 },
154 {
155 .start = IRQ_UART2_ERROR,
156 .end = IRQ_UART2_ERROR,
157 .flags = IORESOURCE_IRQ,
158 },
159 {
160 .start = CH_UART2_TX,
161 .end = CH_UART2_TX,
162 .flags = IORESOURCE_DMA,
163 },
164 {
165 .start = CH_UART2_RX,
166 .end = CH_UART2_RX,
167 .flags = IORESOURCE_DMA,
168 },
169};
170
171unsigned short bfin_uart2_peripherals[] = {
172 P_UART2_TX, P_UART2_RX, 0
66}; 173};
67 174
68static struct platform_device bfin_uart_device = { 175static struct platform_device bfin_uart2_device = {
69 .name = "bfin-uart", 176 .name = "bfin-uart",
70 .id = 1, 177 .id = 2,
71 .num_resources = ARRAY_SIZE(bfin_uart_resources), 178 .num_resources = ARRAY_SIZE(bfin_uart2_resources),
72 .resource = bfin_uart_resources, 179 .resource = bfin_uart2_resources,
180 .dev = {
181 .platform_data = &bfin_uart2_peripherals, /* Passed to driver */
182 },
73}; 183};
74#endif 184#endif
185#endif
75 186
76#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 187#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
77#ifdef CONFIG_BFIN_SIR0 188#ifdef CONFIG_BFIN_SIR0
@@ -151,6 +262,145 @@ static struct platform_device bfin_sir2_device = {
151#endif 262#endif
152#endif 263#endif
153 264
265#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
266#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
267static struct resource bfin_sport0_uart_resources[] = {
268 {
269 .start = SPORT0_TCR1,
270 .end = SPORT0_MRCS3+4,
271 .flags = IORESOURCE_MEM,
272 },
273 {
274 .start = IRQ_SPORT0_RX,
275 .end = IRQ_SPORT0_RX+1,
276 .flags = IORESOURCE_IRQ,
277 },
278 {
279 .start = IRQ_SPORT0_ERROR,
280 .end = IRQ_SPORT0_ERROR,
281 .flags = IORESOURCE_IRQ,
282 },
283};
284
285unsigned short bfin_sport0_peripherals[] = {
286 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
287 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
288};
289
290static struct platform_device bfin_sport0_uart_device = {
291 .name = "bfin-sport-uart",
292 .id = 0,
293 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
294 .resource = bfin_sport0_uart_resources,
295 .dev = {
296 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
297 },
298};
299#endif
300#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
301static struct resource bfin_sport1_uart_resources[] = {
302 {
303 .start = SPORT1_TCR1,
304 .end = SPORT1_MRCS3+4,
305 .flags = IORESOURCE_MEM,
306 },
307 {
308 .start = IRQ_SPORT1_RX,
309 .end = IRQ_SPORT1_RX+1,
310 .flags = IORESOURCE_IRQ,
311 },
312 {
313 .start = IRQ_SPORT1_ERROR,
314 .end = IRQ_SPORT1_ERROR,
315 .flags = IORESOURCE_IRQ,
316 },
317};
318
319unsigned short bfin_sport1_peripherals[] = {
320 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
321 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
322};
323
324static struct platform_device bfin_sport1_uart_device = {
325 .name = "bfin-sport-uart",
326 .id = 1,
327 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
328 .resource = bfin_sport1_uart_resources,
329 .dev = {
330 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
331 },
332};
333#endif
334#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
335static struct resource bfin_sport2_uart_resources[] = {
336 {
337 .start = SPORT2_TCR1,
338 .end = SPORT2_MRCS3+4,
339 .flags = IORESOURCE_MEM,
340 },
341 {
342 .start = IRQ_SPORT2_RX,
343 .end = IRQ_SPORT2_RX+1,
344 .flags = IORESOURCE_IRQ,
345 },
346 {
347 .start = IRQ_SPORT2_ERROR,
348 .end = IRQ_SPORT2_ERROR,
349 .flags = IORESOURCE_IRQ,
350 },
351};
352
353unsigned short bfin_sport2_peripherals[] = {
354 P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS,
355 P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0
356};
357
358static struct platform_device bfin_sport2_uart_device = {
359 .name = "bfin-sport-uart",
360 .id = 2,
361 .num_resources = ARRAY_SIZE(bfin_sport2_uart_resources),
362 .resource = bfin_sport2_uart_resources,
363 .dev = {
364 .platform_data = &bfin_sport2_peripherals, /* Passed to driver */
365 },
366};
367#endif
368#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
369static struct resource bfin_sport3_uart_resources[] = {
370 {
371 .start = SPORT3_TCR1,
372 .end = SPORT3_MRCS3+4,
373 .flags = IORESOURCE_MEM,
374 },
375 {
376 .start = IRQ_SPORT3_RX,
377 .end = IRQ_SPORT3_RX+1,
378 .flags = IORESOURCE_IRQ,
379 },
380 {
381 .start = IRQ_SPORT3_ERROR,
382 .end = IRQ_SPORT3_ERROR,
383 .flags = IORESOURCE_IRQ,
384 },
385};
386
387unsigned short bfin_sport3_peripherals[] = {
388 P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS,
389 P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0
390};
391
392static struct platform_device bfin_sport3_uart_device = {
393 .name = "bfin-sport-uart",
394 .id = 3,
395 .num_resources = ARRAY_SIZE(bfin_sport3_uart_resources),
396 .resource = bfin_sport3_uart_resources,
397 .dev = {
398 .platform_data = &bfin_sport3_peripherals, /* Passed to driver */
399 },
400};
401#endif
402#endif
403
154#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) 404#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
155unsigned short bfin_can_peripherals[] = { 405unsigned short bfin_can_peripherals[] = {
156 P_CAN0_RX, P_CAN0_TX, 0 406 P_CAN0_RX, P_CAN0_TX, 0
@@ -268,8 +518,8 @@ static const struct ad7879_platform_data bfin_ad7879_ts_info = {
268 .median = 2, /* do 8 measurements */ 518 .median = 2, /* do 8 measurements */
269 .averaging = 1, /* take the average of 4 middle samples */ 519 .averaging = 1, /* take the average of 4 middle samples */
270 .pen_down_acc_interval = 255, /* 9.4 ms */ 520 .pen_down_acc_interval = 255, /* 9.4 ms */
271 .gpio_output = 1, /* configure AUX/VBAT/GPIO as GPIO output */ 521 .gpio_export = 1, /* Export GPIO to gpiolib */
272 .gpio_default = 1, /* During initialization set GPIO = HIGH */ 522 .gpio_base = -1, /* Dynamic allocation */
273}; 523};
274#endif 524#endif
275 525
@@ -284,9 +534,10 @@ static struct bfin5xx_spi_chip spi_ad7879_chip_info = {
284#include <asm/bfin-lq035q1.h> 534#include <asm/bfin-lq035q1.h>
285 535
286static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = { 536static struct bfin_lq035q1fb_disp_info bfin_lq035q1_data = {
287 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB, 537 .mode = LQ035_NORM | LQ035_RGB | LQ035_RL | LQ035_TB,
288 .use_bl = 0, /* let something else control the LCD Blacklight */ 538 .ppi_mode = USE_RGB565_16_BIT_PPI,
289 .gpio_bl = GPIO_PF7, 539 .use_bl = 0, /* let something else control the LCD Blacklight */
540 .gpio_bl = GPIO_PF7,
290}; 541};
291 542
292static struct resource bfin_lq035q1_resources[] = { 543static struct resource bfin_lq035q1_resources[] = {
@@ -622,7 +873,15 @@ static struct platform_device *cm_bf538_devices[] __initdata = {
622#endif 873#endif
623 874
624#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 875#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
625 &bfin_uart_device, 876#ifdef CONFIG_SERIAL_BFIN_UART0
877 &bfin_uart0_device,
878#endif
879#ifdef CONFIG_SERIAL_BFIN_UART1
880 &bfin_uart1_device,
881#endif
882#ifdef CONFIG_SERIAL_BFIN_UART2
883 &bfin_uart2_device,
884#endif
626#endif 885#endif
627 886
628#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 887#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
@@ -648,6 +907,21 @@ static struct platform_device *cm_bf538_devices[] __initdata = {
648#endif 907#endif
649#endif 908#endif
650 909
910#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
911#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
912 &bfin_sport0_uart_device,
913#endif
914#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
915 &bfin_sport1_uart_device,
916#endif
917#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
918 &bfin_sport2_uart_device,
919#endif
920#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
921 &bfin_sport3_uart_device,
922#endif
923#endif
924
651#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) 925#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
652 &bfin_can_device, 926 &bfin_can_device,
653#endif 927#endif
@@ -683,3 +957,39 @@ static int __init ezkit_init(void)
683} 957}
684 958
685arch_initcall(ezkit_init); 959arch_initcall(ezkit_init);
960
961static struct platform_device *ezkit_early_devices[] __initdata = {
962#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
963#ifdef CONFIG_SERIAL_BFIN_UART0
964 &bfin_uart0_device,
965#endif
966#ifdef CONFIG_SERIAL_BFIN_UART1
967 &bfin_uart1_device,
968#endif
969#ifdef CONFIG_SERIAL_BFIN_UART2
970 &bfin_uart2_device,
971#endif
972#endif
973
974#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
975#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
976 &bfin_sport0_uart_device,
977#endif
978#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
979 &bfin_sport1_uart_device,
980#endif
981#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
982 &bfin_sport2_uart_device,
983#endif
984#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
985 &bfin_sport3_uart_device,
986#endif
987#endif
988};
989
990void __init native_machine_early_platform_add_devices(void)
991{
992 printk(KERN_INFO "register early platform devices\n");
993 early_platform_add_devices(ezkit_early_devices,
994 ARRAY_SIZE(ezkit_early_devices));
995}
diff --git a/arch/blackfin/mach-bf538/include/mach/irq.h b/arch/blackfin/mach-bf538/include/mach/irq.h
index a4b7fcbc556b..7a479d224dc7 100644
--- a/arch/blackfin/mach-bf538/include/mach/irq.h
+++ b/arch/blackfin/mach-bf538/include/mach/irq.h
@@ -110,7 +110,8 @@
110 110
111#define GPIO_IRQ_BASE IRQ_PF0 111#define GPIO_IRQ_BASE IRQ_PF0
112 112
113#define NR_IRQS (IRQ_PF15+1) 113#define NR_MACH_IRQS (IRQ_PF15 + 1)
114#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
114 115
115#define IVG7 7 116#define IVG7 7
116#define IVG8 8 117#define IVG8 8
diff --git a/arch/blackfin/mach-bf548/boards/cm_bf548.c b/arch/blackfin/mach-bf548/boards/cm_bf548.c
index ccdcd6da2e9f..f60c333fec66 100644
--- a/arch/blackfin/mach-bf548/boards/cm_bf548.c
+++ b/arch/blackfin/mach-bf548/boards/cm_bf548.c
@@ -127,44 +127,211 @@ static struct platform_device rtc_device = {
127#endif 127#endif
128 128
129#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 129#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
130static struct resource bfin_uart_resources[] = {
131#ifdef CONFIG_SERIAL_BFIN_UART0 130#ifdef CONFIG_SERIAL_BFIN_UART0
131static struct resource bfin_uart0_resources[] = {
132 { 132 {
133 .start = 0xFFC00400, 133 .start = UART0_DLL,
134 .end = 0xFFC004FF, 134 .end = UART0_RBR+2,
135 .flags = IORESOURCE_MEM, 135 .flags = IORESOURCE_MEM,
136 }, 136 },
137 {
138 .start = IRQ_UART0_RX,
139 .end = IRQ_UART0_RX+1,
140 .flags = IORESOURCE_IRQ,
141 },
142 {
143 .start = IRQ_UART0_ERROR,
144 .end = IRQ_UART0_ERROR,
145 .flags = IORESOURCE_IRQ,
146 },
147 {
148 .start = CH_UART0_TX,
149 .end = CH_UART0_TX,
150 .flags = IORESOURCE_DMA,
151 },
152 {
153 .start = CH_UART0_RX,
154 .end = CH_UART0_RX,
155 .flags = IORESOURCE_DMA,
156 },
157};
158
159unsigned short bfin_uart0_peripherals[] = {
160 P_UART0_TX, P_UART0_RX, 0
161};
162
163static struct platform_device bfin_uart0_device = {
164 .name = "bfin-uart",
165 .id = 0,
166 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
167 .resource = bfin_uart0_resources,
168 .dev = {
169 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
170 },
171};
137#endif 172#endif
138#ifdef CONFIG_SERIAL_BFIN_UART1 173#ifdef CONFIG_SERIAL_BFIN_UART1
174static struct resource bfin_uart1_resources[] = {
139 { 175 {
140 .start = 0xFFC02000, 176 .start = UART1_DLL,
141 .end = 0xFFC020FF, 177 .end = UART1_RBR+2,
142 .flags = IORESOURCE_MEM, 178 .flags = IORESOURCE_MEM,
143 }, 179 },
180 {
181 .start = IRQ_UART1_RX,
182 .end = IRQ_UART1_RX+1,
183 .flags = IORESOURCE_IRQ,
184 },
185 {
186 .start = IRQ_UART1_ERROR,
187 .end = IRQ_UART1_ERROR,
188 .flags = IORESOURCE_IRQ,
189 },
190 {
191 .start = CH_UART1_TX,
192 .end = CH_UART1_TX,
193 .flags = IORESOURCE_DMA,
194 },
195 {
196 .start = CH_UART1_RX,
197 .end = CH_UART1_RX,
198 .flags = IORESOURCE_DMA,
199 },
200#ifdef CONFIG_BFIN_UART1_CTSRTS
201 { /* CTS pin -- 0 means not supported */
202 .start = GPIO_PE10,
203 .end = GPIO_PE10,
204 .flags = IORESOURCE_IO,
205 },
206 { /* RTS pin -- 0 means not supported */
207 .start = GPIO_PE9,
208 .end = GPIO_PE9,
209 .flags = IORESOURCE_IO,
210 },
211#endif
212};
213
214unsigned short bfin_uart1_peripherals[] = {
215 P_UART1_TX, P_UART1_RX,
216#ifdef CONFIG_BFIN_UART1_CTSRTS
217 P_UART1_RTS, P_UART1_CTS,
218#endif
219 0
220};
221
222static struct platform_device bfin_uart1_device = {
223 .name = "bfin-uart",
224 .id = 1,
225 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
226 .resource = bfin_uart1_resources,
227 .dev = {
228 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
229 },
230};
144#endif 231#endif
145#ifdef CONFIG_SERIAL_BFIN_UART2 232#ifdef CONFIG_SERIAL_BFIN_UART2
233static struct resource bfin_uart2_resources[] = {
146 { 234 {
147 .start = 0xFFC02100, 235 .start = UART2_DLL,
148 .end = 0xFFC021FF, 236 .end = UART2_RBR+2,
149 .flags = IORESOURCE_MEM, 237 .flags = IORESOURCE_MEM,
150 }, 238 },
239 {
240 .start = IRQ_UART2_RX,
241 .end = IRQ_UART2_RX+1,
242 .flags = IORESOURCE_IRQ,
243 },
244 {
245 .start = IRQ_UART2_ERROR,
246 .end = IRQ_UART2_ERROR,
247 .flags = IORESOURCE_IRQ,
248 },
249 {
250 .start = CH_UART2_TX,
251 .end = CH_UART2_TX,
252 .flags = IORESOURCE_DMA,
253 },
254 {
255 .start = CH_UART2_RX,
256 .end = CH_UART2_RX,
257 .flags = IORESOURCE_DMA,
258 },
259};
260
261unsigned short bfin_uart2_peripherals[] = {
262 P_UART2_TX, P_UART2_RX, 0
263};
264
265static struct platform_device bfin_uart2_device = {
266 .name = "bfin-uart",
267 .id = 2,
268 .num_resources = ARRAY_SIZE(bfin_uart2_resources),
269 .resource = bfin_uart2_resources,
270 .dev = {
271 .platform_data = &bfin_uart2_peripherals, /* Passed to driver */
272 },
273};
151#endif 274#endif
152#ifdef CONFIG_SERIAL_BFIN_UART3 275#ifdef CONFIG_SERIAL_BFIN_UART3
276static struct resource bfin_uart3_resources[] = {
153 { 277 {
154 .start = 0xFFC03100, 278 .start = UART3_DLL,
155 .end = 0xFFC031FF, 279 .end = UART3_RBR+2,
156 .flags = IORESOURCE_MEM, 280 .flags = IORESOURCE_MEM,
157 }, 281 },
282 {
283 .start = IRQ_UART3_RX,
284 .end = IRQ_UART3_RX+1,
285 .flags = IORESOURCE_IRQ,
286 },
287 {
288 .start = IRQ_UART3_ERROR,
289 .end = IRQ_UART3_ERROR,
290 .flags = IORESOURCE_IRQ,
291 },
292 {
293 .start = CH_UART3_TX,
294 .end = CH_UART3_TX,
295 .flags = IORESOURCE_DMA,
296 },
297 {
298 .start = CH_UART3_RX,
299 .end = CH_UART3_RX,
300 .flags = IORESOURCE_DMA,
301 },
302#ifdef CONFIG_BFIN_UART3_CTSRTS
303 { /* CTS pin -- 0 means not supported */
304 .start = GPIO_PB3,
305 .end = GPIO_PB3,
306 .flags = IORESOURCE_IO,
307 },
308 { /* RTS pin -- 0 means not supported */
309 .start = GPIO_PB2,
310 .end = GPIO_PB2,
311 .flags = IORESOURCE_IO,
312 },
158#endif 313#endif
159}; 314};
160 315
161static struct platform_device bfin_uart_device = { 316unsigned short bfin_uart3_peripherals[] = {
317 P_UART3_TX, P_UART3_RX,
318#ifdef CONFIG_BFIN_UART3_CTSRTS
319 P_UART3_RTS, P_UART3_CTS,
320#endif
321 0
322};
323
324static struct platform_device bfin_uart3_device = {
162 .name = "bfin-uart", 325 .name = "bfin-uart",
163 .id = 1, 326 .id = 3,
164 .num_resources = ARRAY_SIZE(bfin_uart_resources), 327 .num_resources = ARRAY_SIZE(bfin_uart3_resources),
165 .resource = bfin_uart_resources, 328 .resource = bfin_uart3_resources,
329 .dev = {
330 .platform_data = &bfin_uart3_peripherals, /* Passed to driver */
331 },
166}; 332};
167#endif 333#endif
334#endif
168 335
169#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 336#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
170#ifdef CONFIG_BFIN_SIR0 337#ifdef CONFIG_BFIN_SIR0
@@ -359,6 +526,145 @@ static struct platform_device musb_device = {
359}; 526};
360#endif 527#endif
361 528
529#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
530#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
531static struct resource bfin_sport0_uart_resources[] = {
532 {
533 .start = SPORT0_TCR1,
534 .end = SPORT0_MRCS3+4,
535 .flags = IORESOURCE_MEM,
536 },
537 {
538 .start = IRQ_SPORT0_RX,
539 .end = IRQ_SPORT0_RX+1,
540 .flags = IORESOURCE_IRQ,
541 },
542 {
543 .start = IRQ_SPORT0_ERROR,
544 .end = IRQ_SPORT0_ERROR,
545 .flags = IORESOURCE_IRQ,
546 },
547};
548
549unsigned short bfin_sport0_peripherals[] = {
550 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
551 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
552};
553
554static struct platform_device bfin_sport0_uart_device = {
555 .name = "bfin-sport-uart",
556 .id = 0,
557 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
558 .resource = bfin_sport0_uart_resources,
559 .dev = {
560 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
561 },
562};
563#endif
564#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
565static struct resource bfin_sport1_uart_resources[] = {
566 {
567 .start = SPORT1_TCR1,
568 .end = SPORT1_MRCS3+4,
569 .flags = IORESOURCE_MEM,
570 },
571 {
572 .start = IRQ_SPORT1_RX,
573 .end = IRQ_SPORT1_RX+1,
574 .flags = IORESOURCE_IRQ,
575 },
576 {
577 .start = IRQ_SPORT1_ERROR,
578 .end = IRQ_SPORT1_ERROR,
579 .flags = IORESOURCE_IRQ,
580 },
581};
582
583unsigned short bfin_sport1_peripherals[] = {
584 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
585 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
586};
587
588static struct platform_device bfin_sport1_uart_device = {
589 .name = "bfin-sport-uart",
590 .id = 1,
591 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
592 .resource = bfin_sport1_uart_resources,
593 .dev = {
594 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
595 },
596};
597#endif
598#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
599static struct resource bfin_sport2_uart_resources[] = {
600 {
601 .start = SPORT2_TCR1,
602 .end = SPORT2_MRCS3+4,
603 .flags = IORESOURCE_MEM,
604 },
605 {
606 .start = IRQ_SPORT2_RX,
607 .end = IRQ_SPORT2_RX+1,
608 .flags = IORESOURCE_IRQ,
609 },
610 {
611 .start = IRQ_SPORT2_ERROR,
612 .end = IRQ_SPORT2_ERROR,
613 .flags = IORESOURCE_IRQ,
614 },
615};
616
617unsigned short bfin_sport2_peripherals[] = {
618 P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS,
619 P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0
620};
621
622static struct platform_device bfin_sport2_uart_device = {
623 .name = "bfin-sport-uart",
624 .id = 2,
625 .num_resources = ARRAY_SIZE(bfin_sport2_uart_resources),
626 .resource = bfin_sport2_uart_resources,
627 .dev = {
628 .platform_data = &bfin_sport2_peripherals, /* Passed to driver */
629 },
630};
631#endif
632#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
633static struct resource bfin_sport3_uart_resources[] = {
634 {
635 .start = SPORT3_TCR1,
636 .end = SPORT3_MRCS3+4,
637 .flags = IORESOURCE_MEM,
638 },
639 {
640 .start = IRQ_SPORT3_RX,
641 .end = IRQ_SPORT3_RX+1,
642 .flags = IORESOURCE_IRQ,
643 },
644 {
645 .start = IRQ_SPORT3_ERROR,
646 .end = IRQ_SPORT3_ERROR,
647 .flags = IORESOURCE_IRQ,
648 },
649};
650
651unsigned short bfin_sport3_peripherals[] = {
652 P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS,
653 P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0
654};
655
656static struct platform_device bfin_sport3_uart_device = {
657 .name = "bfin-sport-uart",
658 .id = 3,
659 .num_resources = ARRAY_SIZE(bfin_sport3_uart_resources),
660 .resource = bfin_sport3_uart_resources,
661 .dev = {
662 .platform_data = &bfin_sport3_peripherals, /* Passed to driver */
663 },
664};
665#endif
666#endif
667
362#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE) 668#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
363static struct resource bfin_atapi_resources[] = { 669static struct resource bfin_atapi_resources[] = {
364 { 670 {
@@ -752,7 +1058,18 @@ static struct platform_device *cm_bf548_devices[] __initdata = {
752#endif 1058#endif
753 1059
754#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 1060#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
755 &bfin_uart_device, 1061#ifdef CONFIG_SERIAL_BFIN_UART0
1062 &bfin_uart0_device,
1063#endif
1064#ifdef CONFIG_SERIAL_BFIN_UART1
1065 &bfin_uart1_device,
1066#endif
1067#ifdef CONFIG_SERIAL_BFIN_UART2
1068 &bfin_uart2_device,
1069#endif
1070#ifdef CONFIG_SERIAL_BFIN_UART3
1071 &bfin_uart3_device,
1072#endif
756#endif 1073#endif
757 1074
758#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 1075#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -782,6 +1099,21 @@ static struct platform_device *cm_bf548_devices[] __initdata = {
782 &musb_device, 1099 &musb_device,
783#endif 1100#endif
784 1101
1102#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
1103#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1104 &bfin_sport0_uart_device,
1105#endif
1106#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1107 &bfin_sport1_uart_device,
1108#endif
1109#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
1110 &bfin_sport2_uart_device,
1111#endif
1112#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
1113 &bfin_sport3_uart_device,
1114#endif
1115#endif
1116
785#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE) 1117#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
786 &bfin_atapi_device, 1118 &bfin_atapi_device,
787#endif 1119#endif
@@ -833,3 +1165,42 @@ static int __init cm_bf548_init(void)
833} 1165}
834 1166
835arch_initcall(cm_bf548_init); 1167arch_initcall(cm_bf548_init);
1168
1169static struct platform_device *cm_bf548_early_devices[] __initdata = {
1170#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
1171#ifdef CONFIG_SERIAL_BFIN_UART0
1172 &bfin_uart0_device,
1173#endif
1174#ifdef CONFIG_SERIAL_BFIN_UART1
1175 &bfin_uart1_device,
1176#endif
1177#ifdef CONFIG_SERIAL_BFIN_UART2
1178 &bfin_uart2_device,
1179#endif
1180#ifdef CONFIG_SERIAL_BFIN_UART3
1181 &bfin_uart3_device,
1182#endif
1183#endif
1184
1185#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
1186#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1187 &bfin_sport0_uart_device,
1188#endif
1189#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1190 &bfin_sport1_uart_device,
1191#endif
1192#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
1193 &bfin_sport2_uart_device,
1194#endif
1195#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
1196 &bfin_sport3_uart_device,
1197#endif
1198#endif
1199};
1200
1201void __init native_machine_early_platform_add_devices(void)
1202{
1203 printk(KERN_INFO "register early platform devices\n");
1204 early_platform_add_devices(cm_bf548_early_devices,
1205 ARRAY_SIZE(cm_bf548_early_devices));
1206}
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index 60193f72777c..06919db00a74 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -232,44 +232,211 @@ static struct platform_device rtc_device = {
232#endif 232#endif
233 233
234#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 234#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
235static struct resource bfin_uart_resources[] = {
236#ifdef CONFIG_SERIAL_BFIN_UART0 235#ifdef CONFIG_SERIAL_BFIN_UART0
236static struct resource bfin_uart0_resources[] = {
237 { 237 {
238 .start = 0xFFC00400, 238 .start = UART0_DLL,
239 .end = 0xFFC004FF, 239 .end = UART0_RBR+2,
240 .flags = IORESOURCE_MEM, 240 .flags = IORESOURCE_MEM,
241 }, 241 },
242 {
243 .start = IRQ_UART0_RX,
244 .end = IRQ_UART0_RX+1,
245 .flags = IORESOURCE_IRQ,
246 },
247 {
248 .start = IRQ_UART0_ERROR,
249 .end = IRQ_UART0_ERROR,
250 .flags = IORESOURCE_IRQ,
251 },
252 {
253 .start = CH_UART0_TX,
254 .end = CH_UART0_TX,
255 .flags = IORESOURCE_DMA,
256 },
257 {
258 .start = CH_UART0_RX,
259 .end = CH_UART0_RX,
260 .flags = IORESOURCE_DMA,
261 },
262};
263
264unsigned short bfin_uart0_peripherals[] = {
265 P_UART0_TX, P_UART0_RX, 0
266};
267
268static struct platform_device bfin_uart0_device = {
269 .name = "bfin-uart",
270 .id = 0,
271 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
272 .resource = bfin_uart0_resources,
273 .dev = {
274 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
275 },
276};
242#endif 277#endif
243#ifdef CONFIG_SERIAL_BFIN_UART1 278#ifdef CONFIG_SERIAL_BFIN_UART1
279static struct resource bfin_uart1_resources[] = {
244 { 280 {
245 .start = 0xFFC02000, 281 .start = UART1_DLL,
246 .end = 0xFFC020FF, 282 .end = UART1_RBR+2,
247 .flags = IORESOURCE_MEM, 283 .flags = IORESOURCE_MEM,
248 }, 284 },
285 {
286 .start = IRQ_UART1_RX,
287 .end = IRQ_UART1_RX+1,
288 .flags = IORESOURCE_IRQ,
289 },
290 {
291 .start = IRQ_UART1_ERROR,
292 .end = IRQ_UART1_ERROR,
293 .flags = IORESOURCE_IRQ,
294 },
295 {
296 .start = CH_UART1_TX,
297 .end = CH_UART1_TX,
298 .flags = IORESOURCE_DMA,
299 },
300 {
301 .start = CH_UART1_RX,
302 .end = CH_UART1_RX,
303 .flags = IORESOURCE_DMA,
304 },
305#ifdef CONFIG_BFIN_UART1_CTSRTS
306 { /* CTS pin -- 0 means not supported */
307 .start = GPIO_PE10,
308 .end = GPIO_PE10,
309 .flags = IORESOURCE_IO,
310 },
311 { /* RTS pin -- 0 means not supported */
312 .start = GPIO_PE9,
313 .end = GPIO_PE9,
314 .flags = IORESOURCE_IO,
315 },
316#endif
317};
318
319unsigned short bfin_uart1_peripherals[] = {
320 P_UART1_TX, P_UART1_RX,
321#ifdef CONFIG_BFIN_UART1_CTSRTS
322 P_UART1_RTS, P_UART1_CTS,
323#endif
324 0
325};
326
327static struct platform_device bfin_uart1_device = {
328 .name = "bfin-uart",
329 .id = 1,
330 .num_resources = ARRAY_SIZE(bfin_uart1_resources),
331 .resource = bfin_uart1_resources,
332 .dev = {
333 .platform_data = &bfin_uart1_peripherals, /* Passed to driver */
334 },
335};
249#endif 336#endif
250#ifdef CONFIG_SERIAL_BFIN_UART2 337#ifdef CONFIG_SERIAL_BFIN_UART2
338static struct resource bfin_uart2_resources[] = {
251 { 339 {
252 .start = 0xFFC02100, 340 .start = UART2_DLL,
253 .end = 0xFFC021FF, 341 .end = UART2_RBR+2,
254 .flags = IORESOURCE_MEM, 342 .flags = IORESOURCE_MEM,
255 }, 343 },
344 {
345 .start = IRQ_UART2_RX,
346 .end = IRQ_UART2_RX+1,
347 .flags = IORESOURCE_IRQ,
348 },
349 {
350 .start = IRQ_UART2_ERROR,
351 .end = IRQ_UART2_ERROR,
352 .flags = IORESOURCE_IRQ,
353 },
354 {
355 .start = CH_UART2_TX,
356 .end = CH_UART2_TX,
357 .flags = IORESOURCE_DMA,
358 },
359 {
360 .start = CH_UART2_RX,
361 .end = CH_UART2_RX,
362 .flags = IORESOURCE_DMA,
363 },
364};
365
366unsigned short bfin_uart2_peripherals[] = {
367 P_UART2_TX, P_UART2_RX, 0
368};
369
370static struct platform_device bfin_uart2_device = {
371 .name = "bfin-uart",
372 .id = 2,
373 .num_resources = ARRAY_SIZE(bfin_uart2_resources),
374 .resource = bfin_uart2_resources,
375 .dev = {
376 .platform_data = &bfin_uart2_peripherals, /* Passed to driver */
377 },
378};
256#endif 379#endif
257#ifdef CONFIG_SERIAL_BFIN_UART3 380#ifdef CONFIG_SERIAL_BFIN_UART3
381static struct resource bfin_uart3_resources[] = {
258 { 382 {
259 .start = 0xFFC03100, 383 .start = UART3_DLL,
260 .end = 0xFFC031FF, 384 .end = UART3_RBR+2,
261 .flags = IORESOURCE_MEM, 385 .flags = IORESOURCE_MEM,
262 }, 386 },
387 {
388 .start = IRQ_UART3_RX,
389 .end = IRQ_UART3_RX+1,
390 .flags = IORESOURCE_IRQ,
391 },
392 {
393 .start = IRQ_UART3_ERROR,
394 .end = IRQ_UART3_ERROR,
395 .flags = IORESOURCE_IRQ,
396 },
397 {
398 .start = CH_UART3_TX,
399 .end = CH_UART3_TX,
400 .flags = IORESOURCE_DMA,
401 },
402 {
403 .start = CH_UART3_RX,
404 .end = CH_UART3_RX,
405 .flags = IORESOURCE_DMA,
406 },
407#ifdef CONFIG_BFIN_UART3_CTSRTS
408 { /* CTS pin -- 0 means not supported */
409 .start = GPIO_PB3,
410 .end = GPIO_PB3,
411 .flags = IORESOURCE_IO,
412 },
413 { /* RTS pin -- 0 means not supported */
414 .start = GPIO_PB2,
415 .end = GPIO_PB2,
416 .flags = IORESOURCE_IO,
417 },
263#endif 418#endif
264}; 419};
265 420
266static struct platform_device bfin_uart_device = { 421unsigned short bfin_uart3_peripherals[] = {
422 P_UART3_TX, P_UART3_RX,
423#ifdef CONFIG_BFIN_UART3_CTSRTS
424 P_UART3_RTS, P_UART3_CTS,
425#endif
426 0
427};
428
429static struct platform_device bfin_uart3_device = {
267 .name = "bfin-uart", 430 .name = "bfin-uart",
268 .id = 1, 431 .id = 3,
269 .num_resources = ARRAY_SIZE(bfin_uart_resources), 432 .num_resources = ARRAY_SIZE(bfin_uart3_resources),
270 .resource = bfin_uart_resources, 433 .resource = bfin_uart3_resources,
434 .dev = {
435 .platform_data = &bfin_uart3_peripherals, /* Passed to driver */
436 },
271}; 437};
272#endif 438#endif
439#endif
273 440
274#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 441#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
275#ifdef CONFIG_BFIN_SIR0 442#ifdef CONFIG_BFIN_SIR0
@@ -464,6 +631,145 @@ static struct platform_device musb_device = {
464}; 631};
465#endif 632#endif
466 633
634#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
635#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
636static struct resource bfin_sport0_uart_resources[] = {
637 {
638 .start = SPORT0_TCR1,
639 .end = SPORT0_MRCS3+4,
640 .flags = IORESOURCE_MEM,
641 },
642 {
643 .start = IRQ_SPORT0_RX,
644 .end = IRQ_SPORT0_RX+1,
645 .flags = IORESOURCE_IRQ,
646 },
647 {
648 .start = IRQ_SPORT0_ERROR,
649 .end = IRQ_SPORT0_ERROR,
650 .flags = IORESOURCE_IRQ,
651 },
652};
653
654unsigned short bfin_sport0_peripherals[] = {
655 P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
656 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0
657};
658
659static struct platform_device bfin_sport0_uart_device = {
660 .name = "bfin-sport-uart",
661 .id = 0,
662 .num_resources = ARRAY_SIZE(bfin_sport0_uart_resources),
663 .resource = bfin_sport0_uart_resources,
664 .dev = {
665 .platform_data = &bfin_sport0_peripherals, /* Passed to driver */
666 },
667};
668#endif
669#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
670static struct resource bfin_sport1_uart_resources[] = {
671 {
672 .start = SPORT1_TCR1,
673 .end = SPORT1_MRCS3+4,
674 .flags = IORESOURCE_MEM,
675 },
676 {
677 .start = IRQ_SPORT1_RX,
678 .end = IRQ_SPORT1_RX+1,
679 .flags = IORESOURCE_IRQ,
680 },
681 {
682 .start = IRQ_SPORT1_ERROR,
683 .end = IRQ_SPORT1_ERROR,
684 .flags = IORESOURCE_IRQ,
685 },
686};
687
688unsigned short bfin_sport1_peripherals[] = {
689 P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS,
690 P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0
691};
692
693static struct platform_device bfin_sport1_uart_device = {
694 .name = "bfin-sport-uart",
695 .id = 1,
696 .num_resources = ARRAY_SIZE(bfin_sport1_uart_resources),
697 .resource = bfin_sport1_uart_resources,
698 .dev = {
699 .platform_data = &bfin_sport1_peripherals, /* Passed to driver */
700 },
701};
702#endif
703#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
704static struct resource bfin_sport2_uart_resources[] = {
705 {
706 .start = SPORT2_TCR1,
707 .end = SPORT2_MRCS3+4,
708 .flags = IORESOURCE_MEM,
709 },
710 {
711 .start = IRQ_SPORT2_RX,
712 .end = IRQ_SPORT2_RX+1,
713 .flags = IORESOURCE_IRQ,
714 },
715 {
716 .start = IRQ_SPORT2_ERROR,
717 .end = IRQ_SPORT2_ERROR,
718 .flags = IORESOURCE_IRQ,
719 },
720};
721
722unsigned short bfin_sport2_peripherals[] = {
723 P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS,
724 P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0
725};
726
727static struct platform_device bfin_sport2_uart_device = {
728 .name = "bfin-sport-uart",
729 .id = 2,
730 .num_resources = ARRAY_SIZE(bfin_sport2_uart_resources),
731 .resource = bfin_sport2_uart_resources,
732 .dev = {
733 .platform_data = &bfin_sport2_peripherals, /* Passed to driver */
734 },
735};
736#endif
737#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
738static struct resource bfin_sport3_uart_resources[] = {
739 {
740 .start = SPORT3_TCR1,
741 .end = SPORT3_MRCS3+4,
742 .flags = IORESOURCE_MEM,
743 },
744 {
745 .start = IRQ_SPORT3_RX,
746 .end = IRQ_SPORT3_RX+1,
747 .flags = IORESOURCE_IRQ,
748 },
749 {
750 .start = IRQ_SPORT3_ERROR,
751 .end = IRQ_SPORT3_ERROR,
752 .flags = IORESOURCE_IRQ,
753 },
754};
755
756unsigned short bfin_sport3_peripherals[] = {
757 P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS,
758 P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0
759};
760
761static struct platform_device bfin_sport3_uart_device = {
762 .name = "bfin-sport-uart",
763 .id = 3,
764 .num_resources = ARRAY_SIZE(bfin_sport3_uart_resources),
765 .resource = bfin_sport3_uart_resources,
766 .dev = {
767 .platform_data = &bfin_sport3_peripherals, /* Passed to driver */
768 },
769};
770#endif
771#endif
772
467#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) 773#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
468unsigned short bfin_can_peripherals[] = { 774unsigned short bfin_can_peripherals[] = {
469 P_CAN0_RX, P_CAN0_TX, 0 775 P_CAN0_RX, P_CAN0_TX, 0
@@ -657,8 +963,8 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = {
657}; 963};
658#endif 964#endif
659 965
660#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 966#if defined(CONFIG_SND_BLACKFIN_AD183X) \
661 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 967 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
662static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 968static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
663 .enable_dma = 0, 969 .enable_dma = 0,
664 .bits_per_word = 16, 970 .bits_per_word = 16,
@@ -714,8 +1020,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
714 .mode = SPI_MODE_3, 1020 .mode = SPI_MODE_3,
715 }, 1021 },
716#endif 1022#endif
717#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 1023#if defined(CONFIG_SND_BLACKFIN_AD183X) \
718 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 1024 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
719 { 1025 {
720 .modalias = "ad1836", 1026 .modalias = "ad1836",
721 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 1027 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -951,6 +1257,30 @@ static struct platform_device bfin_dpmc = {
951 }, 1257 },
952}; 1258};
953 1259
1260#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
1261static struct platform_device bfin_i2s = {
1262 .name = "bfin-i2s",
1263 .id = CONFIG_SND_BF5XX_SPORT_NUM,
1264 /* TODO: add platform data here */
1265};
1266#endif
1267
1268#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
1269static struct platform_device bfin_tdm = {
1270 .name = "bfin-tdm",
1271 .id = CONFIG_SND_BF5XX_SPORT_NUM,
1272 /* TODO: add platform data here */
1273};
1274#endif
1275
1276#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
1277static struct platform_device bfin_ac97 = {
1278 .name = "bfin-ac97",
1279 .id = CONFIG_SND_BF5XX_SPORT_NUM,
1280 /* TODO: add platform data here */
1281};
1282#endif
1283
954static struct platform_device *ezkit_devices[] __initdata = { 1284static struct platform_device *ezkit_devices[] __initdata = {
955 1285
956 &bfin_dpmc, 1286 &bfin_dpmc,
@@ -960,7 +1290,18 @@ static struct platform_device *ezkit_devices[] __initdata = {
960#endif 1290#endif
961 1291
962#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 1292#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
963 &bfin_uart_device, 1293#ifdef CONFIG_SERIAL_BFIN_UART0
1294 &bfin_uart0_device,
1295#endif
1296#ifdef CONFIG_SERIAL_BFIN_UART1
1297 &bfin_uart1_device,
1298#endif
1299#ifdef CONFIG_SERIAL_BFIN_UART2
1300 &bfin_uart2_device,
1301#endif
1302#ifdef CONFIG_SERIAL_BFIN_UART3
1303 &bfin_uart3_device,
1304#endif
964#endif 1305#endif
965 1306
966#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 1307#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -994,6 +1335,21 @@ static struct platform_device *ezkit_devices[] __initdata = {
994 &bfin_isp1760_device, 1335 &bfin_isp1760_device,
995#endif 1336#endif
996 1337
1338#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
1339#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1340 &bfin_sport0_uart_device,
1341#endif
1342#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1343 &bfin_sport1_uart_device,
1344#endif
1345#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
1346 &bfin_sport2_uart_device,
1347#endif
1348#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
1349 &bfin_sport3_uart_device,
1350#endif
1351#endif
1352
997#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE) 1353#if defined(CONFIG_CAN_BFIN) || defined(CONFIG_CAN_BFIN_MODULE)
998 &bfin_can_device, 1354 &bfin_can_device,
999#endif 1355#endif
@@ -1037,6 +1393,18 @@ static struct platform_device *ezkit_devices[] __initdata = {
1037#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) 1393#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
1038 &ezkit_flash_device, 1394 &ezkit_flash_device,
1039#endif 1395#endif
1396
1397#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
1398 &bfin_i2s,
1399#endif
1400
1401#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
1402 &bfin_tdm,
1403#endif
1404
1405#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
1406 &bfin_ac97,
1407#endif
1040}; 1408};
1041 1409
1042static int __init ezkit_init(void) 1410static int __init ezkit_init(void)
@@ -1058,3 +1426,42 @@ static int __init ezkit_init(void)
1058} 1426}
1059 1427
1060arch_initcall(ezkit_init); 1428arch_initcall(ezkit_init);
1429
1430static struct platform_device *ezkit_early_devices[] __initdata = {
1431#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
1432#ifdef CONFIG_SERIAL_BFIN_UART0
1433 &bfin_uart0_device,
1434#endif
1435#ifdef CONFIG_SERIAL_BFIN_UART1
1436 &bfin_uart1_device,
1437#endif
1438#ifdef CONFIG_SERIAL_BFIN_UART2
1439 &bfin_uart2_device,
1440#endif
1441#ifdef CONFIG_SERIAL_BFIN_UART3
1442 &bfin_uart3_device,
1443#endif
1444#endif
1445
1446#if defined(CONFIG_SERIAL_BFIN_SPORT_CONSOLE)
1447#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
1448 &bfin_sport0_uart_device,
1449#endif
1450#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
1451 &bfin_sport1_uart_device,
1452#endif
1453#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
1454 &bfin_sport2_uart_device,
1455#endif
1456#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
1457 &bfin_sport3_uart_device,
1458#endif
1459#endif
1460};
1461
1462void __init native_machine_early_platform_add_devices(void)
1463{
1464 printk(KERN_INFO "register early platform devices\n");
1465 early_platform_add_devices(ezkit_early_devices,
1466 ARRAY_SIZE(ezkit_early_devices));
1467}
diff --git a/arch/blackfin/mach-bf548/include/mach/irq.h b/arch/blackfin/mach-bf548/include/mach/irq.h
index 106db05684ae..1f99b51a3d56 100644
--- a/arch/blackfin/mach-bf548/include/mach/irq.h
+++ b/arch/blackfin/mach-bf548/include/mach/irq.h
@@ -317,7 +317,8 @@ Events (highest priority) EMU 0
317 317
318#define GPIO_IRQ_BASE IRQ_PA0 318#define GPIO_IRQ_BASE IRQ_PA0
319 319
320#define NR_IRQS (IRQ_PJ15+1) 320#define NR_MACH_IRQS (IRQ_PJ15 + 1)
321#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
321 322
322/* For compatibility reasons with existing code */ 323/* For compatibility reasons with existing code */
323 324
diff --git a/arch/blackfin/mach-bf561/Makefile b/arch/blackfin/mach-bf561/Makefile
index 59e18afe28c6..b34029718318 100644
--- a/arch/blackfin/mach-bf561/Makefile
+++ b/arch/blackfin/mach-bf561/Makefile
@@ -6,3 +6,4 @@ obj-y := ints-priority.o dma.o
6 6
7obj-$(CONFIG_BF561_COREB) += coreb.o 7obj-$(CONFIG_BF561_COREB) += coreb.o
8obj-$(CONFIG_SMP) += smp.o secondary.o atomic.o 8obj-$(CONFIG_SMP) += smp.o secondary.o atomic.o
9obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
diff --git a/arch/blackfin/mach-bf561/boards/acvilon.c b/arch/blackfin/mach-bf561/boards/acvilon.c
index 07e8dc8770da..5163e2c383c5 100644
--- a/arch/blackfin/mach-bf561/boards/acvilon.c
+++ b/arch/blackfin/mach-bf561/boards/acvilon.c
@@ -176,7 +176,7 @@ static struct resource smsc911x_resources[] = {
176}; 176};
177 177
178static struct smsc911x_platform_config smsc911x_config = { 178static struct smsc911x_platform_config smsc911x_config = {
179 .flags = SMSC911X_USE_32BIT, 179 .flags = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
180 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, 180 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
181 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, 181 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
182 .phy_interface = PHY_INTERFACE_MODE_MII, 182 .phy_interface = PHY_INTERFACE_MODE_MII,
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c
index dfc8d5b77986..e127aedc1d7f 100644
--- a/arch/blackfin/mach-bf561/boards/cm_bf561.c
+++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c
@@ -72,7 +72,7 @@ static struct bfin5xx_spi_chip spi_adc_chip_info = {
72}; 72};
73#endif 73#endif
74 74
75#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 75#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
76static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 76static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
77 .enable_dma = 0, 77 .enable_dma = 0,
78 .bits_per_word = 16, 78 .bits_per_word = 16,
@@ -111,7 +111,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
111 }, 111 },
112#endif 112#endif
113 113
114#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 114#if defined(CONFIG_SND_BLACKFIN_AD183X) || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
115 { 115 {
116 .modalias = "ad1836", 116 .modalias = "ad1836",
117 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 117 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -305,21 +305,50 @@ static struct platform_device isp1362_hcd_device = {
305#endif 305#endif
306 306
307#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 307#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
308static struct resource bfin_uart_resources[] = { 308#ifdef CONFIG_SERIAL_BFIN_UART0
309static struct resource bfin_uart0_resources[] = {
309 { 310 {
310 .start = 0xFFC00400, 311 .start = BFIN_UART_THR,
311 .end = 0xFFC004FF, 312 .end = BFIN_UART_GCTL+2,
312 .flags = IORESOURCE_MEM, 313 .flags = IORESOURCE_MEM,
313 }, 314 },
315 {
316 .start = IRQ_UART_RX,
317 .end = IRQ_UART_RX+1,
318 .flags = IORESOURCE_IRQ,
319 },
320 {
321 .start = IRQ_UART_ERROR,
322 .end = IRQ_UART_ERROR,
323 .flags = IORESOURCE_IRQ,
324 },
325 {
326 .start = CH_UART_TX,
327 .end = CH_UART_TX,
328 .flags = IORESOURCE_DMA,
329 },
330 {
331 .start = CH_UART_RX,
332 .end = CH_UART_RX,
333 .flags = IORESOURCE_DMA,
334 },
314}; 335};
315 336
316static struct platform_device bfin_uart_device = { 337unsigned short bfin_uart0_peripherals[] = {
338 P_UART0_TX, P_UART0_RX, 0
339};
340
341static struct platform_device bfin_uart0_device = {
317 .name = "bfin-uart", 342 .name = "bfin-uart",
318 .id = 1, 343 .id = 0,
319 .num_resources = ARRAY_SIZE(bfin_uart_resources), 344 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
320 .resource = bfin_uart_resources, 345 .resource = bfin_uart0_resources,
346 .dev = {
347 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
348 },
321}; 349};
322#endif 350#endif
351#endif
323 352
324#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 353#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
325#ifdef CONFIG_BFIN_SIR0 354#ifdef CONFIG_BFIN_SIR0
@@ -463,7 +492,9 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
463#endif 492#endif
464 493
465#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 494#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
466 &bfin_uart_device, 495#ifdef CONFIG_SERIAL_BFIN_UART0
496 &bfin_uart0_device,
497#endif
467#endif 498#endif
468 499
469#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 500#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -516,3 +547,18 @@ static int __init cm_bf561_init(void)
516} 547}
517 548
518arch_initcall(cm_bf561_init); 549arch_initcall(cm_bf561_init);
550
551static struct platform_device *cm_bf561_early_devices[] __initdata = {
552#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
553#ifdef CONFIG_SERIAL_BFIN_UART0
554 &bfin_uart0_device,
555#endif
556#endif
557};
558
559void __init native_machine_early_platform_add_devices(void)
560{
561 printk(KERN_INFO "register early platform devices\n");
562 early_platform_add_devices(cm_bf561_early_devices,
563 ARRAY_SIZE(cm_bf561_early_devices));
564}
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c
index ffd3e6a80d1a..9b93e2f95791 100644
--- a/arch/blackfin/mach-bf561/boards/ezkit.c
+++ b/arch/blackfin/mach-bf561/boards/ezkit.c
@@ -160,21 +160,50 @@ static struct platform_device smc91x_device = {
160#endif 160#endif
161 161
162#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 162#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
163static struct resource bfin_uart_resources[] = { 163#ifdef CONFIG_SERIAL_BFIN_UART0
164static struct resource bfin_uart0_resources[] = {
164 { 165 {
165 .start = 0xFFC00400, 166 .start = BFIN_UART_THR,
166 .end = 0xFFC004FF, 167 .end = BFIN_UART_GCTL+2,
167 .flags = IORESOURCE_MEM, 168 .flags = IORESOURCE_MEM,
168 }, 169 },
170 {
171 .start = IRQ_UART_RX,
172 .end = IRQ_UART_RX+1,
173 .flags = IORESOURCE_IRQ,
174 },
175 {
176 .start = IRQ_UART_ERROR,
177 .end = IRQ_UART_ERROR,
178 .flags = IORESOURCE_IRQ,
179 },
180 {
181 .start = CH_UART_TX,
182 .end = CH_UART_TX,
183 .flags = IORESOURCE_DMA,
184 },
185 {
186 .start = CH_UART_RX,
187 .end = CH_UART_RX,
188 .flags = IORESOURCE_DMA,
189 },
169}; 190};
170 191
171static struct platform_device bfin_uart_device = { 192unsigned short bfin_uart0_peripherals[] = {
193 P_UART0_TX, P_UART0_RX, 0
194};
195
196static struct platform_device bfin_uart0_device = {
172 .name = "bfin-uart", 197 .name = "bfin-uart",
173 .id = 1, 198 .id = 0,
174 .num_resources = ARRAY_SIZE(bfin_uart_resources), 199 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
175 .resource = bfin_uart_resources, 200 .resource = bfin_uart0_resources,
201 .dev = {
202 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
203 },
176}; 204};
177#endif 205#endif
206#endif
178 207
179#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 208#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
180#ifdef CONFIG_BFIN_SIR0 209#ifdef CONFIG_BFIN_SIR0
@@ -245,8 +274,8 @@ static struct platform_device ezkit_flash_device = {
245}; 274};
246#endif 275#endif
247 276
248#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 277#if defined(CONFIG_SND_BLACKFIN_AD183X) \
249 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 278 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
250static struct bfin5xx_spi_chip ad1836_spi_chip_info = { 279static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
251 .enable_dma = 0, 280 .enable_dma = 0,
252 .bits_per_word = 16, 281 .bits_per_word = 16,
@@ -299,8 +328,8 @@ static struct platform_device bfin_spi0_device = {
299#endif 328#endif
300 329
301static struct spi_board_info bfin_spi_board_info[] __initdata = { 330static struct spi_board_info bfin_spi_board_info[] __initdata = {
302#if defined(CONFIG_SND_BLACKFIN_AD1836) \ 331#if defined(CONFIG_SND_BLACKFIN_AD183X) \
303 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) 332 || defined(CONFIG_SND_BLACKFIN_AD183X_MODULE)
304 { 333 {
305 .modalias = "ad1836", 334 .modalias = "ad1836",
306 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 335 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
@@ -412,7 +441,9 @@ static struct platform_device *ezkit_devices[] __initdata = {
412#endif 441#endif
413 442
414#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) 443#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
415 &bfin_uart_device, 444#ifdef CONFIG_SERIAL_BFIN_UART0
445 &bfin_uart0_device,
446#endif
416#endif 447#endif
417 448
418#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 449#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
@@ -458,3 +489,18 @@ static int __init ezkit_init(void)
458} 489}
459 490
460arch_initcall(ezkit_init); 491arch_initcall(ezkit_init);
492
493static struct platform_device *ezkit_early_devices[] __initdata = {
494#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
495#ifdef CONFIG_SERIAL_BFIN_UART0
496 &bfin_uart0_device,
497#endif
498#endif
499};
500
501void __init native_machine_early_platform_add_devices(void)
502{
503 printk(KERN_INFO "register early platform devices\n");
504 early_platform_add_devices(ezkit_early_devices,
505 ARRAY_SIZE(ezkit_early_devices));
506}
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c
index 8ba7252455e1..d3017e53686b 100644
--- a/arch/blackfin/mach-bf561/boards/tepla.c
+++ b/arch/blackfin/mach-bf561/boards/tepla.c
@@ -42,6 +42,52 @@ static struct platform_device smc91x_device = {
42 .resource = smc91x_resources, 42 .resource = smc91x_resources,
43}; 43};
44 44
45#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
46#ifdef CONFIG_SERIAL_BFIN_UART0
47static struct resource bfin_uart0_resources[] = {
48 {
49 .start = BFIN_UART_THR,
50 .end = BFIN_UART_GCTL+2,
51 .flags = IORESOURCE_MEM,
52 },
53 {
54 .start = IRQ_UART_RX,
55 .end = IRQ_UART_RX+1,
56 .flags = IORESOURCE_IRQ,
57 },
58 {
59 .start = IRQ_UART_ERROR,
60 .end = IRQ_UART_ERROR,
61 .flags = IORESOURCE_IRQ,
62 },
63 {
64 .start = CH_UART_TX,
65 .end = CH_UART_TX,
66 .flags = IORESOURCE_DMA,
67 },
68 {
69 .start = CH_UART_RX,
70 .end = CH_UART_RX,
71 .flags = IORESOURCE_DMA,
72 },
73};
74
75unsigned short bfin_uart0_peripherals[] = {
76 P_UART0_TX, P_UART0_RX, 0
77};
78
79static struct platform_device bfin_uart0_device = {
80 .name = "bfin-uart",
81 .id = 0,
82 .num_resources = ARRAY_SIZE(bfin_uart0_resources),
83 .resource = bfin_uart0_resources,
84 .dev = {
85 .platform_data = &bfin_uart0_peripherals, /* Passed to driver */
86 },
87};
88#endif
89#endif
90
45#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 91#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
46#ifdef CONFIG_BFIN_SIR0 92#ifdef CONFIG_BFIN_SIR0
47static struct resource bfin_sir0_resources[] = { 93static struct resource bfin_sir0_resources[] = {
@@ -73,6 +119,13 @@ static struct platform_device bfin_sir0_device = {
73 119
74static struct platform_device *tepla_devices[] __initdata = { 120static struct platform_device *tepla_devices[] __initdata = {
75 &smc91x_device, 121 &smc91x_device,
122
123#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
124#ifdef CONFIG_SERIAL_BFIN_UART0
125 &bfin_uart0_device,
126#endif
127#endif
128
76#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE) 129#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
77#ifdef CONFIG_BFIN_SIR0 130#ifdef CONFIG_BFIN_SIR0
78 &bfin_sir0_device, 131 &bfin_sir0_device,
@@ -87,3 +140,18 @@ static int __init tepla_init(void)
87} 140}
88 141
89arch_initcall(tepla_init); 142arch_initcall(tepla_init);
143
144static struct platform_device *tepla_early_devices[] __initdata = {
145#if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
146#ifdef CONFIG_SERIAL_BFIN_UART0
147 &bfin_uart0_device,
148#endif
149#endif
150};
151
152void __init native_machine_early_platform_add_devices(void)
153{
154 printk(KERN_INFO "register early platform devices\n");
155 early_platform_add_devices(tepla_early_devices,
156 ARRAY_SIZE(tepla_early_devices));
157}
diff --git a/arch/blackfin/mach-bf561/hotplug.c b/arch/blackfin/mach-bf561/hotplug.c
new file mode 100644
index 000000000000..c95169b612dc
--- /dev/null
+++ b/arch/blackfin/mach-bf561/hotplug.c
@@ -0,0 +1,32 @@
1/*
2 * Copyright 2007-2009 Analog Devices Inc.
3 * Graff Yang <graf.yang@analog.com>
4 *
5 * Licensed under the GPL-2 or later.
6 */
7
8#include <asm/blackfin.h>
9#include <asm/smp.h>
10#define SIC_SYSIRQ(irq) (irq - (IRQ_CORETMR + 1))
11
12int hotplug_coreb;
13
14void platform_cpu_die(void)
15{
16 unsigned long iwr[2] = {0, 0};
17 unsigned long bank = SIC_SYSIRQ(IRQ_SUPPLE_0) / 32;
18 unsigned long bit = 1 << (SIC_SYSIRQ(IRQ_SUPPLE_0) % 32);
19
20 hotplug_coreb = 1;
21
22 iwr[bank] = bit;
23
24 /* disable core timer */
25 bfin_write_TCNTL(0);
26
27 /* clear ipi interrupt IRQ_SUPPLE_0 */
28 bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | (1 << (10 + 1)));
29 SSYNC();
30
31 coreb_sleep(iwr[0], iwr[1], 0);
32}
diff --git a/arch/blackfin/mach-bf561/include/mach/irq.h b/arch/blackfin/mach-bf561/include/mach/irq.h
index 7b208db267bf..c95566ade51b 100644
--- a/arch/blackfin/mach-bf561/include/mach/irq.h
+++ b/arch/blackfin/mach-bf561/include/mach/irq.h
@@ -265,7 +265,8 @@
265 265
266#define GPIO_IRQ_BASE IRQ_PF0 266#define GPIO_IRQ_BASE IRQ_PF0
267 267
268#define NR_IRQS (IRQ_PF47 + 1) 268#define NR_MACH_IRQS (IRQ_PF47 + 1)
269#define NR_IRQS (NR_MACH_IRQS + NR_SPARE_IRQS)
269 270
270#define IVG7 7 271#define IVG7 7
271#define IVG8 8 272#define IVG8 8
diff --git a/arch/blackfin/mach-bf561/include/mach/smp.h b/arch/blackfin/mach-bf561/include/mach/smp.h
index 390c7f4ae7b3..2c8c514dd386 100644
--- a/arch/blackfin/mach-bf561/include/mach/smp.h
+++ b/arch/blackfin/mach-bf561/include/mach/smp.h
@@ -25,4 +25,6 @@ void platform_send_ipi_cpu(unsigned int cpu);
25 25
26void platform_clear_ipi(unsigned int cpu); 26void platform_clear_ipi(unsigned int cpu);
27 27
28void bfin_local_timer_setup(void);
29
28#endif /* !_MACH_BF561_SMP */ 30#endif /* !_MACH_BF561_SMP */
diff --git a/arch/blackfin/mach-bf561/secondary.S b/arch/blackfin/mach-bf561/secondary.S
index 8e6050369c06..4624eebbf9c4 100644
--- a/arch/blackfin/mach-bf561/secondary.S
+++ b/arch/blackfin/mach-bf561/secondary.S
@@ -11,6 +11,7 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <asm/blackfin.h> 12#include <asm/blackfin.h>
13#include <asm/asm-offsets.h> 13#include <asm/asm-offsets.h>
14#include <asm/trace.h>
14 15
15__INIT 16__INIT
16 17
@@ -62,6 +63,8 @@ ENTRY(_coreb_trampoline_start)
62 M2 = r0; 63 M2 = r0;
63 M3 = r0; 64 M3 = r0;
64 65
66 trace_buffer_init(p0,r0);
67
65 /* Turn off the icache */ 68 /* Turn off the icache */
66 p0.l = LO(IMEM_CONTROL); 69 p0.l = LO(IMEM_CONTROL);
67 p0.h = HI(IMEM_CONTROL); 70 p0.h = HI(IMEM_CONTROL);
@@ -159,6 +162,41 @@ ENTRY(_coreb_trampoline_start)
159ENDPROC(_coreb_trampoline_start) 162ENDPROC(_coreb_trampoline_start)
160ENTRY(_coreb_trampoline_end) 163ENTRY(_coreb_trampoline_end)
161 164
165.section ".text"
166ENTRY(_set_sicb_iwr)
167 P0.H = hi(SICB_IWR0);
168 P0.L = lo(SICB_IWR0);
169 P1.H = hi(SICB_IWR1);
170 P1.L = lo(SICB_IWR1);
171 [P0] = R0;
172 [P1] = R1;
173 SSYNC;
174 RTS;
175ENDPROC(_set_sicb_iwr)
176
177ENTRY(_coreb_sleep)
178 sp.l = lo(INITIAL_STACK);
179 sp.h = hi(INITIAL_STACK);
180 fp = sp;
181 usp = sp;
182
183 call _set_sicb_iwr;
184
185 CLI R2;
186 SSYNC;
187 IDLE;
188 STI R2;
189
190 R0 = IWR_DISABLE_ALL;
191 R1 = IWR_DISABLE_ALL;
192 call _set_sicb_iwr;
193
194 p0.h = hi(COREB_L1_CODE_START);
195 p0.l = lo(COREB_L1_CODE_START);
196 jump (p0);
197ENDPROC(_coreb_sleep)
198
199__CPUINIT
162ENTRY(_coreb_start) 200ENTRY(_coreb_start)
163 [--sp] = reti; 201 [--sp] = reti;
164 202
@@ -176,12 +214,20 @@ ENTRY(_coreb_start)
176 sp = [p0]; 214 sp = [p0];
177 usp = sp; 215 usp = sp;
178 fp = sp; 216 fp = sp;
217#ifdef CONFIG_HOTPLUG_CPU
218 p0.l = _hotplug_coreb;
219 p0.h = _hotplug_coreb;
220 r0 = [p0];
221 cc = BITTST(r0, 0);
222 if cc jump 3f;
223#endif
179 sp += -12; 224 sp += -12;
180 call _init_pda 225 call _init_pda
181 sp += 12; 226 sp += 12;
227#ifdef CONFIG_HOTPLUG_CPU
2283:
229#endif
182 call _secondary_start_kernel; 230 call _secondary_start_kernel;
183.L_exit: 231.L_exit:
184 jump.s .L_exit; 232 jump.s .L_exit;
185ENDPROC(_coreb_start) 233ENDPROC(_coreb_start)
186
187__FINIT
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c
index 0192532e96a2..3b9a4bf7dacc 100644
--- a/arch/blackfin/mach-bf561/smp.c
+++ b/arch/blackfin/mach-bf561/smp.c
@@ -11,11 +11,10 @@
11#include <linux/delay.h> 11#include <linux/delay.h>
12#include <asm/smp.h> 12#include <asm/smp.h>
13#include <asm/dma.h> 13#include <asm/dma.h>
14#include <asm/time.h>
14 15
15static DEFINE_SPINLOCK(boot_lock); 16static DEFINE_SPINLOCK(boot_lock);
16 17
17static cpumask_t cpu_callin_map;
18
19/* 18/*
20 * platform_init_cpus() - Tell the world about how many cores we 19 * platform_init_cpus() - Tell the world about how many cores we
21 * have. This is called while setting up the architecture support 20 * have. This is called while setting up the architecture support
@@ -66,13 +65,15 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
66 bfin_write_SICB_IAR5(bfin_read_SICA_IAR5()); 65 bfin_write_SICB_IAR5(bfin_read_SICA_IAR5());
67 bfin_write_SICB_IAR6(bfin_read_SICA_IAR6()); 66 bfin_write_SICB_IAR6(bfin_read_SICA_IAR6());
68 bfin_write_SICB_IAR7(bfin_read_SICA_IAR7()); 67 bfin_write_SICB_IAR7(bfin_read_SICA_IAR7());
68 bfin_write_SICB_IWR0(IWR_DISABLE_ALL);
69 bfin_write_SICB_IWR1(IWR_DISABLE_ALL);
69 SSYNC(); 70 SSYNC();
70 71
71 /* Store CPU-private information to the cpu_data array. */ 72 /* Store CPU-private information to the cpu_data array. */
72 bfin_setup_cpudata(cpu); 73 bfin_setup_cpudata(cpu);
73 74
74 /* We are done with local CPU inits, unblock the boot CPU. */ 75 /* We are done with local CPU inits, unblock the boot CPU. */
75 cpu_set(cpu, cpu_callin_map); 76 set_cpu_online(cpu, true);
76 spin_lock(&boot_lock); 77 spin_lock(&boot_lock);
77 spin_unlock(&boot_lock); 78 spin_unlock(&boot_lock);
78} 79}
@@ -81,28 +82,28 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle
81{ 82{
82 unsigned long timeout; 83 unsigned long timeout;
83 84
84 /* CoreB already running?! */
85 BUG_ON((bfin_read_SICA_SYSCR() & COREB_SRAM_INIT) == 0);
86
87 printk(KERN_INFO "Booting Core B.\n"); 85 printk(KERN_INFO "Booting Core B.\n");
88 86
89 spin_lock(&boot_lock); 87 spin_lock(&boot_lock);
90 88
91 /* Kick CoreB, which should start execution from CORE_SRAM_BASE. */ 89 if ((bfin_read_SICA_SYSCR() & COREB_SRAM_INIT) == 0) {
92 SSYNC(); 90 /* CoreB already running, sending ipi to wakeup it */
93 bfin_write_SICA_SYSCR(bfin_read_SICA_SYSCR() & ~COREB_SRAM_INIT); 91 platform_send_ipi_cpu(cpu, IRQ_SUPPLE_0);
94 SSYNC(); 92 } else {
93 /* Kick CoreB, which should start execution from CORE_SRAM_BASE. */
94 bfin_write_SICA_SYSCR(bfin_read_SICA_SYSCR() & ~COREB_SRAM_INIT);
95 SSYNC();
96 }
95 97
96 timeout = jiffies + 1 * HZ; 98 timeout = jiffies + 1 * HZ;
97 while (time_before(jiffies, timeout)) { 99 while (time_before(jiffies, timeout)) {
98 if (cpu_isset(cpu, cpu_callin_map)) 100 if (cpu_online(cpu))
99 break; 101 break;
100 udelay(100); 102 udelay(100);
101 barrier(); 103 barrier();
102 } 104 }
103 105
104 if (cpu_isset(cpu, cpu_callin_map)) { 106 if (cpu_online(cpu)) {
105 cpu_set(cpu, cpu_online_map);
106 /* release the lock and let coreb run */ 107 /* release the lock and let coreb run */
107 spin_unlock(&boot_lock); 108 spin_unlock(&boot_lock);
108 return 0; 109 return 0;
@@ -147,3 +148,20 @@ void platform_clear_ipi(unsigned int cpu)
147 bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | (1 << (10 + cpu))); 148 bfin_write_SICB_SYSCR(bfin_read_SICB_SYSCR() | (1 << (10 + cpu)));
148 SSYNC(); 149 SSYNC();
149} 150}
151
152/*
153 * Setup core B's local core timer.
154 * In SMP, core timer is used for clock event device.
155 */
156void __cpuinit bfin_local_timer_setup(void)
157{
158#if defined(CONFIG_TICKSOURCE_CORETMR)
159 bfin_coretmr_init();
160 bfin_coretmr_clockevent_init();
161 get_irq_chip(IRQ_CORETMR)->unmask(IRQ_CORETMR);
162#else
163 /* Power down the core timer, just to play safe. */
164 bfin_write_TCNTL(0);
165#endif
166
167}
diff --git a/arch/blackfin/mach-common/cpufreq.c b/arch/blackfin/mach-common/cpufreq.c
index 777582897253..4391d03dc845 100644
--- a/arch/blackfin/mach-common/cpufreq.c
+++ b/arch/blackfin/mach-common/cpufreq.c
@@ -11,10 +11,13 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/cpufreq.h> 12#include <linux/cpufreq.h>
13#include <linux/fs.h> 13#include <linux/fs.h>
14#include <linux/delay.h>
14#include <asm/blackfin.h> 15#include <asm/blackfin.h>
15#include <asm/time.h> 16#include <asm/time.h>
16#include <asm/dpmc.h> 17#include <asm/dpmc.h>
17 18
19#define CPUFREQ_CPU 0
20
18/* this is the table of CCLK frequencies, in Hz */ 21/* this is the table of CCLK frequencies, in Hz */
19/* .index is the entry in the auxillary dpm_state_table[] */ 22/* .index is the entry in the auxillary dpm_state_table[] */
20static struct cpufreq_frequency_table bfin_freq_table[] = { 23static struct cpufreq_frequency_table bfin_freq_table[] = {
@@ -41,64 +44,124 @@ static struct bfin_dpm_state {
41 unsigned int tscale; /* change the divider on the core timer interrupt */ 44 unsigned int tscale; /* change the divider on the core timer interrupt */
42} dpm_state_table[3]; 45} dpm_state_table[3];
43 46
47#if defined(CONFIG_CYCLES_CLOCKSOURCE)
44/* 48/*
45 normalized to maximum frequncy offset for CYCLES, 49 * normalized to maximum frequncy offset for CYCLES,
46 used in time-ts cycles clock source, but could be used 50 * used in time-ts cycles clock source, but could be used
47 somewhere also. 51 * somewhere also.
48 */ 52 */
49unsigned long long __bfin_cycles_off; 53unsigned long long __bfin_cycles_off;
50unsigned int __bfin_cycles_mod; 54unsigned int __bfin_cycles_mod;
55#endif
51 56
52/**************************************************************************/ 57/**************************************************************************/
58static void __init bfin_init_tables(unsigned long cclk, unsigned long sclk)
59{
53 60
54static unsigned int bfin_getfreq_khz(unsigned int cpu) 61 unsigned long csel, min_cclk;
62 int index;
63
64 /* Anomaly 273 seems to still exist on non-BF54x w/dcache turned on */
65#if ANOMALY_05000273 || ANOMALY_05000274 || \
66 (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_EXTMEM_DCACHEABLE))
67 min_cclk = sclk * 2;
68#else
69 min_cclk = sclk;
70#endif
71 csel = ((bfin_read_PLL_DIV() & CSEL) >> 4);
72
73 for (index = 0; (cclk >> index) >= min_cclk && csel <= 3; index++, csel++) {
74 bfin_freq_table[index].frequency = cclk >> index;
75 dpm_state_table[index].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
76 dpm_state_table[index].tscale = (TIME_SCALE / (1 << csel)) - 1;
77
78 pr_debug("cpufreq: freq:%d csel:0x%x tscale:%d\n",
79 bfin_freq_table[index].frequency,
80 dpm_state_table[index].csel,
81 dpm_state_table[index].tscale);
82 }
83 return;
84}
85
86static void bfin_adjust_core_timer(void *info)
55{ 87{
56 /* The driver only support single cpu */ 88 unsigned int tscale;
57 if (cpu != 0) 89 unsigned int index = *(unsigned int *)info;
58 return -1;
59 90
60 return get_cclk() / 1000; 91 /* we have to adjust the core timer, because it is using cclk */
92 tscale = dpm_state_table[index].tscale;
93 bfin_write_TSCALE(tscale);
94 return;
61} 95}
62 96
97static unsigned int bfin_getfreq_khz(unsigned int cpu)
98{
99 /* Both CoreA/B have the same core clock */
100 return get_cclk() / 1000;
101}
63 102
64static int bfin_target(struct cpufreq_policy *policy, 103static int bfin_target(struct cpufreq_policy *poli,
65 unsigned int target_freq, unsigned int relation) 104 unsigned int target_freq, unsigned int relation)
66{ 105{
67 unsigned int index, plldiv, tscale; 106 unsigned int index, plldiv, cpu;
68 unsigned long flags, cclk_hz; 107 unsigned long flags, cclk_hz;
69 struct cpufreq_freqs freqs; 108 struct cpufreq_freqs freqs;
109 static unsigned long lpj_ref;
110 static unsigned int lpj_ref_freq;
111
112#if defined(CONFIG_CYCLES_CLOCKSOURCE)
70 cycles_t cycles; 113 cycles_t cycles;
114#endif
71 115
72 if (cpufreq_frequency_table_target(policy, bfin_freq_table, 116 for_each_online_cpu(cpu) {
73 target_freq, relation, &index)) 117 struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
74 return -EINVAL; 118
75 119 if (!policy)
76 cclk_hz = bfin_freq_table[index].frequency; 120 continue;
77 121
78 freqs.old = bfin_getfreq_khz(0); 122 if (cpufreq_frequency_table_target(policy, bfin_freq_table,
79 freqs.new = cclk_hz; 123 target_freq, relation, &index))
80 freqs.cpu = 0; 124 return -EINVAL;
81 125
82 pr_debug("cpufreq: changing cclk to %lu; target = %u, oldfreq = %u\n", 126 cclk_hz = bfin_freq_table[index].frequency;
83 cclk_hz, target_freq, freqs.old); 127
84 128 freqs.old = bfin_getfreq_khz(0);
85 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 129 freqs.new = cclk_hz;
86 local_irq_save_hw(flags); 130 freqs.cpu = cpu;
87 plldiv = (bfin_read_PLL_DIV() & SSEL) | dpm_state_table[index].csel; 131
88 tscale = dpm_state_table[index].tscale; 132 pr_debug("cpufreq: changing cclk to %lu; target = %u, oldfreq = %u\n",
89 bfin_write_PLL_DIV(plldiv); 133 cclk_hz, target_freq, freqs.old);
90 /* we have to adjust the core timer, because it is using cclk */ 134
91 bfin_write_TSCALE(tscale); 135 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
92 cycles = get_cycles(); 136 if (cpu == CPUFREQ_CPU) {
93 SSYNC(); 137 local_irq_save_hw(flags);
94 cycles += 10; /* ~10 cycles we lose after get_cycles() */ 138 plldiv = (bfin_read_PLL_DIV() & SSEL) |
95 __bfin_cycles_off += (cycles << __bfin_cycles_mod) - (cycles << index); 139 dpm_state_table[index].csel;
96 __bfin_cycles_mod = index; 140 bfin_write_PLL_DIV(plldiv);
97 local_irq_restore_hw(flags); 141 on_each_cpu(bfin_adjust_core_timer, &index, 1);
98 /* TODO: just test case for cycles clock source, remove later */ 142#if defined(CONFIG_CYCLES_CLOCKSOURCE)
99 pr_debug("cpufreq: done\n"); 143 cycles = get_cycles();
100 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 144 SSYNC();
145 cycles += 10; /* ~10 cycles we lose after get_cycles() */
146 __bfin_cycles_off +=
147 (cycles << __bfin_cycles_mod) - (cycles << index);
148 __bfin_cycles_mod = index;
149#endif
150 if (!lpj_ref_freq) {
151 lpj_ref = loops_per_jiffy;
152 lpj_ref_freq = freqs.old;
153 }
154 if (freqs.new != freqs.old) {
155 loops_per_jiffy = cpufreq_scale(lpj_ref,
156 lpj_ref_freq, freqs.new);
157 }
158 local_irq_restore_hw(flags);
159 }
160 /* TODO: just test case for cycles clock source, remove later */
161 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
162 }
101 163
164 pr_debug("cpufreq: done\n");
102 return 0; 165 return 0;
103} 166}
104 167
@@ -110,37 +173,16 @@ static int bfin_verify_speed(struct cpufreq_policy *policy)
110static int __init __bfin_cpu_init(struct cpufreq_policy *policy) 173static int __init __bfin_cpu_init(struct cpufreq_policy *policy)
111{ 174{
112 175
113 unsigned long cclk, sclk, csel, min_cclk; 176 unsigned long cclk, sclk;
114 int index;
115
116 if (policy->cpu != 0)
117 return -EINVAL;
118 177
119 cclk = get_cclk() / 1000; 178 cclk = get_cclk() / 1000;
120 sclk = get_sclk() / 1000; 179 sclk = get_sclk() / 1000;
121 180
122#if ANOMALY_05000273 || ANOMALY_05000274 || \ 181 if (policy->cpu == CPUFREQ_CPU)
123 (!defined(CONFIG_BF54x) && defined(CONFIG_BFIN_EXTMEM_DCACHEABLE)) 182 bfin_init_tables(cclk, sclk);
124 min_cclk = sclk * 2;
125#else
126 min_cclk = sclk;
127#endif
128 csel = ((bfin_read_PLL_DIV() & CSEL) >> 4);
129
130 for (index = 0; (cclk >> index) >= min_cclk && csel <= 3; index++, csel++) {
131 bfin_freq_table[index].frequency = cclk >> index;
132 dpm_state_table[index].csel = csel << 4; /* Shift now into PLL_DIV bitpos */
133 dpm_state_table[index].tscale = (TIME_SCALE / (1 << csel)) - 1;
134
135 pr_debug("cpufreq: freq:%d csel:0x%x tscale:%d\n",
136 bfin_freq_table[index].frequency,
137 dpm_state_table[index].csel,
138 dpm_state_table[index].tscale);
139 }
140 183
141 policy->cpuinfo.transition_latency = 50000; /* 50us assumed */ 184 policy->cpuinfo.transition_latency = 50000; /* 50us assumed */
142 185
143 /*Now ,only support one cpu */
144 policy->cur = cclk; 186 policy->cur = cclk;
145 cpufreq_frequency_table_get_attr(bfin_freq_table, policy->cpu); 187 cpufreq_frequency_table_get_attr(bfin_freq_table, policy->cpu);
146 return cpufreq_frequency_table_cpuinfo(policy, bfin_freq_table); 188 return cpufreq_frequency_table_cpuinfo(policy, bfin_freq_table);
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index 01b2f58dfb95..a5847f5d67c7 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -405,7 +405,7 @@ ENTRY(_double_fault)
405 405
406 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */ 406 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
407 SP += -12; 407 SP += -12;
408 call _double_fault_c; 408 pseudo_long_call _double_fault_c, p5;
409 SP += 12; 409 SP += 12;
410.L_double_fault_panic: 410.L_double_fault_panic:
411 JUMP .L_double_fault_panic 411 JUMP .L_double_fault_panic
@@ -447,7 +447,7 @@ ENTRY(_exception_to_level5)
447 447
448 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */ 448 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
449 SP += -12; 449 SP += -12;
450 call _trap_c; 450 pseudo_long_call _trap_c, p4;
451 SP += 12; 451 SP += 12;
452 452
453 /* If interrupts were off during the exception (IPEND[4] = 1), turn them off 453 /* If interrupts were off during the exception (IPEND[4] = 1), turn them off
@@ -482,6 +482,8 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
482 [--sp] = ASTAT; 482 [--sp] = ASTAT;
483 [--sp] = (R7:6,P5:4); 483 [--sp] = (R7:6,P5:4);
484 484
485 ANOMALY_283_315_WORKAROUND(p5, r7)
486
485#ifdef CONFIG_EXACT_HWERR 487#ifdef CONFIG_EXACT_HWERR
486 /* Make sure all pending read/writes complete. This will ensure any 488 /* Make sure all pending read/writes complete. This will ensure any
487 * accesses which could cause hardware errors completes, and signal 489 * accesses which could cause hardware errors completes, and signal
@@ -492,8 +494,6 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
492 ssync; 494 ssync;
493#endif 495#endif
494 496
495 ANOMALY_283_315_WORKAROUND(p5, r7)
496
497#ifdef CONFIG_DEBUG_DOUBLEFAULT 497#ifdef CONFIG_DEBUG_DOUBLEFAULT
498 /* 498 /*
499 * Save these registers, as they are only valid in exception context 499 * Save these registers, as they are only valid in exception context
@@ -551,7 +551,7 @@ ENTRY(_kernel_execve)
551 p0 = sp; 551 p0 = sp;
552 sp += -16; 552 sp += -16;
553 [sp + 12] = p0; 553 [sp + 12] = p0;
554 call _do_execve; 554 pseudo_long_call _do_execve, p5;
555 SP += 16; 555 SP += 16;
556 cc = r0 == 0; 556 cc = r0 == 0;
557 if ! cc jump .Lexecve_failed; 557 if ! cc jump .Lexecve_failed;
@@ -626,13 +626,6 @@ ENTRY(_system_call)
626 p0 = [sp + PT_ORIG_P0]; 626 p0 = [sp + PT_ORIG_P0];
627#endif /* CONFIG_IPIPE */ 627#endif /* CONFIG_IPIPE */
628 628
629 /* Check the System Call */
630 r7 = __NR_syscall;
631 /* System call number is passed in P0 */
632 r6 = p0;
633 cc = r6 < r7;
634 if ! cc jump .Lbadsys;
635
636 /* are we tracing syscalls?*/ 629 /* are we tracing syscalls?*/
637 r7 = sp; 630 r7 = sp;
638 r6.l = lo(ALIGN_PAGE_MASK); 631 r6.l = lo(ALIGN_PAGE_MASK);
@@ -642,6 +635,14 @@ ENTRY(_system_call)
642 r7 = [p2+TI_FLAGS]; 635 r7 = [p2+TI_FLAGS];
643 CC = BITTST(r7,TIF_SYSCALL_TRACE); 636 CC = BITTST(r7,TIF_SYSCALL_TRACE);
644 if CC JUMP _sys_trace; 637 if CC JUMP _sys_trace;
638 CC = BITTST(r7,TIF_SINGLESTEP);
639 if CC JUMP _sys_trace;
640
641 /* Make sure the system call # is valid */
642 p4 = __NR_syscall;
643 /* System call number is passed in P0 */
644 cc = p4 <= p0;
645 if cc jump .Lbadsys;
645 646
646 /* Execute the appropriate system call */ 647 /* Execute the appropriate system call */
647 648
@@ -704,7 +705,7 @@ ENTRY(_system_call)
704 sp += 4; 705 sp += 4;
705 706
706 SP += -12; 707 SP += -12;
707 call _schedule; 708 pseudo_long_call _schedule, p4;
708 SP += 12; 709 SP += 12;
709 710
710 jump .Lresume_userspace_1; 711 jump .Lresume_userspace_1;
@@ -723,7 +724,7 @@ ENTRY(_system_call)
723 724
724 r0 = sp; 725 r0 = sp;
725 SP += -12; 726 SP += -12;
726 call _do_notify_resume; 727 pseudo_long_call _do_notify_resume, p5;
727 SP += 12; 728 SP += 12;
728 729
729.Lsyscall_really_exit: 730.Lsyscall_really_exit:
@@ -736,11 +737,17 @@ ENDPROC(_system_call)
736 * this symbol need not be global anyways, so ... 737 * this symbol need not be global anyways, so ...
737 */ 738 */
738_sys_trace: 739_sys_trace:
739 call _syscall_trace; 740 r0 = sp;
740 741 pseudo_long_call _syscall_trace_enter, p5;
741 /* Execute the appropriate system call */
742 742
743 /* Make sure the system call # is valid */
743 p4 = [SP + PT_P0]; 744 p4 = [SP + PT_P0];
745 p3 = __NR_syscall;
746 cc = p3 <= p4;
747 r0 = -ENOSYS;
748 if cc jump .Lsys_trace_badsys;
749
750 /* Execute the appropriate system call */
744 p5.l = _sys_call_table; 751 p5.l = _sys_call_table;
745 p5.h = _sys_call_table; 752 p5.h = _sys_call_table;
746 p5 = p5 + (p4 << 2); 753 p5 = p5 + (p4 << 2);
@@ -758,9 +765,11 @@ _sys_trace:
758 SP += -12; 765 SP += -12;
759 call (p5); 766 call (p5);
760 SP += 24; 767 SP += 24;
768.Lsys_trace_badsys:
761 [sp + PT_R0] = r0; 769 [sp + PT_R0] = r0;
762 770
763 call _syscall_trace; 771 r0 = sp;
772 pseudo_long_call _syscall_trace_leave, p5;
764 jump .Lresume_userspace; 773 jump .Lresume_userspace;
765ENDPROC(_sys_trace) 774ENDPROC(_sys_trace)
766 775
@@ -966,6 +975,13 @@ ENTRY(_evt_evt14)
966#else 975#else
967 cli r0; 976 cli r0;
968#endif 977#endif
978#ifdef CONFIG_TRACE_IRQFLAGS
979 [--sp] = rets;
980 sp += -12;
981 call _trace_hardirqs_off;
982 sp += 12;
983 rets = [sp++];
984#endif
969 [--sp] = RETI; 985 [--sp] = RETI;
970 SP += 4; 986 SP += 4;
971 rts; 987 rts;
@@ -989,6 +1005,14 @@ ENTRY(_schedule_and_signal_from_int)
989 p1 = rets; 1005 p1 = rets;
990 [sp + PT_RESERVED] = p1; 1006 [sp + PT_RESERVED] = p1;
991 1007
1008#ifdef CONFIG_TRACE_IRQFLAGS
1009 /* trace_hardirqs_on() checks if all irqs are disabled. But here IRQ 15
1010 * is turned on, so disable all irqs. */
1011 cli r0;
1012 sp += -12;
1013 call _trace_hardirqs_on;
1014 sp += 12;
1015#endif
992#ifdef CONFIG_SMP 1016#ifdef CONFIG_SMP
993 GET_PDA(p0, r0); /* Fetch current PDA (can't migrate to other CPU here) */ 1017 GET_PDA(p0, r0); /* Fetch current PDA (can't migrate to other CPU here) */
994 r0 = [p0 + PDA_IRQFLAGS]; 1018 r0 = [p0 + PDA_IRQFLAGS];
@@ -1007,7 +1031,8 @@ ENTRY(_schedule_and_signal_from_int)
1007 1031
1008 r0 = sp; 1032 r0 = sp;
1009 sp += -12; 1033 sp += -12;
1010 call _finish_atomic_sections; 1034
1035 pseudo_long_call _finish_atomic_sections, p5;
1011 sp += 12; 1036 sp += 12;
1012 jump.s .Lresume_userspace; 1037 jump.s .Lresume_userspace;
1013ENDPROC(_schedule_and_signal_from_int) 1038ENDPROC(_schedule_and_signal_from_int)
@@ -1357,7 +1382,7 @@ ENTRY(_sys_call_table)
1357 .long _sys_newuname 1382 .long _sys_newuname
1358 .long _sys_ni_syscall /* old sys_modify_ldt */ 1383 .long _sys_ni_syscall /* old sys_modify_ldt */
1359 .long _sys_adjtimex 1384 .long _sys_adjtimex
1360 .long _sys_ni_syscall /* 125 */ /* sys_mprotect */ 1385 .long _sys_mprotect /* 125 */
1361 .long _sys_ni_syscall /* old sys_sigprocmask */ 1386 .long _sys_ni_syscall /* old sys_sigprocmask */
1362 .long _sys_ni_syscall /* old "creat_module" */ 1387 .long _sys_ni_syscall /* old "creat_module" */
1363 .long _sys_init_module 1388 .long _sys_init_module
@@ -1376,16 +1401,16 @@ ENTRY(_sys_call_table)
1376 .long _sys_getdents 1401 .long _sys_getdents
1377 .long _sys_ni_syscall /* sys_select */ 1402 .long _sys_ni_syscall /* sys_select */
1378 .long _sys_flock 1403 .long _sys_flock
1379 .long _sys_ni_syscall /* sys_msync */ 1404 .long _sys_msync
1380 .long _sys_readv /* 145 */ 1405 .long _sys_readv /* 145 */
1381 .long _sys_writev 1406 .long _sys_writev
1382 .long _sys_getsid 1407 .long _sys_getsid
1383 .long _sys_fdatasync 1408 .long _sys_fdatasync
1384 .long _sys_sysctl 1409 .long _sys_sysctl
1385 .long _sys_ni_syscall /* 150 */ /* sys_mlock */ 1410 .long _sys_mlock /* 150 */
1386 .long _sys_ni_syscall /* sys_munlock */ 1411 .long _sys_munlock
1387 .long _sys_ni_syscall /* sys_mlockall */ 1412 .long _sys_mlockall
1388 .long _sys_ni_syscall /* sys_munlockall */ 1413 .long _sys_munlockall
1389 .long _sys_sched_setparam 1414 .long _sys_sched_setparam
1390 .long _sys_sched_getparam /* 155 */ 1415 .long _sys_sched_getparam /* 155 */
1391 .long _sys_sched_setscheduler 1416 .long _sys_sched_setscheduler
@@ -1450,8 +1475,8 @@ ENTRY(_sys_call_table)
1450 .long _sys_setfsuid /* 215 */ 1475 .long _sys_setfsuid /* 215 */
1451 .long _sys_setfsgid 1476 .long _sys_setfsgid
1452 .long _sys_pivot_root 1477 .long _sys_pivot_root
1453 .long _sys_ni_syscall /* sys_mincore */ 1478 .long _sys_mincore
1454 .long _sys_ni_syscall /* sys_madvise */ 1479 .long _sys_madvise
1455 .long _sys_getdents64 /* 220 */ 1480 .long _sys_getdents64 /* 220 */
1456 .long _sys_fcntl64 1481 .long _sys_fcntl64
1457 .long _sys_ni_syscall /* reserved for TUX */ 1482 .long _sys_ni_syscall /* reserved for TUX */
@@ -1507,7 +1532,7 @@ ENTRY(_sys_call_table)
1507 .long _sys_utimes 1532 .long _sys_utimes
1508 .long _sys_fadvise64_64 1533 .long _sys_fadvise64_64
1509 .long _sys_ni_syscall /* vserver */ 1534 .long _sys_ni_syscall /* vserver */
1510 .long _sys_ni_syscall /* 275, mbind */ 1535 .long _sys_mbind /* 275 */
1511 .long _sys_ni_syscall /* get_mempolicy */ 1536 .long _sys_ni_syscall /* get_mempolicy */
1512 .long _sys_ni_syscall /* set_mempolicy */ 1537 .long _sys_ni_syscall /* set_mempolicy */
1513 .long _sys_mq_open 1538 .long _sys_mq_open
diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S
index cab0a0031eee..4391621d9048 100644
--- a/arch/blackfin/mach-common/head.S
+++ b/arch/blackfin/mach-common/head.S
@@ -144,8 +144,8 @@ ENTRY(__start)
144#endif 144#endif
145 145
146 /* Initialize stack pointer */ 146 /* Initialize stack pointer */
147 sp.l = _init_thread_union; 147 sp.l = _init_thread_union + THREAD_SIZE;
148 sp.h = _init_thread_union; 148 sp.h = _init_thread_union + THREAD_SIZE;
149 fp = sp; 149 fp = sp;
150 usp = sp; 150 usp = sp;
151 151
@@ -186,6 +186,11 @@ ENTRY(__start)
186 186
187 /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */ 187 /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */
188 call _bfin_relocate_l1_mem; 188 call _bfin_relocate_l1_mem;
189
190#ifdef CONFIG_ROMKERNEL
191 call _bfin_relocate_xip_data;
192#endif
193
189#ifdef CONFIG_BFIN_KERNEL_CLOCK 194#ifdef CONFIG_BFIN_KERNEL_CLOCK
190 /* Only use on-chip scratch space for stack when absolutely required 195 /* Only use on-chip scratch space for stack when absolutely required
191 * to avoid Anomaly 05000227 ... we know the init_clocks() func only 196 * to avoid Anomaly 05000227 ... we know the init_clocks() func only
@@ -257,12 +262,7 @@ ENTRY(_real_start)
257 R0 = R7; 262 R0 = R7;
258 call _cmdline_init; 263 call _cmdline_init;
259 264
260 /* Load the current thread pointer and stack */ 265 sp += -12 + 4; /* +4 is for reti loading above */
261 p1 = THREAD_SIZE + 4 (z); /* +4 is for reti loading */
262 sp = sp + p1;
263 usp = sp;
264 fp = sp;
265 sp += -12;
266 call _init_pda 266 call _init_pda
267 sp += 12; 267 sp += 12;
268 jump.l _start_kernel; 268 jump.l _start_kernel;
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S
index 8085ff1cce00..cee62cf4acd4 100644
--- a/arch/blackfin/mach-common/interrupt.S
+++ b/arch/blackfin/mach-common/interrupt.S
@@ -88,6 +88,13 @@ __common_int_entry:
88#else 88#else
89 cli r1; 89 cli r1;
90#endif 90#endif
91#ifdef CONFIG_TRACE_IRQFLAGS
92 [--sp] = r0;
93 sp += -12;
94 call _trace_hardirqs_off;
95 sp += 12;
96 r0 = [sp++];
97#endif
91 [--sp] = RETI; /* orig_pc */ 98 [--sp] = RETI; /* orig_pc */
92 /* Clear all L registers. */ 99 /* Clear all L registers. */
93 r1 = 0 (x); 100 r1 = 0 (x);
@@ -109,10 +116,10 @@ __common_int_entry:
109 cc = r0 == 0; 116 cc = r0 == 0;
110 if cc jump .Lcommon_restore_context; 117 if cc jump .Lcommon_restore_context;
111#else /* CONFIG_IPIPE */ 118#else /* CONFIG_IPIPE */
112 call _do_irq; 119 pseudo_long_call _do_irq, p2;
113 SP += 12; 120 SP += 12;
114#endif /* CONFIG_IPIPE */ 121#endif /* CONFIG_IPIPE */
115 call _return_from_int; 122 pseudo_long_call _return_from_int, p2;
116.Lcommon_restore_context: 123.Lcommon_restore_context:
117 RESTORE_CONTEXT 124 RESTORE_CONTEXT
118 rti; 125 rti;
@@ -168,7 +175,7 @@ ENTRY(_evt_ivhw)
168 175
169 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */ 176 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
170 SP += -12; 177 SP += -12;
171 call _trap_c; 178 pseudo_long_call _trap_c, p5;
172 SP += 12; 179 SP += 12;
173 180
174#ifdef EBIU_ERRMST 181#ifdef EBIU_ERRMST
@@ -179,7 +186,7 @@ ENTRY(_evt_ivhw)
179 w[p0] = r0.l; 186 w[p0] = r0.l;
180#endif 187#endif
181 188
182 call _ret_from_exception; 189 pseudo_long_call _ret_from_exception, p2;
183 190
184.Lcommon_restore_all_sys: 191.Lcommon_restore_all_sys:
185 RESTORE_ALL_SYS 192 RESTORE_ALL_SYS
@@ -187,12 +194,28 @@ ENTRY(_evt_ivhw)
187ENDPROC(_evt_ivhw) 194ENDPROC(_evt_ivhw)
188 195
189/* Interrupt routine for evt2 (NMI). 196/* Interrupt routine for evt2 (NMI).
190 * We don't actually use this, so just return.
191 * For inner circle type details, please see: 197 * For inner circle type details, please see:
192 * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi 198 * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi
193 */ 199 */
194ENTRY(_evt_nmi) 200ENTRY(_evt_nmi)
201#ifndef CONFIG_NMI_WATCHDOG
195.weak _evt_nmi 202.weak _evt_nmi
203#else
204 /* Not take account of CPLBs, this handler will not return */
205 SAVE_ALL_SYS
206 r0 = sp;
207 r1 = retn;
208 [sp + PT_PC] = r1;
209 trace_buffer_save(p4,r5);
210
211 ANOMALY_283_315_WORKAROUND(p4, r5)
212
213 SP += -12;
214 call _do_nmi;
215 SP += 12;
2161:
217 jump 1b;
218#endif
196 rtn; 219 rtn;
197ENDPROC(_evt_nmi) 220ENDPROC(_evt_nmi)
198 221
@@ -223,7 +246,7 @@ ENTRY(_evt_system_call)
223#ifdef CONFIG_FRAME_POINTER 246#ifdef CONFIG_FRAME_POINTER
224 fp = 0; 247 fp = 0;
225#endif 248#endif
226 call _system_call; 249 pseudo_long_call _system_call, p2;
227 jump .Lcommon_restore_context; 250 jump .Lcommon_restore_context;
228ENDPROC(_evt_system_call) 251ENDPROC(_evt_system_call)
229 252
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 1873b2c1fede..7ad8878bfa18 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -28,6 +28,7 @@
28#include <asm/dpmc.h> 28#include <asm/dpmc.h>
29#include <asm/bfin5xx_spi.h> 29#include <asm/bfin5xx_spi.h>
30#include <asm/bfin_sport.h> 30#include <asm/bfin_sport.h>
31#include <asm/bfin_can.h>
31 32
32#define SIC_SYSIRQ(irq) (irq - (IRQ_CORETMR + 1)) 33#define SIC_SYSIRQ(irq) (irq - (IRQ_CORETMR + 1))
33 34
@@ -172,7 +173,12 @@ static void bfin_internal_mask_irq(unsigned int irq)
172 local_irq_restore_hw(flags); 173 local_irq_restore_hw(flags);
173} 174}
174 175
176#ifdef CONFIG_SMP
177static void bfin_internal_unmask_irq_affinity(unsigned int irq,
178 const struct cpumask *affinity)
179#else
175static void bfin_internal_unmask_irq(unsigned int irq) 180static void bfin_internal_unmask_irq(unsigned int irq)
181#endif
176{ 182{
177 unsigned long flags; 183 unsigned long flags;
178 184
@@ -185,16 +191,38 @@ static void bfin_internal_unmask_irq(unsigned int irq)
185 local_irq_save_hw(flags); 191 local_irq_save_hw(flags);
186 mask_bank = SIC_SYSIRQ(irq) / 32; 192 mask_bank = SIC_SYSIRQ(irq) / 32;
187 mask_bit = SIC_SYSIRQ(irq) % 32; 193 mask_bit = SIC_SYSIRQ(irq) % 32;
188 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) |
189 (1 << mask_bit));
190#ifdef CONFIG_SMP 194#ifdef CONFIG_SMP
191 bfin_write_SICB_IMASK(mask_bank, bfin_read_SICB_IMASK(mask_bank) | 195 if (cpumask_test_cpu(0, affinity))
192 (1 << mask_bit)); 196#endif
197 bfin_write_SIC_IMASK(mask_bank,
198 bfin_read_SIC_IMASK(mask_bank) |
199 (1 << mask_bit));
200#ifdef CONFIG_SMP
201 if (cpumask_test_cpu(1, affinity))
202 bfin_write_SICB_IMASK(mask_bank,
203 bfin_read_SICB_IMASK(mask_bank) |
204 (1 << mask_bit));
193#endif 205#endif
194#endif 206#endif
195 local_irq_restore_hw(flags); 207 local_irq_restore_hw(flags);
196} 208}
197 209
210#ifdef CONFIG_SMP
211static void bfin_internal_unmask_irq(unsigned int irq)
212{
213 struct irq_desc *desc = irq_to_desc(irq);
214 bfin_internal_unmask_irq_affinity(irq, desc->affinity);
215}
216
217static int bfin_internal_set_affinity(unsigned int irq, const struct cpumask *mask)
218{
219 bfin_internal_mask_irq(irq);
220 bfin_internal_unmask_irq_affinity(irq, mask);
221
222 return 0;
223}
224#endif
225
198#ifdef CONFIG_PM 226#ifdef CONFIG_PM
199int bfin_internal_set_wake(unsigned int irq, unsigned int state) 227int bfin_internal_set_wake(unsigned int irq, unsigned int state)
200{ 228{
@@ -224,11 +252,6 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
224 wakeup |= USBWE; 252 wakeup |= USBWE;
225 break; 253 break;
226#endif 254#endif
227#ifdef IRQ_KEY
228 case IRQ_KEY:
229 wakeup |= KPADWE;
230 break;
231#endif
232#ifdef CONFIG_BF54x 255#ifdef CONFIG_BF54x
233 case IRQ_CNT: 256 case IRQ_CNT:
234 wakeup |= ROTWE; 257 wakeup |= ROTWE;
@@ -270,6 +293,9 @@ static struct irq_chip bfin_internal_irqchip = {
270 .mask_ack = bfin_internal_mask_irq, 293 .mask_ack = bfin_internal_mask_irq,
271 .disable = bfin_internal_mask_irq, 294 .disable = bfin_internal_mask_irq,
272 .enable = bfin_internal_unmask_irq, 295 .enable = bfin_internal_unmask_irq,
296#ifdef CONFIG_SMP
297 .set_affinity = bfin_internal_set_affinity,
298#endif
273#ifdef CONFIG_PM 299#ifdef CONFIG_PM
274 .set_wake = bfin_internal_set_wake, 300 .set_wake = bfin_internal_set_wake,
275#endif 301#endif
@@ -294,7 +320,6 @@ static int error_int_mask;
294static void bfin_generic_error_mask_irq(unsigned int irq) 320static void bfin_generic_error_mask_irq(unsigned int irq)
295{ 321{
296 error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR)); 322 error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR));
297
298 if (!error_int_mask) 323 if (!error_int_mask)
299 bfin_internal_mask_irq(IRQ_GENERIC_ERROR); 324 bfin_internal_mask_irq(IRQ_GENERIC_ERROR);
300} 325}
@@ -385,6 +410,127 @@ static void bfin_demux_error_irq(unsigned int int_err_irq,
385} 410}
386#endif /* BF537_GENERIC_ERROR_INT_DEMUX */ 411#endif /* BF537_GENERIC_ERROR_INT_DEMUX */
387 412
413#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
414static int mac_stat_int_mask;
415
416static void bfin_mac_status_ack_irq(unsigned int irq)
417{
418 switch (irq) {
419 case IRQ_MAC_MMCINT:
420 bfin_write_EMAC_MMC_TIRQS(
421 bfin_read_EMAC_MMC_TIRQE() &
422 bfin_read_EMAC_MMC_TIRQS());
423 bfin_write_EMAC_MMC_RIRQS(
424 bfin_read_EMAC_MMC_RIRQE() &
425 bfin_read_EMAC_MMC_RIRQS());
426 break;
427 case IRQ_MAC_RXFSINT:
428 bfin_write_EMAC_RX_STKY(
429 bfin_read_EMAC_RX_IRQE() &
430 bfin_read_EMAC_RX_STKY());
431 break;
432 case IRQ_MAC_TXFSINT:
433 bfin_write_EMAC_TX_STKY(
434 bfin_read_EMAC_TX_IRQE() &
435 bfin_read_EMAC_TX_STKY());
436 break;
437 case IRQ_MAC_WAKEDET:
438 bfin_write_EMAC_WKUP_CTL(
439 bfin_read_EMAC_WKUP_CTL() | MPKS | RWKS);
440 break;
441 default:
442 /* These bits are W1C */
443 bfin_write_EMAC_SYSTAT(1L << (irq - IRQ_MAC_PHYINT));
444 break;
445 }
446}
447
448static void bfin_mac_status_mask_irq(unsigned int irq)
449{
450 mac_stat_int_mask &= ~(1L << (irq - IRQ_MAC_PHYINT));
451#ifdef BF537_GENERIC_ERROR_INT_DEMUX
452 switch (irq) {
453 case IRQ_MAC_PHYINT:
454 bfin_write_EMAC_SYSCTL(bfin_read_EMAC_SYSCTL() & ~PHYIE);
455 break;
456 default:
457 break;
458 }
459#else
460 if (!mac_stat_int_mask)
461 bfin_internal_mask_irq(IRQ_MAC_ERROR);
462#endif
463 bfin_mac_status_ack_irq(irq);
464}
465
466static void bfin_mac_status_unmask_irq(unsigned int irq)
467{
468#ifdef BF537_GENERIC_ERROR_INT_DEMUX
469 switch (irq) {
470 case IRQ_MAC_PHYINT:
471 bfin_write_EMAC_SYSCTL(bfin_read_EMAC_SYSCTL() | PHYIE);
472 break;
473 default:
474 break;
475 }
476#else
477 if (!mac_stat_int_mask)
478 bfin_internal_unmask_irq(IRQ_MAC_ERROR);
479#endif
480 mac_stat_int_mask |= 1L << (irq - IRQ_MAC_PHYINT);
481}
482
483#ifdef CONFIG_PM
484int bfin_mac_status_set_wake(unsigned int irq, unsigned int state)
485{
486#ifdef BF537_GENERIC_ERROR_INT_DEMUX
487 return bfin_internal_set_wake(IRQ_GENERIC_ERROR, state);
488#else
489 return bfin_internal_set_wake(IRQ_MAC_ERROR, state);
490#endif
491}
492#endif
493
494static struct irq_chip bfin_mac_status_irqchip = {
495 .name = "MACST",
496 .ack = bfin_ack_noop,
497 .mask_ack = bfin_mac_status_mask_irq,
498 .mask = bfin_mac_status_mask_irq,
499 .unmask = bfin_mac_status_unmask_irq,
500#ifdef CONFIG_PM
501 .set_wake = bfin_mac_status_set_wake,
502#endif
503};
504
505static void bfin_demux_mac_status_irq(unsigned int int_err_irq,
506 struct irq_desc *inta_desc)
507{
508 int i, irq = 0;
509 u32 status = bfin_read_EMAC_SYSTAT();
510
511 for (i = 0; i < (IRQ_MAC_STMDONE - IRQ_MAC_PHYINT); i++)
512 if (status & (1L << i)) {
513 irq = IRQ_MAC_PHYINT + i;
514 break;
515 }
516
517 if (irq) {
518 if (mac_stat_int_mask & (1L << (irq - IRQ_MAC_PHYINT))) {
519 bfin_handle_irq(irq);
520 } else {
521 bfin_mac_status_ack_irq(irq);
522 pr_debug("IRQ %d:"
523 " MASKED MAC ERROR INTERRUPT ASSERTED\n",
524 irq);
525 }
526 } else
527 printk(KERN_ERR
528 "%s : %s : LINE %d :\nIRQ ?: MAC ERROR"
529 " INTERRUPT ASSERTED BUT NO SOURCE FOUND\n",
530 __func__, __FILE__, __LINE__);
531}
532#endif
533
388static inline void bfin_set_irq_handler(unsigned irq, irq_flow_handler_t handle) 534static inline void bfin_set_irq_handler(unsigned irq, irq_flow_handler_t handle)
389{ 535{
390#ifdef CONFIG_IPIPE 536#ifdef CONFIG_IPIPE
@@ -1031,7 +1177,6 @@ int __init init_arch_irq(void)
1031#elif defined(CONFIG_BF538) || defined(CONFIG_BF539) 1177#elif defined(CONFIG_BF538) || defined(CONFIG_BF539)
1032 case IRQ_PORTF_INTA: 1178 case IRQ_PORTF_INTA:
1033#endif 1179#endif
1034
1035 set_irq_chained_handler(irq, 1180 set_irq_chained_handler(irq,
1036 bfin_demux_gpio_irq); 1181 bfin_demux_gpio_irq);
1037 break; 1182 break;
@@ -1040,29 +1185,36 @@ int __init init_arch_irq(void)
1040 set_irq_chained_handler(irq, bfin_demux_error_irq); 1185 set_irq_chained_handler(irq, bfin_demux_error_irq);
1041 break; 1186 break;
1042#endif 1187#endif
1043 1188#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
1044#ifdef CONFIG_SMP 1189 case IRQ_MAC_ERROR:
1045#ifdef CONFIG_TICKSOURCE_GPTMR0 1190 set_irq_chained_handler(irq, bfin_demux_mac_status_irq);
1046 case IRQ_TIMER0: 1191 break;
1047#endif
1048#ifdef CONFIG_TICKSOURCE_CORETMR
1049 case IRQ_CORETMR:
1050#endif 1192#endif
1193#ifdef CONFIG_SMP
1051 case IRQ_SUPPLE_0: 1194 case IRQ_SUPPLE_0:
1052 case IRQ_SUPPLE_1: 1195 case IRQ_SUPPLE_1:
1053 set_irq_handler(irq, handle_percpu_irq); 1196 set_irq_handler(irq, handle_percpu_irq);
1054 break; 1197 break;
1055#endif 1198#endif
1056 1199
1057#ifdef CONFIG_IPIPE 1200#ifdef CONFIG_TICKSOURCE_CORETMR
1058#ifndef CONFIG_TICKSOURCE_CORETMR 1201 case IRQ_CORETMR:
1059 case IRQ_TIMER0: 1202# ifdef CONFIG_SMP
1203 set_irq_handler(irq, handle_percpu_irq);
1204 break;
1205# else
1060 set_irq_handler(irq, handle_simple_irq); 1206 set_irq_handler(irq, handle_simple_irq);
1061 break; 1207 break;
1208# endif
1062#endif 1209#endif
1063 case IRQ_CORETMR: 1210
1211#ifdef CONFIG_TICKSOURCE_GPTMR0
1212 case IRQ_TIMER0:
1064 set_irq_handler(irq, handle_simple_irq); 1213 set_irq_handler(irq, handle_simple_irq);
1065 break; 1214 break;
1215#endif
1216
1217#ifdef CONFIG_IPIPE
1066 default: 1218 default:
1067 set_irq_handler(irq, handle_level_irq); 1219 set_irq_handler(irq, handle_level_irq);
1068 break; 1220 break;
@@ -1078,14 +1230,22 @@ int __init init_arch_irq(void)
1078 for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++) 1230 for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++)
1079 set_irq_chip_and_handler(irq, &bfin_generic_error_irqchip, 1231 set_irq_chip_and_handler(irq, &bfin_generic_error_irqchip,
1080 handle_level_irq); 1232 handle_level_irq);
1233#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
1234 set_irq_chained_handler(IRQ_MAC_ERROR, bfin_demux_mac_status_irq);
1235#endif
1081#endif 1236#endif
1082 1237
1238#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
1239 for (irq = IRQ_MAC_PHYINT; irq <= IRQ_MAC_STMDONE; irq++)
1240 set_irq_chip_and_handler(irq, &bfin_mac_status_irqchip,
1241 handle_level_irq);
1242#endif
1083 /* if configured as edge, then will be changed to do_edge_IRQ */ 1243 /* if configured as edge, then will be changed to do_edge_IRQ */
1084 for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++) 1244 for (irq = GPIO_IRQ_BASE;
1245 irq < (GPIO_IRQ_BASE + MAX_BLACKFIN_GPIOS); irq++)
1085 set_irq_chip_and_handler(irq, &bfin_gpio_irqchip, 1246 set_irq_chip_and_handler(irq, &bfin_gpio_irqchip,
1086 handle_level_irq); 1247 handle_level_irq);
1087 1248
1088
1089 bfin_write_IMASK(0); 1249 bfin_write_IMASK(0);
1090 CSYNC(); 1250 CSYNC();
1091 ilat = bfin_read_ILAT(); 1251 ilat = bfin_read_ILAT();
diff --git a/arch/blackfin/mach-common/pm.c b/arch/blackfin/mach-common/pm.c
index 8837be4edb4a..c1f1ccc846f0 100644
--- a/arch/blackfin/mach-common/pm.c
+++ b/arch/blackfin/mach-common/pm.c
@@ -11,6 +11,7 @@
11#include <linux/suspend.h> 11#include <linux/suspend.h>
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/proc_fs.h> 13#include <linux/proc_fs.h>
14#include <linux/slab.h>
14#include <linux/io.h> 15#include <linux/io.h>
15#include <linux/irq.h> 16#include <linux/irq.h>
16 17
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
index 369e687582b7..7cecbaf0358a 100644
--- a/arch/blackfin/mach-common/smp.c
+++ b/arch/blackfin/mach-common/smp.c
@@ -21,6 +21,7 @@
21#include <linux/smp.h> 21#include <linux/smp.h>
22#include <linux/seq_file.h> 22#include <linux/seq_file.h>
23#include <linux/irq.h> 23#include <linux/irq.h>
24#include <linux/slab.h>
24#include <asm/atomic.h> 25#include <asm/atomic.h>
25#include <asm/cacheflush.h> 26#include <asm/cacheflush.h>
26#include <asm/mmu_context.h> 27#include <asm/mmu_context.h>
@@ -122,9 +123,17 @@ static void ipi_call_function(unsigned int cpu, struct ipi_message *msg)
122 wait = msg->call_struct.wait; 123 wait = msg->call_struct.wait;
123 cpu_clear(cpu, msg->call_struct.pending); 124 cpu_clear(cpu, msg->call_struct.pending);
124 func(info); 125 func(info);
125 if (wait) 126 if (wait) {
127#ifdef __ARCH_SYNC_CORE_DCACHE
128 /*
129 * 'wait' usually means synchronization between CPUs.
130 * Invalidate D cache in case shared data was changed
131 * by func() to ensure cache coherence.
132 */
133 resync_core_dcache();
134#endif
126 cpu_clear(cpu, msg->call_struct.waitmask); 135 cpu_clear(cpu, msg->call_struct.waitmask);
127 else 136 } else
128 kfree(msg); 137 kfree(msg);
129} 138}
130 139
@@ -219,6 +228,13 @@ int smp_call_function(void (*func)(void *info), void *info, int wait)
219 blackfin_dcache_invalidate_range( 228 blackfin_dcache_invalidate_range(
220 (unsigned long)(&msg->call_struct.waitmask), 229 (unsigned long)(&msg->call_struct.waitmask),
221 (unsigned long)(&msg->call_struct.waitmask)); 230 (unsigned long)(&msg->call_struct.waitmask));
231#ifdef __ARCH_SYNC_CORE_DCACHE
232 /*
233 * Invalidate D cache in case shared data was changed by
234 * other processors to ensure cache coherence.
235 */
236 resync_core_dcache();
237#endif
222 kfree(msg); 238 kfree(msg);
223 } 239 }
224 return 0; 240 return 0;
@@ -261,6 +277,13 @@ int smp_call_function_single(int cpuid, void (*func) (void *info), void *info,
261 blackfin_dcache_invalidate_range( 277 blackfin_dcache_invalidate_range(
262 (unsigned long)(&msg->call_struct.waitmask), 278 (unsigned long)(&msg->call_struct.waitmask),
263 (unsigned long)(&msg->call_struct.waitmask)); 279 (unsigned long)(&msg->call_struct.waitmask));
280#ifdef __ARCH_SYNC_CORE_DCACHE
281 /*
282 * Invalidate D cache in case shared data was changed by
283 * other processors to ensure cache coherence.
284 */
285 resync_core_dcache();
286#endif
264 kfree(msg); 287 kfree(msg);
265 } 288 }
266 return 0; 289 return 0;
@@ -322,8 +345,11 @@ void smp_send_stop(void)
322 345
323int __cpuinit __cpu_up(unsigned int cpu) 346int __cpuinit __cpu_up(unsigned int cpu)
324{ 347{
325 struct task_struct *idle;
326 int ret; 348 int ret;
349 static struct task_struct *idle;
350
351 if (idle)
352 free_task(idle);
327 353
328 idle = fork_idle(cpu); 354 idle = fork_idle(cpu);
329 if (IS_ERR(idle)) { 355 if (IS_ERR(idle)) {
@@ -332,7 +358,6 @@ int __cpuinit __cpu_up(unsigned int cpu)
332 } 358 }
333 359
334 secondary_stack = task_stack_page(idle) + THREAD_SIZE; 360 secondary_stack = task_stack_page(idle) + THREAD_SIZE;
335 smp_wmb();
336 361
337 ret = platform_boot_secondary(cpu, idle); 362 ret = platform_boot_secondary(cpu, idle);
338 363
@@ -343,9 +368,6 @@ int __cpuinit __cpu_up(unsigned int cpu)
343 368
344static void __cpuinit setup_secondary(unsigned int cpu) 369static void __cpuinit setup_secondary(unsigned int cpu)
345{ 370{
346#if !defined(CONFIG_TICKSOURCE_GPTMR0)
347 struct irq_desc *timer_desc;
348#endif
349 unsigned long ilat; 371 unsigned long ilat;
350 372
351 bfin_write_IMASK(0); 373 bfin_write_IMASK(0);
@@ -360,17 +382,6 @@ static void __cpuinit setup_secondary(unsigned int cpu)
360 bfin_irq_flags |= IMASK_IVG15 | 382 bfin_irq_flags |= IMASK_IVG15 |
361 IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 | 383 IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 |
362 IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW; 384 IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW;
363
364#if defined(CONFIG_TICKSOURCE_GPTMR0)
365 /* Power down the core timer, just to play safe. */
366 bfin_write_TCNTL(0);
367
368 /* system timer0 has been setup by CoreA. */
369#else
370 timer_desc = irq_desc + IRQ_CORETMR;
371 setup_core_timer();
372 timer_desc->chip->enable(IRQ_CORETMR);
373#endif
374} 385}
375 386
376void __cpuinit secondary_start_kernel(void) 387void __cpuinit secondary_start_kernel(void)
@@ -405,7 +416,6 @@ void __cpuinit secondary_start_kernel(void)
405 atomic_inc(&mm->mm_users); 416 atomic_inc(&mm->mm_users);
406 atomic_inc(&mm->mm_count); 417 atomic_inc(&mm->mm_count);
407 current->active_mm = mm; 418 current->active_mm = mm;
408 BUG_ON(current->mm); /* Can't be, but better be safe than sorry. */
409 419
410 preempt_disable(); 420 preempt_disable();
411 421
@@ -413,6 +423,9 @@ void __cpuinit secondary_start_kernel(void)
413 423
414 platform_secondary_init(cpu); 424 platform_secondary_init(cpu);
415 425
426 /* setup local core timer */
427 bfin_local_timer_setup();
428
416 local_irq_enable(); 429 local_irq_enable();
417 430
418 /* 431 /*
@@ -462,25 +475,58 @@ void smp_icache_flush_range_others(unsigned long start, unsigned long end)
462EXPORT_SYMBOL_GPL(smp_icache_flush_range_others); 475EXPORT_SYMBOL_GPL(smp_icache_flush_range_others);
463 476
464#ifdef __ARCH_SYNC_CORE_ICACHE 477#ifdef __ARCH_SYNC_CORE_ICACHE
478unsigned long icache_invld_count[NR_CPUS];
465void resync_core_icache(void) 479void resync_core_icache(void)
466{ 480{
467 unsigned int cpu = get_cpu(); 481 unsigned int cpu = get_cpu();
468 blackfin_invalidate_entire_icache(); 482 blackfin_invalidate_entire_icache();
469 ++per_cpu(cpu_data, cpu).icache_invld_count; 483 icache_invld_count[cpu]++;
470 put_cpu(); 484 put_cpu();
471} 485}
472EXPORT_SYMBOL(resync_core_icache); 486EXPORT_SYMBOL(resync_core_icache);
473#endif 487#endif
474 488
475#ifdef __ARCH_SYNC_CORE_DCACHE 489#ifdef __ARCH_SYNC_CORE_DCACHE
490unsigned long dcache_invld_count[NR_CPUS];
476unsigned long barrier_mask __attribute__ ((__section__(".l2.bss"))); 491unsigned long barrier_mask __attribute__ ((__section__(".l2.bss")));
477 492
478void resync_core_dcache(void) 493void resync_core_dcache(void)
479{ 494{
480 unsigned int cpu = get_cpu(); 495 unsigned int cpu = get_cpu();
481 blackfin_invalidate_entire_dcache(); 496 blackfin_invalidate_entire_dcache();
482 ++per_cpu(cpu_data, cpu).dcache_invld_count; 497 dcache_invld_count[cpu]++;
483 put_cpu(); 498 put_cpu();
484} 499}
485EXPORT_SYMBOL(resync_core_dcache); 500EXPORT_SYMBOL(resync_core_dcache);
486#endif 501#endif
502
503#ifdef CONFIG_HOTPLUG_CPU
504int __cpuexit __cpu_disable(void)
505{
506 unsigned int cpu = smp_processor_id();
507
508 if (cpu == 0)
509 return -EPERM;
510
511 set_cpu_online(cpu, false);
512 return 0;
513}
514
515static DECLARE_COMPLETION(cpu_killed);
516
517int __cpuexit __cpu_die(unsigned int cpu)
518{
519 return wait_for_completion_timeout(&cpu_killed, 5000);
520}
521
522void cpu_die(void)
523{
524 complete(&cpu_killed);
525
526 atomic_dec(&init_mm.mm_users);
527 atomic_dec(&init_mm.mm_count);
528
529 local_irq_disable();
530 platform_cpu_die();
531}
532#endif
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c
index bb9c98f9cb5b..355b87aa6b93 100644
--- a/arch/blackfin/mm/init.c
+++ b/arch/blackfin/mm/init.c
@@ -4,6 +4,7 @@
4 * Licensed under the GPL-2 or later. 4 * Licensed under the GPL-2 or later.
5 */ 5 */
6 6
7#include <linux/gfp.h>
7#include <linux/swap.h> 8#include <linux/swap.h>
8#include <linux/bootmem.h> 9#include <linux/bootmem.h>
9#include <linux/uaccess.h> 10#include <linux/uaccess.h>
diff --git a/arch/blackfin/mm/isram-driver.c b/arch/blackfin/mm/isram-driver.c
index 84cdc5a1c139..39b058564f62 100644
--- a/arch/blackfin/mm/isram-driver.c
+++ b/arch/blackfin/mm/isram-driver.c
@@ -11,6 +11,7 @@
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/types.h> 13#include <linux/types.h>
14#include <linux/slab.h>
14#include <linux/spinlock.h> 15#include <linux/spinlock.h>
15#include <linux/sched.h> 16#include <linux/sched.h>
16 17
@@ -62,7 +63,7 @@ static void isram_write(const void *addr, uint64_t data)
62 uint32_t cmd; 63 uint32_t cmd;
63 unsigned long flags; 64 unsigned long flags;
64 65
65 if (addr >= (void *)(L1_CODE_START + L1_CODE_LENGTH)) 66 if (unlikely(addr >= (void *)(L1_CODE_START + L1_CODE_LENGTH)))
66 return; 67 return;
67 68
68 cmd = IADDR2DTEST(addr) | 2; /* write */ 69 cmd = IADDR2DTEST(addr) | 2; /* write */
@@ -93,7 +94,7 @@ static uint64_t isram_read(const void *addr)
93 unsigned long flags; 94 unsigned long flags;
94 uint64_t ret; 95 uint64_t ret;
95 96
96 if (addr > (void *)(L1_CODE_START + L1_CODE_LENGTH)) 97 if (unlikely(addr > (void *)(L1_CODE_START + L1_CODE_LENGTH)))
97 return 0; 98 return 0;
98 99
99 cmd = IADDR2DTEST(addr) | 0; /* read */ 100 cmd = IADDR2DTEST(addr) | 0; /* read */
@@ -120,7 +121,7 @@ static bool isram_check_addr(const void *addr, size_t n)
120{ 121{
121 if ((addr >= (void *)L1_CODE_START) && 122 if ((addr >= (void *)L1_CODE_START) &&
122 (addr < (void *)(L1_CODE_START + L1_CODE_LENGTH))) { 123 (addr < (void *)(L1_CODE_START + L1_CODE_LENGTH))) {
123 if ((addr + n) > (void *)(L1_CODE_START + L1_CODE_LENGTH)) { 124 if (unlikely((addr + n) > (void *)(L1_CODE_START + L1_CODE_LENGTH))) {
124 show_stack(NULL, NULL); 125 show_stack(NULL, NULL);
125 pr_err("copy involving %p length (%zu) too long\n", addr, n); 126 pr_err("copy involving %p length (%zu) too long\n", addr, n);
126 } 127 }
diff --git a/arch/blackfin/mm/sram-alloc.c b/arch/blackfin/mm/sram-alloc.c
index f068c11ea98f..49b2ff2c8b74 100644
--- a/arch/blackfin/mm/sram-alloc.c
+++ b/arch/blackfin/mm/sram-alloc.c
@@ -17,6 +17,7 @@
17#include <linux/proc_fs.h> 17#include <linux/proc_fs.h>
18#include <linux/spinlock.h> 18#include <linux/spinlock.h>
19#include <linux/rtc.h> 19#include <linux/rtc.h>
20#include <linux/slab.h>
20#include <asm/blackfin.h> 21#include <asm/blackfin.h>
21#include <asm/mem_map.h> 22#include <asm/mem_map.h>
22#include "blackfin_sram.h" 23#include "blackfin_sram.h"
@@ -402,7 +403,7 @@ void *l1_data_A_sram_alloc(size_t size)
402 void *addr; 403 void *addr;
403 unsigned int cpu; 404 unsigned int cpu;
404 405
405 cpu = get_cpu(); 406 cpu = smp_processor_id();
406 /* add mutex operation */ 407 /* add mutex operation */
407 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags); 408 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags);
408 409
@@ -411,7 +412,6 @@ void *l1_data_A_sram_alloc(size_t size)
411 412
412 /* add mutex operation */ 413 /* add mutex operation */
413 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags); 414 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags);
414 put_cpu();
415 415
416 pr_debug("Allocated address in l1_data_A_sram_alloc is 0x%lx+0x%lx\n", 416 pr_debug("Allocated address in l1_data_A_sram_alloc is 0x%lx+0x%lx\n",
417 (long unsigned int)addr, size); 417 (long unsigned int)addr, size);
@@ -430,7 +430,7 @@ int l1_data_A_sram_free(const void *addr)
430 int ret; 430 int ret;
431 unsigned int cpu; 431 unsigned int cpu;
432 432
433 cpu = get_cpu(); 433 cpu = smp_processor_id();
434 /* add mutex operation */ 434 /* add mutex operation */
435 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags); 435 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags);
436 436
@@ -439,7 +439,6 @@ int l1_data_A_sram_free(const void *addr)
439 439
440 /* add mutex operation */ 440 /* add mutex operation */
441 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags); 441 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags);
442 put_cpu();
443 442
444 return ret; 443 return ret;
445#else 444#else
@@ -455,7 +454,7 @@ void *l1_data_B_sram_alloc(size_t size)
455 void *addr; 454 void *addr;
456 unsigned int cpu; 455 unsigned int cpu;
457 456
458 cpu = get_cpu(); 457 cpu = smp_processor_id();
459 /* add mutex operation */ 458 /* add mutex operation */
460 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags); 459 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags);
461 460
@@ -464,7 +463,6 @@ void *l1_data_B_sram_alloc(size_t size)
464 463
465 /* add mutex operation */ 464 /* add mutex operation */
466 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags); 465 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags);
467 put_cpu();
468 466
469 pr_debug("Allocated address in l1_data_B_sram_alloc is 0x%lx+0x%lx\n", 467 pr_debug("Allocated address in l1_data_B_sram_alloc is 0x%lx+0x%lx\n",
470 (long unsigned int)addr, size); 468 (long unsigned int)addr, size);
@@ -483,7 +481,7 @@ int l1_data_B_sram_free(const void *addr)
483 int ret; 481 int ret;
484 unsigned int cpu; 482 unsigned int cpu;
485 483
486 cpu = get_cpu(); 484 cpu = smp_processor_id();
487 /* add mutex operation */ 485 /* add mutex operation */
488 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags); 486 spin_lock_irqsave(&per_cpu(l1_data_sram_lock, cpu), flags);
489 487
@@ -492,7 +490,6 @@ int l1_data_B_sram_free(const void *addr)
492 490
493 /* add mutex operation */ 491 /* add mutex operation */
494 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags); 492 spin_unlock_irqrestore(&per_cpu(l1_data_sram_lock, cpu), flags);
495 put_cpu();
496 493
497 return ret; 494 return ret;
498#else 495#else
@@ -540,7 +537,7 @@ void *l1_inst_sram_alloc(size_t size)
540 void *addr; 537 void *addr;
541 unsigned int cpu; 538 unsigned int cpu;
542 539
543 cpu = get_cpu(); 540 cpu = smp_processor_id();
544 /* add mutex operation */ 541 /* add mutex operation */
545 spin_lock_irqsave(&per_cpu(l1_inst_sram_lock, cpu), flags); 542 spin_lock_irqsave(&per_cpu(l1_inst_sram_lock, cpu), flags);
546 543
@@ -549,7 +546,6 @@ void *l1_inst_sram_alloc(size_t size)
549 546
550 /* add mutex operation */ 547 /* add mutex operation */
551 spin_unlock_irqrestore(&per_cpu(l1_inst_sram_lock, cpu), flags); 548 spin_unlock_irqrestore(&per_cpu(l1_inst_sram_lock, cpu), flags);
552 put_cpu();
553 549
554 pr_debug("Allocated address in l1_inst_sram_alloc is 0x%lx+0x%lx\n", 550 pr_debug("Allocated address in l1_inst_sram_alloc is 0x%lx+0x%lx\n",
555 (long unsigned int)addr, size); 551 (long unsigned int)addr, size);
@@ -568,7 +564,7 @@ int l1_inst_sram_free(const void *addr)
568 int ret; 564 int ret;
569 unsigned int cpu; 565 unsigned int cpu;
570 566
571 cpu = get_cpu(); 567 cpu = smp_processor_id();
572 /* add mutex operation */ 568 /* add mutex operation */
573 spin_lock_irqsave(&per_cpu(l1_inst_sram_lock, cpu), flags); 569 spin_lock_irqsave(&per_cpu(l1_inst_sram_lock, cpu), flags);
574 570
@@ -577,7 +573,6 @@ int l1_inst_sram_free(const void *addr)
577 573
578 /* add mutex operation */ 574 /* add mutex operation */
579 spin_unlock_irqrestore(&per_cpu(l1_inst_sram_lock, cpu), flags); 575 spin_unlock_irqrestore(&per_cpu(l1_inst_sram_lock, cpu), flags);
580 put_cpu();
581 576
582 return ret; 577 return ret;
583#else 578#else
@@ -593,7 +588,7 @@ void *l1sram_alloc(size_t size)
593 void *addr; 588 void *addr;
594 unsigned int cpu; 589 unsigned int cpu;
595 590
596 cpu = get_cpu(); 591 cpu = smp_processor_id();
597 /* add mutex operation */ 592 /* add mutex operation */
598 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags); 593 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags);
599 594
@@ -602,7 +597,6 @@ void *l1sram_alloc(size_t size)
602 597
603 /* add mutex operation */ 598 /* add mutex operation */
604 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags); 599 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags);
605 put_cpu();
606 600
607 return addr; 601 return addr;
608} 602}
@@ -614,7 +608,7 @@ void *l1sram_alloc_max(size_t *psize)
614 void *addr; 608 void *addr;
615 unsigned int cpu; 609 unsigned int cpu;
616 610
617 cpu = get_cpu(); 611 cpu = smp_processor_id();
618 /* add mutex operation */ 612 /* add mutex operation */
619 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags); 613 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags);
620 614
@@ -623,7 +617,6 @@ void *l1sram_alloc_max(size_t *psize)
623 617
624 /* add mutex operation */ 618 /* add mutex operation */
625 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags); 619 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags);
626 put_cpu();
627 620
628 return addr; 621 return addr;
629} 622}
@@ -635,7 +628,7 @@ int l1sram_free(const void *addr)
635 int ret; 628 int ret;
636 unsigned int cpu; 629 unsigned int cpu;
637 630
638 cpu = get_cpu(); 631 cpu = smp_processor_id();
639 /* add mutex operation */ 632 /* add mutex operation */
640 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags); 633 spin_lock_irqsave(&per_cpu(l1sram_lock, cpu), flags);
641 634
@@ -644,7 +637,6 @@ int l1sram_free(const void *addr)
644 637
645 /* add mutex operation */ 638 /* add mutex operation */
646 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags); 639 spin_unlock_irqrestore(&per_cpu(l1sram_lock, cpu), flags);
647 put_cpu();
648 640
649 return ret; 641 return ret;
650} 642}
diff --git a/arch/cris/arch-v10/drivers/i2c.c b/arch/cris/arch-v10/drivers/i2c.c
index 7f656ae0b21d..a8737a8eb229 100644
--- a/arch/cris/arch-v10/drivers/i2c.c
+++ b/arch/cris/arch-v10/drivers/i2c.c
@@ -14,7 +14,6 @@
14 14
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/slab.h>
18#include <linux/smp_lock.h> 17#include <linux/smp_lock.h>
19#include <linux/errno.h> 18#include <linux/errno.h>
20#include <linux/kernel.h> 19#include <linux/kernel.h>
diff --git a/arch/cris/arch-v10/drivers/sync_serial.c b/arch/cris/arch-v10/drivers/sync_serial.c
index 562b9a7feae7..109dcd826d17 100644
--- a/arch/cris/arch-v10/drivers/sync_serial.c
+++ b/arch/cris/arch-v10/drivers/sync_serial.c
@@ -17,7 +17,6 @@
17#include <linux/errno.h> 17#include <linux/errno.h>
18#include <linux/major.h> 18#include <linux/major.h>
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/slab.h>
21#include <linux/interrupt.h> 20#include <linux/interrupt.h>
22#include <linux/poll.h> 21#include <linux/poll.h>
23#include <linux/init.h> 22#include <linux/init.h>
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c
index c4c69cf721e5..93f0f64b1326 100644
--- a/arch/cris/arch-v10/kernel/process.c
+++ b/arch/cris/arch-v10/kernel/process.c
@@ -11,9 +11,9 @@
11 */ 11 */
12 12
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/slab.h>
14#include <linux/err.h> 15#include <linux/err.h>
15#include <linux/fs.h> 16#include <linux/fs.h>
16#include <linux/slab.h>
17#include <arch/svinto.h> 17#include <arch/svinto.h>
18#include <linux/init.h> 18#include <linux/init.h>
19 19
diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c
index 179e7b804331..506826399ae7 100644
--- a/arch/cris/arch-v32/drivers/i2c.c
+++ b/arch/cris/arch-v32/drivers/i2c.c
@@ -27,7 +27,6 @@
27 27
28#include <linux/module.h> 28#include <linux/module.h>
29#include <linux/sched.h> 29#include <linux/sched.h>
30#include <linux/slab.h>
31#include <linux/errno.h> 30#include <linux/errno.h>
32#include <linux/kernel.h> 31#include <linux/kernel.h>
33#include <linux/fs.h> 32#include <linux/fs.h>
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c
index d4b9c36ddc0f..bc0cfdad1cbc 100644
--- a/arch/cris/arch-v32/drivers/pci/bios.c
+++ b/arch/cris/arch-v32/drivers/pci/bios.c
@@ -50,7 +50,7 @@ pcibios_align_resource(void *data, const struct resource *res,
50 if ((res->flags & IORESOURCE_IO) && (start & 0x300)) 50 if ((res->flags & IORESOURCE_IO) && (start & 0x300))
51 start = (start + 0x3ff) & ~0x3ff; 51 start = (start + 0x3ff) & ~0x3ff;
52 52
53 return start 53 return start;
54} 54}
55 55
56int pcibios_enable_resources(struct pci_dev *dev, int mask) 56int pcibios_enable_resources(struct pci_dev *dev, int mask)
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c b/arch/cris/arch-v32/drivers/pci/dma.c
index fbe65954ee6c..ee55578d9834 100644
--- a/arch/cris/arch-v32/drivers/pci/dma.c
+++ b/arch/cris/arch-v32/drivers/pci/dma.c
@@ -13,6 +13,7 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/string.h> 14#include <linux/string.h>
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/gfp.h>
16#include <asm/io.h> 17#include <asm/io.h>
17 18
18void *dma_alloc_coherent(struct device *dev, size_t size, 19void *dma_alloc_coherent(struct device *dev, size_t size,
diff --git a/arch/cris/arch-v32/drivers/sync_serial.c b/arch/cris/arch-v32/drivers/sync_serial.c
index d2a0fbf5341f..4889f196ecd6 100644
--- a/arch/cris/arch-v32/drivers/sync_serial.c
+++ b/arch/cris/arch-v32/drivers/sync_serial.c
@@ -13,7 +13,6 @@
13#include <linux/errno.h> 13#include <linux/errno.h>
14#include <linux/major.h> 14#include <linux/major.h>
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/slab.h>
17#include <linux/smp_lock.h> 16#include <linux/smp_lock.h>
18#include <linux/interrupt.h> 17#include <linux/interrupt.h>
19#include <linux/poll.h> 18#include <linux/poll.h>
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c
index 120e7f796fea..2661a9529d70 100644
--- a/arch/cris/arch-v32/kernel/process.c
+++ b/arch/cris/arch-v32/kernel/process.c
@@ -9,9 +9,9 @@
9 */ 9 */
10 10
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/slab.h>
12#include <linux/err.h> 13#include <linux/err.h>
13#include <linux/fs.h> 14#include <linux/fs.h>
14#include <linux/slab.h>
15#include <hwregs/reg_rdwr.h> 15#include <hwregs/reg_rdwr.h>
16#include <hwregs/reg_map.h> 16#include <hwregs/reg_map.h>
17#include <hwregs/timer_defs.h> 17#include <hwregs/timer_defs.h>
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c
index 372d0ca6efbc..0b7e3f143281 100644
--- a/arch/cris/arch-v32/kernel/signal.c
+++ b/arch/cris/arch-v32/kernel/signal.c
@@ -4,6 +4,7 @@
4 4
5#include <linux/sched.h> 5#include <linux/sched.h>
6#include <linux/mm.h> 6#include <linux/mm.h>
7#include <linux/slab.h>
7#include <linux/kernel.h> 8#include <linux/kernel.h>
8#include <linux/signal.h> 9#include <linux/signal.h>
9#include <linux/errno.h> 10#include <linux/errno.h>
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c
index 6d7b9eda4036..469f7f9d62e0 100644
--- a/arch/cris/kernel/irq.c
+++ b/arch/cris/kernel/irq.c
@@ -29,7 +29,6 @@
29#include <linux/ioport.h> 29#include <linux/ioport.h>
30#include <linux/interrupt.h> 30#include <linux/interrupt.h>
31#include <linux/timex.h> 31#include <linux/timex.h>
32#include <linux/slab.h>
33#include <linux/random.h> 32#include <linux/random.h>
34#include <linux/init.h> 33#include <linux/init.h>
35#include <linux/seq_file.h> 34#include <linux/seq_file.h>
diff --git a/arch/cris/kernel/module.c b/arch/cris/kernel/module.c
index abc13e368b90..bcd502f74cda 100644
--- a/arch/cris/kernel/module.c
+++ b/arch/cris/kernel/module.c
@@ -21,6 +21,7 @@
21#include <linux/fs.h> 21#include <linux/fs.h>
22#include <linux/string.h> 22#include <linux/string.h>
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/slab.h>
24 25
25#if 0 26#if 0
26#define DEBUGP printk 27#define DEBUGP printk
diff --git a/arch/cris/kernel/profile.c b/arch/cris/kernel/profile.c
index 9aa571169bcc..b917549a7d94 100644
--- a/arch/cris/kernel/profile.c
+++ b/arch/cris/kernel/profile.c
@@ -2,6 +2,7 @@
2#include <linux/errno.h> 2#include <linux/errno.h>
3#include <linux/kernel.h> 3#include <linux/kernel.h>
4#include <linux/proc_fs.h> 4#include <linux/proc_fs.h>
5#include <linux/slab.h>
5#include <linux/types.h> 6#include <linux/types.h>
6#include <asm/ptrace.h> 7#include <asm/ptrace.h>
7#include <asm/uaccess.h> 8#include <asm/uaccess.h>
diff --git a/arch/cris/mm/init.c b/arch/cris/mm/init.c
index ff68b9f516a1..df33ab89d70f 100644
--- a/arch/cris/mm/init.c
+++ b/arch/cris/mm/init.c
@@ -8,6 +8,7 @@
8 * 8 *
9 */ 9 */
10 10
11#include <linux/gfp.h>
11#include <linux/init.h> 12#include <linux/init.h>
12#include <linux/bootmem.h> 13#include <linux/bootmem.h>
13#include <asm/tlb.h> 14#include <asm/tlb.h>
diff --git a/arch/frv/include/asm/segment.h b/arch/frv/include/asm/segment.h
index e3616a6f941d..a2320a4a0042 100644
--- a/arch/frv/include/asm/segment.h
+++ b/arch/frv/include/asm/segment.h
@@ -21,12 +21,12 @@ typedef struct {
21 21
22#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) 22#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
23 23
24#define KERNEL_DS MAKE_MM_SEG(0xdfffffffUL)
25
26#ifdef CONFIG_MMU 24#ifdef CONFIG_MMU
27#define USER_DS MAKE_MM_SEG(TASK_SIZE - 1) 25#define USER_DS MAKE_MM_SEG(TASK_SIZE - 1)
26#define KERNEL_DS MAKE_MM_SEG(0xdfffffffUL)
28#else 27#else
29#define USER_DS KERNEL_DS 28#define USER_DS MAKE_MM_SEG(memory_end)
29#define KERNEL_DS MAKE_MM_SEG(0xe0000000UL)
30#endif 30#endif
31 31
32#define get_ds() (KERNEL_DS) 32#define get_ds() (KERNEL_DS)
diff --git a/arch/frv/include/asm/uaccess.h b/arch/frv/include/asm/uaccess.h
index 53650c958f41..0b67ec5b4414 100644
--- a/arch/frv/include/asm/uaccess.h
+++ b/arch/frv/include/asm/uaccess.h
@@ -27,8 +27,6 @@
27#define VERIFY_READ 0 27#define VERIFY_READ 0
28#define VERIFY_WRITE 1 28#define VERIFY_WRITE 1
29 29
30#define __addr_ok(addr) ((unsigned long)(addr) < get_addr_limit())
31
32/* 30/*
33 * check that a range of addresses falls within the current address limit 31 * check that a range of addresses falls within the current address limit
34 */ 32 */
diff --git a/arch/frv/kernel/irq.c b/arch/frv/kernel/irq.c
index 62d1aba615dc..625136625a7f 100644
--- a/arch/frv/kernel/irq.c
+++ b/arch/frv/kernel/irq.c
@@ -16,7 +16,6 @@
16#include <linux/ioport.h> 16#include <linux/ioport.h>
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/timex.h> 18#include <linux/timex.h>
19#include <linux/slab.h>
20#include <linux/random.h> 19#include <linux/random.h>
21#include <linux/init.h> 20#include <linux/init.h>
22#include <linux/kernel_stat.h> 21#include <linux/kernel_stat.h>
diff --git a/arch/frv/kernel/sysctl.c b/arch/frv/kernel/sysctl.c
index 035516cb7a97..71abd1510a59 100644
--- a/arch/frv/kernel/sysctl.c
+++ b/arch/frv/kernel/sysctl.c
@@ -9,7 +9,6 @@
9 * 2 of the License, or (at your option) any later version. 9 * 2 of the License, or (at your option) any later version.
10 */ 10 */
11 11
12#include <linux/slab.h>
13#include <linux/sysctl.h> 12#include <linux/sysctl.h>
14#include <linux/proc_fs.h> 13#include <linux/proc_fs.h>
15#include <linux/init.h> 14#include <linux/init.h>
diff --git a/arch/frv/mb93090-mb00/pci-dma.c b/arch/frv/mb93090-mb00/pci-dma.c
index 2c912e805162..85d110b71cf7 100644
--- a/arch/frv/mb93090-mb00/pci-dma.c
+++ b/arch/frv/mb93090-mb00/pci-dma.c
@@ -10,7 +10,6 @@
10 */ 10 */
11 11
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/slab.h>
14#include <linux/dma-mapping.h> 13#include <linux/dma-mapping.h>
15#include <linux/list.h> 14#include <linux/list.h>
16#include <linux/pci.h> 15#include <linux/pci.h>
diff --git a/arch/frv/mb93090-mb00/pci-frv.c b/arch/frv/mb93090-mb00/pci-frv.c
index 1ed15d7fea20..6b4fb28e9f99 100644
--- a/arch/frv/mb93090-mb00/pci-frv.c
+++ b/arch/frv/mb93090-mb00/pci-frv.c
@@ -41,7 +41,7 @@ pcibios_align_resource(void *data, const struct resource *res,
41 if ((res->flags & IORESOURCE_IO) && (start & 0x300)) 41 if ((res->flags & IORESOURCE_IO) && (start & 0x300))
42 start = (start + 0x3ff) & ~0x3ff; 42 start = (start + 0x3ff) & ~0x3ff;
43 43
44 return start 44 return start;
45} 45}
46 46
47 47
@@ -94,8 +94,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
94 r = &dev->resource[idx]; 94 r = &dev->resource[idx];
95 if (!r->start) 95 if (!r->start)
96 continue; 96 continue;
97 if (pci_claim_resource(dev, idx) < 0) 97 pci_claim_resource(dev, idx);
98 printk(KERN_ERR "PCI: Cannot allocate resource region %d of bridge %s\n", idx, pci_name(dev));
99 } 98 }
100 } 99 }
101 pcibios_allocate_bus_resources(&bus->children); 100 pcibios_allocate_bus_resources(&bus->children);
@@ -125,7 +124,6 @@ static void __init pcibios_allocate_resources(int pass)
125 DBG("PCI: Resource %08lx-%08lx (f=%lx, d=%d, p=%d)\n", 124 DBG("PCI: Resource %08lx-%08lx (f=%lx, d=%d, p=%d)\n",
126 r->start, r->end, r->flags, disabled, pass); 125 r->start, r->end, r->flags, disabled, pass);
127 if (pci_claim_resource(dev, idx) < 0) { 126 if (pci_claim_resource(dev, idx) < 0) {
128 printk(KERN_ERR "PCI: Cannot allocate resource region %d of device %s\n", idx, pci_name(dev));
129 /* We'll assign a new address later */ 127 /* We'll assign a new address later */
130 r->end -= r->start; 128 r->end -= r->start;
131 r->start = 0; 129 r->start = 0;
diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
index ba587523c015..20f6497b2cd5 100644
--- a/arch/frv/mb93090-mb00/pci-irq.c
+++ b/arch/frv/mb93090-mb00/pci-irq.c
@@ -9,7 +9,6 @@
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/pci.h> 10#include <linux/pci.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/slab.h>
13#include <linux/interrupt.h> 12#include <linux/interrupt.h>
14#include <linux/irq.h> 13#include <linux/irq.h>
15 14
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
index c0dcec65c6b7..f8dd37e49535 100644
--- a/arch/frv/mb93090-mb00/pci-vdk.c
+++ b/arch/frv/mb93090-mb00/pci-vdk.c
@@ -16,7 +16,6 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/ioport.h> 17#include <linux/ioport.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/slab.h>
20 19
21#include <asm/segment.h> 20#include <asm/segment.h>
22#include <asm/io.h> 21#include <asm/io.h>
diff --git a/arch/frv/mm/dma-alloc.c b/arch/frv/mm/dma-alloc.c
index 44840e73e907..7a73aaeae3ac 100644
--- a/arch/frv/mm/dma-alloc.c
+++ b/arch/frv/mm/dma-alloc.c
@@ -37,6 +37,7 @@
37#include <linux/init.h> 37#include <linux/init.h>
38#include <linux/pci.h> 38#include <linux/pci.h>
39#include <linux/hardirq.h> 39#include <linux/hardirq.h>
40#include <linux/gfp.h>
40 41
41#include <asm/pgalloc.h> 42#include <asm/pgalloc.h>
42#include <asm/io.h> 43#include <asm/io.h>
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 0708284f85fb..ed64588ac3a7 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -19,6 +19,7 @@
19#include <linux/signal.h> 19#include <linux/signal.h>
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/pagemap.h> 21#include <linux/pagemap.h>
22#include <linux/gfp.h>
22#include <linux/swap.h> 23#include <linux/swap.h>
23#include <linux/mm.h> 24#include <linux/mm.h>
24#include <linux/kernel.h> 25#include <linux/kernel.h>
diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c
index 66f616fb4860..c42c83d507bc 100644
--- a/arch/frv/mm/pgalloc.c
+++ b/arch/frv/mm/pgalloc.c
@@ -10,7 +10,7 @@
10 */ 10 */
11 11
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/slab.h> 13#include <linux/gfp.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/highmem.h> 15#include <linux/highmem.h>
16#include <linux/quicklist.h> 16#include <linux/quicklist.h>
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index bd883faa983d..8c8b0ffa6ad7 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -32,11 +32,11 @@
32#include <linux/stddef.h> 32#include <linux/stddef.h>
33#include <linux/unistd.h> 33#include <linux/unistd.h>
34#include <linux/ptrace.h> 34#include <linux/ptrace.h>
35#include <linux/slab.h>
36#include <linux/user.h> 35#include <linux/user.h>
37#include <linux/interrupt.h> 36#include <linux/interrupt.h>
38#include <linux/reboot.h> 37#include <linux/reboot.h>
39#include <linux/fs.h> 38#include <linux/fs.h>
39#include <linux/slab.h>
40 40
41#include <asm/uaccess.h> 41#include <asm/uaccess.h>
42#include <asm/system.h> 42#include <asm/system.h>
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c
index 9942f24aff9e..7cc3380f250c 100644
--- a/arch/h8300/mm/init.c
+++ b/arch/h8300/mm/init.c
@@ -30,7 +30,7 @@
30#include <linux/highmem.h> 30#include <linux/highmem.h>
31#include <linux/pagemap.h> 31#include <linux/pagemap.h>
32#include <linux/bootmem.h> 32#include <linux/bootmem.h>
33#include <linux/slab.h> 33#include <linux/gfp.h>
34 34
35#include <asm/setup.h> 35#include <asm/setup.h>
36#include <asm/segment.h> 36#include <asm/segment.h>
diff --git a/arch/h8300/mm/kmap.c b/arch/h8300/mm/kmap.c
index 5c7af09ae8d1..944a502c2e56 100644
--- a/arch/h8300/mm/kmap.c
+++ b/arch/h8300/mm/kmap.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/string.h> 13#include <linux/string.h>
14#include <linux/types.h> 14#include <linux/types.h>
15#include <linux/slab.h>
16#include <linux/vmalloc.h> 15#include <linux/vmalloc.h>
17 16
18#include <asm/setup.h> 17#include <asm/setup.h>
diff --git a/arch/h8300/mm/memory.c b/arch/h8300/mm/memory.c
index 40d8aa811e4e..5552ddfaab5e 100644
--- a/arch/h8300/mm/memory.c
+++ b/arch/h8300/mm/memory.c
@@ -21,7 +21,6 @@
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/string.h> 22#include <linux/string.h>
23#include <linux/types.h> 23#include <linux/types.h>
24#include <linux/slab.h>
25 24
26#include <asm/setup.h> 25#include <asm/setup.h>
27#include <asm/segment.h> 26#include <asm/segment.h>
diff --git a/arch/ia64/include/asm/dmi.h b/arch/ia64/include/asm/dmi.h
index 00eb1b130b63..1ed4c8fedb83 100644
--- a/arch/ia64/include/asm/dmi.h
+++ b/arch/ia64/include/asm/dmi.h
@@ -1,6 +1,7 @@
1#ifndef _ASM_DMI_H 1#ifndef _ASM_DMI_H
2#define _ASM_DMI_H 1 2#define _ASM_DMI_H 1
3 3
4#include <linux/slab.h>
4#include <asm/io.h> 5#include <asm/io.h>
5 6
6/* Use normal IO mappings for DMI */ 7/* Use normal IO mappings for DMI */
diff --git a/arch/ia64/kernel/acpi-ext.c b/arch/ia64/kernel/acpi-ext.c
index b7515bc808a8..8b9318d311a0 100644
--- a/arch/ia64/kernel/acpi-ext.c
+++ b/arch/ia64/kernel/acpi-ext.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/slab.h>
13#include <linux/acpi.h> 14#include <linux/acpi.h>
14 15
15#include <asm/acpi-ext.h> 16#include <asm/acpi-ext.h>
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index a7ca07f3754e..4d1a7e9314cf 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -44,6 +44,8 @@
44#include <linux/efi.h> 44#include <linux/efi.h>
45#include <linux/mmzone.h> 45#include <linux/mmzone.h>
46#include <linux/nodemask.h> 46#include <linux/nodemask.h>
47#include <linux/slab.h>
48#include <acpi/processor.h>
47#include <asm/io.h> 49#include <asm/io.h>
48#include <asm/iosapic.h> 50#include <asm/iosapic.h>
49#include <asm/machvec.h> 51#include <asm/machvec.h>
@@ -907,6 +909,8 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)
907 cpu_set(cpu, cpu_present_map); 909 cpu_set(cpu, cpu_present_map);
908 ia64_cpu_to_sapicid[cpu] = physid; 910 ia64_cpu_to_sapicid[cpu] = physid;
909 911
912 acpi_processor_set_pdc(handle);
913
910 *pcpu = cpu; 914 *pcpu = cpu;
911 return (0); 915 return (0);
912} 916}
diff --git a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
index 7b435451b3dc..b0b4e6e710f2 100644
--- a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
+++ b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/slab.h>
13#include <linux/module.h> 14#include <linux/module.h>
14#include <linux/init.h> 15#include <linux/init.h>
15#include <linux/cpufreq.h> 16#include <linux/cpufreq.h>
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index c745d0aeb6e0..a0f001928502 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -26,6 +26,7 @@
26#include <linux/kernel.h> 26#include <linux/kernel.h>
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/slab.h>
29#include <linux/time.h> 30#include <linux/time.h>
30#include <linux/efi.h> 31#include <linux/efi.h>
31#include <linux/kexec.h> 32#include <linux/kexec.h>
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 95ac77aeae9b..7ded76658d2d 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -86,6 +86,7 @@
86#include <linux/kernel.h> 86#include <linux/kernel.h>
87#include <linux/list.h> 87#include <linux/list.h>
88#include <linux/pci.h> 88#include <linux/pci.h>
89#include <linux/slab.h>
89#include <linux/smp.h> 90#include <linux/smp.h>
90#include <linux/string.h> 91#include <linux/string.h>
91#include <linux/bootmem.h> 92#include <linux/bootmem.h>
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index d4093a173a3e..640479304ac0 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -22,7 +22,6 @@
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/ioport.h> 23#include <linux/ioport.h>
24#include <linux/kernel_stat.h> 24#include <linux/kernel_stat.h>
25#include <linux/slab.h>
26#include <linux/ptrace.h> 25#include <linux/ptrace.h>
27#include <linux/random.h> /* for rand_initialize_irq() */ 26#include <linux/random.h> /* for rand_initialize_irq() */
28#include <linux/signal.h> 27#include <linux/signal.h>
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 378b4833024f..a0220dc5ff42 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -85,6 +85,7 @@
85#include <linux/cpumask.h> 85#include <linux/cpumask.h>
86#include <linux/kdebug.h> 86#include <linux/kdebug.h>
87#include <linux/cpu.h> 87#include <linux/cpu.h>
88#include <linux/gfp.h>
88 89
89#include <asm/delay.h> 90#include <asm/delay.h>
90#include <asm/machvec.h> 91#include <asm/machvec.h>
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index f94aaa86933f..09b4d6828c45 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -22,6 +22,7 @@
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/workqueue.h> 23#include <linux/workqueue.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/slab.h>
25 26
26#include <asm/delay.h> 27#include <asm/delay.h>
27#include <asm/machvec.h> 28#include <asm/machvec.h>
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c
index 53292abf846c..3095654f9ab3 100644
--- a/arch/ia64/kernel/pci-swiotlb.c
+++ b/arch/ia64/kernel/pci-swiotlb.c
@@ -1,6 +1,7 @@
1/* Glue code to lib/swiotlb.c */ 1/* Glue code to lib/swiotlb.c */
2 2
3#include <linux/pci.h> 3#include <linux/pci.h>
4#include <linux/gfp.h>
4#include <linux/cache.h> 5#include <linux/cache.h>
5#include <linux/module.h> 6#include <linux/module.h>
6#include <linux/dma-mapping.h> 7#include <linux/dma-mapping.h>
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 703062c44fb9..ab985f785c14 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -41,6 +41,7 @@
41#include <linux/rcupdate.h> 41#include <linux/rcupdate.h>
42#include <linux/completion.h> 42#include <linux/completion.h>
43#include <linux/tracehook.h> 43#include <linux/tracehook.h>
44#include <linux/slab.h>
44 45
45#include <asm/errno.h> 46#include <asm/errno.h>
46#include <asm/intrinsics.h> 47#include <asm/intrinsics.h>
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index d92765cae10a..53f1648c8b81 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -15,11 +15,11 @@
15#include <linux/kallsyms.h> 15#include <linux/kallsyms.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/slab.h>
18#include <linux/module.h> 19#include <linux/module.h>
19#include <linux/notifier.h> 20#include <linux/notifier.h>
20#include <linux/personality.h> 21#include <linux/personality.h>
21#include <linux/sched.h> 22#include <linux/sched.h>
22#include <linux/slab.h>
23#include <linux/stddef.h> 23#include <linux/stddef.h>
24#include <linux/thread_info.h> 24#include <linux/thread_info.h>
25#include <linux/unistd.h> 25#include <linux/unistd.h>
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index b61afbbe076f..0dec7f702448 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -11,7 +11,6 @@
11 */ 11 */
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/slab.h>
15#include <linux/mm.h> 14#include <linux/mm.h>
16#include <linux/errno.h> 15#include <linux/errno.h>
17#include <linux/ptrace.h> 16#include <linux/ptrace.h>
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index b3a5818088d9..28f299de2903 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -17,6 +17,7 @@
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/node.h> 19#include <linux/node.h>
20#include <linux/slab.h>
20#include <linux/init.h> 21#include <linux/init.h>
21#include <linux/bootmem.h> 22#include <linux/bootmem.h>
22#include <linux/nodemask.h> 23#include <linux/nodemask.h>
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index a595823582d9..c4696d217ce0 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -18,9 +18,9 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/errno.h> 19#include <linux/errno.h>
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/slab.h>
22#include <linux/efi.h> 21#include <linux/efi.h>
23#include <linux/genalloc.h> 22#include <linux/genalloc.h>
23#include <linux/gfp.h>
24#include <asm/page.h> 24#include <asm/page.h>
25#include <asm/pal.h> 25#include <asm/pal.h>
26#include <asm/system.h> 26#include <asm/system.h>
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index 26e0e089bfe7..7f3c0a2e60cd 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -23,8 +23,8 @@
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/errno.h> 24#include <linux/errno.h>
25#include <linux/percpu.h> 25#include <linux/percpu.h>
26#include <linux/gfp.h>
27#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/slab.h>
28#include <linux/smp.h> 28#include <linux/smp.h>
29#include <linux/kvm_host.h> 29#include <linux/kvm_host.h>
30#include <linux/kvm.h> 30#include <linux/kvm.h>
@@ -1802,7 +1802,8 @@ static int kvm_ia64_sync_dirty_log(struct kvm *kvm,
1802{ 1802{
1803 struct kvm_memory_slot *memslot; 1803 struct kvm_memory_slot *memslot;
1804 int r, i; 1804 int r, i;
1805 long n, base; 1805 long base;
1806 unsigned long n;
1806 unsigned long *dirty_bitmap = (unsigned long *)(kvm->arch.vm_base + 1807 unsigned long *dirty_bitmap = (unsigned long *)(kvm->arch.vm_base +
1807 offsetof(struct kvm_vm_data, kvm_mem_dirty_log)); 1808 offsetof(struct kvm_vm_data, kvm_mem_dirty_log));
1808 1809
@@ -1815,7 +1816,7 @@ static int kvm_ia64_sync_dirty_log(struct kvm *kvm,
1815 if (!memslot->dirty_bitmap) 1816 if (!memslot->dirty_bitmap)
1816 goto out; 1817 goto out;
1817 1818
1818 n = ALIGN(memslot->npages, BITS_PER_LONG) / 8; 1819 n = kvm_dirty_bitmap_bytes(memslot);
1819 base = memslot->base_gfn / BITS_PER_LONG; 1820 base = memslot->base_gfn / BITS_PER_LONG;
1820 1821
1821 for (i = 0; i < n/sizeof(long); ++i) { 1822 for (i = 0; i < n/sizeof(long); ++i) {
@@ -1831,7 +1832,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1831 struct kvm_dirty_log *log) 1832 struct kvm_dirty_log *log)
1832{ 1833{
1833 int r; 1834 int r;
1834 int n; 1835 unsigned long n;
1835 struct kvm_memory_slot *memslot; 1836 struct kvm_memory_slot *memslot;
1836 int is_dirty = 0; 1837 int is_dirty = 0;
1837 1838
@@ -1850,7 +1851,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1850 if (is_dirty) { 1851 if (is_dirty) {
1851 kvm_flush_remote_tlbs(kvm); 1852 kvm_flush_remote_tlbs(kvm);
1852 memslot = &kvm->memslots->memslots[log->slot]; 1853 memslot = &kvm->memslots->memslots[log->slot];
1853 n = ALIGN(memslot->npages, BITS_PER_LONG) / 8; 1854 n = kvm_dirty_bitmap_bytes(memslot);
1854 memset(memslot->dirty_bitmap, 0, n); 1855 memset(memslot->dirty_bitmap, 0, n);
1855 } 1856 }
1856 r = 0; 1857 r = 0;
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 8d586d1e2515..61620323bb60 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -22,6 +22,7 @@
22#include <linux/acpi.h> 22#include <linux/acpi.h>
23#include <linux/efi.h> 23#include <linux/efi.h>
24#include <linux/nodemask.h> 24#include <linux/nodemask.h>
25#include <linux/slab.h>
25#include <asm/pgalloc.h> 26#include <asm/pgalloc.h>
26#include <asm/tlb.h> 27#include <asm/tlb.h>
27#include <asm/meminit.h> 28#include <asm/meminit.h>
diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c
index b0f615759e97..1841ee7e65f9 100644
--- a/arch/ia64/mm/hugetlbpage.c
+++ b/arch/ia64/mm/hugetlbpage.c
@@ -14,7 +14,6 @@
14#include <linux/hugetlb.h> 14#include <linux/hugetlb.h>
15#include <linux/pagemap.h> 15#include <linux/pagemap.h>
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/slab.h>
18#include <linux/sysctl.h> 17#include <linux/sysctl.h>
19#include <linux/log2.h> 18#include <linux/log2.h>
20#include <asm/mman.h> 19#include <asm/mman.h>
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index f3de9d7a98b4..5dfd916e9ea6 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -22,6 +22,7 @@
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/bootmem.h> 24#include <linux/bootmem.h>
25#include <linux/slab.h>
25 26
26#include <asm/delay.h> 27#include <asm/delay.h>
27#include <asm/mmu_context.h> 28#include <asm/mmu_context.h>
diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c
index c6d6b62db66c..cad775a1a157 100644
--- a/arch/ia64/sn/kernel/bte.c
+++ b/arch/ia64/sn/kernel/bte.c
@@ -19,6 +19,7 @@
19#include <linux/bootmem.h> 19#include <linux/bootmem.h>
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/sched.h> 21#include <linux/sched.h>
22#include <linux/slab.h>
22 23
23#include <asm/sn/bte.h> 24#include <asm/sn/bte.h>
24 25
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 66f633bff059..8cdcb173a138 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -13,6 +13,7 @@
13#include <asm/sn/sn_sal.h> 13#include <asm/sn/sn_sal.h>
14#include "xtalk/hubdev.h" 14#include "xtalk/hubdev.h"
15#include <linux/acpi.h> 15#include <linux/acpi.h>
16#include <linux/slab.h>
16 17
17 18
18/* 19/*
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index 308e6595110e..4433dd019d3c 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/bootmem.h> 9#include <linux/bootmem.h>
10#include <linux/slab.h>
10#include <asm/sn/types.h> 11#include <asm/sn/types.h>
11#include <asm/sn/addrs.h> 12#include <asm/sn/addrs.h>
12#include <asm/sn/sn_feature_sets.h> 13#include <asm/sn/sn_feature_sets.h>
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index ee774c366a06..98079f29d9a9 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -6,6 +6,7 @@
6 * Copyright (C) 1992 - 1997, 2000-2006 Silicon Graphics, Inc. All rights reserved. 6 * Copyright (C) 1992 - 1997, 2000-2006 Silicon Graphics, Inc. All rights reserved.
7 */ 7 */
8 8
9#include <linux/slab.h>
9#include <asm/sn/types.h> 10#include <asm/sn/types.h>
10#include <asm/sn/addrs.h> 11#include <asm/sn/addrs.h>
11#include <asm/sn/io.h> 12#include <asm/sn/io.h>
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 40d6eeda1c4b..13c15d968098 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -12,6 +12,7 @@
12#include <linux/spinlock.h> 12#include <linux/spinlock.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/rculist.h> 14#include <linux/rculist.h>
15#include <linux/slab.h>
15#include <asm/sn/addrs.h> 16#include <asm/sn/addrs.h>
16#include <asm/sn/arch.h> 17#include <asm/sn/arch.h>
17#include <asm/sn/intr.h> 18#include <asm/sn/intr.h>
diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c
index fbbfb9701201..ebfdd6a9ae1a 100644
--- a/arch/ia64/sn/kernel/msi_sn.c
+++ b/arch/ia64/sn/kernel/msi_sn.c
@@ -11,6 +11,7 @@
11#include <linux/pci.h> 11#include <linux/pci.h>
12#include <linux/cpumask.h> 12#include <linux/cpumask.h>
13#include <linux/msi.h> 13#include <linux/msi.h>
14#include <linux/slab.h>
14 15
15#include <asm/sn/addrs.h> 16#include <asm/sn/addrs.h>
16#include <asm/sn/intr.h> 17#include <asm/sn/intr.h>
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 98b684928e12..a9d310de57da 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -9,6 +9,7 @@
9 * a description of how these routines should be used. 9 * a description of how these routines should be used.
10 */ 10 */
11 11
12#include <linux/gfp.h>
12#include <linux/module.h> 13#include <linux/module.h>
13#include <linux/dma-mapping.h> 14#include <linux/dma-mapping.h>
14#include <asm/dma.h> 15#include <asm/dma.h>
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_provider.c b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
index d13e5a22a558..3cb5cf377644 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_provider.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/interrupt.h> 9#include <linux/interrupt.h>
10#include <linux/types.h> 10#include <linux/types.h>
11#include <linux/slab.h>
11#include <linux/pci.h> 12#include <linux/pci.h>
12#include <asm/sn/addrs.h> 13#include <asm/sn/addrs.h>
13#include <asm/sn/geo.h> 14#include <asm/sn/geo.h>
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c
index efb454534e52..4d4536e3b6f3 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -10,6 +10,7 @@
10#include <linux/interrupt.h> 10#include <linux/interrupt.h>
11#include <linux/pci.h> 11#include <linux/pci.h>
12#include <linux/bitmap.h> 12#include <linux/bitmap.h>
13#include <linux/slab.h>
13#include <asm/sn/sn_sal.h> 14#include <asm/sn/sn_sal.h>
14#include <asm/sn/addrs.h> 15#include <asm/sn/addrs.h>
15#include <asm/sn/io.h> 16#include <asm/sn/io.h>
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index 012f3b82ee55..27faba035f3a 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/interrupt.h> 10#include <linux/interrupt.h>
11#include <linux/slab.h>
11#include <linux/pci.h> 12#include <linux/pci.h>
12#include <asm/sn/sn_sal.h> 13#include <asm/sn/sn_sal.h>
13#include <asm/sn/addrs.h> 14#include <asm/sn/addrs.h>
diff --git a/arch/ia64/xen/grant-table.c b/arch/ia64/xen/grant-table.c
index 777dd9a9108b..48cca37625eb 100644
--- a/arch/ia64/xen/grant-table.c
+++ b/arch/ia64/xen/grant-table.c
@@ -22,6 +22,7 @@
22 22
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/vmalloc.h> 24#include <linux/vmalloc.h>
25#include <linux/slab.h>
25#include <linux/mm.h> 26#include <linux/mm.h>
26 27
27#include <xen/interface/xen.h> 28#include <xen/interface/xen.h>
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index 67a01e1e4283..bc8c8c1511b2 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -21,10 +21,10 @@
21 */ 21 */
22 22
23#include <linux/fs.h> 23#include <linux/fs.h>
24#include <linux/slab.h>
24#include <linux/module.h> 25#include <linux/module.h>
25#include <linux/ptrace.h> 26#include <linux/ptrace.h>
26#include <linux/unistd.h> 27#include <linux/unistd.h>
27#include <linux/slab.h>
28#include <linux/hardirq.h> 28#include <linux/hardirq.h>
29 29
30#include <asm/io.h> 30#include <asm/io.h>
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index 9f581df3952b..73e2205ebf5a 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -19,6 +19,7 @@
19#include <linux/bitops.h> 19#include <linux/bitops.h>
20#include <linux/nodemask.h> 20#include <linux/nodemask.h>
21#include <linux/pfn.h> 21#include <linux/pfn.h>
22#include <linux/gfp.h>
22#include <asm/types.h> 23#include <asm/types.h>
23#include <asm/processor.h> 24#include <asm/processor.h>
24#include <asm/page.h> 25#include <asm/page.h>
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c
index c50bec8aabb1..b46ea1714a89 100644
--- a/arch/m68k/bvme6000/rtc.c
+++ b/arch/m68k/bvme6000/rtc.c
@@ -9,7 +9,6 @@
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/errno.h> 10#include <linux/errno.h>
11#include <linux/miscdevice.h> 11#include <linux/miscdevice.h>
12#include <linux/slab.h>
13#include <linux/smp_lock.h> 12#include <linux/smp_lock.h>
14#include <linux/ioport.h> 13#include <linux/ioport.h>
15#include <linux/capability.h> 14#include <linux/capability.h>
diff --git a/arch/m68k/include/asm/atomic_mm.h b/arch/m68k/include/asm/atomic_mm.h
index 88b7af20a996..d9d2ed647435 100644
--- a/arch/m68k/include/asm/atomic_mm.h
+++ b/arch/m68k/include/asm/atomic_mm.h
@@ -148,14 +148,18 @@ static inline int atomic_xchg(atomic_t *v, int new)
148static inline int atomic_sub_and_test(int i, atomic_t *v) 148static inline int atomic_sub_and_test(int i, atomic_t *v)
149{ 149{
150 char c; 150 char c;
151 __asm__ __volatile__("subl %2,%1; seq %0" : "=d" (c), "+m" (*v): "g" (i)); 151 __asm__ __volatile__("subl %2,%1; seq %0"
152 : "=d" (c), "+m" (*v)
153 : "id" (i));
152 return c != 0; 154 return c != 0;
153} 155}
154 156
155static inline int atomic_add_negative(int i, atomic_t *v) 157static inline int atomic_add_negative(int i, atomic_t *v)
156{ 158{
157 char c; 159 char c;
158 __asm__ __volatile__("addl %2,%1; smi %0" : "=d" (c), "+m" (*v): "g" (i)); 160 __asm__ __volatile__("addl %2,%1; smi %0"
161 : "=d" (c), "+m" (*v)
162 : "id" (i));
159 return c != 0; 163 return c != 0;
160} 164}
161 165
diff --git a/arch/m68k/include/asm/mcfuart.h b/arch/m68k/include/asm/mcfuart.h
index ef2293873612..01a8716c5fc5 100644
--- a/arch/m68k/include/asm/mcfuart.h
+++ b/arch/m68k/include/asm/mcfuart.h
@@ -212,5 +212,10 @@ struct mcf_platform_uart {
212#define MCFUART_URF_RXS 0xc0 /* Receiver status */ 212#define MCFUART_URF_RXS 0xc0 /* Receiver status */
213#endif 213#endif
214 214
215#if defined(CONFIG_M5272)
216#define MCFUART_TXFIFOSIZE 25
217#else
218#define MCFUART_TXFIFOSIZE 1
219#endif
215/****************************************************************************/ 220/****************************************************************************/
216#endif /* mcfuart_h */ 221#endif /* mcfuart_h */
diff --git a/arch/m68k/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext.h
index 1320eaa4cc2a..a29dd74a17cb 100644
--- a/arch/m68k/include/asm/sigcontext.h
+++ b/arch/m68k/include/asm/sigcontext.h
@@ -17,13 +17,11 @@ struct sigcontext {
17#ifndef __uClinux__ 17#ifndef __uClinux__
18# ifdef __mcoldfire__ 18# ifdef __mcoldfire__
19 unsigned long sc_fpregs[2][2]; /* room for two fp registers */ 19 unsigned long sc_fpregs[2][2]; /* room for two fp registers */
20 unsigned long sc_fpcntl[3];
21 unsigned char sc_fpstate[16+6*8];
22# else 20# else
23 unsigned long sc_fpregs[2*3]; /* room for two fp registers */ 21 unsigned long sc_fpregs[2*3]; /* room for two fp registers */
22# endif
24 unsigned long sc_fpcntl[3]; 23 unsigned long sc_fpcntl[3];
25 unsigned char sc_fpstate[216]; 24 unsigned char sc_fpstate[216];
26# endif
27#endif 25#endif
28}; 26};
29 27
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c
index 2bb4245404d8..4bbb3c2a8880 100644
--- a/arch/m68k/kernel/dma.c
+++ b/arch/m68k/kernel/dma.c
@@ -10,6 +10,7 @@
10#include <linux/device.h> 10#include <linux/device.h>
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/scatterlist.h> 12#include <linux/scatterlist.h>
13#include <linux/slab.h>
13#include <linux/vmalloc.h> 14#include <linux/vmalloc.h>
14 15
15#include <asm/pgalloc.h> 16#include <asm/pgalloc.h>
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c
index 17c3f325255d..1a6be27cf165 100644
--- a/arch/m68k/kernel/process.c
+++ b/arch/m68k/kernel/process.c
@@ -15,13 +15,13 @@
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/slab.h>
18#include <linux/fs.h> 19#include <linux/fs.h>
19#include <linux/smp.h> 20#include <linux/smp.h>
20#include <linux/smp_lock.h> 21#include <linux/smp_lock.h>
21#include <linux/stddef.h> 22#include <linux/stddef.h>
22#include <linux/unistd.h> 23#include <linux/unistd.h>
23#include <linux/ptrace.h> 24#include <linux/ptrace.h>
24#include <linux/slab.h>
25#include <linux/user.h> 25#include <linux/user.h>
26#include <linux/reboot.h> 26#include <linux/reboot.h>
27#include <linux/init_task.h> 27#include <linux/init_task.h>
diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c
index 5d818568b343..0f118ca156d9 100644
--- a/arch/m68k/mac/misc.c
+++ b/arch/m68k/mac/misc.c
@@ -8,7 +8,6 @@
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/delay.h> 9#include <linux/delay.h>
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/slab.h>
12#include <linux/time.h> 11#include <linux/time.h>
13#include <linux/rtc.h> 12#include <linux/rtc.h>
14#include <linux/mm.h> 13#include <linux/mm.h>
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c
index 774549accd2d..8bc842554e5b 100644
--- a/arch/m68k/mm/init.c
+++ b/arch/m68k/mm/init.c
@@ -17,6 +17,7 @@
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/bootmem.h> 19#include <linux/bootmem.h>
20#include <linux/gfp.h>
20 21
21#include <asm/setup.h> 22#include <asm/setup.h>
22#include <asm/uaccess.h> 23#include <asm/uaccess.h>
diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c
index b7473525b431..34c77ce24fba 100644
--- a/arch/m68k/mm/memory.c
+++ b/arch/m68k/mm/memory.c
@@ -9,9 +9,9 @@
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/slab.h>
13#include <linux/init.h> 12#include <linux/init.h>
14#include <linux/pagemap.h> 13#include <linux/pagemap.h>
14#include <linux/gfp.h>
15 15
16#include <asm/setup.h> 16#include <asm/setup.h>
17#include <asm/segment.h> 17#include <asm/segment.h>
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c
index 4665fc84b7dc..02b7a03e4226 100644
--- a/arch/m68k/mm/motorola.c
+++ b/arch/m68k/mm/motorola.c
@@ -18,6 +18,7 @@
18#include <linux/types.h> 18#include <linux/types.h>
19#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/bootmem.h> 20#include <linux/bootmem.h>
21#include <linux/gfp.h>
21 22
22#include <asm/setup.h> 23#include <asm/setup.h>
23#include <asm/uaccess.h> 24#include <asm/uaccess.h>
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c
index cea5e3e4e636..8da9c250d3e1 100644
--- a/arch/m68k/mvme16x/rtc.c
+++ b/arch/m68k/mvme16x/rtc.c
@@ -9,7 +9,6 @@
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/errno.h> 10#include <linux/errno.h>
11#include <linux/miscdevice.h> 11#include <linux/miscdevice.h>
12#include <linux/slab.h>
13#include <linux/smp_lock.h> 12#include <linux/smp_lock.h>
14#include <linux/ioport.h> 13#include <linux/ioport.h>
15#include <linux/capability.h> 14#include <linux/capability.h>
diff --git a/arch/m68k/sun3/sun3dvma.c b/arch/m68k/sun3/sun3dvma.c
index f9277e8b4159..ca0966cac72a 100644
--- a/arch/m68k/sun3/sun3dvma.c
+++ b/arch/m68k/sun3/sun3dvma.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/gfp.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
12#include <linux/list.h> 13#include <linux/list.h>
13 14
diff --git a/arch/m68k/sun3x/dvma.c b/arch/m68k/sun3x/dvma.c
index 117481e86305..d5ddcdaa2347 100644
--- a/arch/m68k/sun3x/dvma.c
+++ b/arch/m68k/sun3x/dvma.c
@@ -15,7 +15,6 @@
15#include <linux/bitops.h> 15#include <linux/bitops.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/bootmem.h> 17#include <linux/bootmem.h>
18#include <linux/slab.h>
19#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
20 19
21#include <asm/sun3x.h> 20#include <asm/sun3x.h>
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile
index ce404bc9ccbd..14042574ac21 100644
--- a/arch/m68knommu/Makefile
+++ b/arch/m68knommu/Makefile
@@ -94,7 +94,7 @@ cflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200)
94cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307) 94cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307)
95cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200) 95cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200)
96cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307) 96cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307)
97cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5271,-m5200) 97cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5272,-m5307)
98cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307) 98cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307)
99cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307) 99cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307)
100cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200) 100cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200)
diff --git a/arch/m68knommu/kernel/dma.c b/arch/m68knommu/kernel/dma.c
index aaf38bbbb6cd..fc61541aeb71 100644
--- a/arch/m68knommu/kernel/dma.c
+++ b/arch/m68knommu/kernel/dma.c
@@ -6,6 +6,7 @@
6 */ 6 */
7 7
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/gfp.h>
9#include <linux/mm.h> 10#include <linux/mm.h>
10#include <linux/device.h> 11#include <linux/device.h>
11#include <linux/dma-mapping.h> 12#include <linux/dma-mapping.h>
diff --git a/arch/m68knommu/kernel/entry.S b/arch/m68knommu/kernel/entry.S
index 56043ade3941..aff6f57ef8b5 100644
--- a/arch/m68knommu/kernel/entry.S
+++ b/arch/m68knommu/kernel/entry.S
@@ -145,6 +145,6 @@ ENTRY(ret_from_user_signal)
145 trap #0 145 trap #0
146 146
147ENTRY(ret_from_user_rt_signal) 147ENTRY(ret_from_user_rt_signal)
148 move #__NR_rt_sigreturn,%d0 148 movel #__NR_rt_sigreturn,%d0
149 trap #0 149 trap #0
150 150
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c
index 959cb249c759..6aa66134b433 100644
--- a/arch/m68knommu/kernel/process.c
+++ b/arch/m68knommu/kernel/process.c
@@ -23,11 +23,11 @@
23#include <linux/stddef.h> 23#include <linux/stddef.h>
24#include <linux/unistd.h> 24#include <linux/unistd.h>
25#include <linux/ptrace.h> 25#include <linux/ptrace.h>
26#include <linux/slab.h>
27#include <linux/user.h> 26#include <linux/user.h>
28#include <linux/interrupt.h> 27#include <linux/interrupt.h>
29#include <linux/reboot.h> 28#include <linux/reboot.h>
30#include <linux/fs.h> 29#include <linux/fs.h>
30#include <linux/slab.h>
31 31
32#include <asm/uaccess.h> 32#include <asm/uaccess.h>
33#include <asm/system.h> 33#include <asm/system.h>
diff --git a/arch/m68knommu/mm/init.c b/arch/m68knommu/mm/init.c
index f3236d0b522d..8a6653f56bd8 100644
--- a/arch/m68knommu/mm/init.c
+++ b/arch/m68knommu/mm/init.c
@@ -29,7 +29,7 @@
29#include <linux/highmem.h> 29#include <linux/highmem.h>
30#include <linux/pagemap.h> 30#include <linux/pagemap.h>
31#include <linux/bootmem.h> 31#include <linux/bootmem.h>
32#include <linux/slab.h> 32#include <linux/gfp.h>
33 33
34#include <asm/setup.h> 34#include <asm/setup.h>
35#include <asm/segment.h> 35#include <asm/segment.h>
diff --git a/arch/m68knommu/mm/kmap.c b/arch/m68knommu/mm/kmap.c
index bc32f38843f0..902c1dfda9e5 100644
--- a/arch/m68knommu/mm/kmap.c
+++ b/arch/m68knommu/mm/kmap.c
@@ -9,7 +9,6 @@
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/slab.h>
13#include <linux/vmalloc.h> 12#include <linux/vmalloc.h>
14 13
15#include <asm/setup.h> 14#include <asm/setup.h>
diff --git a/arch/m68knommu/mm/memory.c b/arch/m68knommu/mm/memory.c
index d5b9e1357808..8f7949e786d4 100644
--- a/arch/m68knommu/mm/memory.c
+++ b/arch/m68knommu/mm/memory.c
@@ -15,7 +15,6 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/slab.h>
19 18
20#include <asm/segment.h> 19#include <asm/segment.h>
21#include <asm/page.h> 20#include <asm/page.h>
diff --git a/arch/m68knommu/platform/68360/ints.c b/arch/m68knommu/platform/68360/ints.c
index 1143f77caca4..6f22970d8c20 100644
--- a/arch/m68knommu/platform/68360/ints.c
+++ b/arch/m68knommu/platform/68360/ints.c
@@ -107,7 +107,6 @@ void init_IRQ(void)
107 _ramvec[vba+CPMVEC_PIO_PC7] = inthandler; /* pio - pc7 */ 107 _ramvec[vba+CPMVEC_PIO_PC7] = inthandler; /* pio - pc7 */
108 _ramvec[vba+CPMVEC_PIO_PC6] = inthandler; /* pio - pc6 */ 108 _ramvec[vba+CPMVEC_PIO_PC6] = inthandler; /* pio - pc6 */
109 _ramvec[vba+CPMVEC_TIMER3] = inthandler; /* timer 3 */ 109 _ramvec[vba+CPMVEC_TIMER3] = inthandler; /* timer 3 */
110 _ramvec[vba+CPMVEC_RISCTIMER] = inthandler; /* reserved */
111 _ramvec[vba+CPMVEC_PIO_PC5] = inthandler; /* pio - pc5 */ 110 _ramvec[vba+CPMVEC_PIO_PC5] = inthandler; /* pio - pc5 */
112 _ramvec[vba+CPMVEC_PIO_PC4] = inthandler; /* pio - pc4 */ 111 _ramvec[vba+CPMVEC_PIO_PC4] = inthandler; /* pio - pc4 */
113 _ramvec[vba+CPMVEC_RESERVED2] = inthandler; /* reserved */ 112 _ramvec[vba+CPMVEC_RESERVED2] = inthandler; /* reserved */
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index b008168ae946..76818f926539 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -14,6 +14,8 @@ config MICROBLAZE
14 select USB_ARCH_HAS_EHCI 14 select USB_ARCH_HAS_EHCI
15 select ARCH_WANT_OPTIONAL_GPIOLIB 15 select ARCH_WANT_OPTIONAL_GPIOLIB
16 select HAVE_OPROFILE 16 select HAVE_OPROFILE
17 select HAVE_DMA_ATTRS
18 select HAVE_DMA_API_DEBUG
17 select TRACING_SUPPORT 19 select TRACING_SUPPORT
18 20
19config SWAP 21config SWAP
@@ -73,12 +75,6 @@ config LOCKDEP_SUPPORT
73config HAVE_LATENCYTOP_SUPPORT 75config HAVE_LATENCYTOP_SUPPORT
74 def_bool y 76 def_bool y
75 77
76config PCI
77 def_bool n
78
79config NO_DMA
80 def_bool y
81
82config DTC 78config DTC
83 def_bool y 79 def_bool y
84 80
@@ -146,7 +142,6 @@ menu "Advanced setup"
146 142
147config ADVANCED_OPTIONS 143config ADVANCED_OPTIONS
148 bool "Prompt for advanced kernel configuration options" 144 bool "Prompt for advanced kernel configuration options"
149 depends on MMU
150 help 145 help
151 This option will enable prompting for a variety of advanced kernel 146 This option will enable prompting for a variety of advanced kernel
152 configuration options. These options can cause the kernel to not 147 configuration options. These options can cause the kernel to not
@@ -158,6 +153,15 @@ config ADVANCED_OPTIONS
158comment "Default settings for advanced configuration options are used" 153comment "Default settings for advanced configuration options are used"
159 depends on !ADVANCED_OPTIONS 154 depends on !ADVANCED_OPTIONS
160 155
156config XILINX_UNCACHED_SHADOW
157 bool "Are you using uncached shadow for RAM ?"
158 depends on ADVANCED_OPTIONS && !MMU
159 default n
160 help
161 This is needed to be able to allocate uncachable memory regions.
162 The feature requires the design to define the RAM memory controller
163 window to be twice as large as the actual physical memory.
164
161config HIGHMEM_START_BOOL 165config HIGHMEM_START_BOOL
162 bool "Set high memory pool address" 166 bool "Set high memory pool address"
163 depends on ADVANCED_OPTIONS && HIGHMEM 167 depends on ADVANCED_OPTIONS && HIGHMEM
@@ -175,7 +179,7 @@ config HIGHMEM_START
175 179
176config LOWMEM_SIZE_BOOL 180config LOWMEM_SIZE_BOOL
177 bool "Set maximum low memory" 181 bool "Set maximum low memory"
178 depends on ADVANCED_OPTIONS 182 depends on ADVANCED_OPTIONS && MMU
179 help 183 help
180 This option allows you to set the maximum amount of memory which 184 This option allows you to set the maximum amount of memory which
181 will be used as "low memory", that is, memory which the kernel can 185 will be used as "low memory", that is, memory which the kernel can
@@ -187,7 +191,6 @@ config LOWMEM_SIZE_BOOL
187 191
188config LOWMEM_SIZE 192config LOWMEM_SIZE
189 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL 193 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
190 depends on MMU
191 default "0x30000000" 194 default "0x30000000"
192 195
193config KERNEL_START_BOOL 196config KERNEL_START_BOOL
@@ -208,7 +211,7 @@ config KERNEL_START
208 211
209config TASK_SIZE_BOOL 212config TASK_SIZE_BOOL
210 bool "Set custom user task size" 213 bool "Set custom user task size"
211 depends on ADVANCED_OPTIONS 214 depends on ADVANCED_OPTIONS && MMU
212 help 215 help
213 This option allows you to set the amount of virtual address space 216 This option allows you to set the amount of virtual address space
214 allocated to user tasks. This can be useful in optimizing the 217 allocated to user tasks. This can be useful in optimizing the
@@ -218,42 +221,34 @@ config TASK_SIZE_BOOL
218 221
219config TASK_SIZE 222config TASK_SIZE
220 hex "Size of user task space" if TASK_SIZE_BOOL 223 hex "Size of user task space" if TASK_SIZE_BOOL
221 depends on MMU
222 default "0x80000000" 224 default "0x80000000"
223 225
224config CONSISTENT_START_BOOL 226endmenu
225 bool "Set custom consistent memory pool address"
226 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
227 help
228 This option allows you to set the base virtual address
229 of the the consistent memory pool. This pool of virtual
230 memory is used to make consistent memory allocations.
231 227
232config CONSISTENT_START 228source "mm/Kconfig"
233 hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL
234 depends on MMU
235 default "0xff100000" if NOT_COHERENT_CACHE
236 229
237config CONSISTENT_SIZE_BOOL 230menu "Exectuable file formats"
238 bool "Set custom consistent memory pool size"
239 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
240 help
241 This option allows you to set the size of the the
242 consistent memory pool. This pool of virtual memory
243 is used to make consistent memory allocations.
244 231
245config CONSISTENT_SIZE 232source "fs/Kconfig.binfmt"
246 hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
247 depends on MMU
248 default "0x00200000" if NOT_COHERENT_CACHE
249 233
250endmenu 234endmenu
251 235
252source "mm/Kconfig" 236menu "Bus Options"
253 237
254menu "Exectuable file formats" 238config PCI
239 bool "PCI support"
255 240
256source "fs/Kconfig.binfmt" 241config PCI_DOMAINS
242 def_bool PCI
243
244config PCI_SYSCALL
245 def_bool PCI
246
247config PCI_XILINX
248 bool "Xilinx PCI host bridge support"
249 depends on PCI
250
251source "drivers/pci/Kconfig"
257 252
258endmenu 253endmenu
259 254
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
index d2d6cfcb1a30..72f6e8583746 100644
--- a/arch/microblaze/Makefile
+++ b/arch/microblaze/Makefile
@@ -50,6 +50,7 @@ libs-y += $(LIBGCC)
50core-y += arch/microblaze/kernel/ 50core-y += arch/microblaze/kernel/
51core-y += arch/microblaze/mm/ 51core-y += arch/microblaze/mm/
52core-y += arch/microblaze/platform/ 52core-y += arch/microblaze/platform/
53core-$(CONFIG_PCI) += arch/microblaze/pci/
53 54
54drivers-$(CONFIG_OPROFILE) += arch/microblaze/oprofile/ 55drivers-$(CONFIG_OPROFILE) += arch/microblaze/oprofile/
55 56
@@ -83,7 +84,7 @@ define archhelp
83 echo '* linux.bin - Create raw binary' 84 echo '* linux.bin - Create raw binary'
84 echo ' linux.bin.gz - Create compressed raw binary' 85 echo ' linux.bin.gz - Create compressed raw binary'
85 echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in' 86 echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in'
86 echo ' - stripped elf with fdt blob 87 echo ' - stripped elf with fdt blob'
87 echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob' 88 echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob'
88 echo ' *_defconfig - Select default config from arch/microblaze/configs' 89 echo ' *_defconfig - Select default config from arch/microblaze/configs'
89 echo '' 90 echo ''
@@ -93,3 +94,5 @@ define archhelp
93 echo ' name of a dts file from the arch/microblaze/boot/dts/ directory' 94 echo ' name of a dts file from the arch/microblaze/boot/dts/ directory'
94 echo ' (minus the .dts extension).' 95 echo ' (minus the .dts extension).'
95endef 96endef
97
98MRPROPER_FILES += $(boot)/simpleImage.*
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
index 902cf9846c3c..57f50c2371c6 100644
--- a/arch/microblaze/boot/Makefile
+++ b/arch/microblaze/boot/Makefile
@@ -23,8 +23,6 @@ $(obj)/system.dtb: $(obj)/$(DTB).dtb
23endif 23endif
24 24
25$(obj)/linux.bin: vmlinux FORCE 25$(obj)/linux.bin: vmlinux FORCE
26 [ -n $(CONFIG_INITRAMFS_SOURCE) ] && [ ! -e $(CONFIG_INITRAMFS_SOURCE) ] && \
27 touch $(CONFIG_INITRAMFS_SOURCE) || echo "No CPIO image"
28 $(call if_changed,objcopy) 26 $(call if_changed,objcopy)
29 $(call if_changed,uimage) 27 $(call if_changed,uimage)
30 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')' 28 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
@@ -62,6 +60,4 @@ quiet_cmd_dtc = DTC $@
62$(obj)/%.dtb: $(dtstree)/%.dts FORCE 60$(obj)/%.dtb: $(dtstree)/%.dts FORCE
63 $(call if_changed,dtc) 61 $(call if_changed,dtc)
64 62
65clean-kernel += linux.bin linux.bin.gz simpleImage.* 63clean-files += *.dtb simpleImage.*.unstrip linux.bin.ub
66
67clean-files += *.dtb simpleImage.*.unstrip
diff --git a/arch/microblaze/include/asm/device.h b/arch/microblaze/include/asm/device.h
index 78a038452c0f..402b46e630f6 100644
--- a/arch/microblaze/include/asm/device.h
+++ b/arch/microblaze/include/asm/device.h
@@ -14,6 +14,10 @@ struct device_node;
14struct dev_archdata { 14struct dev_archdata {
15 /* Optional pointer to an OF device node */ 15 /* Optional pointer to an OF device node */
16 struct device_node *of_node; 16 struct device_node *of_node;
17
18 /* DMA operations on that device */
19 struct dma_map_ops *dma_ops;
20 void *dma_data;
17}; 21};
18 22
19struct pdev_archdata { 23struct pdev_archdata {
diff --git a/arch/microblaze/include/asm/dma-mapping.h b/arch/microblaze/include/asm/dma-mapping.h
index d00e40099165..18b3731c8509 100644
--- a/arch/microblaze/include/asm/dma-mapping.h
+++ b/arch/microblaze/include/asm/dma-mapping.h
@@ -1 +1,153 @@
1#include <asm-generic/dma-mapping-broken.h> 1/*
2 * Implements the generic device dma API for microblaze and the pci
3 *
4 * Copyright (C) 2009-2010 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2009-2010 PetaLogix
6 *
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
10 *
11 * This file is base on powerpc and x86 dma-mapping.h versions
12 * Copyright (C) 2004 IBM
13 */
14
15#ifndef _ASM_MICROBLAZE_DMA_MAPPING_H
16#define _ASM_MICROBLAZE_DMA_MAPPING_H
17
18/*
19 * See Documentation/PCI/PCI-DMA-mapping.txt and
20 * Documentation/DMA-API.txt for documentation.
21 */
22
23#include <linux/types.h>
24#include <linux/cache.h>
25#include <linux/mm.h>
26#include <linux/scatterlist.h>
27#include <linux/dma-debug.h>
28#include <linux/dma-attrs.h>
29#include <asm/io.h>
30#include <asm-generic/dma-coherent.h>
31
32#define DMA_ERROR_CODE (~(dma_addr_t)0x0)
33
34#define __dma_alloc_coherent(dev, gfp, size, handle) NULL
35#define __dma_free_coherent(size, addr) ((void)0)
36#define __dma_sync(addr, size, rw) ((void)0)
37
38static inline unsigned long device_to_mask(struct device *dev)
39{
40 if (dev->dma_mask && *dev->dma_mask)
41 return *dev->dma_mask;
42 /* Assume devices without mask can take 32 bit addresses */
43 return 0xfffffffful;
44}
45
46extern struct dma_map_ops *dma_ops;
47
48/*
49 * Available generic sets of operations
50 */
51extern struct dma_map_ops dma_direct_ops;
52
53static inline struct dma_map_ops *get_dma_ops(struct device *dev)
54{
55 /* We don't handle the NULL dev case for ISA for now. We could
56 * do it via an out of line call but it is not needed for now. The
57 * only ISA DMA device we support is the floppy and we have a hack
58 * in the floppy driver directly to get a device for us.
59 */
60 if (unlikely(!dev) || !dev->archdata.dma_ops)
61 return NULL;
62
63 return dev->archdata.dma_ops;
64}
65
66static inline void set_dma_ops(struct device *dev, struct dma_map_ops *ops)
67{
68 dev->archdata.dma_ops = ops;
69}
70
71static inline int dma_supported(struct device *dev, u64 mask)
72{
73 struct dma_map_ops *ops = get_dma_ops(dev);
74
75 if (unlikely(!ops))
76 return 0;
77 if (!ops->dma_supported)
78 return 1;
79 return ops->dma_supported(dev, mask);
80}
81
82#ifdef CONFIG_PCI
83/* We have our own implementation of pci_set_dma_mask() */
84#define HAVE_ARCH_PCI_SET_DMA_MASK
85
86#endif
87
88static inline int dma_set_mask(struct device *dev, u64 dma_mask)
89{
90 struct dma_map_ops *ops = get_dma_ops(dev);
91
92 if (unlikely(ops == NULL))
93 return -EIO;
94 if (ops->set_dma_mask)
95 return ops->set_dma_mask(dev, dma_mask);
96 if (!dev->dma_mask || !dma_supported(dev, dma_mask))
97 return -EIO;
98 *dev->dma_mask = dma_mask;
99 return 0;
100}
101
102#include <asm-generic/dma-mapping-common.h>
103
104static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
105{
106 struct dma_map_ops *ops = get_dma_ops(dev);
107 if (ops->mapping_error)
108 return ops->mapping_error(dev, dma_addr);
109
110 return (dma_addr == DMA_ERROR_CODE);
111}
112
113#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
114#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
115#define dma_is_consistent(d, h) (1)
116
117static inline void *dma_alloc_coherent(struct device *dev, size_t size,
118 dma_addr_t *dma_handle, gfp_t flag)
119{
120 struct dma_map_ops *ops = get_dma_ops(dev);
121 void *memory;
122
123 BUG_ON(!ops);
124
125 memory = ops->alloc_coherent(dev, size, dma_handle, flag);
126
127 debug_dma_alloc_coherent(dev, size, *dma_handle, memory);
128 return memory;
129}
130
131static inline void dma_free_coherent(struct device *dev, size_t size,
132 void *cpu_addr, dma_addr_t dma_handle)
133{
134 struct dma_map_ops *ops = get_dma_ops(dev);
135
136 BUG_ON(!ops);
137 debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
138 ops->free_coherent(dev, size, cpu_addr, dma_handle);
139}
140
141static inline int dma_get_cache_alignment(void)
142{
143 return L1_CACHE_BYTES;
144}
145
146static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
147 enum dma_data_direction direction)
148{
149 BUG_ON(direction == DMA_NONE);
150 __dma_sync(vaddr, size, (int)direction);
151}
152
153#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
diff --git a/arch/microblaze/include/asm/futex.h b/arch/microblaze/include/asm/futex.h
index 8dbb6e7a03a2..ad3fd61b2fe7 100644
--- a/arch/microblaze/include/asm/futex.h
+++ b/arch/microblaze/include/asm/futex.h
@@ -55,7 +55,7 @@ futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
55 __futex_atomic_op("or %1,%0,%4;", ret, oldval, uaddr, oparg); 55 __futex_atomic_op("or %1,%0,%4;", ret, oldval, uaddr, oparg);
56 break; 56 break;
57 case FUTEX_OP_ANDN: 57 case FUTEX_OP_ANDN:
58 __futex_atomic_op("and %1,%0,%4;", ret, oldval, uaddr, oparg); 58 __futex_atomic_op("andn %1,%0,%4;", ret, oldval, uaddr, oparg);
59 break; 59 break;
60 case FUTEX_OP_XOR: 60 case FUTEX_OP_XOR:
61 __futex_atomic_op("xor %1,%0,%4;", ret, oldval, uaddr, oparg); 61 __futex_atomic_op("xor %1,%0,%4;", ret, oldval, uaddr, oparg);
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index 267c7c779e53..e45a6eea92e0 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -15,7 +15,23 @@
15#include <asm/page.h> 15#include <asm/page.h>
16#include <linux/types.h> 16#include <linux/types.h>
17#include <linux/mm.h> /* Get struct page {...} */ 17#include <linux/mm.h> /* Get struct page {...} */
18#include <asm-generic/iomap.h>
18 19
20#ifndef CONFIG_PCI
21#define _IO_BASE 0
22#define _ISA_MEM_BASE 0
23#define PCI_DRAM_OFFSET 0
24#else
25#define _IO_BASE isa_io_base
26#define _ISA_MEM_BASE isa_mem_base
27#define PCI_DRAM_OFFSET pci_dram_offset
28#endif
29
30extern unsigned long isa_io_base;
31extern unsigned long pci_io_base;
32extern unsigned long pci_dram_offset;
33
34extern resource_size_t isa_mem_base;
19 35
20#define IO_SPACE_LIMIT (0xFFFFFFFF) 36#define IO_SPACE_LIMIT (0xFFFFFFFF)
21 37
@@ -92,6 +108,11 @@ static inline void writel(unsigned int v, volatile void __iomem *addr)
92#define iowrite16(v, addr) __raw_writew((u16)(v), (u16 *)(addr)) 108#define iowrite16(v, addr) __raw_writew((u16)(v), (u16 *)(addr))
93#define iowrite32(v, addr) __raw_writel((u32)(v), (u32 *)(addr)) 109#define iowrite32(v, addr) __raw_writel((u32)(v), (u32 *)(addr))
94 110
111#define ioread16be(addr) __raw_readw((u16 *)(addr))
112#define ioread32be(addr) __raw_readl((u32 *)(addr))
113#define iowrite16be(v, addr) __raw_writew((u16)(v), (u16 *)(addr))
114#define iowrite32be(v, addr) __raw_writel((u32)(v), (u32 *)(addr))
115
95/* These are the definitions for the x86 IO instructions 116/* These are the definitions for the x86 IO instructions
96 * inb/inw/inl/outb/outw/outl, the "string" versions 117 * inb/inw/inl/outb/outw/outl, the "string" versions
97 * insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions 118 * insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions
@@ -124,9 +145,6 @@ static inline void writel(unsigned int v, volatile void __iomem *addr)
124#define virt_to_phys(addr) ((unsigned long)__virt_to_phys(addr)) 145#define virt_to_phys(addr) ((unsigned long)__virt_to_phys(addr))
125#define virt_to_bus(addr) ((unsigned long)__virt_to_phys(addr)) 146#define virt_to_bus(addr) ((unsigned long)__virt_to_phys(addr))
126 147
127#define __page_address(page) \
128 (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
129#define page_to_phys(page) virt_to_phys((void *)__page_address(page))
130#define page_to_bus(page) (page_to_phys(page)) 148#define page_to_bus(page) (page_to_phys(page))
131#define bus_to_virt(addr) (phys_to_virt(addr)) 149#define bus_to_virt(addr) (phys_to_virt(addr))
132 150
@@ -227,15 +245,7 @@ static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
227#define out_8(a, v) __raw_writeb((v), (a)) 245#define out_8(a, v) __raw_writeb((v), (a))
228#define in_8(a) __raw_readb(a) 246#define in_8(a) __raw_readb(a)
229 247
230/* FIXME */ 248#define ioport_map(port, nr) ((void __iomem *)(port))
231static inline void __iomem *ioport_map(unsigned long port, unsigned int len) 249#define ioport_unmap(addr)
232{
233 return (void __iomem *) (port);
234}
235
236static inline void ioport_unmap(void __iomem *addr)
237{
238 /* Nothing to do */
239}
240 250
241#endif /* _ASM_MICROBLAZE_IO_H */ 251#endif /* _ASM_MICROBLAZE_IO_H */
diff --git a/arch/microblaze/include/asm/irq.h b/arch/microblaze/include/asm/irq.h
index 90f050535ebe..31a35c33df63 100644
--- a/arch/microblaze/include/asm/irq.h
+++ b/arch/microblaze/include/asm/irq.h
@@ -14,6 +14,12 @@
14 14
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16 16
17/* This type is the placeholder for a hardware interrupt number. It has to
18 * be big enough to enclose whatever representation is used by a given
19 * platform.
20 */
21typedef unsigned long irq_hw_number_t;
22
17extern unsigned int nr_irq; 23extern unsigned int nr_irq;
18 24
19#define NO_IRQ (-1) 25#define NO_IRQ (-1)
@@ -21,7 +27,8 @@ extern unsigned int nr_irq;
21struct pt_regs; 27struct pt_regs;
22extern void do_IRQ(struct pt_regs *regs); 28extern void do_IRQ(struct pt_regs *regs);
23 29
24/* irq_of_parse_and_map - Parse and Map an interrupt into linux virq space 30/**
31 * irq_of_parse_and_map - Parse and Map an interrupt into linux virq space
25 * @device: Device node of the device whose interrupt is to be mapped 32 * @device: Device node of the device whose interrupt is to be mapped
26 * @index: Index of the interrupt to map 33 * @index: Index of the interrupt to map
27 * 34 *
@@ -40,4 +47,32 @@ static inline void irq_dispose_mapping(unsigned int virq)
40 return; 47 return;
41} 48}
42 49
50struct irq_host;
51
52/**
53 * irq_create_mapping - Map a hardware interrupt into linux virq space
54 * @host: host owning this hardware interrupt or NULL for default host
55 * @hwirq: hardware irq number in that host space
56 *
57 * Only one mapping per hardware interrupt is permitted. Returns a linux
58 * virq number.
59 * If the sense/trigger is to be specified, set_irq_type() should be called
60 * on the number returned from that call.
61 */
62extern unsigned int irq_create_mapping(struct irq_host *host,
63 irq_hw_number_t hwirq);
64
65/**
66 * irq_create_of_mapping - Map a hardware interrupt into linux virq space
67 * @controller: Device node of the interrupt controller
68 * @inspec: Interrupt specifier from the device-tree
69 * @intsize: Size of the interrupt specifier from the device-tree
70 *
71 * This function is identical to irq_create_mapping except that it takes
72 * as input informations straight from the device-tree (typically the results
73 * of the of_irq_map_*() functions.
74 */
75extern unsigned int irq_create_of_mapping(struct device_node *controller,
76 u32 *intspec, unsigned int intsize);
77
43#endif /* _ASM_MICROBLAZE_IRQ_H */ 78#endif /* _ASM_MICROBLAZE_IRQ_H */
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h
index 9b66c0fa9a32..2dd1d04129e0 100644
--- a/arch/microblaze/include/asm/page.h
+++ b/arch/microblaze/include/asm/page.h
@@ -62,12 +62,6 @@ extern unsigned int __page_offset;
62#define PAGE_OFFSET CONFIG_KERNEL_START 62#define PAGE_OFFSET CONFIG_KERNEL_START
63 63
64/* 64/*
65 * MAP_NR -- given an address, calculate the index of the page struct which
66 * points to the address's page.
67 */
68#define MAP_NR(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> PAGE_SHIFT)
69
70/*
71 * The basic type of a PTE - 32 bit physical addressing. 65 * The basic type of a PTE - 32 bit physical addressing.
72 */ 66 */
73typedef unsigned long pte_basic_t; 67typedef unsigned long pte_basic_t;
@@ -154,7 +148,11 @@ extern int page_is_ram(unsigned long pfn);
154# define pfn_to_virt(pfn) __va(pfn_to_phys((pfn))) 148# define pfn_to_virt(pfn) __va(pfn_to_phys((pfn)))
155 149
156# ifdef CONFIG_MMU 150# ifdef CONFIG_MMU
157# define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr)) 151
152# define virt_to_page(kaddr) (pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
153# define page_to_virt(page) __va(page_to_pfn(page) << PAGE_SHIFT)
154# define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
155
158# else /* CONFIG_MMU */ 156# else /* CONFIG_MMU */
159# define virt_to_page(vaddr) (pfn_to_page(virt_to_pfn(vaddr))) 157# define virt_to_page(vaddr) (pfn_to_page(virt_to_pfn(vaddr)))
160# define page_to_virt(page) (pfn_to_virt(page_to_pfn(page))) 158# define page_to_virt(page) (pfn_to_virt(page_to_pfn(page)))
diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
index 7ad28f6f5f1a..0c77cda9f5d8 100644
--- a/arch/microblaze/include/asm/pci-bridge.h
+++ b/arch/microblaze/include/asm/pci-bridge.h
@@ -1 +1,196 @@
1#ifndef _ASM_MICROBLAZE_PCI_BRIDGE_H
2#define _ASM_MICROBLAZE_PCI_BRIDGE_H
3#ifdef __KERNEL__
4/*
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version
8 * 2 of the License, or (at your option) any later version.
9 */
1#include <linux/pci.h> 10#include <linux/pci.h>
11#include <linux/list.h>
12#include <linux/ioport.h>
13
14struct device_node;
15
16enum {
17 /* Force re-assigning all resources (ignore firmware
18 * setup completely)
19 */
20 PCI_REASSIGN_ALL_RSRC = 0x00000001,
21
22 /* Re-assign all bus numbers */
23 PCI_REASSIGN_ALL_BUS = 0x00000002,
24
25 /* Do not try to assign, just use existing setup */
26 PCI_PROBE_ONLY = 0x00000004,
27
28 /* Don't bother with ISA alignment unless the bridge has
29 * ISA forwarding enabled
30 */
31 PCI_CAN_SKIP_ISA_ALIGN = 0x00000008,
32
33 /* Enable domain numbers in /proc */
34 PCI_ENABLE_PROC_DOMAINS = 0x00000010,
35 /* ... except for domain 0 */
36 PCI_COMPAT_DOMAIN_0 = 0x00000020,
37};
38
39/*
40 * Structure of a PCI controller (host bridge)
41 */
42struct pci_controller {
43 struct pci_bus *bus;
44 char is_dynamic;
45 struct device_node *dn;
46 struct list_head list_node;
47 struct device *parent;
48
49 int first_busno;
50 int last_busno;
51
52 int self_busno;
53
54 void __iomem *io_base_virt;
55 resource_size_t io_base_phys;
56
57 resource_size_t pci_io_size;
58
59 /* Some machines (PReP) have a non 1:1 mapping of
60 * the PCI memory space in the CPU bus space
61 */
62 resource_size_t pci_mem_offset;
63
64 /* Some machines have a special region to forward the ISA
65 * "memory" cycles such as VGA memory regions. Left to 0
66 * if unsupported
67 */
68 resource_size_t isa_mem_phys;
69 resource_size_t isa_mem_size;
70
71 struct pci_ops *ops;
72 unsigned int __iomem *cfg_addr;
73 void __iomem *cfg_data;
74
75 /*
76 * Used for variants of PCI indirect handling and possible quirks:
77 * SET_CFG_TYPE - used on 4xx or any PHB that does explicit type0/1
78 * EXT_REG - provides access to PCI-e extended registers
79 * SURPRESS_PRIMARY_BUS - we surpress the setting of PCI_PRIMARY_BUS
80 * on Freescale PCI-e controllers since they used the PCI_PRIMARY_BUS
81 * to determine which bus number to match on when generating type0
82 * config cycles
83 * NO_PCIE_LINK - the Freescale PCI-e controllers have issues with
84 * hanging if we don't have link and try to do config cycles to
85 * anything but the PHB. Only allow talking to the PHB if this is
86 * set.
87 * BIG_ENDIAN - cfg_addr is a big endian register
88 * BROKEN_MRM - the 440EPx/GRx chips have an errata that causes hangs
89 * on the PLB4. Effectively disable MRM commands by setting this.
90 */
91#define INDIRECT_TYPE_SET_CFG_TYPE 0x00000001
92#define INDIRECT_TYPE_EXT_REG 0x00000002
93#define INDIRECT_TYPE_SURPRESS_PRIMARY_BUS 0x00000004
94#define INDIRECT_TYPE_NO_PCIE_LINK 0x00000008
95#define INDIRECT_TYPE_BIG_ENDIAN 0x00000010
96#define INDIRECT_TYPE_BROKEN_MRM 0x00000020
97 u32 indirect_type;
98
99 /* Currently, we limit ourselves to 1 IO range and 3 mem
100 * ranges since the common pci_bus structure can't handle more
101 */
102 struct resource io_resource;
103 struct resource mem_resources[3];
104 int global_number; /* PCI domain number */
105};
106
107static inline struct pci_controller *pci_bus_to_host(const struct pci_bus *bus)
108{
109 return bus->sysdata;
110}
111
112static inline int isa_vaddr_is_ioport(void __iomem *address)
113{
114 /* No specific ISA handling on ppc32 at this stage, it
115 * all goes through PCI
116 */
117 return 0;
118}
119
120/* These are used for config access before all the PCI probing
121 has been done. */
122extern int early_read_config_byte(struct pci_controller *hose, int bus,
123 int dev_fn, int where, u8 *val);
124extern int early_read_config_word(struct pci_controller *hose, int bus,
125 int dev_fn, int where, u16 *val);
126extern int early_read_config_dword(struct pci_controller *hose, int bus,
127 int dev_fn, int where, u32 *val);
128extern int early_write_config_byte(struct pci_controller *hose, int bus,
129 int dev_fn, int where, u8 val);
130extern int early_write_config_word(struct pci_controller *hose, int bus,
131 int dev_fn, int where, u16 val);
132extern int early_write_config_dword(struct pci_controller *hose, int bus,
133 int dev_fn, int where, u32 val);
134
135extern int early_find_capability(struct pci_controller *hose, int bus,
136 int dev_fn, int cap);
137
138extern void setup_indirect_pci(struct pci_controller *hose,
139 resource_size_t cfg_addr,
140 resource_size_t cfg_data, u32 flags);
141
142/* Get the PCI host controller for an OF device */
143extern struct pci_controller *pci_find_hose_for_OF_device(
144 struct device_node *node);
145
146/* Fill up host controller resources from the OF node */
147extern void pci_process_bridge_OF_ranges(struct pci_controller *hose,
148 struct device_node *dev, int primary);
149
150/* Allocate & free a PCI host bridge structure */
151extern struct pci_controller *pcibios_alloc_controller(struct device_node *dev);
152extern void pcibios_free_controller(struct pci_controller *phb);
153extern void pcibios_setup_phb_resources(struct pci_controller *hose);
154
155#ifdef CONFIG_PCI
156extern unsigned int pci_flags;
157
158static inline void pci_set_flags(int flags)
159{
160 pci_flags = flags;
161}
162
163static inline void pci_add_flags(int flags)
164{
165 pci_flags |= flags;
166}
167
168static inline int pci_has_flag(int flag)
169{
170 return pci_flags & flag;
171}
172
173extern struct list_head hose_list;
174
175extern unsigned long pci_address_to_pio(phys_addr_t address);
176extern int pcibios_vaddr_is_ioport(void __iomem *address);
177#else
178static inline unsigned long pci_address_to_pio(phys_addr_t address)
179{
180 return (unsigned long)-1;
181}
182static inline int pcibios_vaddr_is_ioport(void __iomem *address)
183{
184 return 0;
185}
186
187static inline void pci_set_flags(int flags) { }
188static inline void pci_add_flags(int flags) { }
189static inline int pci_has_flag(int flag)
190{
191 return 0;
192}
193#endif /* CONFIG_PCI */
194
195#endif /* __KERNEL__ */
196#endif /* _ASM_MICROBLAZE_PCI_BRIDGE_H */
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
index 9f0df5faf2c8..bdd65aaee30d 100644
--- a/arch/microblaze/include/asm/pci.h
+++ b/arch/microblaze/include/asm/pci.h
@@ -1 +1,177 @@
1#include <asm-generic/pci.h> 1/*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public License
4 * as published by the Free Software Foundation; either version
5 * 2 of the License, or (at your option) any later version.
6 *
7 * Based on powerpc version
8 */
9
10#ifndef __ASM_MICROBLAZE_PCI_H
11#define __ASM_MICROBLAZE_PCI_H
12#ifdef __KERNEL__
13
14#include <linux/types.h>
15#include <linux/slab.h>
16#include <linux/string.h>
17#include <linux/dma-mapping.h>
18#include <linux/pci.h>
19
20#include <asm/scatterlist.h>
21#include <asm/io.h>
22#include <asm/prom.h>
23#include <asm/pci-bridge.h>
24
25#define PCIBIOS_MIN_IO 0x1000
26#define PCIBIOS_MIN_MEM 0x10000000
27
28struct pci_dev;
29
30/* Values for the `which' argument to sys_pciconfig_iobase syscall. */
31#define IOBASE_BRIDGE_NUMBER 0
32#define IOBASE_MEMORY 1
33#define IOBASE_IO 2
34#define IOBASE_ISA_IO 3
35#define IOBASE_ISA_MEM 4
36
37#define pcibios_scan_all_fns(a, b) 0
38
39/*
40 * Set this to 1 if you want the kernel to re-assign all PCI
41 * bus numbers (don't do that on ppc64 yet !)
42 */
43#define pcibios_assign_all_busses() \
44 (pci_has_flag(PCI_REASSIGN_ALL_BUS))
45
46static inline void pcibios_set_master(struct pci_dev *dev)
47{
48 /* No special bus mastering setup handling */
49}
50
51static inline void pcibios_penalize_isa_irq(int irq, int active)
52{
53 /* We don't do dynamic PCI IRQ allocation */
54}
55
56#ifdef CONFIG_PCI
57extern void set_pci_dma_ops(struct dma_map_ops *dma_ops);
58extern struct dma_map_ops *get_pci_dma_ops(void);
59#else /* CONFIG_PCI */
60#define set_pci_dma_ops(d)
61#define get_pci_dma_ops() NULL
62#endif
63
64#ifdef CONFIG_PCI
65static inline void pci_dma_burst_advice(struct pci_dev *pdev,
66 enum pci_dma_burst_strategy *strat,
67 unsigned long *strategy_parameter)
68{
69 *strat = PCI_DMA_BURST_INFINITY;
70 *strategy_parameter = ~0UL;
71}
72#endif
73
74extern int pci_domain_nr(struct pci_bus *bus);
75
76/* Decide whether to display the domain number in /proc */
77extern int pci_proc_domain(struct pci_bus *bus);
78
79struct vm_area_struct;
80/* Map a range of PCI memory or I/O space for a device into user space */
81int pci_mmap_page_range(struct pci_dev *pdev, struct vm_area_struct *vma,
82 enum pci_mmap_state mmap_state, int write_combine);
83
84/* Tell drivers/pci/proc.c that we have pci_mmap_page_range() */
85#define HAVE_PCI_MMAP 1
86
87extern int pci_legacy_read(struct pci_bus *bus, loff_t port, u32 *val,
88 size_t count);
89extern int pci_legacy_write(struct pci_bus *bus, loff_t port, u32 val,
90 size_t count);
91extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
92 struct vm_area_struct *vma,
93 enum pci_mmap_state mmap_state);
94
95#define HAVE_PCI_LEGACY 1
96
97/* pci_unmap_{page,single} is a nop so... */
98#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
99#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)
100#define pci_unmap_addr(PTR, ADDR_NAME) (0)
101#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0)
102#define pci_unmap_len(PTR, LEN_NAME) (0)
103#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
104
105/* The PCI address space does equal the physical memory
106 * address space (no IOMMU). The IDE and SCSI device layers use
107 * this boolean for bounce buffer decisions.
108 */
109#define PCI_DMA_BUS_IS_PHYS (1)
110
111extern void pcibios_resource_to_bus(struct pci_dev *dev,
112 struct pci_bus_region *region,
113 struct resource *res);
114
115extern void pcibios_bus_to_resource(struct pci_dev *dev,
116 struct resource *res,
117 struct pci_bus_region *region);
118
119static inline struct resource *pcibios_select_root(struct pci_dev *pdev,
120 struct resource *res)
121{
122 struct resource *root = NULL;
123
124 if (res->flags & IORESOURCE_IO)
125 root = &ioport_resource;
126 if (res->flags & IORESOURCE_MEM)
127 root = &iomem_resource;
128
129 return root;
130}
131
132extern void pcibios_claim_one_bus(struct pci_bus *b);
133
134extern void pcibios_finish_adding_to_bus(struct pci_bus *bus);
135
136extern void pcibios_resource_survey(void);
137
138extern struct pci_controller *init_phb_dynamic(struct device_node *dn);
139extern int remove_phb_dynamic(struct pci_controller *phb);
140
141extern struct pci_dev *of_create_pci_dev(struct device_node *node,
142 struct pci_bus *bus, int devfn);
143
144extern void of_scan_pci_bridge(struct device_node *node,
145 struct pci_dev *dev);
146
147extern void of_scan_bus(struct device_node *node, struct pci_bus *bus);
148extern void of_rescan_bus(struct device_node *node, struct pci_bus *bus);
149
150extern int pci_read_irq_line(struct pci_dev *dev);
151
152extern int pci_bus_find_capability(struct pci_bus *bus,
153 unsigned int devfn, int cap);
154
155struct file;
156extern pgprot_t pci_phys_mem_access_prot(struct file *file,
157 unsigned long pfn,
158 unsigned long size,
159 pgprot_t prot);
160
161#define HAVE_ARCH_PCI_RESOURCE_TO_USER
162extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
163 const struct resource *rsrc,
164 resource_size_t *start, resource_size_t *end);
165
166extern void pcibios_setup_bus_devices(struct pci_bus *bus);
167extern void pcibios_setup_bus_self(struct pci_bus *bus);
168
169/* This part of code was originaly in xilinx-pci.h */
170#ifdef CONFIG_PCI_XILINX
171extern void __init xilinx_pci_init(void);
172#else
173static inline void __init xilinx_pci_init(void) { return; }
174#endif
175
176#endif /* __KERNEL__ */
177#endif /* __ASM_MICROBLAZE_PCI_H */
diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h
index 7547f5064560..f44b0d696fe2 100644
--- a/arch/microblaze/include/asm/pgalloc.h
+++ b/arch/microblaze/include/asm/pgalloc.h
@@ -19,6 +19,7 @@
19#include <asm/io.h> 19#include <asm/io.h>
20#include <asm/page.h> 20#include <asm/page.h>
21#include <asm/cache.h> 21#include <asm/cache.h>
22#include <asm/pgtable.h>
22 23
23#define PGDIR_ORDER 0 24#define PGDIR_ORDER 0
24 25
@@ -111,7 +112,6 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
111 unsigned long address) 112 unsigned long address)
112{ 113{
113 pte_t *pte; 114 pte_t *pte;
114 extern int mem_init_done;
115 extern void *early_get_page(void); 115 extern void *early_get_page(void);
116 if (mem_init_done) { 116 if (mem_init_done) {
117 pte = (pte_t *)__get_free_page(GFP_KERNEL | 117 pte = (pte_t *)__get_free_page(GFP_KERNEL |
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
index cc3a4dfc3eaa..dd2bb60651c7 100644
--- a/arch/microblaze/include/asm/pgtable.h
+++ b/arch/microblaze/include/asm/pgtable.h
@@ -16,6 +16,10 @@
16#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ 16#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
17 remap_pfn_range(vma, vaddr, pfn, size, prot) 17 remap_pfn_range(vma, vaddr, pfn, size, prot)
18 18
19#ifndef __ASSEMBLY__
20extern int mem_init_done;
21#endif
22
19#ifndef CONFIG_MMU 23#ifndef CONFIG_MMU
20 24
21#define pgd_present(pgd) (1) /* pages are always present on non MMU */ 25#define pgd_present(pgd) (1) /* pages are always present on non MMU */
@@ -51,6 +55,8 @@ static inline int pte_file(pte_t pte) { return 0; }
51 55
52#define arch_enter_lazy_cpu_mode() do {} while (0) 56#define arch_enter_lazy_cpu_mode() do {} while (0)
53 57
58#define pgprot_noncached_wc(prot) prot
59
54#else /* CONFIG_MMU */ 60#else /* CONFIG_MMU */
55 61
56#include <asm-generic/4level-fixup.h> 62#include <asm-generic/4level-fixup.h>
@@ -68,7 +74,6 @@ static inline int pte_file(pte_t pte) { return 0; }
68 74
69extern unsigned long va_to_phys(unsigned long address); 75extern unsigned long va_to_phys(unsigned long address);
70extern pte_t *va_to_pte(unsigned long address); 76extern pte_t *va_to_pte(unsigned long address);
71extern unsigned long ioremap_bot, ioremap_base;
72 77
73/* 78/*
74 * The following only work if pte_present() is true. 79 * The following only work if pte_present() is true.
@@ -85,11 +90,25 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
85#define VMALLOC_START (CONFIG_KERNEL_START + \ 90#define VMALLOC_START (CONFIG_KERNEL_START + \
86 max(32 * 1024 * 1024UL, memory_size)) 91 max(32 * 1024 * 1024UL, memory_size))
87#define VMALLOC_END ioremap_bot 92#define VMALLOC_END ioremap_bot
88#define VMALLOC_VMADDR(x) ((unsigned long)(x))
89 93
90#endif /* __ASSEMBLY__ */ 94#endif /* __ASSEMBLY__ */
91 95
92/* 96/*
97 * Macro to mark a page protection value as "uncacheable".
98 */
99
100#define _PAGE_CACHE_CTL (_PAGE_GUARDED | _PAGE_NO_CACHE | \
101 _PAGE_WRITETHRU)
102
103#define pgprot_noncached(prot) \
104 (__pgprot((pgprot_val(prot) & ~_PAGE_CACHE_CTL) | \
105 _PAGE_NO_CACHE | _PAGE_GUARDED))
106
107#define pgprot_noncached_wc(prot) \
108 (__pgprot((pgprot_val(prot) & ~_PAGE_CACHE_CTL) | \
109 _PAGE_NO_CACHE))
110
111/*
93 * The MicroBlaze MMU is identical to the PPC-40x MMU, and uses a hash 112 * The MicroBlaze MMU is identical to the PPC-40x MMU, and uses a hash
94 * table containing PTEs, together with a set of 16 segment registers, to 113 * table containing PTEs, together with a set of 16 segment registers, to
95 * define the virtual to physical address mapping. 114 * define the virtual to physical address mapping.
@@ -397,7 +416,7 @@ static inline unsigned long pte_update(pte_t *p, unsigned long clr,
397 mts rmsr, %2\n\ 416 mts rmsr, %2\n\
398 nop" 417 nop"
399 : "=&r" (old), "=&r" (tmp), "=&r" (msr), "=m" (*p) 418 : "=&r" (old), "=&r" (tmp), "=&r" (msr), "=m" (*p)
400 : "r" ((unsigned long)(p+1) - 4), "r" (clr), "r" (set), "m" (*p) 419 : "r" ((unsigned long)(p + 1) - 4), "r" (clr), "r" (set), "m" (*p)
401 : "cc"); 420 : "cc");
402 421
403 return old; 422 return old;
@@ -566,18 +585,11 @@ void mapin_ram(void);
566int map_page(unsigned long va, phys_addr_t pa, int flags); 585int map_page(unsigned long va, phys_addr_t pa, int flags);
567 586
568extern int mem_init_done; 587extern int mem_init_done;
569extern unsigned long ioremap_base;
570extern unsigned long ioremap_bot;
571 588
572asmlinkage void __init mmu_init(void); 589asmlinkage void __init mmu_init(void);
573 590
574void __init *early_get_page(void); 591void __init *early_get_page(void);
575 592
576void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle);
577void consistent_free(void *vaddr);
578void consistent_sync(void *vaddr, size_t size, int direction);
579void consistent_sync_page(struct page *page, unsigned long offset,
580 size_t size, int direction);
581#endif /* __ASSEMBLY__ */ 593#endif /* __ASSEMBLY__ */
582#endif /* __KERNEL__ */ 594#endif /* __KERNEL__ */
583 595
@@ -586,6 +598,14 @@ void consistent_sync_page(struct page *page, unsigned long offset,
586#ifndef __ASSEMBLY__ 598#ifndef __ASSEMBLY__
587#include <asm-generic/pgtable.h> 599#include <asm-generic/pgtable.h>
588 600
601extern unsigned long ioremap_bot, ioremap_base;
602
603void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle);
604void consistent_free(void *vaddr);
605void consistent_sync(void *vaddr, size_t size, int direction);
606void consistent_sync_page(struct page *page, unsigned long offset,
607 size_t size, int direction);
608
589void setup_memory(void); 609void setup_memory(void);
590#endif /* __ASSEMBLY__ */ 610#endif /* __ASSEMBLY__ */
591 611
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index 563c6b9453f0..8eeb09211ece 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -14,7 +14,6 @@
14#include <asm/ptrace.h> 14#include <asm/ptrace.h>
15#include <asm/setup.h> 15#include <asm/setup.h>
16#include <asm/registers.h> 16#include <asm/registers.h>
17#include <asm/segment.h>
18#include <asm/entry.h> 17#include <asm/entry.h>
19#include <asm/current.h> 18#include <asm/current.h>
20 19
diff --git a/arch/microblaze/include/asm/prom.h b/arch/microblaze/include/asm/prom.h
index 03f45a963204..e7d67a329bd7 100644
--- a/arch/microblaze/include/asm/prom.h
+++ b/arch/microblaze/include/asm/prom.h
@@ -31,6 +31,21 @@
31/* Other Prototypes */ 31/* Other Prototypes */
32extern int early_uartlite_console(void); 32extern int early_uartlite_console(void);
33 33
34#ifdef CONFIG_PCI
35/*
36 * PCI <-> OF matching functions
37 * (XXX should these be here?)
38 */
39struct pci_bus;
40struct pci_dev;
41extern int pci_device_from_OF_node(struct device_node *node,
42 u8 *bus, u8 *devfn);
43extern struct device_node *pci_busdev_to_OF_node(struct pci_bus *bus,
44 int devfn);
45extern struct device_node *pci_device_to_OF_node(struct pci_dev *dev);
46extern void pci_create_OF_bus_map(void);
47#endif
48
34/* 49/*
35 * OF address retreival & translation 50 * OF address retreival & translation
36 */ 51 */
diff --git a/arch/microblaze/include/asm/segment.h b/arch/microblaze/include/asm/segment.h
deleted file mode 100644
index 0e7102c3fb11..000000000000
--- a/arch/microblaze/include/asm/segment.h
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_SEGMENT_H
12#define _ASM_MICROBLAZE_SEGMENT_H
13
14# ifndef __ASSEMBLY__
15
16typedef struct {
17 unsigned long seg;
18} mm_segment_t;
19
20/*
21 * On Microblaze the fs value is actually the top of the corresponding
22 * address space.
23 *
24 * The fs value determines whether argument validity checking should be
25 * performed or not. If get_fs() == USER_DS, checking is performed, with
26 * get_fs() == KERNEL_DS, checking is bypassed.
27 *
28 * For historical reasons, these macros are grossly misnamed.
29 *
30 * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
31 */
32# define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
33
34# ifndef CONFIG_MMU
35# define KERNEL_DS MAKE_MM_SEG(0)
36# define USER_DS KERNEL_DS
37# else
38# define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
39# define USER_DS MAKE_MM_SEG(TASK_SIZE - 1)
40# endif
41
42# define get_ds() (KERNEL_DS)
43# define get_fs() (current_thread_info()->addr_limit)
44# define set_fs(val) (current_thread_info()->addr_limit = (val))
45
46# define segment_eq(a, b) ((a).seg == (b).seg)
47
48# endif /* __ASSEMBLY__ */
49#endif /* _ASM_MICROBLAZE_SEGMENT_H */
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
index 157970688b2a..59efb3fef957 100644
--- a/arch/microblaze/include/asm/system.h
+++ b/arch/microblaze/include/asm/system.h
@@ -87,6 +87,9 @@ void free_initmem(void);
87extern char *klimit; 87extern char *klimit;
88extern void ret_from_fork(void); 88extern void ret_from_fork(void);
89 89
90extern void *alloc_maybe_bootmem(size_t size, gfp_t mask);
91extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask);
92
90#ifdef CONFIG_DEBUG_FS 93#ifdef CONFIG_DEBUG_FS
91extern struct dentry *of_debugfs_root; 94extern struct dentry *of_debugfs_root;
92#endif 95#endif
diff --git a/arch/microblaze/include/asm/thread_info.h b/arch/microblaze/include/asm/thread_info.h
index 6e92885d381a..b2ca80f64640 100644
--- a/arch/microblaze/include/asm/thread_info.h
+++ b/arch/microblaze/include/asm/thread_info.h
@@ -19,7 +19,6 @@
19#ifndef __ASSEMBLY__ 19#ifndef __ASSEMBLY__
20# include <linux/types.h> 20# include <linux/types.h>
21# include <asm/processor.h> 21# include <asm/processor.h>
22# include <asm/segment.h>
23 22
24/* 23/*
25 * low level task data that entry.S needs immediate access to 24 * low level task data that entry.S needs immediate access to
@@ -60,6 +59,10 @@ struct cpu_context {
60 __u32 fsr; 59 __u32 fsr;
61}; 60};
62 61
62typedef struct {
63 unsigned long seg;
64} mm_segment_t;
65
63struct thread_info { 66struct thread_info {
64 struct task_struct *task; /* main task structure */ 67 struct task_struct *task; /* main task structure */
65 struct exec_domain *exec_domain; /* execution domain */ 68 struct exec_domain *exec_domain; /* execution domain */
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h
index 10ec70cd8735..2e1353c2d18d 100644
--- a/arch/microblaze/include/asm/tlbflush.h
+++ b/arch/microblaze/include/asm/tlbflush.h
@@ -23,7 +23,8 @@
23extern void _tlbie(unsigned long address); 23extern void _tlbie(unsigned long address);
24extern void _tlbia(void); 24extern void _tlbia(void);
25 25
26#define __tlbia() _tlbia() 26#define __tlbia() { preempt_disable(); _tlbia(); preempt_enable(); }
27#define __tlbie(x) { _tlbie(x); }
27 28
28static inline void local_flush_tlb_all(void) 29static inline void local_flush_tlb_all(void)
29 { __tlbia(); } 30 { __tlbia(); }
@@ -31,7 +32,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
31 { __tlbia(); } 32 { __tlbia(); }
32static inline void local_flush_tlb_page(struct vm_area_struct *vma, 33static inline void local_flush_tlb_page(struct vm_area_struct *vma,
33 unsigned long vmaddr) 34 unsigned long vmaddr)
34 { _tlbie(vmaddr); } 35 { __tlbie(vmaddr); }
35static inline void local_flush_tlb_range(struct vm_area_struct *vma, 36static inline void local_flush_tlb_range(struct vm_area_struct *vma,
36 unsigned long start, unsigned long end) 37 unsigned long start, unsigned long end)
37 { __tlbia(); } 38 { __tlbia(); }
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
index 371bd6e56d9a..446bec29b142 100644
--- a/arch/microblaze/include/asm/uaccess.h
+++ b/arch/microblaze/include/asm/uaccess.h
@@ -22,101 +22,73 @@
22#include <asm/mmu.h> 22#include <asm/mmu.h>
23#include <asm/page.h> 23#include <asm/page.h>
24#include <asm/pgtable.h> 24#include <asm/pgtable.h>
25#include <asm/segment.h>
26#include <linux/string.h> 25#include <linux/string.h>
27 26
28#define VERIFY_READ 0 27#define VERIFY_READ 0
29#define VERIFY_WRITE 1 28#define VERIFY_WRITE 1
30 29
31#define __clear_user(addr, n) (memset((void *)(addr), 0, (n)), 0) 30/*
32 31 * On Microblaze the fs value is actually the top of the corresponding
33#ifndef CONFIG_MMU 32 * address space.
34 33 *
35extern int ___range_ok(unsigned long addr, unsigned long size); 34 * The fs value determines whether argument validity checking should be
36 35 * performed or not. If get_fs() == USER_DS, checking is performed, with
37#define __range_ok(addr, size) \ 36 * get_fs() == KERNEL_DS, checking is bypassed.
38 ___range_ok((unsigned long)(addr), (unsigned long)(size)) 37 *
39 38 * For historical reasons, these macros are grossly misnamed.
40#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0) 39 *
41#define __access_ok(add, size) (__range_ok((addr), (size)) == 0) 40 * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
42 41 */
43/* Undefined function to trigger linker error */ 42# define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
44extern int bad_user_access_length(void);
45
46/* FIXME this is function for optimalization -> memcpy */
47#define __get_user(var, ptr) \
48({ \
49 int __gu_err = 0; \
50 switch (sizeof(*(ptr))) { \
51 case 1: \
52 case 2: \
53 case 4: \
54 (var) = *(ptr); \
55 break; \
56 case 8: \
57 memcpy((void *) &(var), (ptr), 8); \
58 break; \
59 default: \
60 (var) = 0; \
61 __gu_err = __get_user_bad(); \
62 break; \
63 } \
64 __gu_err; \
65})
66 43
67#define __get_user_bad() (bad_user_access_length(), (-EFAULT)) 44# ifndef CONFIG_MMU
45# define KERNEL_DS MAKE_MM_SEG(0)
46# define USER_DS KERNEL_DS
47# else
48# define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFF)
49# define USER_DS MAKE_MM_SEG(TASK_SIZE - 1)
50# endif
68 51
69/* FIXME is not there defined __pu_val */ 52# define get_ds() (KERNEL_DS)
70#define __put_user(var, ptr) \ 53# define get_fs() (current_thread_info()->addr_limit)
71({ \ 54# define set_fs(val) (current_thread_info()->addr_limit = (val))
72 int __pu_err = 0; \
73 switch (sizeof(*(ptr))) { \
74 case 1: \
75 case 2: \
76 case 4: \
77 *(ptr) = (var); \
78 break; \
79 case 8: { \
80 typeof(*(ptr)) __pu_val = (var); \
81 memcpy(ptr, &__pu_val, sizeof(__pu_val)); \
82 } \
83 break; \
84 default: \
85 __pu_err = __put_user_bad(); \
86 break; \
87 } \
88 __pu_err; \
89})
90 55
91#define __put_user_bad() (bad_user_access_length(), (-EFAULT)) 56# define segment_eq(a, b) ((a).seg == (b).seg)
92 57
93#define put_user(x, ptr) __put_user((x), (ptr)) 58/*
94#define get_user(x, ptr) __get_user((x), (ptr)) 59 * The exception table consists of pairs of addresses: the first is the
60 * address of an instruction that is allowed to fault, and the second is
61 * the address at which the program should continue. No registers are
62 * modified, so it is entirely up to the continuation code to figure out
63 * what to do.
64 *
65 * All the routines below use bits of fixup code that are out of line
66 * with the main instruction path. This means when everything is well,
67 * we don't even have to jump over them. Further, they do not intrude
68 * on our cache or tlb entries.
69 */
70struct exception_table_entry {
71 unsigned long insn, fixup;
72};
95 73
96#define copy_to_user(to, from, n) (memcpy((to), (from), (n)), 0) 74/* Returns 0 if exception not found and fixup otherwise. */
97#define copy_from_user(to, from, n) (memcpy((to), (from), (n)), 0) 75extern unsigned long search_exception_table(unsigned long);
98 76
99#define __copy_to_user(to, from, n) (copy_to_user((to), (from), (n))) 77#ifndef CONFIG_MMU
100#define __copy_from_user(to, from, n) (copy_from_user((to), (from), (n)))
101#define __copy_to_user_inatomic(to, from, n) \
102 (__copy_to_user((to), (from), (n)))
103#define __copy_from_user_inatomic(to, from, n) \
104 (__copy_from_user((to), (from), (n)))
105 78
106static inline unsigned long clear_user(void *addr, unsigned long size) 79/* Check against bounds of physical memory */
80static inline int ___range_ok(unsigned long addr, unsigned long size)
107{ 81{
108 if (access_ok(VERIFY_WRITE, addr, size)) 82 return ((addr < memory_start) ||
109 size = __clear_user(addr, size); 83 ((addr + size) > memory_end));
110 return size;
111} 84}
112 85
113/* Returns 0 if exception not found and fixup otherwise. */ 86#define __range_ok(addr, size) \
114extern unsigned long search_exception_table(unsigned long); 87 ___range_ok((unsigned long)(addr), (unsigned long)(size))
115 88
116extern long strncpy_from_user(char *dst, const char *src, long count); 89#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
117extern long strnlen_user(const char *src, long count);
118 90
119#else /* CONFIG_MMU */ 91#else
120 92
121/* 93/*
122 * Address is valid if: 94 * Address is valid if:
@@ -129,24 +101,88 @@ extern long strnlen_user(const char *src, long count);
129/* || printk("access_ok failed for %s at 0x%08lx (size %d), seg 0x%08x\n", 101/* || printk("access_ok failed for %s at 0x%08lx (size %d), seg 0x%08x\n",
130 type?"WRITE":"READ",addr,size,get_fs().seg)) */ 102 type?"WRITE":"READ",addr,size,get_fs().seg)) */
131 103
132/* 104#endif
133 * All the __XXX versions macros/functions below do not perform
134 * access checking. It is assumed that the necessary checks have been
135 * already performed before the finction (macro) is called.
136 */
137 105
138#define get_user(x, ptr) \ 106#ifdef CONFIG_MMU
139({ \ 107# define __FIXUP_SECTION ".section .fixup,\"ax\"\n"
140 access_ok(VERIFY_READ, (ptr), sizeof(*(ptr))) \ 108# define __EX_TABLE_SECTION ".section __ex_table,\"a\"\n"
141 ? __get_user((x), (ptr)) : -EFAULT; \ 109#else
142}) 110# define __FIXUP_SECTION ".section .discard,\"ax\"\n"
111# define __EX_TABLE_SECTION ".section .discard,\"a\"\n"
112#endif
143 113
144#define put_user(x, ptr) \ 114extern unsigned long __copy_tofrom_user(void __user *to,
145({ \ 115 const void __user *from, unsigned long size);
146 access_ok(VERIFY_WRITE, (ptr), sizeof(*(ptr))) \ 116
147 ? __put_user((x), (ptr)) : -EFAULT; \ 117/* Return: number of not copied bytes, i.e. 0 if OK or non-zero if fail. */
118static inline unsigned long __must_check __clear_user(void __user *to,
119 unsigned long n)
120{
121 /* normal memset with two words to __ex_table */
122 __asm__ __volatile__ ( \
123 "1: sb r0, %2, r0;" \
124 " addik %0, %0, -1;" \
125 " bneid %0, 1b;" \
126 " addik %2, %2, 1;" \
127 "2: " \
128 __EX_TABLE_SECTION \
129 ".word 1b,2b;" \
130 ".previous;" \
131 : "=r"(n) \
132 : "0"(n), "r"(to)
133 );
134 return n;
135}
136
137static inline unsigned long __must_check clear_user(void __user *to,
138 unsigned long n)
139{
140 might_sleep();
141 if (unlikely(!access_ok(VERIFY_WRITE, to, n)))
142 return n;
143
144 return __clear_user(to, n);
145}
146
147/* put_user and get_user macros */
148extern long __user_bad(void);
149
150#define __get_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \
151({ \
152 __asm__ __volatile__ ( \
153 "1:" insn " %1, %2, r0;" \
154 " addk %0, r0, r0;" \
155 "2: " \
156 __FIXUP_SECTION \
157 "3: brid 2b;" \
158 " addik %0, r0, %3;" \
159 ".previous;" \
160 __EX_TABLE_SECTION \
161 ".word 1b,3b;" \
162 ".previous;" \
163 : "=&r"(__gu_err), "=r"(__gu_val) \
164 : "r"(__gu_ptr), "i"(-EFAULT) \
165 ); \
148}) 166})
149 167
168/**
169 * get_user: - Get a simple variable from user space.
170 * @x: Variable to store result.
171 * @ptr: Source address, in user space.
172 *
173 * Context: User context only. This function may sleep.
174 *
175 * This macro copies a single simple variable from user space to kernel
176 * space. It supports simple types like char and int, but not larger
177 * data types like structures or arrays.
178 *
179 * @ptr must have pointer-to-simple-variable type, and the result of
180 * dereferencing @ptr must be assignable to @x without a cast.
181 *
182 * Returns zero on success, or -EFAULT on error.
183 * On error, the variable @x is set to zero.
184 */
185
150#define __get_user(x, ptr) \ 186#define __get_user(x, ptr) \
151({ \ 187({ \
152 unsigned long __gu_val; \ 188 unsigned long __gu_val; \
@@ -163,30 +199,74 @@ extern long strnlen_user(const char *src, long count);
163 __get_user_asm("lw", (ptr), __gu_val, __gu_err); \ 199 __get_user_asm("lw", (ptr), __gu_val, __gu_err); \
164 break; \ 200 break; \
165 default: \ 201 default: \
166 __gu_val = 0; __gu_err = -EINVAL; \ 202 /* __gu_val = 0; __gu_err = -EINVAL;*/ __gu_err = __user_bad();\
167 } \ 203 } \
168 x = (__typeof__(*(ptr))) __gu_val; \ 204 x = (__typeof__(*(ptr))) __gu_val; \
169 __gu_err; \ 205 __gu_err; \
170}) 206})
171 207
172#define __get_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \ 208
209#define get_user(x, ptr) \
173({ \ 210({ \
174 __asm__ __volatile__ ( \ 211 access_ok(VERIFY_READ, (ptr), sizeof(*(ptr))) \
175 "1:" insn " %1, %2, r0; \ 212 ? __get_user((x), (ptr)) : -EFAULT; \
176 addk %0, r0, r0; \ 213})
177 2: \ 214
178 .section .fixup,\"ax\"; \ 215#define __put_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \
179 3: brid 2b; \ 216({ \
180 addik %0, r0, %3; \ 217 __asm__ __volatile__ ( \
181 .previous; \ 218 "1:" insn " %1, %2, r0;" \
182 .section __ex_table,\"a\"; \ 219 " addk %0, r0, r0;" \
183 .word 1b,3b; \ 220 "2: " \
184 .previous;" \ 221 __FIXUP_SECTION \
185 : "=r"(__gu_err), "=r"(__gu_val) \ 222 "3: brid 2b;" \
186 : "r"(__gu_ptr), "i"(-EFAULT) \ 223 " addik %0, r0, %3;" \
187 ); \ 224 ".previous;" \
225 __EX_TABLE_SECTION \
226 ".word 1b,3b;" \
227 ".previous;" \
228 : "=&r"(__gu_err) \
229 : "r"(__gu_val), "r"(__gu_ptr), "i"(-EFAULT) \
230 ); \
188}) 231})
189 232
233#define __put_user_asm_8(__gu_ptr, __gu_val, __gu_err) \
234({ \
235 __asm__ __volatile__ (" lwi %0, %1, 0;" \
236 "1: swi %0, %2, 0;" \
237 " lwi %0, %1, 4;" \
238 "2: swi %0, %2, 4;" \
239 " addk %0, r0, r0;" \
240 "3: " \
241 __FIXUP_SECTION \
242 "4: brid 3b;" \
243 " addik %0, r0, %3;" \
244 ".previous;" \
245 __EX_TABLE_SECTION \
246 ".word 1b,4b,2b,4b;" \
247 ".previous;" \
248 : "=&r"(__gu_err) \
249 : "r"(&__gu_val), "r"(__gu_ptr), "i"(-EFAULT) \
250 ); \
251})
252
253/**
254 * put_user: - Write a simple value into user space.
255 * @x: Value to copy to user space.
256 * @ptr: Destination address, in user space.
257 *
258 * Context: User context only. This function may sleep.
259 *
260 * This macro copies a single simple value from kernel space to user
261 * space. It supports simple types like char and int, but not larger
262 * data types like structures or arrays.
263 *
264 * @ptr must have pointer-to-simple-variable type, and @x must be assignable
265 * to the result of dereferencing @ptr.
266 *
267 * Returns zero on success, or -EFAULT on error.
268 */
269
190#define __put_user(x, ptr) \ 270#define __put_user(x, ptr) \
191({ \ 271({ \
192 __typeof__(*(ptr)) volatile __gu_val = (x); \ 272 __typeof__(*(ptr)) volatile __gu_val = (x); \
@@ -195,7 +275,7 @@ extern long strnlen_user(const char *src, long count);
195 case 1: \ 275 case 1: \
196 __put_user_asm("sb", (ptr), __gu_val, __gu_err); \ 276 __put_user_asm("sb", (ptr), __gu_val, __gu_err); \
197 break; \ 277 break; \
198 case 2: \ 278 case 2: \
199 __put_user_asm("sh", (ptr), __gu_val, __gu_err); \ 279 __put_user_asm("sh", (ptr), __gu_val, __gu_err); \
200 break; \ 280 break; \
201 case 4: \ 281 case 4: \
@@ -205,121 +285,82 @@ extern long strnlen_user(const char *src, long count);
205 __put_user_asm_8((ptr), __gu_val, __gu_err); \ 285 __put_user_asm_8((ptr), __gu_val, __gu_err); \
206 break; \ 286 break; \
207 default: \ 287 default: \
208 __gu_err = -EINVAL; \ 288 /*__gu_err = -EINVAL;*/ __gu_err = __user_bad(); \
209 } \ 289 } \
210 __gu_err; \ 290 __gu_err; \
211}) 291})
212 292
213#define __put_user_asm_8(__gu_ptr, __gu_val, __gu_err) \ 293#ifndef CONFIG_MMU
214({ \
215__asm__ __volatile__ (" lwi %0, %1, 0; \
216 1: swi %0, %2, 0; \
217 lwi %0, %1, 4; \
218 2: swi %0, %2, 4; \
219 addk %0,r0,r0; \
220 3: \
221 .section .fixup,\"ax\"; \
222 4: brid 3b; \
223 addik %0, r0, %3; \
224 .previous; \
225 .section __ex_table,\"a\"; \
226 .word 1b,4b,2b,4b; \
227 .previous;" \
228 : "=&r"(__gu_err) \
229 : "r"(&__gu_val), \
230 "r"(__gu_ptr), "i"(-EFAULT) \
231 ); \
232})
233 294
234#define __put_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \ 295#define put_user(x, ptr) __put_user((x), (ptr))
235({ \
236 __asm__ __volatile__ ( \
237 "1:" insn " %1, %2, r0; \
238 addk %0, r0, r0; \
239 2: \
240 .section .fixup,\"ax\"; \
241 3: brid 2b; \
242 addik %0, r0, %3; \
243 .previous; \
244 .section __ex_table,\"a\"; \
245 .word 1b,3b; \
246 .previous;" \
247 : "=r"(__gu_err) \
248 : "r"(__gu_val), "r"(__gu_ptr), "i"(-EFAULT) \
249 ); \
250})
251 296
252/* 297#else /* CONFIG_MMU */
253 * Return: number of not copied bytes, i.e. 0 if OK or non-zero if fail.
254 */
255static inline int clear_user(char *to, int size)
256{
257 if (size && access_ok(VERIFY_WRITE, to, size)) {
258 __asm__ __volatile__ (" \
259 1: \
260 sb r0, %2, r0; \
261 addik %0, %0, -1; \
262 bneid %0, 1b; \
263 addik %2, %2, 1; \
264 2: \
265 .section __ex_table,\"a\"; \
266 .word 1b,2b; \
267 .section .text;" \
268 : "=r"(size) \
269 : "0"(size), "r"(to)
270 );
271 }
272 return size;
273}
274 298
275#define __copy_from_user(to, from, n) copy_from_user((to), (from), (n)) 299#define put_user(x, ptr) \
300({ \
301 access_ok(VERIFY_WRITE, (ptr), sizeof(*(ptr))) \
302 ? __put_user((x), (ptr)) : -EFAULT; \
303})
304#endif /* CONFIG_MMU */
305
306/* copy_to_from_user */
307#define __copy_from_user(to, from, n) \
308 __copy_tofrom_user((__force void __user *)(to), \
309 (void __user *)(from), (n))
276#define __copy_from_user_inatomic(to, from, n) \ 310#define __copy_from_user_inatomic(to, from, n) \
277 copy_from_user((to), (from), (n)) 311 copy_from_user((to), (from), (n))
278 312
279#define copy_to_user(to, from, n) \ 313static inline long copy_from_user(void *to,
280 (access_ok(VERIFY_WRITE, (to), (n)) ? \ 314 const void __user *from, unsigned long n)
281 __copy_tofrom_user((void __user *)(to), \ 315{
282 (__force const void __user *)(from), (n)) \ 316 might_sleep();
283 : -EFAULT) 317 if (access_ok(VERIFY_READ, from, n))
318 return __copy_from_user(to, from, n);
319 return n;
320}
284 321
285#define __copy_to_user(to, from, n) copy_to_user((to), (from), (n)) 322#define __copy_to_user(to, from, n) \
323 __copy_tofrom_user((void __user *)(to), \
324 (__force const void __user *)(from), (n))
286#define __copy_to_user_inatomic(to, from, n) copy_to_user((to), (from), (n)) 325#define __copy_to_user_inatomic(to, from, n) copy_to_user((to), (from), (n))
287 326
288#define copy_from_user(to, from, n) \ 327static inline long copy_to_user(void __user *to,
289 (access_ok(VERIFY_READ, (from), (n)) ? \ 328 const void *from, unsigned long n)
290 __copy_tofrom_user((__force void __user *)(to), \ 329{
291 (void __user *)(from), (n)) \ 330 might_sleep();
292 : -EFAULT) 331 if (access_ok(VERIFY_WRITE, to, n))
332 return __copy_to_user(to, from, n);
333 return n;
334}
293 335
336/*
337 * Copy a null terminated string from userspace.
338 */
294extern int __strncpy_user(char *to, const char __user *from, int len); 339extern int __strncpy_user(char *to, const char __user *from, int len);
295extern int __strnlen_user(const char __user *sstr, int len);
296 340
297#define strncpy_from_user(to, from, len) \ 341#define __strncpy_from_user __strncpy_user
298 (access_ok(VERIFY_READ, from, 1) ? \
299 __strncpy_user(to, from, len) : -EFAULT)
300#define strnlen_user(str, len) \
301 (access_ok(VERIFY_READ, str, 1) ? __strnlen_user(str, len) : 0)
302 342
303#endif /* CONFIG_MMU */ 343static inline long
304 344strncpy_from_user(char *dst, const char __user *src, long count)
305extern unsigned long __copy_tofrom_user(void __user *to, 345{
306 const void __user *from, unsigned long size); 346 if (!access_ok(VERIFY_READ, src, 1))
347 return -EFAULT;
348 return __strncpy_from_user(dst, src, count);
349}
307 350
308/* 351/*
309 * The exception table consists of pairs of addresses: the first is the 352 * Return the size of a string (including the ending 0)
310 * address of an instruction that is allowed to fault, and the second is
311 * the address at which the program should continue. No registers are
312 * modified, so it is entirely up to the continuation code to figure out
313 * what to do.
314 * 353 *
315 * All the routines below use bits of fixup code that are out of line 354 * Return 0 on exception, a value greater than N if too long
316 * with the main instruction path. This means when everything is well,
317 * we don't even have to jump over them. Further, they do not intrude
318 * on our cache or tlb entries.
319 */ 355 */
320struct exception_table_entry { 356extern int __strnlen_user(const char __user *sstr, int len);
321 unsigned long insn, fixup; 357
322}; 358static inline long strnlen_user(const char __user *src, long n)
359{
360 if (!access_ok(VERIFY_READ, src, 1))
361 return 0;
362 return __strnlen_user(src, n);
363}
323 364
324#endif /* __ASSEMBLY__ */ 365#endif /* __ASSEMBLY__ */
325#endif /* __KERNEL__ */ 366#endif /* __KERNEL__ */
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
index b07594eccf9b..e51bc1520825 100644
--- a/arch/microblaze/kernel/Makefile
+++ b/arch/microblaze/kernel/Makefile
@@ -14,7 +14,7 @@ endif
14 14
15extra-y := head.o vmlinux.lds 15extra-y := head.o vmlinux.lds
16 16
17obj-y += exceptions.o \ 17obj-y += dma.o exceptions.o \
18 hw_exception_handler.o init_task.o intc.o irq.o of_device.o \ 18 hw_exception_handler.o init_task.o intc.o irq.o of_device.o \
19 of_platform.o process.o prom.o prom_parse.o ptrace.o \ 19 of_platform.o process.o prom.o prom_parse.o ptrace.o \
20 setup.o signal.o sys_microblaze.o timer.o traps.o reset.o 20 setup.o signal.o sys_microblaze.o timer.o traps.o reset.o
diff --git a/arch/microblaze/kernel/asm-offsets.c b/arch/microblaze/kernel/asm-offsets.c
index 7bc7b68f97db..0071260a672c 100644
--- a/arch/microblaze/kernel/asm-offsets.c
+++ b/arch/microblaze/kernel/asm-offsets.c
@@ -90,6 +90,7 @@ int main(int argc, char *argv[])
90 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); 90 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
91 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); 91 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
92 DEFINE(TI_CPU_CONTEXT, offsetof(struct thread_info, cpu_context)); 92 DEFINE(TI_CPU_CONTEXT, offsetof(struct thread_info, cpu_context));
93 DEFINE(TI_PREEMPT_COUNT, offsetof(struct thread_info, preempt_count));
93 BLANK(); 94 BLANK();
94 95
95 /* struct cpu_context */ 96 /* struct cpu_context */
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c
index 2a56bccce4e0..f04d8a86dead 100644
--- a/arch/microblaze/kernel/cpu/cache.c
+++ b/arch/microblaze/kernel/cpu/cache.c
@@ -15,25 +15,6 @@
15#include <asm/cpuinfo.h> 15#include <asm/cpuinfo.h>
16#include <asm/pvr.h> 16#include <asm/pvr.h>
17 17
18static inline void __invalidate_flush_icache(unsigned int addr)
19{
20 __asm__ __volatile__ ("wic %0, r0;" \
21 : : "r" (addr));
22}
23
24static inline void __flush_dcache(unsigned int addr)
25{
26 __asm__ __volatile__ ("wdc.flush %0, r0;" \
27 : : "r" (addr));
28}
29
30static inline void __invalidate_dcache(unsigned int baseaddr,
31 unsigned int offset)
32{
33 __asm__ __volatile__ ("wdc.clear %0, %1;" \
34 : : "r" (baseaddr), "r" (offset));
35}
36
37static inline void __enable_icache_msr(void) 18static inline void __enable_icache_msr(void)
38{ 19{
39 __asm__ __volatile__ (" msrset r0, %0; \ 20 __asm__ __volatile__ (" msrset r0, %0; \
@@ -148,9 +129,9 @@ do { \
148 int step = -line_length; \ 129 int step = -line_length; \
149 BUG_ON(step >= 0); \ 130 BUG_ON(step >= 0); \
150 \ 131 \
151 __asm__ __volatile__ (" 1: " #op " r0, %0; \ 132 __asm__ __volatile__ (" 1: " #op " r0, %0; \
152 bgtid %0, 1b; \ 133 bgtid %0, 1b; \
153 addk %0, %0, %1; \ 134 addk %0, %0, %1; \
154 " : : "r" (len), "r" (step) \ 135 " : : "r" (len), "r" (step) \
155 : "memory"); \ 136 : "memory"); \
156} while (0); 137} while (0);
@@ -162,9 +143,9 @@ do { \
162 int count = end - start; \ 143 int count = end - start; \
163 BUG_ON(count <= 0); \ 144 BUG_ON(count <= 0); \
164 \ 145 \
165 __asm__ __volatile__ (" 1: " #op " %0, %1; \ 146 __asm__ __volatile__ (" 1: " #op " %0, %1; \
166 bgtid %1, 1b; \ 147 bgtid %1, 1b; \
167 addk %1, %1, %2; \ 148 addk %1, %1, %2; \
168 " : : "r" (start), "r" (count), \ 149 " : : "r" (start), "r" (count), \
169 "r" (step) : "memory"); \ 150 "r" (step) : "memory"); \
170} while (0); 151} while (0);
@@ -175,7 +156,7 @@ do { \
175 int volatile temp; \ 156 int volatile temp; \
176 BUG_ON(end - start <= 0); \ 157 BUG_ON(end - start <= 0); \
177 \ 158 \
178 __asm__ __volatile__ (" 1: " #op " %1, r0; \ 159 __asm__ __volatile__ (" 1: " #op " %1, r0; \
179 cmpu %0, %1, %2; \ 160 cmpu %0, %1, %2; \
180 bgtid %0, 1b; \ 161 bgtid %0, 1b; \
181 addk %1, %1, %3; \ 162 addk %1, %1, %3; \
@@ -183,10 +164,14 @@ do { \
183 "r" (line_length) : "memory"); \ 164 "r" (line_length) : "memory"); \
184} while (0); 165} while (0);
185 166
167#define ASM_LOOP
168
186static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end) 169static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end)
187{ 170{
188 unsigned long flags; 171 unsigned long flags;
189 172#ifndef ASM_LOOP
173 int i;
174#endif
190 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 175 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
191 (unsigned int)start, (unsigned int) end); 176 (unsigned int)start, (unsigned int) end);
192 177
@@ -196,8 +181,13 @@ static void __flush_icache_range_msr_irq(unsigned long start, unsigned long end)
196 local_irq_save(flags); 181 local_irq_save(flags);
197 __disable_icache_msr(); 182 __disable_icache_msr();
198 183
184#ifdef ASM_LOOP
199 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic); 185 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic);
200 186#else
187 for (i = start; i < end; i += cpuinfo.icache_line_length)
188 __asm__ __volatile__ ("wic %0, r0;" \
189 : : "r" (i));
190#endif
201 __enable_icache_msr(); 191 __enable_icache_msr();
202 local_irq_restore(flags); 192 local_irq_restore(flags);
203} 193}
@@ -206,7 +196,9 @@ static void __flush_icache_range_nomsr_irq(unsigned long start,
206 unsigned long end) 196 unsigned long end)
207{ 197{
208 unsigned long flags; 198 unsigned long flags;
209 199#ifndef ASM_LOOP
200 int i;
201#endif
210 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 202 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
211 (unsigned int)start, (unsigned int) end); 203 (unsigned int)start, (unsigned int) end);
212 204
@@ -216,7 +208,13 @@ static void __flush_icache_range_nomsr_irq(unsigned long start,
216 local_irq_save(flags); 208 local_irq_save(flags);
217 __disable_icache_nomsr(); 209 __disable_icache_nomsr();
218 210
211#ifdef ASM_LOOP
219 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic); 212 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic);
213#else
214 for (i = start; i < end; i += cpuinfo.icache_line_length)
215 __asm__ __volatile__ ("wic %0, r0;" \
216 : : "r" (i));
217#endif
220 218
221 __enable_icache_nomsr(); 219 __enable_icache_nomsr();
222 local_irq_restore(flags); 220 local_irq_restore(flags);
@@ -225,25 +223,41 @@ static void __flush_icache_range_nomsr_irq(unsigned long start,
225static void __flush_icache_range_noirq(unsigned long start, 223static void __flush_icache_range_noirq(unsigned long start,
226 unsigned long end) 224 unsigned long end)
227{ 225{
226#ifndef ASM_LOOP
227 int i;
228#endif
228 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 229 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
229 (unsigned int)start, (unsigned int) end); 230 (unsigned int)start, (unsigned int) end);
230 231
231 CACHE_LOOP_LIMITS(start, end, 232 CACHE_LOOP_LIMITS(start, end,
232 cpuinfo.icache_line_length, cpuinfo.icache_size); 233 cpuinfo.icache_line_length, cpuinfo.icache_size);
234#ifdef ASM_LOOP
233 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic); 235 CACHE_RANGE_LOOP_1(start, end, cpuinfo.icache_line_length, wic);
236#else
237 for (i = start; i < end; i += cpuinfo.icache_line_length)
238 __asm__ __volatile__ ("wic %0, r0;" \
239 : : "r" (i));
240#endif
234} 241}
235 242
236static void __flush_icache_all_msr_irq(void) 243static void __flush_icache_all_msr_irq(void)
237{ 244{
238 unsigned long flags; 245 unsigned long flags;
239 246#ifndef ASM_LOOP
247 int i;
248#endif
240 pr_debug("%s\n", __func__); 249 pr_debug("%s\n", __func__);
241 250
242 local_irq_save(flags); 251 local_irq_save(flags);
243 __disable_icache_msr(); 252 __disable_icache_msr();
244 253#ifdef ASM_LOOP
245 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic); 254 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic);
246 255#else
256 for (i = 0; i < cpuinfo.icache_size;
257 i += cpuinfo.icache_line_length)
258 __asm__ __volatile__ ("wic %0, r0;" \
259 : : "r" (i));
260#endif
247 __enable_icache_msr(); 261 __enable_icache_msr();
248 local_irq_restore(flags); 262 local_irq_restore(flags);
249} 263}
@@ -251,35 +265,59 @@ static void __flush_icache_all_msr_irq(void)
251static void __flush_icache_all_nomsr_irq(void) 265static void __flush_icache_all_nomsr_irq(void)
252{ 266{
253 unsigned long flags; 267 unsigned long flags;
254 268#ifndef ASM_LOOP
269 int i;
270#endif
255 pr_debug("%s\n", __func__); 271 pr_debug("%s\n", __func__);
256 272
257 local_irq_save(flags); 273 local_irq_save(flags);
258 __disable_icache_nomsr(); 274 __disable_icache_nomsr();
259 275#ifdef ASM_LOOP
260 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic); 276 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic);
261 277#else
278 for (i = 0; i < cpuinfo.icache_size;
279 i += cpuinfo.icache_line_length)
280 __asm__ __volatile__ ("wic %0, r0;" \
281 : : "r" (i));
282#endif
262 __enable_icache_nomsr(); 283 __enable_icache_nomsr();
263 local_irq_restore(flags); 284 local_irq_restore(flags);
264} 285}
265 286
266static void __flush_icache_all_noirq(void) 287static void __flush_icache_all_noirq(void)
267{ 288{
289#ifndef ASM_LOOP
290 int i;
291#endif
268 pr_debug("%s\n", __func__); 292 pr_debug("%s\n", __func__);
293#ifdef ASM_LOOP
269 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic); 294 CACHE_ALL_LOOP(cpuinfo.icache_size, cpuinfo.icache_line_length, wic);
295#else
296 for (i = 0; i < cpuinfo.icache_size;
297 i += cpuinfo.icache_line_length)
298 __asm__ __volatile__ ("wic %0, r0;" \
299 : : "r" (i));
300#endif
270} 301}
271 302
272static void __invalidate_dcache_all_msr_irq(void) 303static void __invalidate_dcache_all_msr_irq(void)
273{ 304{
274 unsigned long flags; 305 unsigned long flags;
275 306#ifndef ASM_LOOP
307 int i;
308#endif
276 pr_debug("%s\n", __func__); 309 pr_debug("%s\n", __func__);
277 310
278 local_irq_save(flags); 311 local_irq_save(flags);
279 __disable_dcache_msr(); 312 __disable_dcache_msr();
280 313#ifdef ASM_LOOP
281 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc); 314 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc);
282 315#else
316 for (i = 0; i < cpuinfo.dcache_size;
317 i += cpuinfo.dcache_line_length)
318 __asm__ __volatile__ ("wdc %0, r0;" \
319 : : "r" (i));
320#endif
283 __enable_dcache_msr(); 321 __enable_dcache_msr();
284 local_irq_restore(flags); 322 local_irq_restore(flags);
285} 323}
@@ -287,60 +325,107 @@ static void __invalidate_dcache_all_msr_irq(void)
287static void __invalidate_dcache_all_nomsr_irq(void) 325static void __invalidate_dcache_all_nomsr_irq(void)
288{ 326{
289 unsigned long flags; 327 unsigned long flags;
290 328#ifndef ASM_LOOP
329 int i;
330#endif
291 pr_debug("%s\n", __func__); 331 pr_debug("%s\n", __func__);
292 332
293 local_irq_save(flags); 333 local_irq_save(flags);
294 __disable_dcache_nomsr(); 334 __disable_dcache_nomsr();
295 335#ifdef ASM_LOOP
296 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc); 336 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc);
297 337#else
338 for (i = 0; i < cpuinfo.dcache_size;
339 i += cpuinfo.dcache_line_length)
340 __asm__ __volatile__ ("wdc %0, r0;" \
341 : : "r" (i));
342#endif
298 __enable_dcache_nomsr(); 343 __enable_dcache_nomsr();
299 local_irq_restore(flags); 344 local_irq_restore(flags);
300} 345}
301 346
302static void __invalidate_dcache_all_noirq_wt(void) 347static void __invalidate_dcache_all_noirq_wt(void)
303{ 348{
349#ifndef ASM_LOOP
350 int i;
351#endif
304 pr_debug("%s\n", __func__); 352 pr_debug("%s\n", __func__);
353#ifdef ASM_LOOP
305 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc) 354 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, wdc)
355#else
356 for (i = 0; i < cpuinfo.dcache_size;
357 i += cpuinfo.dcache_line_length)
358 __asm__ __volatile__ ("wdc %0, r0;" \
359 : : "r" (i));
360#endif
306} 361}
307 362
308/* FIXME this is weird - should be only wdc but not work 363/* FIXME this is weird - should be only wdc but not work
309 * MS: I am getting bus errors and other weird things */ 364 * MS: I am getting bus errors and other weird things */
310static void __invalidate_dcache_all_wb(void) 365static void __invalidate_dcache_all_wb(void)
311{ 366{
367#ifndef ASM_LOOP
368 int i;
369#endif
312 pr_debug("%s\n", __func__); 370 pr_debug("%s\n", __func__);
371#ifdef ASM_LOOP
313 CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length, 372 CACHE_ALL_LOOP2(cpuinfo.dcache_size, cpuinfo.dcache_line_length,
314 wdc.clear) 373 wdc.clear)
374#else
375 for (i = 0; i < cpuinfo.dcache_size;
376 i += cpuinfo.dcache_line_length)
377 __asm__ __volatile__ ("wdc.clear %0, r0;" \
378 : : "r" (i));
379#endif
315} 380}
316 381
317static void __invalidate_dcache_range_wb(unsigned long start, 382static void __invalidate_dcache_range_wb(unsigned long start,
318 unsigned long end) 383 unsigned long end)
319{ 384{
385#ifndef ASM_LOOP
386 int i;
387#endif
320 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 388 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
321 (unsigned int)start, (unsigned int) end); 389 (unsigned int)start, (unsigned int) end);
322 390
323 CACHE_LOOP_LIMITS(start, end, 391 CACHE_LOOP_LIMITS(start, end,
324 cpuinfo.dcache_line_length, cpuinfo.dcache_size); 392 cpuinfo.dcache_line_length, cpuinfo.dcache_size);
393#ifdef ASM_LOOP
325 CACHE_RANGE_LOOP_2(start, end, cpuinfo.dcache_line_length, wdc.clear); 394 CACHE_RANGE_LOOP_2(start, end, cpuinfo.dcache_line_length, wdc.clear);
395#else
396 for (i = start; i < end; i += cpuinfo.icache_line_length)
397 __asm__ __volatile__ ("wdc.clear %0, r0;" \
398 : : "r" (i));
399#endif
326} 400}
327 401
328static void __invalidate_dcache_range_nomsr_wt(unsigned long start, 402static void __invalidate_dcache_range_nomsr_wt(unsigned long start,
329 unsigned long end) 403 unsigned long end)
330{ 404{
405#ifndef ASM_LOOP
406 int i;
407#endif
331 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 408 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
332 (unsigned int)start, (unsigned int) end); 409 (unsigned int)start, (unsigned int) end);
333 CACHE_LOOP_LIMITS(start, end, 410 CACHE_LOOP_LIMITS(start, end,
334 cpuinfo.dcache_line_length, cpuinfo.dcache_size); 411 cpuinfo.dcache_line_length, cpuinfo.dcache_size);
335 412
413#ifdef ASM_LOOP
336 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc); 414 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc);
415#else
416 for (i = start; i < end; i += cpuinfo.icache_line_length)
417 __asm__ __volatile__ ("wdc %0, r0;" \
418 : : "r" (i));
419#endif
337} 420}
338 421
339static void __invalidate_dcache_range_msr_irq_wt(unsigned long start, 422static void __invalidate_dcache_range_msr_irq_wt(unsigned long start,
340 unsigned long end) 423 unsigned long end)
341{ 424{
342 unsigned long flags; 425 unsigned long flags;
343 426#ifndef ASM_LOOP
427 int i;
428#endif
344 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 429 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
345 (unsigned int)start, (unsigned int) end); 430 (unsigned int)start, (unsigned int) end);
346 CACHE_LOOP_LIMITS(start, end, 431 CACHE_LOOP_LIMITS(start, end,
@@ -349,7 +434,13 @@ static void __invalidate_dcache_range_msr_irq_wt(unsigned long start,
349 local_irq_save(flags); 434 local_irq_save(flags);
350 __disable_dcache_msr(); 435 __disable_dcache_msr();
351 436
437#ifdef ASM_LOOP
352 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc); 438 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc);
439#else
440 for (i = start; i < end; i += cpuinfo.icache_line_length)
441 __asm__ __volatile__ ("wdc %0, r0;" \
442 : : "r" (i));
443#endif
353 444
354 __enable_dcache_msr(); 445 __enable_dcache_msr();
355 local_irq_restore(flags); 446 local_irq_restore(flags);
@@ -359,7 +450,9 @@ static void __invalidate_dcache_range_nomsr_irq(unsigned long start,
359 unsigned long end) 450 unsigned long end)
360{ 451{
361 unsigned long flags; 452 unsigned long flags;
362 453#ifndef ASM_LOOP
454 int i;
455#endif
363 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 456 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
364 (unsigned int)start, (unsigned int) end); 457 (unsigned int)start, (unsigned int) end);
365 458
@@ -369,7 +462,13 @@ static void __invalidate_dcache_range_nomsr_irq(unsigned long start,
369 local_irq_save(flags); 462 local_irq_save(flags);
370 __disable_dcache_nomsr(); 463 __disable_dcache_nomsr();
371 464
465#ifdef ASM_LOOP
372 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc); 466 CACHE_RANGE_LOOP_1(start, end, cpuinfo.dcache_line_length, wdc);
467#else
468 for (i = start; i < end; i += cpuinfo.icache_line_length)
469 __asm__ __volatile__ ("wdc %0, r0;" \
470 : : "r" (i));
471#endif
373 472
374 __enable_dcache_nomsr(); 473 __enable_dcache_nomsr();
375 local_irq_restore(flags); 474 local_irq_restore(flags);
@@ -377,19 +476,38 @@ static void __invalidate_dcache_range_nomsr_irq(unsigned long start,
377 476
378static void __flush_dcache_all_wb(void) 477static void __flush_dcache_all_wb(void)
379{ 478{
479#ifndef ASM_LOOP
480 int i;
481#endif
380 pr_debug("%s\n", __func__); 482 pr_debug("%s\n", __func__);
483#ifdef ASM_LOOP
381 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length, 484 CACHE_ALL_LOOP(cpuinfo.dcache_size, cpuinfo.dcache_line_length,
382 wdc.flush); 485 wdc.flush);
486#else
487 for (i = 0; i < cpuinfo.dcache_size;
488 i += cpuinfo.dcache_line_length)
489 __asm__ __volatile__ ("wdc.flush %0, r0;" \
490 : : "r" (i));
491#endif
383} 492}
384 493
385static void __flush_dcache_range_wb(unsigned long start, unsigned long end) 494static void __flush_dcache_range_wb(unsigned long start, unsigned long end)
386{ 495{
496#ifndef ASM_LOOP
497 int i;
498#endif
387 pr_debug("%s: start 0x%x, end 0x%x\n", __func__, 499 pr_debug("%s: start 0x%x, end 0x%x\n", __func__,
388 (unsigned int)start, (unsigned int) end); 500 (unsigned int)start, (unsigned int) end);
389 501
390 CACHE_LOOP_LIMITS(start, end, 502 CACHE_LOOP_LIMITS(start, end,
391 cpuinfo.dcache_line_length, cpuinfo.dcache_size); 503 cpuinfo.dcache_line_length, cpuinfo.dcache_size);
504#ifdef ASM_LOOP
392 CACHE_RANGE_LOOP_2(start, end, cpuinfo.dcache_line_length, wdc.flush); 505 CACHE_RANGE_LOOP_2(start, end, cpuinfo.dcache_line_length, wdc.flush);
506#else
507 for (i = start; i < end; i += cpuinfo.icache_line_length)
508 __asm__ __volatile__ ("wdc.flush %0, r0;" \
509 : : "r" (i));
510#endif
393} 511}
394 512
395/* struct for wb caches and for wt caches */ 513/* struct for wb caches and for wt caches */
@@ -493,7 +611,7 @@ const struct scache wt_nomsr_noirq = {
493#define CPUVER_7_20_A 0x0c 611#define CPUVER_7_20_A 0x0c
494#define CPUVER_7_20_D 0x0f 612#define CPUVER_7_20_D 0x0f
495 613
496#define INFO(s) printk(KERN_INFO "cache: " s " \n"); 614#define INFO(s) printk(KERN_INFO "cache: " s "\n");
497 615
498void microblaze_cache_init(void) 616void microblaze_cache_init(void)
499{ 617{
@@ -532,4 +650,9 @@ void microblaze_cache_init(void)
532 } 650 }
533 } 651 }
534 } 652 }
653 invalidate_dcache();
654 enable_dcache();
655
656 invalidate_icache();
657 enable_icache();
535} 658}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo.c b/arch/microblaze/kernel/cpu/cpuinfo.c
index 991d71311b0e..255ef880351e 100644
--- a/arch/microblaze/kernel/cpu/cpuinfo.c
+++ b/arch/microblaze/kernel/cpu/cpuinfo.c
@@ -9,7 +9,6 @@
9 */ 9 */
10 10
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/slab.h>
13#include <asm/cpuinfo.h> 12#include <asm/cpuinfo.h>
14#include <asm/pvr.h> 13#include <asm/pvr.h>
15 14
diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c
new file mode 100644
index 000000000000..ce72dd4967cf
--- /dev/null
+++ b/arch/microblaze/kernel/dma.c
@@ -0,0 +1,157 @@
1/*
2 * Copyright (C) 2009-2010 PetaLogix
3 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corporation
4 *
5 * Provide default implementations of the DMA mapping callbacks for
6 * directly mapped busses.
7 */
8
9#include <linux/device.h>
10#include <linux/dma-mapping.h>
11#include <linux/gfp.h>
12#include <linux/dma-debug.h>
13#include <asm/bug.h>
14#include <asm/cacheflush.h>
15
16/*
17 * Generic direct DMA implementation
18 *
19 * This implementation supports a per-device offset that can be applied if
20 * the address at which memory is visible to devices is not 0. Platform code
21 * can set archdata.dma_data to an unsigned long holding the offset. By
22 * default the offset is PCI_DRAM_OFFSET.
23 */
24static inline void __dma_sync_page(unsigned long paddr, unsigned long offset,
25 size_t size, enum dma_data_direction direction)
26{
27 switch (direction) {
28 case DMA_TO_DEVICE:
29 flush_dcache_range(paddr + offset, paddr + offset + size);
30 break;
31 case DMA_FROM_DEVICE:
32 invalidate_dcache_range(paddr + offset, paddr + offset + size);
33 break;
34 default:
35 BUG();
36 }
37}
38
39static unsigned long get_dma_direct_offset(struct device *dev)
40{
41 if (likely(dev))
42 return (unsigned long)dev->archdata.dma_data;
43
44 return PCI_DRAM_OFFSET; /* FIXME Not sure if is correct */
45}
46
47#define NOT_COHERENT_CACHE
48
49static void *dma_direct_alloc_coherent(struct device *dev, size_t size,
50 dma_addr_t *dma_handle, gfp_t flag)
51{
52#ifdef NOT_COHERENT_CACHE
53 return consistent_alloc(flag, size, dma_handle);
54#else
55 void *ret;
56 struct page *page;
57 int node = dev_to_node(dev);
58
59 /* ignore region specifiers */
60 flag &= ~(__GFP_HIGHMEM);
61
62 page = alloc_pages_node(node, flag, get_order(size));
63 if (page == NULL)
64 return NULL;
65 ret = page_address(page);
66 memset(ret, 0, size);
67 *dma_handle = virt_to_phys(ret) + get_dma_direct_offset(dev);
68
69 return ret;
70#endif
71}
72
73static void dma_direct_free_coherent(struct device *dev, size_t size,
74 void *vaddr, dma_addr_t dma_handle)
75{
76#ifdef NOT_COHERENT_CACHE
77 consistent_free(vaddr);
78#else
79 free_pages((unsigned long)vaddr, get_order(size));
80#endif
81}
82
83static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
84 int nents, enum dma_data_direction direction,
85 struct dma_attrs *attrs)
86{
87 struct scatterlist *sg;
88 int i;
89
90 /* FIXME this part of code is untested */
91 for_each_sg(sgl, sg, nents, i) {
92 sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev);
93 sg->dma_length = sg->length;
94 __dma_sync_page(page_to_phys(sg_page(sg)), sg->offset,
95 sg->length, direction);
96 }
97
98 return nents;
99}
100
101static void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sg,
102 int nents, enum dma_data_direction direction,
103 struct dma_attrs *attrs)
104{
105}
106
107static int dma_direct_dma_supported(struct device *dev, u64 mask)
108{
109 return 1;
110}
111
112static inline dma_addr_t dma_direct_map_page(struct device *dev,
113 struct page *page,
114 unsigned long offset,
115 size_t size,
116 enum dma_data_direction direction,
117 struct dma_attrs *attrs)
118{
119 __dma_sync_page(page_to_phys(page), offset, size, direction);
120 return page_to_phys(page) + offset + get_dma_direct_offset(dev);
121}
122
123static inline void dma_direct_unmap_page(struct device *dev,
124 dma_addr_t dma_address,
125 size_t size,
126 enum dma_data_direction direction,
127 struct dma_attrs *attrs)
128{
129/* There is not necessary to do cache cleanup
130 *
131 * phys_to_virt is here because in __dma_sync_page is __virt_to_phys and
132 * dma_address is physical address
133 */
134 __dma_sync_page(dma_address, 0 , size, direction);
135}
136
137struct dma_map_ops dma_direct_ops = {
138 .alloc_coherent = dma_direct_alloc_coherent,
139 .free_coherent = dma_direct_free_coherent,
140 .map_sg = dma_direct_map_sg,
141 .unmap_sg = dma_direct_unmap_sg,
142 .dma_supported = dma_direct_dma_supported,
143 .map_page = dma_direct_map_page,
144 .unmap_page = dma_direct_unmap_page,
145};
146EXPORT_SYMBOL(dma_direct_ops);
147
148/* Number of entries preallocated for DMA-API debugging */
149#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)
150
151static int __init dma_init(void)
152{
153 dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);
154
155 return 0;
156}
157fs_initcall(dma_init);
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S
index 3bad4ff49471..c0ede25c5b99 100644
--- a/arch/microblaze/kernel/entry.S
+++ b/arch/microblaze/kernel/entry.S
@@ -305,7 +305,7 @@ C_ENTRY(_user_exception):
305 swi r11, r1, PTO+PT_R1; /* Store user SP. */ 305 swi r11, r1, PTO+PT_R1; /* Store user SP. */
306 addi r11, r0, 1; 306 addi r11, r0, 1;
307 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode. */ 307 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode. */
3082: lwi r31, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); /* get saved current */ 3082: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
309 /* Save away the syscall number. */ 309 /* Save away the syscall number. */
310 swi r12, r1, PTO+PT_R0; 310 swi r12, r1, PTO+PT_R0;
311 tovirt(r1,r1) 311 tovirt(r1,r1)
@@ -322,8 +322,7 @@ C_ENTRY(_user_exception):
322 rtid r11, 0 322 rtid r11, 0
323 nop 323 nop
3243: 3243:
325 add r11, r0, CURRENT_TASK /* Get current task ptr into r11 */ 325 lwi r11, CURRENT_TASK, TS_THREAD_INFO /* get thread info */
326 lwi r11, r11, TS_THREAD_INFO /* get thread info */
327 lwi r11, r11, TI_FLAGS /* get flags in thread info */ 326 lwi r11, r11, TI_FLAGS /* get flags in thread info */
328 andi r11, r11, _TIF_WORK_SYSCALL_MASK 327 andi r11, r11, _TIF_WORK_SYSCALL_MASK
329 beqi r11, 4f 328 beqi r11, 4f
@@ -382,60 +381,50 @@ C_ENTRY(ret_from_trap):
382/* See if returning to kernel mode, if so, skip resched &c. */ 381/* See if returning to kernel mode, if so, skip resched &c. */
383 bnei r11, 2f; 382 bnei r11, 2f;
384 383
384 swi r3, r1, PTO + PT_R3
385 swi r4, r1, PTO + PT_R4
386
385 /* We're returning to user mode, so check for various conditions that 387 /* We're returning to user mode, so check for various conditions that
386 * trigger rescheduling. */ 388 * trigger rescheduling. */
387 # FIXME: Restructure all these flag checks. 389 /* FIXME: Restructure all these flag checks. */
388 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 390 lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
389 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
390 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 391 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
391 andi r11, r11, _TIF_WORK_SYSCALL_MASK 392 andi r11, r11, _TIF_WORK_SYSCALL_MASK
392 beqi r11, 1f 393 beqi r11, 1f
393 394
394 swi r3, r1, PTO + PT_R3
395 swi r4, r1, PTO + PT_R4
396 brlid r15, do_syscall_trace_leave 395 brlid r15, do_syscall_trace_leave
397 addik r5, r1, PTO + PT_R0 396 addik r5, r1, PTO + PT_R0
398 lwi r3, r1, PTO + PT_R3
399 lwi r4, r1, PTO + PT_R4
4001: 3971:
401
402 /* We're returning to user mode, so check for various conditions that 398 /* We're returning to user mode, so check for various conditions that
403 * trigger rescheduling. */ 399 * trigger rescheduling. */
404 /* Get current task ptr into r11 */ 400 /* get thread info from current task */
405 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 401 lwi r11, CURRENT_TASK, TS_THREAD_INFO;
406 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
407 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 402 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
408 andi r11, r11, _TIF_NEED_RESCHED; 403 andi r11, r11, _TIF_NEED_RESCHED;
409 beqi r11, 5f; 404 beqi r11, 5f;
410 405
411 swi r3, r1, PTO + PT_R3; /* store syscall result */
412 swi r4, r1, PTO + PT_R4;
413 bralid r15, schedule; /* Call scheduler */ 406 bralid r15, schedule; /* Call scheduler */
414 nop; /* delay slot */ 407 nop; /* delay slot */
415 lwi r3, r1, PTO + PT_R3; /* restore syscall result */
416 lwi r4, r1, PTO + PT_R4;
417 408
418 /* Maybe handle a signal */ 409 /* Maybe handle a signal */
4195: add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 4105: /* get thread info from current task*/
420 lwi r11, r11, TS_THREAD_INFO; /* get thread info */ 411 lwi r11, CURRENT_TASK, TS_THREAD_INFO;
421 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 412 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
422 andi r11, r11, _TIF_SIGPENDING; 413 andi r11, r11, _TIF_SIGPENDING;
423 beqi r11, 1f; /* Signals to handle, handle them */ 414 beqi r11, 1f; /* Signals to handle, handle them */
424 415
425 swi r3, r1, PTO + PT_R3; /* store syscall result */
426 swi r4, r1, PTO + PT_R4;
427 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ 416 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
428 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
429 addi r7, r0, 1; /* Arg 3: int in_syscall */ 417 addi r7, r0, 1; /* Arg 3: int in_syscall */
430 bralid r15, do_signal; /* Handle any signals */ 418 bralid r15, do_signal; /* Handle any signals */
431 nop; 419 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
420
421/* Finally, return to user state. */
4221:
432 lwi r3, r1, PTO + PT_R3; /* restore syscall result */ 423 lwi r3, r1, PTO + PT_R3; /* restore syscall result */
433 lwi r4, r1, PTO + PT_R4; 424 lwi r4, r1, PTO + PT_R4;
434 425
435/* Finally, return to user state. */ 426 swi r0, r0, PER_CPU(KM); /* Now officially in user state. */
4361: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ 427 swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */
437 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */
438 swi r11, r0, PER_CPU(CURRENT_SAVE); /* save current */
439 VM_OFF; 428 VM_OFF;
440 tophys(r1,r1); 429 tophys(r1,r1);
441 RESTORE_REGS; 430 RESTORE_REGS;
@@ -565,7 +554,7 @@ C_ENTRY(sys_rt_sigreturn_wrapper):
565 swi r11, r1, PTO+PT_R1; /* Store user SP. */ \ 554 swi r11, r1, PTO+PT_R1; /* Store user SP. */ \
566 addi r11, r0, 1; \ 555 addi r11, r0, 1; \
567 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode.*/\ 556 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode.*/\
5682: lwi r31, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); /* get saved current */\ 5572: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); \
569 /* Save away the syscall number. */ \ 558 /* Save away the syscall number. */ \
570 swi r0, r1, PTO+PT_R0; \ 559 swi r0, r1, PTO+PT_R0; \
571 tovirt(r1,r1) 560 tovirt(r1,r1)
@@ -673,9 +662,7 @@ C_ENTRY(ret_from_exc):
673 662
674 /* We're returning to user mode, so check for various conditions that 663 /* We're returning to user mode, so check for various conditions that
675 trigger rescheduling. */ 664 trigger rescheduling. */
676 /* Get current task ptr into r11 */ 665 lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
677 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */
678 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
679 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 666 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
680 andi r11, r11, _TIF_NEED_RESCHED; 667 andi r11, r11, _TIF_NEED_RESCHED;
681 beqi r11, 5f; 668 beqi r11, 5f;
@@ -685,8 +672,7 @@ C_ENTRY(ret_from_exc):
685 nop; /* delay slot */ 672 nop; /* delay slot */
686 673
687 /* Maybe handle a signal */ 674 /* Maybe handle a signal */
6885: add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 6755: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
689 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
690 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 676 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
691 andi r11, r11, _TIF_SIGPENDING; 677 andi r11, r11, _TIF_SIGPENDING;
692 beqi r11, 1f; /* Signals to handle, handle them */ 678 beqi r11, 1f; /* Signals to handle, handle them */
@@ -705,15 +691,13 @@ C_ENTRY(ret_from_exc):
705 * store return registers separately because this macros is use 691 * store return registers separately because this macros is use
706 * for others exceptions */ 692 * for others exceptions */
707 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ 693 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
708 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
709 addi r7, r0, 0; /* Arg 3: int in_syscall */ 694 addi r7, r0, 0; /* Arg 3: int in_syscall */
710 bralid r15, do_signal; /* Handle any signals */ 695 bralid r15, do_signal; /* Handle any signals */
711 nop; 696 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
712 697
713/* Finally, return to user state. */ 698/* Finally, return to user state. */
7141: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ 6991: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */
715 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 700 swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */
716 swi r11, r0, PER_CPU(CURRENT_SAVE); /* save current */
717 VM_OFF; 701 VM_OFF;
718 tophys(r1,r1); 702 tophys(r1,r1);
719 703
@@ -802,7 +786,7 @@ C_ENTRY(_interrupt):
802 swi r11, r0, TOPHYS(PER_CPU(KM)); 786 swi r11, r0, TOPHYS(PER_CPU(KM));
803 787
8042: 7882:
805 lwi r31, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); 789 lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
806 swi r0, r1, PTO + PT_R0; 790 swi r0, r1, PTO + PT_R0;
807 tovirt(r1,r1) 791 tovirt(r1,r1)
808 la r5, r1, PTO; 792 la r5, r1, PTO;
@@ -817,8 +801,7 @@ ret_from_irq:
817 lwi r11, r1, PTO + PT_MODE; 801 lwi r11, r1, PTO + PT_MODE;
818 bnei r11, 2f; 802 bnei r11, 2f;
819 803
820 add r11, r0, CURRENT_TASK; 804 lwi r11, CURRENT_TASK, TS_THREAD_INFO;
821 lwi r11, r11, TS_THREAD_INFO;
822 lwi r11, r11, TI_FLAGS; /* MS: get flags from thread info */ 805 lwi r11, r11, TI_FLAGS; /* MS: get flags from thread info */
823 andi r11, r11, _TIF_NEED_RESCHED; 806 andi r11, r11, _TIF_NEED_RESCHED;
824 beqi r11, 5f 807 beqi r11, 5f
@@ -826,8 +809,7 @@ ret_from_irq:
826 nop; /* delay slot */ 809 nop; /* delay slot */
827 810
828 /* Maybe handle a signal */ 811 /* Maybe handle a signal */
8295: add r11, r0, CURRENT_TASK; 8125: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* MS: get thread info */
830 lwi r11, r11, TS_THREAD_INFO; /* MS: get thread info */
831 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 813 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
832 andi r11, r11, _TIF_SIGPENDING; 814 andi r11, r11, _TIF_SIGPENDING;
833 beqid r11, no_intr_resched 815 beqid r11, no_intr_resched
@@ -842,8 +824,7 @@ no_intr_resched:
842 /* Disable interrupts, we are now committed to the state restore */ 824 /* Disable interrupts, we are now committed to the state restore */
843 disable_irq 825 disable_irq
844 swi r0, r0, PER_CPU(KM); /* MS: Now officially in user state. */ 826 swi r0, r0, PER_CPU(KM); /* MS: Now officially in user state. */
845 add r11, r0, CURRENT_TASK; 827 swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE);
846 swi r11, r0, PER_CPU(CURRENT_SAVE);
847 VM_OFF; 828 VM_OFF;
848 tophys(r1,r1); 829 tophys(r1,r1);
849 lwi r3, r1, PTO + PT_R3; /* MS: restore saved r3, r4 registers */ 830 lwi r3, r1, PTO + PT_R3; /* MS: restore saved r3, r4 registers */
@@ -853,7 +834,28 @@ no_intr_resched:
853 lwi r1, r1, PT_R1 - PT_SIZE; 834 lwi r1, r1, PT_R1 - PT_SIZE;
854 bri 6f; 835 bri 6f;
855/* MS: Return to kernel state. */ 836/* MS: Return to kernel state. */
8562: VM_OFF /* MS: turn off MMU */ 8372:
838#ifdef CONFIG_PREEMPT
839 lwi r11, CURRENT_TASK, TS_THREAD_INFO;
840 /* MS: get preempt_count from thread info */
841 lwi r5, r11, TI_PREEMPT_COUNT;
842 bgti r5, restore;
843
844 lwi r5, r11, TI_FLAGS; /* get flags in thread info */
845 andi r5, r5, _TIF_NEED_RESCHED;
846 beqi r5, restore /* if zero jump over */
847
848preempt:
849 /* interrupts are off that's why I am calling preempt_chedule_irq */
850 bralid r15, preempt_schedule_irq
851 nop
852 lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
853 lwi r5, r11, TI_FLAGS; /* get flags in thread info */
854 andi r5, r5, _TIF_NEED_RESCHED;
855 bnei r5, preempt /* if non zero jump to resched */
856restore:
857#endif
858 VM_OFF /* MS: turn off MMU */
857 tophys(r1,r1) 859 tophys(r1,r1)
858 lwi r3, r1, PTO + PT_R3; /* MS: restore saved r3, r4 registers */ 860 lwi r3, r1, PTO + PT_R3; /* MS: restore saved r3, r4 registers */
859 lwi r4, r1, PTO + PT_R4; 861 lwi r4, r1, PTO + PT_R4;
@@ -915,7 +917,7 @@ C_ENTRY(_debug_exception):
915 swi r11, r1, PTO+PT_R1; /* Store user SP. */ 917 swi r11, r1, PTO+PT_R1; /* Store user SP. */
916 addi r11, r0, 1; 918 addi r11, r0, 1;
917 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode. */ 919 swi r11, r0, TOPHYS(PER_CPU(KM)); /* Now we're in kernel-mode. */
9182: lwi r31, r0, TOPHYS(PER_CPU(CURRENT_SAVE)); /* get saved current */ 9202: lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
919 /* Save away the syscall number. */ 921 /* Save away the syscall number. */
920 swi r0, r1, PTO+PT_R0; 922 swi r0, r1, PTO+PT_R0;
921 tovirt(r1,r1) 923 tovirt(r1,r1)
@@ -935,8 +937,7 @@ dbtrap_call: rtbd r11, 0;
935 bnei r11, 2f; 937 bnei r11, 2f;
936 938
937 /* Get current task ptr into r11 */ 939 /* Get current task ptr into r11 */
938 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 940 lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
939 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
940 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 941 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
941 andi r11, r11, _TIF_NEED_RESCHED; 942 andi r11, r11, _TIF_NEED_RESCHED;
942 beqi r11, 5f; 943 beqi r11, 5f;
@@ -949,8 +950,7 @@ dbtrap_call: rtbd r11, 0;
949 /* XXX m68knommu also checks TASK_STATE & TASK_COUNTER here. */ 950 /* XXX m68knommu also checks TASK_STATE & TASK_COUNTER here. */
950 951
951 /* Maybe handle a signal */ 952 /* Maybe handle a signal */
9525: add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 9535: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
953 lwi r11, r11, TS_THREAD_INFO; /* get thread info */
954 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 954 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
955 andi r11, r11, _TIF_SIGPENDING; 955 andi r11, r11, _TIF_SIGPENDING;
956 beqi r11, 1f; /* Signals to handle, handle them */ 956 beqi r11, 1f; /* Signals to handle, handle them */
@@ -966,16 +966,14 @@ dbtrap_call: rtbd r11, 0;
966 (in a possibly modified form) after do_signal returns. */ 966 (in a possibly modified form) after do_signal returns. */
967 967
968 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ 968 la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
969 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
970 addi r7, r0, 0; /* Arg 3: int in_syscall */ 969 addi r7, r0, 0; /* Arg 3: int in_syscall */
971 bralid r15, do_signal; /* Handle any signals */ 970 bralid r15, do_signal; /* Handle any signals */
972 nop; 971 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
973 972
974 973
975/* Finally, return to user state. */ 974/* Finally, return to user state. */
9761: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ 9751: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */
977 add r11, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 976 swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */
978 swi r11, r0, PER_CPU(CURRENT_SAVE); /* save current */
979 VM_OFF; 977 VM_OFF;
980 tophys(r1,r1); 978 tophys(r1,r1);
981 979
@@ -1007,7 +1005,7 @@ DBTRAP_return: /* Make global symbol for debugging */
1007 1005
1008ENTRY(_switch_to) 1006ENTRY(_switch_to)
1009 /* prepare return value */ 1007 /* prepare return value */
1010 addk r3, r0, r31 1008 addk r3, r0, CURRENT_TASK
1011 1009
1012 /* save registers in cpu_context */ 1010 /* save registers in cpu_context */
1013 /* use r11 and r12, volatile registers, as temp register */ 1011 /* use r11 and r12, volatile registers, as temp register */
@@ -1051,10 +1049,10 @@ ENTRY(_switch_to)
1051 nop 1049 nop
1052 swi r12, r11, CC_FSR 1050 swi r12, r11, CC_FSR
1053 1051
1054 /* update r31, the current */ 1052 /* update r31, the current-give me pointer to task which will be next */
1055 lwi r31, r6, TI_TASK/* give me pointer to task which will be next */ 1053 lwi CURRENT_TASK, r6, TI_TASK
1056 /* stored it to current_save too */ 1054 /* stored it to current_save too */
1057 swi r31, r0, PER_CPU(CURRENT_SAVE) 1055 swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE)
1058 1056
1059 /* get new process' cpu context and restore */ 1057 /* get new process' cpu context and restore */
1060 /* give me start where start context of next task */ 1058 /* give me start where start context of next task */
diff --git a/arch/microblaze/kernel/ftrace.c b/arch/microblaze/kernel/ftrace.c
index 388b31ca65a1..515feb404555 100644
--- a/arch/microblaze/kernel/ftrace.c
+++ b/arch/microblaze/kernel/ftrace.c
@@ -151,13 +151,10 @@ int ftrace_make_nop(struct module *mod,
151 return ret; 151 return ret;
152} 152}
153 153
154static int ret_addr; /* initialized as 0 by default */
155
156/* I believe that first is called ftrace_make_nop before this function */ 154/* I believe that first is called ftrace_make_nop before this function */
157int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) 155int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
158{ 156{
159 int ret; 157 int ret;
160 ret_addr = addr; /* saving where the barrier jump is */
161 pr_debug("%s: addr:0x%x, rec->ip: 0x%x, imm:0x%x\n", 158 pr_debug("%s: addr:0x%x, rec->ip: 0x%x, imm:0x%x\n",
162 __func__, (unsigned int)addr, (unsigned int)rec->ip, imm); 159 __func__, (unsigned int)addr, (unsigned int)rec->ip, imm);
163 ret = ftrace_modify_code(rec->ip, imm); 160 ret = ftrace_modify_code(rec->ip, imm);
@@ -194,12 +191,9 @@ int ftrace_update_ftrace_func(ftrace_func_t func)
194 ret = ftrace_modify_code(ip, upper); 191 ret = ftrace_modify_code(ip, upper);
195 ret += ftrace_modify_code(ip + 4, lower); 192 ret += ftrace_modify_code(ip + 4, lower);
196 193
197 /* We just need to remove the rtsd r15, 8 by NOP */ 194 /* We just need to replace the rtsd r15, 8 with NOP */
198 BUG_ON(!ret_addr); 195 ret += ftrace_modify_code((unsigned long)&ftrace_caller,
199 if (ret_addr) 196 MICROBLAZE_NOP);
200 ret += ftrace_modify_code(ret_addr, MICROBLAZE_NOP);
201 else
202 ret = 1; /* fault */
203 197
204 /* All changes are done - lets do caches consistent */ 198 /* All changes are done - lets do caches consistent */
205 flush_icache(); 199 flush_icache();
diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
index 30916193fcc7..da6a5f5dc766 100644
--- a/arch/microblaze/kernel/head.S
+++ b/arch/microblaze/kernel/head.S
@@ -51,6 +51,12 @@ swapper_pg_dir:
51 51
52 .text 52 .text
53ENTRY(_start) 53ENTRY(_start)
54#if CONFIG_KERNEL_BASE_ADDR == 0
55 brai TOPHYS(real_start)
56 .org 0x100
57real_start:
58#endif
59
54 mfs r1, rmsr 60 mfs r1, rmsr
55 andi r1, r1, ~2 61 andi r1, r1, ~2
56 mts rmsr, r1 62 mts rmsr, r1
@@ -99,8 +105,8 @@ no_fdt_arg:
99 tophys(r4,r4) /* convert to phys address */ 105 tophys(r4,r4) /* convert to phys address */
100 ori r3, r0, COMMAND_LINE_SIZE - 1 /* number of loops */ 106 ori r3, r0, COMMAND_LINE_SIZE - 1 /* number of loops */
101_copy_command_line: 107_copy_command_line:
102 lbu r7, r5, r6 /* r7=r5+r6 - r5 contain pointer to command line */ 108 lbu r2, r5, r6 /* r2=r5+r6 - r5 contain pointer to command line */
103 sb r7, r4, r6 /* addr[r4+r6]= r7*/ 109 sb r2, r4, r6 /* addr[r4+r6]= r2*/
104 addik r6, r6, 1 /* increment counting */ 110 addik r6, r6, 1 /* increment counting */
105 bgtid r3, _copy_command_line /* loop for all entries */ 111 bgtid r3, _copy_command_line /* loop for all entries */
106 addik r3, r3, -1 /* descrement loop */ 112 addik r3, r3, -1 /* descrement loop */
@@ -128,7 +134,7 @@ _copy_bram:
128 * virtual to physical. 134 * virtual to physical.
129 */ 135 */
130 nop 136 nop
131 addik r3, r0, 63 /* Invalidate all TLB entries */ 137 addik r3, r0, MICROBLAZE_TLB_SIZE -1 /* Invalidate all TLB entries */
132_invalidate: 138_invalidate:
133 mts rtlbx, r3 139 mts rtlbx, r3
134 mts rtlbhi, r0 /* flush: ensure V is clear */ 140 mts rtlbhi, r0 /* flush: ensure V is clear */
@@ -136,6 +142,11 @@ _invalidate:
136 addik r3, r3, -1 142 addik r3, r3, -1
137 /* sync */ 143 /* sync */
138 144
145 /* Setup the kernel PID */
146 mts rpid,r0 /* Load the kernel PID */
147 nop
148 bri 4
149
139 /* 150 /*
140 * We should still be executing code at physical address area 151 * We should still be executing code at physical address area
141 * RAM_BASEADDR at this point. However, kernel code is at 152 * RAM_BASEADDR at this point. However, kernel code is at
@@ -146,10 +157,6 @@ _invalidate:
146 addik r3,r0, CONFIG_KERNEL_START /* Load the kernel virtual address */ 157 addik r3,r0, CONFIG_KERNEL_START /* Load the kernel virtual address */
147 tophys(r4,r3) /* Load the kernel physical address */ 158 tophys(r4,r3) /* Load the kernel physical address */
148 159
149 mts rpid,r0 /* Load the kernel PID */
150 nop
151 bri 4
152
153 /* 160 /*
154 * Configure and load two entries into TLB slots 0 and 1. 161 * Configure and load two entries into TLB slots 0 and 1.
155 * In case we are pinning TLBs, these are reserved in by the 162 * In case we are pinning TLBs, these are reserved in by the
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S
index 2b86c03aa841..995a2123635b 100644
--- a/arch/microblaze/kernel/hw_exception_handler.S
+++ b/arch/microblaze/kernel/hw_exception_handler.S
@@ -313,13 +313,13 @@ _hw_exception_handler:
313 mfs r5, rmsr; 313 mfs r5, rmsr;
314 nop 314 nop
315 swi r5, r1, 0; 315 swi r5, r1, 0;
316 mfs r3, resr 316 mfs r4, resr
317 nop 317 nop
318 mfs r4, rear; 318 mfs r3, rear;
319 nop 319 nop
320 320
321#ifndef CONFIG_MMU 321#ifndef CONFIG_MMU
322 andi r5, r3, 0x1000; /* Check ESR[DS] */ 322 andi r5, r4, 0x1000; /* Check ESR[DS] */
323 beqi r5, not_in_delay_slot; /* Branch if ESR[DS] not set */ 323 beqi r5, not_in_delay_slot; /* Branch if ESR[DS] not set */
324 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */ 324 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */
325 nop 325 nop
@@ -327,13 +327,14 @@ not_in_delay_slot:
327 swi r17, r1, PT_R17 327 swi r17, r1, PT_R17
328#endif 328#endif
329 329
330 andi r5, r3, 0x1F; /* Extract ESR[EXC] */ 330 andi r5, r4, 0x1F; /* Extract ESR[EXC] */
331 331
332#ifdef CONFIG_MMU 332#ifdef CONFIG_MMU
333 /* Calculate exception vector offset = r5 << 2 */ 333 /* Calculate exception vector offset = r5 << 2 */
334 addk r6, r5, r5; /* << 1 */ 334 addk r6, r5, r5; /* << 1 */
335 addk r6, r6, r6; /* << 2 */ 335 addk r6, r6, r6; /* << 2 */
336 336
337#ifdef DEBUG
337/* counting which exception happen */ 338/* counting which exception happen */
338 lwi r5, r0, 0x200 + TOPHYS(r0_ram) 339 lwi r5, r0, 0x200 + TOPHYS(r0_ram)
339 addi r5, r5, 1 340 addi r5, r5, 1
@@ -341,6 +342,7 @@ not_in_delay_slot:
341 lwi r5, r6, 0x200 + TOPHYS(r0_ram) 342 lwi r5, r6, 0x200 + TOPHYS(r0_ram)
342 addi r5, r5, 1 343 addi r5, r5, 1
343 swi r5, r6, 0x200 + TOPHYS(r0_ram) 344 swi r5, r6, 0x200 + TOPHYS(r0_ram)
345#endif
344/* end */ 346/* end */
345 /* Load the HW Exception vector */ 347 /* Load the HW Exception vector */
346 lwi r6, r6, TOPHYS(_MB_HW_ExceptionVectorTable) 348 lwi r6, r6, TOPHYS(_MB_HW_ExceptionVectorTable)
@@ -376,7 +378,7 @@ handle_other_ex: /* Handle Other exceptions here */
376 swi r18, r1, PT_R18 378 swi r18, r1, PT_R18
377 379
378 or r5, r1, r0 380 or r5, r1, r0
379 andi r6, r3, 0x1F; /* Load ESR[EC] */ 381 andi r6, r4, 0x1F; /* Load ESR[EC] */
380 lwi r7, r0, PER_CPU(KM) /* MS: saving current kernel mode to regs */ 382 lwi r7, r0, PER_CPU(KM) /* MS: saving current kernel mode to regs */
381 swi r7, r1, PT_MODE 383 swi r7, r1, PT_MODE
382 mfs r7, rfsr 384 mfs r7, rfsr
@@ -426,11 +428,11 @@ handle_other_ex: /* Handle Other exceptions here */
426 */ 428 */
427handle_unaligned_ex: 429handle_unaligned_ex:
428 /* Working registers already saved: R3, R4, R5, R6 430 /* Working registers already saved: R3, R4, R5, R6
429 * R3 = ESR 431 * R4 = ESR
430 * R4 = EAR 432 * R3 = EAR
431 */ 433 */
432#ifdef CONFIG_MMU 434#ifdef CONFIG_MMU
433 andi r6, r3, 0x1000 /* Check ESR[DS] */ 435 andi r6, r4, 0x1000 /* Check ESR[DS] */
434 beqi r6, _no_delayslot /* Branch if ESR[DS] not set */ 436 beqi r6, _no_delayslot /* Branch if ESR[DS] not set */
435 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */ 437 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */
436 nop 438 nop
@@ -439,7 +441,7 @@ _no_delayslot:
439 RESTORE_STATE; 441 RESTORE_STATE;
440 bri unaligned_data_trap 442 bri unaligned_data_trap
441#endif 443#endif
442 andi r6, r3, 0x3E0; /* Mask and extract the register operand */ 444 andi r6, r4, 0x3E0; /* Mask and extract the register operand */
443 srl r6, r6; /* r6 >> 5 */ 445 srl r6, r6; /* r6 >> 5 */
444 srl r6, r6; 446 srl r6, r6;
445 srl r6, r6; 447 srl r6, r6;
@@ -448,33 +450,33 @@ _no_delayslot:
448 /* Store the register operand in a temporary location */ 450 /* Store the register operand in a temporary location */
449 sbi r6, r0, TOPHYS(ex_reg_op); 451 sbi r6, r0, TOPHYS(ex_reg_op);
450 452
451 andi r6, r3, 0x400; /* Extract ESR[S] */ 453 andi r6, r4, 0x400; /* Extract ESR[S] */
452 bnei r6, ex_sw; 454 bnei r6, ex_sw;
453ex_lw: 455ex_lw:
454 andi r6, r3, 0x800; /* Extract ESR[W] */ 456 andi r6, r4, 0x800; /* Extract ESR[W] */
455 beqi r6, ex_lhw; 457 beqi r6, ex_lhw;
456 lbui r5, r4, 0; /* Exception address in r4 */ 458 lbui r5, r3, 0; /* Exception address in r3 */
457 /* Load a word, byte-by-byte from destination address 459 /* Load a word, byte-by-byte from destination address
458 and save it in tmp space */ 460 and save it in tmp space */
459 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0); 461 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
460 lbui r5, r4, 1; 462 lbui r5, r3, 1;
461 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1); 463 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
462 lbui r5, r4, 2; 464 lbui r5, r3, 2;
463 sbi r5, r0, TOPHYS(ex_tmp_data_loc_2); 465 sbi r5, r0, TOPHYS(ex_tmp_data_loc_2);
464 lbui r5, r4, 3; 466 lbui r5, r3, 3;
465 sbi r5, r0, TOPHYS(ex_tmp_data_loc_3); 467 sbi r5, r0, TOPHYS(ex_tmp_data_loc_3);
466 /* Get the destination register value into r3 */ 468 /* Get the destination register value into r4 */
467 lwi r3, r0, TOPHYS(ex_tmp_data_loc_0); 469 lwi r4, r0, TOPHYS(ex_tmp_data_loc_0);
468 bri ex_lw_tail; 470 bri ex_lw_tail;
469ex_lhw: 471ex_lhw:
470 lbui r5, r4, 0; /* Exception address in r4 */ 472 lbui r5, r3, 0; /* Exception address in r3 */
471 /* Load a half-word, byte-by-byte from destination 473 /* Load a half-word, byte-by-byte from destination
472 address and save it in tmp space */ 474 address and save it in tmp space */
473 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0); 475 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
474 lbui r5, r4, 1; 476 lbui r5, r3, 1;
475 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1); 477 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
476 /* Get the destination register value into r3 */ 478 /* Get the destination register value into r4 */
477 lhui r3, r0, TOPHYS(ex_tmp_data_loc_0); 479 lhui r4, r0, TOPHYS(ex_tmp_data_loc_0);
478ex_lw_tail: 480ex_lw_tail:
479 /* Get the destination register number into r5 */ 481 /* Get the destination register number into r5 */
480 lbui r5, r0, TOPHYS(ex_reg_op); 482 lbui r5, r0, TOPHYS(ex_reg_op);
@@ -502,25 +504,25 @@ ex_sw_tail:
502 andi r6, r6, 0x800; /* Extract ESR[W] */ 504 andi r6, r6, 0x800; /* Extract ESR[W] */
503 beqi r6, ex_shw; 505 beqi r6, ex_shw;
504 /* Get the word - delay slot */ 506 /* Get the word - delay slot */
505 swi r3, r0, TOPHYS(ex_tmp_data_loc_0); 507 swi r4, r0, TOPHYS(ex_tmp_data_loc_0);
506 /* Store the word, byte-by-byte into destination address */ 508 /* Store the word, byte-by-byte into destination address */
507 lbui r3, r0, TOPHYS(ex_tmp_data_loc_0); 509 lbui r4, r0, TOPHYS(ex_tmp_data_loc_0);
508 sbi r3, r4, 0; 510 sbi r4, r3, 0;
509 lbui r3, r0, TOPHYS(ex_tmp_data_loc_1); 511 lbui r4, r0, TOPHYS(ex_tmp_data_loc_1);
510 sbi r3, r4, 1; 512 sbi r4, r3, 1;
511 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2); 513 lbui r4, r0, TOPHYS(ex_tmp_data_loc_2);
512 sbi r3, r4, 2; 514 sbi r4, r3, 2;
513 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3); 515 lbui r4, r0, TOPHYS(ex_tmp_data_loc_3);
514 sbi r3, r4, 3; 516 sbi r4, r3, 3;
515 bri ex_handler_done; 517 bri ex_handler_done;
516 518
517ex_shw: 519ex_shw:
518 /* Store the lower half-word, byte-by-byte into destination address */ 520 /* Store the lower half-word, byte-by-byte into destination address */
519 swi r3, r0, TOPHYS(ex_tmp_data_loc_0); 521 swi r4, r0, TOPHYS(ex_tmp_data_loc_0);
520 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2); 522 lbui r4, r0, TOPHYS(ex_tmp_data_loc_2);
521 sbi r3, r4, 0; 523 sbi r4, r3, 0;
522 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3); 524 lbui r4, r0, TOPHYS(ex_tmp_data_loc_3);
523 sbi r3, r4, 1; 525 sbi r4, r3, 1;
524ex_sw_end: /* Exception handling of store word, ends. */ 526ex_sw_end: /* Exception handling of store word, ends. */
525 527
526ex_handler_done: 528ex_handler_done:
@@ -560,21 +562,16 @@ ex_handler_done:
560 */ 562 */
561 mfs r11, rpid 563 mfs r11, rpid
562 nop 564 nop
563 bri 4
564 mfs r3, rear /* Get faulting address */
565 nop
566 /* If we are faulting a kernel address, we have to use the 565 /* If we are faulting a kernel address, we have to use the
567 * kernel page tables. 566 * kernel page tables.
568 */ 567 */
569 ori r4, r0, CONFIG_KERNEL_START 568 ori r5, r0, CONFIG_KERNEL_START
570 cmpu r4, r3, r4 569 cmpu r5, r3, r5
571 bgti r4, ex3 570 bgti r5, ex3
572 /* First, check if it was a zone fault (which means a user 571 /* First, check if it was a zone fault (which means a user
573 * tried to access a kernel or read-protected page - always 572 * tried to access a kernel or read-protected page - always
574 * a SEGV). All other faults here must be stores, so no 573 * a SEGV). All other faults here must be stores, so no
575 * need to check ESR_S as well. */ 574 * need to check ESR_S as well. */
576 mfs r4, resr
577 nop
578 andi r4, r4, 0x800 /* ESR_Z - zone protection */ 575 andi r4, r4, 0x800 /* ESR_Z - zone protection */
579 bnei r4, ex2 576 bnei r4, ex2
580 577
@@ -589,8 +586,6 @@ ex_handler_done:
589 * tried to access a kernel or read-protected page - always 586 * tried to access a kernel or read-protected page - always
590 * a SEGV). All other faults here must be stores, so no 587 * a SEGV). All other faults here must be stores, so no
591 * need to check ESR_S as well. */ 588 * need to check ESR_S as well. */
592 mfs r4, resr
593 nop
594 andi r4, r4, 0x800 /* ESR_Z */ 589 andi r4, r4, 0x800 /* ESR_Z */
595 bnei r4, ex2 590 bnei r4, ex2
596 /* get current task address */ 591 /* get current task address */
@@ -665,8 +660,6 @@ ex_handler_done:
665 * R3 = ESR 660 * R3 = ESR
666 */ 661 */
667 662
668 mfs r3, rear /* Get faulting address */
669 nop
670 RESTORE_STATE; 663 RESTORE_STATE;
671 bri page_fault_instr_trap 664 bri page_fault_instr_trap
672 665
@@ -677,18 +670,15 @@ ex_handler_done:
677 */ 670 */
678 handle_data_tlb_miss_exception: 671 handle_data_tlb_miss_exception:
679 /* Working registers already saved: R3, R4, R5, R6 672 /* Working registers already saved: R3, R4, R5, R6
680 * R3 = ESR 673 * R3 = EAR, R4 = ESR
681 */ 674 */
682 mfs r11, rpid 675 mfs r11, rpid
683 nop 676 nop
684 bri 4
685 mfs r3, rear /* Get faulting address */
686 nop
687 677
688 /* If we are faulting a kernel address, we have to use the 678 /* If we are faulting a kernel address, we have to use the
689 * kernel page tables. */ 679 * kernel page tables. */
690 ori r4, r0, CONFIG_KERNEL_START 680 ori r6, r0, CONFIG_KERNEL_START
691 cmpu r4, r3, r4 681 cmpu r4, r3, r6
692 bgti r4, ex5 682 bgti r4, ex5
693 ori r4, r0, swapper_pg_dir 683 ori r4, r0, swapper_pg_dir
694 mts rpid, r0 /* TLB will have 0 TID */ 684 mts rpid, r0 /* TLB will have 0 TID */
@@ -731,9 +721,8 @@ ex_handler_done:
731 * Many of these bits are software only. Bits we don't set 721 * Many of these bits are software only. Bits we don't set
732 * here we (properly should) assume have the appropriate value. 722 * here we (properly should) assume have the appropriate value.
733 */ 723 */
724 brid finish_tlb_load
734 andni r4, r4, 0x0ce2 /* Make sure 20, 21 are zero */ 725 andni r4, r4, 0x0ce2 /* Make sure 20, 21 are zero */
735
736 bri finish_tlb_load
737 ex7: 726 ex7:
738 /* The bailout. Restore registers to pre-exception conditions 727 /* The bailout. Restore registers to pre-exception conditions
739 * and call the heavyweights to help us out. 728 * and call the heavyweights to help us out.
@@ -754,9 +743,6 @@ ex_handler_done:
754 */ 743 */
755 mfs r11, rpid 744 mfs r11, rpid
756 nop 745 nop
757 bri 4
758 mfs r3, rear /* Get faulting address */
759 nop
760 746
761 /* If we are faulting a kernel address, we have to use the 747 /* If we are faulting a kernel address, we have to use the
762 * kernel page tables. 748 * kernel page tables.
@@ -792,7 +778,7 @@ ex_handler_done:
792 lwi r4, r5, 0 /* Get Linux PTE */ 778 lwi r4, r5, 0 /* Get Linux PTE */
793 779
794 andi r6, r4, _PAGE_PRESENT 780 andi r6, r4, _PAGE_PRESENT
795 beqi r6, ex7 781 beqi r6, ex10
796 782
797 ori r4, r4, _PAGE_ACCESSED 783 ori r4, r4, _PAGE_ACCESSED
798 swi r4, r5, 0 784 swi r4, r5, 0
@@ -805,9 +791,8 @@ ex_handler_done:
805 * Many of these bits are software only. Bits we don't set 791 * Many of these bits are software only. Bits we don't set
806 * here we (properly should) assume have the appropriate value. 792 * here we (properly should) assume have the appropriate value.
807 */ 793 */
794 brid finish_tlb_load
808 andni r4, r4, 0x0ce2 /* Make sure 20, 21 are zero */ 795 andni r4, r4, 0x0ce2 /* Make sure 20, 21 are zero */
809
810 bri finish_tlb_load
811 ex10: 796 ex10:
812 /* The bailout. Restore registers to pre-exception conditions 797 /* The bailout. Restore registers to pre-exception conditions
813 * and call the heavyweights to help us out. 798 * and call the heavyweights to help us out.
@@ -837,9 +822,9 @@ ex_handler_done:
837 andi r5, r5, (MICROBLAZE_TLB_SIZE-1) 822 andi r5, r5, (MICROBLAZE_TLB_SIZE-1)
838 ori r6, r0, 1 823 ori r6, r0, 1
839 cmp r31, r5, r6 824 cmp r31, r5, r6
840 blti r31, sem 825 blti r31, ex12
841 addik r5, r6, 1 826 addik r5, r6, 1
842 sem: 827 ex12:
843 /* MS: save back current TLB index */ 828 /* MS: save back current TLB index */
844 swi r5, r0, TOPHYS(tlb_index) 829 swi r5, r0, TOPHYS(tlb_index)
845 830
@@ -859,7 +844,6 @@ ex_handler_done:
859 nop 844 nop
860 845
861 /* Done...restore registers and get out of here. */ 846 /* Done...restore registers and get out of here. */
862 ex12:
863 mts rpid, r11 847 mts rpid, r11
864 nop 848 nop
865 bri 4 849 bri 4
diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
index 0f06034d1fe0..6f39e2c001f3 100644
--- a/arch/microblaze/kernel/irq.c
+++ b/arch/microblaze/kernel/irq.c
@@ -93,3 +93,18 @@ skip:
93 } 93 }
94 return 0; 94 return 0;
95} 95}
96
97/* MS: There is no any advance mapping mechanism. We are using simple 32bit
98 intc without any cascades or any connection that's why mapping is 1:1 */
99unsigned int irq_create_mapping(struct irq_host *host, irq_hw_number_t hwirq)
100{
101 return hwirq;
102}
103EXPORT_SYMBOL_GPL(irq_create_mapping);
104
105unsigned int irq_create_of_mapping(struct device_node *controller,
106 u32 *intspec, unsigned int intsize)
107{
108 return intspec[0];
109}
110EXPORT_SYMBOL_GPL(irq_create_of_mapping);
diff --git a/arch/microblaze/kernel/misc.S b/arch/microblaze/kernel/misc.S
index df16c6287a8e..7cf86498326c 100644
--- a/arch/microblaze/kernel/misc.S
+++ b/arch/microblaze/kernel/misc.S
@@ -26,9 +26,10 @@
26 * We avoid flushing the pinned 0, 1 and possibly 2 entries. 26 * We avoid flushing the pinned 0, 1 and possibly 2 entries.
27 */ 27 */
28.globl _tlbia; 28.globl _tlbia;
29.type _tlbia, @function
29.align 4; 30.align 4;
30_tlbia: 31_tlbia:
31 addik r12, r0, 63 /* flush all entries (63 - 3) */ 32 addik r12, r0, MICROBLAZE_TLB_SIZE - 1 /* flush all entries (63 - 3) */
32 /* isync */ 33 /* isync */
33_tlbia_1: 34_tlbia_1:
34 mts rtlbx, r12 35 mts rtlbx, r12
@@ -41,11 +42,13 @@ _tlbia_1:
41 /* sync */ 42 /* sync */
42 rtsd r15, 8 43 rtsd r15, 8
43 nop 44 nop
45 .size _tlbia, . - _tlbia
44 46
45/* 47/*
46 * Flush MMU TLB for a particular address (in r5) 48 * Flush MMU TLB for a particular address (in r5)
47 */ 49 */
48.globl _tlbie; 50.globl _tlbie;
51.type _tlbie, @function
49.align 4; 52.align 4;
50_tlbie: 53_tlbie:
51 mts rtlbsx, r5 /* look up the address in TLB */ 54 mts rtlbsx, r5 /* look up the address in TLB */
@@ -59,17 +62,20 @@ _tlbie_1:
59 rtsd r15, 8 62 rtsd r15, 8
60 nop 63 nop
61 64
65 .size _tlbie, . - _tlbie
66
62/* 67/*
63 * Allocate TLB entry for early console 68 * Allocate TLB entry for early console
64 */ 69 */
65.globl early_console_reg_tlb_alloc; 70.globl early_console_reg_tlb_alloc;
71.type early_console_reg_tlb_alloc, @function
66.align 4; 72.align 4;
67early_console_reg_tlb_alloc: 73early_console_reg_tlb_alloc:
68 /* 74 /*
69 * Load a TLB entry for the UART, so that microblaze_progress() can use 75 * Load a TLB entry for the UART, so that microblaze_progress() can use
70 * the UARTs nice and early. We use a 4k real==virtual mapping. 76 * the UARTs nice and early. We use a 4k real==virtual mapping.
71 */ 77 */
72 ori r4, r0, 63 78 ori r4, r0, MICROBLAZE_TLB_SIZE - 1
73 mts rtlbx, r4 /* TLB slot 2 */ 79 mts rtlbx, r4 /* TLB slot 2 */
74 80
75 or r4,r5,r0 81 or r4,r5,r0
@@ -86,6 +92,8 @@ early_console_reg_tlb_alloc:
86 rtsd r15, 8 92 rtsd r15, 8
87 nop 93 nop
88 94
95 .size early_console_reg_tlb_alloc, . - early_console_reg_tlb_alloc
96
89/* 97/*
90 * Copy a whole page (4096 bytes). 98 * Copy a whole page (4096 bytes).
91 */ 99 */
@@ -104,6 +112,7 @@ early_console_reg_tlb_alloc:
104#define DCACHE_LINE_BYTES (4 * 4) 112#define DCACHE_LINE_BYTES (4 * 4)
105 113
106.globl copy_page; 114.globl copy_page;
115.type copy_page, @function
107.align 4; 116.align 4;
108copy_page: 117copy_page:
109 ori r11, r0, (PAGE_SIZE/DCACHE_LINE_BYTES) - 1 118 ori r11, r0, (PAGE_SIZE/DCACHE_LINE_BYTES) - 1
@@ -118,3 +127,5 @@ _copy_page_loop:
118 addik r11, r11, -1 127 addik r11, r11, -1
119 rtsd r15, 8 128 rtsd r15, 8
120 nop 129 nop
130
131 .size copy_page, . - copy_page
diff --git a/arch/microblaze/kernel/module.c b/arch/microblaze/kernel/module.c
index 5a45b1adfef1..cbecf110dc30 100644
--- a/arch/microblaze/kernel/module.c
+++ b/arch/microblaze/kernel/module.c
@@ -12,7 +12,6 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/elf.h> 13#include <linux/elf.h>
14#include <linux/vmalloc.h> 14#include <linux/vmalloc.h>
15#include <linux/slab.h>
16#include <linux/fs.h> 15#include <linux/fs.h>
17#include <linux/string.h> 16#include <linux/string.h>
18 17
diff --git a/arch/microblaze/kernel/of_platform.c b/arch/microblaze/kernel/of_platform.c
index 1c6d684996d7..0dc755286d38 100644
--- a/arch/microblaze/kernel/of_platform.c
+++ b/arch/microblaze/kernel/of_platform.c
@@ -17,7 +17,6 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/mod_devicetable.h> 19#include <linux/mod_devicetable.h>
20#include <linux/slab.h>
21#include <linux/pci.h> 20#include <linux/pci.h>
22#include <linux/of.h> 21#include <linux/of.h>
23#include <linux/of_device.h> 22#include <linux/of_device.h>
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
index 812f1bf06c9e..09bed44dfcd3 100644
--- a/arch/microblaze/kernel/process.c
+++ b/arch/microblaze/kernel/process.c
@@ -15,6 +15,7 @@
15#include <linux/bitops.h> 15#include <linux/bitops.h>
16#include <asm/system.h> 16#include <asm/system.h>
17#include <asm/pgalloc.h> 17#include <asm/pgalloc.h>
18#include <asm/uaccess.h> /* for USER_DS macros */
18#include <asm/cacheflush.h> 19#include <asm/cacheflush.h>
19 20
20void show_regs(struct pt_regs *regs) 21void show_regs(struct pt_regs *regs)
@@ -74,7 +75,10 @@ __setup("hlt", hlt_setup);
74 75
75void default_idle(void) 76void default_idle(void)
76{ 77{
77 if (!hlt_counter) { 78 if (likely(hlt_counter)) {
79 while (!need_resched())
80 cpu_relax();
81 } else {
78 clear_thread_flag(TIF_POLLING_NRFLAG); 82 clear_thread_flag(TIF_POLLING_NRFLAG);
79 smp_mb__after_clear_bit(); 83 smp_mb__after_clear_bit();
80 local_irq_disable(); 84 local_irq_disable();
@@ -82,9 +86,7 @@ void default_idle(void)
82 cpu_sleep(); 86 cpu_sleep();
83 local_irq_enable(); 87 local_irq_enable();
84 set_thread_flag(TIF_POLLING_NRFLAG); 88 set_thread_flag(TIF_POLLING_NRFLAG);
85 } else 89 }
86 while (!need_resched())
87 cpu_relax();
88} 90}
89 91
90void cpu_idle(void) 92void cpu_idle(void)
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c
index 6d6349a145f9..a4a7770c6140 100644
--- a/arch/microblaze/kernel/ptrace.c
+++ b/arch/microblaze/kernel/ptrace.c
@@ -75,7 +75,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
75{ 75{
76 int rval; 76 int rval;
77 unsigned long val = 0; 77 unsigned long val = 0;
78 unsigned long copied;
79 78
80 switch (request) { 79 switch (request) {
81 /* Read/write the word at location ADDR in the registers. */ 80 /* Read/write the word at location ADDR in the registers. */
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
index bb8c4b9ccb80..17c98dbcec88 100644
--- a/arch/microblaze/kernel/setup.c
+++ b/arch/microblaze/kernel/setup.c
@@ -22,7 +22,10 @@
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/bug.h> 23#include <linux/bug.h>
24#include <linux/param.h> 24#include <linux/param.h>
25#include <linux/pci.h>
25#include <linux/cache.h> 26#include <linux/cache.h>
27#include <linux/of_platform.h>
28#include <linux/dma-mapping.h>
26#include <asm/cacheflush.h> 29#include <asm/cacheflush.h>
27#include <asm/entry.h> 30#include <asm/entry.h>
28#include <asm/cpuinfo.h> 31#include <asm/cpuinfo.h>
@@ -54,14 +57,10 @@ void __init setup_arch(char **cmdline_p)
54 57
55 microblaze_cache_init(); 58 microblaze_cache_init();
56 59
57 invalidate_dcache();
58 enable_dcache();
59
60 invalidate_icache();
61 enable_icache();
62
63 setup_memory(); 60 setup_memory();
64 61
62 xilinx_pci_init();
63
65#if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER) 64#if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER)
66 printk(KERN_NOTICE "Self modified code enable\n"); 65 printk(KERN_NOTICE "Self modified code enable\n");
67#endif 66#endif
@@ -93,6 +92,12 @@ inline unsigned get_romfs_len(unsigned *addr)
93} 92}
94#endif /* CONFIG_MTD_UCLINUX_EBSS */ 93#endif /* CONFIG_MTD_UCLINUX_EBSS */
95 94
95#if defined(CONFIG_EARLY_PRINTK) && defined(CONFIG_SERIAL_UARTLITE_CONSOLE)
96#define eprintk early_printk
97#else
98#define eprintk printk
99#endif
100
96void __init machine_early_init(const char *cmdline, unsigned int ram, 101void __init machine_early_init(const char *cmdline, unsigned int ram,
97 unsigned int fdt, unsigned int msr) 102 unsigned int fdt, unsigned int msr)
98{ 103{
@@ -140,32 +145,32 @@ void __init machine_early_init(const char *cmdline, unsigned int ram,
140 setup_early_printk(NULL); 145 setup_early_printk(NULL);
141#endif 146#endif
142 147
143 early_printk("Ramdisk addr 0x%08x, ", ram); 148 eprintk("Ramdisk addr 0x%08x, ", ram);
144 if (fdt) 149 if (fdt)
145 early_printk("FDT at 0x%08x\n", fdt); 150 eprintk("FDT at 0x%08x\n", fdt);
146 else 151 else
147 early_printk("Compiled-in FDT at 0x%08x\n", 152 eprintk("Compiled-in FDT at 0x%08x\n",
148 (unsigned int)_fdt_start); 153 (unsigned int)_fdt_start);
149 154
150#ifdef CONFIG_MTD_UCLINUX 155#ifdef CONFIG_MTD_UCLINUX
151 early_printk("Found romfs @ 0x%08x (0x%08x)\n", 156 eprintk("Found romfs @ 0x%08x (0x%08x)\n",
152 romfs_base, romfs_size); 157 romfs_base, romfs_size);
153 early_printk("#### klimit %p ####\n", old_klimit); 158 eprintk("#### klimit %p ####\n", old_klimit);
154 BUG_ON(romfs_size < 0); /* What else can we do? */ 159 BUG_ON(romfs_size < 0); /* What else can we do? */
155 160
156 early_printk("Moved 0x%08x bytes from 0x%08x to 0x%08x\n", 161 eprintk("Moved 0x%08x bytes from 0x%08x to 0x%08x\n",
157 romfs_size, romfs_base, (unsigned)&_ebss); 162 romfs_size, romfs_base, (unsigned)&_ebss);
158 163
159 early_printk("New klimit: 0x%08x\n", (unsigned)klimit); 164 eprintk("New klimit: 0x%08x\n", (unsigned)klimit);
160#endif 165#endif
161 166
162#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR 167#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
163 if (msr) 168 if (msr)
164 early_printk("!!!Your kernel has setup MSR instruction but " 169 eprintk("!!!Your kernel has setup MSR instruction but "
165 "CPU don't have it %d\n", msr); 170 "CPU don't have it %d\n", msr);
166#else 171#else
167 if (!msr) 172 if (!msr)
168 early_printk("!!!Your kernel not setup MSR instruction but " 173 eprintk("!!!Your kernel not setup MSR instruction but "
169 "CPU have it %d\n", msr); 174 "CPU have it %d\n", msr);
170#endif 175#endif
171 176
@@ -188,3 +193,37 @@ static int microblaze_debugfs_init(void)
188} 193}
189arch_initcall(microblaze_debugfs_init); 194arch_initcall(microblaze_debugfs_init);
190#endif 195#endif
196
197static int dflt_bus_notify(struct notifier_block *nb,
198 unsigned long action, void *data)
199{
200 struct device *dev = data;
201
202 /* We are only intereted in device addition */
203 if (action != BUS_NOTIFY_ADD_DEVICE)
204 return 0;
205
206 set_dma_ops(dev, &dma_direct_ops);
207
208 return NOTIFY_DONE;
209}
210
211static struct notifier_block dflt_plat_bus_notifier = {
212 .notifier_call = dflt_bus_notify,
213 .priority = INT_MAX,
214};
215
216static struct notifier_block dflt_of_bus_notifier = {
217 .notifier_call = dflt_bus_notify,
218 .priority = INT_MAX,
219};
220
221static int __init setup_bus_notifier(void)
222{
223 bus_register_notifier(&platform_bus_type, &dflt_plat_bus_notifier);
224 bus_register_notifier(&of_platform_bus_type, &dflt_of_bus_notifier);
225
226 return 0;
227}
228
229arch_initcall(setup_bus_notifier);
diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
index 9f3c205fb75b..f4e00b7f1259 100644
--- a/arch/microblaze/kernel/sys_microblaze.c
+++ b/arch/microblaze/kernel/sys_microblaze.c
@@ -30,6 +30,7 @@
30#include <linux/semaphore.h> 30#include <linux/semaphore.h>
31#include <linux/uaccess.h> 31#include <linux/uaccess.h>
32#include <linux/unistd.h> 32#include <linux/unistd.h>
33#include <linux/slab.h>
33 34
34#include <asm/syscalls.h> 35#include <asm/syscalls.h>
35 36
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c
index eaaaf805f31b..5e4570ef515c 100644
--- a/arch/microblaze/kernel/traps.c
+++ b/arch/microblaze/kernel/traps.c
@@ -22,13 +22,11 @@ void trap_init(void)
22 __enable_hw_exceptions(); 22 __enable_hw_exceptions();
23} 23}
24 24
25static int kstack_depth_to_print = 24; 25static unsigned long kstack_depth_to_print = 24;
26 26
27static int __init kstack_setup(char *s) 27static int __init kstack_setup(char *s)
28{ 28{
29 kstack_depth_to_print = strict_strtoul(s, 0, NULL); 29 return !strict_strtoul(s, 0, &kstack_depth_to_print);
30
31 return 1;
32} 30}
33__setup("kstack=", kstack_setup); 31__setup("kstack=", kstack_setup);
34 32
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile
index b579db068c06..4dfe47d3cd91 100644
--- a/arch/microblaze/lib/Makefile
+++ b/arch/microblaze/lib/Makefile
@@ -10,5 +10,4 @@ else
10lib-y += memcpy.o memmove.o 10lib-y += memcpy.o memmove.o
11endif 11endif
12 12
13lib-$(CONFIG_NO_MMU) += uaccess.o 13lib-y += uaccess_old.o
14lib-$(CONFIG_MMU) += uaccess_old.o
diff --git a/arch/microblaze/lib/fastcopy.S b/arch/microblaze/lib/fastcopy.S
index 02e3ab4eddf3..fdc48bb065d8 100644
--- a/arch/microblaze/lib/fastcopy.S
+++ b/arch/microblaze/lib/fastcopy.S
@@ -30,8 +30,9 @@
30 */ 30 */
31 31
32#include <linux/linkage.h> 32#include <linux/linkage.h>
33 33 .text
34 .globl memcpy 34 .globl memcpy
35 .type memcpy, @function
35 .ent memcpy 36 .ent memcpy
36 37
37memcpy: 38memcpy:
@@ -345,9 +346,11 @@ a_done:
345 rtsd r15, 8 346 rtsd r15, 8
346 nop 347 nop
347 348
349.size memcpy, . - memcpy
348.end memcpy 350.end memcpy
349/*----------------------------------------------------------------------------*/ 351/*----------------------------------------------------------------------------*/
350 .globl memmove 352 .globl memmove
353 .type memmove, @function
351 .ent memmove 354 .ent memmove
352 355
353memmove: 356memmove:
@@ -659,4 +662,5 @@ d_done:
659 rtsd r15, 8 662 rtsd r15, 8
660 nop 663 nop
661 664
665.size memmove, . - memmove
662.end memmove 666.end memmove
diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c
index cc2108b6b260..014bac92bdff 100644
--- a/arch/microblaze/lib/memcpy.c
+++ b/arch/microblaze/lib/memcpy.c
@@ -53,7 +53,7 @@ void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c)
53 const uint32_t *i_src; 53 const uint32_t *i_src;
54 uint32_t *i_dst; 54 uint32_t *i_dst;
55 55
56 if (c >= 4) { 56 if (likely(c >= 4)) {
57 unsigned value, buf_hold; 57 unsigned value, buf_hold;
58 58
59 /* Align the dstination to a word boundry. */ 59 /* Align the dstination to a word boundry. */
diff --git a/arch/microblaze/lib/memset.c b/arch/microblaze/lib/memset.c
index 4df851d41a29..ecfb663e1fc1 100644
--- a/arch/microblaze/lib/memset.c
+++ b/arch/microblaze/lib/memset.c
@@ -33,22 +33,23 @@
33#ifdef __HAVE_ARCH_MEMSET 33#ifdef __HAVE_ARCH_MEMSET
34void *memset(void *v_src, int c, __kernel_size_t n) 34void *memset(void *v_src, int c, __kernel_size_t n)
35{ 35{
36
37 char *src = v_src; 36 char *src = v_src;
38#ifdef CONFIG_OPT_LIB_FUNCTION 37#ifdef CONFIG_OPT_LIB_FUNCTION
39 uint32_t *i_src; 38 uint32_t *i_src;
40 uint32_t w32; 39 uint32_t w32 = 0;
41#endif 40#endif
42 /* Truncate c to 8 bits */ 41 /* Truncate c to 8 bits */
43 c = (c & 0xFF); 42 c = (c & 0xFF);
44 43
45#ifdef CONFIG_OPT_LIB_FUNCTION 44#ifdef CONFIG_OPT_LIB_FUNCTION
46 /* Make a repeating word out of it */ 45 if (unlikely(c)) {
47 w32 = c; 46 /* Make a repeating word out of it */
48 w32 |= w32 << 8; 47 w32 = c;
49 w32 |= w32 << 16; 48 w32 |= w32 << 8;
49 w32 |= w32 << 16;
50 }
50 51
51 if (n >= 4) { 52 if (likely(n >= 4)) {
52 /* Align the destination to a word boundary */ 53 /* Align the destination to a word boundary */
53 /* This is done in an endian independant manner */ 54 /* This is done in an endian independant manner */
54 switch ((unsigned) src & 3) { 55 switch ((unsigned) src & 3) {
diff --git a/arch/microblaze/lib/uaccess.c b/arch/microblaze/lib/uaccess.c
deleted file mode 100644
index a853fe089c44..000000000000
--- a/arch/microblaze/lib/uaccess.c
+++ /dev/null
@@ -1,48 +0,0 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#include <linux/string.h>
10#include <asm/uaccess.h>
11
12#include <asm/bug.h>
13
14long strnlen_user(const char __user *src, long count)
15{
16 return strlen(src) + 1;
17}
18
19#define __do_strncpy_from_user(dst, src, count, res) \
20 do { \
21 char *tmp; \
22 strncpy(dst, src, count); \
23 for (tmp = dst; *tmp && count > 0; tmp++, count--) \
24 ; \
25 res = (tmp - dst); \
26 } while (0)
27
28long __strncpy_from_user(char *dst, const char __user *src, long count)
29{
30 long res;
31 __do_strncpy_from_user(dst, src, count, res);
32 return res;
33}
34
35long strncpy_from_user(char *dst, const char __user *src, long count)
36{
37 long res = -EFAULT;
38 if (access_ok(VERIFY_READ, src, 1))
39 __do_strncpy_from_user(dst, src, count, res);
40 return res;
41}
42
43unsigned long __copy_tofrom_user(void __user *to,
44 const void __user *from, unsigned long size)
45{
46 memcpy(to, from, size);
47 return 0;
48}
diff --git a/arch/microblaze/lib/uaccess_old.S b/arch/microblaze/lib/uaccess_old.S
index 67f991c14b8a..5810cec54a7a 100644
--- a/arch/microblaze/lib/uaccess_old.S
+++ b/arch/microblaze/lib/uaccess_old.S
@@ -22,6 +22,7 @@
22 22
23 .text 23 .text
24.globl __strncpy_user; 24.globl __strncpy_user;
25.type __strncpy_user, @function
25.align 4; 26.align 4;
26__strncpy_user: 27__strncpy_user:
27 28
@@ -50,7 +51,7 @@ __strncpy_user:
503: 513:
51 rtsd r15,8 52 rtsd r15,8
52 nop 53 nop
53 54 .size __strncpy_user, . - __strncpy_user
54 55
55 .section .fixup, "ax" 56 .section .fixup, "ax"
56 .align 2 57 .align 2
@@ -72,6 +73,7 @@ __strncpy_user:
72 73
73 .text 74 .text
74.globl __strnlen_user; 75.globl __strnlen_user;
76.type __strnlen_user, @function
75.align 4; 77.align 4;
76__strnlen_user: 78__strnlen_user:
77 addik r3,r6,0 79 addik r3,r6,0
@@ -90,7 +92,7 @@ __strnlen_user:
903: 923:
91 rtsd r15,8 93 rtsd r15,8
92 nop 94 nop
93 95 .size __strnlen_user, . - __strnlen_user
94 96
95 .section .fixup,"ax" 97 .section .fixup,"ax"
964: 984:
@@ -108,6 +110,7 @@ __strnlen_user:
108 */ 110 */
109 .text 111 .text
110.globl __copy_tofrom_user; 112.globl __copy_tofrom_user;
113.type __copy_tofrom_user, @function
111.align 4; 114.align 4;
112__copy_tofrom_user: 115__copy_tofrom_user:
113 /* 116 /*
@@ -116,20 +119,34 @@ __copy_tofrom_user:
116 * r7, r3 - count 119 * r7, r3 - count
117 * r4 - tempval 120 * r4 - tempval
118 */ 121 */
119 addik r3,r7,0 122 beqid r7, 3f /* zero size is not likely */
120 beqi r3,3f 123 andi r3, r7, 0x3 /* filter add count */
1211: 124 bneid r3, 4f /* if is odd value then byte copying */
122 lbu r4,r6,r0 125 or r3, r5, r6 /* find if is any to/from unaligned */
123 addik r6,r6,1 126 andi r3, r3, 0x3 /* mask unaligned */
1242: 127 bneid r3, 1f /* it is unaligned -> then jump */
125 sb r4,r5,r0 128 or r3, r0, r0
126 addik r3,r3,-1 129
127 bneid r3,1b 130/* at least one 4 byte copy */
128 addik r5,r5,1 /* delay slot */ 1315: lw r4, r6, r3
1326: sw r4, r5, r3
133 addik r7, r7, -4
134 bneid r7, 5b
135 addik r3, r3, 4
136 addik r3, r7, 0
137 rtsd r15, 8
138 nop
1394: or r3, r0, r0
1401: lbu r4,r6,r3
1412: sb r4,r5,r3
142 addik r7,r7,-1
143 bneid r7,1b
144 addik r3,r3,1 /* delay slot */
1293: 1453:
146 addik r3,r7,0
130 rtsd r15,8 147 rtsd r15,8
131 nop 148 nop
132 149 .size __copy_tofrom_user, . - __copy_tofrom_user
133 150
134 .section __ex_table,"a" 151 .section __ex_table,"a"
135 .word 1b,3b,2b,3b 152 .word 1b,3b,2b,3b,5b,3b,6b,3b
diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile
index 6c8a924d9e26..09c49ed87235 100644
--- a/arch/microblaze/mm/Makefile
+++ b/arch/microblaze/mm/Makefile
@@ -2,6 +2,6 @@
2# Makefile 2# Makefile
3# 3#
4 4
5obj-y := init.o 5obj-y := consistent.o init.o
6 6
7obj-$(CONFIG_MMU) += pgtable.o mmu_context.o fault.o 7obj-$(CONFIG_MMU) += pgtable.o mmu_context.o fault.o
diff --git a/arch/microblaze/mm/consistent.c b/arch/microblaze/mm/consistent.c
new file mode 100644
index 000000000000..f956e24fe49c
--- /dev/null
+++ b/arch/microblaze/mm/consistent.c
@@ -0,0 +1,247 @@
1/*
2 * Microblaze support for cache consistent memory.
3 * Copyright (C) 2010 Michal Simek <monstr@monstr.eu>
4 * Copyright (C) 2010 PetaLogix
5 * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
6 *
7 * Based on PowerPC version derived from arch/arm/mm/consistent.c
8 * Copyright (C) 2001 Dan Malek (dmalek@jlc.net)
9 * Copyright (C) 2000 Russell King
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#include <linux/module.h>
17#include <linux/signal.h>
18#include <linux/sched.h>
19#include <linux/kernel.h>
20#include <linux/errno.h>
21#include <linux/string.h>
22#include <linux/types.h>
23#include <linux/ptrace.h>
24#include <linux/mman.h>
25#include <linux/mm.h>
26#include <linux/swap.h>
27#include <linux/stddef.h>
28#include <linux/vmalloc.h>
29#include <linux/init.h>
30#include <linux/delay.h>
31#include <linux/bootmem.h>
32#include <linux/highmem.h>
33#include <linux/pci.h>
34#include <linux/interrupt.h>
35#include <linux/gfp.h>
36
37#include <asm/pgalloc.h>
38#include <linux/io.h>
39#include <linux/hardirq.h>
40#include <asm/mmu_context.h>
41#include <asm/mmu.h>
42#include <linux/uaccess.h>
43#include <asm/pgtable.h>
44#include <asm/cpuinfo.h>
45
46#ifndef CONFIG_MMU
47
48/* I have to use dcache values because I can't relate on ram size */
49#define UNCACHED_SHADOW_MASK (cpuinfo.dcache_high - cpuinfo.dcache_base + 1)
50
51/*
52 * Consistent memory allocators. Used for DMA devices that want to
53 * share uncached memory with the processor core.
54 * My crufty no-MMU approach is simple. In the HW platform we can optionally
55 * mirror the DDR up above the processor cacheable region. So, memory accessed
56 * in this mirror region will not be cached. It's alloced from the same
57 * pool as normal memory, but the handle we return is shifted up into the
58 * uncached region. This will no doubt cause big problems if memory allocated
59 * here is not also freed properly. -- JW
60 */
61void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
62{
63 struct page *page, *end, *free;
64 unsigned long order;
65 void *ret, *virt;
66
67 if (in_interrupt())
68 BUG();
69
70 size = PAGE_ALIGN(size);
71 order = get_order(size);
72
73 page = alloc_pages(gfp, order);
74 if (!page)
75 goto no_page;
76
77 /* We could do with a page_to_phys and page_to_bus here. */
78 virt = page_address(page);
79 ret = ioremap(virt_to_phys(virt), size);
80 if (!ret)
81 goto no_remap;
82
83 /*
84 * Here's the magic! Note if the uncached shadow is not implemented,
85 * it's up to the calling code to also test that condition and make
86 * other arranegments, such as manually flushing the cache and so on.
87 */
88#ifdef CONFIG_XILINX_UNCACHED_SHADOW
89 ret = (void *)((unsigned) ret | UNCACHED_SHADOW_MASK);
90#endif
91 /* dma_handle is same as physical (shadowed) address */
92 *dma_handle = (dma_addr_t)ret;
93
94 /*
95 * free wasted pages. We skip the first page since we know
96 * that it will have count = 1 and won't require freeing.
97 * We also mark the pages in use as reserved so that
98 * remap_page_range works.
99 */
100 page = virt_to_page(virt);
101 free = page + (size >> PAGE_SHIFT);
102 end = page + (1 << order);
103
104 for (; page < end; page++) {
105 init_page_count(page);
106 if (page >= free)
107 __free_page(page);
108 else
109 SetPageReserved(page);
110 }
111
112 return ret;
113no_remap:
114 __free_pages(page, order);
115no_page:
116 return NULL;
117}
118
119#else
120
121void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
122{
123 int order, err, i;
124 unsigned long page, va, flags;
125 phys_addr_t pa;
126 struct vm_struct *area;
127 void *ret;
128
129 if (in_interrupt())
130 BUG();
131
132 /* Only allocate page size areas. */
133 size = PAGE_ALIGN(size);
134 order = get_order(size);
135
136 page = __get_free_pages(gfp, order);
137 if (!page) {
138 BUG();
139 return NULL;
140 }
141
142 /*
143 * we need to ensure that there are no cachelines in use,
144 * or worse dirty in this area.
145 */
146 flush_dcache_range(virt_to_phys(page), virt_to_phys(page) + size);
147
148 /* Allocate some common virtual space to map the new pages. */
149 area = get_vm_area(size, VM_ALLOC);
150 if (area == NULL) {
151 free_pages(page, order);
152 return NULL;
153 }
154 va = (unsigned long) area->addr;
155 ret = (void *)va;
156
157 /* This gives us the real physical address of the first page. */
158 *dma_handle = pa = virt_to_bus((void *)page);
159
160 /* MS: This is the whole magic - use cache inhibit pages */
161 flags = _PAGE_KERNEL | _PAGE_NO_CACHE;
162
163 /*
164 * Set refcount=1 on all pages in an order>0
165 * allocation so that vfree() will actually
166 * free all pages that were allocated.
167 */
168 if (order > 0) {
169 struct page *rpage = virt_to_page(page);
170 for (i = 1; i < (1 << order); i++)
171 init_page_count(rpage+i);
172 }
173
174 err = 0;
175 for (i = 0; i < size && err == 0; i += PAGE_SIZE)
176 err = map_page(va+i, pa+i, flags);
177
178 if (err) {
179 vfree((void *)va);
180 return NULL;
181 }
182
183 return ret;
184}
185#endif /* CONFIG_MMU */
186EXPORT_SYMBOL(consistent_alloc);
187
188/*
189 * free page(s) as defined by the above mapping.
190 */
191void consistent_free(void *vaddr)
192{
193 if (in_interrupt())
194 BUG();
195
196 /* Clear SHADOW_MASK bit in address, and free as per usual */
197#ifdef CONFIG_XILINX_UNCACHED_SHADOW
198 vaddr = (void *)((unsigned)vaddr & ~UNCACHED_SHADOW_MASK);
199#endif
200 vfree(vaddr);
201}
202EXPORT_SYMBOL(consistent_free);
203
204/*
205 * make an area consistent.
206 */
207void consistent_sync(void *vaddr, size_t size, int direction)
208{
209 unsigned long start;
210 unsigned long end;
211
212 start = (unsigned long)vaddr;
213
214 /* Convert start address back down to unshadowed memory region */
215#ifdef CONFIG_XILINX_UNCACHED_SHADOW
216 start &= ~UNCACHED_SHADOW_MASK;
217#endif
218 end = start + size;
219
220 switch (direction) {
221 case PCI_DMA_NONE:
222 BUG();
223 case PCI_DMA_FROMDEVICE: /* invalidate only */
224 flush_dcache_range(start, end);
225 break;
226 case PCI_DMA_TODEVICE: /* writeback only */
227 flush_dcache_range(start, end);
228 break;
229 case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */
230 flush_dcache_range(start, end);
231 break;
232 }
233}
234EXPORT_SYMBOL(consistent_sync);
235
236/*
237 * consistent_sync_page makes memory consistent. identical
238 * to consistent_sync, but takes a struct page instead of a
239 * virtual address
240 */
241void consistent_sync_page(struct page *page, unsigned long offset,
242 size_t size, int direction)
243{
244 unsigned long start = (unsigned long)page_address(page) + offset;
245 consistent_sync((void *)start, size, direction);
246}
247EXPORT_SYMBOL(consistent_sync_page);
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
index d9d249a66ff2..7af87f4b2c2c 100644
--- a/arch/microblaze/mm/fault.c
+++ b/arch/microblaze/mm/fault.c
@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
106 regs->esr = error_code; 106 regs->esr = error_code;
107 107
108 /* On a kernel SLB miss we can only check for a valid exception entry */ 108 /* On a kernel SLB miss we can only check for a valid exception entry */
109 if (kernel_mode(regs) && (address >= TASK_SIZE)) { 109 if (unlikely(kernel_mode(regs) && (address >= TASK_SIZE))) {
110 printk(KERN_WARNING "kernel task_size exceed"); 110 printk(KERN_WARNING "kernel task_size exceed");
111 _exception(SIGSEGV, regs, code, address); 111 _exception(SIGSEGV, regs, code, address);
112 } 112 }
@@ -122,7 +122,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
122 } 122 }
123#endif /* CONFIG_KGDB */ 123#endif /* CONFIG_KGDB */
124 124
125 if (in_atomic() || !mm) { 125 if (unlikely(in_atomic() || !mm)) {
126 if (kernel_mode(regs)) 126 if (kernel_mode(regs))
127 goto bad_area_nosemaphore; 127 goto bad_area_nosemaphore;
128 128
@@ -150,7 +150,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
150 * source. If this is invalid we can skip the address space check, 150 * source. If this is invalid we can skip the address space check,
151 * thus avoiding the deadlock. 151 * thus avoiding the deadlock.
152 */ 152 */
153 if (!down_read_trylock(&mm->mmap_sem)) { 153 if (unlikely(!down_read_trylock(&mm->mmap_sem))) {
154 if (kernel_mode(regs) && !search_exception_tables(regs->pc)) 154 if (kernel_mode(regs) && !search_exception_tables(regs->pc))
155 goto bad_area_nosemaphore; 155 goto bad_area_nosemaphore;
156 156
@@ -158,16 +158,16 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
158 } 158 }
159 159
160 vma = find_vma(mm, address); 160 vma = find_vma(mm, address);
161 if (!vma) 161 if (unlikely(!vma))
162 goto bad_area; 162 goto bad_area;
163 163
164 if (vma->vm_start <= address) 164 if (vma->vm_start <= address)
165 goto good_area; 165 goto good_area;
166 166
167 if (!(vma->vm_flags & VM_GROWSDOWN)) 167 if (unlikely(!(vma->vm_flags & VM_GROWSDOWN)))
168 goto bad_area; 168 goto bad_area;
169 169
170 if (!is_write) 170 if (unlikely(!is_write))
171 goto bad_area; 171 goto bad_area;
172 172
173 /* 173 /*
@@ -179,7 +179,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
179 * before setting the user r1. Thus we allow the stack to 179 * before setting the user r1. Thus we allow the stack to
180 * expand to 1MB without further checks. 180 * expand to 1MB without further checks.
181 */ 181 */
182 if (address + 0x100000 < vma->vm_end) { 182 if (unlikely(address + 0x100000 < vma->vm_end)) {
183 183
184 /* get user regs even if this fault is in kernel mode */ 184 /* get user regs even if this fault is in kernel mode */
185 struct pt_regs *uregs = current->thread.regs; 185 struct pt_regs *uregs = current->thread.regs;
@@ -209,15 +209,15 @@ good_area:
209 code = SEGV_ACCERR; 209 code = SEGV_ACCERR;
210 210
211 /* a write */ 211 /* a write */
212 if (is_write) { 212 if (unlikely(is_write)) {
213 if (!(vma->vm_flags & VM_WRITE)) 213 if (unlikely(!(vma->vm_flags & VM_WRITE)))
214 goto bad_area; 214 goto bad_area;
215 /* a read */ 215 /* a read */
216 } else { 216 } else {
217 /* protection fault */ 217 /* protection fault */
218 if (error_code & 0x08000000) 218 if (unlikely(error_code & 0x08000000))
219 goto bad_area; 219 goto bad_area;
220 if (!(vma->vm_flags & (VM_READ | VM_EXEC))) 220 if (unlikely(!(vma->vm_flags & (VM_READ | VM_EXEC))))
221 goto bad_area; 221 goto bad_area;
222 } 222 }
223 223
@@ -235,7 +235,7 @@ survive:
235 goto do_sigbus; 235 goto do_sigbus;
236 BUG(); 236 BUG();
237 } 237 }
238 if (fault & VM_FAULT_MAJOR) 238 if (unlikely(fault & VM_FAULT_MAJOR))
239 current->maj_flt++; 239 current->maj_flt++;
240 else 240 else
241 current->min_flt++; 241 current->min_flt++;
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
index a57cedf36715..f42c2dde8b1c 100644
--- a/arch/microblaze/mm/init.c
+++ b/arch/microblaze/mm/init.c
@@ -15,6 +15,7 @@
15#include <linux/initrd.h> 15#include <linux/initrd.h>
16#include <linux/pagemap.h> 16#include <linux/pagemap.h>
17#include <linux/pfn.h> 17#include <linux/pfn.h>
18#include <linux/slab.h>
18#include <linux/swap.h> 19#include <linux/swap.h>
19 20
20#include <asm/page.h> 21#include <asm/page.h>
@@ -23,6 +24,9 @@
23#include <asm/sections.h> 24#include <asm/sections.h>
24#include <asm/tlb.h> 25#include <asm/tlb.h>
25 26
27/* Use for MMU and noMMU because of PCI generic code */
28int mem_init_done;
29
26#ifndef CONFIG_MMU 30#ifndef CONFIG_MMU
27unsigned int __page_offset; 31unsigned int __page_offset;
28EXPORT_SYMBOL(__page_offset); 32EXPORT_SYMBOL(__page_offset);
@@ -30,7 +34,6 @@ EXPORT_SYMBOL(__page_offset);
30#else 34#else
31DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); 35DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
32 36
33int mem_init_done;
34static int init_bootmem_done; 37static int init_bootmem_done;
35#endif /* CONFIG_MMU */ 38#endif /* CONFIG_MMU */
36 39
@@ -163,7 +166,6 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
163 for (addr = begin; addr < end; addr += PAGE_SIZE) { 166 for (addr = begin; addr < end; addr += PAGE_SIZE) {
164 ClearPageReserved(virt_to_page(addr)); 167 ClearPageReserved(virt_to_page(addr));
165 init_page_count(virt_to_page(addr)); 168 init_page_count(virt_to_page(addr));
166 memset((void *)addr, 0xcc, PAGE_SIZE);
167 free_page(addr); 169 free_page(addr);
168 totalram_pages++; 170 totalram_pages++;
169 } 171 }
@@ -193,12 +195,6 @@ void free_initmem(void)
193 (unsigned long)(&__init_end)); 195 (unsigned long)(&__init_end));
194} 196}
195 197
196/* FIXME from arch/powerpc/mm/mem.c*/
197void show_mem(void)
198{
199 printk(KERN_NOTICE "%s\n", __func__);
200}
201
202void __init mem_init(void) 198void __init mem_init(void)
203{ 199{
204 high_memory = (void *)__va(memory_end); 200 high_memory = (void *)__va(memory_end);
@@ -208,20 +204,14 @@ void __init mem_init(void)
208 printk(KERN_INFO "Memory: %luk/%luk available\n", 204 printk(KERN_INFO "Memory: %luk/%luk available\n",
209 nr_free_pages() << (PAGE_SHIFT-10), 205 nr_free_pages() << (PAGE_SHIFT-10),
210 num_physpages << (PAGE_SHIFT-10)); 206 num_physpages << (PAGE_SHIFT-10));
211#ifdef CONFIG_MMU
212 mem_init_done = 1; 207 mem_init_done = 1;
213#endif
214} 208}
215 209
216#ifndef CONFIG_MMU 210#ifndef CONFIG_MMU
217/* Check against bounds of physical memory */ 211int page_is_ram(unsigned long pfn)
218int ___range_ok(unsigned long addr, unsigned long size)
219{ 212{
220 return ((addr < memory_start) || 213 return __range_ok(pfn, 0);
221 ((addr + size) > memory_end));
222} 214}
223EXPORT_SYMBOL(___range_ok);
224
225#else 215#else
226int page_is_ram(unsigned long pfn) 216int page_is_ram(unsigned long pfn)
227{ 217{
@@ -349,4 +339,27 @@ void __init *early_get_page(void)
349 } 339 }
350 return p; 340 return p;
351} 341}
342
352#endif /* CONFIG_MMU */ 343#endif /* CONFIG_MMU */
344
345void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask)
346{
347 if (mem_init_done)
348 return kmalloc(size, mask);
349 else
350 return alloc_bootmem(size);
351}
352
353void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask)
354{
355 void *p;
356
357 if (mem_init_done)
358 p = kzalloc(size, mask);
359 else {
360 p = alloc_bootmem(size);
361 if (p)
362 memset(p, 0, size);
363 }
364 return p;
365}
diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c
index 2820081b21ab..d31312cde6ea 100644
--- a/arch/microblaze/mm/pgtable.c
+++ b/arch/microblaze/mm/pgtable.c
@@ -103,7 +103,7 @@ static void __iomem *__ioremap(phys_addr_t addr, unsigned long size,
103 area = get_vm_area(size, VM_IOREMAP); 103 area = get_vm_area(size, VM_IOREMAP);
104 if (area == NULL) 104 if (area == NULL)
105 return NULL; 105 return NULL;
106 v = VMALLOC_VMADDR(area->addr); 106 v = (unsigned long) area->addr;
107 } else { 107 } else {
108 v = (ioremap_bot -= size); 108 v = (ioremap_bot -= size);
109 } 109 }
@@ -154,7 +154,7 @@ int map_page(unsigned long va, phys_addr_t pa, int flags)
154 err = 0; 154 err = 0;
155 set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, 155 set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT,
156 __pgprot(flags))); 156 __pgprot(flags)));
157 if (mem_init_done) 157 if (unlikely(mem_init_done))
158 flush_HPTE(0, va, pmd_val(*pd)); 158 flush_HPTE(0, va, pmd_val(*pd));
159 /* flush_HPTE(0, va, pg); */ 159 /* flush_HPTE(0, va, pg); */
160 } 160 }
diff --git a/arch/microblaze/pci/Makefile b/arch/microblaze/pci/Makefile
new file mode 100644
index 000000000000..9889cc2e1294
--- /dev/null
+++ b/arch/microblaze/pci/Makefile
@@ -0,0 +1,6 @@
1#
2# Makefile
3#
4
5obj-$(CONFIG_PCI) += pci_32.o pci-common.o indirect_pci.o iomap.o
6obj-$(CONFIG_PCI_XILINX) += xilinx_pci.o
diff --git a/arch/microblaze/pci/indirect_pci.c b/arch/microblaze/pci/indirect_pci.c
new file mode 100644
index 000000000000..25f18f017f21
--- /dev/null
+++ b/arch/microblaze/pci/indirect_pci.c
@@ -0,0 +1,163 @@
1/*
2 * Support for indirect PCI bridges.
3 *
4 * Copyright (C) 1998 Gabriel Paubert.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12#include <linux/kernel.h>
13#include <linux/pci.h>
14#include <linux/delay.h>
15#include <linux/string.h>
16#include <linux/init.h>
17
18#include <asm/io.h>
19#include <asm/prom.h>
20#include <asm/pci-bridge.h>
21
22static int
23indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
24 int len, u32 *val)
25{
26 struct pci_controller *hose = pci_bus_to_host(bus);
27 volatile void __iomem *cfg_data;
28 u8 cfg_type = 0;
29 u32 bus_no, reg;
30
31 if (hose->indirect_type & INDIRECT_TYPE_NO_PCIE_LINK) {
32 if (bus->number != hose->first_busno)
33 return PCIBIOS_DEVICE_NOT_FOUND;
34 if (devfn != 0)
35 return PCIBIOS_DEVICE_NOT_FOUND;
36 }
37
38 if (hose->indirect_type & INDIRECT_TYPE_SET_CFG_TYPE)
39 if (bus->number != hose->first_busno)
40 cfg_type = 1;
41
42 bus_no = (bus->number == hose->first_busno) ?
43 hose->self_busno : bus->number;
44
45 if (hose->indirect_type & INDIRECT_TYPE_EXT_REG)
46 reg = ((offset & 0xf00) << 16) | (offset & 0xfc);
47 else
48 reg = offset & 0xfc; /* Only 3 bits for function */
49
50 if (hose->indirect_type & INDIRECT_TYPE_BIG_ENDIAN)
51 out_be32(hose->cfg_addr, (0x80000000 | (bus_no << 16) |
52 (devfn << 8) | reg | cfg_type));
53 else
54 out_le32(hose->cfg_addr, (0x80000000 | (bus_no << 16) |
55 (devfn << 8) | reg | cfg_type));
56
57 /*
58 * Note: the caller has already checked that offset is
59 * suitably aligned and that len is 1, 2 or 4.
60 */
61 cfg_data = hose->cfg_data + (offset & 3); /* Only 3 bits for function */
62 switch (len) {
63 case 1:
64 *val = in_8(cfg_data);
65 break;
66 case 2:
67 *val = in_le16(cfg_data);
68 break;
69 default:
70 *val = in_le32(cfg_data);
71 break;
72 }
73 return PCIBIOS_SUCCESSFUL;
74}
75
76static int
77indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
78 int len, u32 val)
79{
80 struct pci_controller *hose = pci_bus_to_host(bus);
81 volatile void __iomem *cfg_data;
82 u8 cfg_type = 0;
83 u32 bus_no, reg;
84
85 if (hose->indirect_type & INDIRECT_TYPE_NO_PCIE_LINK) {
86 if (bus->number != hose->first_busno)
87 return PCIBIOS_DEVICE_NOT_FOUND;
88 if (devfn != 0)
89 return PCIBIOS_DEVICE_NOT_FOUND;
90 }
91
92 if (hose->indirect_type & INDIRECT_TYPE_SET_CFG_TYPE)
93 if (bus->number != hose->first_busno)
94 cfg_type = 1;
95
96 bus_no = (bus->number == hose->first_busno) ?
97 hose->self_busno : bus->number;
98
99 if (hose->indirect_type & INDIRECT_TYPE_EXT_REG)
100 reg = ((offset & 0xf00) << 16) | (offset & 0xfc);
101 else
102 reg = offset & 0xfc;
103
104 if (hose->indirect_type & INDIRECT_TYPE_BIG_ENDIAN)
105 out_be32(hose->cfg_addr, (0x80000000 | (bus_no << 16) |
106 (devfn << 8) | reg | cfg_type));
107 else
108 out_le32(hose->cfg_addr, (0x80000000 | (bus_no << 16) |
109 (devfn << 8) | reg | cfg_type));
110
111 /* surpress setting of PCI_PRIMARY_BUS */
112 if (hose->indirect_type & INDIRECT_TYPE_SURPRESS_PRIMARY_BUS)
113 if ((offset == PCI_PRIMARY_BUS) &&
114 (bus->number == hose->first_busno))
115 val &= 0xffffff00;
116
117 /* Workaround for PCI_28 Errata in 440EPx/GRx */
118 if ((hose->indirect_type & INDIRECT_TYPE_BROKEN_MRM) &&
119 offset == PCI_CACHE_LINE_SIZE) {
120 val = 0;
121 }
122
123 /*
124 * Note: the caller has already checked that offset is
125 * suitably aligned and that len is 1, 2 or 4.
126 */
127 cfg_data = hose->cfg_data + (offset & 3);
128 switch (len) {
129 case 1:
130 out_8(cfg_data, val);
131 break;
132 case 2:
133 out_le16(cfg_data, val);
134 break;
135 default:
136 out_le32(cfg_data, val);
137 break;
138 }
139
140 return PCIBIOS_SUCCESSFUL;
141}
142
143static struct pci_ops indirect_pci_ops = {
144 .read = indirect_read_config,
145 .write = indirect_write_config,
146};
147
148void __init
149setup_indirect_pci(struct pci_controller *hose,
150 resource_size_t cfg_addr,
151 resource_size_t cfg_data, u32 flags)
152{
153 resource_size_t base = cfg_addr & PAGE_MASK;
154 void __iomem *mbase;
155
156 mbase = ioremap(base, PAGE_SIZE);
157 hose->cfg_addr = mbase + (cfg_addr & ~PAGE_MASK);
158 if ((cfg_data & PAGE_MASK) != base)
159 mbase = ioremap(cfg_data & PAGE_MASK, PAGE_SIZE);
160 hose->cfg_data = mbase + (cfg_data & ~PAGE_MASK);
161 hose->ops = &indirect_pci_ops;
162 hose->indirect_type = flags;
163}
diff --git a/arch/microblaze/pci/iomap.c b/arch/microblaze/pci/iomap.c
new file mode 100644
index 000000000000..3fbf16f4e16c
--- /dev/null
+++ b/arch/microblaze/pci/iomap.c
@@ -0,0 +1,39 @@
1/*
2 * ppc64 "iomap" interface implementation.
3 *
4 * (C) Copyright 2004 Linus Torvalds
5 */
6#include <linux/init.h>
7#include <linux/pci.h>
8#include <linux/mm.h>
9#include <asm/io.h>
10#include <asm/pci-bridge.h>
11
12void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
13{
14 resource_size_t start = pci_resource_start(dev, bar);
15 resource_size_t len = pci_resource_len(dev, bar);
16 unsigned long flags = pci_resource_flags(dev, bar);
17
18 if (!len)
19 return NULL;
20 if (max && len > max)
21 len = max;
22 if (flags & IORESOURCE_IO)
23 return ioport_map(start, len);
24 if (flags & IORESOURCE_MEM)
25 return ioremap(start, len);
26 /* What? */
27 return NULL;
28}
29EXPORT_SYMBOL(pci_iomap);
30
31void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
32{
33 if (isa_vaddr_is_ioport(addr))
34 return;
35 if (pcibios_vaddr_is_ioport(addr))
36 return;
37 iounmap(addr);
38}
39EXPORT_SYMBOL(pci_iounmap);
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
new file mode 100644
index 000000000000..740bb32ec57e
--- /dev/null
+++ b/arch/microblaze/pci/pci-common.c
@@ -0,0 +1,1643 @@
1/*
2 * Contains common pci routines for ALL ppc platform
3 * (based on pci_32.c and pci_64.c)
4 *
5 * Port for PPC64 David Engebretsen, IBM Corp.
6 * Contains common pci routines for ppc64 platform, pSeries and iSeries brands.
7 *
8 * Copyright (C) 2003 Anton Blanchard <anton@au.ibm.com>, IBM
9 * Rework, based on alpha PCI code.
10 *
11 * Common pmac/prep/chrp pci routines. -- Cort
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version
16 * 2 of the License, or (at your option) any later version.
17 */
18
19#include <linux/kernel.h>
20#include <linux/pci.h>
21#include <linux/string.h>
22#include <linux/init.h>
23#include <linux/bootmem.h>
24#include <linux/mm.h>
25#include <linux/list.h>
26#include <linux/syscalls.h>
27#include <linux/irq.h>
28#include <linux/vmalloc.h>
29#include <linux/slab.h>
30
31#include <asm/processor.h>
32#include <asm/io.h>
33#include <asm/prom.h>
34#include <asm/pci-bridge.h>
35#include <asm/byteorder.h>
36
37static DEFINE_SPINLOCK(hose_spinlock);
38LIST_HEAD(hose_list);
39
40/* XXX kill that some day ... */
41static int global_phb_number; /* Global phb counter */
42
43/* ISA Memory physical address */
44resource_size_t isa_mem_base;
45
46/* Default PCI flags is 0 on ppc32, modified at boot on ppc64 */
47unsigned int pci_flags;
48
49static struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
50
51void set_pci_dma_ops(struct dma_map_ops *dma_ops)
52{
53 pci_dma_ops = dma_ops;
54}
55
56struct dma_map_ops *get_pci_dma_ops(void)
57{
58 return pci_dma_ops;
59}
60EXPORT_SYMBOL(get_pci_dma_ops);
61
62int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
63{
64 return dma_set_mask(&dev->dev, mask);
65}
66
67int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
68{
69 int rc;
70
71 rc = dma_set_mask(&dev->dev, mask);
72 dev->dev.coherent_dma_mask = dev->dma_mask;
73
74 return rc;
75}
76
77struct pci_controller *pcibios_alloc_controller(struct device_node *dev)
78{
79 struct pci_controller *phb;
80
81 phb = zalloc_maybe_bootmem(sizeof(struct pci_controller), GFP_KERNEL);
82 if (!phb)
83 return NULL;
84 spin_lock(&hose_spinlock);
85 phb->global_number = global_phb_number++;
86 list_add_tail(&phb->list_node, &hose_list);
87 spin_unlock(&hose_spinlock);
88 phb->dn = dev;
89 phb->is_dynamic = mem_init_done;
90 return phb;
91}
92
93void pcibios_free_controller(struct pci_controller *phb)
94{
95 spin_lock(&hose_spinlock);
96 list_del(&phb->list_node);
97 spin_unlock(&hose_spinlock);
98
99 if (phb->is_dynamic)
100 kfree(phb);
101}
102
103static resource_size_t pcibios_io_size(const struct pci_controller *hose)
104{
105 return hose->io_resource.end - hose->io_resource.start + 1;
106}
107
108int pcibios_vaddr_is_ioport(void __iomem *address)
109{
110 int ret = 0;
111 struct pci_controller *hose;
112 resource_size_t size;
113
114 spin_lock(&hose_spinlock);
115 list_for_each_entry(hose, &hose_list, list_node) {
116 size = pcibios_io_size(hose);
117 if (address >= hose->io_base_virt &&
118 address < (hose->io_base_virt + size)) {
119 ret = 1;
120 break;
121 }
122 }
123 spin_unlock(&hose_spinlock);
124 return ret;
125}
126
127unsigned long pci_address_to_pio(phys_addr_t address)
128{
129 struct pci_controller *hose;
130 resource_size_t size;
131 unsigned long ret = ~0;
132
133 spin_lock(&hose_spinlock);
134 list_for_each_entry(hose, &hose_list, list_node) {
135 size = pcibios_io_size(hose);
136 if (address >= hose->io_base_phys &&
137 address < (hose->io_base_phys + size)) {
138 unsigned long base =
139 (unsigned long)hose->io_base_virt - _IO_BASE;
140 ret = base + (address - hose->io_base_phys);
141 break;
142 }
143 }
144 spin_unlock(&hose_spinlock);
145
146 return ret;
147}
148EXPORT_SYMBOL_GPL(pci_address_to_pio);
149
150/*
151 * Return the domain number for this bus.
152 */
153int pci_domain_nr(struct pci_bus *bus)
154{
155 struct pci_controller *hose = pci_bus_to_host(bus);
156
157 return hose->global_number;
158}
159EXPORT_SYMBOL(pci_domain_nr);
160
161/* This routine is meant to be used early during boot, when the
162 * PCI bus numbers have not yet been assigned, and you need to
163 * issue PCI config cycles to an OF device.
164 * It could also be used to "fix" RTAS config cycles if you want
165 * to set pci_assign_all_buses to 1 and still use RTAS for PCI
166 * config cycles.
167 */
168struct pci_controller *pci_find_hose_for_OF_device(struct device_node *node)
169{
170 while (node) {
171 struct pci_controller *hose, *tmp;
172 list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
173 if (hose->dn == node)
174 return hose;
175 node = node->parent;
176 }
177 return NULL;
178}
179
180static ssize_t pci_show_devspec(struct device *dev,
181 struct device_attribute *attr, char *buf)
182{
183 struct pci_dev *pdev;
184 struct device_node *np;
185
186 pdev = to_pci_dev(dev);
187 np = pci_device_to_OF_node(pdev);
188 if (np == NULL || np->full_name == NULL)
189 return 0;
190 return sprintf(buf, "%s", np->full_name);
191}
192static DEVICE_ATTR(devspec, S_IRUGO, pci_show_devspec, NULL);
193
194/* Add sysfs properties */
195int pcibios_add_platform_entries(struct pci_dev *pdev)
196{
197 return device_create_file(&pdev->dev, &dev_attr_devspec);
198}
199
200char __devinit *pcibios_setup(char *str)
201{
202 return str;
203}
204
205/*
206 * Reads the interrupt pin to determine if interrupt is use by card.
207 * If the interrupt is used, then gets the interrupt line from the
208 * openfirmware and sets it in the pci_dev and pci_config line.
209 */
210int pci_read_irq_line(struct pci_dev *pci_dev)
211{
212 struct of_irq oirq;
213 unsigned int virq;
214
215 /* The current device-tree that iSeries generates from the HV
216 * PCI informations doesn't contain proper interrupt routing,
217 * and all the fallback would do is print out crap, so we
218 * don't attempt to resolve the interrupts here at all, some
219 * iSeries specific fixup does it.
220 *
221 * In the long run, we will hopefully fix the generated device-tree
222 * instead.
223 */
224 pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
225
226#ifdef DEBUG
227 memset(&oirq, 0xff, sizeof(oirq));
228#endif
229 /* Try to get a mapping from the device-tree */
230 if (of_irq_map_pci(pci_dev, &oirq)) {
231 u8 line, pin;
232
233 /* If that fails, lets fallback to what is in the config
234 * space and map that through the default controller. We
235 * also set the type to level low since that's what PCI
236 * interrupts are. If your platform does differently, then
237 * either provide a proper interrupt tree or don't use this
238 * function.
239 */
240 if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_PIN, &pin))
241 return -1;
242 if (pin == 0)
243 return -1;
244 if (pci_read_config_byte(pci_dev, PCI_INTERRUPT_LINE, &line) ||
245 line == 0xff || line == 0) {
246 return -1;
247 }
248 pr_debug(" No map ! Using line %d (pin %d) from PCI config\n",
249 line, pin);
250
251 virq = irq_create_mapping(NULL, line);
252 if (virq != NO_IRQ)
253 set_irq_type(virq, IRQ_TYPE_LEVEL_LOW);
254 } else {
255 pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",
256 oirq.size, oirq.specifier[0], oirq.specifier[1],
257 oirq.controller ? oirq.controller->full_name :
258 "<default>");
259
260 virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
261 oirq.size);
262 }
263 if (virq == NO_IRQ) {
264 pr_debug(" Failed to map !\n");
265 return -1;
266 }
267
268 pr_debug(" Mapped to linux irq %d\n", virq);
269
270 pci_dev->irq = virq;
271
272 return 0;
273}
274EXPORT_SYMBOL(pci_read_irq_line);
275
276/*
277 * Platform support for /proc/bus/pci/X/Y mmap()s,
278 * modelled on the sparc64 implementation by Dave Miller.
279 * -- paulus.
280 */
281
282/*
283 * Adjust vm_pgoff of VMA such that it is the physical page offset
284 * corresponding to the 32-bit pci bus offset for DEV requested by the user.
285 *
286 * Basically, the user finds the base address for his device which he wishes
287 * to mmap. They read the 32-bit value from the config space base register,
288 * add whatever PAGE_SIZE multiple offset they wish, and feed this into the
289 * offset parameter of mmap on /proc/bus/pci/XXX for that device.
290 *
291 * Returns negative error code on failure, zero on success.
292 */
293static struct resource *__pci_mmap_make_offset(struct pci_dev *dev,
294 resource_size_t *offset,
295 enum pci_mmap_state mmap_state)
296{
297 struct pci_controller *hose = pci_bus_to_host(dev->bus);
298 unsigned long io_offset = 0;
299 int i, res_bit;
300
301 if (hose == 0)
302 return NULL; /* should never happen */
303
304 /* If memory, add on the PCI bridge address offset */
305 if (mmap_state == pci_mmap_mem) {
306#if 0 /* See comment in pci_resource_to_user() for why this is disabled */
307 *offset += hose->pci_mem_offset;
308#endif
309 res_bit = IORESOURCE_MEM;
310 } else {
311 io_offset = (unsigned long)hose->io_base_virt - _IO_BASE;
312 *offset += io_offset;
313 res_bit = IORESOURCE_IO;
314 }
315
316 /*
317 * Check that the offset requested corresponds to one of the
318 * resources of the device.
319 */
320 for (i = 0; i <= PCI_ROM_RESOURCE; i++) {
321 struct resource *rp = &dev->resource[i];
322 int flags = rp->flags;
323
324 /* treat ROM as memory (should be already) */
325 if (i == PCI_ROM_RESOURCE)
326 flags |= IORESOURCE_MEM;
327
328 /* Active and same type? */
329 if ((flags & res_bit) == 0)
330 continue;
331
332 /* In the range of this resource? */
333 if (*offset < (rp->start & PAGE_MASK) || *offset > rp->end)
334 continue;
335
336 /* found it! construct the final physical address */
337 if (mmap_state == pci_mmap_io)
338 *offset += hose->io_base_phys - io_offset;
339 return rp;
340 }
341
342 return NULL;
343}
344
345/*
346 * Set vm_page_prot of VMA, as appropriate for this architecture, for a pci
347 * device mapping.
348 */
349static pgprot_t __pci_mmap_set_pgprot(struct pci_dev *dev, struct resource *rp,
350 pgprot_t protection,
351 enum pci_mmap_state mmap_state,
352 int write_combine)
353{
354 pgprot_t prot = protection;
355
356 /* Write combine is always 0 on non-memory space mappings. On
357 * memory space, if the user didn't pass 1, we check for a
358 * "prefetchable" resource. This is a bit hackish, but we use
359 * this to workaround the inability of /sysfs to provide a write
360 * combine bit
361 */
362 if (mmap_state != pci_mmap_mem)
363 write_combine = 0;
364 else if (write_combine == 0) {
365 if (rp->flags & IORESOURCE_PREFETCH)
366 write_combine = 1;
367 }
368
369 return pgprot_noncached(prot);
370}
371
372/*
373 * This one is used by /dev/mem and fbdev who have no clue about the
374 * PCI device, it tries to find the PCI device first and calls the
375 * above routine
376 */
377pgprot_t pci_phys_mem_access_prot(struct file *file,
378 unsigned long pfn,
379 unsigned long size,
380 pgprot_t prot)
381{
382 struct pci_dev *pdev = NULL;
383 struct resource *found = NULL;
384 resource_size_t offset = ((resource_size_t)pfn) << PAGE_SHIFT;
385 int i;
386
387 if (page_is_ram(pfn))
388 return prot;
389
390 prot = pgprot_noncached(prot);
391 for_each_pci_dev(pdev) {
392 for (i = 0; i <= PCI_ROM_RESOURCE; i++) {
393 struct resource *rp = &pdev->resource[i];
394 int flags = rp->flags;
395
396 /* Active and same type? */
397 if ((flags & IORESOURCE_MEM) == 0)
398 continue;
399 /* In the range of this resource? */
400 if (offset < (rp->start & PAGE_MASK) ||
401 offset > rp->end)
402 continue;
403 found = rp;
404 break;
405 }
406 if (found)
407 break;
408 }
409 if (found) {
410 if (found->flags & IORESOURCE_PREFETCH)
411 prot = pgprot_noncached_wc(prot);
412 pci_dev_put(pdev);
413 }
414
415 pr_debug("PCI: Non-PCI map for %llx, prot: %lx\n",
416 (unsigned long long)offset, pgprot_val(prot));
417
418 return prot;
419}
420
421/*
422 * Perform the actual remap of the pages for a PCI device mapping, as
423 * appropriate for this architecture. The region in the process to map
424 * is described by vm_start and vm_end members of VMA, the base physical
425 * address is found in vm_pgoff.
426 * The pci device structure is provided so that architectures may make mapping
427 * decisions on a per-device or per-bus basis.
428 *
429 * Returns a negative error code on failure, zero on success.
430 */
431int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
432 enum pci_mmap_state mmap_state, int write_combine)
433{
434 resource_size_t offset =
435 ((resource_size_t)vma->vm_pgoff) << PAGE_SHIFT;
436 struct resource *rp;
437 int ret;
438
439 rp = __pci_mmap_make_offset(dev, &offset, mmap_state);
440 if (rp == NULL)
441 return -EINVAL;
442
443 vma->vm_pgoff = offset >> PAGE_SHIFT;
444 vma->vm_page_prot = __pci_mmap_set_pgprot(dev, rp,
445 vma->vm_page_prot,
446 mmap_state, write_combine);
447
448 ret = remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
449 vma->vm_end - vma->vm_start, vma->vm_page_prot);
450
451 return ret;
452}
453
454/* This provides legacy IO read access on a bus */
455int pci_legacy_read(struct pci_bus *bus, loff_t port, u32 *val, size_t size)
456{
457 unsigned long offset;
458 struct pci_controller *hose = pci_bus_to_host(bus);
459 struct resource *rp = &hose->io_resource;
460 void __iomem *addr;
461
462 /* Check if port can be supported by that bus. We only check
463 * the ranges of the PHB though, not the bus itself as the rules
464 * for forwarding legacy cycles down bridges are not our problem
465 * here. So if the host bridge supports it, we do it.
466 */
467 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
468 offset += port;
469
470 if (!(rp->flags & IORESOURCE_IO))
471 return -ENXIO;
472 if (offset < rp->start || (offset + size) > rp->end)
473 return -ENXIO;
474 addr = hose->io_base_virt + port;
475
476 switch (size) {
477 case 1:
478 *((u8 *)val) = in_8(addr);
479 return 1;
480 case 2:
481 if (port & 1)
482 return -EINVAL;
483 *((u16 *)val) = in_le16(addr);
484 return 2;
485 case 4:
486 if (port & 3)
487 return -EINVAL;
488 *((u32 *)val) = in_le32(addr);
489 return 4;
490 }
491 return -EINVAL;
492}
493
494/* This provides legacy IO write access on a bus */
495int pci_legacy_write(struct pci_bus *bus, loff_t port, u32 val, size_t size)
496{
497 unsigned long offset;
498 struct pci_controller *hose = pci_bus_to_host(bus);
499 struct resource *rp = &hose->io_resource;
500 void __iomem *addr;
501
502 /* Check if port can be supported by that bus. We only check
503 * the ranges of the PHB though, not the bus itself as the rules
504 * for forwarding legacy cycles down bridges are not our problem
505 * here. So if the host bridge supports it, we do it.
506 */
507 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
508 offset += port;
509
510 if (!(rp->flags & IORESOURCE_IO))
511 return -ENXIO;
512 if (offset < rp->start || (offset + size) > rp->end)
513 return -ENXIO;
514 addr = hose->io_base_virt + port;
515
516 /* WARNING: The generic code is idiotic. It gets passed a pointer
517 * to what can be a 1, 2 or 4 byte quantity and always reads that
518 * as a u32, which means that we have to correct the location of
519 * the data read within those 32 bits for size 1 and 2
520 */
521 switch (size) {
522 case 1:
523 out_8(addr, val >> 24);
524 return 1;
525 case 2:
526 if (port & 1)
527 return -EINVAL;
528 out_le16(addr, val >> 16);
529 return 2;
530 case 4:
531 if (port & 3)
532 return -EINVAL;
533 out_le32(addr, val);
534 return 4;
535 }
536 return -EINVAL;
537}
538
539/* This provides legacy IO or memory mmap access on a bus */
540int pci_mmap_legacy_page_range(struct pci_bus *bus,
541 struct vm_area_struct *vma,
542 enum pci_mmap_state mmap_state)
543{
544 struct pci_controller *hose = pci_bus_to_host(bus);
545 resource_size_t offset =
546 ((resource_size_t)vma->vm_pgoff) << PAGE_SHIFT;
547 resource_size_t size = vma->vm_end - vma->vm_start;
548 struct resource *rp;
549
550 pr_debug("pci_mmap_legacy_page_range(%04x:%02x, %s @%llx..%llx)\n",
551 pci_domain_nr(bus), bus->number,
552 mmap_state == pci_mmap_mem ? "MEM" : "IO",
553 (unsigned long long)offset,
554 (unsigned long long)(offset + size - 1));
555
556 if (mmap_state == pci_mmap_mem) {
557 /* Hack alert !
558 *
559 * Because X is lame and can fail starting if it gets an error
560 * trying to mmap legacy_mem (instead of just moving on without
561 * legacy memory access) we fake it here by giving it anonymous
562 * memory, effectively behaving just like /dev/zero
563 */
564 if ((offset + size) > hose->isa_mem_size) {
565#ifdef CONFIG_MMU
566 printk(KERN_DEBUG
567 "Process %s (pid:%d) mapped non-existing PCI"
568 "legacy memory for 0%04x:%02x\n",
569 current->comm, current->pid, pci_domain_nr(bus),
570 bus->number);
571#endif
572 if (vma->vm_flags & VM_SHARED)
573 return shmem_zero_setup(vma);
574 return 0;
575 }
576 offset += hose->isa_mem_phys;
577 } else {
578 unsigned long io_offset = (unsigned long)hose->io_base_virt - \
579 _IO_BASE;
580 unsigned long roffset = offset + io_offset;
581 rp = &hose->io_resource;
582 if (!(rp->flags & IORESOURCE_IO))
583 return -ENXIO;
584 if (roffset < rp->start || (roffset + size) > rp->end)
585 return -ENXIO;
586 offset += hose->io_base_phys;
587 }
588 pr_debug(" -> mapping phys %llx\n", (unsigned long long)offset);
589
590 vma->vm_pgoff = offset >> PAGE_SHIFT;
591 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
592 return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
593 vma->vm_end - vma->vm_start,
594 vma->vm_page_prot);
595}
596
597void pci_resource_to_user(const struct pci_dev *dev, int bar,
598 const struct resource *rsrc,
599 resource_size_t *start, resource_size_t *end)
600{
601 struct pci_controller *hose = pci_bus_to_host(dev->bus);
602 resource_size_t offset = 0;
603
604 if (hose == NULL)
605 return;
606
607 if (rsrc->flags & IORESOURCE_IO)
608 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
609
610 /* We pass a fully fixed up address to userland for MMIO instead of
611 * a BAR value because X is lame and expects to be able to use that
612 * to pass to /dev/mem !
613 *
614 * That means that we'll have potentially 64 bits values where some
615 * userland apps only expect 32 (like X itself since it thinks only
616 * Sparc has 64 bits MMIO) but if we don't do that, we break it on
617 * 32 bits CHRPs :-(
618 *
619 * Hopefully, the sysfs insterface is immune to that gunk. Once X
620 * has been fixed (and the fix spread enough), we can re-enable the
621 * 2 lines below and pass down a BAR value to userland. In that case
622 * we'll also have to re-enable the matching code in
623 * __pci_mmap_make_offset().
624 *
625 * BenH.
626 */
627#if 0
628 else if (rsrc->flags & IORESOURCE_MEM)
629 offset = hose->pci_mem_offset;
630#endif
631
632 *start = rsrc->start - offset;
633 *end = rsrc->end - offset;
634}
635
636/**
637 * pci_process_bridge_OF_ranges - Parse PCI bridge resources from device tree
638 * @hose: newly allocated pci_controller to be setup
639 * @dev: device node of the host bridge
640 * @primary: set if primary bus (32 bits only, soon to be deprecated)
641 *
642 * This function will parse the "ranges" property of a PCI host bridge device
643 * node and setup the resource mapping of a pci controller based on its
644 * content.
645 *
646 * Life would be boring if it wasn't for a few issues that we have to deal
647 * with here:
648 *
649 * - We can only cope with one IO space range and up to 3 Memory space
650 * ranges. However, some machines (thanks Apple !) tend to split their
651 * space into lots of small contiguous ranges. So we have to coalesce.
652 *
653 * - We can only cope with all memory ranges having the same offset
654 * between CPU addresses and PCI addresses. Unfortunately, some bridges
655 * are setup for a large 1:1 mapping along with a small "window" which
656 * maps PCI address 0 to some arbitrary high address of the CPU space in
657 * order to give access to the ISA memory hole.
658 * The way out of here that I've chosen for now is to always set the
659 * offset based on the first resource found, then override it if we
660 * have a different offset and the previous was set by an ISA hole.
661 *
662 * - Some busses have IO space not starting at 0, which causes trouble with
663 * the way we do our IO resource renumbering. The code somewhat deals with
664 * it for 64 bits but I would expect problems on 32 bits.
665 *
666 * - Some 32 bits platforms such as 4xx can have physical space larger than
667 * 32 bits so we need to use 64 bits values for the parsing
668 */
669void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose,
670 struct device_node *dev,
671 int primary)
672{
673 const u32 *ranges;
674 int rlen;
675 int pna = of_n_addr_cells(dev);
676 int np = pna + 5;
677 int memno = 0, isa_hole = -1;
678 u32 pci_space;
679 unsigned long long pci_addr, cpu_addr, pci_next, cpu_next, size;
680 unsigned long long isa_mb = 0;
681 struct resource *res;
682
683 printk(KERN_INFO "PCI host bridge %s %s ranges:\n",
684 dev->full_name, primary ? "(primary)" : "");
685
686 /* Get ranges property */
687 ranges = of_get_property(dev, "ranges", &rlen);
688 if (ranges == NULL)
689 return;
690
691 /* Parse it */
692 pr_debug("Parsing ranges property...\n");
693 while ((rlen -= np * 4) >= 0) {
694 /* Read next ranges element */
695 pci_space = ranges[0];
696 pci_addr = of_read_number(ranges + 1, 2);
697 cpu_addr = of_translate_address(dev, ranges + 3);
698 size = of_read_number(ranges + pna + 3, 2);
699
700 pr_debug("pci_space: 0x%08x pci_addr:0x%016llx "
701 "cpu_addr:0x%016llx size:0x%016llx\n",
702 pci_space, pci_addr, cpu_addr, size);
703
704 ranges += np;
705
706 /* If we failed translation or got a zero-sized region
707 * (some FW try to feed us with non sensical zero sized regions
708 * such as power3 which look like some kind of attempt
709 * at exposing the VGA memory hole)
710 */
711 if (cpu_addr == OF_BAD_ADDR || size == 0)
712 continue;
713
714 /* Now consume following elements while they are contiguous */
715 for (; rlen >= np * sizeof(u32);
716 ranges += np, rlen -= np * 4) {
717 if (ranges[0] != pci_space)
718 break;
719 pci_next = of_read_number(ranges + 1, 2);
720 cpu_next = of_translate_address(dev, ranges + 3);
721 if (pci_next != pci_addr + size ||
722 cpu_next != cpu_addr + size)
723 break;
724 size += of_read_number(ranges + pna + 3, 2);
725 }
726
727 /* Act based on address space type */
728 res = NULL;
729 switch ((pci_space >> 24) & 0x3) {
730 case 1: /* PCI IO space */
731 printk(KERN_INFO
732 " IO 0x%016llx..0x%016llx -> 0x%016llx\n",
733 cpu_addr, cpu_addr + size - 1, pci_addr);
734
735 /* We support only one IO range */
736 if (hose->pci_io_size) {
737 printk(KERN_INFO
738 " \\--> Skipped (too many) !\n");
739 continue;
740 }
741 /* On 32 bits, limit I/O space to 16MB */
742 if (size > 0x01000000)
743 size = 0x01000000;
744
745 /* 32 bits needs to map IOs here */
746 hose->io_base_virt = ioremap(cpu_addr, size);
747
748 /* Expect trouble if pci_addr is not 0 */
749 if (primary)
750 isa_io_base =
751 (unsigned long)hose->io_base_virt;
752 /* pci_io_size and io_base_phys always represent IO
753 * space starting at 0 so we factor in pci_addr
754 */
755 hose->pci_io_size = pci_addr + size;
756 hose->io_base_phys = cpu_addr - pci_addr;
757
758 /* Build resource */
759 res = &hose->io_resource;
760 res->flags = IORESOURCE_IO;
761 res->start = pci_addr;
762 break;
763 case 2: /* PCI Memory space */
764 case 3: /* PCI 64 bits Memory space */
765 printk(KERN_INFO
766 " MEM 0x%016llx..0x%016llx -> 0x%016llx %s\n",
767 cpu_addr, cpu_addr + size - 1, pci_addr,
768 (pci_space & 0x40000000) ? "Prefetch" : "");
769
770 /* We support only 3 memory ranges */
771 if (memno >= 3) {
772 printk(KERN_INFO
773 " \\--> Skipped (too many) !\n");
774 continue;
775 }
776 /* Handles ISA memory hole space here */
777 if (pci_addr == 0) {
778 isa_mb = cpu_addr;
779 isa_hole = memno;
780 if (primary || isa_mem_base == 0)
781 isa_mem_base = cpu_addr;
782 hose->isa_mem_phys = cpu_addr;
783 hose->isa_mem_size = size;
784 }
785
786 /* We get the PCI/Mem offset from the first range or
787 * the, current one if the offset came from an ISA
788 * hole. If they don't match, bugger.
789 */
790 if (memno == 0 ||
791 (isa_hole >= 0 && pci_addr != 0 &&
792 hose->pci_mem_offset == isa_mb))
793 hose->pci_mem_offset = cpu_addr - pci_addr;
794 else if (pci_addr != 0 &&
795 hose->pci_mem_offset != cpu_addr - pci_addr) {
796 printk(KERN_INFO
797 " \\--> Skipped (offset mismatch) !\n");
798 continue;
799 }
800
801 /* Build resource */
802 res = &hose->mem_resources[memno++];
803 res->flags = IORESOURCE_MEM;
804 if (pci_space & 0x40000000)
805 res->flags |= IORESOURCE_PREFETCH;
806 res->start = cpu_addr;
807 break;
808 }
809 if (res != NULL) {
810 res->name = dev->full_name;
811 res->end = res->start + size - 1;
812 res->parent = NULL;
813 res->sibling = NULL;
814 res->child = NULL;
815 }
816 }
817
818 /* If there's an ISA hole and the pci_mem_offset is -not- matching
819 * the ISA hole offset, then we need to remove the ISA hole from
820 * the resource list for that brige
821 */
822 if (isa_hole >= 0 && hose->pci_mem_offset != isa_mb) {
823 unsigned int next = isa_hole + 1;
824 printk(KERN_INFO " Removing ISA hole at 0x%016llx\n", isa_mb);
825 if (next < memno)
826 memmove(&hose->mem_resources[isa_hole],
827 &hose->mem_resources[next],
828 sizeof(struct resource) * (memno - next));
829 hose->mem_resources[--memno].flags = 0;
830 }
831}
832
833/* Decide whether to display the domain number in /proc */
834int pci_proc_domain(struct pci_bus *bus)
835{
836 struct pci_controller *hose = pci_bus_to_host(bus);
837
838 if (!(pci_flags & PCI_ENABLE_PROC_DOMAINS))
839 return 0;
840 if (pci_flags & PCI_COMPAT_DOMAIN_0)
841 return hose->global_number != 0;
842 return 1;
843}
844
845void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
846 struct resource *res)
847{
848 resource_size_t offset = 0, mask = (resource_size_t)-1;
849 struct pci_controller *hose = pci_bus_to_host(dev->bus);
850
851 if (!hose)
852 return;
853 if (res->flags & IORESOURCE_IO) {
854 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
855 mask = 0xffffffffu;
856 } else if (res->flags & IORESOURCE_MEM)
857 offset = hose->pci_mem_offset;
858
859 region->start = (res->start - offset) & mask;
860 region->end = (res->end - offset) & mask;
861}
862EXPORT_SYMBOL(pcibios_resource_to_bus);
863
864void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
865 struct pci_bus_region *region)
866{
867 resource_size_t offset = 0, mask = (resource_size_t)-1;
868 struct pci_controller *hose = pci_bus_to_host(dev->bus);
869
870 if (!hose)
871 return;
872 if (res->flags & IORESOURCE_IO) {
873 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
874 mask = 0xffffffffu;
875 } else if (res->flags & IORESOURCE_MEM)
876 offset = hose->pci_mem_offset;
877 res->start = (region->start + offset) & mask;
878 res->end = (region->end + offset) & mask;
879}
880EXPORT_SYMBOL(pcibios_bus_to_resource);
881
882/* Fixup a bus resource into a linux resource */
883static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
884{
885 struct pci_controller *hose = pci_bus_to_host(dev->bus);
886 resource_size_t offset = 0, mask = (resource_size_t)-1;
887
888 if (res->flags & IORESOURCE_IO) {
889 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
890 mask = 0xffffffffu;
891 } else if (res->flags & IORESOURCE_MEM)
892 offset = hose->pci_mem_offset;
893
894 res->start = (res->start + offset) & mask;
895 res->end = (res->end + offset) & mask;
896}
897
898/* This header fixup will do the resource fixup for all devices as they are
899 * probed, but not for bridge ranges
900 */
901static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
902{
903 struct pci_controller *hose = pci_bus_to_host(dev->bus);
904 int i;
905
906 if (!hose) {
907 printk(KERN_ERR "No host bridge for PCI dev %s !\n",
908 pci_name(dev));
909 return;
910 }
911 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
912 struct resource *res = dev->resource + i;
913 if (!res->flags)
914 continue;
915 /* On platforms that have PCI_PROBE_ONLY set, we don't
916 * consider 0 as an unassigned BAR value. It's technically
917 * a valid value, but linux doesn't like it... so when we can
918 * re-assign things, we do so, but if we can't, we keep it
919 * around and hope for the best...
920 */
921 if (res->start == 0 && !(pci_flags & PCI_PROBE_ONLY)) {
922 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x]" \
923 "is unassigned\n",
924 pci_name(dev), i,
925 (unsigned long long)res->start,
926 (unsigned long long)res->end,
927 (unsigned int)res->flags);
928 res->end -= res->start;
929 res->start = 0;
930 res->flags |= IORESOURCE_UNSET;
931 continue;
932 }
933
934 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] fixup...\n",
935 pci_name(dev), i,
936 (unsigned long long)res->start,\
937 (unsigned long long)res->end,
938 (unsigned int)res->flags);
939
940 fixup_resource(res, dev);
941
942 pr_debug("PCI:%s %016llx-%016llx\n",
943 pci_name(dev),
944 (unsigned long long)res->start,
945 (unsigned long long)res->end);
946 }
947}
948DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);
949
950/* This function tries to figure out if a bridge resource has been initialized
951 * by the firmware or not. It doesn't have to be absolutely bullet proof, but
952 * things go more smoothly when it gets it right. It should covers cases such
953 * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges
954 */
955static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus,
956 struct resource *res)
957{
958 struct pci_controller *hose = pci_bus_to_host(bus);
959 struct pci_dev *dev = bus->self;
960 resource_size_t offset;
961 u16 command;
962 int i;
963
964 /* We don't do anything if PCI_PROBE_ONLY is set */
965 if (pci_flags & PCI_PROBE_ONLY)
966 return 0;
967
968 /* Job is a bit different between memory and IO */
969 if (res->flags & IORESOURCE_MEM) {
970 /* If the BAR is non-0 (res != pci_mem_offset) then it's
971 * probably been initialized by somebody
972 */
973 if (res->start != hose->pci_mem_offset)
974 return 0;
975
976 /* The BAR is 0, let's check if memory decoding is enabled on
977 * the bridge. If not, we consider it unassigned
978 */
979 pci_read_config_word(dev, PCI_COMMAND, &command);
980 if ((command & PCI_COMMAND_MEMORY) == 0)
981 return 1;
982
983 /* Memory decoding is enabled and the BAR is 0. If any of
984 * the bridge resources covers that starting address (0 then
985 * it's good enough for us for memory
986 */
987 for (i = 0; i < 3; i++) {
988 if ((hose->mem_resources[i].flags & IORESOURCE_MEM) &&
989 hose->mem_resources[i].start == hose->pci_mem_offset)
990 return 0;
991 }
992
993 /* Well, it starts at 0 and we know it will collide so we may as
994 * well consider it as unassigned. That covers the Apple case.
995 */
996 return 1;
997 } else {
998 /* If the BAR is non-0, then we consider it assigned */
999 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
1000 if (((res->start - offset) & 0xfffffffful) != 0)
1001 return 0;
1002
1003 /* Here, we are a bit different than memory as typically IO
1004 * space starting at low addresses -is- valid. What we do
1005 * instead if that we consider as unassigned anything that
1006 * doesn't have IO enabled in the PCI command register,
1007 * and that's it.
1008 */
1009 pci_read_config_word(dev, PCI_COMMAND, &command);
1010 if (command & PCI_COMMAND_IO)
1011 return 0;
1012
1013 /* It's starting at 0 and IO is disabled in the bridge, consider
1014 * it unassigned
1015 */
1016 return 1;
1017 }
1018}
1019
1020/* Fixup resources of a PCI<->PCI bridge */
1021static void __devinit pcibios_fixup_bridge(struct pci_bus *bus)
1022{
1023 struct resource *res;
1024 int i;
1025
1026 struct pci_dev *dev = bus->self;
1027
1028 for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) {
1029 res = bus->resource[i];
1030 if (!res)
1031 continue;
1032 if (!res->flags)
1033 continue;
1034 if (i >= 3 && bus->self->transparent)
1035 continue;
1036
1037 pr_debug("PCI:%s Bus rsrc %d %016llx-%016llx [%x] fixup...\n",
1038 pci_name(dev), i,
1039 (unsigned long long)res->start,\
1040 (unsigned long long)res->end,
1041 (unsigned int)res->flags);
1042
1043 /* Perform fixup */
1044 fixup_resource(res, dev);
1045
1046 /* Try to detect uninitialized P2P bridge resources,
1047 * and clear them out so they get re-assigned later
1048 */
1049 if (pcibios_uninitialized_bridge_resource(bus, res)) {
1050 res->flags = 0;
1051 pr_debug("PCI:%s (unassigned)\n",
1052 pci_name(dev));
1053 } else {
1054 pr_debug("PCI:%s %016llx-%016llx\n",
1055 pci_name(dev),
1056 (unsigned long long)res->start,
1057 (unsigned long long)res->end);
1058 }
1059 }
1060}
1061
1062void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
1063{
1064 /* Fix up the bus resources for P2P bridges */
1065 if (bus->self != NULL)
1066 pcibios_fixup_bridge(bus);
1067}
1068
1069void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
1070{
1071 struct pci_dev *dev;
1072
1073 pr_debug("PCI: Fixup bus devices %d (%s)\n",
1074 bus->number, bus->self ? pci_name(bus->self) : "PHB");
1075
1076 list_for_each_entry(dev, &bus->devices, bus_list) {
1077 struct dev_archdata *sd = &dev->dev.archdata;
1078
1079 /* Setup OF node pointer in archdata */
1080 sd->of_node = pci_device_to_OF_node(dev);
1081
1082 /* Fixup NUMA node as it may not be setup yet by the generic
1083 * code and is needed by the DMA init
1084 */
1085 set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
1086
1087 /* Hook up default DMA ops */
1088 sd->dma_ops = pci_dma_ops;
1089 sd->dma_data = (void *)PCI_DRAM_OFFSET;
1090
1091 /* Read default IRQs and fixup if necessary */
1092 pci_read_irq_line(dev);
1093 }
1094}
1095
1096void __devinit pcibios_fixup_bus(struct pci_bus *bus)
1097{
1098 /* When called from the generic PCI probe, read PCI<->PCI bridge
1099 * bases. This is -not- called when generating the PCI tree from
1100 * the OF device-tree.
1101 */
1102 if (bus->self != NULL)
1103 pci_read_bridge_bases(bus);
1104
1105 /* Now fixup the bus bus */
1106 pcibios_setup_bus_self(bus);
1107
1108 /* Now fixup devices on that bus */
1109 pcibios_setup_bus_devices(bus);
1110}
1111EXPORT_SYMBOL(pcibios_fixup_bus);
1112
1113static int skip_isa_ioresource_align(struct pci_dev *dev)
1114{
1115 if ((pci_flags & PCI_CAN_SKIP_ISA_ALIGN) &&
1116 !(dev->bus->bridge_ctl & PCI_BRIDGE_CTL_ISA))
1117 return 1;
1118 return 0;
1119}
1120
1121/*
1122 * We need to avoid collisions with `mirrored' VGA ports
1123 * and other strange ISA hardware, so we always want the
1124 * addresses to be allocated in the 0x000-0x0ff region
1125 * modulo 0x400.
1126 *
1127 * Why? Because some silly external IO cards only decode
1128 * the low 10 bits of the IO address. The 0x00-0xff region
1129 * is reserved for motherboard devices that decode all 16
1130 * bits, so it's ok to allocate at, say, 0x2800-0x28ff,
1131 * but we want to try to avoid allocating at 0x2900-0x2bff
1132 * which might have be mirrored at 0x0100-0x03ff..
1133 */
1134void pcibios_align_resource(void *data, struct resource *res,
1135 resource_size_t size, resource_size_t align)
1136{
1137 struct pci_dev *dev = data;
1138
1139 if (res->flags & IORESOURCE_IO) {
1140 resource_size_t start = res->start;
1141
1142 if (skip_isa_ioresource_align(dev))
1143 return;
1144 if (start & 0x300) {
1145 start = (start + 0x3ff) & ~0x3ff;
1146 res->start = start;
1147 }
1148 }
1149}
1150EXPORT_SYMBOL(pcibios_align_resource);
1151
1152/*
1153 * Reparent resource children of pr that conflict with res
1154 * under res, and make res replace those children.
1155 */
1156static int __init reparent_resources(struct resource *parent,
1157 struct resource *res)
1158{
1159 struct resource *p, **pp;
1160 struct resource **firstpp = NULL;
1161
1162 for (pp = &parent->child; (p = *pp) != NULL; pp = &p->sibling) {
1163 if (p->end < res->start)
1164 continue;
1165 if (res->end < p->start)
1166 break;
1167 if (p->start < res->start || p->end > res->end)
1168 return -1; /* not completely contained */
1169 if (firstpp == NULL)
1170 firstpp = pp;
1171 }
1172 if (firstpp == NULL)
1173 return -1; /* didn't find any conflicting entries? */
1174 res->parent = parent;
1175 res->child = *firstpp;
1176 res->sibling = *pp;
1177 *firstpp = res;
1178 *pp = NULL;
1179 for (p = res->child; p != NULL; p = p->sibling) {
1180 p->parent = res;
1181 pr_debug("PCI: Reparented %s [%llx..%llx] under %s\n",
1182 p->name,
1183 (unsigned long long)p->start,
1184 (unsigned long long)p->end, res->name);
1185 }
1186 return 0;
1187}
1188
1189/*
1190 * Handle resources of PCI devices. If the world were perfect, we could
1191 * just allocate all the resource regions and do nothing more. It isn't.
1192 * On the other hand, we cannot just re-allocate all devices, as it would
1193 * require us to know lots of host bridge internals. So we attempt to
1194 * keep as much of the original configuration as possible, but tweak it
1195 * when it's found to be wrong.
1196 *
1197 * Known BIOS problems we have to work around:
1198 * - I/O or memory regions not configured
1199 * - regions configured, but not enabled in the command register
1200 * - bogus I/O addresses above 64K used
1201 * - expansion ROMs left enabled (this may sound harmless, but given
1202 * the fact the PCI specs explicitly allow address decoders to be
1203 * shared between expansion ROMs and other resource regions, it's
1204 * at least dangerous)
1205 *
1206 * Our solution:
1207 * (1) Allocate resources for all buses behind PCI-to-PCI bridges.
1208 * This gives us fixed barriers on where we can allocate.
1209 * (2) Allocate resources for all enabled devices. If there is
1210 * a collision, just mark the resource as unallocated. Also
1211 * disable expansion ROMs during this step.
1212 * (3) Try to allocate resources for disabled devices. If the
1213 * resources were assigned correctly, everything goes well,
1214 * if they weren't, they won't disturb allocation of other
1215 * resources.
1216 * (4) Assign new addresses to resources which were either
1217 * not configured at all or misconfigured. If explicitly
1218 * requested by the user, configure expansion ROM address
1219 * as well.
1220 */
1221
1222void pcibios_allocate_bus_resources(struct pci_bus *bus)
1223{
1224 struct pci_bus *b;
1225 int i;
1226 struct resource *res, *pr;
1227
1228 pr_debug("PCI: Allocating bus resources for %04x:%02x...\n",
1229 pci_domain_nr(bus), bus->number);
1230
1231 for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) {
1232 res = bus->resource[i];
1233 if (!res || !res->flags
1234 || res->start > res->end || res->parent)
1235 continue;
1236 if (bus->parent == NULL)
1237 pr = (res->flags & IORESOURCE_IO) ?
1238 &ioport_resource : &iomem_resource;
1239 else {
1240 /* Don't bother with non-root busses when
1241 * re-assigning all resources. We clear the
1242 * resource flags as if they were colliding
1243 * and as such ensure proper re-allocation
1244 * later.
1245 */
1246 if (pci_flags & PCI_REASSIGN_ALL_RSRC)
1247 goto clear_resource;
1248 pr = pci_find_parent_resource(bus->self, res);
1249 if (pr == res) {
1250 /* this happens when the generic PCI
1251 * code (wrongly) decides that this
1252 * bridge is transparent -- paulus
1253 */
1254 continue;
1255 }
1256 }
1257
1258 pr_debug("PCI: %s (bus %d) bridge rsrc %d: %016llx-%016llx "
1259 "[0x%x], parent %p (%s)\n",
1260 bus->self ? pci_name(bus->self) : "PHB",
1261 bus->number, i,
1262 (unsigned long long)res->start,
1263 (unsigned long long)res->end,
1264 (unsigned int)res->flags,
1265 pr, (pr && pr->name) ? pr->name : "nil");
1266
1267 if (pr && !(pr->flags & IORESOURCE_UNSET)) {
1268 if (request_resource(pr, res) == 0)
1269 continue;
1270 /*
1271 * Must be a conflict with an existing entry.
1272 * Move that entry (or entries) under the
1273 * bridge resource and try again.
1274 */
1275 if (reparent_resources(pr, res) == 0)
1276 continue;
1277 }
1278 printk(KERN_WARNING "PCI: Cannot allocate resource region "
1279 "%d of PCI bridge %d, will remap\n", i, bus->number);
1280clear_resource:
1281 res->flags = 0;
1282 }
1283
1284 list_for_each_entry(b, &bus->children, node)
1285 pcibios_allocate_bus_resources(b);
1286}
1287
1288static inline void __devinit alloc_resource(struct pci_dev *dev, int idx)
1289{
1290 struct resource *pr, *r = &dev->resource[idx];
1291
1292 pr_debug("PCI: Allocating %s: Resource %d: %016llx..%016llx [%x]\n",
1293 pci_name(dev), idx,
1294 (unsigned long long)r->start,
1295 (unsigned long long)r->end,
1296 (unsigned int)r->flags);
1297
1298 pr = pci_find_parent_resource(dev, r);
1299 if (!pr || (pr->flags & IORESOURCE_UNSET) ||
1300 request_resource(pr, r) < 0) {
1301 printk(KERN_WARNING "PCI: Cannot allocate resource region %d"
1302 " of device %s, will remap\n", idx, pci_name(dev));
1303 if (pr)
1304 pr_debug("PCI: parent is %p: %016llx-%016llx [%x]\n",
1305 pr,
1306 (unsigned long long)pr->start,
1307 (unsigned long long)pr->end,
1308 (unsigned int)pr->flags);
1309 /* We'll assign a new address later */
1310 r->flags |= IORESOURCE_UNSET;
1311 r->end -= r->start;
1312 r->start = 0;
1313 }
1314}
1315
1316static void __init pcibios_allocate_resources(int pass)
1317{
1318 struct pci_dev *dev = NULL;
1319 int idx, disabled;
1320 u16 command;
1321 struct resource *r;
1322
1323 for_each_pci_dev(dev) {
1324 pci_read_config_word(dev, PCI_COMMAND, &command);
1325 for (idx = 0; idx <= PCI_ROM_RESOURCE; idx++) {
1326 r = &dev->resource[idx];
1327 if (r->parent) /* Already allocated */
1328 continue;
1329 if (!r->flags || (r->flags & IORESOURCE_UNSET))
1330 continue; /* Not assigned at all */
1331 /* We only allocate ROMs on pass 1 just in case they
1332 * have been screwed up by firmware
1333 */
1334 if (idx == PCI_ROM_RESOURCE)
1335 disabled = 1;
1336 if (r->flags & IORESOURCE_IO)
1337 disabled = !(command & PCI_COMMAND_IO);
1338 else
1339 disabled = !(command & PCI_COMMAND_MEMORY);
1340 if (pass == disabled)
1341 alloc_resource(dev, idx);
1342 }
1343 if (pass)
1344 continue;
1345 r = &dev->resource[PCI_ROM_RESOURCE];
1346 if (r->flags) {
1347 /* Turn the ROM off, leave the resource region,
1348 * but keep it unregistered.
1349 */
1350 u32 reg;
1351 pci_read_config_dword(dev, dev->rom_base_reg, &reg);
1352 if (reg & PCI_ROM_ADDRESS_ENABLE) {
1353 pr_debug("PCI: Switching off ROM of %s\n",
1354 pci_name(dev));
1355 r->flags &= ~IORESOURCE_ROM_ENABLE;
1356 pci_write_config_dword(dev, dev->rom_base_reg,
1357 reg & ~PCI_ROM_ADDRESS_ENABLE);
1358 }
1359 }
1360 }
1361}
1362
1363static void __init pcibios_reserve_legacy_regions(struct pci_bus *bus)
1364{
1365 struct pci_controller *hose = pci_bus_to_host(bus);
1366 resource_size_t offset;
1367 struct resource *res, *pres;
1368 int i;
1369
1370 pr_debug("Reserving legacy ranges for domain %04x\n",
1371 pci_domain_nr(bus));
1372
1373 /* Check for IO */
1374 if (!(hose->io_resource.flags & IORESOURCE_IO))
1375 goto no_io;
1376 offset = (unsigned long)hose->io_base_virt - _IO_BASE;
1377 res = kzalloc(sizeof(struct resource), GFP_KERNEL);
1378 BUG_ON(res == NULL);
1379 res->name = "Legacy IO";
1380 res->flags = IORESOURCE_IO;
1381 res->start = offset;
1382 res->end = (offset + 0xfff) & 0xfffffffful;
1383 pr_debug("Candidate legacy IO: %pR\n", res);
1384 if (request_resource(&hose->io_resource, res)) {
1385 printk(KERN_DEBUG
1386 "PCI %04x:%02x Cannot reserve Legacy IO %pR\n",
1387 pci_domain_nr(bus), bus->number, res);
1388 kfree(res);
1389 }
1390
1391 no_io:
1392 /* Check for memory */
1393 offset = hose->pci_mem_offset;
1394 pr_debug("hose mem offset: %016llx\n", (unsigned long long)offset);
1395 for (i = 0; i < 3; i++) {
1396 pres = &hose->mem_resources[i];
1397 if (!(pres->flags & IORESOURCE_MEM))
1398 continue;
1399 pr_debug("hose mem res: %pR\n", pres);
1400 if ((pres->start - offset) <= 0xa0000 &&
1401 (pres->end - offset) >= 0xbffff)
1402 break;
1403 }
1404 if (i >= 3)
1405 return;
1406 res = kzalloc(sizeof(struct resource), GFP_KERNEL);
1407 BUG_ON(res == NULL);
1408 res->name = "Legacy VGA memory";
1409 res->flags = IORESOURCE_MEM;
1410 res->start = 0xa0000 + offset;
1411 res->end = 0xbffff + offset;
1412 pr_debug("Candidate VGA memory: %pR\n", res);
1413 if (request_resource(pres, res)) {
1414 printk(KERN_DEBUG
1415 "PCI %04x:%02x Cannot reserve VGA memory %pR\n",
1416 pci_domain_nr(bus), bus->number, res);
1417 kfree(res);
1418 }
1419}
1420
1421void __init pcibios_resource_survey(void)
1422{
1423 struct pci_bus *b;
1424
1425 /* Allocate and assign resources. If we re-assign everything, then
1426 * we skip the allocate phase
1427 */
1428 list_for_each_entry(b, &pci_root_buses, node)
1429 pcibios_allocate_bus_resources(b);
1430
1431 if (!(pci_flags & PCI_REASSIGN_ALL_RSRC)) {
1432 pcibios_allocate_resources(0);
1433 pcibios_allocate_resources(1);
1434 }
1435
1436 /* Before we start assigning unassigned resource, we try to reserve
1437 * the low IO area and the VGA memory area if they intersect the
1438 * bus available resources to avoid allocating things on top of them
1439 */
1440 if (!(pci_flags & PCI_PROBE_ONLY)) {
1441 list_for_each_entry(b, &pci_root_buses, node)
1442 pcibios_reserve_legacy_regions(b);
1443 }
1444
1445 /* Now, if the platform didn't decide to blindly trust the firmware,
1446 * we proceed to assigning things that were left unassigned
1447 */
1448 if (!(pci_flags & PCI_PROBE_ONLY)) {
1449 pr_debug("PCI: Assigning unassigned resources...\n");
1450 pci_assign_unassigned_resources();
1451 }
1452}
1453
1454#ifdef CONFIG_HOTPLUG
1455
1456/* This is used by the PCI hotplug driver to allocate resource
1457 * of newly plugged busses. We can try to consolidate with the
1458 * rest of the code later, for now, keep it as-is as our main
1459 * resource allocation function doesn't deal with sub-trees yet.
1460 */
1461void __devinit pcibios_claim_one_bus(struct pci_bus *bus)
1462{
1463 struct pci_dev *dev;
1464 struct pci_bus *child_bus;
1465
1466 list_for_each_entry(dev, &bus->devices, bus_list) {
1467 int i;
1468
1469 for (i = 0; i < PCI_NUM_RESOURCES; i++) {
1470 struct resource *r = &dev->resource[i];
1471
1472 if (r->parent || !r->start || !r->flags)
1473 continue;
1474
1475 pr_debug("PCI: Claiming %s: "
1476 "Resource %d: %016llx..%016llx [%x]\n",
1477 pci_name(dev), i,
1478 (unsigned long long)r->start,
1479 (unsigned long long)r->end,
1480 (unsigned int)r->flags);
1481
1482 pci_claim_resource(dev, i);
1483 }
1484 }
1485
1486 list_for_each_entry(child_bus, &bus->children, node)
1487 pcibios_claim_one_bus(child_bus);
1488}
1489EXPORT_SYMBOL_GPL(pcibios_claim_one_bus);
1490
1491
1492/* pcibios_finish_adding_to_bus
1493 *
1494 * This is to be called by the hotplug code after devices have been
1495 * added to a bus, this include calling it for a PHB that is just
1496 * being added
1497 */
1498void pcibios_finish_adding_to_bus(struct pci_bus *bus)
1499{
1500 pr_debug("PCI: Finishing adding to hotplug bus %04x:%02x\n",
1501 pci_domain_nr(bus), bus->number);
1502
1503 /* Allocate bus and devices resources */
1504 pcibios_allocate_bus_resources(bus);
1505 pcibios_claim_one_bus(bus);
1506
1507 /* Add new devices to global lists. Register in proc, sysfs. */
1508 pci_bus_add_devices(bus);
1509
1510 /* Fixup EEH */
1511 eeh_add_device_tree_late(bus);
1512}
1513EXPORT_SYMBOL_GPL(pcibios_finish_adding_to_bus);
1514
1515#endif /* CONFIG_HOTPLUG */
1516
1517int pcibios_enable_device(struct pci_dev *dev, int mask)
1518{
1519 return pci_enable_resources(dev, mask);
1520}
1521
1522void __devinit pcibios_setup_phb_resources(struct pci_controller *hose)
1523{
1524 struct pci_bus *bus = hose->bus;
1525 struct resource *res;
1526 int i;
1527
1528 /* Hookup PHB IO resource */
1529 bus->resource[0] = res = &hose->io_resource;
1530
1531 if (!res->flags) {
1532 printk(KERN_WARNING "PCI: I/O resource not set for host"
1533 " bridge %s (domain %d)\n",
1534 hose->dn->full_name, hose->global_number);
1535 /* Workaround for lack of IO resource only on 32-bit */
1536 res->start = (unsigned long)hose->io_base_virt - isa_io_base;
1537 res->end = res->start + IO_SPACE_LIMIT;
1538 res->flags = IORESOURCE_IO;
1539 }
1540
1541 pr_debug("PCI: PHB IO resource = %016llx-%016llx [%lx]\n",
1542 (unsigned long long)res->start,
1543 (unsigned long long)res->end,
1544 (unsigned long)res->flags);
1545
1546 /* Hookup PHB Memory resources */
1547 for (i = 0; i < 3; ++i) {
1548 res = &hose->mem_resources[i];
1549 if (!res->flags) {
1550 if (i > 0)
1551 continue;
1552 printk(KERN_ERR "PCI: Memory resource 0 not set for "
1553 "host bridge %s (domain %d)\n",
1554 hose->dn->full_name, hose->global_number);
1555
1556 /* Workaround for lack of MEM resource only on 32-bit */
1557 res->start = hose->pci_mem_offset;
1558 res->end = (resource_size_t)-1LL;
1559 res->flags = IORESOURCE_MEM;
1560
1561 }
1562 bus->resource[i+1] = res;
1563
1564 pr_debug("PCI: PHB MEM resource %d = %016llx-%016llx [%lx]\n",
1565 i, (unsigned long long)res->start,
1566 (unsigned long long)res->end,
1567 (unsigned long)res->flags);
1568 }
1569
1570 pr_debug("PCI: PHB MEM offset = %016llx\n",
1571 (unsigned long long)hose->pci_mem_offset);
1572 pr_debug("PCI: PHB IO offset = %08lx\n",
1573 (unsigned long)hose->io_base_virt - _IO_BASE);
1574}
1575
1576/*
1577 * Null PCI config access functions, for the case when we can't
1578 * find a hose.
1579 */
1580#define NULL_PCI_OP(rw, size, type) \
1581static int \
1582null_##rw##_config_##size(struct pci_dev *dev, int offset, type val) \
1583{ \
1584 return PCIBIOS_DEVICE_NOT_FOUND; \
1585}
1586
1587static int
1588null_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
1589 int len, u32 *val)
1590{
1591 return PCIBIOS_DEVICE_NOT_FOUND;
1592}
1593
1594static int
1595null_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
1596 int len, u32 val)
1597{
1598 return PCIBIOS_DEVICE_NOT_FOUND;
1599}
1600
1601static struct pci_ops null_pci_ops = {
1602 .read = null_read_config,
1603 .write = null_write_config,
1604};
1605
1606/*
1607 * These functions are used early on before PCI scanning is done
1608 * and all of the pci_dev and pci_bus structures have been created.
1609 */
1610static struct pci_bus *
1611fake_pci_bus(struct pci_controller *hose, int busnr)
1612{
1613 static struct pci_bus bus;
1614
1615 if (!hose)
1616 printk(KERN_ERR "Can't find hose for PCI bus %d!\n", busnr);
1617
1618 bus.number = busnr;
1619 bus.sysdata = hose;
1620 bus.ops = hose ? hose->ops : &null_pci_ops;
1621 return &bus;
1622}
1623
1624#define EARLY_PCI_OP(rw, size, type) \
1625int early_##rw##_config_##size(struct pci_controller *hose, int bus, \
1626 int devfn, int offset, type value) \
1627{ \
1628 return pci_bus_##rw##_config_##size(fake_pci_bus(hose, bus), \
1629 devfn, offset, value); \
1630}
1631
1632EARLY_PCI_OP(read, byte, u8 *)
1633EARLY_PCI_OP(read, word, u16 *)
1634EARLY_PCI_OP(read, dword, u32 *)
1635EARLY_PCI_OP(write, byte, u8)
1636EARLY_PCI_OP(write, word, u16)
1637EARLY_PCI_OP(write, dword, u32)
1638
1639int early_find_capability(struct pci_controller *hose, int bus, int devfn,
1640 int cap)
1641{
1642 return pci_bus_find_capability(fake_pci_bus(hose, bus), devfn, cap);
1643}
diff --git a/arch/microblaze/pci/pci_32.c b/arch/microblaze/pci/pci_32.c
new file mode 100644
index 000000000000..3c3d808d7ce0
--- /dev/null
+++ b/arch/microblaze/pci/pci_32.c
@@ -0,0 +1,431 @@
1/*
2 * Common pmac/prep/chrp pci routines. -- Cort
3 */
4
5#include <linux/kernel.h>
6#include <linux/pci.h>
7#include <linux/delay.h>
8#include <linux/string.h>
9#include <linux/init.h>
10#include <linux/capability.h>
11#include <linux/sched.h>
12#include <linux/errno.h>
13#include <linux/bootmem.h>
14#include <linux/irq.h>
15#include <linux/list.h>
16#include <linux/of.h>
17#include <linux/slab.h>
18
19#include <asm/processor.h>
20#include <asm/io.h>
21#include <asm/prom.h>
22#include <asm/sections.h>
23#include <asm/pci-bridge.h>
24#include <asm/byteorder.h>
25#include <asm/uaccess.h>
26
27#undef DEBUG
28
29unsigned long isa_io_base;
30unsigned long pci_dram_offset;
31int pcibios_assign_bus_offset = 1;
32
33static u8 *pci_to_OF_bus_map;
34
35/* By default, we don't re-assign bus numbers. We do this only on
36 * some pmacs
37 */
38static int pci_assign_all_buses;
39
40static int pci_bus_count;
41
42/*
43 * Functions below are used on OpenFirmware machines.
44 */
45static void
46make_one_node_map(struct device_node *node, u8 pci_bus)
47{
48 const int *bus_range;
49 int len;
50
51 if (pci_bus >= pci_bus_count)
52 return;
53 bus_range = of_get_property(node, "bus-range", &len);
54 if (bus_range == NULL || len < 2 * sizeof(int)) {
55 printk(KERN_WARNING "Can't get bus-range for %s, "
56 "assuming it starts at 0\n", node->full_name);
57 pci_to_OF_bus_map[pci_bus] = 0;
58 } else
59 pci_to_OF_bus_map[pci_bus] = bus_range[0];
60
61 for_each_child_of_node(node, node) {
62 struct pci_dev *dev;
63 const unsigned int *class_code, *reg;
64
65 class_code = of_get_property(node, "class-code", NULL);
66 if (!class_code ||
67 ((*class_code >> 8) != PCI_CLASS_BRIDGE_PCI &&
68 (*class_code >> 8) != PCI_CLASS_BRIDGE_CARDBUS))
69 continue;
70 reg = of_get_property(node, "reg", NULL);
71 if (!reg)
72 continue;
73 dev = pci_get_bus_and_slot(pci_bus, ((reg[0] >> 8) & 0xff));
74 if (!dev || !dev->subordinate) {
75 pci_dev_put(dev);
76 continue;
77 }
78 make_one_node_map(node, dev->subordinate->number);
79 pci_dev_put(dev);
80 }
81}
82
83void
84pcibios_make_OF_bus_map(void)
85{
86 int i;
87 struct pci_controller *hose, *tmp;
88 struct property *map_prop;
89 struct device_node *dn;
90
91 pci_to_OF_bus_map = kmalloc(pci_bus_count, GFP_KERNEL);
92 if (!pci_to_OF_bus_map) {
93 printk(KERN_ERR "Can't allocate OF bus map !\n");
94 return;
95 }
96
97 /* We fill the bus map with invalid values, that helps
98 * debugging.
99 */
100 for (i = 0; i < pci_bus_count; i++)
101 pci_to_OF_bus_map[i] = 0xff;
102
103 /* For each hose, we begin searching bridges */
104 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
105 struct device_node *node = hose->dn;
106
107 if (!node)
108 continue;
109 make_one_node_map(node, hose->first_busno);
110 }
111 dn = of_find_node_by_path("/");
112 map_prop = of_find_property(dn, "pci-OF-bus-map", NULL);
113 if (map_prop) {
114 BUG_ON(pci_bus_count > map_prop->length);
115 memcpy(map_prop->value, pci_to_OF_bus_map, pci_bus_count);
116 }
117 of_node_put(dn);
118#ifdef DEBUG
119 printk(KERN_INFO "PCI->OF bus map:\n");
120 for (i = 0; i < pci_bus_count; i++) {
121 if (pci_to_OF_bus_map[i] == 0xff)
122 continue;
123 printk(KERN_INFO "%d -> %d\n", i, pci_to_OF_bus_map[i]);
124 }
125#endif
126}
127
128typedef int (*pci_OF_scan_iterator)(struct device_node *node, void *data);
129
130static struct device_node *scan_OF_pci_childs(struct device_node *parent,
131 pci_OF_scan_iterator filter, void *data)
132{
133 struct device_node *node;
134 struct device_node *sub_node;
135
136 for_each_child_of_node(parent, node) {
137 const unsigned int *class_code;
138
139 if (filter(node, data)) {
140 of_node_put(node);
141 return node;
142 }
143
144 /* For PCI<->PCI bridges or CardBus bridges, we go down
145 * Note: some OFs create a parent node "multifunc-device" as
146 * a fake root for all functions of a multi-function device,
147 * we go down them as well.
148 */
149 class_code = of_get_property(node, "class-code", NULL);
150 if ((!class_code ||
151 ((*class_code >> 8) != PCI_CLASS_BRIDGE_PCI &&
152 (*class_code >> 8) != PCI_CLASS_BRIDGE_CARDBUS)) &&
153 strcmp(node->name, "multifunc-device"))
154 continue;
155 sub_node = scan_OF_pci_childs(node, filter, data);
156 if (sub_node) {
157 of_node_put(node);
158 return sub_node;
159 }
160 }
161 return NULL;
162}
163
164static struct device_node *scan_OF_for_pci_dev(struct device_node *parent,
165 unsigned int devfn)
166{
167 struct device_node *np, *cnp;
168 const u32 *reg;
169 unsigned int psize;
170
171 for_each_child_of_node(parent, np) {
172 reg = of_get_property(np, "reg", &psize);
173 if (reg && psize >= 4 && ((reg[0] >> 8) & 0xff) == devfn)
174 return np;
175
176 /* Note: some OFs create a parent node "multifunc-device" as
177 * a fake root for all functions of a multi-function device,
178 * we go down them as well. */
179 if (!strcmp(np->name, "multifunc-device")) {
180 cnp = scan_OF_for_pci_dev(np, devfn);
181 if (cnp)
182 return cnp;
183 }
184 }
185 return NULL;
186}
187
188
189static struct device_node *scan_OF_for_pci_bus(struct pci_bus *bus)
190{
191 struct device_node *parent, *np;
192
193 /* Are we a root bus ? */
194 if (bus->self == NULL || bus->parent == NULL) {
195 struct pci_controller *hose = pci_bus_to_host(bus);
196 if (hose == NULL)
197 return NULL;
198 return of_node_get(hose->dn);
199 }
200
201 /* not a root bus, we need to get our parent */
202 parent = scan_OF_for_pci_bus(bus->parent);
203 if (parent == NULL)
204 return NULL;
205
206 /* now iterate for children for a match */
207 np = scan_OF_for_pci_dev(parent, bus->self->devfn);
208 of_node_put(parent);
209
210 return np;
211}
212
213/*
214 * Scans the OF tree for a device node matching a PCI device
215 */
216struct device_node *
217pci_busdev_to_OF_node(struct pci_bus *bus, int devfn)
218{
219 struct device_node *parent, *np;
220
221 pr_debug("pci_busdev_to_OF_node(%d,0x%x)\n", bus->number, devfn);
222 parent = scan_OF_for_pci_bus(bus);
223 if (parent == NULL)
224 return NULL;
225 pr_debug(" parent is %s\n", parent ? parent->full_name : "<NULL>");
226 np = scan_OF_for_pci_dev(parent, devfn);
227 of_node_put(parent);
228 pr_debug(" result is %s\n", np ? np->full_name : "<NULL>");
229
230 /* XXX most callers don't release the returned node
231 * mostly because ppc64 doesn't increase the refcount,
232 * we need to fix that.
233 */
234 return np;
235}
236EXPORT_SYMBOL(pci_busdev_to_OF_node);
237
238struct device_node*
239pci_device_to_OF_node(struct pci_dev *dev)
240{
241 return pci_busdev_to_OF_node(dev->bus, dev->devfn);
242}
243EXPORT_SYMBOL(pci_device_to_OF_node);
244
245static int
246find_OF_pci_device_filter(struct device_node *node, void *data)
247{
248 return ((void *)node == data);
249}
250
251/*
252 * Returns the PCI device matching a given OF node
253 */
254int
255pci_device_from_OF_node(struct device_node *node, u8 *bus, u8 *devfn)
256{
257 const unsigned int *reg;
258 struct pci_controller *hose;
259 struct pci_dev *dev = NULL;
260
261 /* Make sure it's really a PCI device */
262 hose = pci_find_hose_for_OF_device(node);
263 if (!hose || !hose->dn)
264 return -ENODEV;
265 if (!scan_OF_pci_childs(hose->dn,
266 find_OF_pci_device_filter, (void *)node))
267 return -ENODEV;
268 reg = of_get_property(node, "reg", NULL);
269 if (!reg)
270 return -ENODEV;
271 *bus = (reg[0] >> 16) & 0xff;
272 *devfn = ((reg[0] >> 8) & 0xff);
273
274 /* Ok, here we need some tweak. If we have already renumbered
275 * all busses, we can't rely on the OF bus number any more.
276 * the pci_to_OF_bus_map is not enough as several PCI busses
277 * may match the same OF bus number.
278 */
279 if (!pci_to_OF_bus_map)
280 return 0;
281
282 for_each_pci_dev(dev)
283 if (pci_to_OF_bus_map[dev->bus->number] == *bus &&
284 dev->devfn == *devfn) {
285 *bus = dev->bus->number;
286 pci_dev_put(dev);
287 return 0;
288 }
289
290 return -ENODEV;
291}
292EXPORT_SYMBOL(pci_device_from_OF_node);
293
294/* We create the "pci-OF-bus-map" property now so it appears in the
295 * /proc device tree
296 */
297void __init
298pci_create_OF_bus_map(void)
299{
300 struct property *of_prop;
301 struct device_node *dn;
302
303 of_prop = (struct property *) alloc_bootmem(sizeof(struct property) + \
304 256);
305 if (!of_prop)
306 return;
307 dn = of_find_node_by_path("/");
308 if (dn) {
309 memset(of_prop, -1, sizeof(struct property) + 256);
310 of_prop->name = "pci-OF-bus-map";
311 of_prop->length = 256;
312 of_prop->value = &of_prop[1];
313 prom_add_property(dn, of_prop);
314 of_node_put(dn);
315 }
316}
317
318static void __devinit pcibios_scan_phb(struct pci_controller *hose)
319{
320 struct pci_bus *bus;
321 struct device_node *node = hose->dn;
322 unsigned long io_offset;
323 struct resource *res = &hose->io_resource;
324
325 pr_debug("PCI: Scanning PHB %s\n",
326 node ? node->full_name : "<NO NAME>");
327
328 /* Create an empty bus for the toplevel */
329 bus = pci_create_bus(hose->parent, hose->first_busno, hose->ops, hose);
330 if (bus == NULL) {
331 printk(KERN_ERR "Failed to create bus for PCI domain %04x\n",
332 hose->global_number);
333 return;
334 }
335 bus->secondary = hose->first_busno;
336 hose->bus = bus;
337
338 /* Fixup IO space offset */
339 io_offset = (unsigned long)hose->io_base_virt - isa_io_base;
340 res->start = (res->start + io_offset) & 0xffffffffu;
341 res->end = (res->end + io_offset) & 0xffffffffu;
342
343 /* Wire up PHB bus resources */
344 pcibios_setup_phb_resources(hose);
345
346 /* Scan children */
347 hose->last_busno = bus->subordinate = pci_scan_child_bus(bus);
348}
349
350static int __init pcibios_init(void)
351{
352 struct pci_controller *hose, *tmp;
353 int next_busno = 0;
354
355 printk(KERN_INFO "PCI: Probing PCI hardware\n");
356
357 if (pci_flags & PCI_REASSIGN_ALL_BUS) {
358 printk(KERN_INFO "setting pci_asign_all_busses\n");
359 pci_assign_all_buses = 1;
360 }
361
362 /* Scan all of the recorded PCI controllers. */
363 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
364 if (pci_assign_all_buses)
365 hose->first_busno = next_busno;
366 hose->last_busno = 0xff;
367 pcibios_scan_phb(hose);
368 printk(KERN_INFO "calling pci_bus_add_devices()\n");
369 pci_bus_add_devices(hose->bus);
370 if (pci_assign_all_buses || next_busno <= hose->last_busno)
371 next_busno = hose->last_busno + \
372 pcibios_assign_bus_offset;
373 }
374 pci_bus_count = next_busno;
375
376 /* OpenFirmware based machines need a map of OF bus
377 * numbers vs. kernel bus numbers since we may have to
378 * remap them.
379 */
380 if (pci_assign_all_buses)
381 pcibios_make_OF_bus_map();
382
383 /* Call common code to handle resource allocation */
384 pcibios_resource_survey();
385
386 return 0;
387}
388
389subsys_initcall(pcibios_init);
390
391static struct pci_controller*
392pci_bus_to_hose(int bus)
393{
394 struct pci_controller *hose, *tmp;
395
396 list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
397 if (bus >= hose->first_busno && bus <= hose->last_busno)
398 return hose;
399 return NULL;
400}
401
402/* Provide information on locations of various I/O regions in physical
403 * memory. Do this on a per-card basis so that we choose the right
404 * root bridge.
405 * Note that the returned IO or memory base is a physical address
406 */
407
408long sys_pciconfig_iobase(long which, unsigned long bus, unsigned long devfn)
409{
410 struct pci_controller *hose;
411 long result = -EOPNOTSUPP;
412
413 hose = pci_bus_to_hose(bus);
414 if (!hose)
415 return -ENODEV;
416
417 switch (which) {
418 case IOBASE_BRIDGE_NUMBER:
419 return (long)hose->first_busno;
420 case IOBASE_MEMORY:
421 return (long)hose->pci_mem_offset;
422 case IOBASE_IO:
423 return (long)hose->io_base_phys;
424 case IOBASE_ISA_IO:
425 return (long)isa_io_base;
426 case IOBASE_ISA_MEM:
427 return (long)isa_mem_base;
428 }
429
430 return result;
431}
diff --git a/arch/microblaze/pci/xilinx_pci.c b/arch/microblaze/pci/xilinx_pci.c
new file mode 100644
index 000000000000..7869a41b0f94
--- /dev/null
+++ b/arch/microblaze/pci/xilinx_pci.c
@@ -0,0 +1,168 @@
1/*
2 * PCI support for Xilinx plbv46_pci soft-core which can be used on
3 * Xilinx Virtex ML410 / ML510 boards.
4 *
5 * Copyright 2009 Roderick Colenbrander
6 * Copyright 2009 Secret Lab Technologies Ltd.
7 *
8 * The pci bridge fixup code was copied from ppc4xx_pci.c and was written
9 * by Benjamin Herrenschmidt.
10 * Copyright 2007 Ben. Herrenschmidt <benh@kernel.crashing.org>, IBM Corp.
11 *
12 * This file is licensed under the terms of the GNU General Public License
13 * version 2. This program is licensed "as is" without any warranty of any
14 * kind, whether express or implied.
15 */
16
17#include <linux/ioport.h>
18#include <linux/of.h>
19#include <linux/pci.h>
20#include <asm/io.h>
21
22#define XPLB_PCI_ADDR 0x10c
23#define XPLB_PCI_DATA 0x110
24#define XPLB_PCI_BUS 0x114
25
26#define PCI_HOST_ENABLE_CMD (PCI_COMMAND_SERR | PCI_COMMAND_PARITY | \
27 PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY)
28
29static struct of_device_id xilinx_pci_match[] = {
30 { .compatible = "xlnx,plbv46-pci-1.03.a", },
31 {}
32};
33
34/**
35 * xilinx_pci_fixup_bridge - Block Xilinx PHB configuration.
36 */
37static void xilinx_pci_fixup_bridge(struct pci_dev *dev)
38{
39 struct pci_controller *hose;
40 int i;
41
42 if (dev->devfn || dev->bus->self)
43 return;
44
45 hose = pci_bus_to_host(dev->bus);
46 if (!hose)
47 return;
48
49 if (!of_match_node(xilinx_pci_match, hose->dn))
50 return;
51
52 /* Hide the PCI host BARs from the kernel as their content doesn't
53 * fit well in the resource management
54 */
55 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
56 dev->resource[i].start = 0;
57 dev->resource[i].end = 0;
58 dev->resource[i].flags = 0;
59 }
60
61 dev_info(&dev->dev, "Hiding Xilinx plb-pci host bridge resources %s\n",
62 pci_name(dev));
63}
64DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, xilinx_pci_fixup_bridge);
65
66#ifdef DEBUG
67/**
68 * xilinx_pci_exclude_device - Don't do config access for non-root bus
69 *
70 * This is a hack. Config access to any bus other than bus 0 does not
71 * currently work on the ML510 so we prevent it here.
72 */
73static int
74xilinx_pci_exclude_device(struct pci_controller *hose, u_char bus, u8 devfn)
75{
76 return (bus != 0);
77}
78
79/**
80 * xilinx_early_pci_scan - List pci config space for available devices
81 *
82 * List pci devices in very early phase.
83 */
84void __init xilinx_early_pci_scan(struct pci_controller *hose)
85{
86 u32 bus = 0;
87 u32 val, dev, func, offset;
88
89 /* Currently we have only 2 device connected - up-to 32 devices */
90 for (dev = 0; dev < 2; dev++) {
91 /* List only first function number - up-to 8 functions */
92 for (func = 0; func < 1; func++) {
93 printk(KERN_INFO "%02x:%02x:%02x", bus, dev, func);
94 /* read the first 64 standardized bytes */
95 /* Up-to 192 bytes can be list of capabilities */
96 for (offset = 0; offset < 64; offset += 4) {
97 early_read_config_dword(hose, bus,
98 PCI_DEVFN(dev, func), offset, &val);
99 if (offset == 0 && val == 0xFFFFFFFF) {
100 printk(KERN_CONT "\nABSENT");
101 break;
102 }
103 if (!(offset % 0x10))
104 printk(KERN_CONT "\n%04x: ", offset);
105
106 printk(KERN_CONT "%08x ", val);
107 }
108 printk(KERN_INFO "\n");
109 }
110 }
111}
112#else
113void __init xilinx_early_pci_scan(struct pci_controller *hose)
114{
115}
116#endif
117
118/**
119 * xilinx_pci_init - Find and register a Xilinx PCI host bridge
120 */
121void __init xilinx_pci_init(void)
122{
123 struct pci_controller *hose;
124 struct resource r;
125 void __iomem *pci_reg;
126 struct device_node *pci_node;
127
128 pci_node = of_find_matching_node(NULL, xilinx_pci_match);
129 if (!pci_node)
130 return;
131
132 if (of_address_to_resource(pci_node, 0, &r)) {
133 pr_err("xilinx-pci: cannot resolve base address\n");
134 return;
135 }
136
137 hose = pcibios_alloc_controller(pci_node);
138 if (!hose) {
139 pr_err("xilinx-pci: pcibios_alloc_controller() failed\n");
140 return;
141 }
142
143 /* Setup config space */
144 setup_indirect_pci(hose, r.start + XPLB_PCI_ADDR,
145 r.start + XPLB_PCI_DATA,
146 INDIRECT_TYPE_SET_CFG_TYPE);
147
148 /* According to the xilinx plbv46_pci documentation the soft-core starts
149 * a self-init when the bus master enable bit is set. Without this bit
150 * set the pci bus can't be scanned.
151 */
152 early_write_config_word(hose, 0, 0, PCI_COMMAND, PCI_HOST_ENABLE_CMD);
153
154 /* Set the max latency timer to 255 */
155 early_write_config_byte(hose, 0, 0, PCI_LATENCY_TIMER, 0xff);
156
157 /* Set the max bus number to 255, and bus/subbus no's to 0 */
158 pci_reg = of_iomap(pci_node, 0);
159 out_be32(pci_reg + XPLB_PCI_BUS, 0x000000ff);
160 iounmap(pci_reg);
161
162 /* Register the host bridge with the linux kernel! */
163 pci_process_bridge_OF_ranges(hose, pci_node,
164 INDIRECT_TYPE_SET_CFG_TYPE);
165
166 pr_info("xilinx-pci: Registered PCI host bridge\n");
167 xilinx_early_pci_scan(hose);
168}
diff --git a/arch/mips/alchemy/devboards/db1200/setup.c b/arch/mips/alchemy/devboards/db1200/setup.c
index 379536e3abd1..be7e92ea01f3 100644
--- a/arch/mips/alchemy/devboards/db1200/setup.c
+++ b/arch/mips/alchemy/devboards/db1200/setup.c
@@ -60,43 +60,6 @@ void __init board_setup(void)
60 wmb(); 60 wmb();
61} 61}
62 62
63/* use the hexleds to count the number of times the cpu has entered
64 * wait, the dots to indicate whether the CPU is currently idle or
65 * active (dots off = sleeping, dots on = working) for cases where
66 * the number doesn't change for a long(er) period of time.
67 */
68static void db1200_wait(void)
69{
70 __asm__(" .set push \n"
71 " .set mips3 \n"
72 " .set noreorder \n"
73 " cache 0x14, 0(%0) \n"
74 " cache 0x14, 32(%0) \n"
75 " cache 0x14, 64(%0) \n"
76 /* dots off: we're about to call wait */
77 " lui $26, 0xb980 \n"
78 " ori $27, $0, 3 \n"
79 " sb $27, 0x18($26) \n"
80 " sync \n"
81 " nop \n"
82 " wait \n"
83 " nop \n"
84 " nop \n"
85 " nop \n"
86 " nop \n"
87 " nop \n"
88 /* dots on: there's work to do, increment cntr */
89 " lui $26, 0xb980 \n"
90 " sb $0, 0x18($26) \n"
91 " lui $26, 0xb9c0 \n"
92 " lb $27, 0($26) \n"
93 " addiu $27, $27, 1 \n"
94 " sb $27, 0($26) \n"
95 " sync \n"
96 " .set pop \n"
97 : : "r" (db1200_wait));
98}
99
100static int __init db1200_arch_init(void) 63static int __init db1200_arch_init(void)
101{ 64{
102 /* GPIO7 is low-level triggered CPLD cascade */ 65 /* GPIO7 is low-level triggered CPLD cascade */
@@ -110,9 +73,6 @@ static int __init db1200_arch_init(void)
110 irq_to_desc(DB1200_SD0_INSERT_INT)->status |= IRQ_NOAUTOEN; 73 irq_to_desc(DB1200_SD0_INSERT_INT)->status |= IRQ_NOAUTOEN;
111 irq_to_desc(DB1200_SD0_EJECT_INT)->status |= IRQ_NOAUTOEN; 74 irq_to_desc(DB1200_SD0_EJECT_INT)->status |= IRQ_NOAUTOEN;
112 75
113 if (cpu_wait)
114 cpu_wait = db1200_wait;
115
116 return 0; 76 return 0;
117} 77}
118arch_initcall(db1200_arch_init); 78arch_initcall(db1200_arch_init);
diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
index 246df7aca2e7..2fafc78e5ce1 100644
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -168,7 +168,7 @@ static struct plat_vlynq_data vlynq_high_data = {
168 .on = vlynq_on, 168 .on = vlynq_on,
169 .off = vlynq_off, 169 .off = vlynq_off,
170 }, 170 },
171 .reset_bit = 26, 171 .reset_bit = 16,
172 .gpio_bit = 19, 172 .gpio_bit = 19,
173}; 173};
174 174
@@ -600,6 +600,7 @@ static int __init ar7_register_devices(void)
600 } 600 }
601 601
602 if (ar7_has_high_cpmac()) { 602 if (ar7_has_high_cpmac()) {
603 res = fixed_phy_add(PHY_POLL, cpmac_high.id, &fixed_phy_status);
603 if (!res) { 604 if (!res) {
604 cpmac_get_mac(1, cpmac_high_data.dev_addr); 605 cpmac_get_mac(1, cpmac_high_data.dev_addr);
605 606
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c
index ea17941168ca..8dba8cfb752f 100644
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -18,6 +18,7 @@
18#include <asm/addrspace.h> 18#include <asm/addrspace.h>
19#include <bcm63xx_board.h> 19#include <bcm63xx_board.h>
20#include <bcm63xx_cpu.h> 20#include <bcm63xx_cpu.h>
21#include <bcm63xx_dev_uart.h>
21#include <bcm63xx_regs.h> 22#include <bcm63xx_regs.h>
22#include <bcm63xx_io.h> 23#include <bcm63xx_io.h>
23#include <bcm63xx_dev_pci.h> 24#include <bcm63xx_dev_pci.h>
@@ -40,6 +41,7 @@ static struct board_info __initdata board_96338gw = {
40 .name = "96338GW", 41 .name = "96338GW",
41 .expected_cpu_id = 0x6338, 42 .expected_cpu_id = 0x6338,
42 43
44 .has_uart0 = 1,
43 .has_enet0 = 1, 45 .has_enet0 = 1,
44 .enet0 = { 46 .enet0 = {
45 .force_speed_100 = 1, 47 .force_speed_100 = 1,
@@ -82,6 +84,7 @@ static struct board_info __initdata board_96338w = {
82 .name = "96338W", 84 .name = "96338W",
83 .expected_cpu_id = 0x6338, 85 .expected_cpu_id = 0x6338,
84 86
87 .has_uart0 = 1,
85 .has_enet0 = 1, 88 .has_enet0 = 1,
86 .enet0 = { 89 .enet0 = {
87 .force_speed_100 = 1, 90 .force_speed_100 = 1,
@@ -126,6 +129,8 @@ static struct board_info __initdata board_96338w = {
126static struct board_info __initdata board_96345gw2 = { 129static struct board_info __initdata board_96345gw2 = {
127 .name = "96345GW2", 130 .name = "96345GW2",
128 .expected_cpu_id = 0x6345, 131 .expected_cpu_id = 0x6345,
132
133 .has_uart0 = 1,
129}; 134};
130#endif 135#endif
131 136
@@ -137,6 +142,7 @@ static struct board_info __initdata board_96348r = {
137 .name = "96348R", 142 .name = "96348R",
138 .expected_cpu_id = 0x6348, 143 .expected_cpu_id = 0x6348,
139 144
145 .has_uart0 = 1,
140 .has_enet0 = 1, 146 .has_enet0 = 1,
141 .has_pci = 1, 147 .has_pci = 1,
142 148
@@ -180,6 +186,7 @@ static struct board_info __initdata board_96348gw_10 = {
180 .name = "96348GW-10", 186 .name = "96348GW-10",
181 .expected_cpu_id = 0x6348, 187 .expected_cpu_id = 0x6348,
182 188
189 .has_uart0 = 1,
183 .has_enet0 = 1, 190 .has_enet0 = 1,
184 .has_enet1 = 1, 191 .has_enet1 = 1,
185 .has_pci = 1, 192 .has_pci = 1,
@@ -239,6 +246,7 @@ static struct board_info __initdata board_96348gw_11 = {
239 .name = "96348GW-11", 246 .name = "96348GW-11",
240 .expected_cpu_id = 0x6348, 247 .expected_cpu_id = 0x6348,
241 248
249 .has_uart0 = 1,
242 .has_enet0 = 1, 250 .has_enet0 = 1,
243 .has_enet1 = 1, 251 .has_enet1 = 1,
244 .has_pci = 1, 252 .has_pci = 1,
@@ -292,6 +300,7 @@ static struct board_info __initdata board_96348gw = {
292 .name = "96348GW", 300 .name = "96348GW",
293 .expected_cpu_id = 0x6348, 301 .expected_cpu_id = 0x6348,
294 302
303 .has_uart0 = 1,
295 .has_enet0 = 1, 304 .has_enet0 = 1,
296 .has_enet1 = 1, 305 .has_enet1 = 1,
297 .has_pci = 1, 306 .has_pci = 1,
@@ -349,9 +358,10 @@ static struct board_info __initdata board_FAST2404 = {
349 .name = "F@ST2404", 358 .name = "F@ST2404",
350 .expected_cpu_id = 0x6348, 359 .expected_cpu_id = 0x6348,
351 360
352 .has_enet0 = 1, 361 .has_uart0 = 1,
353 .has_enet1 = 1, 362 .has_enet0 = 1,
354 .has_pci = 1, 363 .has_enet1 = 1,
364 .has_pci = 1,
355 365
356 .enet0 = { 366 .enet0 = {
357 .has_phy = 1, 367 .has_phy = 1,
@@ -368,10 +378,30 @@ static struct board_info __initdata board_FAST2404 = {
368 .has_ehci0 = 1, 378 .has_ehci0 = 1,
369}; 379};
370 380
381static struct board_info __initdata board_rta1025w_16 = {
382 .name = "RTA1025W_16",
383 .expected_cpu_id = 0x6348,
384
385 .has_enet0 = 1,
386 .has_enet1 = 1,
387 .has_pci = 1,
388
389 .enet0 = {
390 .has_phy = 1,
391 .use_internal_phy = 1,
392 },
393 .enet1 = {
394 .force_speed_100 = 1,
395 .force_duplex_full = 1,
396 },
397};
398
399
371static struct board_info __initdata board_DV201AMR = { 400static struct board_info __initdata board_DV201AMR = {
372 .name = "DV201AMR", 401 .name = "DV201AMR",
373 .expected_cpu_id = 0x6348, 402 .expected_cpu_id = 0x6348,
374 403
404 .has_uart0 = 1,
375 .has_pci = 1, 405 .has_pci = 1,
376 .has_ohci0 = 1, 406 .has_ohci0 = 1,
377 407
@@ -391,6 +421,7 @@ static struct board_info __initdata board_96348gw_a = {
391 .name = "96348GW-A", 421 .name = "96348GW-A",
392 .expected_cpu_id = 0x6348, 422 .expected_cpu_id = 0x6348,
393 423
424 .has_uart0 = 1,
394 .has_enet0 = 1, 425 .has_enet0 = 1,
395 .has_enet1 = 1, 426 .has_enet1 = 1,
396 .has_pci = 1, 427 .has_pci = 1,
@@ -416,6 +447,7 @@ static struct board_info __initdata board_96358vw = {
416 .name = "96358VW", 447 .name = "96358VW",
417 .expected_cpu_id = 0x6358, 448 .expected_cpu_id = 0x6358,
418 449
450 .has_uart0 = 1,
419 .has_enet0 = 1, 451 .has_enet0 = 1,
420 .has_enet1 = 1, 452 .has_enet1 = 1,
421 .has_pci = 1, 453 .has_pci = 1,
@@ -467,6 +499,7 @@ static struct board_info __initdata board_96358vw2 = {
467 .name = "96358VW2", 499 .name = "96358VW2",
468 .expected_cpu_id = 0x6358, 500 .expected_cpu_id = 0x6358,
469 501
502 .has_uart0 = 1,
470 .has_enet0 = 1, 503 .has_enet0 = 1,
471 .has_enet1 = 1, 504 .has_enet1 = 1,
472 .has_pci = 1, 505 .has_pci = 1,
@@ -514,6 +547,7 @@ static struct board_info __initdata board_AGPFS0 = {
514 .name = "AGPF-S0", 547 .name = "AGPF-S0",
515 .expected_cpu_id = 0x6358, 548 .expected_cpu_id = 0x6358,
516 549
550 .has_uart0 = 1,
517 .has_enet0 = 1, 551 .has_enet0 = 1,
518 .has_enet1 = 1, 552 .has_enet1 = 1,
519 .has_pci = 1, 553 .has_pci = 1,
@@ -531,6 +565,27 @@ static struct board_info __initdata board_AGPFS0 = {
531 .has_ohci0 = 1, 565 .has_ohci0 = 1,
532 .has_ehci0 = 1, 566 .has_ehci0 = 1,
533}; 567};
568
569static struct board_info __initdata board_DWVS0 = {
570 .name = "DWV-S0",
571 .expected_cpu_id = 0x6358,
572
573 .has_enet0 = 1,
574 .has_enet1 = 1,
575 .has_pci = 1,
576
577 .enet0 = {
578 .has_phy = 1,
579 .use_internal_phy = 1,
580 },
581
582 .enet1 = {
583 .force_speed_100 = 1,
584 .force_duplex_full = 1,
585 },
586
587 .has_ohci0 = 1,
588};
534#endif 589#endif
535 590
536/* 591/*
@@ -552,16 +607,88 @@ static const struct board_info __initdata *bcm963xx_boards[] = {
552 &board_FAST2404, 607 &board_FAST2404,
553 &board_DV201AMR, 608 &board_DV201AMR,
554 &board_96348gw_a, 609 &board_96348gw_a,
610 &board_rta1025w_16,
555#endif 611#endif
556 612
557#ifdef CONFIG_BCM63XX_CPU_6358 613#ifdef CONFIG_BCM63XX_CPU_6358
558 &board_96358vw, 614 &board_96358vw,
559 &board_96358vw2, 615 &board_96358vw2,
560 &board_AGPFS0, 616 &board_AGPFS0,
617 &board_DWVS0,
561#endif 618#endif
562}; 619};
563 620
564/* 621/*
622 * Register a sane SPROMv2 to make the on-board
623 * bcm4318 WLAN work
624 */
625#ifdef CONFIG_SSB_PCIHOST
626static struct ssb_sprom bcm63xx_sprom = {
627 .revision = 0x02,
628 .board_rev = 0x17,
629 .country_code = 0x0,
630 .ant_available_bg = 0x3,
631 .pa0b0 = 0x15ae,
632 .pa0b1 = 0xfa85,
633 .pa0b2 = 0xfe8d,
634 .pa1b0 = 0xffff,
635 .pa1b1 = 0xffff,
636 .pa1b2 = 0xffff,
637 .gpio0 = 0xff,
638 .gpio1 = 0xff,
639 .gpio2 = 0xff,
640 .gpio3 = 0xff,
641 .maxpwr_bg = 0x004c,
642 .itssi_bg = 0x00,
643 .boardflags_lo = 0x2848,
644 .boardflags_hi = 0x0000,
645};
646#endif
647
648/*
649 * return board name for /proc/cpuinfo
650 */
651const char *board_get_name(void)
652{
653 return board.name;
654}
655
656/*
657 * register & return a new board mac address
658 */
659static int board_get_mac_address(u8 *mac)
660{
661 u8 *p;
662 int count;
663
664 if (mac_addr_used >= nvram.mac_addr_count) {
665 printk(KERN_ERR PFX "not enough mac address\n");
666 return -ENODEV;
667 }
668
669 memcpy(mac, nvram.mac_addr_base, ETH_ALEN);
670 p = mac + ETH_ALEN - 1;
671 count = mac_addr_used;
672
673 while (count--) {
674 do {
675 (*p)++;
676 if (*p != 0)
677 break;
678 p--;
679 } while (p != mac);
680 }
681
682 if (p == mac) {
683 printk(KERN_ERR PFX "unable to fetch mac address\n");
684 return -ENODEV;
685 }
686
687 mac_addr_used++;
688 return 0;
689}
690
691/*
565 * early init callback, read nvram data from flash and checksum it 692 * early init callback, read nvram data from flash and checksum it
566 */ 693 */
567void __init board_prom_init(void) 694void __init board_prom_init(void)
@@ -659,6 +786,17 @@ void __init board_prom_init(void)
659 } 786 }
660 787
661 bcm_gpio_writel(val, GPIO_MODE_REG); 788 bcm_gpio_writel(val, GPIO_MODE_REG);
789
790 /* Generate MAC address for WLAN and
791 * register our SPROM */
792#ifdef CONFIG_SSB_PCIHOST
793 if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
794 memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
795 memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
796 if (ssb_arch_set_fallback_sprom(&bcm63xx_sprom) < 0)
797 printk(KERN_ERR "failed to register fallback SPROM\n");
798 }
799#endif
662} 800}
663 801
664/* 802/*
@@ -676,49 +814,6 @@ void __init board_setup(void)
676 panic("unexpected CPU for bcm963xx board"); 814 panic("unexpected CPU for bcm963xx board");
677} 815}
678 816
679/*
680 * return board name for /proc/cpuinfo
681 */
682const char *board_get_name(void)
683{
684 return board.name;
685}
686
687/*
688 * register & return a new board mac address
689 */
690static int board_get_mac_address(u8 *mac)
691{
692 u8 *p;
693 int count;
694
695 if (mac_addr_used >= nvram.mac_addr_count) {
696 printk(KERN_ERR PFX "not enough mac address\n");
697 return -ENODEV;
698 }
699
700 memcpy(mac, nvram.mac_addr_base, ETH_ALEN);
701 p = mac + ETH_ALEN - 1;
702 count = mac_addr_used;
703
704 while (count--) {
705 do {
706 (*p)++;
707 if (*p != 0)
708 break;
709 p--;
710 } while (p != mac);
711 }
712
713 if (p == mac) {
714 printk(KERN_ERR PFX "unable to fetch mac address\n");
715 return -ENODEV;
716 }
717
718 mac_addr_used++;
719 return 0;
720}
721
722static struct mtd_partition mtd_partitions[] = { 817static struct mtd_partition mtd_partitions[] = {
723 { 818 {
724 .name = "cfe", 819 .name = "cfe",
@@ -750,33 +845,6 @@ static struct platform_device mtd_dev = {
750 }, 845 },
751}; 846};
752 847
753/*
754 * Register a sane SPROMv2 to make the on-board
755 * bcm4318 WLAN work
756 */
757#ifdef CONFIG_SSB_PCIHOST
758static struct ssb_sprom bcm63xx_sprom = {
759 .revision = 0x02,
760 .board_rev = 0x17,
761 .country_code = 0x0,
762 .ant_available_bg = 0x3,
763 .pa0b0 = 0x15ae,
764 .pa0b1 = 0xfa85,
765 .pa0b2 = 0xfe8d,
766 .pa1b0 = 0xffff,
767 .pa1b1 = 0xffff,
768 .pa1b2 = 0xffff,
769 .gpio0 = 0xff,
770 .gpio1 = 0xff,
771 .gpio2 = 0xff,
772 .gpio3 = 0xff,
773 .maxpwr_bg = 0x004c,
774 .itssi_bg = 0x00,
775 .boardflags_lo = 0x2848,
776 .boardflags_hi = 0x0000,
777};
778#endif
779
780static struct gpio_led_platform_data bcm63xx_led_data; 848static struct gpio_led_platform_data bcm63xx_led_data;
781 849
782static struct platform_device bcm63xx_gpio_leds = { 850static struct platform_device bcm63xx_gpio_leds = {
@@ -792,6 +860,12 @@ int __init board_register_devices(void)
792{ 860{
793 u32 val; 861 u32 val;
794 862
863 if (board.has_uart0)
864 bcm63xx_uart_register(0);
865
866 if (board.has_uart1)
867 bcm63xx_uart_register(1);
868
795 if (board.has_pccard) 869 if (board.has_pccard)
796 bcm63xx_pcmcia_register(); 870 bcm63xx_pcmcia_register();
797 871
@@ -806,17 +880,6 @@ int __init board_register_devices(void)
806 if (board.has_dsp) 880 if (board.has_dsp)
807 bcm63xx_dsp_register(&board.dsp); 881 bcm63xx_dsp_register(&board.dsp);
808 882
809 /* Generate MAC address for WLAN and
810 * register our SPROM */
811#ifdef CONFIG_SSB_PCIHOST
812 if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
813 memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
814 memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
815 if (ssb_arch_set_fallback_sprom(&bcm63xx_sprom) < 0)
816 printk(KERN_ERR "failed to register fallback SPROM\n");
817 }
818#endif
819
820 /* read base address of boot chip select (0) */ 883 /* read base address of boot chip select (0) */
821 if (BCMCPU_IS_6345()) 884 if (BCMCPU_IS_6345())
822 val = 0x1fc00000; 885 val = 0x1fc00000;
diff --git a/arch/mips/bcm63xx/cpu.c b/arch/mips/bcm63xx/cpu.c
index 70378bb5e3f9..cbb7caf86d77 100644
--- a/arch/mips/bcm63xx/cpu.c
+++ b/arch/mips/bcm63xx/cpu.c
@@ -36,6 +36,7 @@ static const unsigned long bcm96338_regs_base[] = {
36 [RSET_TIMER] = BCM_6338_TIMER_BASE, 36 [RSET_TIMER] = BCM_6338_TIMER_BASE,
37 [RSET_WDT] = BCM_6338_WDT_BASE, 37 [RSET_WDT] = BCM_6338_WDT_BASE,
38 [RSET_UART0] = BCM_6338_UART0_BASE, 38 [RSET_UART0] = BCM_6338_UART0_BASE,
39 [RSET_UART1] = BCM_6338_UART1_BASE,
39 [RSET_GPIO] = BCM_6338_GPIO_BASE, 40 [RSET_GPIO] = BCM_6338_GPIO_BASE,
40 [RSET_SPI] = BCM_6338_SPI_BASE, 41 [RSET_SPI] = BCM_6338_SPI_BASE,
41 [RSET_OHCI0] = BCM_6338_OHCI0_BASE, 42 [RSET_OHCI0] = BCM_6338_OHCI0_BASE,
@@ -72,6 +73,7 @@ static const unsigned long bcm96345_regs_base[] = {
72 [RSET_TIMER] = BCM_6345_TIMER_BASE, 73 [RSET_TIMER] = BCM_6345_TIMER_BASE,
73 [RSET_WDT] = BCM_6345_WDT_BASE, 74 [RSET_WDT] = BCM_6345_WDT_BASE,
74 [RSET_UART0] = BCM_6345_UART0_BASE, 75 [RSET_UART0] = BCM_6345_UART0_BASE,
76 [RSET_UART1] = BCM_6345_UART1_BASE,
75 [RSET_GPIO] = BCM_6345_GPIO_BASE, 77 [RSET_GPIO] = BCM_6345_GPIO_BASE,
76 [RSET_SPI] = BCM_6345_SPI_BASE, 78 [RSET_SPI] = BCM_6345_SPI_BASE,
77 [RSET_UDC0] = BCM_6345_UDC0_BASE, 79 [RSET_UDC0] = BCM_6345_UDC0_BASE,
@@ -109,6 +111,7 @@ static const unsigned long bcm96348_regs_base[] = {
109 [RSET_TIMER] = BCM_6348_TIMER_BASE, 111 [RSET_TIMER] = BCM_6348_TIMER_BASE,
110 [RSET_WDT] = BCM_6348_WDT_BASE, 112 [RSET_WDT] = BCM_6348_WDT_BASE,
111 [RSET_UART0] = BCM_6348_UART0_BASE, 113 [RSET_UART0] = BCM_6348_UART0_BASE,
114 [RSET_UART1] = BCM_6348_UART1_BASE,
112 [RSET_GPIO] = BCM_6348_GPIO_BASE, 115 [RSET_GPIO] = BCM_6348_GPIO_BASE,
113 [RSET_SPI] = BCM_6348_SPI_BASE, 116 [RSET_SPI] = BCM_6348_SPI_BASE,
114 [RSET_OHCI0] = BCM_6348_OHCI0_BASE, 117 [RSET_OHCI0] = BCM_6348_OHCI0_BASE,
@@ -150,6 +153,7 @@ static const unsigned long bcm96358_regs_base[] = {
150 [RSET_TIMER] = BCM_6358_TIMER_BASE, 153 [RSET_TIMER] = BCM_6358_TIMER_BASE,
151 [RSET_WDT] = BCM_6358_WDT_BASE, 154 [RSET_WDT] = BCM_6358_WDT_BASE,
152 [RSET_UART0] = BCM_6358_UART0_BASE, 155 [RSET_UART0] = BCM_6358_UART0_BASE,
156 [RSET_UART1] = BCM_6358_UART1_BASE,
153 [RSET_GPIO] = BCM_6358_GPIO_BASE, 157 [RSET_GPIO] = BCM_6358_GPIO_BASE,
154 [RSET_SPI] = BCM_6358_SPI_BASE, 158 [RSET_SPI] = BCM_6358_SPI_BASE,
155 [RSET_OHCI0] = BCM_6358_OHCI0_BASE, 159 [RSET_OHCI0] = BCM_6358_OHCI0_BASE,
@@ -170,6 +174,7 @@ static const unsigned long bcm96358_regs_base[] = {
170static const int bcm96358_irqs[] = { 174static const int bcm96358_irqs[] = {
171 [IRQ_TIMER] = BCM_6358_TIMER_IRQ, 175 [IRQ_TIMER] = BCM_6358_TIMER_IRQ,
172 [IRQ_UART0] = BCM_6358_UART0_IRQ, 176 [IRQ_UART0] = BCM_6358_UART0_IRQ,
177 [IRQ_UART1] = BCM_6358_UART1_IRQ,
173 [IRQ_DSL] = BCM_6358_DSL_IRQ, 178 [IRQ_DSL] = BCM_6358_DSL_IRQ,
174 [IRQ_ENET0] = BCM_6358_ENET0_IRQ, 179 [IRQ_ENET0] = BCM_6358_ENET0_IRQ,
175 [IRQ_ENET1] = BCM_6358_ENET1_IRQ, 180 [IRQ_ENET1] = BCM_6358_ENET1_IRQ,
diff --git a/arch/mips/bcm63xx/dev-uart.c b/arch/mips/bcm63xx/dev-uart.c
index b0519461ad9b..c2963da0253e 100644
--- a/arch/mips/bcm63xx/dev-uart.c
+++ b/arch/mips/bcm63xx/dev-uart.c
@@ -11,31 +11,65 @@
11#include <linux/platform_device.h> 11#include <linux/platform_device.h>
12#include <bcm63xx_cpu.h> 12#include <bcm63xx_cpu.h>
13 13
14static struct resource uart_resources[] = { 14static struct resource uart0_resources[] = {
15 { 15 {
16 .start = -1, /* filled at runtime */ 16 /* start & end filled at runtime */
17 .end = -1, /* filled at runtime */
18 .flags = IORESOURCE_MEM, 17 .flags = IORESOURCE_MEM,
19 }, 18 },
20 { 19 {
21 .start = -1, /* filled at runtime */ 20 /* start filled at runtime */
22 .flags = IORESOURCE_IRQ, 21 .flags = IORESOURCE_IRQ,
23 }, 22 },
24}; 23};
25 24
26static struct platform_device bcm63xx_uart_device = { 25static struct resource uart1_resources[] = {
27 .name = "bcm63xx_uart", 26 {
28 .id = 0, 27 /* start & end filled at runtime */
29 .num_resources = ARRAY_SIZE(uart_resources), 28 .flags = IORESOURCE_MEM,
30 .resource = uart_resources, 29 },
30 {
31 /* start filled at runtime */
32 .flags = IORESOURCE_IRQ,
33 },
34};
35
36static struct platform_device bcm63xx_uart_devices[] = {
37 {
38 .name = "bcm63xx_uart",
39 .id = 0,
40 .num_resources = ARRAY_SIZE(uart0_resources),
41 .resource = uart0_resources,
42 },
43
44 {
45 .name = "bcm63xx_uart",
46 .id = 1,
47 .num_resources = ARRAY_SIZE(uart1_resources),
48 .resource = uart1_resources,
49 }
31}; 50};
32 51
33int __init bcm63xx_uart_register(void) 52int __init bcm63xx_uart_register(unsigned int id)
34{ 53{
35 uart_resources[0].start = bcm63xx_regset_address(RSET_UART0); 54 if (id >= ARRAY_SIZE(bcm63xx_uart_devices))
36 uart_resources[0].end = uart_resources[0].start; 55 return -ENODEV;
37 uart_resources[0].end += RSET_UART_SIZE - 1; 56
38 uart_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0); 57 if (id == 1 && !BCMCPU_IS_6358())
39 return platform_device_register(&bcm63xx_uart_device); 58 return -ENODEV;
59
60 if (id == 0) {
61 uart0_resources[0].start = bcm63xx_regset_address(RSET_UART0);
62 uart0_resources[0].end = uart0_resources[0].start +
63 RSET_UART_SIZE - 1;
64 uart0_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0);
65 }
66
67 if (id == 1) {
68 uart1_resources[0].start = bcm63xx_regset_address(RSET_UART1);
69 uart1_resources[0].end = uart1_resources[0].start +
70 RSET_UART_SIZE - 1;
71 uart1_resources[1].start = bcm63xx_get_irq_number(IRQ_UART1);
72 }
73
74 return platform_device_register(&bcm63xx_uart_devices[id]);
40} 75}
41arch_initcall(bcm63xx_uart_register);
diff --git a/arch/mips/bcm63xx/gpio.c b/arch/mips/bcm63xx/gpio.c
index 87ca39046334..315bc7f79ce1 100644
--- a/arch/mips/bcm63xx/gpio.c
+++ b/arch/mips/bcm63xx/gpio.c
@@ -125,10 +125,10 @@ static struct gpio_chip bcm63xx_gpio_chip = {
125 125
126int __init bcm63xx_gpio_init(void) 126int __init bcm63xx_gpio_init(void)
127{ 127{
128 gpio_out_low = bcm_gpio_readl(GPIO_DATA_LO_REG);
129 gpio_out_high = bcm_gpio_readl(GPIO_DATA_HI_REG);
128 bcm63xx_gpio_chip.ngpio = bcm63xx_gpio_count(); 130 bcm63xx_gpio_chip.ngpio = bcm63xx_gpio_count();
129 pr_info("registering %d GPIOs\n", bcm63xx_gpio_chip.ngpio); 131 pr_info("registering %d GPIOs\n", bcm63xx_gpio_chip.ngpio);
130 132
131 return gpiochip_add(&bcm63xx_gpio_chip); 133 return gpiochip_add(&bcm63xx_gpio_chip);
132} 134}
133
134arch_initcall(bcm63xx_gpio_init);
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c
index b321d3b16877..9a06fa9f9f0c 100644
--- a/arch/mips/cavium-octeon/setup.c
+++ b/arch/mips/cavium-octeon/setup.c
@@ -45,9 +45,6 @@ extern struct plat_smp_ops octeon_smp_ops;
45extern void pci_console_init(const char *arg); 45extern void pci_console_init(const char *arg);
46#endif 46#endif
47 47
48#ifdef CONFIG_CAVIUM_RESERVE32
49extern uint64_t octeon_reserve32_memory;
50#endif
51static unsigned long long MAX_MEMORY = 512ull << 20; 48static unsigned long long MAX_MEMORY = 512ull << 20;
52 49
53struct octeon_boot_descriptor *octeon_boot_desc_ptr; 50struct octeon_boot_descriptor *octeon_boot_desc_ptr;
@@ -186,54 +183,6 @@ void octeon_check_cpu_bist(void)
186 write_octeon_c0_dcacheerr(0); 183 write_octeon_c0_dcacheerr(0);
187} 184}
188 185
189#ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB
190/**
191 * Called on every core to setup the wired tlb entry needed
192 * if CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB is set.
193 *
194 */
195static void octeon_hal_setup_per_cpu_reserved32(void *unused)
196{
197 /*
198 * The config has selected to wire the reserve32 memory for all
199 * userspace applications. We need to put a wired TLB entry in for each
200 * 512MB of reserve32 memory. We only handle double 256MB pages here,
201 * so reserve32 must be multiple of 512MB.
202 */
203 uint32_t size = CONFIG_CAVIUM_RESERVE32;
204 uint32_t entrylo0 =
205 0x7 | ((octeon_reserve32_memory & ((1ul << 40) - 1)) >> 6);
206 uint32_t entrylo1 = entrylo0 + (256 << 14);
207 uint32_t entryhi = (0x80000000UL - (CONFIG_CAVIUM_RESERVE32 << 20));
208 while (size >= 512) {
209#if 0
210 pr_info("CPU%d: Adding double wired TLB entry for 0x%lx\n",
211 smp_processor_id(), entryhi);
212#endif
213 add_wired_entry(entrylo0, entrylo1, entryhi, PM_256M);
214 entrylo0 += 512 << 14;
215 entrylo1 += 512 << 14;
216 entryhi += 512 << 20;
217 size -= 512;
218 }
219}
220#endif /* CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB */
221
222/**
223 * Called to release the named block which was used to made sure
224 * that nobody used the memory for something else during
225 * init. Now we'll free it so userspace apps can use this
226 * memory region with bootmem_alloc.
227 *
228 * This function is called only once from prom_free_prom_memory().
229 */
230void octeon_hal_setup_reserved32(void)
231{
232#ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB
233 on_each_cpu(octeon_hal_setup_per_cpu_reserved32, NULL, 0, 1);
234#endif
235}
236
237/** 186/**
238 * Reboot Octeon 187 * Reboot Octeon
239 * 188 *
@@ -294,18 +243,6 @@ static void octeon_halt(void)
294 octeon_kill_core(NULL); 243 octeon_kill_core(NULL);
295} 244}
296 245
297#if 0
298/**
299 * Platform time init specifics.
300 * Returns
301 */
302void __init plat_time_init(void)
303{
304 /* Nothing special here, but we are required to have one */
305}
306
307#endif
308
309/** 246/**
310 * Handle all the error condition interrupts that might occur. 247 * Handle all the error condition interrupts that might occur.
311 * 248 *
@@ -502,25 +439,13 @@ void __init prom_init(void)
502 * memory when it is getting memory from the 439 * memory when it is getting memory from the
503 * bootloader. Later, after the memory allocations are 440 * bootloader. Later, after the memory allocations are
504 * complete, the reserve32 will be freed. 441 * complete, the reserve32 will be freed.
505 */ 442 *
506#ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB
507 if (CONFIG_CAVIUM_RESERVE32 & 0x1ff)
508 pr_err("CAVIUM_RESERVE32 isn't a multiple of 512MB. "
509 "This is required if CAVIUM_RESERVE32_USE_WIRED_TLB "
510 "is set\n");
511 else
512 addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20,
513 0, 0, 512 << 20,
514 "CAVIUM_RESERVE32", 0);
515#else
516 /*
517 * Allocate memory for RESERVED32 aligned on 2MB boundary. This 443 * Allocate memory for RESERVED32 aligned on 2MB boundary. This
518 * is in case we later use hugetlb entries with it. 444 * is in case we later use hugetlb entries with it.
519 */ 445 */
520 addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, 446 addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20,
521 0, 0, 2 << 20, 447 0, 0, 2 << 20,
522 "CAVIUM_RESERVE32", 0); 448 "CAVIUM_RESERVE32", 0);
523#endif
524 if (addr < 0) 449 if (addr < 0)
525 pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n"); 450 pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n");
526 else 451 else
@@ -817,9 +742,4 @@ void prom_free_prom_memory(void)
817 panic("Unable to request_irq(OCTEON_IRQ_RML)\n"); 742 panic("Unable to request_irq(OCTEON_IRQ_RML)\n");
818 } 743 }
819#endif 744#endif
820
821 /* This call is here so that it is performed after any TLB
822 initializations. It needs to be after these in case the
823 CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB option is set */
824 octeon_hal_setup_reserved32();
825} 745}
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 51e980290ce1..6d99b9d8887d 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -279,14 +279,6 @@ static void octeon_cpu_die(unsigned int cpu)
279 uint32_t avail_coremask; 279 uint32_t avail_coremask;
280 struct cvmx_bootmem_named_block_desc *block_desc; 280 struct cvmx_bootmem_named_block_desc *block_desc;
281 281
282#ifdef CONFIG_CAVIUM_OCTEON_WATCHDOG
283 /* Disable the watchdog */
284 cvmx_ciu_wdogx_t ciu_wdog;
285 ciu_wdog.u64 = cvmx_read_csr(CVMX_CIU_WDOGX(cpu));
286 ciu_wdog.s.mode = 0;
287 cvmx_write_csr(CVMX_CIU_WDOGX(cpu), ciu_wdog.u64);
288#endif
289
290 while (per_cpu(cpu_state, cpu) != CPU_DEAD) 282 while (per_cpu(cpu_state, cpu) != CPU_DEAD)
291 cpu_relax(); 283 cpu_relax();
292 284
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
index c2f06e38c854..0583bb29150f 100644
--- a/arch/mips/configs/bigsur_defconfig
+++ b/arch/mips/configs/bigsur_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.26-rc8 3# Linux kernel version: 2.6.34-rc3
4# Wed Jul 2 17:02:55 2008 4# Sat Apr 3 16:32:11 2010
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,20 +9,25 @@ CONFIG_MIPS=y
9# Machine selection 9# Machine selection
10# 10#
11# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_AR7 is not set
12# CONFIG_BCM47XX is not set 13# CONFIG_BCM47XX is not set
14# CONFIG_BCM63XX is not set
13# CONFIG_MIPS_COBALT is not set 15# CONFIG_MIPS_COBALT is not set
14# CONFIG_MACH_DECSTATION is not set 16# CONFIG_MACH_DECSTATION is not set
15# CONFIG_MACH_JAZZ is not set 17# CONFIG_MACH_JAZZ is not set
16# CONFIG_LASAT is not set 18# CONFIG_LASAT is not set
17# CONFIG_LEMOTE_FULONG is not set 19# CONFIG_MACH_LOONGSON is not set
18# CONFIG_MIPS_MALTA is not set 20# CONFIG_MIPS_MALTA is not set
19# CONFIG_MIPS_SIM is not set 21# CONFIG_MIPS_SIM is not set
20# CONFIG_MARKEINS is not set 22# CONFIG_NEC_MARKEINS is not set
21# CONFIG_MACH_VR41XX is not set 23# CONFIG_MACH_VR41XX is not set
24# CONFIG_NXP_STB220 is not set
25# CONFIG_NXP_STB225 is not set
22# CONFIG_PNX8550_JBS is not set 26# CONFIG_PNX8550_JBS is not set
23# CONFIG_PNX8550_STB810 is not set 27# CONFIG_PNX8550_STB810 is not set
24# CONFIG_PMC_MSP is not set 28# CONFIG_PMC_MSP is not set
25# CONFIG_PMC_YOSEMITE is not set 29# CONFIG_PMC_YOSEMITE is not set
30# CONFIG_POWERTV is not set
26# CONFIG_SGI_IP22 is not set 31# CONFIG_SGI_IP22 is not set
27# CONFIG_SGI_IP27 is not set 32# CONFIG_SGI_IP27 is not set
28# CONFIG_SGI_IP28 is not set 33# CONFIG_SGI_IP28 is not set
@@ -36,10 +41,13 @@ CONFIG_MIPS=y
36# CONFIG_SIBYTE_SENTOSA is not set 41# CONFIG_SIBYTE_SENTOSA is not set
37CONFIG_SIBYTE_BIGSUR=y 42CONFIG_SIBYTE_BIGSUR=y
38# CONFIG_SNI_RM is not set 43# CONFIG_SNI_RM is not set
39# CONFIG_TOSHIBA_JMR3927 is not set 44# CONFIG_MACH_TX39XX is not set
40# CONFIG_TOSHIBA_RBTX4927 is not set 45# CONFIG_MACH_TX49XX is not set
41# CONFIG_TOSHIBA_RBTX4938 is not set 46# CONFIG_MIKROTIK_RB532 is not set
42# CONFIG_WR_PPMC is not set 47# CONFIG_WR_PPMC is not set
48# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
49# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
50# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
43CONFIG_SIBYTE_BCM1x80=y 51CONFIG_SIBYTE_BCM1x80=y
44CONFIG_SIBYTE_SB1xxx_SOC=y 52CONFIG_SIBYTE_SB1xxx_SOC=y
45# CONFIG_CPU_SB1_PASS_1 is not set 53# CONFIG_CPU_SB1_PASS_1 is not set
@@ -48,14 +56,13 @@ CONFIG_SIBYTE_SB1xxx_SOC=y
48# CONFIG_CPU_SB1_PASS_4 is not set 56# CONFIG_CPU_SB1_PASS_4 is not set
49# CONFIG_CPU_SB1_PASS_2_112x is not set 57# CONFIG_CPU_SB1_PASS_2_112x is not set
50# CONFIG_CPU_SB1_PASS_3 is not set 58# CONFIG_CPU_SB1_PASS_3 is not set
51# CONFIG_SIMULATION is not set
52# CONFIG_SB1_CEX_ALWAYS_FATAL is not set 59# CONFIG_SB1_CEX_ALWAYS_FATAL is not set
53# CONFIG_SB1_CERR_STALL is not set 60# CONFIG_SB1_CERR_STALL is not set
54CONFIG_SIBYTE_CFE=y
55# CONFIG_SIBYTE_CFE_CONSOLE is not set 61# CONFIG_SIBYTE_CFE_CONSOLE is not set
56# CONFIG_SIBYTE_BUS_WATCHER is not set 62# CONFIG_SIBYTE_BUS_WATCHER is not set
57# CONFIG_SIBYTE_TBPROF is not set 63# CONFIG_SIBYTE_TBPROF is not set
58CONFIG_SIBYTE_HAS_ZBUS_PROFILING=y 64CONFIG_SIBYTE_HAS_ZBUS_PROFILING=y
65CONFIG_LOONGSON_UART_BASE=y
59CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
60# CONFIG_ARCH_HAS_ILOG2_U32 is not set 67# CONFIG_ARCH_HAS_ILOG2_U32 is not set
61# CONFIG_ARCH_HAS_ILOG2_U64 is not set 68# CONFIG_ARCH_HAS_ILOG2_U64 is not set
@@ -66,15 +73,13 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
66CONFIG_GENERIC_CLOCKEVENTS=y 73CONFIG_GENERIC_CLOCKEVENTS=y
67CONFIG_GENERIC_TIME=y 74CONFIG_GENERIC_TIME=y
68CONFIG_GENERIC_CMOS_UPDATE=y 75CONFIG_GENERIC_CMOS_UPDATE=y
69CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 76CONFIG_SCHED_OMIT_FRAME_POINTER=y
70# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 77CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
71CONFIG_CEVT_BCM1480=y 78CONFIG_CEVT_BCM1480=y
72CONFIG_CSRC_BCM1480=y 79CONFIG_CSRC_BCM1480=y
73CONFIG_CFE=y 80CONFIG_CFE=y
74CONFIG_DMA_COHERENT=y 81CONFIG_DMA_COHERENT=y
75CONFIG_EARLY_PRINTK=y
76CONFIG_SYS_HAS_EARLY_PRINTK=y 82CONFIG_SYS_HAS_EARLY_PRINTK=y
77# CONFIG_HOTPLUG_CPU is not set
78# CONFIG_NO_IOPORT is not set 83# CONFIG_NO_IOPORT is not set
79CONFIG_CPU_BIG_ENDIAN=y 84CONFIG_CPU_BIG_ENDIAN=y
80# CONFIG_CPU_LITTLE_ENDIAN is not set 85# CONFIG_CPU_LITTLE_ENDIAN is not set
@@ -88,7 +93,8 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
88# 93#
89# CPU selection 94# CPU selection
90# 95#
91# CONFIG_CPU_LOONGSON2 is not set 96# CONFIG_CPU_LOONGSON2E is not set
97# CONFIG_CPU_LOONGSON2F is not set
92# CONFIG_CPU_MIPS32_R1 is not set 98# CONFIG_CPU_MIPS32_R1 is not set
93# CONFIG_CPU_MIPS32_R2 is not set 99# CONFIG_CPU_MIPS32_R2 is not set
94# CONFIG_CPU_MIPS64_R1 is not set 100# CONFIG_CPU_MIPS64_R1 is not set
@@ -101,6 +107,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
101# CONFIG_CPU_TX49XX is not set 107# CONFIG_CPU_TX49XX is not set
102# CONFIG_CPU_R5000 is not set 108# CONFIG_CPU_R5000 is not set
103# CONFIG_CPU_R5432 is not set 109# CONFIG_CPU_R5432 is not set
110# CONFIG_CPU_R5500 is not set
104# CONFIG_CPU_R6000 is not set 111# CONFIG_CPU_R6000 is not set
105# CONFIG_CPU_NEVADA is not set 112# CONFIG_CPU_NEVADA is not set
106# CONFIG_CPU_R8000 is not set 113# CONFIG_CPU_R8000 is not set
@@ -108,6 +115,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
108# CONFIG_CPU_RM7000 is not set 115# CONFIG_CPU_RM7000 is not set
109# CONFIG_CPU_RM9000 is not set 116# CONFIG_CPU_RM9000 is not set
110CONFIG_CPU_SB1=y 117CONFIG_CPU_SB1=y
118# CONFIG_CPU_CAVIUM_OCTEON is not set
111CONFIG_SYS_HAS_CPU_SB1=y 119CONFIG_SYS_HAS_CPU_SB1=y
112CONFIG_WEAK_ORDERING=y 120CONFIG_WEAK_ORDERING=y
113CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 121CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
@@ -123,11 +131,13 @@ CONFIG_64BIT=y
123CONFIG_PAGE_SIZE_4KB=y 131CONFIG_PAGE_SIZE_4KB=y
124# CONFIG_PAGE_SIZE_8KB is not set 132# CONFIG_PAGE_SIZE_8KB is not set
125# CONFIG_PAGE_SIZE_16KB is not set 133# CONFIG_PAGE_SIZE_16KB is not set
134# CONFIG_PAGE_SIZE_32KB is not set
126# CONFIG_PAGE_SIZE_64KB is not set 135# CONFIG_PAGE_SIZE_64KB is not set
127# CONFIG_SIBYTE_DMA_PAGEOPS is not set 136# CONFIG_SIBYTE_DMA_PAGEOPS is not set
128CONFIG_MIPS_MT_DISABLED=y 137CONFIG_MIPS_MT_DISABLED=y
129# CONFIG_MIPS_MT_SMP is not set 138# CONFIG_MIPS_MT_SMP is not set
130# CONFIG_MIPS_MT_SMTC is not set 139# CONFIG_MIPS_MT_SMTC is not set
140# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
131CONFIG_CPU_HAS_SYNC=y 141CONFIG_CPU_HAS_SYNC=y
132CONFIG_GENERIC_HARDIRQS=y 142CONFIG_GENERIC_HARDIRQS=y
133CONFIG_GENERIC_IRQ_PROBE=y 143CONFIG_GENERIC_IRQ_PROBE=y
@@ -142,18 +152,17 @@ CONFIG_FLATMEM_MANUAL=y
142# CONFIG_SPARSEMEM_MANUAL is not set 152# CONFIG_SPARSEMEM_MANUAL is not set
143CONFIG_FLATMEM=y 153CONFIG_FLATMEM=y
144CONFIG_FLAT_NODE_MEM_MAP=y 154CONFIG_FLAT_NODE_MEM_MAP=y
145# CONFIG_SPARSEMEM_STATIC is not set
146# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
147CONFIG_PAGEFLAGS_EXTENDED=y 155CONFIG_PAGEFLAGS_EXTENDED=y
148CONFIG_SPLIT_PTLOCK_CPUS=4 156CONFIG_SPLIT_PTLOCK_CPUS=4
149CONFIG_RESOURCES_64BIT=y 157CONFIG_PHYS_ADDR_T_64BIT=y
150CONFIG_ZONE_DMA_FLAG=0 158CONFIG_ZONE_DMA_FLAG=0
151CONFIG_VIRT_TO_BUS=y 159CONFIG_VIRT_TO_BUS=y
160# CONFIG_KSM is not set
161CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
152CONFIG_SMP=y 162CONFIG_SMP=y
153CONFIG_SYS_SUPPORTS_SMP=y 163CONFIG_SYS_SUPPORTS_SMP=y
154CONFIG_NR_CPUS_DEFAULT_4=y 164CONFIG_NR_CPUS_DEFAULT_4=y
155CONFIG_NR_CPUS=4 165CONFIG_NR_CPUS=4
156# CONFIG_MIPS_CMP is not set
157CONFIG_TICK_ONESHOT=y 166CONFIG_TICK_ONESHOT=y
158CONFIG_NO_HZ=y 167CONFIG_NO_HZ=y
159CONFIG_HIGH_RES_TIMERS=y 168CONFIG_HIGH_RES_TIMERS=y
@@ -175,6 +184,7 @@ CONFIG_SECCOMP=y
175CONFIG_LOCKDEP_SUPPORT=y 184CONFIG_LOCKDEP_SUPPORT=y
176CONFIG_STACKTRACE_SUPPORT=y 185CONFIG_STACKTRACE_SUPPORT=y
177CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 186CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
187CONFIG_CONSTRUCTORS=y
178 188
179# 189#
180# General setup 190# General setup
@@ -188,6 +198,7 @@ CONFIG_SWAP=y
188CONFIG_SYSVIPC=y 198CONFIG_SYSVIPC=y
189CONFIG_SYSVIPC_SYSCTL=y 199CONFIG_SYSVIPC_SYSCTL=y
190CONFIG_POSIX_MQUEUE=y 200CONFIG_POSIX_MQUEUE=y
201CONFIG_POSIX_MQUEUE_SYSCTL=y
191CONFIG_BSD_PROCESS_ACCT=y 202CONFIG_BSD_PROCESS_ACCT=y
192CONFIG_BSD_PROCESS_ACCT_V3=y 203CONFIG_BSD_PROCESS_ACCT_V3=y
193CONFIG_TASKSTATS=y 204CONFIG_TASKSTATS=y
@@ -195,23 +206,39 @@ CONFIG_TASK_DELAY_ACCT=y
195CONFIG_TASK_XACCT=y 206CONFIG_TASK_XACCT=y
196CONFIG_TASK_IO_ACCOUNTING=y 207CONFIG_TASK_IO_ACCOUNTING=y
197CONFIG_AUDIT=y 208CONFIG_AUDIT=y
209
210#
211# RCU Subsystem
212#
213CONFIG_TREE_RCU=y
214# CONFIG_TREE_PREEMPT_RCU is not set
215# CONFIG_TINY_RCU is not set
216# CONFIG_RCU_TRACE is not set
217CONFIG_RCU_FANOUT=64
218# CONFIG_RCU_FANOUT_EXACT is not set
219# CONFIG_RCU_FAST_NO_HZ is not set
220# CONFIG_TREE_RCU_TRACE is not set
198CONFIG_IKCONFIG=y 221CONFIG_IKCONFIG=y
199CONFIG_IKCONFIG_PROC=y 222CONFIG_IKCONFIG_PROC=y
200CONFIG_LOG_BUF_SHIFT=16 223CONFIG_LOG_BUF_SHIFT=16
201# CONFIG_CGROUPS is not set 224# CONFIG_CGROUPS is not set
202CONFIG_GROUP_SCHED=y 225# CONFIG_SYSFS_DEPRECATED_V2 is not set
203CONFIG_FAIR_GROUP_SCHED=y
204# CONFIG_RT_GROUP_SCHED is not set
205CONFIG_USER_SCHED=y
206# CONFIG_CGROUP_SCHED is not set
207CONFIG_SYSFS_DEPRECATED=y
208CONFIG_SYSFS_DEPRECATED_V2=y
209CONFIG_RELAY=y 226CONFIG_RELAY=y
210# CONFIG_NAMESPACES is not set 227CONFIG_NAMESPACES=y
228CONFIG_UTS_NS=y
229CONFIG_IPC_NS=y
230CONFIG_USER_NS=y
231CONFIG_PID_NS=y
232CONFIG_NET_NS=y
211CONFIG_BLK_DEV_INITRD=y 233CONFIG_BLK_DEV_INITRD=y
212CONFIG_INITRAMFS_SOURCE="" 234CONFIG_INITRAMFS_SOURCE=""
235CONFIG_RD_GZIP=y
236# CONFIG_RD_BZIP2 is not set
237# CONFIG_RD_LZMA is not set
238# CONFIG_RD_LZO is not set
213# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 239# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
214CONFIG_SYSCTL=y 240CONFIG_SYSCTL=y
241CONFIG_ANON_INODES=y
215CONFIG_EMBEDDED=y 242CONFIG_EMBEDDED=y
216# CONFIG_SYSCTL_SYSCALL is not set 243# CONFIG_SYSCTL_SYSCALL is not set
217CONFIG_KALLSYMS=y 244CONFIG_KALLSYMS=y
@@ -222,29 +249,36 @@ CONFIG_PRINTK=y
222CONFIG_BUG=y 249CONFIG_BUG=y
223CONFIG_ELF_CORE=y 250CONFIG_ELF_CORE=y
224# CONFIG_PCSPKR_PLATFORM is not set 251# CONFIG_PCSPKR_PLATFORM is not set
225CONFIG_COMPAT_BRK=y
226CONFIG_BASE_FULL=y 252CONFIG_BASE_FULL=y
227CONFIG_FUTEX=y 253CONFIG_FUTEX=y
228CONFIG_ANON_INODES=y
229CONFIG_EPOLL=y 254CONFIG_EPOLL=y
230CONFIG_SIGNALFD=y 255CONFIG_SIGNALFD=y
231CONFIG_TIMERFD=y 256CONFIG_TIMERFD=y
232CONFIG_EVENTFD=y 257CONFIG_EVENTFD=y
233CONFIG_SHMEM=y 258CONFIG_SHMEM=y
259CONFIG_AIO=y
260
261#
262# Kernel Performance Events And Counters
263#
234CONFIG_VM_EVENT_COUNTERS=y 264CONFIG_VM_EVENT_COUNTERS=y
265CONFIG_PCI_QUIRKS=y
266CONFIG_COMPAT_BRK=y
235CONFIG_SLAB=y 267CONFIG_SLAB=y
236# CONFIG_SLUB is not set 268# CONFIG_SLUB is not set
237# CONFIG_SLOB is not set 269# CONFIG_SLOB is not set
238# CONFIG_PROFILING is not set 270# CONFIG_PROFILING is not set
239# CONFIG_MARKERS is not set
240CONFIG_HAVE_OPROFILE=y 271CONFIG_HAVE_OPROFILE=y
241# CONFIG_HAVE_KPROBES is not set 272CONFIG_HAVE_SYSCALL_WRAPPERS=y
242# CONFIG_HAVE_KRETPROBES is not set 273CONFIG_USE_GENERIC_SMP_HELPERS=y
243# CONFIG_HAVE_DMA_ATTRS is not set 274
244CONFIG_PROC_PAGE_MONITOR=y 275#
276# GCOV-based kernel profiling
277#
278# CONFIG_SLOW_WORK is not set
279CONFIG_HAVE_GENERIC_DMA_COHERENT=y
245CONFIG_SLABINFO=y 280CONFIG_SLABINFO=y
246CONFIG_RT_MUTEXES=y 281CONFIG_RT_MUTEXES=y
247# CONFIG_TINY_SHMEM is not set
248CONFIG_BASE_SMALL=0 282CONFIG_BASE_SMALL=0
249CONFIG_MODULES=y 283CONFIG_MODULES=y
250# CONFIG_MODULE_FORCE_LOAD is not set 284# CONFIG_MODULE_FORCE_LOAD is not set
@@ -252,26 +286,52 @@ CONFIG_MODULE_UNLOAD=y
252# CONFIG_MODULE_FORCE_UNLOAD is not set 286# CONFIG_MODULE_FORCE_UNLOAD is not set
253CONFIG_MODVERSIONS=y 287CONFIG_MODVERSIONS=y
254CONFIG_MODULE_SRCVERSION_ALL=y 288CONFIG_MODULE_SRCVERSION_ALL=y
255CONFIG_KMOD=y
256CONFIG_STOP_MACHINE=y 289CONFIG_STOP_MACHINE=y
257CONFIG_BLOCK=y 290CONFIG_BLOCK=y
258# CONFIG_BLK_DEV_IO_TRACE is not set
259# CONFIG_BLK_DEV_BSG is not set 291# CONFIG_BLK_DEV_BSG is not set
292# CONFIG_BLK_DEV_INTEGRITY is not set
260CONFIG_BLOCK_COMPAT=y 293CONFIG_BLOCK_COMPAT=y
261 294
262# 295#
263# IO Schedulers 296# IO Schedulers
264# 297#
265CONFIG_IOSCHED_NOOP=y 298CONFIG_IOSCHED_NOOP=y
266CONFIG_IOSCHED_AS=y
267CONFIG_IOSCHED_DEADLINE=y 299CONFIG_IOSCHED_DEADLINE=y
268CONFIG_IOSCHED_CFQ=y 300CONFIG_IOSCHED_CFQ=y
269CONFIG_DEFAULT_AS=y
270# CONFIG_DEFAULT_DEADLINE is not set 301# CONFIG_DEFAULT_DEADLINE is not set
271# CONFIG_DEFAULT_CFQ is not set 302CONFIG_DEFAULT_CFQ=y
272# CONFIG_DEFAULT_NOOP is not set 303# CONFIG_DEFAULT_NOOP is not set
273CONFIG_DEFAULT_IOSCHED="anticipatory" 304CONFIG_DEFAULT_IOSCHED="cfq"
274CONFIG_CLASSIC_RCU=y 305# CONFIG_INLINE_SPIN_TRYLOCK is not set
306# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
307# CONFIG_INLINE_SPIN_LOCK is not set
308# CONFIG_INLINE_SPIN_LOCK_BH is not set
309# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
310# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
311CONFIG_INLINE_SPIN_UNLOCK=y
312# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
313CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
314# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
315# CONFIG_INLINE_READ_TRYLOCK is not set
316# CONFIG_INLINE_READ_LOCK is not set
317# CONFIG_INLINE_READ_LOCK_BH is not set
318# CONFIG_INLINE_READ_LOCK_IRQ is not set
319# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
320CONFIG_INLINE_READ_UNLOCK=y
321# CONFIG_INLINE_READ_UNLOCK_BH is not set
322CONFIG_INLINE_READ_UNLOCK_IRQ=y
323# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
324# CONFIG_INLINE_WRITE_TRYLOCK is not set
325# CONFIG_INLINE_WRITE_LOCK is not set
326# CONFIG_INLINE_WRITE_LOCK_BH is not set
327# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
328# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
329CONFIG_INLINE_WRITE_UNLOCK=y
330# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
331CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
332# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
333CONFIG_MUTEX_SPIN_ON_OWNER=y
334# CONFIG_FREEZER is not set
275 335
276# 336#
277# Bus options (PCI, PCMCIA, EISA, ISA, TC) 337# Bus options (PCI, PCMCIA, EISA, ISA, TC)
@@ -280,8 +340,9 @@ CONFIG_HW_HAS_PCI=y
280CONFIG_PCI=y 340CONFIG_PCI=y
281CONFIG_PCI_DOMAINS=y 341CONFIG_PCI_DOMAINS=y
282# CONFIG_ARCH_SUPPORTS_MSI is not set 342# CONFIG_ARCH_SUPPORTS_MSI is not set
283CONFIG_PCI_LEGACY=y
284CONFIG_PCI_DEBUG=y 343CONFIG_PCI_DEBUG=y
344# CONFIG_PCI_STUB is not set
345# CONFIG_PCI_IOV is not set
285CONFIG_MMU=y 346CONFIG_MMU=y
286CONFIG_ZONE_DMA32=y 347CONFIG_ZONE_DMA32=y
287# CONFIG_PCCARD is not set 348# CONFIG_PCCARD is not set
@@ -291,6 +352,8 @@ CONFIG_ZONE_DMA32=y
291# Executable file formats 352# Executable file formats
292# 353#
293CONFIG_BINFMT_ELF=y 354CONFIG_BINFMT_ELF=y
355# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
356# CONFIG_HAVE_AOUT is not set
294# CONFIG_BINFMT_MISC is not set 357# CONFIG_BINFMT_MISC is not set
295CONFIG_MIPS32_COMPAT=y 358CONFIG_MIPS32_COMPAT=y
296CONFIG_COMPAT=y 359CONFIG_COMPAT=y
@@ -304,23 +367,20 @@ CONFIG_BINFMT_ELF32=y
304# 367#
305CONFIG_PM=y 368CONFIG_PM=y
306# CONFIG_PM_DEBUG is not set 369# CONFIG_PM_DEBUG is not set
307 370# CONFIG_PM_RUNTIME is not set
308#
309# Networking
310#
311CONFIG_NET=y 371CONFIG_NET=y
312 372
313# 373#
314# Networking options 374# Networking options
315# 375#
316CONFIG_PACKET=y 376CONFIG_PACKET=y
317CONFIG_PACKET_MMAP=y
318CONFIG_UNIX=y 377CONFIG_UNIX=y
319CONFIG_XFRM=y 378CONFIG_XFRM=y
320CONFIG_XFRM_USER=m 379CONFIG_XFRM_USER=m
321# CONFIG_XFRM_SUB_POLICY is not set 380# CONFIG_XFRM_SUB_POLICY is not set
322CONFIG_XFRM_MIGRATE=y 381CONFIG_XFRM_MIGRATE=y
323# CONFIG_XFRM_STATISTICS is not set 382# CONFIG_XFRM_STATISTICS is not set
383CONFIG_XFRM_IPCOMP=m
324CONFIG_NET_KEY=y 384CONFIG_NET_KEY=y
325CONFIG_NET_KEY_MIGRATE=y 385CONFIG_NET_KEY_MIGRATE=y
326CONFIG_INET=y 386CONFIG_INET=y
@@ -353,36 +413,6 @@ CONFIG_INET_TCP_DIAG=y
353CONFIG_TCP_CONG_CUBIC=y 413CONFIG_TCP_CONG_CUBIC=y
354CONFIG_DEFAULT_TCP_CONG="cubic" 414CONFIG_DEFAULT_TCP_CONG="cubic"
355CONFIG_TCP_MD5SIG=y 415CONFIG_TCP_MD5SIG=y
356CONFIG_IP_VS=m
357# CONFIG_IP_VS_DEBUG is not set
358CONFIG_IP_VS_TAB_BITS=12
359
360#
361# IPVS transport protocol load balancing support
362#
363CONFIG_IP_VS_PROTO_TCP=y
364CONFIG_IP_VS_PROTO_UDP=y
365CONFIG_IP_VS_PROTO_ESP=y
366CONFIG_IP_VS_PROTO_AH=y
367
368#
369# IPVS scheduler
370#
371CONFIG_IP_VS_RR=m
372CONFIG_IP_VS_WRR=m
373CONFIG_IP_VS_LC=m
374CONFIG_IP_VS_WLC=m
375CONFIG_IP_VS_LBLC=m
376CONFIG_IP_VS_LBLCR=m
377CONFIG_IP_VS_DH=m
378CONFIG_IP_VS_SH=m
379CONFIG_IP_VS_SED=m
380CONFIG_IP_VS_NQ=m
381
382#
383# IPVS application helper
384#
385CONFIG_IP_VS_FTP=m
386CONFIG_IPV6=m 416CONFIG_IPV6=m
387CONFIG_IPV6_PRIVACY=y 417CONFIG_IPV6_PRIVACY=y
388CONFIG_IPV6_ROUTER_PREF=y 418CONFIG_IPV6_ROUTER_PREF=y
@@ -399,11 +429,13 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m
399CONFIG_INET6_XFRM_MODE_BEET=m 429CONFIG_INET6_XFRM_MODE_BEET=m
400CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m 430CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
401CONFIG_IPV6_SIT=m 431CONFIG_IPV6_SIT=m
432CONFIG_IPV6_SIT_6RD=y
402CONFIG_IPV6_NDISC_NODETYPE=y 433CONFIG_IPV6_NDISC_NODETYPE=y
403CONFIG_IPV6_TUNNEL=m 434CONFIG_IPV6_TUNNEL=m
404CONFIG_IPV6_MULTIPLE_TABLES=y 435CONFIG_IPV6_MULTIPLE_TABLES=y
405CONFIG_IPV6_SUBTREES=y 436CONFIG_IPV6_SUBTREES=y
406# CONFIG_IPV6_MROUTE is not set 437# CONFIG_IPV6_MROUTE is not set
438CONFIG_NETLABEL=y
407CONFIG_NETWORK_SECMARK=y 439CONFIG_NETWORK_SECMARK=y
408CONFIG_NETFILTER=y 440CONFIG_NETFILTER=y
409# CONFIG_NETFILTER_DEBUG is not set 441# CONFIG_NETFILTER_DEBUG is not set
@@ -421,19 +453,53 @@ CONFIG_NF_CONNTRACK_IRC=m
421CONFIG_NF_CONNTRACK_SIP=m 453CONFIG_NF_CONNTRACK_SIP=m
422CONFIG_NF_CT_NETLINK=m 454CONFIG_NF_CT_NETLINK=m
423CONFIG_NETFILTER_XTABLES=m 455CONFIG_NETFILTER_XTABLES=m
456CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
424CONFIG_NETFILTER_XT_TARGET_MARK=m 457CONFIG_NETFILTER_XT_TARGET_MARK=m
425CONFIG_NETFILTER_XT_TARGET_NFLOG=m 458CONFIG_NETFILTER_XT_TARGET_NFLOG=m
426CONFIG_NETFILTER_XT_TARGET_SECMARK=m 459CONFIG_NETFILTER_XT_TARGET_SECMARK=m
427CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
428CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 460CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
429CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 461CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
430CONFIG_NETFILTER_XT_MATCH_MARK=m 462CONFIG_NETFILTER_XT_MATCH_MARK=m
431CONFIG_NETFILTER_XT_MATCH_POLICY=m 463CONFIG_NETFILTER_XT_MATCH_POLICY=m
432CONFIG_NETFILTER_XT_MATCH_STATE=m 464CONFIG_NETFILTER_XT_MATCH_STATE=m
465CONFIG_IP_VS=m
466CONFIG_IP_VS_IPV6=y
467# CONFIG_IP_VS_DEBUG is not set
468CONFIG_IP_VS_TAB_BITS=12
469
470#
471# IPVS transport protocol load balancing support
472#
473CONFIG_IP_VS_PROTO_TCP=y
474CONFIG_IP_VS_PROTO_UDP=y
475CONFIG_IP_VS_PROTO_AH_ESP=y
476CONFIG_IP_VS_PROTO_ESP=y
477CONFIG_IP_VS_PROTO_AH=y
478CONFIG_IP_VS_PROTO_SCTP=y
479
480#
481# IPVS scheduler
482#
483CONFIG_IP_VS_RR=m
484CONFIG_IP_VS_WRR=m
485CONFIG_IP_VS_LC=m
486CONFIG_IP_VS_WLC=m
487CONFIG_IP_VS_LBLC=m
488CONFIG_IP_VS_LBLCR=m
489CONFIG_IP_VS_DH=m
490CONFIG_IP_VS_SH=m
491CONFIG_IP_VS_SED=m
492CONFIG_IP_VS_NQ=m
493
494#
495# IPVS application helper
496#
497CONFIG_IP_VS_FTP=m
433 498
434# 499#
435# IP: Netfilter Configuration 500# IP: Netfilter Configuration
436# 501#
502CONFIG_NF_DEFRAG_IPV4=m
437CONFIG_NF_CONNTRACK_IPV4=m 503CONFIG_NF_CONNTRACK_IPV4=m
438CONFIG_NF_CONNTRACK_PROC_COMPAT=y 504CONFIG_NF_CONNTRACK_PROC_COMPAT=y
439CONFIG_IP_NF_IPTABLES=m 505CONFIG_IP_NF_IPTABLES=m
@@ -459,22 +525,44 @@ CONFIG_IP_NF_MANGLE=m
459CONFIG_NF_CONNTRACK_IPV6=m 525CONFIG_NF_CONNTRACK_IPV6=m
460CONFIG_IP6_NF_IPTABLES=m 526CONFIG_IP6_NF_IPTABLES=m
461CONFIG_IP6_NF_MATCH_IPV6HEADER=m 527CONFIG_IP6_NF_MATCH_IPV6HEADER=m
462CONFIG_IP6_NF_FILTER=m
463CONFIG_IP6_NF_TARGET_LOG=m 528CONFIG_IP6_NF_TARGET_LOG=m
529CONFIG_IP6_NF_FILTER=m
464CONFIG_IP6_NF_TARGET_REJECT=m 530CONFIG_IP6_NF_TARGET_REJECT=m
465CONFIG_IP6_NF_MANGLE=m 531CONFIG_IP6_NF_MANGLE=m
466# CONFIG_IP_DCCP is not set 532CONFIG_IP_DCCP=m
533CONFIG_INET_DCCP_DIAG=m
534
535#
536# DCCP CCIDs Configuration (EXPERIMENTAL)
537#
538# CONFIG_IP_DCCP_CCID2_DEBUG is not set
539CONFIG_IP_DCCP_CCID3=y
540# CONFIG_IP_DCCP_CCID3_DEBUG is not set
541CONFIG_IP_DCCP_CCID3_RTO=100
542CONFIG_IP_DCCP_TFRC_LIB=y
543
544#
545# DCCP Kernel Hacking
546#
547# CONFIG_IP_DCCP_DEBUG is not set
467CONFIG_IP_SCTP=m 548CONFIG_IP_SCTP=m
468# CONFIG_SCTP_DBG_MSG is not set 549# CONFIG_SCTP_DBG_MSG is not set
469# CONFIG_SCTP_DBG_OBJCNT is not set 550# CONFIG_SCTP_DBG_OBJCNT is not set
470# CONFIG_SCTP_HMAC_NONE is not set 551# CONFIG_SCTP_HMAC_NONE is not set
471# CONFIG_SCTP_HMAC_SHA1 is not set 552CONFIG_SCTP_HMAC_SHA1=y
472CONFIG_SCTP_HMAC_MD5=y 553# CONFIG_SCTP_HMAC_MD5 is not set
554# CONFIG_RDS is not set
473# CONFIG_TIPC is not set 555# CONFIG_TIPC is not set
474# CONFIG_ATM is not set 556# CONFIG_ATM is not set
475# CONFIG_BRIDGE is not set 557CONFIG_STP=m
476# CONFIG_VLAN_8021Q is not set 558CONFIG_GARP=m
559CONFIG_BRIDGE=m
560CONFIG_BRIDGE_IGMP_SNOOPING=y
561# CONFIG_NET_DSA is not set
562CONFIG_VLAN_8021Q=m
563CONFIG_VLAN_8021Q_GVRP=y
477# CONFIG_DECNET is not set 564# CONFIG_DECNET is not set
565CONFIG_LLC=m
478# CONFIG_LLC2 is not set 566# CONFIG_LLC2 is not set
479# CONFIG_IPX is not set 567# CONFIG_IPX is not set
480# CONFIG_ATALK is not set 568# CONFIG_ATALK is not set
@@ -482,26 +570,47 @@ CONFIG_SCTP_HMAC_MD5=y
482# CONFIG_LAPB is not set 570# CONFIG_LAPB is not set
483# CONFIG_ECONET is not set 571# CONFIG_ECONET is not set
484# CONFIG_WAN_ROUTER is not set 572# CONFIG_WAN_ROUTER is not set
573# CONFIG_PHONET is not set
574# CONFIG_IEEE802154 is not set
485# CONFIG_NET_SCHED is not set 575# CONFIG_NET_SCHED is not set
576# CONFIG_DCB is not set
486 577
487# 578#
488# Network testing 579# Network testing
489# 580#
490# CONFIG_NET_PKTGEN is not set 581# CONFIG_NET_PKTGEN is not set
491# CONFIG_HAMRADIO is not set 582CONFIG_HAMRADIO=y
583
584#
585# Packet Radio protocols
586#
587CONFIG_AX25=m
588CONFIG_AX25_DAMA_SLAVE=y
589CONFIG_NETROM=m
590CONFIG_ROSE=m
591
592#
593# AX.25 network device drivers
594#
595CONFIG_MKISS=m
596CONFIG_6PACK=m
597CONFIG_BPQETHER=m
598CONFIG_BAYCOM_SER_FDX=m
599CONFIG_BAYCOM_SER_HDX=m
600CONFIG_YAM=m
492# CONFIG_CAN is not set 601# CONFIG_CAN is not set
493# CONFIG_IRDA is not set 602# CONFIG_IRDA is not set
494# CONFIG_BT is not set 603# CONFIG_BT is not set
495# CONFIG_AF_RXRPC is not set 604# CONFIG_AF_RXRPC is not set
496CONFIG_FIB_RULES=y 605CONFIG_FIB_RULES=y
606CONFIG_WIRELESS=y
607# CONFIG_CFG80211 is not set
608# CONFIG_LIB80211 is not set
497 609
498# 610#
499# Wireless 611# CFG80211 needs to be enabled for MAC80211
500# 612#
501# CONFIG_CFG80211 is not set 613# CONFIG_WIMAX is not set
502# CONFIG_WIRELESS_EXT is not set
503# CONFIG_MAC80211 is not set
504# CONFIG_IEEE80211 is not set
505# CONFIG_RFKILL is not set 614# CONFIG_RFKILL is not set
506# CONFIG_NET_9P is not set 615# CONFIG_NET_9P is not set
507 616
@@ -513,9 +622,12 @@ CONFIG_FIB_RULES=y
513# Generic Driver Options 622# Generic Driver Options
514# 623#
515CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 624CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
625# CONFIG_DEVTMPFS is not set
516CONFIG_STANDALONE=y 626CONFIG_STANDALONE=y
517CONFIG_PREVENT_FIRMWARE_BUILD=y 627CONFIG_PREVENT_FIRMWARE_BUILD=y
518CONFIG_FW_LOADER=m 628CONFIG_FW_LOADER=m
629CONFIG_FIRMWARE_IN_KERNEL=y
630CONFIG_EXTRA_FIRMWARE=""
519# CONFIG_DEBUG_DRIVER is not set 631# CONFIG_DEBUG_DRIVER is not set
520# CONFIG_DEBUG_DEVRES is not set 632# CONFIG_DEBUG_DEVRES is not set
521# CONFIG_SYS_HYPERVISOR is not set 633# CONFIG_SYS_HYPERVISOR is not set
@@ -530,33 +642,53 @@ CONFIG_BLK_DEV=y
530# CONFIG_BLK_DEV_COW_COMMON is not set 642# CONFIG_BLK_DEV_COW_COMMON is not set
531CONFIG_BLK_DEV_LOOP=m 643CONFIG_BLK_DEV_LOOP=m
532CONFIG_BLK_DEV_CRYPTOLOOP=m 644CONFIG_BLK_DEV_CRYPTOLOOP=m
645
646#
647# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
648#
533CONFIG_BLK_DEV_NBD=m 649CONFIG_BLK_DEV_NBD=m
534# CONFIG_BLK_DEV_SX8 is not set 650# CONFIG_BLK_DEV_SX8 is not set
535# CONFIG_BLK_DEV_RAM is not set 651# CONFIG_BLK_DEV_RAM is not set
536# CONFIG_CDROM_PKTCDVD is not set 652# CONFIG_CDROM_PKTCDVD is not set
537# CONFIG_ATA_OVER_ETH is not set 653# CONFIG_ATA_OVER_ETH is not set
654# CONFIG_BLK_DEV_HD is not set
538CONFIG_MISC_DEVICES=y 655CONFIG_MISC_DEVICES=y
656# CONFIG_AD525X_DPOT is not set
539# CONFIG_PHANTOM is not set 657# CONFIG_PHANTOM is not set
540# CONFIG_EEPROM_93CX6 is not set
541CONFIG_SGI_IOC4=m 658CONFIG_SGI_IOC4=m
542# CONFIG_TIFM_CORE is not set 659# CONFIG_TIFM_CORE is not set
660# CONFIG_ICS932S401 is not set
543# CONFIG_ENCLOSURE_SERVICES is not set 661# CONFIG_ENCLOSURE_SERVICES is not set
662# CONFIG_HP_ILO is not set
663# CONFIG_ISL29003 is not set
664# CONFIG_SENSORS_TSL2550 is not set
665# CONFIG_DS1682 is not set
666# CONFIG_C2PORT is not set
667
668#
669# EEPROM support
670#
671# CONFIG_EEPROM_AT24 is not set
672CONFIG_EEPROM_LEGACY=y
673CONFIG_EEPROM_MAX6875=y
674# CONFIG_EEPROM_93CX6 is not set
675# CONFIG_CB710_CORE is not set
544CONFIG_HAVE_IDE=y 676CONFIG_HAVE_IDE=y
545CONFIG_IDE=y 677CONFIG_IDE=y
546CONFIG_IDE_MAX_HWIFS=4
547CONFIG_BLK_DEV_IDE=y
548 678
549# 679#
550# Please see Documentation/ide/ide.txt for help/info on IDE drives 680# Please see Documentation/ide/ide.txt for help/info on IDE drives
551# 681#
682CONFIG_IDE_XFER_MODE=y
683CONFIG_IDE_TIMINGS=y
684CONFIG_IDE_ATAPI=y
552# CONFIG_BLK_DEV_IDE_SATA is not set 685# CONFIG_BLK_DEV_IDE_SATA is not set
553CONFIG_BLK_DEV_IDEDISK=y 686CONFIG_IDE_GD=y
554# CONFIG_IDEDISK_MULTI_MODE is not set 687CONFIG_IDE_GD_ATA=y
688# CONFIG_IDE_GD_ATAPI is not set
555CONFIG_BLK_DEV_IDECD=y 689CONFIG_BLK_DEV_IDECD=y
556CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 690CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
557CONFIG_BLK_DEV_IDETAPE=y 691CONFIG_BLK_DEV_IDETAPE=y
558CONFIG_BLK_DEV_IDEFLOPPY=y
559# CONFIG_BLK_DEV_IDESCSI is not set
560# CONFIG_IDE_TASK_IOCTL is not set 692# CONFIG_IDE_TASK_IOCTL is not set
561CONFIG_IDE_PROC_FS=y 693CONFIG_IDE_PROC_FS=y
562 694
@@ -581,14 +713,13 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
581# CONFIG_BLK_DEV_AMD74XX is not set 713# CONFIG_BLK_DEV_AMD74XX is not set
582CONFIG_BLK_DEV_CMD64X=y 714CONFIG_BLK_DEV_CMD64X=y
583# CONFIG_BLK_DEV_TRIFLEX is not set 715# CONFIG_BLK_DEV_TRIFLEX is not set
584# CONFIG_BLK_DEV_CY82C693 is not set
585# CONFIG_BLK_DEV_CS5520 is not set 716# CONFIG_BLK_DEV_CS5520 is not set
586# CONFIG_BLK_DEV_CS5530 is not set 717# CONFIG_BLK_DEV_CS5530 is not set
587# CONFIG_BLK_DEV_HPT34X is not set
588# CONFIG_BLK_DEV_HPT366 is not set 718# CONFIG_BLK_DEV_HPT366 is not set
589# CONFIG_BLK_DEV_JMICRON is not set 719# CONFIG_BLK_DEV_JMICRON is not set
590# CONFIG_BLK_DEV_SC1200 is not set 720# CONFIG_BLK_DEV_SC1200 is not set
591# CONFIG_BLK_DEV_PIIX is not set 721# CONFIG_BLK_DEV_PIIX is not set
722# CONFIG_BLK_DEV_IT8172 is not set
592CONFIG_BLK_DEV_IT8213=m 723CONFIG_BLK_DEV_IT8213=m
593# CONFIG_BLK_DEV_IT821X is not set 724# CONFIG_BLK_DEV_IT821X is not set
594# CONFIG_BLK_DEV_NS87415 is not set 725# CONFIG_BLK_DEV_NS87415 is not set
@@ -600,14 +731,12 @@ CONFIG_BLK_DEV_IT8213=m
600# CONFIG_BLK_DEV_TRM290 is not set 731# CONFIG_BLK_DEV_TRM290 is not set
601# CONFIG_BLK_DEV_VIA82CXXX is not set 732# CONFIG_BLK_DEV_VIA82CXXX is not set
602CONFIG_BLK_DEV_TC86C001=m 733CONFIG_BLK_DEV_TC86C001=m
603# CONFIG_BLK_DEV_IDE_SWARM is not set
604CONFIG_BLK_DEV_IDEDMA=y 734CONFIG_BLK_DEV_IDEDMA=y
605# CONFIG_BLK_DEV_HD_ONLY is not set
606# CONFIG_BLK_DEV_HD is not set
607 735
608# 736#
609# SCSI device support 737# SCSI device support
610# 738#
739CONFIG_SCSI_MOD=y
611# CONFIG_RAID_ATTRS is not set 740# CONFIG_RAID_ATTRS is not set
612CONFIG_SCSI=y 741CONFIG_SCSI=y
613CONFIG_SCSI_DMA=y 742CONFIG_SCSI_DMA=y
@@ -625,10 +754,6 @@ CONFIG_BLK_DEV_SR=m
625CONFIG_BLK_DEV_SR_VENDOR=y 754CONFIG_BLK_DEV_SR_VENDOR=y
626CONFIG_CHR_DEV_SG=m 755CONFIG_CHR_DEV_SG=m
627CONFIG_CHR_DEV_SCH=m 756CONFIG_CHR_DEV_SCH=m
628
629#
630# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
631#
632# CONFIG_SCSI_MULTI_LUN is not set 757# CONFIG_SCSI_MULTI_LUN is not set
633# CONFIG_SCSI_CONSTANTS is not set 758# CONFIG_SCSI_CONSTANTS is not set
634# CONFIG_SCSI_LOGGING is not set 759# CONFIG_SCSI_LOGGING is not set
@@ -645,27 +770,36 @@ CONFIG_SCSI_WAIT_SCAN=m
645# CONFIG_SCSI_SRP_ATTRS is not set 770# CONFIG_SCSI_SRP_ATTRS is not set
646CONFIG_SCSI_LOWLEVEL=y 771CONFIG_SCSI_LOWLEVEL=y
647# CONFIG_ISCSI_TCP is not set 772# CONFIG_ISCSI_TCP is not set
773# CONFIG_SCSI_CXGB3_ISCSI is not set
774# CONFIG_SCSI_BNX2_ISCSI is not set
775# CONFIG_BE2ISCSI is not set
648# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 776# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
777# CONFIG_SCSI_HPSA is not set
649# CONFIG_SCSI_3W_9XXX is not set 778# CONFIG_SCSI_3W_9XXX is not set
779# CONFIG_SCSI_3W_SAS is not set
650# CONFIG_SCSI_ACARD is not set 780# CONFIG_SCSI_ACARD is not set
651# CONFIG_SCSI_AACRAID is not set 781# CONFIG_SCSI_AACRAID is not set
652# CONFIG_SCSI_AIC7XXX is not set 782# CONFIG_SCSI_AIC7XXX is not set
653# CONFIG_SCSI_AIC7XXX_OLD is not set 783# CONFIG_SCSI_AIC7XXX_OLD is not set
654# CONFIG_SCSI_AIC79XX is not set 784# CONFIG_SCSI_AIC79XX is not set
655# CONFIG_SCSI_AIC94XX is not set 785# CONFIG_SCSI_AIC94XX is not set
786# CONFIG_SCSI_MVSAS is not set
656# CONFIG_SCSI_DPT_I2O is not set 787# CONFIG_SCSI_DPT_I2O is not set
657# CONFIG_SCSI_ADVANSYS is not set 788# CONFIG_SCSI_ADVANSYS is not set
658# CONFIG_SCSI_ARCMSR is not set 789# CONFIG_SCSI_ARCMSR is not set
659# CONFIG_MEGARAID_NEWGEN is not set 790# CONFIG_MEGARAID_NEWGEN is not set
660# CONFIG_MEGARAID_LEGACY is not set 791# CONFIG_MEGARAID_LEGACY is not set
661# CONFIG_MEGARAID_SAS is not set 792# CONFIG_MEGARAID_SAS is not set
793# CONFIG_SCSI_MPT2SAS is not set
662# CONFIG_SCSI_HPTIOP is not set 794# CONFIG_SCSI_HPTIOP is not set
795# CONFIG_LIBFC is not set
796# CONFIG_LIBFCOE is not set
797# CONFIG_FCOE is not set
663# CONFIG_SCSI_DMX3191D is not set 798# CONFIG_SCSI_DMX3191D is not set
664# CONFIG_SCSI_FUTURE_DOMAIN is not set 799# CONFIG_SCSI_FUTURE_DOMAIN is not set
665# CONFIG_SCSI_IPS is not set 800# CONFIG_SCSI_IPS is not set
666# CONFIG_SCSI_INITIO is not set 801# CONFIG_SCSI_INITIO is not set
667# CONFIG_SCSI_INIA100 is not set 802# CONFIG_SCSI_INIA100 is not set
668# CONFIG_SCSI_MVSAS is not set
669# CONFIG_SCSI_STEX is not set 803# CONFIG_SCSI_STEX is not set
670# CONFIG_SCSI_SYM53C8XX_2 is not set 804# CONFIG_SCSI_SYM53C8XX_2 is not set
671# CONFIG_SCSI_IPR is not set 805# CONFIG_SCSI_IPR is not set
@@ -676,9 +810,15 @@ CONFIG_SCSI_LOWLEVEL=y
676# CONFIG_SCSI_DC395x is not set 810# CONFIG_SCSI_DC395x is not set
677# CONFIG_SCSI_DC390T is not set 811# CONFIG_SCSI_DC390T is not set
678# CONFIG_SCSI_DEBUG is not set 812# CONFIG_SCSI_DEBUG is not set
813# CONFIG_SCSI_PMCRAID is not set
814# CONFIG_SCSI_PM8001 is not set
679# CONFIG_SCSI_SRP is not set 815# CONFIG_SCSI_SRP is not set
816# CONFIG_SCSI_BFA_FC is not set
817# CONFIG_SCSI_DH is not set
818# CONFIG_SCSI_OSD_INITIATOR is not set
680CONFIG_ATA=y 819CONFIG_ATA=y
681# CONFIG_ATA_NONSTANDARD is not set 820# CONFIG_ATA_NONSTANDARD is not set
821CONFIG_ATA_VERBOSE_ERROR=y
682CONFIG_SATA_PMP=y 822CONFIG_SATA_PMP=y
683# CONFIG_SATA_AHCI is not set 823# CONFIG_SATA_AHCI is not set
684CONFIG_SATA_SIL24=y 824CONFIG_SATA_SIL24=y
@@ -700,6 +840,7 @@ CONFIG_ATA_SFF=y
700# CONFIG_PATA_ALI is not set 840# CONFIG_PATA_ALI is not set
701# CONFIG_PATA_AMD is not set 841# CONFIG_PATA_AMD is not set
702# CONFIG_PATA_ARTOP is not set 842# CONFIG_PATA_ARTOP is not set
843# CONFIG_PATA_ATP867X is not set
703# CONFIG_PATA_ATIIXP is not set 844# CONFIG_PATA_ATIIXP is not set
704# CONFIG_PATA_CMD640_PCI is not set 845# CONFIG_PATA_CMD640_PCI is not set
705# CONFIG_PATA_CMD64X is not set 846# CONFIG_PATA_CMD64X is not set
@@ -715,6 +856,7 @@ CONFIG_ATA_SFF=y
715# CONFIG_PATA_IT821X is not set 856# CONFIG_PATA_IT821X is not set
716# CONFIG_PATA_IT8213 is not set 857# CONFIG_PATA_IT8213 is not set
717# CONFIG_PATA_JMICRON is not set 858# CONFIG_PATA_JMICRON is not set
859# CONFIG_PATA_LEGACY is not set
718# CONFIG_PATA_TRIFLEX is not set 860# CONFIG_PATA_TRIFLEX is not set
719# CONFIG_PATA_MARVELL is not set 861# CONFIG_PATA_MARVELL is not set
720# CONFIG_PATA_MPIIX is not set 862# CONFIG_PATA_MPIIX is not set
@@ -725,14 +867,16 @@ CONFIG_ATA_SFF=y
725# CONFIG_PATA_NS87415 is not set 867# CONFIG_PATA_NS87415 is not set
726# CONFIG_PATA_OPTI is not set 868# CONFIG_PATA_OPTI is not set
727# CONFIG_PATA_OPTIDMA is not set 869# CONFIG_PATA_OPTIDMA is not set
870# CONFIG_PATA_PDC2027X is not set
728# CONFIG_PATA_PDC_OLD is not set 871# CONFIG_PATA_PDC_OLD is not set
729# CONFIG_PATA_RADISYS is not set 872# CONFIG_PATA_RADISYS is not set
873# CONFIG_PATA_RDC is not set
730# CONFIG_PATA_RZ1000 is not set 874# CONFIG_PATA_RZ1000 is not set
731# CONFIG_PATA_SC1200 is not set 875# CONFIG_PATA_SC1200 is not set
732# CONFIG_PATA_SERVERWORKS is not set 876# CONFIG_PATA_SERVERWORKS is not set
733# CONFIG_PATA_PDC2027X is not set
734CONFIG_PATA_SIL680=y 877CONFIG_PATA_SIL680=y
735# CONFIG_PATA_SIS is not set 878# CONFIG_PATA_SIS is not set
879# CONFIG_PATA_TOSHIBA is not set
736# CONFIG_PATA_VIA is not set 880# CONFIG_PATA_VIA is not set
737# CONFIG_PATA_WINBOND is not set 881# CONFIG_PATA_WINBOND is not set
738# CONFIG_PATA_PLATFORM is not set 882# CONFIG_PATA_PLATFORM is not set
@@ -745,13 +889,16 @@ CONFIG_PATA_SIL680=y
745# 889#
746 890
747# 891#
748# Enable only one of the two stacks, unless you know what you are doing 892# You can enable one or both FireWire driver stacks.
893#
894
895#
896# The newer stack is recommended.
749# 897#
750# CONFIG_FIREWIRE is not set 898# CONFIG_FIREWIRE is not set
751# CONFIG_IEEE1394 is not set 899# CONFIG_IEEE1394 is not set
752# CONFIG_I2O is not set 900# CONFIG_I2O is not set
753CONFIG_NETDEVICES=y 901CONFIG_NETDEVICES=y
754# CONFIG_NETDEVICES_MULTIQUEUE is not set
755# CONFIG_DUMMY is not set 902# CONFIG_DUMMY is not set
756# CONFIG_BONDING is not set 903# CONFIG_BONDING is not set
757# CONFIG_MACVLAN is not set 904# CONFIG_MACVLAN is not set
@@ -774,6 +921,9 @@ CONFIG_PHYLIB=y
774# CONFIG_BROADCOM_PHY is not set 921# CONFIG_BROADCOM_PHY is not set
775# CONFIG_ICPLUS_PHY is not set 922# CONFIG_ICPLUS_PHY is not set
776# CONFIG_REALTEK_PHY is not set 923# CONFIG_REALTEK_PHY is not set
924# CONFIG_NATIONAL_PHY is not set
925# CONFIG_STE10XP is not set
926# CONFIG_LSI_ET1011C_PHY is not set
777# CONFIG_FIXED_PHY is not set 927# CONFIG_FIXED_PHY is not set
778# CONFIG_MDIO_BITBANG is not set 928# CONFIG_MDIO_BITBANG is not set
779CONFIG_NET_ETHERNET=y 929CONFIG_NET_ETHERNET=y
@@ -783,23 +933,33 @@ CONFIG_MII=y
783# CONFIG_SUNGEM is not set 933# CONFIG_SUNGEM is not set
784# CONFIG_CASSINI is not set 934# CONFIG_CASSINI is not set
785# CONFIG_NET_VENDOR_3COM is not set 935# CONFIG_NET_VENDOR_3COM is not set
936# CONFIG_SMC91X is not set
786# CONFIG_DM9000 is not set 937# CONFIG_DM9000 is not set
938# CONFIG_ETHOC is not set
939# CONFIG_SMSC911X is not set
940# CONFIG_DNET is not set
787# CONFIG_NET_TULIP is not set 941# CONFIG_NET_TULIP is not set
788# CONFIG_HP100 is not set 942# CONFIG_HP100 is not set
789# CONFIG_IBM_NEW_EMAC_ZMII is not set 943# CONFIG_IBM_NEW_EMAC_ZMII is not set
790# CONFIG_IBM_NEW_EMAC_RGMII is not set 944# CONFIG_IBM_NEW_EMAC_RGMII is not set
791# CONFIG_IBM_NEW_EMAC_TAH is not set 945# CONFIG_IBM_NEW_EMAC_TAH is not set
792# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 946# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
947# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
948# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
949# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
793# CONFIG_NET_PCI is not set 950# CONFIG_NET_PCI is not set
794# CONFIG_B44 is not set 951# CONFIG_B44 is not set
952# CONFIG_KS8842 is not set
953# CONFIG_KS8851_MLL is not set
954# CONFIG_ATL2 is not set
795CONFIG_NETDEV_1000=y 955CONFIG_NETDEV_1000=y
796# CONFIG_ACENIC is not set 956# CONFIG_ACENIC is not set
797# CONFIG_DL2K is not set 957# CONFIG_DL2K is not set
798# CONFIG_E1000 is not set 958# CONFIG_E1000 is not set
799# CONFIG_E1000E is not set 959# CONFIG_E1000E is not set
800# CONFIG_E1000E_ENABLED is not set
801# CONFIG_IP1000 is not set 960# CONFIG_IP1000 is not set
802# CONFIG_IGB is not set 961# CONFIG_IGB is not set
962# CONFIG_IGBVF is not set
803# CONFIG_NS83820 is not set 963# CONFIG_NS83820 is not set
804# CONFIG_HAMACHI is not set 964# CONFIG_HAMACHI is not set
805# CONFIG_YELLOWFIN is not set 965# CONFIG_YELLOWFIN is not set
@@ -811,29 +971,42 @@ CONFIG_SB1250_MAC=y
811# CONFIG_VIA_VELOCITY is not set 971# CONFIG_VIA_VELOCITY is not set
812# CONFIG_TIGON3 is not set 972# CONFIG_TIGON3 is not set
813# CONFIG_BNX2 is not set 973# CONFIG_BNX2 is not set
974# CONFIG_CNIC is not set
814# CONFIG_QLA3XXX is not set 975# CONFIG_QLA3XXX is not set
815# CONFIG_ATL1 is not set 976# CONFIG_ATL1 is not set
977# CONFIG_ATL1E is not set
978# CONFIG_ATL1C is not set
979# CONFIG_JME is not set
816CONFIG_NETDEV_10000=y 980CONFIG_NETDEV_10000=y
981CONFIG_MDIO=m
817# CONFIG_CHELSIO_T1 is not set 982# CONFIG_CHELSIO_T1 is not set
983CONFIG_CHELSIO_T3_DEPENDS=y
818CONFIG_CHELSIO_T3=m 984CONFIG_CHELSIO_T3=m
985# CONFIG_ENIC is not set
819# CONFIG_IXGBE is not set 986# CONFIG_IXGBE is not set
820# CONFIG_IXGB is not set 987# CONFIG_IXGB is not set
821# CONFIG_S2IO is not set 988# CONFIG_S2IO is not set
989# CONFIG_VXGE is not set
822# CONFIG_MYRI10GE is not set 990# CONFIG_MYRI10GE is not set
823CONFIG_NETXEN_NIC=m 991CONFIG_NETXEN_NIC=m
824# CONFIG_NIU is not set 992# CONFIG_NIU is not set
993# CONFIG_MLX4_EN is not set
825# CONFIG_MLX4_CORE is not set 994# CONFIG_MLX4_CORE is not set
826# CONFIG_TEHUTI is not set 995# CONFIG_TEHUTI is not set
827# CONFIG_BNX2X is not set 996# CONFIG_BNX2X is not set
997# CONFIG_QLCNIC is not set
998# CONFIG_QLGE is not set
828# CONFIG_SFC is not set 999# CONFIG_SFC is not set
1000# CONFIG_BE2NET is not set
829# CONFIG_TR is not set 1001# CONFIG_TR is not set
1002CONFIG_WLAN=y
1003# CONFIG_ATMEL is not set
1004# CONFIG_PRISM54 is not set
1005# CONFIG_HOSTAP is not set
830 1006
831# 1007#
832# Wireless LAN 1008# Enable WiMAX (Networking options) to see the WiMAX drivers
833# 1009#
834# CONFIG_WLAN_PRE80211 is not set
835# CONFIG_WLAN_80211 is not set
836# CONFIG_IWLWIFI_LEDS is not set
837# CONFIG_WAN is not set 1010# CONFIG_WAN is not set
838# CONFIG_FDDI is not set 1011# CONFIG_FDDI is not set
839# CONFIG_HIPPI is not set 1012# CONFIG_HIPPI is not set
@@ -856,6 +1029,7 @@ CONFIG_SLIP_MODE_SLIP6=y
856# CONFIG_NETCONSOLE is not set 1029# CONFIG_NETCONSOLE is not set
857# CONFIG_NETPOLL is not set 1030# CONFIG_NETPOLL is not set
858# CONFIG_NET_POLL_CONTROLLER is not set 1031# CONFIG_NET_POLL_CONTROLLER is not set
1032# CONFIG_VMXNET3 is not set
859# CONFIG_ISDN is not set 1033# CONFIG_ISDN is not set
860# CONFIG_PHONE is not set 1034# CONFIG_PHONE is not set
861 1035
@@ -873,6 +1047,7 @@ CONFIG_SERIO_SERPORT=y
873# CONFIG_SERIO_PCIPS2 is not set 1047# CONFIG_SERIO_PCIPS2 is not set
874# CONFIG_SERIO_LIBPS2 is not set 1048# CONFIG_SERIO_LIBPS2 is not set
875CONFIG_SERIO_RAW=m 1049CONFIG_SERIO_RAW=m
1050# CONFIG_SERIO_ALTERA_PS2 is not set
876# CONFIG_GAMEPORT is not set 1051# CONFIG_GAMEPORT is not set
877 1052
878# 1053#
@@ -893,8 +1068,6 @@ CONFIG_SERIAL_NONSTANDARD=y
893# CONFIG_N_HDLC is not set 1068# CONFIG_N_HDLC is not set
894# CONFIG_RISCOM8 is not set 1069# CONFIG_RISCOM8 is not set
895# CONFIG_SPECIALIX is not set 1070# CONFIG_SPECIALIX is not set
896# CONFIG_SX is not set
897# CONFIG_RIO is not set
898# CONFIG_STALDRV is not set 1071# CONFIG_STALDRV is not set
899# CONFIG_NOZOMI is not set 1072# CONFIG_NOZOMI is not set
900 1073
@@ -911,7 +1084,9 @@ CONFIG_SERIAL_SB1250_DUART_CONSOLE=y
911CONFIG_SERIAL_CORE=y 1084CONFIG_SERIAL_CORE=y
912CONFIG_SERIAL_CORE_CONSOLE=y 1085CONFIG_SERIAL_CORE_CONSOLE=y
913# CONFIG_SERIAL_JSM is not set 1086# CONFIG_SERIAL_JSM is not set
1087# CONFIG_SERIAL_TIMBERDALE is not set
914CONFIG_UNIX98_PTYS=y 1088CONFIG_UNIX98_PTYS=y
1089# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
915CONFIG_LEGACY_PTYS=y 1090CONFIG_LEGACY_PTYS=y
916CONFIG_LEGACY_PTY_COUNT=256 1091CONFIG_LEGACY_PTY_COUNT=256
917# CONFIG_IPMI_HANDLER is not set 1092# CONFIG_IPMI_HANDLER is not set
@@ -923,89 +1098,99 @@ CONFIG_LEGACY_PTY_COUNT=256
923CONFIG_DEVPORT=y 1098CONFIG_DEVPORT=y
924CONFIG_I2C=y 1099CONFIG_I2C=y
925CONFIG_I2C_BOARDINFO=y 1100CONFIG_I2C_BOARDINFO=y
1101CONFIG_I2C_COMPAT=y
926CONFIG_I2C_CHARDEV=y 1102CONFIG_I2C_CHARDEV=y
1103CONFIG_I2C_HELPER_AUTO=y
927 1104
928# 1105#
929# I2C Hardware Bus support 1106# I2C Hardware Bus support
930# 1107#
1108
1109#
1110# PC SMBus host controller drivers
1111#
931# CONFIG_I2C_ALI1535 is not set 1112# CONFIG_I2C_ALI1535 is not set
932# CONFIG_I2C_ALI1563 is not set 1113# CONFIG_I2C_ALI1563 is not set
933# CONFIG_I2C_ALI15X3 is not set 1114# CONFIG_I2C_ALI15X3 is not set
934# CONFIG_I2C_AMD756 is not set 1115# CONFIG_I2C_AMD756 is not set
935# CONFIG_I2C_AMD8111 is not set 1116# CONFIG_I2C_AMD8111 is not set
936# CONFIG_I2C_I801 is not set 1117# CONFIG_I2C_I801 is not set
937# CONFIG_I2C_I810 is not set 1118# CONFIG_I2C_ISCH is not set
938# CONFIG_I2C_PIIX4 is not set 1119# CONFIG_I2C_PIIX4 is not set
939# CONFIG_I2C_NFORCE2 is not set 1120# CONFIG_I2C_NFORCE2 is not set
940# CONFIG_I2C_OCORES is not set
941# CONFIG_I2C_PARPORT_LIGHT is not set
942# CONFIG_I2C_PROSAVAGE is not set
943# CONFIG_I2C_SAVAGE4 is not set
944CONFIG_I2C_SIBYTE=y
945# CONFIG_I2C_SIMTEC is not set
946# CONFIG_I2C_SIS5595 is not set 1121# CONFIG_I2C_SIS5595 is not set
947# CONFIG_I2C_SIS630 is not set 1122# CONFIG_I2C_SIS630 is not set
948# CONFIG_I2C_SIS96X is not set 1123# CONFIG_I2C_SIS96X is not set
949# CONFIG_I2C_TAOS_EVM is not set
950# CONFIG_I2C_STUB is not set
951# CONFIG_I2C_VIA is not set 1124# CONFIG_I2C_VIA is not set
952# CONFIG_I2C_VIAPRO is not set 1125# CONFIG_I2C_VIAPRO is not set
953# CONFIG_I2C_VOODOO3 is not set
954# CONFIG_I2C_PCA_PLATFORM is not set
955 1126
956# 1127#
957# Miscellaneous I2C Chip support 1128# I2C system bus drivers (mostly embedded / system-on-chip)
958# 1129#
959# CONFIG_DS1682 is not set 1130# CONFIG_I2C_OCORES is not set
960CONFIG_EEPROM_LEGACY=y 1131# CONFIG_I2C_SIMTEC is not set
961CONFIG_SENSORS_PCF8574=y 1132# CONFIG_I2C_XILINX is not set
962# CONFIG_PCF8575 is not set 1133
963CONFIG_SENSORS_PCF8591=y 1134#
964CONFIG_EEPROM_MAX6875=y 1135# External I2C/SMBus adapter drivers
965# CONFIG_SENSORS_TSL2550 is not set 1136#
1137# CONFIG_I2C_PARPORT_LIGHT is not set
1138# CONFIG_I2C_TAOS_EVM is not set
1139
1140#
1141# Other I2C/SMBus bus drivers
1142#
1143# CONFIG_I2C_PCA_PLATFORM is not set
1144CONFIG_I2C_SIBYTE=y
1145# CONFIG_I2C_STUB is not set
966CONFIG_I2C_DEBUG_CORE=y 1146CONFIG_I2C_DEBUG_CORE=y
967CONFIG_I2C_DEBUG_ALGO=y 1147CONFIG_I2C_DEBUG_ALGO=y
968CONFIG_I2C_DEBUG_BUS=y 1148CONFIG_I2C_DEBUG_BUS=y
969CONFIG_I2C_DEBUG_CHIP=y
970# CONFIG_SPI is not set 1149# CONFIG_SPI is not set
1150
1151#
1152# PPS support
1153#
1154# CONFIG_PPS is not set
971# CONFIG_W1 is not set 1155# CONFIG_W1 is not set
972# CONFIG_POWER_SUPPLY is not set 1156# CONFIG_POWER_SUPPLY is not set
973# CONFIG_HWMON is not set 1157# CONFIG_HWMON is not set
974# CONFIG_THERMAL is not set 1158# CONFIG_THERMAL is not set
975# CONFIG_THERMAL_HWMON is not set
976# CONFIG_WATCHDOG is not set 1159# CONFIG_WATCHDOG is not set
1160CONFIG_SSB_POSSIBLE=y
977 1161
978# 1162#
979# Sonics Silicon Backplane 1163# Sonics Silicon Backplane
980# 1164#
981CONFIG_SSB_POSSIBLE=y
982# CONFIG_SSB is not set 1165# CONFIG_SSB is not set
983 1166
984# 1167#
985# Multifunction device drivers 1168# Multifunction device drivers
986# 1169#
1170# CONFIG_MFD_CORE is not set
1171# CONFIG_MFD_88PM860X is not set
987# CONFIG_MFD_SM501 is not set 1172# CONFIG_MFD_SM501 is not set
988# CONFIG_HTC_PASIC3 is not set 1173# CONFIG_HTC_PASIC3 is not set
989 1174# CONFIG_TWL4030_CORE is not set
990# 1175# CONFIG_MFD_TMIO is not set
991# Multimedia devices 1176# CONFIG_PMIC_DA903X is not set
992# 1177# CONFIG_PMIC_ADP5520 is not set
993 1178# CONFIG_MFD_MAX8925 is not set
994# 1179# CONFIG_MFD_WM8400 is not set
995# Multimedia core support 1180# CONFIG_MFD_WM831X is not set
996# 1181# CONFIG_MFD_WM8350_I2C is not set
997# CONFIG_VIDEO_DEV is not set 1182# CONFIG_MFD_WM8994 is not set
998# CONFIG_DVB_CORE is not set 1183# CONFIG_MFD_PCF50633 is not set
999# CONFIG_VIDEO_MEDIA is not set 1184# CONFIG_AB3100_CORE is not set
1000 1185# CONFIG_LPC_SCH is not set
1001# 1186# CONFIG_REGULATOR is not set
1002# Multimedia drivers 1187# CONFIG_MEDIA_SUPPORT is not set
1003#
1004# CONFIG_DAB is not set
1005 1188
1006# 1189#
1007# Graphics support 1190# Graphics support
1008# 1191#
1192CONFIG_VGA_ARB=y
1193CONFIG_VGA_ARB_MAX_GPUS=16
1009# CONFIG_DRM is not set 1194# CONFIG_DRM is not set
1010# CONFIG_VGASTATE is not set 1195# CONFIG_VGASTATE is not set
1011# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1196# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1016,10 +1201,6 @@ CONFIG_SSB_POSSIBLE=y
1016# Display device support 1201# Display device support
1017# 1202#
1018# CONFIG_DISPLAY_SUPPORT is not set 1203# CONFIG_DISPLAY_SUPPORT is not set
1019
1020#
1021# Sound
1022#
1023# CONFIG_SOUND is not set 1204# CONFIG_SOUND is not set
1024CONFIG_USB_SUPPORT=y 1205CONFIG_USB_SUPPORT=y
1025CONFIG_USB_ARCH_HAS_HCD=y 1206CONFIG_USB_ARCH_HAS_HCD=y
@@ -1030,9 +1211,18 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1030# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1211# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1031 1212
1032# 1213#
1033# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1214# Enable Host or Gadget support to see Inventra options
1215#
1216
1217#
1218# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1034# 1219#
1035# CONFIG_USB_GADGET is not set 1220# CONFIG_USB_GADGET is not set
1221
1222#
1223# OTG and related infrastructure
1224#
1225# CONFIG_UWB is not set
1036# CONFIG_MMC is not set 1226# CONFIG_MMC is not set
1037# CONFIG_MEMSTICK is not set 1227# CONFIG_MEMSTICK is not set
1038# CONFIG_NEW_LEDS is not set 1228# CONFIG_NEW_LEDS is not set
@@ -1040,41 +1230,66 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1040# CONFIG_INFINIBAND is not set 1230# CONFIG_INFINIBAND is not set
1041CONFIG_RTC_LIB=y 1231CONFIG_RTC_LIB=y
1042# CONFIG_RTC_CLASS is not set 1232# CONFIG_RTC_CLASS is not set
1233# CONFIG_DMADEVICES is not set
1234# CONFIG_AUXDISPLAY is not set
1043# CONFIG_UIO is not set 1235# CONFIG_UIO is not set
1044 1236
1045# 1237#
1238# TI VLYNQ
1239#
1240# CONFIG_STAGING is not set
1241
1242#
1046# File systems 1243# File systems
1047# 1244#
1048CONFIG_EXT2_FS=m 1245CONFIG_EXT2_FS=m
1049CONFIG_EXT2_FS_XATTR=y 1246CONFIG_EXT2_FS_XATTR=y
1050# CONFIG_EXT2_FS_POSIX_ACL is not set 1247CONFIG_EXT2_FS_POSIX_ACL=y
1051# CONFIG_EXT2_FS_SECURITY is not set 1248CONFIG_EXT2_FS_SECURITY=y
1052# CONFIG_EXT2_FS_XIP is not set 1249CONFIG_EXT2_FS_XIP=y
1053CONFIG_EXT3_FS=y 1250CONFIG_EXT3_FS=m
1251CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
1054CONFIG_EXT3_FS_XATTR=y 1252CONFIG_EXT3_FS_XATTR=y
1055# CONFIG_EXT3_FS_POSIX_ACL is not set 1253CONFIG_EXT3_FS_POSIX_ACL=y
1056# CONFIG_EXT3_FS_SECURITY is not set 1254CONFIG_EXT3_FS_SECURITY=y
1057# CONFIG_EXT4DEV_FS is not set 1255CONFIG_EXT4_FS=y
1058CONFIG_JBD=y 1256CONFIG_EXT4_FS_XATTR=y
1257CONFIG_EXT4_FS_POSIX_ACL=y
1258CONFIG_EXT4_FS_SECURITY=y
1259# CONFIG_EXT4_DEBUG is not set
1260CONFIG_FS_XIP=y
1261CONFIG_JBD=m
1262CONFIG_JBD2=y
1059CONFIG_FS_MBCACHE=y 1263CONFIG_FS_MBCACHE=y
1060# CONFIG_REISERFS_FS is not set 1264# CONFIG_REISERFS_FS is not set
1061# CONFIG_JFS_FS is not set 1265# CONFIG_JFS_FS is not set
1062# CONFIG_FS_POSIX_ACL is not set 1266CONFIG_FS_POSIX_ACL=y
1063# CONFIG_XFS_FS is not set 1267# CONFIG_XFS_FS is not set
1064# CONFIG_GFS2_FS is not set 1268# CONFIG_GFS2_FS is not set
1065# CONFIG_OCFS2_FS is not set 1269# CONFIG_OCFS2_FS is not set
1270# CONFIG_BTRFS_FS is not set
1271# CONFIG_NILFS2_FS is not set
1272CONFIG_FILE_LOCKING=y
1273CONFIG_FSNOTIFY=y
1066CONFIG_DNOTIFY=y 1274CONFIG_DNOTIFY=y
1067CONFIG_INOTIFY=y 1275CONFIG_INOTIFY=y
1068CONFIG_INOTIFY_USER=y 1276CONFIG_INOTIFY_USER=y
1069CONFIG_QUOTA=y 1277CONFIG_QUOTA=y
1070CONFIG_QUOTA_NETLINK_INTERFACE=y 1278CONFIG_QUOTA_NETLINK_INTERFACE=y
1071# CONFIG_PRINT_QUOTA_WARNING is not set 1279# CONFIG_PRINT_QUOTA_WARNING is not set
1280CONFIG_QUOTA_TREE=m
1072# CONFIG_QFMT_V1 is not set 1281# CONFIG_QFMT_V1 is not set
1073CONFIG_QFMT_V2=m 1282CONFIG_QFMT_V2=m
1074CONFIG_QUOTACTL=y 1283CONFIG_QUOTACTL=y
1075CONFIG_AUTOFS_FS=m 1284CONFIG_AUTOFS_FS=m
1076CONFIG_AUTOFS4_FS=m 1285CONFIG_AUTOFS4_FS=m
1077CONFIG_FUSE_FS=m 1286CONFIG_FUSE_FS=m
1287# CONFIG_CUSE is not set
1288
1289#
1290# Caches
1291#
1292# CONFIG_FSCACHE is not set
1078 1293
1079# 1294#
1080# CD-ROM/DVD Filesystems 1295# CD-ROM/DVD Filesystems
@@ -1103,15 +1318,13 @@ CONFIG_NTFS_RW=y
1103CONFIG_PROC_FS=y 1318CONFIG_PROC_FS=y
1104CONFIG_PROC_KCORE=y 1319CONFIG_PROC_KCORE=y
1105CONFIG_PROC_SYSCTL=y 1320CONFIG_PROC_SYSCTL=y
1321CONFIG_PROC_PAGE_MONITOR=y
1106CONFIG_SYSFS=y 1322CONFIG_SYSFS=y
1107CONFIG_TMPFS=y 1323CONFIG_TMPFS=y
1108# CONFIG_TMPFS_POSIX_ACL is not set 1324# CONFIG_TMPFS_POSIX_ACL is not set
1109# CONFIG_HUGETLB_PAGE is not set 1325# CONFIG_HUGETLB_PAGE is not set
1110CONFIG_CONFIGFS_FS=m 1326CONFIG_CONFIGFS_FS=m
1111 1327CONFIG_MISC_FILESYSTEMS=y
1112#
1113# Miscellaneous filesystems
1114#
1115# CONFIG_ADFS_FS is not set 1328# CONFIG_ADFS_FS is not set
1116# CONFIG_AFFS_FS is not set 1329# CONFIG_AFFS_FS is not set
1117# CONFIG_ECRYPT_FS is not set 1330# CONFIG_ECRYPT_FS is not set
@@ -1120,9 +1333,12 @@ CONFIG_CONFIGFS_FS=m
1120# CONFIG_BEFS_FS is not set 1333# CONFIG_BEFS_FS is not set
1121# CONFIG_BFS_FS is not set 1334# CONFIG_BFS_FS is not set
1122# CONFIG_EFS_FS is not set 1335# CONFIG_EFS_FS is not set
1336# CONFIG_LOGFS is not set
1123# CONFIG_CRAMFS is not set 1337# CONFIG_CRAMFS is not set
1338# CONFIG_SQUASHFS is not set
1124# CONFIG_VXFS_FS is not set 1339# CONFIG_VXFS_FS is not set
1125# CONFIG_MINIX_FS is not set 1340# CONFIG_MINIX_FS is not set
1341# CONFIG_OMFS_FS is not set
1126# CONFIG_HPFS_FS is not set 1342# CONFIG_HPFS_FS is not set
1127# CONFIG_QNX4FS_FS is not set 1343# CONFIG_QNX4FS_FS is not set
1128# CONFIG_ROMFS_FS is not set 1344# CONFIG_ROMFS_FS is not set
@@ -1133,16 +1349,17 @@ CONFIG_NFS_FS=y
1133CONFIG_NFS_V3=y 1349CONFIG_NFS_V3=y
1134# CONFIG_NFS_V3_ACL is not set 1350# CONFIG_NFS_V3_ACL is not set
1135# CONFIG_NFS_V4 is not set 1351# CONFIG_NFS_V4 is not set
1136# CONFIG_NFSD is not set
1137CONFIG_ROOT_NFS=y 1352CONFIG_ROOT_NFS=y
1353# CONFIG_NFSD is not set
1138CONFIG_LOCKD=y 1354CONFIG_LOCKD=y
1139CONFIG_LOCKD_V4=y 1355CONFIG_LOCKD_V4=y
1140CONFIG_NFS_COMMON=y 1356CONFIG_NFS_COMMON=y
1141CONFIG_SUNRPC=y 1357CONFIG_SUNRPC=y
1142# CONFIG_SUNRPC_BIND34 is not set 1358CONFIG_SUNRPC_GSS=m
1143# CONFIG_RPCSEC_GSS_KRB5 is not set 1359CONFIG_RPCSEC_GSS_KRB5=m
1144# CONFIG_RPCSEC_GSS_SPKM3 is not set 1360CONFIG_RPCSEC_GSS_SPKM3=m
1145# CONFIG_SMB_FS is not set 1361# CONFIG_SMB_FS is not set
1362# CONFIG_CEPH_FS is not set
1146# CONFIG_CIFS is not set 1363# CONFIG_CIFS is not set
1147# CONFIG_NCP_FS is not set 1364# CONFIG_NCP_FS is not set
1148# CONFIG_CODA_FS is not set 1365# CONFIG_CODA_FS is not set
@@ -1205,12 +1422,18 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1205CONFIG_ENABLE_MUST_CHECK=y 1422CONFIG_ENABLE_MUST_CHECK=y
1206CONFIG_FRAME_WARN=2048 1423CONFIG_FRAME_WARN=2048
1207CONFIG_MAGIC_SYSRQ=y 1424CONFIG_MAGIC_SYSRQ=y
1425# CONFIG_STRIP_ASM_SYMS is not set
1208# CONFIG_UNUSED_SYMBOLS is not set 1426# CONFIG_UNUSED_SYMBOLS is not set
1209# CONFIG_DEBUG_FS is not set 1427# CONFIG_DEBUG_FS is not set
1210# CONFIG_HEADERS_CHECK is not set 1428# CONFIG_HEADERS_CHECK is not set
1211CONFIG_DEBUG_KERNEL=y 1429CONFIG_DEBUG_KERNEL=y
1212# CONFIG_DEBUG_SHIRQ is not set 1430# CONFIG_DEBUG_SHIRQ is not set
1213CONFIG_DETECT_SOFTLOCKUP=y 1431CONFIG_DETECT_SOFTLOCKUP=y
1432# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1433CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1434CONFIG_DETECT_HUNG_TASK=y
1435# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1436CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1214CONFIG_SCHED_DEBUG=y 1437CONFIG_SCHED_DEBUG=y
1215# CONFIG_SCHEDSTATS is not set 1438# CONFIG_SCHEDSTATS is not set
1216# CONFIG_TIMER_STATS is not set 1439# CONFIG_TIMER_STATS is not set
@@ -1219,23 +1442,53 @@ CONFIG_SCHED_DEBUG=y
1219# CONFIG_DEBUG_RT_MUTEXES is not set 1442# CONFIG_DEBUG_RT_MUTEXES is not set
1220# CONFIG_RT_MUTEX_TESTER is not set 1443# CONFIG_RT_MUTEX_TESTER is not set
1221# CONFIG_DEBUG_SPINLOCK is not set 1444# CONFIG_DEBUG_SPINLOCK is not set
1222CONFIG_DEBUG_MUTEXES=y 1445# CONFIG_DEBUG_MUTEXES is not set
1223# CONFIG_DEBUG_LOCK_ALLOC is not set 1446# CONFIG_DEBUG_LOCK_ALLOC is not set
1224# CONFIG_PROVE_LOCKING is not set 1447# CONFIG_PROVE_LOCKING is not set
1225# CONFIG_LOCK_STAT is not set 1448# CONFIG_LOCK_STAT is not set
1226# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1449CONFIG_DEBUG_SPINLOCK_SLEEP=y
1227# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1450# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1228# CONFIG_DEBUG_KOBJECT is not set 1451# CONFIG_DEBUG_KOBJECT is not set
1229# CONFIG_DEBUG_INFO is not set 1452# CONFIG_DEBUG_INFO is not set
1230# CONFIG_DEBUG_VM is not set 1453# CONFIG_DEBUG_VM is not set
1231# CONFIG_DEBUG_WRITECOUNT is not set 1454# CONFIG_DEBUG_WRITECOUNT is not set
1232# CONFIG_DEBUG_LIST is not set 1455CONFIG_DEBUG_MEMORY_INIT=y
1456CONFIG_DEBUG_LIST=y
1233# CONFIG_DEBUG_SG is not set 1457# CONFIG_DEBUG_SG is not set
1458# CONFIG_DEBUG_NOTIFIERS is not set
1459# CONFIG_DEBUG_CREDENTIALS is not set
1234# CONFIG_BOOT_PRINTK_DELAY is not set 1460# CONFIG_BOOT_PRINTK_DELAY is not set
1235# CONFIG_RCU_TORTURE_TEST is not set 1461# CONFIG_RCU_TORTURE_TEST is not set
1462CONFIG_RCU_CPU_STALL_DETECTOR=y
1236# CONFIG_BACKTRACE_SELF_TEST is not set 1463# CONFIG_BACKTRACE_SELF_TEST is not set
1464# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1465# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1237# CONFIG_FAULT_INJECTION is not set 1466# CONFIG_FAULT_INJECTION is not set
1467# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1468# CONFIG_PAGE_POISONING is not set
1469CONFIG_HAVE_FUNCTION_TRACER=y
1470CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1471CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
1472CONFIG_HAVE_DYNAMIC_FTRACE=y
1473CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1474CONFIG_TRACING_SUPPORT=y
1475CONFIG_FTRACE=y
1476# CONFIG_FUNCTION_TRACER is not set
1477# CONFIG_IRQSOFF_TRACER is not set
1478# CONFIG_SCHED_TRACER is not set
1479# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1480# CONFIG_BOOT_TRACER is not set
1481CONFIG_BRANCH_PROFILE_NONE=y
1482# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1483# CONFIG_PROFILE_ALL_BRANCHES is not set
1484# CONFIG_STACK_TRACER is not set
1485# CONFIG_KMEMTRACE is not set
1486# CONFIG_WORKQUEUE_TRACER is not set
1487# CONFIG_BLK_DEV_IO_TRACE is not set
1238# CONFIG_SAMPLES is not set 1488# CONFIG_SAMPLES is not set
1489CONFIG_HAVE_ARCH_KGDB=y
1490# CONFIG_KGDB is not set
1491CONFIG_EARLY_PRINTK=y
1239# CONFIG_CMDLINE_BOOL is not set 1492# CONFIG_CMDLINE_BOOL is not set
1240# CONFIG_DEBUG_STACK_USAGE is not set 1493# CONFIG_DEBUG_STACK_USAGE is not set
1241# CONFIG_SB1XXX_CORELIS is not set 1494# CONFIG_SB1XXX_CORELIS is not set
@@ -1246,20 +1499,50 @@ CONFIG_DEBUG_MUTEXES=y
1246# 1499#
1247CONFIG_KEYS=y 1500CONFIG_KEYS=y
1248CONFIG_KEYS_DEBUG_PROC_KEYS=y 1501CONFIG_KEYS_DEBUG_PROC_KEYS=y
1249# CONFIG_SECURITY is not set 1502CONFIG_SECURITY=y
1250# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1503# CONFIG_SECURITYFS is not set
1504CONFIG_SECURITY_NETWORK=y
1505CONFIG_SECURITY_NETWORK_XFRM=y
1506# CONFIG_SECURITY_PATH is not set
1507CONFIG_LSM_MMAP_MIN_ADDR=65536
1508CONFIG_SECURITY_SELINUX=y
1509CONFIG_SECURITY_SELINUX_BOOTPARAM=y
1510CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
1511CONFIG_SECURITY_SELINUX_DISABLE=y
1512CONFIG_SECURITY_SELINUX_DEVELOP=y
1513CONFIG_SECURITY_SELINUX_AVC_STATS=y
1514CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
1515# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
1516# CONFIG_SECURITY_SMACK is not set
1517# CONFIG_SECURITY_TOMOYO is not set
1518# CONFIG_DEFAULT_SECURITY_SELINUX is not set
1519# CONFIG_DEFAULT_SECURITY_SMACK is not set
1520# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
1521CONFIG_DEFAULT_SECURITY_DAC=y
1522CONFIG_DEFAULT_SECURITY=""
1251CONFIG_CRYPTO=y 1523CONFIG_CRYPTO=y
1252 1524
1253# 1525#
1254# Crypto core or helper 1526# Crypto core or helper
1255# 1527#
1528# CONFIG_CRYPTO_FIPS is not set
1256CONFIG_CRYPTO_ALGAPI=y 1529CONFIG_CRYPTO_ALGAPI=y
1530CONFIG_CRYPTO_ALGAPI2=y
1257CONFIG_CRYPTO_AEAD=m 1531CONFIG_CRYPTO_AEAD=m
1532CONFIG_CRYPTO_AEAD2=y
1258CONFIG_CRYPTO_BLKCIPHER=y 1533CONFIG_CRYPTO_BLKCIPHER=y
1534CONFIG_CRYPTO_BLKCIPHER2=y
1259CONFIG_CRYPTO_HASH=y 1535CONFIG_CRYPTO_HASH=y
1536CONFIG_CRYPTO_HASH2=y
1537CONFIG_CRYPTO_RNG=m
1538CONFIG_CRYPTO_RNG2=y
1539CONFIG_CRYPTO_PCOMP=y
1260CONFIG_CRYPTO_MANAGER=y 1540CONFIG_CRYPTO_MANAGER=y
1541CONFIG_CRYPTO_MANAGER2=y
1261CONFIG_CRYPTO_GF128MUL=m 1542CONFIG_CRYPTO_GF128MUL=m
1262CONFIG_CRYPTO_NULL=y 1543CONFIG_CRYPTO_NULL=y
1544# CONFIG_CRYPTO_PCRYPT is not set
1545CONFIG_CRYPTO_WORKQUEUE=y
1263# CONFIG_CRYPTO_CRYPTD is not set 1546# CONFIG_CRYPTO_CRYPTD is not set
1264CONFIG_CRYPTO_AUTHENC=m 1547CONFIG_CRYPTO_AUTHENC=m
1265# CONFIG_CRYPTO_TEST is not set 1548# CONFIG_CRYPTO_TEST is not set
@@ -1276,7 +1559,7 @@ CONFIG_CRYPTO_SEQIV=m
1276# 1559#
1277CONFIG_CRYPTO_CBC=m 1560CONFIG_CRYPTO_CBC=m
1278CONFIG_CRYPTO_CTR=m 1561CONFIG_CRYPTO_CTR=m
1279# CONFIG_CRYPTO_CTS is not set 1562CONFIG_CRYPTO_CTS=m
1280CONFIG_CRYPTO_ECB=m 1563CONFIG_CRYPTO_ECB=m
1281CONFIG_CRYPTO_LRW=m 1564CONFIG_CRYPTO_LRW=m
1282CONFIG_CRYPTO_PCBC=m 1565CONFIG_CRYPTO_PCBC=m
@@ -1287,14 +1570,20 @@ CONFIG_CRYPTO_XTS=m
1287# 1570#
1288CONFIG_CRYPTO_HMAC=y 1571CONFIG_CRYPTO_HMAC=y
1289CONFIG_CRYPTO_XCBC=m 1572CONFIG_CRYPTO_XCBC=m
1573CONFIG_CRYPTO_VMAC=m
1290 1574
1291# 1575#
1292# Digest 1576# Digest
1293# 1577#
1294# CONFIG_CRYPTO_CRC32C is not set 1578CONFIG_CRYPTO_CRC32C=m
1579CONFIG_CRYPTO_GHASH=m
1295CONFIG_CRYPTO_MD4=m 1580CONFIG_CRYPTO_MD4=m
1296CONFIG_CRYPTO_MD5=y 1581CONFIG_CRYPTO_MD5=y
1297CONFIG_CRYPTO_MICHAEL_MIC=m 1582CONFIG_CRYPTO_MICHAEL_MIC=m
1583CONFIG_CRYPTO_RMD128=m
1584CONFIG_CRYPTO_RMD160=m
1585CONFIG_CRYPTO_RMD256=m
1586CONFIG_CRYPTO_RMD320=m
1298CONFIG_CRYPTO_SHA1=m 1587CONFIG_CRYPTO_SHA1=m
1299CONFIG_CRYPTO_SHA256=m 1588CONFIG_CRYPTO_SHA256=m
1300CONFIG_CRYPTO_SHA512=m 1589CONFIG_CRYPTO_SHA512=m
@@ -1325,25 +1614,36 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
1325# Compression 1614# Compression
1326# 1615#
1327CONFIG_CRYPTO_DEFLATE=m 1616CONFIG_CRYPTO_DEFLATE=m
1328# CONFIG_CRYPTO_LZO is not set 1617CONFIG_CRYPTO_ZLIB=m
1618CONFIG_CRYPTO_LZO=m
1619
1620#
1621# Random Number Generation
1622#
1623CONFIG_CRYPTO_ANSI_CPRNG=m
1329CONFIG_CRYPTO_HW=y 1624CONFIG_CRYPTO_HW=y
1330# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1625# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1626# CONFIG_BINARY_PRINTF is not set
1331 1627
1332# 1628#
1333# Library routines 1629# Library routines
1334# 1630#
1335CONFIG_BITREVERSE=y 1631CONFIG_BITREVERSE=y
1336# CONFIG_GENERIC_FIND_FIRST_BIT is not set 1632CONFIG_GENERIC_FIND_LAST_BIT=y
1337CONFIG_CRC_CCITT=m 1633CONFIG_CRC_CCITT=m
1338# CONFIG_CRC16 is not set 1634CONFIG_CRC16=y
1635CONFIG_CRC_T10DIF=m
1339CONFIG_CRC_ITU_T=m 1636CONFIG_CRC_ITU_T=m
1340CONFIG_CRC32=y 1637CONFIG_CRC32=y
1341# CONFIG_CRC7 is not set 1638CONFIG_CRC7=m
1342CONFIG_LIBCRC32C=m 1639CONFIG_LIBCRC32C=m
1343CONFIG_AUDIT_GENERIC=y 1640CONFIG_AUDIT_GENERIC=y
1344CONFIG_ZLIB_INFLATE=m 1641CONFIG_ZLIB_INFLATE=y
1345CONFIG_ZLIB_DEFLATE=m 1642CONFIG_ZLIB_DEFLATE=m
1346CONFIG_PLIST=y 1643CONFIG_LZO_COMPRESS=m
1644CONFIG_LZO_DECOMPRESS=m
1645CONFIG_DECOMPRESS_GZIP=y
1347CONFIG_HAS_IOMEM=y 1646CONFIG_HAS_IOMEM=y
1348CONFIG_HAS_IOPORT=y 1647CONFIG_HAS_IOPORT=y
1349CONFIG_HAS_DMA=y 1648CONFIG_HAS_DMA=y
1649CONFIG_NLATTR=y
diff --git a/arch/mips/include/asm/abi.h b/arch/mips/include/asm/abi.h
index 1dd74fbdc09b..9252d9b50e59 100644
--- a/arch/mips/include/asm/abi.h
+++ b/arch/mips/include/asm/abi.h
@@ -13,12 +13,14 @@
13#include <asm/siginfo.h> 13#include <asm/siginfo.h>
14 14
15struct mips_abi { 15struct mips_abi {
16 int (* const setup_frame)(struct k_sigaction * ka, 16 int (* const setup_frame)(void *sig_return, struct k_sigaction *ka,
17 struct pt_regs *regs, int signr, 17 struct pt_regs *regs, int signr,
18 sigset_t *set); 18 sigset_t *set);
19 int (* const setup_rt_frame)(struct k_sigaction * ka, 19 const unsigned long signal_return_offset;
20 int (* const setup_rt_frame)(void *sig_return, struct k_sigaction *ka,
20 struct pt_regs *regs, int signr, 21 struct pt_regs *regs, int signr,
21 sigset_t *set, siginfo_t *info); 22 sigset_t *set, siginfo_t *info);
23 const unsigned long rt_signal_return_offset;
22 const unsigned long restart; 24 const unsigned long restart;
23}; 25};
24 26
diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
index e53d7bed5cda..ea77a42c5f8c 100644
--- a/arch/mips/include/asm/elf.h
+++ b/arch/mips/include/asm/elf.h
@@ -310,6 +310,7 @@ do { \
310 310
311#endif /* CONFIG_64BIT */ 311#endif /* CONFIG_64BIT */
312 312
313struct pt_regs;
313struct task_struct; 314struct task_struct;
314 315
315extern void elf_dump_regs(elf_greg_t *, struct pt_regs *regs); 316extern void elf_dump_regs(elf_greg_t *, struct pt_regs *regs);
@@ -367,4 +368,8 @@ extern const char *__elf_platform;
367#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) 368#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
368#endif 369#endif
369 370
371#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
372struct linux_binprm;
373extern int arch_setup_additional_pages(struct linux_binprm *bprm,
374 int uses_interp);
370#endif /* _ASM_ELF_H */ 375#endif /* _ASM_ELF_H */
diff --git a/arch/mips/include/asm/fpu_emulator.h b/arch/mips/include/asm/fpu_emulator.h
index aecada6f6117..3b4092705567 100644
--- a/arch/mips/include/asm/fpu_emulator.h
+++ b/arch/mips/include/asm/fpu_emulator.h
@@ -41,7 +41,11 @@ struct mips_fpu_emulator_stats {
41DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats); 41DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);
42 42
43#define MIPS_FPU_EMU_INC_STATS(M) \ 43#define MIPS_FPU_EMU_INC_STATS(M) \
44 cpu_local_wrap(__local_inc(&__get_cpu_var(fpuemustats).M)) 44do { \
45 preempt_disable(); \
46 __local_inc(&__get_cpu_var(fpuemustats).M); \
47 preempt_enable(); \
48} while (0)
45 49
46#else 50#else
47#define MIPS_FPU_EMU_INC_STATS(M) do { } while (0) 51#define MIPS_FPU_EMU_INC_STATS(M) do { } while (0)
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
index b12c4aca2cc9..96a2391ad85b 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
@@ -85,6 +85,7 @@ enum bcm63xx_regs_set {
85 RSET_TIMER, 85 RSET_TIMER,
86 RSET_WDT, 86 RSET_WDT,
87 RSET_UART0, 87 RSET_UART0,
88 RSET_UART1,
88 RSET_GPIO, 89 RSET_GPIO,
89 RSET_SPI, 90 RSET_SPI,
90 RSET_UDC0, 91 RSET_UDC0,
@@ -123,6 +124,7 @@ enum bcm63xx_regs_set {
123#define BCM_6338_TIMER_BASE (0xfffe0200) 124#define BCM_6338_TIMER_BASE (0xfffe0200)
124#define BCM_6338_WDT_BASE (0xfffe021c) 125#define BCM_6338_WDT_BASE (0xfffe021c)
125#define BCM_6338_UART0_BASE (0xfffe0300) 126#define BCM_6338_UART0_BASE (0xfffe0300)
127#define BCM_6338_UART1_BASE (0xdeadbeef)
126#define BCM_6338_GPIO_BASE (0xfffe0400) 128#define BCM_6338_GPIO_BASE (0xfffe0400)
127#define BCM_6338_SPI_BASE (0xfffe0c00) 129#define BCM_6338_SPI_BASE (0xfffe0c00)
128#define BCM_6338_UDC0_BASE (0xdeadbeef) 130#define BCM_6338_UDC0_BASE (0xdeadbeef)
@@ -153,6 +155,7 @@ enum bcm63xx_regs_set {
153#define BCM_6345_TIMER_BASE (0xfffe0200) 155#define BCM_6345_TIMER_BASE (0xfffe0200)
154#define BCM_6345_WDT_BASE (0xfffe021c) 156#define BCM_6345_WDT_BASE (0xfffe021c)
155#define BCM_6345_UART0_BASE (0xfffe0300) 157#define BCM_6345_UART0_BASE (0xfffe0300)
158#define BCM_6345_UART1_BASE (0xdeadbeef)
156#define BCM_6345_GPIO_BASE (0xfffe0400) 159#define BCM_6345_GPIO_BASE (0xfffe0400)
157#define BCM_6345_SPI_BASE (0xdeadbeef) 160#define BCM_6345_SPI_BASE (0xdeadbeef)
158#define BCM_6345_UDC0_BASE (0xdeadbeef) 161#define BCM_6345_UDC0_BASE (0xdeadbeef)
@@ -182,6 +185,7 @@ enum bcm63xx_regs_set {
182#define BCM_6348_TIMER_BASE (0xfffe0200) 185#define BCM_6348_TIMER_BASE (0xfffe0200)
183#define BCM_6348_WDT_BASE (0xfffe021c) 186#define BCM_6348_WDT_BASE (0xfffe021c)
184#define BCM_6348_UART0_BASE (0xfffe0300) 187#define BCM_6348_UART0_BASE (0xfffe0300)
188#define BCM_6348_UART1_BASE (0xdeadbeef)
185#define BCM_6348_GPIO_BASE (0xfffe0400) 189#define BCM_6348_GPIO_BASE (0xfffe0400)
186#define BCM_6348_SPI_BASE (0xfffe0c00) 190#define BCM_6348_SPI_BASE (0xfffe0c00)
187#define BCM_6348_UDC0_BASE (0xfffe1000) 191#define BCM_6348_UDC0_BASE (0xfffe1000)
@@ -208,6 +212,7 @@ enum bcm63xx_regs_set {
208#define BCM_6358_TIMER_BASE (0xfffe0040) 212#define BCM_6358_TIMER_BASE (0xfffe0040)
209#define BCM_6358_WDT_BASE (0xfffe005c) 213#define BCM_6358_WDT_BASE (0xfffe005c)
210#define BCM_6358_UART0_BASE (0xfffe0100) 214#define BCM_6358_UART0_BASE (0xfffe0100)
215#define BCM_6358_UART1_BASE (0xfffe0120)
211#define BCM_6358_GPIO_BASE (0xfffe0080) 216#define BCM_6358_GPIO_BASE (0xfffe0080)
212#define BCM_6358_SPI_BASE (0xdeadbeef) 217#define BCM_6358_SPI_BASE (0xdeadbeef)
213#define BCM_6358_UDC0_BASE (0xfffe0800) 218#define BCM_6358_UDC0_BASE (0xfffe0800)
@@ -246,6 +251,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
246 return BCM_6338_WDT_BASE; 251 return BCM_6338_WDT_BASE;
247 case RSET_UART0: 252 case RSET_UART0:
248 return BCM_6338_UART0_BASE; 253 return BCM_6338_UART0_BASE;
254 case RSET_UART1:
255 return BCM_6338_UART1_BASE;
249 case RSET_GPIO: 256 case RSET_GPIO:
250 return BCM_6338_GPIO_BASE; 257 return BCM_6338_GPIO_BASE;
251 case RSET_SPI: 258 case RSET_SPI:
@@ -292,6 +299,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
292 return BCM_6345_WDT_BASE; 299 return BCM_6345_WDT_BASE;
293 case RSET_UART0: 300 case RSET_UART0:
294 return BCM_6345_UART0_BASE; 301 return BCM_6345_UART0_BASE;
302 case RSET_UART1:
303 return BCM_6345_UART1_BASE;
295 case RSET_GPIO: 304 case RSET_GPIO:
296 return BCM_6345_GPIO_BASE; 305 return BCM_6345_GPIO_BASE;
297 case RSET_SPI: 306 case RSET_SPI:
@@ -338,6 +347,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
338 return BCM_6348_WDT_BASE; 347 return BCM_6348_WDT_BASE;
339 case RSET_UART0: 348 case RSET_UART0:
340 return BCM_6348_UART0_BASE; 349 return BCM_6348_UART0_BASE;
350 case RSET_UART1:
351 return BCM_6348_UART1_BASE;
341 case RSET_GPIO: 352 case RSET_GPIO:
342 return BCM_6348_GPIO_BASE; 353 return BCM_6348_GPIO_BASE;
343 case RSET_SPI: 354 case RSET_SPI:
@@ -384,6 +395,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
384 return BCM_6358_WDT_BASE; 395 return BCM_6358_WDT_BASE;
385 case RSET_UART0: 396 case RSET_UART0:
386 return BCM_6358_UART0_BASE; 397 return BCM_6358_UART0_BASE;
398 case RSET_UART1:
399 return BCM_6358_UART1_BASE;
387 case RSET_GPIO: 400 case RSET_GPIO:
388 return BCM_6358_GPIO_BASE; 401 return BCM_6358_GPIO_BASE;
389 case RSET_SPI: 402 case RSET_SPI:
@@ -429,6 +442,7 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)
429enum bcm63xx_irq { 442enum bcm63xx_irq {
430 IRQ_TIMER = 0, 443 IRQ_TIMER = 0,
431 IRQ_UART0, 444 IRQ_UART0,
445 IRQ_UART1,
432 IRQ_DSL, 446 IRQ_DSL,
433 IRQ_ENET0, 447 IRQ_ENET0,
434 IRQ_ENET1, 448 IRQ_ENET1,
@@ -510,6 +524,7 @@ enum bcm63xx_irq {
510 */ 524 */
511#define BCM_6358_TIMER_IRQ (IRQ_INTERNAL_BASE + 0) 525#define BCM_6358_TIMER_IRQ (IRQ_INTERNAL_BASE + 0)
512#define BCM_6358_UART0_IRQ (IRQ_INTERNAL_BASE + 2) 526#define BCM_6358_UART0_IRQ (IRQ_INTERNAL_BASE + 2)
527#define BCM_6358_UART1_IRQ (IRQ_INTERNAL_BASE + 3)
513#define BCM_6358_OHCI0_IRQ (IRQ_INTERNAL_BASE + 5) 528#define BCM_6358_OHCI0_IRQ (IRQ_INTERNAL_BASE + 5)
514#define BCM_6358_ENET1_IRQ (IRQ_INTERNAL_BASE + 6) 529#define BCM_6358_ENET1_IRQ (IRQ_INTERNAL_BASE + 6)
515#define BCM_6358_ENET0_IRQ (IRQ_INTERNAL_BASE + 8) 530#define BCM_6358_ENET0_IRQ (IRQ_INTERNAL_BASE + 8)
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
new file mode 100644
index 000000000000..23c705baf171
--- /dev/null
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
@@ -0,0 +1,6 @@
1#ifndef BCM63XX_DEV_UART_H_
2#define BCM63XX_DEV_UART_H_
3
4int bcm63xx_uart_register(unsigned int id);
5
6#endif /* BCM63XX_DEV_UART_H_ */
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
index 76a0b7216af5..43d4da0b1e9f 100644
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h
@@ -10,6 +10,10 @@ static inline unsigned long bcm63xx_gpio_count(void)
10 switch (bcm63xx_get_cpu_id()) { 10 switch (bcm63xx_get_cpu_id()) {
11 case BCM6358_CPU_ID: 11 case BCM6358_CPU_ID:
12 return 40; 12 return 40;
13 case BCM6338_CPU_ID:
14 return 8;
15 case BCM6345_CPU_ID:
16 return 16;
13 case BCM6348_CPU_ID: 17 case BCM6348_CPU_ID:
14 default: 18 default:
15 return 37; 19 return 37;
diff --git a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
index 6479090a4106..474daaa53497 100644
--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
@@ -45,6 +45,8 @@ struct board_info {
45 unsigned int has_ohci0:1; 45 unsigned int has_ohci0:1;
46 unsigned int has_ehci0:1; 46 unsigned int has_ehci0:1;
47 unsigned int has_dsp:1; 47 unsigned int has_dsp:1;
48 unsigned int has_uart0:1;
49 unsigned int has_uart1:1;
48 50
49 /* ethernet config */ 51 /* ethernet config */
50 struct bcm63xx_enet_platform_data enet0; 52 struct bcm63xx_enet_platform_data enet0;
diff --git a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
index 71742bac940d..f453c01d0672 100644
--- a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h
@@ -24,7 +24,7 @@
24#define cpu_has_smartmips 0 24#define cpu_has_smartmips 0
25#define cpu_has_vtag_icache 0 25#define cpu_has_vtag_icache 0
26 26
27#if !defined(BCMCPU_RUNTIME_DETECT) && (defined(CONFIG_BCMCPU_IS_6348) || defined(CONFIG_CPU_IS_6338) || defined(CONFIG_CPU_IS_BCM6345)) 27#if !defined(BCMCPU_RUNTIME_DETECT) && (defined(CONFIG_BCM63XX_CPU_6348) || defined(CONFIG_BCM63XX_CPU_6345) || defined(CONFIG_BCM63XX_CPU_6338))
28#define cpu_has_dc_aliases 0 28#define cpu_has_dc_aliases 0
29#endif 29#endif
30 30
diff --git a/arch/mips/include/asm/mach-sibyte/war.h b/arch/mips/include/asm/mach-sibyte/war.h
index 7950ef4f032c..743385d7b5f2 100644
--- a/arch/mips/include/asm/mach-sibyte/war.h
+++ b/arch/mips/include/asm/mach-sibyte/war.h
@@ -16,7 +16,11 @@
16#if defined(CONFIG_SB1_PASS_1_WORKAROUNDS) || \ 16#if defined(CONFIG_SB1_PASS_1_WORKAROUNDS) || \
17 defined(CONFIG_SB1_PASS_2_WORKAROUNDS) 17 defined(CONFIG_SB1_PASS_2_WORKAROUNDS)
18 18
19#define BCM1250_M3_WAR 1 19#ifndef __ASSEMBLY__
20extern int sb1250_m3_workaround_needed(void);
21#endif
22
23#define BCM1250_M3_WAR sb1250_m3_workaround_needed()
20#define SIBYTE_1956_WAR 1 24#define SIBYTE_1956_WAR 1
21 25
22#else 26#else
diff --git a/arch/mips/include/asm/mmu.h b/arch/mips/include/asm/mmu.h
index 4063edd79623..c436138945a8 100644
--- a/arch/mips/include/asm/mmu.h
+++ b/arch/mips/include/asm/mmu.h
@@ -1,6 +1,9 @@
1#ifndef __ASM_MMU_H 1#ifndef __ASM_MMU_H
2#define __ASM_MMU_H 2#define __ASM_MMU_H
3 3
4typedef unsigned long mm_context_t[NR_CPUS]; 4typedef struct {
5 unsigned long asid[NR_CPUS];
6 void *vdso;
7} mm_context_t;
5 8
6#endif /* __ASM_MMU_H */ 9#endif /* __ASM_MMU_H */
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h
index 145bb81ccaa5..d9592733a7ba 100644
--- a/arch/mips/include/asm/mmu_context.h
+++ b/arch/mips/include/asm/mmu_context.h
@@ -104,7 +104,7 @@ extern unsigned long smtc_asid_mask;
104 104
105#endif 105#endif
106 106
107#define cpu_context(cpu, mm) ((mm)->context[cpu]) 107#define cpu_context(cpu, mm) ((mm)->context.asid[cpu])
108#define cpu_asid(cpu, mm) (cpu_context((cpu), (mm)) & ASID_MASK) 108#define cpu_asid(cpu, mm) (cpu_context((cpu), (mm)) & ASID_MASK)
109#define asid_cache(cpu) (cpu_data[cpu].asid_cache) 109#define asid_cache(cpu) (cpu_data[cpu].asid_cache)
110 110
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
index ac32572430f4..a16beafcea91 100644
--- a/arch/mips/include/asm/page.h
+++ b/arch/mips/include/asm/page.h
@@ -188,8 +188,10 @@ typedef struct { unsigned long pgprot; } pgprot_t;
188#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ 188#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
189 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 189 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
190 190
191#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE) 191#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE + \
192#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET) 192 PHYS_OFFSET)
193#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET - \
194 PHYS_OFFSET)
193 195
194#include <asm-generic/memory_model.h> 196#include <asm-generic/memory_model.h>
195#include <asm-generic/getorder.h> 197#include <asm-generic/getorder.h>
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 087a8884ef06..ab387910009a 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -33,13 +33,19 @@ extern void (*cpu_wait)(void);
33 33
34extern unsigned int vced_count, vcei_count; 34extern unsigned int vced_count, vcei_count;
35 35
36/*
37 * A special page (the vdso) is mapped into all processes at the very
38 * top of the virtual memory space.
39 */
40#define SPECIAL_PAGES_SIZE PAGE_SIZE
41
36#ifdef CONFIG_32BIT 42#ifdef CONFIG_32BIT
37/* 43/*
38 * User space process size: 2GB. This is hardcoded into a few places, 44 * User space process size: 2GB. This is hardcoded into a few places,
39 * so don't change it unless you know what you are doing. 45 * so don't change it unless you know what you are doing.
40 */ 46 */
41#define TASK_SIZE 0x7fff8000UL 47#define TASK_SIZE 0x7fff8000UL
42#define STACK_TOP TASK_SIZE 48#define STACK_TOP ((TASK_SIZE & PAGE_MASK) - SPECIAL_PAGES_SIZE)
43 49
44/* 50/*
45 * This decides where the kernel will search for a free chunk of vm 51 * This decides where the kernel will search for a free chunk of vm
@@ -59,7 +65,8 @@ extern unsigned int vced_count, vcei_count;
59#define TASK_SIZE32 0x7fff8000UL 65#define TASK_SIZE32 0x7fff8000UL
60#define TASK_SIZE 0x10000000000UL 66#define TASK_SIZE 0x10000000000UL
61#define STACK_TOP \ 67#define STACK_TOP \
62 (test_thread_flag(TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE) 68 (((test_thread_flag(TIF_32BIT_ADDR) ? \
69 TASK_SIZE32 : TASK_SIZE) & PAGE_MASK) - SPECIAL_PAGES_SIZE)
63 70
64/* 71/*
65 * This decides where the kernel will search for a free chunk of vm 72 * This decides where the kernel will search for a free chunk of vm
diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h
index 3b6da3330e32..c8419129e770 100644
--- a/arch/mips/include/asm/stackframe.h
+++ b/arch/mips/include/asm/stackframe.h
@@ -121,6 +121,25 @@
121 .endm 121 .endm
122#else 122#else
123 .macro get_saved_sp /* Uniprocessor variation */ 123 .macro get_saved_sp /* Uniprocessor variation */
124#ifdef CONFIG_CPU_LOONGSON2F
125 /*
126 * Clear BTB (branch target buffer), forbid RAS (return address
127 * stack) to workaround the Out-of-order Issue in Loongson2F
128 * via its diagnostic register.
129 */
130 move k0, ra
131 jal 1f
132 nop
1331: jal 1f
134 nop
1351: jal 1f
136 nop
1371: jal 1f
138 nop
1391: move ra, k0
140 li k0, 3
141 mtc0 k0, $22
142#endif /* CONFIG_CPU_LOONGSON2F */
124#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32) 143#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
125 lui k1, %hi(kernelsp) 144 lui k1, %hi(kernelsp)
126#else 145#else
diff --git a/arch/mips/include/asm/uasm.h b/arch/mips/include/asm/uasm.h
index b99bd07e199b..11a8b5252549 100644
--- a/arch/mips/include/asm/uasm.h
+++ b/arch/mips/include/asm/uasm.h
@@ -84,6 +84,7 @@ Ip_u2s3u1(_lw);
84Ip_u1u2u3(_mfc0); 84Ip_u1u2u3(_mfc0);
85Ip_u1u2u3(_mtc0); 85Ip_u1u2u3(_mtc0);
86Ip_u2u1u3(_ori); 86Ip_u2u1u3(_ori);
87Ip_u3u1u2(_or);
87Ip_u2s3u1(_pref); 88Ip_u2s3u1(_pref);
88Ip_0(_rfe); 89Ip_0(_rfe);
89Ip_u2s3u1(_sc); 90Ip_u2s3u1(_sc);
@@ -102,6 +103,7 @@ Ip_0(_tlbwr);
102Ip_u3u1u2(_xor); 103Ip_u3u1u2(_xor);
103Ip_u2u1u3(_xori); 104Ip_u2u1u3(_xori);
104Ip_u2u1msbu3(_dins); 105Ip_u2u1msbu3(_dins);
106Ip_u1(_syscall);
105 107
106/* Handle labels. */ 108/* Handle labels. */
107struct uasm_label { 109struct uasm_label {
diff --git a/arch/mips/include/asm/vdso.h b/arch/mips/include/asm/vdso.h
new file mode 100644
index 000000000000..cca56aa40ff4
--- /dev/null
+++ b/arch/mips/include/asm/vdso.h
@@ -0,0 +1,29 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2009 Cavium Networks
7 */
8
9#ifndef __ASM_VDSO_H
10#define __ASM_VDSO_H
11
12#include <linux/types.h>
13
14
15#ifdef CONFIG_32BIT
16struct mips_vdso {
17 u32 signal_trampoline[2];
18 u32 rt_signal_trampoline[2];
19};
20#else /* !CONFIG_32BIT */
21struct mips_vdso {
22 u32 o32_signal_trampoline[2];
23 u32 o32_rt_signal_trampoline[2];
24 u32 rt_signal_trampoline[2];
25 u32 n32_rt_signal_trampoline[2];
26};
27#endif /* CONFIG_32BIT */
28
29#endif /* __ASM_VDSO_H */
diff --git a/arch/mips/jazz/jazzdma.c b/arch/mips/jazz/jazzdma.c
index 0d64d0f46418..9ce9f64cb76f 100644
--- a/arch/mips/jazz/jazzdma.c
+++ b/arch/mips/jazz/jazzdma.c
@@ -14,6 +14,7 @@
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/bootmem.h> 15#include <linux/bootmem.h>
16#include <linux/spinlock.h> 16#include <linux/spinlock.h>
17#include <linux/gfp.h>
17#include <asm/mipsregs.h> 18#include <asm/mipsregs.h>
18#include <asm/jazz.h> 19#include <asm/jazz.h>
19#include <asm/io.h> 20#include <asm/io.h>
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index ef20957ca14b..7a6ac501cbb5 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -6,7 +6,7 @@ extra-y := head.o init_task.o vmlinux.lds
6 6
7obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \ 7obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \
8 ptrace.o reset.o setup.o signal.o syscall.o \ 8 ptrace.o reset.o setup.o signal.o syscall.o \
9 time.o topology.o traps.o unaligned.o watch.o 9 time.o topology.o traps.o unaligned.o watch.o vdso.o
10 10
11ifdef CONFIG_FUNCTION_TRACER 11ifdef CONFIG_FUNCTION_TRACER
12CFLAGS_REMOVE_ftrace.o = -pg 12CFLAGS_REMOVE_ftrace.o = -pg
diff --git a/arch/mips/kernel/cpufreq/loongson2_clock.c b/arch/mips/kernel/cpufreq/loongson2_clock.c
index d7ca256e33ef..cefc6e259baf 100644
--- a/arch/mips/kernel/cpufreq/loongson2_clock.c
+++ b/arch/mips/kernel/cpufreq/loongson2_clock.c
@@ -164,3 +164,7 @@ void loongson2_cpu_wait(void)
164 spin_unlock_irqrestore(&loongson2_wait_lock, flags); 164 spin_unlock_irqrestore(&loongson2_wait_lock, flags);
165} 165}
166EXPORT_SYMBOL_GPL(loongson2_cpu_wait); 166EXPORT_SYMBOL_GPL(loongson2_cpu_wait);
167
168MODULE_AUTHOR("Yanhua <yanh@lemote.com>");
169MODULE_DESCRIPTION("cpufreq driver for Loongson 2F");
170MODULE_LICENSE("GPL");
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
index 981f86c26168..c6345f579a8a 100644
--- a/arch/mips/kernel/irq.c
+++ b/arch/mips/kernel/irq.c
@@ -15,7 +15,6 @@
15#include <linux/kernel_stat.h> 15#include <linux/kernel_stat.h>
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/proc_fs.h> 17#include <linux/proc_fs.h>
18#include <linux/slab.h>
19#include <linux/mm.h> 18#include <linux/mm.h>
20#include <linux/random.h> 19#include <linux/random.h>
21#include <linux/sched.h> 20#include <linux/sched.h>
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index a39d0597a375..c2dab140dc98 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -15,7 +15,6 @@
15#include <linux/time.h> 15#include <linux/time.h>
16#include <linux/times.h> 16#include <linux/times.h>
17#include <linux/poll.h> 17#include <linux/poll.h>
18#include <linux/slab.h>
19#include <linux/skbuff.h> 18#include <linux/skbuff.h>
20#include <linux/filter.h> 19#include <linux/filter.h>
21#include <linux/shm.h> 20#include <linux/shm.h>
@@ -34,6 +33,7 @@
34#include <linux/compat.h> 33#include <linux/compat.h>
35#include <linux/vfs.h> 34#include <linux/vfs.h>
36#include <linux/ipc.h> 35#include <linux/ipc.h>
36#include <linux/slab.h>
37 37
38#include <net/sock.h> 38#include <net/sock.h>
39#include <net/scm.h> 39#include <net/scm.h>
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index f3d73e1831c1..99960940d4a4 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -17,7 +17,6 @@
17#include <linux/stddef.h> 17#include <linux/stddef.h>
18#include <linux/unistd.h> 18#include <linux/unistd.h>
19#include <linux/ptrace.h> 19#include <linux/ptrace.h>
20#include <linux/slab.h>
21#include <linux/mman.h> 20#include <linux/mman.h>
22#include <linux/personality.h> 21#include <linux/personality.h>
23#include <linux/sys.h> 22#include <linux/sys.h>
@@ -64,8 +63,13 @@ void __noreturn cpu_idle(void)
64 63
65 smtc_idle_loop_hook(); 64 smtc_idle_loop_hook();
66#endif 65#endif
67 if (cpu_wait) 66
67 if (cpu_wait) {
68 /* Don't trace irqs off for idle */
69 stop_critical_timings();
68 (*cpu_wait)(); 70 (*cpu_wait)();
71 start_critical_timings();
72 }
69 } 73 }
70#ifdef CONFIG_HOTPLUG_CPU 74#ifdef CONFIG_HOTPLUG_CPU
71 if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) && 75 if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) &&
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
index dcaed1bbbfe5..26f9b9ab19cc 100644
--- a/arch/mips/kernel/rtlx.c
+++ b/arch/mips/kernel/rtlx.c
@@ -23,7 +23,6 @@
23#include <linux/fs.h> 23#include <linux/fs.h>
24#include <linux/init.h> 24#include <linux/init.h>
25#include <asm/uaccess.h> 25#include <asm/uaccess.h>
26#include <linux/slab.h>
27#include <linux/list.h> 26#include <linux/list.h>
28#include <linux/vmalloc.h> 27#include <linux/vmalloc.h>
29#include <linux/elf.h> 28#include <linux/elf.h>
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h
index 6c8e8c4246f7..10263b405981 100644
--- a/arch/mips/kernel/signal-common.h
+++ b/arch/mips/kernel/signal-common.h
@@ -26,11 +26,6 @@
26 */ 26 */
27extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, 27extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
28 size_t frame_size); 28 size_t frame_size);
29/*
30 * install trampoline code to get back from the sig handler
31 */
32extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
33
34/* Check and clear pending FPU exceptions in saved CSR */ 29/* Check and clear pending FPU exceptions in saved CSR */
35extern int fpcsr_pending(unsigned int __user *fpcsr); 30extern int fpcsr_pending(unsigned int __user *fpcsr);
36 31
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index d0c68b5d717b..2099d5a4c4b7 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -32,6 +32,7 @@
32#include <asm/ucontext.h> 32#include <asm/ucontext.h>
33#include <asm/cpu-features.h> 33#include <asm/cpu-features.h>
34#include <asm/war.h> 34#include <asm/war.h>
35#include <asm/vdso.h>
35 36
36#include "signal-common.h" 37#include "signal-common.h"
37 38
@@ -44,47 +45,20 @@ extern asmlinkage int _restore_fp_context(struct sigcontext __user *sc);
44extern asmlinkage int fpu_emulator_save_context(struct sigcontext __user *sc); 45extern asmlinkage int fpu_emulator_save_context(struct sigcontext __user *sc);
45extern asmlinkage int fpu_emulator_restore_context(struct sigcontext __user *sc); 46extern asmlinkage int fpu_emulator_restore_context(struct sigcontext __user *sc);
46 47
47/*
48 * Horribly complicated - with the bloody RM9000 workarounds enabled
49 * the signal trampolines is moving to the end of the structure so we can
50 * increase the alignment without breaking software compatibility.
51 */
52#if ICACHE_REFILLS_WORKAROUND_WAR == 0
53
54struct sigframe { 48struct sigframe {
55 u32 sf_ass[4]; /* argument save space for o32 */ 49 u32 sf_ass[4]; /* argument save space for o32 */
56 u32 sf_code[2]; /* signal trampoline */ 50 u32 sf_pad[2]; /* Was: signal trampoline */
57 struct sigcontext sf_sc; 51 struct sigcontext sf_sc;
58 sigset_t sf_mask; 52 sigset_t sf_mask;
59}; 53};
60 54
61struct rt_sigframe { 55struct rt_sigframe {
62 u32 rs_ass[4]; /* argument save space for o32 */ 56 u32 rs_ass[4]; /* argument save space for o32 */
63 u32 rs_code[2]; /* signal trampoline */ 57 u32 rs_pad[2]; /* Was: signal trampoline */
64 struct siginfo rs_info; 58 struct siginfo rs_info;
65 struct ucontext rs_uc; 59 struct ucontext rs_uc;
66}; 60};
67 61
68#else
69
70struct sigframe {
71 u32 sf_ass[4]; /* argument save space for o32 */
72 u32 sf_pad[2];
73 struct sigcontext sf_sc; /* hw context */
74 sigset_t sf_mask;
75 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
76};
77
78struct rt_sigframe {
79 u32 rs_ass[4]; /* argument save space for o32 */
80 u32 rs_pad[2];
81 struct siginfo rs_info;
82 struct ucontext rs_uc;
83 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
84};
85
86#endif
87
88/* 62/*
89 * Helper routines 63 * Helper routines
90 */ 64 */
@@ -266,32 +240,6 @@ void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
266 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK)); 240 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK));
267} 241}
268 242
269int install_sigtramp(unsigned int __user *tramp, unsigned int syscall)
270{
271 int err;
272
273 /*
274 * Set up the return code ...
275 *
276 * li v0, __NR__foo_sigreturn
277 * syscall
278 */
279
280 err = __put_user(0x24020000 + syscall, tramp + 0);
281 err |= __put_user(0x0000000c , tramp + 1);
282 if (ICACHE_REFILLS_WORKAROUND_WAR) {
283 err |= __put_user(0, tramp + 2);
284 err |= __put_user(0, tramp + 3);
285 err |= __put_user(0, tramp + 4);
286 err |= __put_user(0, tramp + 5);
287 err |= __put_user(0, tramp + 6);
288 err |= __put_user(0, tramp + 7);
289 }
290 flush_cache_sigtramp((unsigned long) tramp);
291
292 return err;
293}
294
295/* 243/*
296 * Atomically swap in the new signal mask, and wait for a signal. 244 * Atomically swap in the new signal mask, and wait for a signal.
297 */ 245 */
@@ -484,8 +432,8 @@ badframe:
484} 432}
485 433
486#ifdef CONFIG_TRAD_SIGNALS 434#ifdef CONFIG_TRAD_SIGNALS
487static int setup_frame(struct k_sigaction * ka, struct pt_regs *regs, 435static int setup_frame(void *sig_return, struct k_sigaction *ka,
488 int signr, sigset_t *set) 436 struct pt_regs *regs, int signr, sigset_t *set)
489{ 437{
490 struct sigframe __user *frame; 438 struct sigframe __user *frame;
491 int err = 0; 439 int err = 0;
@@ -494,8 +442,6 @@ static int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
494 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 442 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
495 goto give_sigsegv; 443 goto give_sigsegv;
496 444
497 err |= install_sigtramp(frame->sf_code, __NR_sigreturn);
498
499 err |= setup_sigcontext(regs, &frame->sf_sc); 445 err |= setup_sigcontext(regs, &frame->sf_sc);
500 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); 446 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set));
501 if (err) 447 if (err)
@@ -515,7 +461,7 @@ static int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
515 regs->regs[ 5] = 0; 461 regs->regs[ 5] = 0;
516 regs->regs[ 6] = (unsigned long) &frame->sf_sc; 462 regs->regs[ 6] = (unsigned long) &frame->sf_sc;
517 regs->regs[29] = (unsigned long) frame; 463 regs->regs[29] = (unsigned long) frame;
518 regs->regs[31] = (unsigned long) frame->sf_code; 464 regs->regs[31] = (unsigned long) sig_return;
519 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 465 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
520 466
521 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", 467 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
@@ -529,8 +475,9 @@ give_sigsegv:
529} 475}
530#endif 476#endif
531 477
532static int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, 478static int setup_rt_frame(void *sig_return, struct k_sigaction *ka,
533 int signr, sigset_t *set, siginfo_t *info) 479 struct pt_regs *regs, int signr, sigset_t *set,
480 siginfo_t *info)
534{ 481{
535 struct rt_sigframe __user *frame; 482 struct rt_sigframe __user *frame;
536 int err = 0; 483 int err = 0;
@@ -539,8 +486,6 @@ static int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
539 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 486 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
540 goto give_sigsegv; 487 goto give_sigsegv;
541 488
542 err |= install_sigtramp(frame->rs_code, __NR_rt_sigreturn);
543
544 /* Create siginfo. */ 489 /* Create siginfo. */
545 err |= copy_siginfo_to_user(&frame->rs_info, info); 490 err |= copy_siginfo_to_user(&frame->rs_info, info);
546 491
@@ -573,7 +518,7 @@ static int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
573 regs->regs[ 5] = (unsigned long) &frame->rs_info; 518 regs->regs[ 5] = (unsigned long) &frame->rs_info;
574 regs->regs[ 6] = (unsigned long) &frame->rs_uc; 519 regs->regs[ 6] = (unsigned long) &frame->rs_uc;
575 regs->regs[29] = (unsigned long) frame; 520 regs->regs[29] = (unsigned long) frame;
576 regs->regs[31] = (unsigned long) frame->rs_code; 521 regs->regs[31] = (unsigned long) sig_return;
577 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 522 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
578 523
579 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", 524 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
@@ -590,8 +535,11 @@ give_sigsegv:
590struct mips_abi mips_abi = { 535struct mips_abi mips_abi = {
591#ifdef CONFIG_TRAD_SIGNALS 536#ifdef CONFIG_TRAD_SIGNALS
592 .setup_frame = setup_frame, 537 .setup_frame = setup_frame,
538 .signal_return_offset = offsetof(struct mips_vdso, signal_trampoline),
593#endif 539#endif
594 .setup_rt_frame = setup_rt_frame, 540 .setup_rt_frame = setup_rt_frame,
541 .rt_signal_return_offset =
542 offsetof(struct mips_vdso, rt_signal_trampoline),
595 .restart = __NR_restart_syscall 543 .restart = __NR_restart_syscall
596}; 544};
597 545
@@ -599,6 +547,8 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
599 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) 547 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs)
600{ 548{
601 int ret; 549 int ret;
550 struct mips_abi *abi = current->thread.abi;
551 void *vdso = current->mm->context.vdso;
602 552
603 switch(regs->regs[0]) { 553 switch(regs->regs[0]) {
604 case ERESTART_RESTARTBLOCK: 554 case ERESTART_RESTARTBLOCK:
@@ -619,9 +569,11 @@ static int handle_signal(unsigned long sig, siginfo_t *info,
619 regs->regs[0] = 0; /* Don't deal with this again. */ 569 regs->regs[0] = 0; /* Don't deal with this again. */
620 570
621 if (sig_uses_siginfo(ka)) 571 if (sig_uses_siginfo(ka))
622 ret = current->thread.abi->setup_rt_frame(ka, regs, sig, oldset, info); 572 ret = abi->setup_rt_frame(vdso + abi->rt_signal_return_offset,
573 ka, regs, sig, oldset, info);
623 else 574 else
624 ret = current->thread.abi->setup_frame(ka, regs, sig, oldset); 575 ret = abi->setup_frame(vdso + abi->signal_return_offset,
576 ka, regs, sig, oldset);
625 577
626 spin_lock_irq(&current->sighand->siglock); 578 spin_lock_irq(&current->sighand->siglock);
627 sigorsets(&current->blocked, &current->blocked, &ka->sa.sa_mask); 579 sigorsets(&current->blocked, &current->blocked, &ka->sa.sa_mask);
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index 03abaf048f09..a0ed0e052b2e 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -32,6 +32,7 @@
32#include <asm/system.h> 32#include <asm/system.h>
33#include <asm/fpu.h> 33#include <asm/fpu.h>
34#include <asm/war.h> 34#include <asm/war.h>
35#include <asm/vdso.h>
35 36
36#include "signal-common.h" 37#include "signal-common.h"
37 38
@@ -47,8 +48,6 @@ extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 __user
47/* 48/*
48 * Including <asm/unistd.h> would give use the 64-bit syscall numbers ... 49 * Including <asm/unistd.h> would give use the 64-bit syscall numbers ...
49 */ 50 */
50#define __NR_O32_sigreturn 4119
51#define __NR_O32_rt_sigreturn 4193
52#define __NR_O32_restart_syscall 4253 51#define __NR_O32_restart_syscall 4253
53 52
54/* 32-bit compatibility types */ 53/* 32-bit compatibility types */
@@ -77,47 +76,20 @@ struct ucontext32 {
77 compat_sigset_t uc_sigmask; /* mask last for extensibility */ 76 compat_sigset_t uc_sigmask; /* mask last for extensibility */
78}; 77};
79 78
80/*
81 * Horribly complicated - with the bloody RM9000 workarounds enabled
82 * the signal trampolines is moving to the end of the structure so we can
83 * increase the alignment without breaking software compatibility.
84 */
85#if ICACHE_REFILLS_WORKAROUND_WAR == 0
86
87struct sigframe32 { 79struct sigframe32 {
88 u32 sf_ass[4]; /* argument save space for o32 */ 80 u32 sf_ass[4]; /* argument save space for o32 */
89 u32 sf_code[2]; /* signal trampoline */ 81 u32 sf_pad[2]; /* Was: signal trampoline */
90 struct sigcontext32 sf_sc; 82 struct sigcontext32 sf_sc;
91 compat_sigset_t sf_mask; 83 compat_sigset_t sf_mask;
92}; 84};
93 85
94struct rt_sigframe32 { 86struct rt_sigframe32 {
95 u32 rs_ass[4]; /* argument save space for o32 */ 87 u32 rs_ass[4]; /* argument save space for o32 */
96 u32 rs_code[2]; /* signal trampoline */ 88 u32 rs_pad[2]; /* Was: signal trampoline */
97 compat_siginfo_t rs_info; 89 compat_siginfo_t rs_info;
98 struct ucontext32 rs_uc; 90 struct ucontext32 rs_uc;
99}; 91};
100 92
101#else /* ICACHE_REFILLS_WORKAROUND_WAR */
102
103struct sigframe32 {
104 u32 sf_ass[4]; /* argument save space for o32 */
105 u32 sf_pad[2];
106 struct sigcontext32 sf_sc; /* hw context */
107 compat_sigset_t sf_mask;
108 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
109};
110
111struct rt_sigframe32 {
112 u32 rs_ass[4]; /* argument save space for o32 */
113 u32 rs_pad[2];
114 compat_siginfo_t rs_info;
115 struct ucontext32 rs_uc;
116 u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */
117};
118
119#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
120
121/* 93/*
122 * sigcontext handlers 94 * sigcontext handlers
123 */ 95 */
@@ -598,8 +570,8 @@ badframe:
598 force_sig(SIGSEGV, current); 570 force_sig(SIGSEGV, current);
599} 571}
600 572
601static int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, 573static int setup_frame_32(void *sig_return, struct k_sigaction *ka,
602 int signr, sigset_t *set) 574 struct pt_regs *regs, int signr, sigset_t *set)
603{ 575{
604 struct sigframe32 __user *frame; 576 struct sigframe32 __user *frame;
605 int err = 0; 577 int err = 0;
@@ -608,8 +580,6 @@ static int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
608 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 580 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
609 goto give_sigsegv; 581 goto give_sigsegv;
610 582
611 err |= install_sigtramp(frame->sf_code, __NR_O32_sigreturn);
612
613 err |= setup_sigcontext32(regs, &frame->sf_sc); 583 err |= setup_sigcontext32(regs, &frame->sf_sc);
614 err |= __copy_conv_sigset_to_user(&frame->sf_mask, set); 584 err |= __copy_conv_sigset_to_user(&frame->sf_mask, set);
615 585
@@ -630,7 +600,7 @@ static int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
630 regs->regs[ 5] = 0; 600 regs->regs[ 5] = 0;
631 regs->regs[ 6] = (unsigned long) &frame->sf_sc; 601 regs->regs[ 6] = (unsigned long) &frame->sf_sc;
632 regs->regs[29] = (unsigned long) frame; 602 regs->regs[29] = (unsigned long) frame;
633 regs->regs[31] = (unsigned long) frame->sf_code; 603 regs->regs[31] = (unsigned long) sig_return;
634 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 604 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
635 605
636 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", 606 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
@@ -644,8 +614,9 @@ give_sigsegv:
644 return -EFAULT; 614 return -EFAULT;
645} 615}
646 616
647static int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, 617static int setup_rt_frame_32(void *sig_return, struct k_sigaction *ka,
648 int signr, sigset_t *set, siginfo_t *info) 618 struct pt_regs *regs, int signr, sigset_t *set,
619 siginfo_t *info)
649{ 620{
650 struct rt_sigframe32 __user *frame; 621 struct rt_sigframe32 __user *frame;
651 int err = 0; 622 int err = 0;
@@ -655,8 +626,6 @@ static int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
655 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 626 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
656 goto give_sigsegv; 627 goto give_sigsegv;
657 628
658 err |= install_sigtramp(frame->rs_code, __NR_O32_rt_sigreturn);
659
660 /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */ 629 /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */
661 err |= copy_siginfo_to_user32(&frame->rs_info, info); 630 err |= copy_siginfo_to_user32(&frame->rs_info, info);
662 631
@@ -690,7 +659,7 @@ static int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
690 regs->regs[ 5] = (unsigned long) &frame->rs_info; 659 regs->regs[ 5] = (unsigned long) &frame->rs_info;
691 regs->regs[ 6] = (unsigned long) &frame->rs_uc; 660 regs->regs[ 6] = (unsigned long) &frame->rs_uc;
692 regs->regs[29] = (unsigned long) frame; 661 regs->regs[29] = (unsigned long) frame;
693 regs->regs[31] = (unsigned long) frame->rs_code; 662 regs->regs[31] = (unsigned long) sig_return;
694 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 663 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
695 664
696 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", 665 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
@@ -709,7 +678,11 @@ give_sigsegv:
709 */ 678 */
710struct mips_abi mips_abi_32 = { 679struct mips_abi mips_abi_32 = {
711 .setup_frame = setup_frame_32, 680 .setup_frame = setup_frame_32,
681 .signal_return_offset =
682 offsetof(struct mips_vdso, o32_signal_trampoline),
712 .setup_rt_frame = setup_rt_frame_32, 683 .setup_rt_frame = setup_rt_frame_32,
684 .rt_signal_return_offset =
685 offsetof(struct mips_vdso, o32_rt_signal_trampoline),
713 .restart = __NR_O32_restart_syscall 686 .restart = __NR_O32_restart_syscall
714}; 687};
715 688
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
index bb277e82d421..2c5df818c65a 100644
--- a/arch/mips/kernel/signal_n32.c
+++ b/arch/mips/kernel/signal_n32.c
@@ -39,13 +39,13 @@
39#include <asm/fpu.h> 39#include <asm/fpu.h>
40#include <asm/cpu-features.h> 40#include <asm/cpu-features.h>
41#include <asm/war.h> 41#include <asm/war.h>
42#include <asm/vdso.h>
42 43
43#include "signal-common.h" 44#include "signal-common.h"
44 45
45/* 46/*
46 * Including <asm/unistd.h> would give use the 64-bit syscall numbers ... 47 * Including <asm/unistd.h> would give use the 64-bit syscall numbers ...
47 */ 48 */
48#define __NR_N32_rt_sigreturn 6211
49#define __NR_N32_restart_syscall 6214 49#define __NR_N32_restart_syscall 6214
50 50
51extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *); 51extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
@@ -67,27 +67,13 @@ struct ucontextn32 {
67 compat_sigset_t uc_sigmask; /* mask last for extensibility */ 67 compat_sigset_t uc_sigmask; /* mask last for extensibility */
68}; 68};
69 69
70#if ICACHE_REFILLS_WORKAROUND_WAR == 0
71
72struct rt_sigframe_n32 {
73 u32 rs_ass[4]; /* argument save space for o32 */
74 u32 rs_code[2]; /* signal trampoline */
75 struct compat_siginfo rs_info;
76 struct ucontextn32 rs_uc;
77};
78
79#else /* ICACHE_REFILLS_WORKAROUND_WAR */
80
81struct rt_sigframe_n32 { 70struct rt_sigframe_n32 {
82 u32 rs_ass[4]; /* argument save space for o32 */ 71 u32 rs_ass[4]; /* argument save space for o32 */
83 u32 rs_pad[2]; 72 u32 rs_pad[2]; /* Was: signal trampoline */
84 struct compat_siginfo rs_info; 73 struct compat_siginfo rs_info;
85 struct ucontextn32 rs_uc; 74 struct ucontextn32 rs_uc;
86 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
87}; 75};
88 76
89#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
90
91extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat); 77extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
92 78
93asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) 79asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
@@ -173,7 +159,7 @@ badframe:
173 force_sig(SIGSEGV, current); 159 force_sig(SIGSEGV, current);
174} 160}
175 161
176static int setup_rt_frame_n32(struct k_sigaction * ka, 162static int setup_rt_frame_n32(void *sig_return, struct k_sigaction *ka,
177 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info) 163 struct pt_regs *regs, int signr, sigset_t *set, siginfo_t *info)
178{ 164{
179 struct rt_sigframe_n32 __user *frame; 165 struct rt_sigframe_n32 __user *frame;
@@ -184,8 +170,6 @@ static int setup_rt_frame_n32(struct k_sigaction * ka,
184 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 170 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
185 goto give_sigsegv; 171 goto give_sigsegv;
186 172
187 install_sigtramp(frame->rs_code, __NR_N32_rt_sigreturn);
188
189 /* Create siginfo. */ 173 /* Create siginfo. */
190 err |= copy_siginfo_to_user32(&frame->rs_info, info); 174 err |= copy_siginfo_to_user32(&frame->rs_info, info);
191 175
@@ -219,7 +203,7 @@ static int setup_rt_frame_n32(struct k_sigaction * ka,
219 regs->regs[ 5] = (unsigned long) &frame->rs_info; 203 regs->regs[ 5] = (unsigned long) &frame->rs_info;
220 regs->regs[ 6] = (unsigned long) &frame->rs_uc; 204 regs->regs[ 6] = (unsigned long) &frame->rs_uc;
221 regs->regs[29] = (unsigned long) frame; 205 regs->regs[29] = (unsigned long) frame;
222 regs->regs[31] = (unsigned long) frame->rs_code; 206 regs->regs[31] = (unsigned long) sig_return;
223 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 207 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
224 208
225 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n", 209 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
@@ -235,5 +219,7 @@ give_sigsegv:
235 219
236struct mips_abi mips_abi_n32 = { 220struct mips_abi mips_abi_n32 = {
237 .setup_rt_frame = setup_rt_frame_n32, 221 .setup_rt_frame = setup_rt_frame_n32,
222 .rt_signal_return_offset =
223 offsetof(struct mips_vdso, n32_rt_signal_trampoline),
238 .restart = __NR_N32_restart_syscall 224 .restart = __NR_N32_restart_syscall
239}; 225};
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 23499b5bd9c3..a95dea5459c4 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -26,6 +26,7 @@
26#include <linux/kernel_stat.h> 26#include <linux/kernel_stat.h>
27#include <linux/module.h> 27#include <linux/module.h>
28#include <linux/ftrace.h> 28#include <linux/ftrace.h>
29#include <linux/slab.h>
29 30
30#include <asm/cpu.h> 31#include <asm/cpu.h>
31#include <asm/processor.h> 32#include <asm/processor.h>
@@ -181,7 +182,7 @@ static int vpemask[2][8] = {
181 {0, 0, 0, 0, 0, 0, 0, 1} 182 {0, 0, 0, 0, 0, 0, 0, 1}
182}; 183};
183int tcnoprog[NR_CPUS]; 184int tcnoprog[NR_CPUS];
184static atomic_t idle_hook_initialized = {0}; 185static atomic_t idle_hook_initialized = ATOMIC_INIT(0);
185static int clock_hang_reported[NR_CPUS]; 186static int clock_hang_reported[NR_CPUS];
186 187
187#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */ 188#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index e96b1c30c7aa..dd81b0f87518 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -19,7 +19,6 @@
19#include <linux/string.h> 19#include <linux/string.h>
20#include <linux/syscalls.h> 20#include <linux/syscalls.h>
21#include <linux/file.h> 21#include <linux/file.h>
22#include <linux/slab.h>
23#include <linux/utsname.h> 22#include <linux/utsname.h>
24#include <linux/unistd.h> 23#include <linux/unistd.h>
25#include <linux/sem.h> 24#include <linux/sem.h>
@@ -29,6 +28,7 @@
29#include <linux/module.h> 28#include <linux/module.h>
30#include <linux/ipc.h> 29#include <linux/ipc.h>
31#include <linux/uaccess.h> 30#include <linux/uaccess.h>
31#include <linux/slab.h>
32 32
33#include <asm/asm.h> 33#include <asm/asm.h>
34#include <asm/branch.h> 34#include <asm/branch.h>
@@ -79,7 +79,11 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
79 int do_color_align; 79 int do_color_align;
80 unsigned long task_size; 80 unsigned long task_size;
81 81
82 task_size = STACK_TOP; 82#ifdef CONFIG_32BIT
83 task_size = TASK_SIZE;
84#else /* Must be CONFIG_64BIT*/
85 task_size = test_thread_flag(TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE;
86#endif
83 87
84 if (len > task_size) 88 if (len > task_size)
85 return -ENOMEM; 89 return -ENOMEM;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 4e00f9bc23ee..1a4dd657ccb9 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1599,7 +1599,7 @@ void __init trap_init(void)
1599 ebase = (unsigned long) 1599 ebase = (unsigned long)
1600 __alloc_bootmem(size, 1 << fls(size), 0); 1600 __alloc_bootmem(size, 1 << fls(size), 0);
1601 } else { 1601 } else {
1602 ebase = CAC_BASE; 1602 ebase = CKSEG0;
1603 if (cpu_has_mips_r2) 1603 if (cpu_has_mips_r2)
1604 ebase += (read_c0_ebase() & 0x3ffff000); 1604 ebase += (read_c0_ebase() & 0x3ffff000);
1605 } 1605 }
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
new file mode 100644
index 000000000000..b773c1112b14
--- /dev/null
+++ b/arch/mips/kernel/vdso.c
@@ -0,0 +1,112 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2009, 2010 Cavium Networks, Inc.
7 */
8
9
10#include <linux/kernel.h>
11#include <linux/err.h>
12#include <linux/sched.h>
13#include <linux/mm.h>
14#include <linux/init.h>
15#include <linux/binfmts.h>
16#include <linux/elf.h>
17#include <linux/vmalloc.h>
18#include <linux/unistd.h>
19
20#include <asm/vdso.h>
21#include <asm/uasm.h>
22
23/*
24 * Including <asm/unistd.h> would give use the 64-bit syscall numbers ...
25 */
26#define __NR_O32_sigreturn 4119
27#define __NR_O32_rt_sigreturn 4193
28#define __NR_N32_rt_sigreturn 6211
29
30static struct page *vdso_page;
31
32static void __init install_trampoline(u32 *tramp, unsigned int sigreturn)
33{
34 uasm_i_addiu(&tramp, 2, 0, sigreturn); /* li v0, sigreturn */
35 uasm_i_syscall(&tramp, 0);
36}
37
38static int __init init_vdso(void)
39{
40 struct mips_vdso *vdso;
41
42 vdso_page = alloc_page(GFP_KERNEL);
43 if (!vdso_page)
44 panic("Cannot allocate vdso");
45
46 vdso = vmap(&vdso_page, 1, 0, PAGE_KERNEL);
47 if (!vdso)
48 panic("Cannot map vdso");
49 clear_page(vdso);
50
51 install_trampoline(vdso->rt_signal_trampoline, __NR_rt_sigreturn);
52#ifdef CONFIG_32BIT
53 install_trampoline(vdso->signal_trampoline, __NR_sigreturn);
54#else
55 install_trampoline(vdso->n32_rt_signal_trampoline,
56 __NR_N32_rt_sigreturn);
57 install_trampoline(vdso->o32_signal_trampoline, __NR_O32_sigreturn);
58 install_trampoline(vdso->o32_rt_signal_trampoline,
59 __NR_O32_rt_sigreturn);
60#endif
61
62 vunmap(vdso);
63
64 pr_notice("init_vdso successfull\n");
65
66 return 0;
67}
68device_initcall(init_vdso);
69
70static unsigned long vdso_addr(unsigned long start)
71{
72 return STACK_TOP;
73}
74
75int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
76{
77 int ret;
78 unsigned long addr;
79 struct mm_struct *mm = current->mm;
80
81 down_write(&mm->mmap_sem);
82
83 addr = vdso_addr(mm->start_stack);
84
85 addr = get_unmapped_area(NULL, addr, PAGE_SIZE, 0, 0);
86 if (IS_ERR_VALUE(addr)) {
87 ret = addr;
88 goto up_fail;
89 }
90
91 ret = install_special_mapping(mm, addr, PAGE_SIZE,
92 VM_READ|VM_EXEC|
93 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
94 VM_ALWAYSDUMP,
95 &vdso_page);
96
97 if (ret)
98 goto up_fail;
99
100 mm->context.vdso = (void *)addr;
101
102up_fail:
103 up_write(&mm->mmap_sem);
104 return ret;
105}
106
107const char *arch_vma_name(struct vm_area_struct *vma)
108{
109 if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
110 return "[vdso]";
111 return NULL;
112}
diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c
index 6b3b1de9dcae..5995969e8c42 100644
--- a/arch/mips/lib/delay.c
+++ b/arch/mips/lib/delay.c
@@ -41,7 +41,7 @@ EXPORT_SYMBOL(__delay);
41 41
42void __udelay(unsigned long us) 42void __udelay(unsigned long us)
43{ 43{
44 unsigned int lpj = current_cpu_data.udelay_val; 44 unsigned int lpj = raw_current_cpu_data.udelay_val;
45 45
46 __delay((us * 0x000010c7ull * HZ * lpj) >> 32); 46 __delay((us * 0x000010c7ull * HZ * lpj) >> 32);
47} 47}
@@ -49,7 +49,7 @@ EXPORT_SYMBOL(__udelay);
49 49
50void __ndelay(unsigned long ns) 50void __ndelay(unsigned long ns)
51{ 51{
52 unsigned int lpj = current_cpu_data.udelay_val; 52 unsigned int lpj = raw_current_cpu_data.udelay_val;
53 53
54 __delay((ns * 0x00000005ull * HZ * lpj) >> 32); 54 __delay((ns * 0x00000005ull * HZ * lpj) >> 32);
55} 55}
diff --git a/arch/mips/lib/libgcc.h b/arch/mips/lib/libgcc.h
index 3f19d1c5d942..05909d58e2fe 100644
--- a/arch/mips/lib/libgcc.h
+++ b/arch/mips/lib/libgcc.h
@@ -17,8 +17,7 @@ struct DWstruct {
17#error I feel sick. 17#error I feel sick.
18#endif 18#endif
19 19
20typedef union 20typedef union {
21{
22 struct DWstruct s; 21 struct DWstruct s;
23 long long ll; 22 long long ll;
24} DWunion; 23} DWunion;
diff --git a/arch/mips/mipssim/sim_int.c b/arch/mips/mipssim/sim_int.c
index 46067ad542dc..5c779be6f082 100644
--- a/arch/mips/mipssim/sim_int.c
+++ b/arch/mips/mipssim/sim_int.c
@@ -17,7 +17,6 @@
17 */ 17 */
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/slab.h>
21#include <linux/interrupt.h> 20#include <linux/interrupt.h>
22#include <linux/kernel_stat.h> 21#include <linux/kernel_stat.h>
23#include <asm/mips-boards/simint.h> 22#include <asm/mips-boards/simint.h>
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index be8627bc5b02..12af739048fa 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -133,7 +133,7 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
133} 133}
134 134
135unsigned long _page_cachable_default; 135unsigned long _page_cachable_default;
136EXPORT_SYMBOL_GPL(_page_cachable_default); 136EXPORT_SYMBOL(_page_cachable_default);
137 137
138static inline void setup_protection_map(void) 138static inline void setup_protection_map(void)
139{ 139{
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 9367e33fbd18..9547bc0cf188 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -14,6 +14,7 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/scatterlist.h> 15#include <linux/scatterlist.h>
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/gfp.h>
17 18
18#include <asm/cache.h> 19#include <asm/cache.h>
19#include <asm/io.h> 20#include <asm/io.h>
diff --git a/arch/mips/mm/hugetlbpage.c b/arch/mips/mm/hugetlbpage.c
index cd0660c51f28..a7fee0dfb7a9 100644
--- a/arch/mips/mm/hugetlbpage.c
+++ b/arch/mips/mm/hugetlbpage.c
@@ -16,7 +16,6 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/hugetlb.h> 17#include <linux/hugetlb.h>
18#include <linux/pagemap.h> 18#include <linux/pagemap.h>
19#include <linux/slab.h>
20#include <linux/err.h> 19#include <linux/err.h>
21#include <linux/sysctl.h> 20#include <linux/sysctl.h>
22#include <asm/mman.h> 21#include <asm/mman.h>
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 12539af38a99..2efcbd24c82f 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -28,6 +28,7 @@
28#include <linux/proc_fs.h> 28#include <linux/proc_fs.h>
29#include <linux/pfn.h> 29#include <linux/pfn.h>
30#include <linux/hardirq.h> 30#include <linux/hardirq.h>
31#include <linux/gfp.h>
31 32
32#include <asm/asm-offsets.h> 33#include <asm/asm-offsets.h>
33#include <asm/bootinfo.h> 34#include <asm/bootinfo.h>
diff --git a/arch/mips/mm/ioremap.c b/arch/mips/mm/ioremap.c
index 0c43248347bd..cacfd31e8ec9 100644
--- a/arch/mips/mm/ioremap.c
+++ b/arch/mips/mm/ioremap.c
@@ -10,6 +10,7 @@
10#include <asm/addrspace.h> 10#include <asm/addrspace.h>
11#include <asm/byteorder.h> 11#include <asm/byteorder.h>
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/slab.h>
13#include <linux/vmalloc.h> 14#include <linux/vmalloc.h>
14#include <asm/cacheflush.h> 15#include <asm/cacheflush.h>
15#include <asm/io.h> 16#include <asm/io.h>
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 0de0e4127d66..d1f68aadbc4c 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -788,10 +788,15 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
788 * create the plain linear handler 788 * create the plain linear handler
789 */ 789 */
790 if (bcm1250_m3_war()) { 790 if (bcm1250_m3_war()) {
791 UASM_i_MFC0(&p, K0, C0_BADVADDR); 791 unsigned int segbits = 44;
792 UASM_i_MFC0(&p, K1, C0_ENTRYHI); 792
793 uasm_i_dmfc0(&p, K0, C0_BADVADDR);
794 uasm_i_dmfc0(&p, K1, C0_ENTRYHI);
793 uasm_i_xor(&p, K0, K0, K1); 795 uasm_i_xor(&p, K0, K0, K1);
794 UASM_i_SRL(&p, K0, K0, PAGE_SHIFT + 1); 796 uasm_i_dsrl32(&p, K1, K0, 62 - 32);
797 uasm_i_dsrl(&p, K0, K0, 12 + 1);
798 uasm_i_dsll32(&p, K0, K0, 64 + 12 + 1 - segbits - 32);
799 uasm_i_or(&p, K0, K0, K1);
795 uasm_il_bnez(&p, &r, K0, label_leave); 800 uasm_il_bnez(&p, &r, K0, label_leave);
796 /* No need for uasm_i_nop */ 801 /* No need for uasm_i_nop */
797 } 802 }
@@ -1312,10 +1317,15 @@ static void __cpuinit build_r4000_tlb_load_handler(void)
1312 memset(relocs, 0, sizeof(relocs)); 1317 memset(relocs, 0, sizeof(relocs));
1313 1318
1314 if (bcm1250_m3_war()) { 1319 if (bcm1250_m3_war()) {
1315 UASM_i_MFC0(&p, K0, C0_BADVADDR); 1320 unsigned int segbits = 44;
1316 UASM_i_MFC0(&p, K1, C0_ENTRYHI); 1321
1322 uasm_i_dmfc0(&p, K0, C0_BADVADDR);
1323 uasm_i_dmfc0(&p, K1, C0_ENTRYHI);
1317 uasm_i_xor(&p, K0, K0, K1); 1324 uasm_i_xor(&p, K0, K0, K1);
1318 UASM_i_SRL(&p, K0, K0, PAGE_SHIFT + 1); 1325 uasm_i_dsrl32(&p, K1, K0, 62 - 32);
1326 uasm_i_dsrl(&p, K0, K0, 12 + 1);
1327 uasm_i_dsll32(&p, K0, K0, 64 + 12 + 1 - segbits - 32);
1328 uasm_i_or(&p, K0, K0, K1);
1319 uasm_il_bnez(&p, &r, K0, label_leave); 1329 uasm_il_bnez(&p, &r, K0, label_leave);
1320 /* No need for uasm_i_nop */ 1330 /* No need for uasm_i_nop */
1321 } 1331 }
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c
index 1581e9852461..611d564fdcf1 100644
--- a/arch/mips/mm/uasm.c
+++ b/arch/mips/mm/uasm.c
@@ -31,7 +31,8 @@ enum fields {
31 BIMM = 0x040, 31 BIMM = 0x040,
32 JIMM = 0x080, 32 JIMM = 0x080,
33 FUNC = 0x100, 33 FUNC = 0x100,
34 SET = 0x200 34 SET = 0x200,
35 SCIMM = 0x400
35}; 36};
36 37
37#define OP_MASK 0x3f 38#define OP_MASK 0x3f
@@ -52,6 +53,8 @@ enum fields {
52#define FUNC_SH 0 53#define FUNC_SH 0
53#define SET_MASK 0x7 54#define SET_MASK 0x7
54#define SET_SH 0 55#define SET_SH 0
56#define SCIMM_MASK 0xfffff
57#define SCIMM_SH 6
55 58
56enum opcode { 59enum opcode {
57 insn_invalid, 60 insn_invalid,
@@ -61,10 +64,10 @@ enum opcode {
61 insn_dmtc0, insn_dsll, insn_dsll32, insn_dsra, insn_dsrl, 64 insn_dmtc0, insn_dsll, insn_dsll32, insn_dsra, insn_dsrl,
62 insn_dsrl32, insn_drotr, insn_dsubu, insn_eret, insn_j, insn_jal, 65 insn_dsrl32, insn_drotr, insn_dsubu, insn_eret, insn_j, insn_jal,
63 insn_jr, insn_ld, insn_ll, insn_lld, insn_lui, insn_lw, insn_mfc0, 66 insn_jr, insn_ld, insn_ll, insn_lld, insn_lui, insn_lw, insn_mfc0,
64 insn_mtc0, insn_ori, insn_pref, insn_rfe, insn_sc, insn_scd, 67 insn_mtc0, insn_or, insn_ori, insn_pref, insn_rfe, insn_sc, insn_scd,
65 insn_sd, insn_sll, insn_sra, insn_srl, insn_rotr, insn_subu, insn_sw, 68 insn_sd, insn_sll, insn_sra, insn_srl, insn_rotr, insn_subu, insn_sw,
66 insn_tlbp, insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, insn_xori, 69 insn_tlbp, insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, insn_xori,
67 insn_dins 70 insn_dins, insn_syscall
68}; 71};
69 72
70struct insn { 73struct insn {
@@ -117,6 +120,7 @@ static struct insn insn_table[] __cpuinitdata = {
117 { insn_lw, M(lw_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, 120 { insn_lw, M(lw_op, 0, 0, 0, 0, 0), RS | RT | SIMM },
118 { insn_mfc0, M(cop0_op, mfc_op, 0, 0, 0, 0), RT | RD | SET}, 121 { insn_mfc0, M(cop0_op, mfc_op, 0, 0, 0, 0), RT | RD | SET},
119 { insn_mtc0, M(cop0_op, mtc_op, 0, 0, 0, 0), RT | RD | SET}, 122 { insn_mtc0, M(cop0_op, mtc_op, 0, 0, 0, 0), RT | RD | SET},
123 { insn_or, M(spec_op, 0, 0, 0, 0, or_op), RS | RT | RD },
120 { insn_ori, M(ori_op, 0, 0, 0, 0, 0), RS | RT | UIMM }, 124 { insn_ori, M(ori_op, 0, 0, 0, 0, 0), RS | RT | UIMM },
121 { insn_pref, M(pref_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, 125 { insn_pref, M(pref_op, 0, 0, 0, 0, 0), RS | RT | SIMM },
122 { insn_rfe, M(cop0_op, cop_op, 0, 0, 0, rfe_op), 0 }, 126 { insn_rfe, M(cop0_op, cop_op, 0, 0, 0, rfe_op), 0 },
@@ -136,6 +140,7 @@ static struct insn insn_table[] __cpuinitdata = {
136 { insn_xor, M(spec_op, 0, 0, 0, 0, xor_op), RS | RT | RD }, 140 { insn_xor, M(spec_op, 0, 0, 0, 0, xor_op), RS | RT | RD },
137 { insn_xori, M(xori_op, 0, 0, 0, 0, 0), RS | RT | UIMM }, 141 { insn_xori, M(xori_op, 0, 0, 0, 0, 0), RS | RT | UIMM },
138 { insn_dins, M(spec3_op, 0, 0, 0, 0, dins_op), RS | RT | RD | RE }, 142 { insn_dins, M(spec3_op, 0, 0, 0, 0, dins_op), RS | RT | RD | RE },
143 { insn_syscall, M(spec_op, 0, 0, 0, 0, syscall_op), SCIMM},
139 { insn_invalid, 0, 0 } 144 { insn_invalid, 0, 0 }
140}; 145};
141 146
@@ -208,6 +213,14 @@ static inline __cpuinit u32 build_jimm(u32 arg)
208 return (arg >> 2) & JIMM_MASK; 213 return (arg >> 2) & JIMM_MASK;
209} 214}
210 215
216static inline __cpuinit u32 build_scimm(u32 arg)
217{
218 if (arg & ~SCIMM_MASK)
219 printk(KERN_WARNING "Micro-assembler field overflow\n");
220
221 return (arg & SCIMM_MASK) << SCIMM_SH;
222}
223
211static inline __cpuinit u32 build_func(u32 arg) 224static inline __cpuinit u32 build_func(u32 arg)
212{ 225{
213 if (arg & ~FUNC_MASK) 226 if (arg & ~FUNC_MASK)
@@ -266,6 +279,8 @@ static void __cpuinit build_insn(u32 **buf, enum opcode opc, ...)
266 op |= build_func(va_arg(ap, u32)); 279 op |= build_func(va_arg(ap, u32));
267 if (ip->fields & SET) 280 if (ip->fields & SET)
268 op |= build_set(va_arg(ap, u32)); 281 op |= build_set(va_arg(ap, u32));
282 if (ip->fields & SCIMM)
283 op |= build_scimm(va_arg(ap, u32));
269 va_end(ap); 284 va_end(ap);
270 285
271 **buf = op; 286 **buf = op;
@@ -373,6 +388,7 @@ I_u2s3u1(_lw)
373I_u1u2u3(_mfc0) 388I_u1u2u3(_mfc0)
374I_u1u2u3(_mtc0) 389I_u1u2u3(_mtc0)
375I_u2u1u3(_ori) 390I_u2u1u3(_ori)
391I_u3u1u2(_or)
376I_u2s3u1(_pref) 392I_u2s3u1(_pref)
377I_0(_rfe) 393I_0(_rfe)
378I_u2s3u1(_sc) 394I_u2s3u1(_sc)
@@ -391,6 +407,7 @@ I_0(_tlbwr)
391I_u3u1u2(_xor) 407I_u3u1u2(_xor)
392I_u2u1u3(_xori) 408I_u2u1u3(_xori)
393I_u2u1msbu3(_dins); 409I_u2u1msbu3(_dins);
410I_u1(_syscall);
394 411
395/* Handle labels. */ 412/* Handle labels. */
396void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid) 413void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid)
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c
index 2cb5ae790203..15949b0be811 100644
--- a/arch/mips/mti-malta/malta-int.c
+++ b/arch/mips/mti-malta/malta-int.c
@@ -25,7 +25,6 @@
25#include <linux/irq.h> 25#include <linux/irq.h>
26#include <linux/sched.h> 26#include <linux/sched.h>
27#include <linux/smp.h> 27#include <linux/smp.h>
28#include <linux/slab.h>
29#include <linux/interrupt.h> 28#include <linux/interrupt.h>
30#include <linux/io.h> 29#include <linux/io.h>
31#include <linux/kernel_stat.h> 30#include <linux/kernel_stat.h>
diff --git a/arch/mips/nxp/pnx833x/common/reset.c b/arch/mips/nxp/pnx833x/common/reset.c
index a9bc9bacad2b..e0ea96d29fde 100644
--- a/arch/mips/nxp/pnx833x/common/reset.c
+++ b/arch/mips/nxp/pnx833x/common/reset.c
@@ -22,7 +22,6 @@
22 * along with this program; if not, write to the Free Software 22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 */ 24 */
25#include <linux/slab.h>
26#include <linux/reboot.h> 25#include <linux/reboot.h>
27#include <pnx833x.h> 26#include <pnx833x.h>
28 27
diff --git a/arch/mips/nxp/pnx8550/common/int.c b/arch/mips/nxp/pnx8550/common/int.c
index 7aca7d5375e5..cfed5051dc6d 100644
--- a/arch/mips/nxp/pnx8550/common/int.c
+++ b/arch/mips/nxp/pnx8550/common/int.c
@@ -27,7 +27,6 @@
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/irq.h> 28#include <linux/irq.h>
29#include <linux/sched.h> 29#include <linux/sched.h>
30#include <linux/slab.h>
31#include <linux/interrupt.h> 30#include <linux/interrupt.h>
32#include <linux/kernel_stat.h> 31#include <linux/kernel_stat.h>
33#include <linux/random.h> 32#include <linux/random.h>
diff --git a/arch/mips/nxp/pnx8550/common/proc.c b/arch/mips/nxp/pnx8550/common/proc.c
index af094cd1d85b..3bba5ec828e8 100644
--- a/arch/mips/nxp/pnx8550/common/proc.c
+++ b/arch/mips/nxp/pnx8550/common/proc.c
@@ -16,7 +16,6 @@
16#include <linux/proc_fs.h> 16#include <linux/proc_fs.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/slab.h>
20#include <linux/interrupt.h> 19#include <linux/interrupt.h>
21#include <linux/kernel_stat.h> 20#include <linux/kernel_stat.h>
22#include <linux/random.h> 21#include <linux/random.h>
diff --git a/arch/mips/nxp/pnx8550/common/reset.c b/arch/mips/nxp/pnx8550/common/reset.c
index 7b2cbc5b2c7c..76bc3ec634ee 100644
--- a/arch/mips/nxp/pnx8550/common/reset.c
+++ b/arch/mips/nxp/pnx8550/common/reset.c
@@ -20,7 +20,6 @@
20 * Reset the PNX8550 board. 20 * Reset the PNX8550 board.
21 * 21 *
22 */ 22 */
23#include <linux/slab.h>
24#include <asm/reboot.h> 23#include <asm/reboot.h>
25#include <glb.h> 24#include <glb.h>
26 25
diff --git a/arch/mips/pci/ops-loongson2.c b/arch/mips/pci/ops-loongson2.c
index 2bb4057bf6c7..d657ee0bc131 100644
--- a/arch/mips/pci/ops-loongson2.c
+++ b/arch/mips/pci/ops-loongson2.c
@@ -180,15 +180,21 @@ struct pci_ops loongson_pci_ops = {
180}; 180};
181 181
182#ifdef CONFIG_CS5536 182#ifdef CONFIG_CS5536
183DEFINE_RAW_SPINLOCK(msr_lock);
184
183void _rdmsr(u32 msr, u32 *hi, u32 *lo) 185void _rdmsr(u32 msr, u32 *hi, u32 *lo)
184{ 186{
185 struct pci_bus bus = { 187 struct pci_bus bus = {
186 .number = PCI_BUS_CS5536 188 .number = PCI_BUS_CS5536
187 }; 189 };
188 u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0); 190 u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0);
191 unsigned long flags;
192
193 raw_spin_lock_irqsave(&msr_lock, flags);
189 loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr); 194 loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr);
190 loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_LO, 4, lo); 195 loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_LO, 4, lo);
191 loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_HI, 4, hi); 196 loongson_pcibios_read(&bus, devfn, PCI_MSR_DATA_HI, 4, hi);
197 raw_spin_unlock_irqrestore(&msr_lock, flags);
192} 198}
193EXPORT_SYMBOL(_rdmsr); 199EXPORT_SYMBOL(_rdmsr);
194 200
@@ -198,9 +204,13 @@ void _wrmsr(u32 msr, u32 hi, u32 lo)
198 .number = PCI_BUS_CS5536 204 .number = PCI_BUS_CS5536
199 }; 205 };
200 u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0); 206 u32 devfn = PCI_DEVFN(PCI_IDSEL_CS5536, 0);
207 unsigned long flags;
208
209 raw_spin_lock_irqsave(&msr_lock, flags);
201 loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr); 210 loongson_pcibios_write(&bus, devfn, PCI_MSR_ADDR, 4, msr);
202 loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_LO, 4, lo); 211 loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_LO, 4, lo);
203 loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_HI, 4, hi); 212 loongson_pcibios_write(&bus, devfn, PCI_MSR_DATA_HI, 4, hi);
213 raw_spin_unlock_irqrestore(&msr_lock, flags);
204} 214}
205EXPORT_SYMBOL(_wrmsr); 215EXPORT_SYMBOL(_wrmsr);
206#endif 216#endif
diff --git a/arch/mips/pci/ops-titan-ht.c b/arch/mips/pci/ops-titan-ht.c
index 46c636c27e06..749c1922d420 100644
--- a/arch/mips/pci/ops-titan-ht.c
+++ b/arch/mips/pci/ops-titan-ht.c
@@ -26,7 +26,6 @@
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/pci.h> 27#include <linux/pci.h>
28#include <linux/kernel.h> 28#include <linux/kernel.h>
29#include <linux/slab.h>
30#include <linux/delay.h> 29#include <linux/delay.h>
31#include <asm/io.h> 30#include <asm/io.h>
32 31
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_prom.c b/arch/mips/pmc-sierra/msp71xx/msp_prom.c
index db98d87a0922..db00deb59b9c 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_prom.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_prom.c
@@ -40,6 +40,7 @@
40#include <linux/string.h> 40#include <linux/string.h>
41#include <linux/interrupt.h> 41#include <linux/interrupt.h>
42#include <linux/mm.h> 42#include <linux/mm.h>
43#include <linux/slab.h>
43 44
44#include <asm/addrspace.h> 45#include <asm/addrspace.h>
45#include <asm/bootinfo.h> 46#include <asm/bootinfo.h>
diff --git a/arch/mips/pmc-sierra/yosemite/ht.c b/arch/mips/pmc-sierra/yosemite/ht.c
index fd22597edb64..63be40e470db 100644
--- a/arch/mips/pmc-sierra/yosemite/ht.c
+++ b/arch/mips/pmc-sierra/yosemite/ht.c
@@ -26,7 +26,6 @@
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/pci.h> 27#include <linux/pci.h>
28#include <linux/kernel.h> 28#include <linux/kernel.h>
29#include <linux/slab.h>
30#include <asm/pci.h> 29#include <asm/pci.h>
31#include <asm/io.h> 30#include <asm/io.h>
32 31
diff --git a/arch/mips/pmc-sierra/yosemite/irq.c b/arch/mips/pmc-sierra/yosemite/irq.c
index 5f673eba142c..51021cfd04bc 100644
--- a/arch/mips/pmc-sierra/yosemite/irq.c
+++ b/arch/mips/pmc-sierra/yosemite/irq.c
@@ -37,7 +37,6 @@
37#include <linux/ioport.h> 37#include <linux/ioport.h>
38#include <linux/irq.h> 38#include <linux/irq.h>
39#include <linux/timex.h> 39#include <linux/timex.h>
40#include <linux/slab.h>
41#include <linux/random.h> 40#include <linux/random.h>
42#include <linux/bitops.h> 41#include <linux/bitops.h>
43#include <asm/bootinfo.h> 42#include <asm/bootinfo.h>
diff --git a/arch/mips/powertv/asic/asic_devices.c b/arch/mips/powertv/asic/asic_devices.c
index 217424231eb6..8ee77887306a 100644
--- a/arch/mips/powertv/asic/asic_devices.c
+++ b/arch/mips/powertv/asic/asic_devices.c
@@ -39,6 +39,7 @@
39#include <linux/mm.h> 39#include <linux/mm.h>
40#include <linux/platform_device.h> 40#include <linux/platform_device.h>
41#include <linux/module.h> 41#include <linux/module.h>
42#include <linux/gfp.h>
42#include <asm/page.h> 43#include <asm/page.h>
43#include <linux/swap.h> 44#include <linux/swap.h>
44#include <linux/highmem.h> 45#include <linux/highmem.h>
diff --git a/arch/mips/powertv/asic/asic_int.c b/arch/mips/powertv/asic/asic_int.c
index 325fab9685d1..529c44a52d64 100644
--- a/arch/mips/powertv/asic/asic_int.c
+++ b/arch/mips/powertv/asic/asic_int.c
@@ -26,7 +26,6 @@
26#include <linux/init.h> 26#include <linux/init.h>
27#include <linux/irq.h> 27#include <linux/irq.h>
28#include <linux/sched.h> 28#include <linux/sched.h>
29#include <linux/slab.h>
30#include <linux/interrupt.h> 29#include <linux/interrupt.h>
31#include <linux/kernel_stat.h> 30#include <linux/kernel_stat.h>
32#include <linux/kernel.h> 31#include <linux/kernel.h>
diff --git a/arch/mips/rb532/irq.c b/arch/mips/rb532/irq.c
index f07882029a90..ea6cec3c1e0d 100644
--- a/arch/mips/rb532/irq.c
+++ b/arch/mips/rb532/irq.c
@@ -36,7 +36,6 @@
36#include <linux/interrupt.h> 36#include <linux/interrupt.h>
37#include <linux/ioport.h> 37#include <linux/ioport.h>
38#include <linux/timex.h> 38#include <linux/timex.h>
39#include <linux/slab.h>
40#include <linux/random.h> 39#include <linux/random.h>
41#include <linux/delay.h> 40#include <linux/delay.h>
42 41
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index c1c8e40d65d6..6a123ea72de5 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -17,7 +17,6 @@
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/ioport.h> 18#include <linux/ioport.h>
19#include <linux/timex.h> 19#include <linux/timex.h>
20#include <linux/slab.h>
21#include <linux/smp.h> 20#include <linux/smp.h>
22#include <linux/random.h> 21#include <linux/random.h>
23#include <linux/kernel.h> 22#include <linux/kernel.h>
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index d8b65204d288..eb40824b172a 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -15,7 +15,6 @@
15#include <linux/irq.h> 15#include <linux/irq.h>
16#include <linux/bitops.h> 16#include <linux/bitops.h>
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/slab.h>
19#include <linux/mm.h> 18#include <linux/mm.h>
20#include <linux/random.h> 19#include <linux/random.h>
21#include <linux/sched.h> 20#include <linux/sched.h>
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index 3fbb033e23d8..044bbe462c2c 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -22,7 +22,6 @@
22#include <linux/smp.h> 22#include <linux/smp.h>
23#include <linux/spinlock.h> 23#include <linux/spinlock.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/slab.h>
26#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
27 26
28#include <asm/errno.h> 27#include <asm/errno.h>
diff --git a/arch/mips/sibyte/common/sb_tbprof.c b/arch/mips/sibyte/common/sb_tbprof.c
index ed2453eab5cb..d4ed7a9156f5 100644
--- a/arch/mips/sibyte/common/sb_tbprof.c
+++ b/arch/mips/sibyte/common/sb_tbprof.c
@@ -27,7 +27,6 @@
27#include <linux/types.h> 27#include <linux/types.h>
28#include <linux/init.h> 28#include <linux/init.h>
29#include <linux/interrupt.h> 29#include <linux/interrupt.h>
30#include <linux/slab.h>
31#include <linux/vmalloc.h> 30#include <linux/vmalloc.h>
32#include <linux/fs.h> 31#include <linux/fs.h>
33#include <linux/errno.h> 32#include <linux/errno.h>
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index b452e3c82792..12ac04a658ee 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -22,7 +22,6 @@
22#include <linux/spinlock.h> 22#include <linux/spinlock.h>
23#include <linux/smp.h> 23#include <linux/smp.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/slab.h>
26#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
27 26
28#include <asm/errno.h> 27#include <asm/errno.h>
diff --git a/arch/mips/sibyte/sb1250/setup.c b/arch/mips/sibyte/sb1250/setup.c
index 0444da1e23c2..92da3155ce07 100644
--- a/arch/mips/sibyte/sb1250/setup.c
+++ b/arch/mips/sibyte/sb1250/setup.c
@@ -87,6 +87,21 @@ static int __init setup_bcm1250(void)
87 return ret; 87 return ret;
88} 88}
89 89
90int sb1250_m3_workaround_needed(void)
91{
92 switch (soc_type) {
93 case K_SYS_SOC_TYPE_BCM1250:
94 case K_SYS_SOC_TYPE_BCM1250_ALT:
95 case K_SYS_SOC_TYPE_BCM1250_ALT2:
96 case K_SYS_SOC_TYPE_BCM1125:
97 case K_SYS_SOC_TYPE_BCM1125H:
98 return soc_pass < K_SYS_REVISION_BCM1250_C0;
99
100 default:
101 return 0;
102 }
103}
104
90static int __init setup_bcm112x(void) 105static int __init setup_bcm112x(void)
91{ 106{
92 int ret = 0; 107 int ret = 0;
diff --git a/arch/mips/txx9/generic/pci.c b/arch/mips/txx9/generic/pci.c
index 707cfa9c547d..9a0be810cafa 100644
--- a/arch/mips/txx9/generic/pci.c
+++ b/arch/mips/txx9/generic/pci.c
@@ -20,6 +20,7 @@
20#include <asm/txx9/pci.h> 20#include <asm/txx9/pci.h>
21#ifdef CONFIG_TOSHIBA_FPCIB0 21#ifdef CONFIG_TOSHIBA_FPCIB0
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/slab.h>
23#include <asm/i8259.h> 24#include <asm/i8259.h>
24#include <asm/txx9/smsc_fdc37m81x.h> 25#include <asm/txx9/smsc_fdc37m81x.h>
25#endif 26#endif
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index 7174d830dd05..adc69291f9e2 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -23,6 +23,7 @@
23#include <linux/mtd/physmap.h> 23#include <linux/mtd/physmap.h>
24#include <linux/leds.h> 24#include <linux/leds.h>
25#include <linux/sysdev.h> 25#include <linux/sysdev.h>
26#include <linux/slab.h>
26#include <asm/bootinfo.h> 27#include <asm/bootinfo.h>
27#include <asm/time.h> 28#include <asm/time.h>
28#include <asm/reboot.h> 29#include <asm/reboot.h>
@@ -956,6 +957,7 @@ void __init txx9_sramc_init(struct resource *r)
956 if (!dev->base) 957 if (!dev->base)
957 goto exit; 958 goto exit;
958 dev->dev.cls = &txx9_sramc_sysdev_class; 959 dev->dev.cls = &txx9_sramc_sysdev_class;
960 sysfs_bin_attr_init(&dev->bindata_attr);
959 dev->bindata_attr.attr.name = "bindata"; 961 dev->bindata_attr.attr.name = "bindata";
960 dev->bindata_attr.attr.mode = S_IRUSR | S_IWUSR; 962 dev->bindata_attr.attr.mode = S_IRUSR | S_IWUSR;
961 dev->bindata_attr.read = txx9_sram_read; 963 dev->bindata_attr.read = txx9_sram_read;
diff --git a/arch/mips/txx9/generic/spi_eeprom.c b/arch/mips/txx9/generic/spi_eeprom.c
index 75c347238f47..103abc13d623 100644
--- a/arch/mips/txx9/generic/spi_eeprom.c
+++ b/arch/mips/txx9/generic/spi_eeprom.c
@@ -10,6 +10,7 @@
10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com) 10 * Support for TX4938 in 2.6 - Manish Lachwani (mlachwani@mvista.com)
11 */ 11 */
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/slab.h>
13#include <linux/device.h> 14#include <linux/device.h>
14#include <linux/spi/spi.h> 15#include <linux/spi/spi.h>
15#include <linux/spi/eeprom.h> 16#include <linux/spi/eeprom.h>
diff --git a/arch/mips/txx9/rbtx4939/setup.c b/arch/mips/txx9/rbtx4939/setup.c
index b0c241ecf603..7dc0fafbec80 100644
--- a/arch/mips/txx9/rbtx4939/setup.c
+++ b/arch/mips/txx9/rbtx4939/setup.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/types.h> 14#include <linux/types.h>
15#include <linux/slab.h>
15#include <linux/platform_device.h> 16#include <linux/platform_device.h>
16#include <linux/leds.h> 17#include <linux/leds.h>
17#include <linux/interrupt.h> 18#include <linux/interrupt.h>
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index ec8a21df1142..82b817c7f7b6 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -18,7 +18,6 @@
18#include <linux/stddef.h> 18#include <linux/stddef.h>
19#include <linux/unistd.h> 19#include <linux/unistd.h>
20#include <linux/ptrace.h> 20#include <linux/ptrace.h>
21#include <linux/slab.h>
22#include <linux/user.h> 21#include <linux/user.h>
23#include <linux/interrupt.h> 22#include <linux/interrupt.h>
24#include <linux/delay.h> 23#include <linux/delay.h>
@@ -26,6 +25,7 @@
26#include <linux/percpu.h> 25#include <linux/percpu.h>
27#include <linux/err.h> 26#include <linux/err.h>
28#include <linux/fs.h> 27#include <linux/fs.h>
28#include <linux/slab.h>
29#include <asm/uaccess.h> 29#include <asm/uaccess.h>
30#include <asm/pgtable.h> 30#include <asm/pgtable.h>
31#include <asm/system.h> 31#include <asm/system.h>
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c
index 3f24c298a3af..d464affcba0e 100644
--- a/arch/mn10300/kernel/setup.c
+++ b/arch/mn10300/kernel/setup.c
@@ -15,7 +15,6 @@
15#include <linux/stddef.h> 15#include <linux/stddef.h>
16#include <linux/unistd.h> 16#include <linux/unistd.h>
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/slab.h>
19#include <linux/user.h> 18#include <linux/user.h>
20#include <linux/tty.h> 19#include <linux/tty.h>
21#include <linux/ioport.h> 20#include <linux/ioport.h>
diff --git a/arch/mn10300/mm/dma-alloc.c b/arch/mn10300/mm/dma-alloc.c
index ee82d624b3c6..4e34880bea03 100644
--- a/arch/mn10300/mm/dma-alloc.c
+++ b/arch/mn10300/mm/dma-alloc.c
@@ -14,6 +14,7 @@
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/string.h> 15#include <linux/string.h>
16#include <linux/pci.h> 16#include <linux/pci.h>
17#include <linux/gfp.h>
17#include <asm/io.h> 18#include <asm/io.h>
18 19
19static unsigned long pci_sram_allocated = 0xbc000000; 20static unsigned long pci_sram_allocated = 0xbc000000;
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c
index dd27a9a35152..6e6bc0e51521 100644
--- a/arch/mn10300/mm/init.c
+++ b/arch/mn10300/mm/init.c
@@ -17,7 +17,6 @@
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/ptrace.h> 18#include <linux/ptrace.h>
19#include <linux/mman.h> 19#include <linux/mman.h>
20#include <linux/slab.h>
21#include <linux/fs.h> 20#include <linux/fs.h>
22#include <linux/mm.h> 21#include <linux/mm.h>
23#include <linux/swap.h> 22#include <linux/swap.h>
@@ -27,6 +26,7 @@
27#include <linux/highmem.h> 26#include <linux/highmem.h>
28#include <linux/pagemap.h> 27#include <linux/pagemap.h>
29#include <linux/bootmem.h> 28#include <linux/bootmem.h>
29#include <linux/gfp.h>
30 30
31#include <asm/processor.h> 31#include <asm/processor.h>
32#include <asm/system.h> 32#include <asm/system.h>
diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c
index baffc581e031..9c1624c9e4e9 100644
--- a/arch/mn10300/mm/pgtable.c
+++ b/arch/mn10300/mm/pgtable.c
@@ -12,11 +12,11 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/gfp.h>
15#include <linux/mm.h> 16#include <linux/mm.h>
16#include <linux/swap.h> 17#include <linux/swap.h>
17#include <linux/smp.h> 18#include <linux/smp.h>
18#include <linux/highmem.h> 19#include <linux/highmem.h>
19#include <linux/slab.h>
20#include <linux/pagemap.h> 20#include <linux/pagemap.h>
21#include <linux/spinlock.h> 21#include <linux/spinlock.h>
22#include <linux/quicklist.h> 22#include <linux/quicklist.h>
diff --git a/arch/mn10300/unit-asb2305/pci-irq.c b/arch/mn10300/unit-asb2305/pci-irq.c
index 58cfb44f0acf..91212ea71e69 100644
--- a/arch/mn10300/unit-asb2305/pci-irq.c
+++ b/arch/mn10300/unit-asb2305/pci-irq.c
@@ -14,7 +14,6 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/slab.h>
18#include <linux/interrupt.h> 17#include <linux/interrupt.h>
19#include <linux/irq.h> 18#include <linux/irq.h>
20#include <asm/io.h> 19#include <asm/io.h>
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c
index 54075360a8fd..6935123178eb 100644
--- a/arch/parisc/hpux/fs.c
+++ b/arch/parisc/hpux/fs.c
@@ -26,8 +26,8 @@
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/sched.h> 27#include <linux/sched.h>
28#include <linux/file.h> 28#include <linux/file.h>
29#include <linux/slab.h>
30#include <linux/ptrace.h> 29#include <linux/ptrace.h>
30#include <linux/slab.h>
31#include <asm/errno.h> 31#include <asm/errno.h>
32#include <asm/uaccess.h> 32#include <asm/uaccess.h>
33 33
diff --git a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c
index 212074653df7..159a2b81e90c 100644
--- a/arch/parisc/kernel/module.c
+++ b/arch/parisc/kernel/module.c
@@ -61,6 +61,7 @@
61#include <linux/string.h> 61#include <linux/string.h>
62#include <linux/kernel.h> 62#include <linux/kernel.h>
63#include <linux/bug.h> 63#include <linux/bug.h>
64#include <linux/slab.h>
64 65
65#include <asm/unwind.h> 66#include <asm/unwind.h>
66 67
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index c07f618ff7da..a029f74a3c5c 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -18,11 +18,11 @@
18*/ 18*/
19 19
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/gfp.h>
21#include <linux/mm.h> 22#include <linux/mm.h>
22#include <linux/pci.h> 23#include <linux/pci.h>
23#include <linux/proc_fs.h> 24#include <linux/proc_fs.h>
24#include <linux/seq_file.h> 25#include <linux/seq_file.h>
25#include <linux/slab.h>
26#include <linux/string.h> 26#include <linux/string.h>
27#include <linux/types.h> 27#include <linux/types.h>
28#include <linux/scatterlist.h> 28#include <linux/scatterlist.h>
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index 38372e7cbb88..9efd97405317 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -13,7 +13,6 @@
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/pci.h> 15#include <linux/pci.h>
16#include <linux/slab.h>
17#include <linux/types.h> 16#include <linux/types.h>
18 17
19#include <asm/io.h> 18#include <asm/io.h>
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index 1f3aa8db0203..76332dadc6e9 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -43,6 +43,7 @@
43#include <linux/personality.h> 43#include <linux/personality.h>
44#include <linux/ptrace.h> 44#include <linux/ptrace.h>
45#include <linux/sched.h> 45#include <linux/sched.h>
46#include <linux/slab.h>
46#include <linux/stddef.h> 47#include <linux/stddef.h>
47#include <linux/unistd.h> 48#include <linux/unistd.h>
48#include <linux/kallsyms.h> 49#include <linux/kallsyms.h>
diff --git a/arch/parisc/kernel/signal32.c b/arch/parisc/kernel/signal32.c
index fb59852006de..e14132430762 100644
--- a/arch/parisc/kernel/signal32.c
+++ b/arch/parisc/kernel/signal32.c
@@ -23,7 +23,6 @@
23 */ 23 */
24 24
25#include <linux/compat.h> 25#include <linux/compat.h>
26#include <linux/slab.h>
27#include <linux/module.h> 26#include <linux/module.h>
28#include <linux/unistd.h> 27#include <linux/unistd.h>
29#include <linux/init.h> 28#include <linux/init.h>
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index 3f2fce8ce6b6..69d63d354ef0 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -18,7 +18,6 @@
18*/ 18*/
19#include <linux/types.h> 19#include <linux/types.h>
20#include <linux/spinlock.h> 20#include <linux/spinlock.h>
21#include <linux/slab.h>
22 21
23#include <linux/kernel.h> 22#include <linux/kernel.h>
24#include <linux/module.h> 23#include <linux/module.h>
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 13b6e3e59b99..f4f4d700833a 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -14,6 +14,7 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/bootmem.h> 16#include <linux/bootmem.h>
17#include <linux/gfp.h>
17#include <linux/delay.h> 18#include <linux/delay.h>
18#include <linux/init.h> 19#include <linux/init.h>
19#include <linux/pci.h> /* for hppa_dma_ops and pcxl_dma_ops */ 20#include <linux/pci.h> /* for hppa_dma_ops and pcxl_dma_ops */
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 8a54eb8e3768..2e19500921f9 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -313,19 +313,6 @@ config 8XX_MINIMAL_FPEMU
313 313
314 It is recommended that you build a soft-float userspace instead. 314 It is recommended that you build a soft-float userspace instead.
315 315
316config IOMMU_VMERGE
317 bool "Enable IOMMU virtual merging"
318 depends on PPC64
319 default y
320 help
321 Cause IO segments sent to a device for DMA to be merged virtually
322 by the IOMMU when they happen to have been allocated contiguously.
323 This doesn't add pressure to the IOMMU allocator. However, some
324 drivers don't support getting large merged segments coming back
325 from *_map_sg().
326
327 Most drivers don't have this problem; it is safe to say Y here.
328
329config IOMMU_HELPER 316config IOMMU_HELPER
330 def_bool PPC64 317 def_bool PPC64
331 318
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig
index ff9bdb28197d..218d49b36a0c 100644
--- a/arch/powerpc/configs/52xx/cm5200_defconfig
+++ b/arch/powerpc/configs/52xx/cm5200_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 14:45:07 2009 4# Wed Mar 10 14:34:22 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -94,11 +94,6 @@ CONFIG_RCU_FANOUT=32
94# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
96CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
97CONFIG_GROUP_SCHED=y
98CONFIG_FAIR_GROUP_SCHED=y
99# CONFIG_RT_GROUP_SCHED is not set
100CONFIG_USER_SCHED=y
101# CONFIG_CGROUP_SCHED is not set
102# CONFIG_CGROUPS is not set 97# CONFIG_CGROUPS is not set
103CONFIG_SYSFS_DEPRECATED=y 98CONFIG_SYSFS_DEPRECATED=y
104CONFIG_SYSFS_DEPRECATED_V2=y 99CONFIG_SYSFS_DEPRECATED_V2=y
@@ -109,6 +104,7 @@ CONFIG_INITRAMFS_SOURCE=""
109CONFIG_RD_GZIP=y 104CONFIG_RD_GZIP=y
110# CONFIG_RD_BZIP2 is not set 105# CONFIG_RD_BZIP2 is not set
111# CONFIG_RD_LZMA is not set 106# CONFIG_RD_LZMA is not set
107# CONFIG_RD_LZO is not set
112# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 108# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
113CONFIG_SYSCTL=y 109CONFIG_SYSCTL=y
114CONFIG_ANON_INODES=y 110CONFIG_ANON_INODES=y
@@ -340,7 +336,6 @@ CONFIG_NET=y
340# Networking options 336# Networking options
341# 337#
342CONFIG_PACKET=y 338CONFIG_PACKET=y
343# CONFIG_PACKET_MMAP is not set
344CONFIG_UNIX=y 339CONFIG_UNIX=y
345CONFIG_XFRM=y 340CONFIG_XFRM=y
346CONFIG_XFRM_USER=y 341CONFIG_XFRM_USER=y
@@ -517,6 +512,8 @@ CONFIG_MTD_PHYSMAP_OF=y
517# UBI - Unsorted block images 512# UBI - Unsorted block images
518# 513#
519# CONFIG_MTD_UBI is not set 514# CONFIG_MTD_UBI is not set
515CONFIG_OF_FLATTREE=y
516CONFIG_OF_DYNAMIC=y
520CONFIG_OF_DEVICE=y 517CONFIG_OF_DEVICE=y
521CONFIG_OF_I2C=y 518CONFIG_OF_I2C=y
522CONFIG_OF_MDIO=y 519CONFIG_OF_MDIO=y
@@ -684,6 +681,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
684CONFIG_SERIAL_MPC52xx=y 681CONFIG_SERIAL_MPC52xx=y
685CONFIG_SERIAL_MPC52xx_CONSOLE=y 682CONFIG_SERIAL_MPC52xx_CONSOLE=y
686CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600 683CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600
684# CONFIG_SERIAL_TIMBERDALE is not set
687# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 685# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
688CONFIG_UNIX98_PTYS=y 686CONFIG_UNIX98_PTYS=y
689# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 687# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -714,6 +712,7 @@ CONFIG_I2C_HELPER_AUTO=y
714CONFIG_I2C_MPC=y 712CONFIG_I2C_MPC=y
715# CONFIG_I2C_OCORES is not set 713# CONFIG_I2C_OCORES is not set
716# CONFIG_I2C_SIMTEC is not set 714# CONFIG_I2C_SIMTEC is not set
715# CONFIG_I2C_XILINX is not set
717 716
718# 717#
719# External I2C/SMBus adapter drivers 718# External I2C/SMBus adapter drivers
@@ -754,6 +753,7 @@ CONFIG_WATCHDOG=y
754# Watchdog Device Drivers 753# Watchdog Device Drivers
755# 754#
756# CONFIG_SOFT_WATCHDOG is not set 755# CONFIG_SOFT_WATCHDOG is not set
756# CONFIG_MAX63XX_WATCHDOG is not set
757# CONFIG_MPC5200_WDT is not set 757# CONFIG_MPC5200_WDT is not set
758 758
759# 759#
@@ -771,18 +771,20 @@ CONFIG_SSB_POSSIBLE=y
771# Multifunction device drivers 771# Multifunction device drivers
772# 772#
773# CONFIG_MFD_CORE is not set 773# CONFIG_MFD_CORE is not set
774# CONFIG_MFD_88PM860X is not set
774# CONFIG_MFD_SM501 is not set 775# CONFIG_MFD_SM501 is not set
775# CONFIG_HTC_PASIC3 is not set 776# CONFIG_HTC_PASIC3 is not set
776# CONFIG_TWL4030_CORE is not set 777# CONFIG_TWL4030_CORE is not set
777# CONFIG_MFD_TMIO is not set 778# CONFIG_MFD_TMIO is not set
778# CONFIG_PMIC_DA903X is not set 779# CONFIG_PMIC_DA903X is not set
779# CONFIG_PMIC_ADP5520 is not set 780# CONFIG_PMIC_ADP5520 is not set
781# CONFIG_MFD_MAX8925 is not set
780# CONFIG_MFD_WM8400 is not set 782# CONFIG_MFD_WM8400 is not set
781# CONFIG_MFD_WM831X is not set 783# CONFIG_MFD_WM831X is not set
782# CONFIG_MFD_WM8350_I2C is not set 784# CONFIG_MFD_WM8350_I2C is not set
785# CONFIG_MFD_WM8994 is not set
783# CONFIG_MFD_PCF50633 is not set 786# CONFIG_MFD_PCF50633 is not set
784# CONFIG_AB3100_CORE is not set 787# CONFIG_AB3100_CORE is not set
785# CONFIG_MFD_88PM8607 is not set
786# CONFIG_REGULATOR is not set 788# CONFIG_REGULATOR is not set
787# CONFIG_MEDIA_SUPPORT is not set 789# CONFIG_MEDIA_SUPPORT is not set
788 790
@@ -813,7 +815,6 @@ CONFIG_USB=y
813CONFIG_USB_DEVICEFS=y 815CONFIG_USB_DEVICEFS=y
814# CONFIG_USB_DEVICE_CLASS is not set 816# CONFIG_USB_DEVICE_CLASS is not set
815# CONFIG_USB_DYNAMIC_MINORS is not set 817# CONFIG_USB_DYNAMIC_MINORS is not set
816# CONFIG_USB_SUSPEND is not set
817# CONFIG_USB_OTG is not set 818# CONFIG_USB_OTG is not set
818# CONFIG_USB_OTG_WHITELIST is not set 819# CONFIG_USB_OTG_WHITELIST is not set
819# CONFIG_USB_OTG_BLACKLIST_HUB is not set 820# CONFIG_USB_OTG_BLACKLIST_HUB is not set
@@ -891,7 +892,6 @@ CONFIG_USB_STORAGE=y
891# CONFIG_USB_RIO500 is not set 892# CONFIG_USB_RIO500 is not set
892# CONFIG_USB_LEGOTOWER is not set 893# CONFIG_USB_LEGOTOWER is not set
893# CONFIG_USB_LCD is not set 894# CONFIG_USB_LCD is not set
894# CONFIG_USB_BERRY_CHARGE is not set
895# CONFIG_USB_LED is not set 895# CONFIG_USB_LED is not set
896# CONFIG_USB_CYPRESS_CY7C63 is not set 896# CONFIG_USB_CYPRESS_CY7C63 is not set
897# CONFIG_USB_CYTHERM is not set 897# CONFIG_USB_CYTHERM is not set
@@ -903,7 +903,6 @@ CONFIG_USB_STORAGE=y
903# CONFIG_USB_IOWARRIOR is not set 903# CONFIG_USB_IOWARRIOR is not set
904# CONFIG_USB_TEST is not set 904# CONFIG_USB_TEST is not set
905# CONFIG_USB_ISIGHTFW is not set 905# CONFIG_USB_ISIGHTFW is not set
906# CONFIG_USB_VST is not set
907# CONFIG_USB_GADGET is not set 906# CONFIG_USB_GADGET is not set
908 907
909# 908#
@@ -1009,6 +1008,7 @@ CONFIG_JFFS2_ZLIB=y
1009# CONFIG_JFFS2_LZO is not set 1008# CONFIG_JFFS2_LZO is not set
1010CONFIG_JFFS2_RTIME=y 1009CONFIG_JFFS2_RTIME=y
1011# CONFIG_JFFS2_RUBIN is not set 1010# CONFIG_JFFS2_RUBIN is not set
1011# CONFIG_LOGFS is not set
1012CONFIG_CRAMFS=y 1012CONFIG_CRAMFS=y
1013# CONFIG_SQUASHFS is not set 1013# CONFIG_SQUASHFS is not set
1014# CONFIG_VXFS_FS is not set 1014# CONFIG_VXFS_FS is not set
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig
index 7b3f4d0ed404..90492ff25232 100644
--- a/arch/powerpc/configs/52xx/lite5200b_defconfig
+++ b/arch/powerpc/configs/52xx/lite5200b_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 14:45:09 2009 4# Wed Mar 10 14:34:24 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -95,11 +95,6 @@ CONFIG_RCU_FANOUT=32
95# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
96# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
97CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
98CONFIG_GROUP_SCHED=y
99# CONFIG_FAIR_GROUP_SCHED is not set
100# CONFIG_RT_GROUP_SCHED is not set
101CONFIG_USER_SCHED=y
102# CONFIG_CGROUP_SCHED is not set
103# CONFIG_CGROUPS is not set 98# CONFIG_CGROUPS is not set
104CONFIG_SYSFS_DEPRECATED=y 99CONFIG_SYSFS_DEPRECATED=y
105CONFIG_SYSFS_DEPRECATED_V2=y 100CONFIG_SYSFS_DEPRECATED_V2=y
@@ -110,6 +105,7 @@ CONFIG_INITRAMFS_SOURCE=""
110CONFIG_RD_GZIP=y 105CONFIG_RD_GZIP=y
111# CONFIG_RD_BZIP2 is not set 106# CONFIG_RD_BZIP2 is not set
112# CONFIG_RD_LZMA is not set 107# CONFIG_RD_LZMA is not set
108# CONFIG_RD_LZO is not set
113# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 109# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
114CONFIG_SYSCTL=y 110CONFIG_SYSCTL=y
115CONFIG_ANON_INODES=y 111CONFIG_ANON_INODES=y
@@ -317,6 +313,7 @@ CONFIG_SUSPEND=y
317CONFIG_SUSPEND_FREEZER=y 313CONFIG_SUSPEND_FREEZER=y
318# CONFIG_HIBERNATION is not set 314# CONFIG_HIBERNATION is not set
319# CONFIG_PM_RUNTIME is not set 315# CONFIG_PM_RUNTIME is not set
316CONFIG_PM_OPS=y
320CONFIG_SECCOMP=y 317CONFIG_SECCOMP=y
321CONFIG_ISA_DMA_API=y 318CONFIG_ISA_DMA_API=y
322 319
@@ -333,7 +330,6 @@ CONFIG_PCI_SYSCALL=y
333# CONFIG_PCIEPORTBUS is not set 330# CONFIG_PCIEPORTBUS is not set
334CONFIG_ARCH_SUPPORTS_MSI=y 331CONFIG_ARCH_SUPPORTS_MSI=y
335# CONFIG_PCI_MSI is not set 332# CONFIG_PCI_MSI is not set
336CONFIG_PCI_LEGACY=y
337# CONFIG_PCI_DEBUG is not set 333# CONFIG_PCI_DEBUG is not set
338# CONFIG_PCI_STUB is not set 334# CONFIG_PCI_STUB is not set
339# CONFIG_PCI_IOV is not set 335# CONFIG_PCI_IOV is not set
@@ -360,7 +356,6 @@ CONFIG_NET=y
360# Networking options 356# Networking options
361# 357#
362CONFIG_PACKET=y 358CONFIG_PACKET=y
363# CONFIG_PACKET_MMAP is not set
364CONFIG_UNIX=y 359CONFIG_UNIX=y
365CONFIG_XFRM=y 360CONFIG_XFRM=y
366CONFIG_XFRM_USER=m 361CONFIG_XFRM_USER=m
@@ -457,6 +452,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
457# CONFIG_SYS_HYPERVISOR is not set 452# CONFIG_SYS_HYPERVISOR is not set
458# CONFIG_CONNECTOR is not set 453# CONFIG_CONNECTOR is not set
459# CONFIG_MTD is not set 454# CONFIG_MTD is not set
455CONFIG_OF_FLATTREE=y
456CONFIG_OF_DYNAMIC=y
460CONFIG_OF_DEVICE=y 457CONFIG_OF_DEVICE=y
461CONFIG_OF_I2C=y 458CONFIG_OF_I2C=y
462CONFIG_OF_MDIO=y 459CONFIG_OF_MDIO=y
@@ -631,6 +628,7 @@ CONFIG_ATA_SFF=y
631# CONFIG_PATA_IT821X is not set 628# CONFIG_PATA_IT821X is not set
632# CONFIG_PATA_IT8213 is not set 629# CONFIG_PATA_IT8213 is not set
633# CONFIG_PATA_JMICRON is not set 630# CONFIG_PATA_JMICRON is not set
631# CONFIG_PATA_LEGACY is not set
634# CONFIG_PATA_TRIFLEX is not set 632# CONFIG_PATA_TRIFLEX is not set
635# CONFIG_PATA_MARVELL is not set 633# CONFIG_PATA_MARVELL is not set
636CONFIG_PATA_MPC52xx=y 634CONFIG_PATA_MPC52xx=y
@@ -668,7 +666,7 @@ CONFIG_PATA_MPC52xx=y
668# 666#
669 667
670# 668#
671# See the help texts for more information. 669# The newer stack is recommended.
672# 670#
673# CONFIG_FIREWIRE is not set 671# CONFIG_FIREWIRE is not set
674# CONFIG_IEEE1394 is not set 672# CONFIG_IEEE1394 is not set
@@ -768,6 +766,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
768# CONFIG_MLX4_CORE is not set 766# CONFIG_MLX4_CORE is not set
769# CONFIG_TEHUTI is not set 767# CONFIG_TEHUTI is not set
770# CONFIG_BNX2X is not set 768# CONFIG_BNX2X is not set
769# CONFIG_QLCNIC is not set
771# CONFIG_QLGE is not set 770# CONFIG_QLGE is not set
772# CONFIG_SFC is not set 771# CONFIG_SFC is not set
773# CONFIG_BE2NET is not set 772# CONFIG_BE2NET is not set
@@ -828,6 +827,7 @@ CONFIG_SERIAL_MPC52xx=y
828CONFIG_SERIAL_MPC52xx_CONSOLE=y 827CONFIG_SERIAL_MPC52xx_CONSOLE=y
829CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 828CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
830# CONFIG_SERIAL_JSM is not set 829# CONFIG_SERIAL_JSM is not set
830# CONFIG_SERIAL_TIMBERDALE is not set
831# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 831# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
832CONFIG_UNIX98_PTYS=y 832CONFIG_UNIX98_PTYS=y
833# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 833# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -879,6 +879,7 @@ CONFIG_I2C_HELPER_AUTO=y
879CONFIG_I2C_MPC=y 879CONFIG_I2C_MPC=y
880# CONFIG_I2C_OCORES is not set 880# CONFIG_I2C_OCORES is not set
881# CONFIG_I2C_SIMTEC is not set 881# CONFIG_I2C_SIMTEC is not set
882# CONFIG_I2C_XILINX is not set
882 883
883# 884#
884# External I2C/SMBus adapter drivers 885# External I2C/SMBus adapter drivers
@@ -924,18 +925,21 @@ CONFIG_SSB_POSSIBLE=y
924# Multifunction device drivers 925# Multifunction device drivers
925# 926#
926# CONFIG_MFD_CORE is not set 927# CONFIG_MFD_CORE is not set
928# CONFIG_MFD_88PM860X is not set
927# CONFIG_MFD_SM501 is not set 929# CONFIG_MFD_SM501 is not set
928# CONFIG_HTC_PASIC3 is not set 930# CONFIG_HTC_PASIC3 is not set
929# CONFIG_TWL4030_CORE is not set 931# CONFIG_TWL4030_CORE is not set
930# CONFIG_MFD_TMIO is not set 932# CONFIG_MFD_TMIO is not set
931# CONFIG_PMIC_DA903X is not set 933# CONFIG_PMIC_DA903X is not set
932# CONFIG_PMIC_ADP5520 is not set 934# CONFIG_PMIC_ADP5520 is not set
935# CONFIG_MFD_MAX8925 is not set
933# CONFIG_MFD_WM8400 is not set 936# CONFIG_MFD_WM8400 is not set
934# CONFIG_MFD_WM831X is not set 937# CONFIG_MFD_WM831X is not set
935# CONFIG_MFD_WM8350_I2C is not set 938# CONFIG_MFD_WM8350_I2C is not set
939# CONFIG_MFD_WM8994 is not set
936# CONFIG_MFD_PCF50633 is not set 940# CONFIG_MFD_PCF50633 is not set
937# CONFIG_AB3100_CORE is not set 941# CONFIG_AB3100_CORE is not set
938# CONFIG_MFD_88PM8607 is not set 942# CONFIG_LPC_SCH is not set
939# CONFIG_REGULATOR is not set 943# CONFIG_REGULATOR is not set
940# CONFIG_MEDIA_SUPPORT is not set 944# CONFIG_MEDIA_SUPPORT is not set
941 945
@@ -944,6 +948,7 @@ CONFIG_SSB_POSSIBLE=y
944# 948#
945# CONFIG_AGP is not set 949# CONFIG_AGP is not set
946CONFIG_VGA_ARB=y 950CONFIG_VGA_ARB=y
951CONFIG_VGA_ARB_MAX_GPUS=16
947# CONFIG_DRM is not set 952# CONFIG_DRM is not set
948# CONFIG_VGASTATE is not set 953# CONFIG_VGASTATE is not set
949CONFIG_VIDEO_OUTPUT_CONTROL=m 954CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1062,6 +1067,7 @@ CONFIG_MISC_FILESYSTEMS=y
1062# CONFIG_BEFS_FS is not set 1067# CONFIG_BEFS_FS is not set
1063# CONFIG_BFS_FS is not set 1068# CONFIG_BFS_FS is not set
1064# CONFIG_EFS_FS is not set 1069# CONFIG_EFS_FS is not set
1070# CONFIG_LOGFS is not set
1065# CONFIG_CRAMFS is not set 1071# CONFIG_CRAMFS is not set
1066# CONFIG_SQUASHFS is not set 1072# CONFIG_SQUASHFS is not set
1067# CONFIG_VXFS_FS is not set 1073# CONFIG_VXFS_FS is not set
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig
index eaae2d469aa0..dffc8cac825f 100644
--- a/arch/powerpc/configs/52xx/motionpro_defconfig
+++ b/arch/powerpc/configs/52xx/motionpro_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 14:45:08 2009 4# Wed Mar 10 14:34:23 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -94,11 +94,6 @@ CONFIG_RCU_FANOUT=32
94# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
96CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
97CONFIG_GROUP_SCHED=y
98CONFIG_FAIR_GROUP_SCHED=y
99# CONFIG_RT_GROUP_SCHED is not set
100CONFIG_USER_SCHED=y
101# CONFIG_CGROUP_SCHED is not set
102# CONFIG_CGROUPS is not set 97# CONFIG_CGROUPS is not set
103CONFIG_SYSFS_DEPRECATED=y 98CONFIG_SYSFS_DEPRECATED=y
104CONFIG_SYSFS_DEPRECATED_V2=y 99CONFIG_SYSFS_DEPRECATED_V2=y
@@ -109,6 +104,7 @@ CONFIG_INITRAMFS_SOURCE=""
109CONFIG_RD_GZIP=y 104CONFIG_RD_GZIP=y
110# CONFIG_RD_BZIP2 is not set 105# CONFIG_RD_BZIP2 is not set
111# CONFIG_RD_LZMA is not set 106# CONFIG_RD_LZMA is not set
107# CONFIG_RD_LZO is not set
112# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 108# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
113CONFIG_SYSCTL=y 109CONFIG_SYSCTL=y
114CONFIG_ANON_INODES=y 110CONFIG_ANON_INODES=y
@@ -341,7 +337,6 @@ CONFIG_NET=y
341# Networking options 337# Networking options
342# 338#
343CONFIG_PACKET=y 339CONFIG_PACKET=y
344# CONFIG_PACKET_MMAP is not set
345CONFIG_UNIX=y 340CONFIG_UNIX=y
346CONFIG_XFRM=y 341CONFIG_XFRM=y
347CONFIG_XFRM_USER=y 342CONFIG_XFRM_USER=y
@@ -518,6 +513,8 @@ CONFIG_MTD_ROM=y
518# UBI - Unsorted block images 513# UBI - Unsorted block images
519# 514#
520# CONFIG_MTD_UBI is not set 515# CONFIG_MTD_UBI is not set
516CONFIG_OF_FLATTREE=y
517CONFIG_OF_DYNAMIC=y
521CONFIG_OF_DEVICE=y 518CONFIG_OF_DEVICE=y
522CONFIG_OF_I2C=y 519CONFIG_OF_I2C=y
523CONFIG_OF_MDIO=y 520CONFIG_OF_MDIO=y
@@ -699,6 +696,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
699CONFIG_SERIAL_MPC52xx=y 696CONFIG_SERIAL_MPC52xx=y
700CONFIG_SERIAL_MPC52xx_CONSOLE=y 697CONFIG_SERIAL_MPC52xx_CONSOLE=y
701CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 698CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
699# CONFIG_SERIAL_TIMBERDALE is not set
702# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 700# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
703CONFIG_UNIX98_PTYS=y 701CONFIG_UNIX98_PTYS=y
704# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 702# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -728,6 +726,7 @@ CONFIG_I2C_HELPER_AUTO=y
728CONFIG_I2C_MPC=y 726CONFIG_I2C_MPC=y
729# CONFIG_I2C_OCORES is not set 727# CONFIG_I2C_OCORES is not set
730# CONFIG_I2C_SIMTEC is not set 728# CONFIG_I2C_SIMTEC is not set
729# CONFIG_I2C_XILINX is not set
731 730
732# 731#
733# External I2C/SMBus adapter drivers 732# External I2C/SMBus adapter drivers
@@ -773,10 +772,11 @@ CONFIG_HWMON=y
773# CONFIG_SENSORS_ADM1029 is not set 772# CONFIG_SENSORS_ADM1029 is not set
774# CONFIG_SENSORS_ADM1031 is not set 773# CONFIG_SENSORS_ADM1031 is not set
775# CONFIG_SENSORS_ADM9240 is not set 774# CONFIG_SENSORS_ADM9240 is not set
775# CONFIG_SENSORS_ADT7411 is not set
776# CONFIG_SENSORS_ADT7462 is not set 776# CONFIG_SENSORS_ADT7462 is not set
777# CONFIG_SENSORS_ADT7470 is not set 777# CONFIG_SENSORS_ADT7470 is not set
778# CONFIG_SENSORS_ADT7473 is not set
779# CONFIG_SENSORS_ADT7475 is not set 778# CONFIG_SENSORS_ADT7475 is not set
779# CONFIG_SENSORS_ASC7621 is not set
780# CONFIG_SENSORS_ATXP1 is not set 780# CONFIG_SENSORS_ATXP1 is not set
781# CONFIG_SENSORS_DS1621 is not set 781# CONFIG_SENSORS_DS1621 is not set
782# CONFIG_SENSORS_F71805F is not set 782# CONFIG_SENSORS_F71805F is not set
@@ -811,6 +811,7 @@ CONFIG_HWMON=y
811# CONFIG_SENSORS_SMSC47M192 is not set 811# CONFIG_SENSORS_SMSC47M192 is not set
812# CONFIG_SENSORS_SMSC47B397 is not set 812# CONFIG_SENSORS_SMSC47B397 is not set
813# CONFIG_SENSORS_ADS7828 is not set 813# CONFIG_SENSORS_ADS7828 is not set
814# CONFIG_SENSORS_AMC6821 is not set
814# CONFIG_SENSORS_THMC50 is not set 815# CONFIG_SENSORS_THMC50 is not set
815# CONFIG_SENSORS_TMP401 is not set 816# CONFIG_SENSORS_TMP401 is not set
816# CONFIG_SENSORS_TMP421 is not set 817# CONFIG_SENSORS_TMP421 is not set
@@ -831,6 +832,7 @@ CONFIG_WATCHDOG=y
831# Watchdog Device Drivers 832# Watchdog Device Drivers
832# 833#
833# CONFIG_SOFT_WATCHDOG is not set 834# CONFIG_SOFT_WATCHDOG is not set
835# CONFIG_MAX63XX_WATCHDOG is not set
834# CONFIG_MPC5200_WDT is not set 836# CONFIG_MPC5200_WDT is not set
835CONFIG_SSB_POSSIBLE=y 837CONFIG_SSB_POSSIBLE=y
836 838
@@ -843,18 +845,20 @@ CONFIG_SSB_POSSIBLE=y
843# Multifunction device drivers 845# Multifunction device drivers
844# 846#
845# CONFIG_MFD_CORE is not set 847# CONFIG_MFD_CORE is not set
848# CONFIG_MFD_88PM860X is not set
846# CONFIG_MFD_SM501 is not set 849# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set 850# CONFIG_HTC_PASIC3 is not set
848# CONFIG_TWL4030_CORE is not set 851# CONFIG_TWL4030_CORE is not set
849# CONFIG_MFD_TMIO is not set 852# CONFIG_MFD_TMIO is not set
850# CONFIG_PMIC_DA903X is not set 853# CONFIG_PMIC_DA903X is not set
851# CONFIG_PMIC_ADP5520 is not set 854# CONFIG_PMIC_ADP5520 is not set
855# CONFIG_MFD_MAX8925 is not set
852# CONFIG_MFD_WM8400 is not set 856# CONFIG_MFD_WM8400 is not set
853# CONFIG_MFD_WM831X is not set 857# CONFIG_MFD_WM831X is not set
854# CONFIG_MFD_WM8350_I2C is not set 858# CONFIG_MFD_WM8350_I2C is not set
859# CONFIG_MFD_WM8994 is not set
855# CONFIG_MFD_PCF50633 is not set 860# CONFIG_MFD_PCF50633 is not set
856# CONFIG_AB3100_CORE is not set 861# CONFIG_AB3100_CORE is not set
857# CONFIG_MFD_88PM8607 is not set
858# CONFIG_REGULATOR is not set 862# CONFIG_REGULATOR is not set
859# CONFIG_MEDIA_SUPPORT is not set 863# CONFIG_MEDIA_SUPPORT is not set
860 864
@@ -1050,6 +1054,7 @@ CONFIG_JFFS2_ZLIB=y
1050# CONFIG_JFFS2_LZO is not set 1054# CONFIG_JFFS2_LZO is not set
1051CONFIG_JFFS2_RTIME=y 1055CONFIG_JFFS2_RTIME=y
1052# CONFIG_JFFS2_RUBIN is not set 1056# CONFIG_JFFS2_RUBIN is not set
1057# CONFIG_LOGFS is not set
1053CONFIG_CRAMFS=y 1058CONFIG_CRAMFS=y
1054# CONFIG_SQUASHFS is not set 1059# CONFIG_SQUASHFS is not set
1055# CONFIG_VXFS_FS is not set 1060# CONFIG_VXFS_FS is not set
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig
index 1742c0200b75..3cb2a522046a 100644
--- a/arch/powerpc/configs/52xx/pcm030_defconfig
+++ b/arch/powerpc/configs/52xx/pcm030_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 14:45:10 2009 4# Wed Mar 10 14:34:25 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -97,11 +97,6 @@ CONFIG_RCU_FANOUT=32
97CONFIG_IKCONFIG=y 97CONFIG_IKCONFIG=y
98CONFIG_IKCONFIG_PROC=y 98CONFIG_IKCONFIG_PROC=y
99CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
100CONFIG_GROUP_SCHED=y
101CONFIG_FAIR_GROUP_SCHED=y
102# CONFIG_RT_GROUP_SCHED is not set
103CONFIG_USER_SCHED=y
104# CONFIG_CGROUP_SCHED is not set
105# CONFIG_CGROUPS is not set 100# CONFIG_CGROUPS is not set
106CONFIG_SYSFS_DEPRECATED=y 101CONFIG_SYSFS_DEPRECATED=y
107CONFIG_SYSFS_DEPRECATED_V2=y 102CONFIG_SYSFS_DEPRECATED_V2=y
@@ -326,7 +321,6 @@ CONFIG_PCI_SYSCALL=y
326# CONFIG_PCIEPORTBUS is not set 321# CONFIG_PCIEPORTBUS is not set
327CONFIG_ARCH_SUPPORTS_MSI=y 322CONFIG_ARCH_SUPPORTS_MSI=y
328# CONFIG_PCI_MSI is not set 323# CONFIG_PCI_MSI is not set
329CONFIG_PCI_LEGACY=y
330# CONFIG_PCI_STUB is not set 324# CONFIG_PCI_STUB is not set
331# CONFIG_PCI_IOV is not set 325# CONFIG_PCI_IOV is not set
332# CONFIG_PCCARD is not set 326# CONFIG_PCCARD is not set
@@ -352,7 +346,6 @@ CONFIG_NET=y
352# Networking options 346# Networking options
353# 347#
354CONFIG_PACKET=y 348CONFIG_PACKET=y
355# CONFIG_PACKET_MMAP is not set
356CONFIG_UNIX=y 349CONFIG_UNIX=y
357# CONFIG_NET_KEY is not set 350# CONFIG_NET_KEY is not set
358CONFIG_INET=y 351CONFIG_INET=y
@@ -525,6 +518,8 @@ CONFIG_MTD_PHYSMAP=y
525# UBI - Unsorted block images 518# UBI - Unsorted block images
526# 519#
527# CONFIG_MTD_UBI is not set 520# CONFIG_MTD_UBI is not set
521CONFIG_OF_FLATTREE=y
522CONFIG_OF_DYNAMIC=y
528CONFIG_OF_DEVICE=y 523CONFIG_OF_DEVICE=y
529CONFIG_OF_I2C=y 524CONFIG_OF_I2C=y
530CONFIG_OF_MDIO=y 525CONFIG_OF_MDIO=y
@@ -610,6 +605,7 @@ CONFIG_ATA_SFF=y
610# CONFIG_PATA_IT821X is not set 605# CONFIG_PATA_IT821X is not set
611# CONFIG_PATA_IT8213 is not set 606# CONFIG_PATA_IT8213 is not set
612# CONFIG_PATA_JMICRON is not set 607# CONFIG_PATA_JMICRON is not set
608# CONFIG_PATA_LEGACY is not set
613# CONFIG_PATA_TRIFLEX is not set 609# CONFIG_PATA_TRIFLEX is not set
614# CONFIG_PATA_MARVELL is not set 610# CONFIG_PATA_MARVELL is not set
615CONFIG_PATA_MPC52xx=m 611CONFIG_PATA_MPC52xx=m
@@ -647,7 +643,7 @@ CONFIG_PATA_MPC52xx=m
647# 643#
648 644
649# 645#
650# See the help texts for more information. 646# The newer stack is recommended.
651# 647#
652# CONFIG_FIREWIRE is not set 648# CONFIG_FIREWIRE is not set
653# CONFIG_IEEE1394 is not set 649# CONFIG_IEEE1394 is not set
@@ -775,6 +771,7 @@ CONFIG_SERIAL_MPC52xx=y
775CONFIG_SERIAL_MPC52xx_CONSOLE=y 771CONFIG_SERIAL_MPC52xx_CONSOLE=y
776CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600 772CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600
777# CONFIG_SERIAL_JSM is not set 773# CONFIG_SERIAL_JSM is not set
774# CONFIG_SERIAL_TIMBERDALE is not set
778# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 775# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
779CONFIG_UNIX98_PTYS=y 776CONFIG_UNIX98_PTYS=y
780# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 777# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -824,6 +821,7 @@ CONFIG_I2C_HELPER_AUTO=y
824CONFIG_I2C_MPC=y 821CONFIG_I2C_MPC=y
825# CONFIG_I2C_OCORES is not set 822# CONFIG_I2C_OCORES is not set
826# CONFIG_I2C_SIMTEC is not set 823# CONFIG_I2C_SIMTEC is not set
824# CONFIG_I2C_XILINX is not set
827 825
828# 826#
829# External I2C/SMBus adapter drivers 827# External I2C/SMBus adapter drivers
@@ -870,18 +868,21 @@ CONFIG_SSB_POSSIBLE=y
870# Multifunction device drivers 868# Multifunction device drivers
871# 869#
872# CONFIG_MFD_CORE is not set 870# CONFIG_MFD_CORE is not set
871# CONFIG_MFD_88PM860X is not set
873# CONFIG_MFD_SM501 is not set 872# CONFIG_MFD_SM501 is not set
874# CONFIG_HTC_PASIC3 is not set 873# CONFIG_HTC_PASIC3 is not set
875# CONFIG_TWL4030_CORE is not set 874# CONFIG_TWL4030_CORE is not set
876# CONFIG_MFD_TMIO is not set 875# CONFIG_MFD_TMIO is not set
877# CONFIG_PMIC_DA903X is not set 876# CONFIG_PMIC_DA903X is not set
878# CONFIG_PMIC_ADP5520 is not set 877# CONFIG_PMIC_ADP5520 is not set
878# CONFIG_MFD_MAX8925 is not set
879# CONFIG_MFD_WM8400 is not set 879# CONFIG_MFD_WM8400 is not set
880# CONFIG_MFD_WM831X is not set 880# CONFIG_MFD_WM831X is not set
881# CONFIG_MFD_WM8350_I2C is not set 881# CONFIG_MFD_WM8350_I2C is not set
882# CONFIG_MFD_WM8994 is not set
882# CONFIG_MFD_PCF50633 is not set 883# CONFIG_MFD_PCF50633 is not set
883# CONFIG_AB3100_CORE is not set 884# CONFIG_AB3100_CORE is not set
884# CONFIG_MFD_88PM8607 is not set 885# CONFIG_LPC_SCH is not set
885# CONFIG_REGULATOR is not set 886# CONFIG_REGULATOR is not set
886# CONFIG_MEDIA_SUPPORT is not set 887# CONFIG_MEDIA_SUPPORT is not set
887 888
@@ -890,6 +891,7 @@ CONFIG_SSB_POSSIBLE=y
890# 891#
891# CONFIG_AGP is not set 892# CONFIG_AGP is not set
892CONFIG_VGA_ARB=y 893CONFIG_VGA_ARB=y
894CONFIG_VGA_ARB_MAX_GPUS=16
893# CONFIG_DRM is not set 895# CONFIG_DRM is not set
894# CONFIG_VGASTATE is not set 896# CONFIG_VGASTATE is not set
895# CONFIG_VIDEO_OUTPUT_CONTROL is not set 897# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -997,7 +999,6 @@ CONFIG_USB_STORAGE=m
997# CONFIG_USB_RIO500 is not set 999# CONFIG_USB_RIO500 is not set
998# CONFIG_USB_LEGOTOWER is not set 1000# CONFIG_USB_LEGOTOWER is not set
999# CONFIG_USB_LCD is not set 1001# CONFIG_USB_LCD is not set
1000# CONFIG_USB_BERRY_CHARGE is not set
1001# CONFIG_USB_LED is not set 1002# CONFIG_USB_LED is not set
1002# CONFIG_USB_CYPRESS_CY7C63 is not set 1003# CONFIG_USB_CYPRESS_CY7C63 is not set
1003# CONFIG_USB_CYTHERM is not set 1004# CONFIG_USB_CYTHERM is not set
@@ -1009,7 +1010,6 @@ CONFIG_USB_STORAGE=m
1009# CONFIG_USB_IOWARRIOR is not set 1010# CONFIG_USB_IOWARRIOR is not set
1010# CONFIG_USB_TEST is not set 1011# CONFIG_USB_TEST is not set
1011# CONFIG_USB_ISIGHTFW is not set 1012# CONFIG_USB_ISIGHTFW is not set
1012# CONFIG_USB_VST is not set
1013# CONFIG_USB_GADGET is not set 1013# CONFIG_USB_GADGET is not set
1014 1014
1015# 1015#
@@ -1172,6 +1172,7 @@ CONFIG_JFFS2_ZLIB=y
1172# CONFIG_JFFS2_LZO is not set 1172# CONFIG_JFFS2_LZO is not set
1173CONFIG_JFFS2_RTIME=y 1173CONFIG_JFFS2_RTIME=y
1174# CONFIG_JFFS2_RUBIN is not set 1174# CONFIG_JFFS2_RUBIN is not set
1175# CONFIG_LOGFS is not set
1175# CONFIG_CRAMFS is not set 1176# CONFIG_CRAMFS is not set
1176# CONFIG_SQUASHFS is not set 1177# CONFIG_SQUASHFS is not set
1177# CONFIG_VXFS_FS is not set 1178# CONFIG_VXFS_FS is not set
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig
index 3972438db719..96181c62abfa 100644
--- a/arch/powerpc/configs/52xx/tqm5200_defconfig
+++ b/arch/powerpc/configs/52xx/tqm5200_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 14:45:09 2009 4# Wed Mar 10 14:34:24 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -94,11 +94,6 @@ CONFIG_RCU_FANOUT=32
94# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
96CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
97CONFIG_GROUP_SCHED=y
98CONFIG_FAIR_GROUP_SCHED=y
99# CONFIG_RT_GROUP_SCHED is not set
100CONFIG_USER_SCHED=y
101# CONFIG_CGROUP_SCHED is not set
102# CONFIG_CGROUPS is not set 97# CONFIG_CGROUPS is not set
103CONFIG_SYSFS_DEPRECATED=y 98CONFIG_SYSFS_DEPRECATED=y
104CONFIG_SYSFS_DEPRECATED_V2=y 99CONFIG_SYSFS_DEPRECATED_V2=y
@@ -109,6 +104,7 @@ CONFIG_INITRAMFS_SOURCE=""
109CONFIG_RD_GZIP=y 104CONFIG_RD_GZIP=y
110# CONFIG_RD_BZIP2 is not set 105# CONFIG_RD_BZIP2 is not set
111# CONFIG_RD_LZMA is not set 106# CONFIG_RD_LZMA is not set
107# CONFIG_RD_LZO is not set
112# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 108# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
113CONFIG_SYSCTL=y 109CONFIG_SYSCTL=y
114CONFIG_ANON_INODES=y 110CONFIG_ANON_INODES=y
@@ -346,7 +342,6 @@ CONFIG_NET=y
346# Networking options 342# Networking options
347# 343#
348CONFIG_PACKET=y 344CONFIG_PACKET=y
349# CONFIG_PACKET_MMAP is not set
350CONFIG_UNIX=y 345CONFIG_UNIX=y
351CONFIG_XFRM=y 346CONFIG_XFRM=y
352CONFIG_XFRM_USER=y 347CONFIG_XFRM_USER=y
@@ -524,6 +519,8 @@ CONFIG_MTD_PHYSMAP_OF=y
524# UBI - Unsorted block images 519# UBI - Unsorted block images
525# 520#
526# CONFIG_MTD_UBI is not set 521# CONFIG_MTD_UBI is not set
522CONFIG_OF_FLATTREE=y
523CONFIG_OF_DYNAMIC=y
527CONFIG_OF_DEVICE=y 524CONFIG_OF_DEVICE=y
528CONFIG_OF_I2C=y 525CONFIG_OF_I2C=y
529CONFIG_OF_MDIO=y 526CONFIG_OF_MDIO=y
@@ -704,6 +701,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
704CONFIG_SERIAL_MPC52xx=y 701CONFIG_SERIAL_MPC52xx=y
705CONFIG_SERIAL_MPC52xx_CONSOLE=y 702CONFIG_SERIAL_MPC52xx_CONSOLE=y
706CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 703CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
704# CONFIG_SERIAL_TIMBERDALE is not set
707# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 705# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
708CONFIG_UNIX98_PTYS=y 706CONFIG_UNIX98_PTYS=y
709# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 707# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -733,6 +731,7 @@ CONFIG_I2C_HELPER_AUTO=y
733CONFIG_I2C_MPC=y 731CONFIG_I2C_MPC=y
734# CONFIG_I2C_OCORES is not set 732# CONFIG_I2C_OCORES is not set
735# CONFIG_I2C_SIMTEC is not set 733# CONFIG_I2C_SIMTEC is not set
734# CONFIG_I2C_XILINX is not set
736 735
737# 736#
738# External I2C/SMBus adapter drivers 737# External I2C/SMBus adapter drivers
@@ -780,10 +779,11 @@ CONFIG_HWMON=y
780# CONFIG_SENSORS_ADM1029 is not set 779# CONFIG_SENSORS_ADM1029 is not set
781# CONFIG_SENSORS_ADM1031 is not set 780# CONFIG_SENSORS_ADM1031 is not set
782# CONFIG_SENSORS_ADM9240 is not set 781# CONFIG_SENSORS_ADM9240 is not set
782# CONFIG_SENSORS_ADT7411 is not set
783# CONFIG_SENSORS_ADT7462 is not set 783# CONFIG_SENSORS_ADT7462 is not set
784# CONFIG_SENSORS_ADT7470 is not set 784# CONFIG_SENSORS_ADT7470 is not set
785# CONFIG_SENSORS_ADT7473 is not set
786# CONFIG_SENSORS_ADT7475 is not set 785# CONFIG_SENSORS_ADT7475 is not set
786# CONFIG_SENSORS_ASC7621 is not set
787# CONFIG_SENSORS_ATXP1 is not set 787# CONFIG_SENSORS_ATXP1 is not set
788# CONFIG_SENSORS_DS1621 is not set 788# CONFIG_SENSORS_DS1621 is not set
789# CONFIG_SENSORS_F71805F is not set 789# CONFIG_SENSORS_F71805F is not set
@@ -818,6 +818,7 @@ CONFIG_HWMON=y
818# CONFIG_SENSORS_SMSC47M192 is not set 818# CONFIG_SENSORS_SMSC47M192 is not set
819# CONFIG_SENSORS_SMSC47B397 is not set 819# CONFIG_SENSORS_SMSC47B397 is not set
820# CONFIG_SENSORS_ADS7828 is not set 820# CONFIG_SENSORS_ADS7828 is not set
821# CONFIG_SENSORS_AMC6821 is not set
821# CONFIG_SENSORS_THMC50 is not set 822# CONFIG_SENSORS_THMC50 is not set
822# CONFIG_SENSORS_TMP401 is not set 823# CONFIG_SENSORS_TMP401 is not set
823# CONFIG_SENSORS_TMP421 is not set 824# CONFIG_SENSORS_TMP421 is not set
@@ -838,6 +839,7 @@ CONFIG_WATCHDOG=y
838# Watchdog Device Drivers 839# Watchdog Device Drivers
839# 840#
840# CONFIG_SOFT_WATCHDOG is not set 841# CONFIG_SOFT_WATCHDOG is not set
842# CONFIG_MAX63XX_WATCHDOG is not set
841# CONFIG_MPC5200_WDT is not set 843# CONFIG_MPC5200_WDT is not set
842 844
843# 845#
@@ -855,18 +857,20 @@ CONFIG_SSB_POSSIBLE=y
855# Multifunction device drivers 857# Multifunction device drivers
856# 858#
857# CONFIG_MFD_CORE is not set 859# CONFIG_MFD_CORE is not set
860# CONFIG_MFD_88PM860X is not set
858# CONFIG_MFD_SM501 is not set 861# CONFIG_MFD_SM501 is not set
859# CONFIG_HTC_PASIC3 is not set 862# CONFIG_HTC_PASIC3 is not set
860# CONFIG_TWL4030_CORE is not set 863# CONFIG_TWL4030_CORE is not set
861# CONFIG_MFD_TMIO is not set 864# CONFIG_MFD_TMIO is not set
862# CONFIG_PMIC_DA903X is not set 865# CONFIG_PMIC_DA903X is not set
863# CONFIG_PMIC_ADP5520 is not set 866# CONFIG_PMIC_ADP5520 is not set
867# CONFIG_MFD_MAX8925 is not set
864# CONFIG_MFD_WM8400 is not set 868# CONFIG_MFD_WM8400 is not set
865# CONFIG_MFD_WM831X is not set 869# CONFIG_MFD_WM831X is not set
866# CONFIG_MFD_WM8350_I2C is not set 870# CONFIG_MFD_WM8350_I2C is not set
871# CONFIG_MFD_WM8994 is not set
867# CONFIG_MFD_PCF50633 is not set 872# CONFIG_MFD_PCF50633 is not set
868# CONFIG_AB3100_CORE is not set 873# CONFIG_AB3100_CORE is not set
869# CONFIG_MFD_88PM8607 is not set
870# CONFIG_REGULATOR is not set 874# CONFIG_REGULATOR is not set
871# CONFIG_MEDIA_SUPPORT is not set 875# CONFIG_MEDIA_SUPPORT is not set
872 876
@@ -897,7 +901,6 @@ CONFIG_USB=y
897CONFIG_USB_DEVICEFS=y 901CONFIG_USB_DEVICEFS=y
898# CONFIG_USB_DEVICE_CLASS is not set 902# CONFIG_USB_DEVICE_CLASS is not set
899# CONFIG_USB_DYNAMIC_MINORS is not set 903# CONFIG_USB_DYNAMIC_MINORS is not set
900# CONFIG_USB_SUSPEND is not set
901# CONFIG_USB_OTG is not set 904# CONFIG_USB_OTG is not set
902# CONFIG_USB_OTG_WHITELIST is not set 905# CONFIG_USB_OTG_WHITELIST is not set
903# CONFIG_USB_OTG_BLACKLIST_HUB is not set 906# CONFIG_USB_OTG_BLACKLIST_HUB is not set
@@ -975,7 +978,6 @@ CONFIG_USB_STORAGE=y
975# CONFIG_USB_RIO500 is not set 978# CONFIG_USB_RIO500 is not set
976# CONFIG_USB_LEGOTOWER is not set 979# CONFIG_USB_LEGOTOWER is not set
977# CONFIG_USB_LCD is not set 980# CONFIG_USB_LCD is not set
978# CONFIG_USB_BERRY_CHARGE is not set
979# CONFIG_USB_LED is not set 981# CONFIG_USB_LED is not set
980# CONFIG_USB_CYPRESS_CY7C63 is not set 982# CONFIG_USB_CYPRESS_CY7C63 is not set
981# CONFIG_USB_CYTHERM is not set 983# CONFIG_USB_CYTHERM is not set
@@ -987,7 +989,6 @@ CONFIG_USB_STORAGE=y
987# CONFIG_USB_IOWARRIOR is not set 989# CONFIG_USB_IOWARRIOR is not set
988# CONFIG_USB_TEST is not set 990# CONFIG_USB_TEST is not set
989# CONFIG_USB_ISIGHTFW is not set 991# CONFIG_USB_ISIGHTFW is not set
990# CONFIG_USB_VST is not set
991# CONFIG_USB_GADGET is not set 992# CONFIG_USB_GADGET is not set
992 993
993# 994#
@@ -1151,6 +1152,7 @@ CONFIG_JFFS2_ZLIB=y
1151# CONFIG_JFFS2_LZO is not set 1152# CONFIG_JFFS2_LZO is not set
1152CONFIG_JFFS2_RTIME=y 1153CONFIG_JFFS2_RTIME=y
1153# CONFIG_JFFS2_RUBIN is not set 1154# CONFIG_JFFS2_RUBIN is not set
1155# CONFIG_LOGFS is not set
1154CONFIG_CRAMFS=y 1156CONFIG_CRAMFS=y
1155# CONFIG_SQUASHFS is not set 1157# CONFIG_SQUASHFS is not set
1156# CONFIG_VXFS_FS is not set 1158# CONFIG_VXFS_FS is not set
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig
index 61cf73d0000f..7012ac0134f0 100644
--- a/arch/powerpc/configs/mpc5200_defconfig
+++ b/arch/powerpc/configs/mpc5200_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.33-rc2 3# Linux kernel version: 2.6.34-rc1
4# Wed Dec 30 15:08:52 2009 4# Wed Mar 10 14:38:54 2010
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -96,30 +96,37 @@ CONFIG_RCU_FANOUT=32
96# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
97# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
98CONFIG_LOG_BUF_SHIFT=14 98CONFIG_LOG_BUF_SHIFT=14
99# CONFIG_GROUP_SCHED is not set
100# CONFIG_CGROUPS is not set 99# CONFIG_CGROUPS is not set
101CONFIG_SYSFS_DEPRECATED=y 100CONFIG_SYSFS_DEPRECATED=y
102CONFIG_SYSFS_DEPRECATED_V2=y 101CONFIG_SYSFS_DEPRECATED_V2=y
103# CONFIG_RELAY is not set 102# CONFIG_RELAY is not set
104# CONFIG_NAMESPACES is not set 103CONFIG_NAMESPACES=y
104# CONFIG_UTS_NS is not set
105# CONFIG_IPC_NS is not set
106# CONFIG_USER_NS is not set
107# CONFIG_PID_NS is not set
108# CONFIG_NET_NS is not set
105CONFIG_BLK_DEV_INITRD=y 109CONFIG_BLK_DEV_INITRD=y
106CONFIG_INITRAMFS_SOURCE="" 110CONFIG_INITRAMFS_SOURCE=""
107CONFIG_RD_GZIP=y 111CONFIG_RD_GZIP=y
108# CONFIG_RD_BZIP2 is not set 112CONFIG_RD_BZIP2=y
109# CONFIG_RD_LZMA is not set 113CONFIG_RD_LZMA=y
114CONFIG_RD_LZO=y
110# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 115# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
111CONFIG_SYSCTL=y 116CONFIG_SYSCTL=y
112CONFIG_ANON_INODES=y 117CONFIG_ANON_INODES=y
113CONFIG_EMBEDDED=y 118# CONFIG_EMBEDDED is not set
114# CONFIG_SYSCTL_SYSCALL is not set 119CONFIG_SYSCTL_SYSCALL=y
115# CONFIG_KALLSYMS is not set 120CONFIG_KALLSYMS=y
121# CONFIG_KALLSYMS_ALL is not set
122# CONFIG_KALLSYMS_EXTRA_PASS is not set
116CONFIG_HOTPLUG=y 123CONFIG_HOTPLUG=y
117CONFIG_PRINTK=y 124CONFIG_PRINTK=y
118CONFIG_BUG=y 125CONFIG_BUG=y
119CONFIG_ELF_CORE=y 126CONFIG_ELF_CORE=y
120CONFIG_BASE_FULL=y 127CONFIG_BASE_FULL=y
121CONFIG_FUTEX=y 128CONFIG_FUTEX=y
122# CONFIG_EPOLL is not set 129CONFIG_EPOLL=y
123CONFIG_SIGNALFD=y 130CONFIG_SIGNALFD=y
124CONFIG_TIMERFD=y 131CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
@@ -141,6 +148,7 @@ CONFIG_SLUB=y
141# CONFIG_SLOB is not set 148# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 149# CONFIG_PROFILING is not set
143CONFIG_HAVE_OPROFILE=y 150CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 153CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 154CONFIG_HAVE_KPROBES=y
@@ -320,6 +328,7 @@ CONFIG_SUSPEND=y
320CONFIG_SUSPEND_FREEZER=y 328CONFIG_SUSPEND_FREEZER=y
321# CONFIG_HIBERNATION is not set 329# CONFIG_HIBERNATION is not set
322# CONFIG_PM_RUNTIME is not set 330# CONFIG_PM_RUNTIME is not set
331CONFIG_PM_OPS=y
323CONFIG_SECCOMP=y 332CONFIG_SECCOMP=y
324CONFIG_ISA_DMA_API=y 333CONFIG_ISA_DMA_API=y
325 334
@@ -336,7 +345,6 @@ CONFIG_PCI_SYSCALL=y
336# CONFIG_PCIEPORTBUS is not set 345# CONFIG_PCIEPORTBUS is not set
337CONFIG_ARCH_SUPPORTS_MSI=y 346CONFIG_ARCH_SUPPORTS_MSI=y
338# CONFIG_PCI_MSI is not set 347# CONFIG_PCI_MSI is not set
339CONFIG_PCI_LEGACY=y
340# CONFIG_PCI_DEBUG is not set 348# CONFIG_PCI_DEBUG is not set
341# CONFIG_PCI_STUB is not set 349# CONFIG_PCI_STUB is not set
342# CONFIG_PCI_IOV is not set 350# CONFIG_PCI_IOV is not set
@@ -363,7 +371,6 @@ CONFIG_NET=y
363# Networking options 371# Networking options
364# 372#
365CONFIG_PACKET=y 373CONFIG_PACKET=y
366# CONFIG_PACKET_MMAP is not set
367CONFIG_UNIX=y 374CONFIG_UNIX=y
368CONFIG_XFRM=y 375CONFIG_XFRM=y
369CONFIG_XFRM_USER=m 376CONFIG_XFRM_USER=m
@@ -454,7 +461,9 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
454# CONFIG_DEVTMPFS is not set 461# CONFIG_DEVTMPFS is not set
455CONFIG_STANDALONE=y 462CONFIG_STANDALONE=y
456CONFIG_PREVENT_FIRMWARE_BUILD=y 463CONFIG_PREVENT_FIRMWARE_BUILD=y
457# CONFIG_FW_LOADER is not set 464CONFIG_FW_LOADER=y
465CONFIG_FIRMWARE_IN_KERNEL=y
466CONFIG_EXTRA_FIRMWARE=""
458# CONFIG_DEBUG_DRIVER is not set 467# CONFIG_DEBUG_DRIVER is not set
459# CONFIG_DEBUG_DEVRES is not set 468# CONFIG_DEBUG_DEVRES is not set
460# CONFIG_SYS_HYPERVISOR is not set 469# CONFIG_SYS_HYPERVISOR is not set
@@ -554,6 +563,8 @@ CONFIG_MTD_UBI_BEB_RESERVE=1
554# UBI debugging options 563# UBI debugging options
555# 564#
556# CONFIG_MTD_UBI_DEBUG is not set 565# CONFIG_MTD_UBI_DEBUG is not set
566CONFIG_OF_FLATTREE=y
567CONFIG_OF_DYNAMIC=y
557CONFIG_OF_DEVICE=y 568CONFIG_OF_DEVICE=y
558CONFIG_OF_GPIO=y 569CONFIG_OF_GPIO=y
559CONFIG_OF_I2C=y 570CONFIG_OF_I2C=y
@@ -732,6 +743,7 @@ CONFIG_ATA_SFF=y
732# CONFIG_PATA_IT821X is not set 743# CONFIG_PATA_IT821X is not set
733# CONFIG_PATA_IT8213 is not set 744# CONFIG_PATA_IT8213 is not set
734# CONFIG_PATA_JMICRON is not set 745# CONFIG_PATA_JMICRON is not set
746# CONFIG_PATA_LEGACY is not set
735# CONFIG_PATA_TRIFLEX is not set 747# CONFIG_PATA_TRIFLEX is not set
736# CONFIG_PATA_MARVELL is not set 748# CONFIG_PATA_MARVELL is not set
737CONFIG_PATA_MPC52xx=y 749CONFIG_PATA_MPC52xx=y
@@ -770,7 +782,7 @@ CONFIG_PATA_PLATFORM=y
770# 782#
771 783
772# 784#
773# See the help texts for more information. 785# The newer stack is recommended.
774# 786#
775# CONFIG_FIREWIRE is not set 787# CONFIG_FIREWIRE is not set
776# CONFIG_IEEE1394 is not set 788# CONFIG_IEEE1394 is not set
@@ -929,6 +941,7 @@ CONFIG_SERIAL_MPC52xx=y
929CONFIG_SERIAL_MPC52xx_CONSOLE=y 941CONFIG_SERIAL_MPC52xx_CONSOLE=y
930CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200 942CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
931# CONFIG_SERIAL_JSM is not set 943# CONFIG_SERIAL_JSM is not set
944# CONFIG_SERIAL_TIMBERDALE is not set
932# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 945# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
933CONFIG_UNIX98_PTYS=y 946CONFIG_UNIX98_PTYS=y
934# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 947# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -981,6 +994,7 @@ CONFIG_I2C_ALGOBIT=y
981CONFIG_I2C_MPC=y 994CONFIG_I2C_MPC=y
982# CONFIG_I2C_OCORES is not set 995# CONFIG_I2C_OCORES is not set
983# CONFIG_I2C_SIMTEC is not set 996# CONFIG_I2C_SIMTEC is not set
997# CONFIG_I2C_XILINX is not set
984 998
985# 999#
986# External I2C/SMBus adapter drivers 1000# External I2C/SMBus adapter drivers
@@ -1010,9 +1024,9 @@ CONFIG_SPI_MASTER=y
1010# 1024#
1011# SPI Master Controller Drivers 1025# SPI Master Controller Drivers
1012# 1026#
1013# CONFIG_SPI_BITBANG is not set 1027CONFIG_SPI_BITBANG=m
1014# CONFIG_SPI_GPIO is not set 1028CONFIG_SPI_GPIO=m
1015# CONFIG_SPI_MPC52xx is not set 1029CONFIG_SPI_MPC52xx=m
1016CONFIG_SPI_MPC52xx_PSC=m 1030CONFIG_SPI_MPC52xx_PSC=m
1017# CONFIG_SPI_XILINX is not set 1031# CONFIG_SPI_XILINX is not set
1018# CONFIG_SPI_DESIGNWARE is not set 1032# CONFIG_SPI_DESIGNWARE is not set
@@ -1036,14 +1050,18 @@ CONFIG_GPIOLIB=y
1036# 1050#
1037# Memory mapped GPIO expanders: 1051# Memory mapped GPIO expanders:
1038# 1052#
1053# CONFIG_GPIO_IT8761E is not set
1039# CONFIG_GPIO_XILINX is not set 1054# CONFIG_GPIO_XILINX is not set
1055# CONFIG_GPIO_SCH is not set
1040 1056
1041# 1057#
1042# I2C GPIO expanders: 1058# I2C GPIO expanders:
1043# 1059#
1060# CONFIG_GPIO_MAX7300 is not set
1044# CONFIG_GPIO_MAX732X is not set 1061# CONFIG_GPIO_MAX732X is not set
1045# CONFIG_GPIO_PCA953X is not set 1062# CONFIG_GPIO_PCA953X is not set
1046# CONFIG_GPIO_PCF857X is not set 1063# CONFIG_GPIO_PCF857X is not set
1064# CONFIG_GPIO_ADP5588 is not set
1047 1065
1048# 1066#
1049# PCI GPIO expanders: 1067# PCI GPIO expanders:
@@ -1080,10 +1098,11 @@ CONFIG_HWMON=y
1080# CONFIG_SENSORS_ADM1029 is not set 1098# CONFIG_SENSORS_ADM1029 is not set
1081# CONFIG_SENSORS_ADM1031 is not set 1099# CONFIG_SENSORS_ADM1031 is not set
1082# CONFIG_SENSORS_ADM9240 is not set 1100# CONFIG_SENSORS_ADM9240 is not set
1101# CONFIG_SENSORS_ADT7411 is not set
1083# CONFIG_SENSORS_ADT7462 is not set 1102# CONFIG_SENSORS_ADT7462 is not set
1084# CONFIG_SENSORS_ADT7470 is not set 1103# CONFIG_SENSORS_ADT7470 is not set
1085# CONFIG_SENSORS_ADT7473 is not set
1086# CONFIG_SENSORS_ADT7475 is not set 1104# CONFIG_SENSORS_ADT7475 is not set
1105# CONFIG_SENSORS_ASC7621 is not set
1087# CONFIG_SENSORS_ATXP1 is not set 1106# CONFIG_SENSORS_ATXP1 is not set
1088# CONFIG_SENSORS_DS1621 is not set 1107# CONFIG_SENSORS_DS1621 is not set
1089# CONFIG_SENSORS_I5K_AMB is not set 1108# CONFIG_SENSORS_I5K_AMB is not set
@@ -1123,6 +1142,7 @@ CONFIG_HWMON=y
1123# CONFIG_SENSORS_SMSC47M192 is not set 1142# CONFIG_SENSORS_SMSC47M192 is not set
1124# CONFIG_SENSORS_SMSC47B397 is not set 1143# CONFIG_SENSORS_SMSC47B397 is not set
1125# CONFIG_SENSORS_ADS7828 is not set 1144# CONFIG_SENSORS_ADS7828 is not set
1145# CONFIG_SENSORS_AMC6821 is not set
1126# CONFIG_SENSORS_THMC50 is not set 1146# CONFIG_SENSORS_THMC50 is not set
1127# CONFIG_SENSORS_TMP401 is not set 1147# CONFIG_SENSORS_TMP401 is not set
1128# CONFIG_SENSORS_TMP421 is not set 1148# CONFIG_SENSORS_TMP421 is not set
@@ -1147,6 +1167,7 @@ CONFIG_WATCHDOG=y
1147# Watchdog Device Drivers 1167# Watchdog Device Drivers
1148# 1168#
1149# CONFIG_SOFT_WATCHDOG is not set 1169# CONFIG_SOFT_WATCHDOG is not set
1170# CONFIG_MAX63XX_WATCHDOG is not set
1150# CONFIG_ALIM7101_WDT is not set 1171# CONFIG_ALIM7101_WDT is not set
1151# CONFIG_MPC5200_WDT is not set 1172# CONFIG_MPC5200_WDT is not set
1152# CONFIG_WATCHDOG_RTAS is not set 1173# CONFIG_WATCHDOG_RTAS is not set
@@ -1172,22 +1193,27 @@ CONFIG_SSB_POSSIBLE=y
1172# Multifunction device drivers 1193# Multifunction device drivers
1173# 1194#
1174# CONFIG_MFD_CORE is not set 1195# CONFIG_MFD_CORE is not set
1196# CONFIG_MFD_88PM860X is not set
1175# CONFIG_MFD_SM501 is not set 1197# CONFIG_MFD_SM501 is not set
1176# CONFIG_HTC_PASIC3 is not set 1198# CONFIG_HTC_PASIC3 is not set
1199# CONFIG_HTC_I2CPLD is not set
1177# CONFIG_TPS65010 is not set 1200# CONFIG_TPS65010 is not set
1178# CONFIG_TWL4030_CORE is not set 1201# CONFIG_TWL4030_CORE is not set
1179# CONFIG_MFD_TMIO is not set 1202# CONFIG_MFD_TMIO is not set
1180# CONFIG_PMIC_DA903X is not set 1203# CONFIG_PMIC_DA903X is not set
1181# CONFIG_PMIC_ADP5520 is not set 1204# CONFIG_PMIC_ADP5520 is not set
1205# CONFIG_MFD_MAX8925 is not set
1182# CONFIG_MFD_WM8400 is not set 1206# CONFIG_MFD_WM8400 is not set
1183# CONFIG_MFD_WM831X is not set 1207# CONFIG_MFD_WM831X is not set
1184# CONFIG_MFD_WM8350_I2C is not set 1208# CONFIG_MFD_WM8350_I2C is not set
1209# CONFIG_MFD_WM8994 is not set
1185# CONFIG_MFD_PCF50633 is not set 1210# CONFIG_MFD_PCF50633 is not set
1186# CONFIG_MFD_MC13783 is not set 1211# CONFIG_MFD_MC13783 is not set
1187# CONFIG_AB3100_CORE is not set 1212# CONFIG_AB3100_CORE is not set
1188# CONFIG_EZX_PCAP is not set 1213# CONFIG_EZX_PCAP is not set
1189# CONFIG_MFD_88PM8607 is not set
1190# CONFIG_AB4500_CORE is not set 1214# CONFIG_AB4500_CORE is not set
1215# CONFIG_MFD_TIMBERDALE is not set
1216# CONFIG_LPC_SCH is not set
1191# CONFIG_REGULATOR is not set 1217# CONFIG_REGULATOR is not set
1192# CONFIG_MEDIA_SUPPORT is not set 1218# CONFIG_MEDIA_SUPPORT is not set
1193 1219
@@ -1196,6 +1222,7 @@ CONFIG_SSB_POSSIBLE=y
1196# 1222#
1197# CONFIG_AGP is not set 1223# CONFIG_AGP is not set
1198CONFIG_VGA_ARB=y 1224CONFIG_VGA_ARB=y
1225CONFIG_VGA_ARB_MAX_GPUS=16
1199CONFIG_DRM=y 1226CONFIG_DRM=y
1200# CONFIG_DRM_TDFX is not set 1227# CONFIG_DRM_TDFX is not set
1201# CONFIG_DRM_R128 is not set 1228# CONFIG_DRM_R128 is not set
@@ -1309,32 +1336,46 @@ CONFIG_USB_HID=y
1309# 1336#
1310# Special HID drivers 1337# Special HID drivers
1311# 1338#
1339# CONFIG_HID_3M_PCT is not set
1312CONFIG_HID_A4TECH=y 1340CONFIG_HID_A4TECH=y
1313# CONFIG_HID_APPLE is not set 1341CONFIG_HID_APPLE=y
1314CONFIG_HID_BELKIN=y 1342CONFIG_HID_BELKIN=y
1315CONFIG_HID_CHERRY=y 1343CONFIG_HID_CHERRY=y
1316# CONFIG_HID_CHICONY is not set 1344CONFIG_HID_CHICONY=y
1317CONFIG_HID_CYPRESS=y 1345CONFIG_HID_CYPRESS=y
1318# CONFIG_HID_DRAGONRISE is not set 1346CONFIG_HID_DRAGONRISE=y
1347# CONFIG_DRAGONRISE_FF is not set
1319CONFIG_HID_EZKEY=y 1348CONFIG_HID_EZKEY=y
1320# CONFIG_HID_KYE is not set 1349CONFIG_HID_KYE=y
1321# CONFIG_HID_GYRATION is not set 1350CONFIG_HID_GYRATION=y
1322# CONFIG_HID_TWINHAN is not set 1351CONFIG_HID_TWINHAN=y
1323# CONFIG_HID_KENSINGTON is not set 1352CONFIG_HID_KENSINGTON=y
1324# CONFIG_HID_LOGITECH is not set 1353CONFIG_HID_LOGITECH=y
1325# CONFIG_HID_MICROSOFT is not set 1354# CONFIG_LOGITECH_FF is not set
1326# CONFIG_HID_MONTEREY is not set 1355# CONFIG_LOGIRUMBLEPAD2_FF is not set
1356# CONFIG_LOGIG940_FF is not set
1357CONFIG_HID_MICROSOFT=y
1358# CONFIG_HID_MOSART is not set
1359CONFIG_HID_MONTEREY=y
1327# CONFIG_HID_NTRIG is not set 1360# CONFIG_HID_NTRIG is not set
1328# CONFIG_HID_PANTHERLORD is not set 1361CONFIG_HID_ORTEK=y
1329# CONFIG_HID_PETALYNX is not set 1362CONFIG_HID_PANTHERLORD=y
1330# CONFIG_HID_SAMSUNG is not set 1363# CONFIG_PANTHERLORD_FF is not set
1331# CONFIG_HID_SONY is not set 1364CONFIG_HID_PETALYNX=y
1332# CONFIG_HID_SUNPLUS is not set 1365# CONFIG_HID_QUANTA is not set
1333# CONFIG_HID_GREENASIA is not set 1366CONFIG_HID_SAMSUNG=y
1334# CONFIG_HID_SMARTJOYPLUS is not set 1367CONFIG_HID_SONY=y
1335# CONFIG_HID_TOPSEED is not set 1368# CONFIG_HID_STANTUM is not set
1336# CONFIG_HID_THRUSTMASTER is not set 1369CONFIG_HID_SUNPLUS=y
1337# CONFIG_HID_ZEROPLUS is not set 1370CONFIG_HID_GREENASIA=y
1371# CONFIG_GREENASIA_FF is not set
1372CONFIG_HID_SMARTJOYPLUS=y
1373# CONFIG_SMARTJOYPLUS_FF is not set
1374CONFIG_HID_TOPSEED=y
1375CONFIG_HID_THRUSTMASTER=y
1376# CONFIG_THRUSTMASTER_FF is not set
1377CONFIG_HID_ZEROPLUS=y
1378# CONFIG_ZEROPLUS_FF is not set
1338CONFIG_USB_SUPPORT=y 1379CONFIG_USB_SUPPORT=y
1339CONFIG_USB_ARCH_HAS_HCD=y 1380CONFIG_USB_ARCH_HAS_HCD=y
1340CONFIG_USB_ARCH_HAS_OHCI=y 1381CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1349,10 +1390,7 @@ CONFIG_USB=y
1349CONFIG_USB_DEVICEFS=y 1390CONFIG_USB_DEVICEFS=y
1350# CONFIG_USB_DEVICE_CLASS is not set 1391# CONFIG_USB_DEVICE_CLASS is not set
1351# CONFIG_USB_DYNAMIC_MINORS is not set 1392# CONFIG_USB_DYNAMIC_MINORS is not set
1352# CONFIG_USB_SUSPEND is not set
1353# CONFIG_USB_OTG is not set 1393# CONFIG_USB_OTG is not set
1354# CONFIG_USB_OTG_WHITELIST is not set
1355# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1356CONFIG_USB_MON=y 1394CONFIG_USB_MON=y
1357# CONFIG_USB_WUSB is not set 1395# CONFIG_USB_WUSB is not set
1358# CONFIG_USB_WUSB_CBAF is not set 1396# CONFIG_USB_WUSB_CBAF is not set
@@ -1433,7 +1471,6 @@ CONFIG_USB_STORAGE=y
1433# CONFIG_USB_RIO500 is not set 1471# CONFIG_USB_RIO500 is not set
1434# CONFIG_USB_LEGOTOWER is not set 1472# CONFIG_USB_LEGOTOWER is not set
1435# CONFIG_USB_LCD is not set 1473# CONFIG_USB_LCD is not set
1436# CONFIG_USB_BERRY_CHARGE is not set
1437# CONFIG_USB_LED is not set 1474# CONFIG_USB_LED is not set
1438# CONFIG_USB_CYPRESS_CY7C63 is not set 1475# CONFIG_USB_CYPRESS_CY7C63 is not set
1439# CONFIG_USB_CYTHERM is not set 1476# CONFIG_USB_CYTHERM is not set
@@ -1445,7 +1482,6 @@ CONFIG_USB_STORAGE=y
1445# CONFIG_USB_IOWARRIOR is not set 1482# CONFIG_USB_IOWARRIOR is not set
1446# CONFIG_USB_TEST is not set 1483# CONFIG_USB_TEST is not set
1447# CONFIG_USB_ISIGHTFW is not set 1484# CONFIG_USB_ISIGHTFW is not set
1448# CONFIG_USB_VST is not set
1449# CONFIG_USB_GADGET is not set 1485# CONFIG_USB_GADGET is not set
1450 1486
1451# 1487#
@@ -1636,6 +1672,7 @@ CONFIG_UBIFS_FS=m
1636CONFIG_UBIFS_FS_LZO=y 1672CONFIG_UBIFS_FS_LZO=y
1637CONFIG_UBIFS_FS_ZLIB=y 1673CONFIG_UBIFS_FS_ZLIB=y
1638# CONFIG_UBIFS_FS_DEBUG is not set 1674# CONFIG_UBIFS_FS_DEBUG is not set
1675# CONFIG_LOGFS is not set
1639CONFIG_CRAMFS=y 1676CONFIG_CRAMFS=y
1640# CONFIG_SQUASHFS is not set 1677# CONFIG_SQUASHFS is not set
1641# CONFIG_VXFS_FS is not set 1678# CONFIG_VXFS_FS is not set
@@ -1730,8 +1767,11 @@ CONFIG_CRC32=y
1730CONFIG_ZLIB_INFLATE=y 1767CONFIG_ZLIB_INFLATE=y
1731CONFIG_ZLIB_DEFLATE=y 1768CONFIG_ZLIB_DEFLATE=y
1732CONFIG_LZO_COMPRESS=m 1769CONFIG_LZO_COMPRESS=m
1733CONFIG_LZO_DECOMPRESS=m 1770CONFIG_LZO_DECOMPRESS=y
1734CONFIG_DECOMPRESS_GZIP=y 1771CONFIG_DECOMPRESS_GZIP=y
1772CONFIG_DECOMPRESS_BZIP2=y
1773CONFIG_DECOMPRESS_LZMA=y
1774CONFIG_DECOMPRESS_LZO=y
1735CONFIG_HAS_IOMEM=y 1775CONFIG_HAS_IOMEM=y
1736CONFIG_HAS_IOPORT=y 1776CONFIG_HAS_IOPORT=y
1737CONFIG_HAS_DMA=y 1777CONFIG_HAS_DMA=y
@@ -1776,11 +1816,11 @@ CONFIG_SCHED_DEBUG=y
1776# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1816# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1777# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1817# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1778# CONFIG_DEBUG_KOBJECT is not set 1818# CONFIG_DEBUG_KOBJECT is not set
1779# CONFIG_DEBUG_BUGVERBOSE is not set 1819CONFIG_DEBUG_BUGVERBOSE=y
1780CONFIG_DEBUG_INFO=y 1820CONFIG_DEBUG_INFO=y
1781# CONFIG_DEBUG_VM is not set 1821# CONFIG_DEBUG_VM is not set
1782# CONFIG_DEBUG_WRITECOUNT is not set 1822# CONFIG_DEBUG_WRITECOUNT is not set
1783# CONFIG_DEBUG_MEMORY_INIT is not set 1823CONFIG_DEBUG_MEMORY_INIT=y
1784# CONFIG_DEBUG_LIST is not set 1824# CONFIG_DEBUG_LIST is not set
1785# CONFIG_DEBUG_SG is not set 1825# CONFIG_DEBUG_SG is not set
1786# CONFIG_DEBUG_NOTIFIERS is not set 1826# CONFIG_DEBUG_NOTIFIERS is not set
diff --git a/arch/powerpc/include/asm/asm-compat.h b/arch/powerpc/include/asm/asm-compat.h
index c1b475a941eb..a9b91ed3d4b9 100644
--- a/arch/powerpc/include/asm/asm-compat.h
+++ b/arch/powerpc/include/asm/asm-compat.h
@@ -28,6 +28,7 @@
28#define PPC_LLARX(t, a, b, eh) PPC_LDARX(t, a, b, eh) 28#define PPC_LLARX(t, a, b, eh) PPC_LDARX(t, a, b, eh)
29#define PPC_STLCX stringify_in_c(stdcx.) 29#define PPC_STLCX stringify_in_c(stdcx.)
30#define PPC_CNTLZL stringify_in_c(cntlzd) 30#define PPC_CNTLZL stringify_in_c(cntlzd)
31#define PPC_LR_STKOFF 16
31 32
32/* Move to CR, single-entry optimized version. Only available 33/* Move to CR, single-entry optimized version. Only available
33 * on POWER4 and later. 34 * on POWER4 and later.
@@ -51,6 +52,7 @@
51#define PPC_STLCX stringify_in_c(stwcx.) 52#define PPC_STLCX stringify_in_c(stwcx.)
52#define PPC_CNTLZL stringify_in_c(cntlzw) 53#define PPC_CNTLZL stringify_in_c(cntlzw)
53#define PPC_MTOCRF stringify_in_c(mtcrf) 54#define PPC_MTOCRF stringify_in_c(mtcrf)
55#define PPC_LR_STKOFF 4
54 56
55#endif 57#endif
56 58
diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h
index aea714797590..d553bbeb726c 100644
--- a/arch/powerpc/include/asm/ppc-opcode.h
+++ b/arch/powerpc/include/asm/ppc-opcode.h
@@ -25,7 +25,7 @@
25#define PPC_INST_LDARX 0x7c0000a8 25#define PPC_INST_LDARX 0x7c0000a8
26#define PPC_INST_LSWI 0x7c0004aa 26#define PPC_INST_LSWI 0x7c0004aa
27#define PPC_INST_LSWX 0x7c00042a 27#define PPC_INST_LSWX 0x7c00042a
28#define PPC_INST_LWARX 0x7c000029 28#define PPC_INST_LWARX 0x7c000028
29#define PPC_INST_LWSYNC 0x7c2004ac 29#define PPC_INST_LWSYNC 0x7c2004ac
30#define PPC_INST_LXVD2X 0x7c000698 30#define PPC_INST_LXVD2X 0x7c000698
31#define PPC_INST_MCRXR 0x7c000400 31#define PPC_INST_MCRXR 0x7c000400
@@ -62,8 +62,8 @@
62#define __PPC_T_TLB(t) (((t) & 0x3) << 21) 62#define __PPC_T_TLB(t) (((t) & 0x3) << 21)
63#define __PPC_WC(w) (((w) & 0x3) << 21) 63#define __PPC_WC(w) (((w) & 0x3) << 21)
64/* 64/*
65 * Only use the larx hint bit on 64bit CPUs. Once we verify it doesn't have 65 * Only use the larx hint bit on 64bit CPUs. e500v1/v2 based CPUs will treat a
66 * any side effects on all 32bit processors, we can do this all the time. 66 * larx with EH set as an illegal instruction.
67 */ 67 */
68#ifdef CONFIG_PPC64 68#ifdef CONFIG_PPC64
69#define __PPC_EH(eh) (((eh) & 0x1) << 0) 69#define __PPC_EH(eh) (((eh) & 0x1) << 0)
diff --git a/arch/powerpc/include/asm/syscall.h b/arch/powerpc/include/asm/syscall.h
index efa7f0b879f3..23913e902fc3 100644
--- a/arch/powerpc/include/asm/syscall.h
+++ b/arch/powerpc/include/asm/syscall.h
@@ -30,7 +30,7 @@ static inline void syscall_rollback(struct task_struct *task,
30static inline long syscall_get_error(struct task_struct *task, 30static inline long syscall_get_error(struct task_struct *task,
31 struct pt_regs *regs) 31 struct pt_regs *regs)
32{ 32{
33 return (regs->ccr & 0x1000) ? -regs->gpr[3] : 0; 33 return (regs->ccr & 0x10000000) ? -regs->gpr[3] : 0;
34} 34}
35 35
36static inline long syscall_get_return_value(struct task_struct *task, 36static inline long syscall_get_return_value(struct task_struct *task,
@@ -44,10 +44,10 @@ static inline void syscall_set_return_value(struct task_struct *task,
44 int error, long val) 44 int error, long val)
45{ 45{
46 if (error) { 46 if (error) {
47 regs->ccr |= 0x1000L; 47 regs->ccr |= 0x10000000L;
48 regs->gpr[3] = -error; 48 regs->gpr[3] = -error;
49 } else { 49 } else {
50 regs->ccr &= ~0x1000L; 50 regs->ccr &= ~0x10000000L;
51 regs->gpr[3] = val; 51 regs->gpr[3] = val;
52 } 52 }
53} 53}
diff --git a/arch/powerpc/kernel/cacheinfo.c b/arch/powerpc/kernel/cacheinfo.c
index 01fe9ce28379..a3c684b4c862 100644
--- a/arch/powerpc/kernel/cacheinfo.c
+++ b/arch/powerpc/kernel/cacheinfo.c
@@ -19,6 +19,7 @@
19#include <linux/notifier.h> 19#include <linux/notifier.h>
20#include <linux/of.h> 20#include <linux/of.h>
21#include <linux/percpu.h> 21#include <linux/percpu.h>
22#include <linux/slab.h>
22#include <asm/prom.h> 23#include <asm/prom.h>
23 24
24#include "cacheinfo.h" 25#include "cacheinfo.h"
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c
index 6215062caf8c..6c1df5757cd6 100644
--- a/arch/powerpc/kernel/dma.c
+++ b/arch/powerpc/kernel/dma.c
@@ -8,6 +8,7 @@
8#include <linux/device.h> 8#include <linux/device.h>
9#include <linux/dma-mapping.h> 9#include <linux/dma-mapping.h>
10#include <linux/dma-debug.h> 10#include <linux/dma-debug.h>
11#include <linux/gfp.h>
11#include <linux/lmb.h> 12#include <linux/lmb.h>
12#include <asm/bug.h> 13#include <asm/bug.h>
13#include <asm/abs_addr.h> 14#include <asm/abs_addr.h>
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 25793bb0e782..725526547994 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -747,9 +747,6 @@ finish_tlb_load:
747#else 747#else
748 rlwimi r12, r11, 26, 27, 31 /* extract WIMGE from pte */ 748 rlwimi r12, r11, 26, 27, 31 /* extract WIMGE from pte */
749#endif 749#endif
750#ifdef CONFIG_SMP
751 ori r12, r12, MAS2_M
752#endif
753 mtspr SPRN_MAS2, r12 750 mtspr SPRN_MAS2, r12
754 751
755#ifdef CONFIG_PTE_64BIT 752#ifdef CONFIG_PTE_64BIT
@@ -887,13 +884,17 @@ KernelSPE:
887 lwz r3,_MSR(r1) 884 lwz r3,_MSR(r1)
888 oris r3,r3,MSR_SPE@h 885 oris r3,r3,MSR_SPE@h
889 stw r3,_MSR(r1) /* enable use of SPE after return */ 886 stw r3,_MSR(r1) /* enable use of SPE after return */
887#ifdef CONFIG_PRINTK
890 lis r3,87f@h 888 lis r3,87f@h
891 ori r3,r3,87f@l 889 ori r3,r3,87f@l
892 mr r4,r2 /* current */ 890 mr r4,r2 /* current */
893 lwz r5,_NIP(r1) 891 lwz r5,_NIP(r1)
894 bl printk 892 bl printk
893#endif
895 b ret_from_except 894 b ret_from_except
895#ifdef CONFIG_PRINTK
89687: .string "SPE used in kernel (task=%p, pc=%x) \n" 89687: .string "SPE used in kernel (task=%p, pc=%x) \n"
897#endif
897 .align 4,0 898 .align 4,0
898 899
899#endif /* CONFIG_SPE */ 900#endif /* CONFIG_SPE */
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index a4c8b38b0ba1..71cf280da184 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/arch/powerpc/kernel/ibmebus.c
@@ -42,6 +42,7 @@
42#include <linux/dma-mapping.h> 42#include <linux/dma-mapping.h>
43#include <linux/interrupt.h> 43#include <linux/interrupt.h>
44#include <linux/of.h> 44#include <linux/of.h>
45#include <linux/slab.h>
45#include <linux/of_platform.h> 46#include <linux/of_platform.h>
46#include <asm/ibmebus.h> 47#include <asm/ibmebus.h>
47#include <asm/abs_addr.h> 48#include <asm/abs_addr.h>
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 5547ae6e6b0b..ec94f906ea43 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -42,12 +42,7 @@
42 42
43#define DBG(...) 43#define DBG(...)
44 44
45#ifdef CONFIG_IOMMU_VMERGE 45static int novmerge;
46static int novmerge = 0;
47#else
48static int novmerge = 1;
49#endif
50
51static int protect4gb = 1; 46static int protect4gb = 1;
52 47
53static void __iommu_free(struct iommu_table *, dma_addr_t, unsigned int); 48static void __iommu_free(struct iommu_table *, dma_addr_t, unsigned int);
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index 3fd1af902112..b36f074524ad 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -31,6 +31,7 @@
31#include <linux/preempt.h> 31#include <linux/preempt.h>
32#include <linux/module.h> 32#include <linux/module.h>
33#include <linux/kdebug.h> 33#include <linux/kdebug.h>
34#include <linux/slab.h>
34#include <asm/cacheflush.h> 35#include <asm/cacheflush.h>
35#include <asm/sstep.h> 36#include <asm/sstep.h>
36#include <asm/uaccess.h> 37#include <asm/uaccess.h>
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
index d09d1c615150..c2c70e1b32cd 100644
--- a/arch/powerpc/kernel/lparcfg.c
+++ b/arch/powerpc/kernel/lparcfg.c
@@ -24,6 +24,7 @@
24#include <linux/proc_fs.h> 24#include <linux/proc_fs.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/seq_file.h> 26#include <linux/seq_file.h>
27#include <linux/slab.h>
27#include <asm/uaccess.h> 28#include <asm/uaccess.h>
28#include <asm/iseries/hv_lp_config.h> 29#include <asm/iseries/hv_lp_config.h>
29#include <asm/lppaca.h> 30#include <asm/lppaca.h>
diff --git a/arch/powerpc/kernel/misc.S b/arch/powerpc/kernel/misc.S
index 2d29752cbe16..22e507c8a556 100644
--- a/arch/powerpc/kernel/misc.S
+++ b/arch/powerpc/kernel/misc.S
@@ -127,3 +127,29 @@ _GLOBAL(__setup_cpu_power7)
127_GLOBAL(__restore_cpu_power7) 127_GLOBAL(__restore_cpu_power7)
128 /* place holder */ 128 /* place holder */
129 blr 129 blr
130
131/*
132 * Get a minimal set of registers for our caller's nth caller.
133 * r3 = regs pointer, r5 = n.
134 *
135 * We only get R1 (stack pointer), NIP (next instruction pointer)
136 * and LR (link register). These are all we can get in the
137 * general case without doing complicated stack unwinding, but
138 * fortunately they are enough to do a stack backtrace, which
139 * is all we need them for.
140 */
141_GLOBAL(perf_arch_fetch_caller_regs)
142 mr r6,r1
143 cmpwi r5,0
144 mflr r4
145 ble 2f
146 mtctr r5
1471: PPC_LL r6,0(r6)
148 bdnz 1b
149 PPC_LL r4,PPC_LR_STKOFF(r6)
1502: PPC_LL r7,0(r6)
151 PPC_LL r7,PPC_LR_STKOFF(r7)
152 PPC_STL r6,GPR1-STACK_FRAME_OVERHEAD(r3)
153 PPC_STL r4,_NIP-STACK_FRAME_OVERHEAD(r3)
154 PPC_STL r7,_LINK-STACK_FRAME_OVERHEAD(r3)
155 blr
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c
index 666d08db319e..6c1dfc3ff8bc 100644
--- a/arch/powerpc/kernel/of_platform.c
+++ b/arch/powerpc/kernel/of_platform.c
@@ -17,7 +17,6 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/mod_devicetable.h> 19#include <linux/mod_devicetable.h>
20#include <linux/slab.h>
21#include <linux/pci.h> 20#include <linux/pci.h>
22#include <linux/of.h> 21#include <linux/of.h>
23#include <linux/of_device.h> 22#include <linux/of_device.h>
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index f3c42ce516e7..0c0567e58409 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -26,6 +26,7 @@
26#include <linux/syscalls.h> 26#include <linux/syscalls.h>
27#include <linux/irq.h> 27#include <linux/irq.h>
28#include <linux/vmalloc.h> 28#include <linux/vmalloc.h>
29#include <linux/slab.h>
29 30
30#include <asm/processor.h> 31#include <asm/processor.h>
31#include <asm/io.h> 32#include <asm/io.h>
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index c13668cf36d9..e7db5b48004a 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -14,6 +14,7 @@
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <linux/list.h> 15#include <linux/list.h>
16#include <linux/of.h> 16#include <linux/of.h>
17#include <linux/slab.h>
17 18
18#include <asm/processor.h> 19#include <asm/processor.h>
19#include <asm/io.h> 20#include <asm/io.h>
diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c
index d5e36e5dc7c2..d56b35ee7f74 100644
--- a/arch/powerpc/kernel/pci_dn.c
+++ b/arch/powerpc/kernel/pci_dn.c
@@ -23,6 +23,7 @@
23#include <linux/pci.h> 23#include <linux/pci.h>
24#include <linux/string.h> 24#include <linux/string.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/gfp.h>
26 27
27#include <asm/io.h> 28#include <asm/io.h>
28#include <asm/prom.h> 29#include <asm/prom.h>
diff --git a/arch/powerpc/kernel/perf_event.c b/arch/powerpc/kernel/perf_event.c
index b6cf8f1f4d35..08460a2e9f41 100644
--- a/arch/powerpc/kernel/perf_event.c
+++ b/arch/powerpc/kernel/perf_event.c
@@ -1164,10 +1164,10 @@ static void record_and_restart(struct perf_event *event, unsigned long val,
1164 * Finally record data if requested. 1164 * Finally record data if requested.
1165 */ 1165 */
1166 if (record) { 1166 if (record) {
1167 struct perf_sample_data data = { 1167 struct perf_sample_data data;
1168 .addr = ~0ULL, 1168
1169 .period = event->hw.last_period, 1169 perf_sample_data_init(&data, ~0ULL);
1170 }; 1170 data.period = event->hw.last_period;
1171 1171
1172 if (event->attr.sample_type & PERF_SAMPLE_ADDR) 1172 if (event->attr.sample_type & PERF_SAMPLE_ADDR)
1173 perf_get_data_addr(regs, &data.addr); 1173 perf_get_data_addr(regs, &data.addr);
@@ -1287,7 +1287,7 @@ static void perf_event_interrupt(struct pt_regs *regs)
1287 irq_exit(); 1287 irq_exit();
1288} 1288}
1289 1289
1290void hw_perf_event_setup(int cpu) 1290static void power_pmu_setup(int cpu)
1291{ 1291{
1292 struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu); 1292 struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu);
1293 1293
@@ -1297,6 +1297,23 @@ void hw_perf_event_setup(int cpu)
1297 cpuhw->mmcr[0] = MMCR0_FC; 1297 cpuhw->mmcr[0] = MMCR0_FC;
1298} 1298}
1299 1299
1300static int __cpuinit
1301power_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu)
1302{
1303 unsigned int cpu = (long)hcpu;
1304
1305 switch (action & ~CPU_TASKS_FROZEN) {
1306 case CPU_UP_PREPARE:
1307 power_pmu_setup(cpu);
1308 break;
1309
1310 default:
1311 break;
1312 }
1313
1314 return NOTIFY_OK;
1315}
1316
1300int register_power_pmu(struct power_pmu *pmu) 1317int register_power_pmu(struct power_pmu *pmu)
1301{ 1318{
1302 if (ppmu) 1319 if (ppmu)
@@ -1314,5 +1331,7 @@ int register_power_pmu(struct power_pmu *pmu)
1314 freeze_events_kernel = MMCR0_FCHV; 1331 freeze_events_kernel = MMCR0_FCHV;
1315#endif /* CONFIG_PPC64 */ 1332#endif /* CONFIG_PPC64 */
1316 1333
1334 perf_cpu_notifier(power_pmu_notifier);
1335
1317 return 0; 1336 return 0;
1318} 1337}
diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c
index 1ed3b8d7981e..c8ae3714e79b 100644
--- a/arch/powerpc/kernel/proc_powerpc.c
+++ b/arch/powerpc/kernel/proc_powerpc.c
@@ -19,7 +19,6 @@
19#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/proc_fs.h> 21#include <linux/proc_fs.h>
22#include <linux/slab.h>
23#include <linux/kernel.h> 22#include <linux/kernel.h>
24 23
25#include <asm/machdep.h> 24#include <asm/machdep.h>
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index fd0d29493fd6..74367841615a 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -23,6 +23,7 @@
23#include <linux/completion.h> 23#include <linux/completion.h>
24#include <linux/cpumask.h> 24#include <linux/cpumask.h>
25#include <linux/lmb.h> 25#include <linux/lmb.h>
26#include <linux/slab.h>
26 27
27#include <asm/prom.h> 28#include <asm/prom.h>
28#include <asm/rtas.h> 29#include <asm/rtas.h>
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
index a85117d5c9a4..bfc2abafac44 100644
--- a/arch/powerpc/kernel/rtas_flash.c
+++ b/arch/powerpc/kernel/rtas_flash.c
@@ -15,6 +15,7 @@
15 15
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/slab.h>
18#include <linux/proc_fs.h> 19#include <linux/proc_fs.h>
19#include <asm/delay.h> 20#include <asm/delay.h>
20#include <asm/uaccess.h> 21#include <asm/uaccess.h>
diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c
index 2e4832ab2108..4190eae7850a 100644
--- a/arch/powerpc/kernel/rtasd.c
+++ b/arch/powerpc/kernel/rtasd.c
@@ -20,6 +20,7 @@
20#include <linux/spinlock.h> 20#include <linux/spinlock.h>
21#include <linux/cpu.h> 21#include <linux/cpu.h>
22#include <linux/workqueue.h> 22#include <linux/workqueue.h>
23#include <linux/slab.h>
23 24
24#include <asm/uaccess.h> 25#include <asm/uaccess.h>
25#include <asm/io.h> 26#include <asm/io.h>
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c
index b152de3e64d4..8f58986c2ad9 100644
--- a/arch/powerpc/kernel/setup_32.c
+++ b/arch/powerpc/kernel/setup_32.c
@@ -39,7 +39,6 @@
39#include <asm/serial.h> 39#include <asm/serial.h>
40#include <asm/udbg.h> 40#include <asm/udbg.h>
41#include <asm/mmu_context.h> 41#include <asm/mmu_context.h>
42#include <asm/swiotlb.h>
43 42
44#include "setup.h" 43#include "setup.h"
45 44
@@ -343,11 +342,6 @@ void __init setup_arch(char **cmdline_p)
343 ppc_md.setup_arch(); 342 ppc_md.setup_arch();
344 if ( ppc_md.progress ) ppc_md.progress("arch: exit", 0x3eab); 343 if ( ppc_md.progress ) ppc_md.progress("arch: exit", 0x3eab);
345 344
346#ifdef CONFIG_SWIOTLB
347 if (ppc_swiotlb_enable)
348 swiotlb_init(1);
349#endif
350
351 paging_init(); 345 paging_init();
352 346
353 /* Initialize the MMU context management stuff */ 347 /* Initialize the MMU context management stuff */
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 63547394048c..914389158a9b 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -61,7 +61,6 @@
61#include <asm/xmon.h> 61#include <asm/xmon.h>
62#include <asm/udbg.h> 62#include <asm/udbg.h>
63#include <asm/kexec.h> 63#include <asm/kexec.h>
64#include <asm/swiotlb.h>
65#include <asm/mmu_context.h> 64#include <asm/mmu_context.h>
66 65
67#include "setup.h" 66#include "setup.h"
@@ -541,11 +540,6 @@ void __init setup_arch(char **cmdline_p)
541 if (ppc_md.setup_arch) 540 if (ppc_md.setup_arch)
542 ppc_md.setup_arch(); 541 ppc_md.setup_arch();
543 542
544#ifdef CONFIG_SWIOTLB
545 if (ppc_swiotlb_enable)
546 swiotlb_init(1);
547#endif
548
549 paging_init(); 543 paging_init();
550 544
551 /* Initialize the MMU context management stuff */ 545 /* Initialize the MMU context management stuff */
diff --git a/arch/powerpc/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c
index a5e54526403d..03e45c4a9ef1 100644
--- a/arch/powerpc/kernel/smp-tbsync.c
+++ b/arch/powerpc/kernel/smp-tbsync.c
@@ -10,6 +10,7 @@
10#include <linux/smp.h> 10#include <linux/smp.h>
11#include <linux/unistd.h> 11#include <linux/unistd.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/slab.h>
13#include <asm/atomic.h> 14#include <asm/atomic.h>
14#include <asm/smp.h> 15#include <asm/smp.h>
15#include <asm/time.h> 16#include <asm/time.h>
diff --git a/arch/powerpc/kernel/softemu8xx.c b/arch/powerpc/kernel/softemu8xx.c
index 23c8c5e7dc4d..af0e8290b4fc 100644
--- a/arch/powerpc/kernel/softemu8xx.c
+++ b/arch/powerpc/kernel/softemu8xx.c
@@ -21,7 +21,6 @@
21#include <linux/stddef.h> 21#include <linux/stddef.h>
22#include <linux/unistd.h> 22#include <linux/unistd.h>
23#include <linux/ptrace.h> 23#include <linux/ptrace.h>
24#include <linux/slab.h>
25#include <linux/user.h> 24#include <linux/user.h>
26#include <linux/interrupt.h> 25#include <linux/interrupt.h>
27 26
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
index c5a4732bcc48..19471a1cef1a 100644
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@ -41,6 +41,7 @@
41#include <linux/ptrace.h> 41#include <linux/ptrace.h>
42#include <linux/elf.h> 42#include <linux/elf.h>
43#include <linux/ipc.h> 43#include <linux/ipc.h>
44#include <linux/slab.h>
44 45
45#include <asm/ptrace.h> 46#include <asm/ptrace.h>
46#include <asm/types.h> 47#include <asm/types.h>
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 696626a2e835..29d128eb6c43 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -21,7 +21,6 @@
21#include <linux/stddef.h> 21#include <linux/stddef.h>
22#include <linux/unistd.h> 22#include <linux/unistd.h>
23#include <linux/ptrace.h> 23#include <linux/ptrace.h>
24#include <linux/slab.h>
25#include <linux/user.h> 24#include <linux/user.h>
26#include <linux/interrupt.h> 25#include <linux/interrupt.h>
27#include <linux/init.h> 26#include <linux/init.h>
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 77f64218abf3..82237176a2a3 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -17,6 +17,7 @@
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/device.h> 18#include <linux/device.h>
19#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/slab.h>
20#include <linux/console.h> 21#include <linux/console.h>
21#include <linux/module.h> 22#include <linux/module.h>
22#include <linux/mm.h> 23#include <linux/mm.h>
diff --git a/arch/powerpc/kvm/44x.c b/arch/powerpc/kvm/44x.c
index f4d1b55aa70b..689a57c2ac80 100644
--- a/arch/powerpc/kvm/44x.c
+++ b/arch/powerpc/kvm/44x.c
@@ -18,6 +18,7 @@
18 */ 18 */
19 19
20#include <linux/kvm_host.h> 20#include <linux/kvm_host.h>
21#include <linux/slab.h>
21#include <linux/err.h> 22#include <linux/err.h>
22 23
23#include <asm/reg.h> 24#include <asm/reg.h>
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
index 9a271f0929c7..604af29b71ed 100644
--- a/arch/powerpc/kvm/book3s.c
+++ b/arch/powerpc/kvm/book3s.c
@@ -26,6 +26,7 @@
26#include <asm/kvm_ppc.h> 26#include <asm/kvm_ppc.h>
27#include <asm/kvm_book3s.h> 27#include <asm/kvm_book3s.h>
28#include <asm/mmu_context.h> 28#include <asm/mmu_context.h>
29#include <linux/gfp.h>
29#include <linux/sched.h> 30#include <linux/sched.h>
30#include <linux/vmalloc.h> 31#include <linux/vmalloc.h>
31 32
@@ -1003,7 +1004,8 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1003 struct kvm_vcpu *vcpu; 1004 struct kvm_vcpu *vcpu;
1004 ulong ga, ga_end; 1005 ulong ga, ga_end;
1005 int is_dirty = 0; 1006 int is_dirty = 0;
1006 int r, n; 1007 int r;
1008 unsigned long n;
1007 1009
1008 mutex_lock(&kvm->slots_lock); 1010 mutex_lock(&kvm->slots_lock);
1009 1011
@@ -1021,7 +1023,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1021 kvm_for_each_vcpu(n, vcpu, kvm) 1023 kvm_for_each_vcpu(n, vcpu, kvm)
1022 kvmppc_mmu_pte_pflush(vcpu, ga, ga_end); 1024 kvmppc_mmu_pte_pflush(vcpu, ga, ga_end);
1023 1025
1024 n = ALIGN(memslot->npages, BITS_PER_LONG) / 8; 1026 n = kvm_dirty_bitmap_bytes(memslot);
1025 memset(memslot->dirty_bitmap, 0, n); 1027 memset(memslot->dirty_bitmap, 0, n);
1026 } 1028 }
1027 1029
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 4d686cc6b260..2a3a1953d4bd 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -21,6 +21,7 @@
21#include <linux/errno.h> 21#include <linux/errno.h>
22#include <linux/err.h> 22#include <linux/err.h>
23#include <linux/kvm_host.h> 23#include <linux/kvm_host.h>
24#include <linux/gfp.h>
24#include <linux/module.h> 25#include <linux/module.h>
25#include <linux/vmalloc.h> 26#include <linux/vmalloc.h>
26#include <linux/fs.h> 27#include <linux/fs.h>
diff --git a/arch/powerpc/kvm/e500.c b/arch/powerpc/kvm/e500.c
index efa1198940ab..669a5c5fc7d7 100644
--- a/arch/powerpc/kvm/e500.c
+++ b/arch/powerpc/kvm/e500.c
@@ -13,6 +13,7 @@
13 */ 13 */
14 14
15#include <linux/kvm_host.h> 15#include <linux/kvm_host.h>
16#include <linux/slab.h>
16#include <linux/err.h> 17#include <linux/err.h>
17 18
18#include <asm/reg.h> 19#include <asm/reg.h>
diff --git a/arch/powerpc/kvm/e500_tlb.c b/arch/powerpc/kvm/e500_tlb.c
index 0d772e6b6318..21011e12caeb 100644
--- a/arch/powerpc/kvm/e500_tlb.c
+++ b/arch/powerpc/kvm/e500_tlb.c
@@ -13,6 +13,7 @@
13 */ 13 */
14 14
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/slab.h>
16#include <linux/string.h> 17#include <linux/string.h>
17#include <linux/kvm.h> 18#include <linux/kvm.h>
18#include <linux/kvm_host.h> 19#include <linux/kvm_host.h>
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 51aedd7f16bc..297fcd2ff7d0 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -25,6 +25,7 @@
25#include <linux/vmalloc.h> 25#include <linux/vmalloc.h>
26#include <linux/hrtimer.h> 26#include <linux/hrtimer.h>
27#include <linux/fs.h> 27#include <linux/fs.h>
28#include <linux/slab.h>
28#include <asm/cputable.h> 29#include <asm/cputable.h>
29#include <asm/uaccess.h> 30#include <asm/uaccess.h>
30#include <asm/kvm_ppc.h> 31#include <asm/kvm_ppc.h>
diff --git a/arch/powerpc/lib/devres.c b/arch/powerpc/lib/devres.c
index 292115d98ea9..deac4d30daf4 100644
--- a/arch/powerpc/lib/devres.c
+++ b/arch/powerpc/lib/devres.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/device.h> /* devres_*(), devm_ioremap_release() */ 10#include <linux/device.h> /* devres_*(), devm_ioremap_release() */
11#include <linux/gfp.h>
11#include <linux/io.h> /* ioremap_flags() */ 12#include <linux/io.h> /* ioremap_flags() */
12#include <linux/module.h> /* EXPORT_SYMBOL() */ 13#include <linux/module.h> /* EXPORT_SYMBOL() */
13 14
diff --git a/arch/powerpc/mm/dma-noncoherent.c b/arch/powerpc/mm/dma-noncoherent.c
index 36692f5c9a76..757c0bed9a91 100644
--- a/arch/powerpc/mm/dma-noncoherent.c
+++ b/arch/powerpc/mm/dma-noncoherent.c
@@ -23,6 +23,7 @@
23 */ 23 */
24 24
25#include <linux/sched.h> 25#include <linux/sched.h>
26#include <linux/slab.h>
26#include <linux/kernel.h> 27#include <linux/kernel.h>
27#include <linux/errno.h> 28#include <linux/errno.h>
28#include <linux/string.h> 29#include <linux/string.h>
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 123f7070238a..9bb249c3046e 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -9,6 +9,7 @@
9 9
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/io.h> 11#include <linux/io.h>
12#include <linux/slab.h>
12#include <linux/hugetlb.h> 13#include <linux/hugetlb.h>
13#include <asm/pgtable.h> 14#include <asm/pgtable.h>
14#include <asm/pgalloc.h> 15#include <asm/pgalloc.h>
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index b1dbd9ee87cc..767333005eb4 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -31,6 +31,7 @@
31#include <linux/initrd.h> 31#include <linux/initrd.h>
32#include <linux/pagemap.h> 32#include <linux/pagemap.h>
33#include <linux/lmb.h> 33#include <linux/lmb.h>
34#include <linux/gfp.h>
34 35
35#include <asm/pgalloc.h> 36#include <asm/pgalloc.h>
36#include <asm/prom.h> 37#include <asm/prom.h>
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index 776f28d02b6b..d7fa50b09b4a 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -42,6 +42,7 @@
42#include <linux/poison.h> 42#include <linux/poison.h>
43#include <linux/lmb.h> 43#include <linux/lmb.h>
44#include <linux/hugetlb.h> 44#include <linux/hugetlb.h>
45#include <linux/slab.h>
45 46
46#include <asm/pgalloc.h> 47#include <asm/pgalloc.h>
47#include <asm/page.h> 48#include <asm/page.h>
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 311224cdb7ad..0f594d774bf7 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -22,6 +22,7 @@
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/errno.h> 23#include <linux/errno.h>
24#include <linux/string.h> 24#include <linux/string.h>
25#include <linux/gfp.h>
25#include <linux/types.h> 26#include <linux/types.h>
26#include <linux/mm.h> 27#include <linux/mm.h>
27#include <linux/stddef.h> 28#include <linux/stddef.h>
@@ -48,6 +49,7 @@
48#include <asm/sparsemem.h> 49#include <asm/sparsemem.h>
49#include <asm/vdso.h> 50#include <asm/vdso.h>
50#include <asm/fixmap.h> 51#include <asm/fixmap.h>
52#include <asm/swiotlb.h>
51 53
52#include "mmu_decl.h" 54#include "mmu_decl.h"
53 55
@@ -320,6 +322,11 @@ void __init mem_init(void)
320 struct page *page; 322 struct page *page;
321 unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; 323 unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize;
322 324
325#ifdef CONFIG_SWIOTLB
326 if (ppc_swiotlb_enable)
327 swiotlb_init(1);
328#endif
329
323 num_physpages = lmb.memory.size >> PAGE_SHIFT; 330 num_physpages = lmb.memory.size >> PAGE_SHIFT;
324 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); 331 high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
325 332
diff --git a/arch/powerpc/mm/mmu_context_hash64.c b/arch/powerpc/mm/mmu_context_hash64.c
index 51622daae09d..2535828aa84b 100644
--- a/arch/powerpc/mm/mmu_context_hash64.c
+++ b/arch/powerpc/mm/mmu_context_hash64.c
@@ -19,6 +19,7 @@
19#include <linux/spinlock.h> 19#include <linux/spinlock.h>
20#include <linux/idr.h> 20#include <linux/idr.h>
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/gfp.h>
22 23
23#include <asm/mmu_context.h> 24#include <asm/mmu_context.h>
24 25
diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c
index dbc692145ecb..1f2d9ff09895 100644
--- a/arch/powerpc/mm/mmu_context_nohash.c
+++ b/arch/powerpc/mm/mmu_context_nohash.c
@@ -47,6 +47,7 @@
47#include <linux/bootmem.h> 47#include <linux/bootmem.h>
48#include <linux/notifier.h> 48#include <linux/notifier.h>
49#include <linux/cpu.h> 49#include <linux/cpu.h>
50#include <linux/slab.h>
50 51
51#include <asm/mmu_context.h> 52#include <asm/mmu_context.h>
52#include <asm/tlbflush.h> 53#include <asm/tlbflush.h>
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
index 99df697c601a..ebc2f38eb381 100644
--- a/arch/powerpc/mm/pgtable.c
+++ b/arch/powerpc/mm/pgtable.c
@@ -22,6 +22,7 @@
22 */ 22 */
23 23
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/gfp.h>
25#include <linux/mm.h> 26#include <linux/mm.h>
26#include <linux/init.h> 27#include <linux/init.h>
27#include <linux/percpu.h> 28#include <linux/percpu.h>
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index 573b3bd1c45b..b9243e7557ae 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -27,6 +27,7 @@
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/highmem.h> 28#include <linux/highmem.h>
29#include <linux/lmb.h> 29#include <linux/lmb.h>
30#include <linux/slab.h>
30 31
31#include <asm/pgtable.h> 32#include <asm/pgtable.h>
32#include <asm/pgalloc.h> 33#include <asm/pgalloc.h>
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 853d5565eed5..d95679a5fb29 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -35,6 +35,7 @@
35#include <linux/init.h> 35#include <linux/init.h>
36#include <linux/bootmem.h> 36#include <linux/bootmem.h>
37#include <linux/lmb.h> 37#include <linux/lmb.h>
38#include <linux/slab.h>
38 39
39#include <asm/pgalloc.h> 40#include <asm/pgalloc.h>
40#include <asm/page.h> 41#include <asm/page.h>
diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c
index a040b81e93bd..e4f8f1fc81a5 100644
--- a/arch/powerpc/mm/subpage-prot.c
+++ b/arch/powerpc/mm/subpage-prot.c
@@ -10,7 +10,6 @@
10#include <linux/errno.h> 10#include <linux/errno.h>
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/gfp.h> 12#include <linux/gfp.h>
13#include <linux/slab.h>
14#include <linux/types.h> 13#include <linux/types.h>
15#include <linux/mm.h> 14#include <linux/mm.h>
16#include <linux/hugetlb.h> 15#include <linux/hugetlb.h>
diff --git a/arch/powerpc/oprofile/cell/spu_task_sync.c b/arch/powerpc/oprofile/cell/spu_task_sync.c
index 6b793aeda72e..642fca137ccb 100644
--- a/arch/powerpc/oprofile/cell/spu_task_sync.c
+++ b/arch/powerpc/oprofile/cell/spu_task_sync.c
@@ -26,6 +26,7 @@
26#include <linux/notifier.h> 26#include <linux/notifier.h>
27#include <linux/numa.h> 27#include <linux/numa.h>
28#include <linux/oprofile.h> 28#include <linux/oprofile.h>
29#include <linux/slab.h>
29#include <linux/spinlock.h> 30#include <linux/spinlock.h>
30#include "pr_util.h" 31#include "pr_util.h"
31 32
diff --git a/arch/powerpc/oprofile/cell/vma_map.c b/arch/powerpc/oprofile/cell/vma_map.c
index c591339daf58..c579b16845da 100644
--- a/arch/powerpc/oprofile/cell/vma_map.c
+++ b/arch/powerpc/oprofile/cell/vma_map.c
@@ -20,6 +20,7 @@
20#include <linux/string.h> 20#include <linux/string.h>
21#include <linux/uaccess.h> 21#include <linux/uaccess.h>
22#include <linux/elf.h> 22#include <linux/elf.h>
23#include <linux/slab.h>
23#include "pr_util.h" 24#include "pr_util.h"
24 25
25 26
diff --git a/arch/powerpc/platforms/44x/warp.c b/arch/powerpc/platforms/44x/warp.c
index e5c1b096c3e1..8f771395f424 100644
--- a/arch/powerpc/platforms/44x/warp.c
+++ b/arch/powerpc/platforms/44x/warp.c
@@ -17,6 +17,7 @@
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/of_gpio.h> 18#include <linux/of_gpio.h>
19#include <linux/of_i2c.h> 19#include <linux/of_i2c.h>
20#include <linux/slab.h>
20 21
21#include <asm/machdep.h> 22#include <asm/machdep.h>
22#include <asm/prom.h> 23#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpio.c b/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
index 2b8d8ef32e4e..fda7c2a18282 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
@@ -19,6 +19,7 @@
19 19
20#include <linux/of.h> 20#include <linux/of.h>
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/slab.h>
22#include <linux/of_gpio.h> 23#include <linux/of_gpio.h>
23#include <linux/io.h> 24#include <linux/io.h>
24#include <linux/of_platform.h> 25#include <linux/of_platform.h>
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
index 072b948b2e2d..a60ee39d3b78 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c
@@ -62,6 +62,7 @@
62#include <linux/of_platform.h> 62#include <linux/of_platform.h>
63#include <linux/of_gpio.h> 63#include <linux/of_gpio.h>
64#include <linux/kernel.h> 64#include <linux/kernel.h>
65#include <linux/slab.h>
65#include <linux/watchdog.h> 66#include <linux/watchdog.h>
66#include <linux/miscdevice.h> 67#include <linux/miscdevice.h>
67#include <linux/uaccess.h> 68#include <linux/uaccess.h>
@@ -711,7 +712,11 @@ static int __devinit mpc52xx_gpt_wdt_init(void)
711 return 0; 712 return 0;
712} 713}
713 714
714#define mpc52xx_gpt_wdt_setup(x, y) (0) 715static inline int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt,
716 const u32 *period)
717{
718 return 0;
719}
715 720
716#endif /* CONFIG_MPC5200_WDT */ 721#endif /* CONFIG_MPC5200_WDT */
717 722
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c
index 929d017535a3..d4f8be307cd5 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c
@@ -481,6 +481,8 @@ mpc52xx_lpbfifo_probe(struct of_device *op, const struct of_device_id *match)
481 if (rc) 481 if (rc)
482 goto err_bcom_rx_irq; 482 goto err_bcom_rx_irq;
483 483
484 lpbfifo.dma_irqs_enabled = 1;
485
484 /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */ 486 /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */
485 lpbfifo.bcom_tx_task = 487 lpbfifo.bcom_tx_task =
486 bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA, 488 bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA,
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c
index f9aee182e6f7..f21555d3395a 100644
--- a/arch/powerpc/platforms/82xx/ep8248e.c
+++ b/arch/powerpc/platforms/82xx/ep8248e.c
@@ -15,6 +15,7 @@
15#include <linux/fsl_devices.h> 15#include <linux/fsl_devices.h>
16#include <linux/mdio-bitbang.h> 16#include <linux/mdio-bitbang.h>
17#include <linux/of_mdio.h> 17#include <linux/of_mdio.h>
18#include <linux/slab.h>
18#include <linux/of_platform.h> 19#include <linux/of_platform.h>
19 20
20#include <asm/io.h> 21#include <asm/io.h>
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
index d4a09f8705b5..5a55d87d6bd6 100644
--- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
+++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
@@ -17,6 +17,7 @@
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <linux/types.h> 18#include <linux/types.h>
19#include <linux/bootmem.h> 19#include <linux/bootmem.h>
20#include <linux/slab.h>
20 21
21#include <asm/io.h> 22#include <asm/io.h>
22#include <asm/prom.h> 23#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
index 82a9bcb858b6..d119a7c1c17a 100644
--- a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
+++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
@@ -20,6 +20,7 @@
20#include <linux/gpio.h> 20#include <linux/gpio.h>
21#include <linux/of.h> 21#include <linux/of.h>
22#include <linux/of_gpio.h> 22#include <linux/of_gpio.h>
23#include <linux/slab.h>
23#include <asm/prom.h> 24#include <asm/prom.h>
24#include <asm/machdep.h> 25#include <asm/machdep.h>
25 26
diff --git a/arch/powerpc/platforms/86xx/gef_gpio.c b/arch/powerpc/platforms/86xx/gef_gpio.c
index 11f7b2b6f49e..b8cb08dbd89c 100644
--- a/arch/powerpc/platforms/86xx/gef_gpio.c
+++ b/arch/powerpc/platforms/86xx/gef_gpio.c
@@ -26,6 +26,7 @@
26#include <linux/of_platform.h> 26#include <linux/of_platform.h>
27#include <linux/of_gpio.h> 27#include <linux/of_gpio.h>
28#include <linux/gpio.h> 28#include <linux/gpio.h>
29#include <linux/slab.h>
29 30
30#define GEF_GPIO_DIRECT 0x00 31#define GEF_GPIO_DIRECT 0x00
31#define GEF_GPIO_IN 0x04 32#define GEF_GPIO_IN 0x04
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c
index 242954c4293f..60168c1f98fe 100644
--- a/arch/powerpc/platforms/8xx/m8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/m8xx_setup.c
@@ -11,7 +11,6 @@
11 */ 11 */
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/slab.h>
15#include <linux/interrupt.h> 14#include <linux/interrupt.h>
16#include <linux/init.h> 15#include <linux/init.h>
17#include <linux/time.h> 16#include <linux/time.h>
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
index 96fe896f6df3..8efe48192f3f 100644
--- a/arch/powerpc/platforms/cell/axon_msi.c
+++ b/arch/powerpc/platforms/cell/axon_msi.c
@@ -15,6 +15,7 @@
15#include <linux/msi.h> 15#include <linux/msi.h>
16#include <linux/of_platform.h> 16#include <linux/of_platform.h>
17#include <linux/debugfs.h> 17#include <linux/debugfs.h>
18#include <linux/slab.h>
18 19
19#include <asm/dcr.h> 20#include <asm/dcr.h>
20#include <asm/machdep.h> 21#include <asm/machdep.h>
diff --git a/arch/powerpc/platforms/cell/celleb_pci.c b/arch/powerpc/platforms/cell/celleb_pci.c
index 00eaaa71630f..404d1fc04d59 100644
--- a/arch/powerpc/platforms/cell/celleb_pci.c
+++ b/arch/powerpc/platforms/cell/celleb_pci.c
@@ -33,6 +33,7 @@
33#include <linux/pci_regs.h> 33#include <linux/pci_regs.h>
34#include <linux/of.h> 34#include <linux/of.h>
35#include <linux/of_device.h> 35#include <linux/of_device.h>
36#include <linux/slab.h>
36 37
37#include <asm/io.h> 38#include <asm/io.h>
38#include <asm/irq.h> 39#include <asm/irq.h>
diff --git a/arch/powerpc/platforms/cell/celleb_scc_pciex.c b/arch/powerpc/platforms/cell/celleb_scc_pciex.c
index 7fca09f990ba..a881bbee8de0 100644
--- a/arch/powerpc/platforms/cell/celleb_scc_pciex.c
+++ b/arch/powerpc/platforms/cell/celleb_scc_pciex.c
@@ -23,6 +23,7 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/string.h> 25#include <linux/string.h>
26#include <linux/slab.h>
26#include <linux/init.h> 27#include <linux/init.h>
27#include <linux/bootmem.h> 28#include <linux/bootmem.h>
28#include <linux/delay.h> 29#include <linux/delay.h>
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index ca5bfdfe47f2..e3ec4976fae7 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -28,6 +28,7 @@
28#include <linux/notifier.h> 28#include <linux/notifier.h>
29#include <linux/of.h> 29#include <linux/of.h>
30#include <linux/of_platform.h> 30#include <linux/of_platform.h>
31#include <linux/slab.h>
31#include <linux/lmb.h> 32#include <linux/lmb.h>
32 33
33#include <asm/prom.h> 34#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c
index 608fd2b584c9..1d3c4effea10 100644
--- a/arch/powerpc/platforms/cell/ras.c
+++ b/arch/powerpc/platforms/cell/ras.c
@@ -11,6 +11,7 @@
11 11
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/slab.h>
14#include <linux/smp.h> 15#include <linux/smp.h>
15#include <linux/reboot.h> 16#include <linux/reboot.h>
16#include <linux/kexec.h> 17#include <linux/kexec.h>
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index 59305369f6b2..50385db586bd 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -19,7 +19,6 @@
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/stddef.h> 20#include <linux/stddef.h>
21#include <linux/unistd.h> 21#include <linux/unistd.h>
22#include <linux/slab.h>
23#include <linux/user.h> 22#include <linux/user.h>
24#include <linux/reboot.h> 23#include <linux/reboot.h>
25#include <linux/init.h> 24#include <linux/init.h>
diff --git a/arch/powerpc/platforms/cell/spider-pci.c b/arch/powerpc/platforms/cell/spider-pci.c
index 5122ec145271..ca7731c0b595 100644
--- a/arch/powerpc/platforms/cell/spider-pci.c
+++ b/arch/powerpc/platforms/cell/spider-pci.c
@@ -22,6 +22,7 @@
22 22
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/of_platform.h> 24#include <linux/of_platform.h>
25#include <linux/slab.h>
25#include <linux/io.h> 26#include <linux/io.h>
26 27
27#include <asm/ppc-pci.h> 28#include <asm/ppc-pci.h>
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c
index 891f18e337a2..f465d474ad9b 100644
--- a/arch/powerpc/platforms/cell/spu_manage.c
+++ b/arch/powerpc/platforms/cell/spu_manage.c
@@ -23,7 +23,6 @@
23#include <linux/list.h> 23#include <linux/list.h>
24#include <linux/module.h> 24#include <linux/module.h>
25#include <linux/ptrace.h> 25#include <linux/ptrace.h>
26#include <linux/slab.h>
27#include <linux/wait.h> 26#include <linux/wait.h>
28#include <linux/mm.h> 27#include <linux/mm.h>
29#include <linux/io.h> 28#include <linux/io.h>
diff --git a/arch/powerpc/platforms/cell/spu_priv1_mmio.c b/arch/powerpc/platforms/cell/spu_priv1_mmio.c
index 1410443731eb..121aec353f26 100644
--- a/arch/powerpc/platforms/cell/spu_priv1_mmio.c
+++ b/arch/powerpc/platforms/cell/spu_priv1_mmio.c
@@ -22,7 +22,6 @@
22#include <linux/list.h> 22#include <linux/list.h>
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/ptrace.h> 24#include <linux/ptrace.h>
25#include <linux/slab.h>
26#include <linux/wait.h> 25#include <linux/wait.h>
27#include <linux/mm.h> 26#include <linux/mm.h>
28#include <linux/io.h> 27#include <linux/io.h>
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c
index eea120229cdb..6cf3ec628527 100644
--- a/arch/powerpc/platforms/cell/spufs/coredump.c
+++ b/arch/powerpc/platforms/cell/spufs/coredump.c
@@ -24,6 +24,7 @@
24#include <linux/file.h> 24#include <linux/file.h>
25#include <linux/fdtable.h> 25#include <linux/fdtable.h>
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/gfp.h>
27#include <linux/list.h> 28#include <linux/list.h>
28#include <linux/module.h> 29#include <linux/module.h>
29#include <linux/syscalls.h> 30#include <linux/syscalls.h>
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index 64a4c2d85f7c..5c2808252516 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -29,6 +29,7 @@
29#include <linux/poll.h> 29#include <linux/poll.h>
30#include <linux/ptrace.h> 30#include <linux/ptrace.h>
31#include <linux/seq_file.h> 31#include <linux/seq_file.h>
32#include <linux/slab.h>
32 33
33#include <asm/io.h> 34#include <asm/io.h>
34#include <asm/time.h> 35#include <asm/time.h>
diff --git a/arch/powerpc/platforms/cell/spufs/lscsa_alloc.c b/arch/powerpc/platforms/cell/spufs/lscsa_alloc.c
index 0e9f325c9ff7..a101abf17504 100644
--- a/arch/powerpc/platforms/cell/spufs/lscsa_alloc.c
+++ b/arch/powerpc/platforms/cell/spufs/lscsa_alloc.c
@@ -22,6 +22,7 @@
22 22
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/slab.h>
25#include <linux/vmalloc.h> 26#include <linux/vmalloc.h>
26 27
27#include <asm/spu.h> 28#include <asm/spu.h>
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 4678078fede8..0b0466284932 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -27,6 +27,7 @@
27#include <linux/sched.h> 27#include <linux/sched.h>
28#include <linux/kernel.h> 28#include <linux/kernel.h>
29#include <linux/mm.h> 29#include <linux/mm.h>
30#include <linux/slab.h>
30#include <linux/completion.h> 31#include <linux/completion.h>
31#include <linux/vmalloc.h> 32#include <linux/vmalloc.h>
32#include <linux/smp.h> 33#include <linux/smp.h>
diff --git a/arch/powerpc/platforms/cell/spufs/syscalls.c b/arch/powerpc/platforms/cell/spufs/syscalls.c
index c23617c6baf3..187a7d32f86a 100644
--- a/arch/powerpc/platforms/cell/spufs/syscalls.c
+++ b/arch/powerpc/platforms/cell/spufs/syscalls.c
@@ -3,6 +3,7 @@
3#include <linux/module.h> 3#include <linux/module.h>
4#include <linux/mount.h> 4#include <linux/mount.h>
5#include <linux/namei.h> 5#include <linux/namei.h>
6#include <linux/slab.h>
6 7
7#include <asm/uaccess.h> 8#include <asm/uaccess.h>
8 9
diff --git a/arch/powerpc/platforms/chrp/nvram.c b/arch/powerpc/platforms/chrp/nvram.c
index 8efd4244701c..ba3588f2d8e0 100644
--- a/arch/powerpc/platforms/chrp/nvram.c
+++ b/arch/powerpc/platforms/chrp/nvram.c
@@ -12,7 +12,6 @@
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/slab.h>
16#include <linux/spinlock.h> 15#include <linux/spinlock.h>
17#include <asm/uaccess.h> 16#include <asm/uaccess.h>
18#include <asm/prom.h> 17#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 8f41685d8f42..8553cc49e0d6 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -15,7 +15,6 @@
15#include <linux/stddef.h> 15#include <linux/stddef.h>
16#include <linux/unistd.h> 16#include <linux/unistd.h>
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/slab.h>
19#include <linux/user.h> 18#include <linux/user.h>
20#include <linux/tty.h> 19#include <linux/tty.h>
21#include <linux/major.h> 20#include <linux/major.h>
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c
index 9d53cb481a7c..ce61cea0afb5 100644
--- a/arch/powerpc/platforms/iseries/iommu.c
+++ b/arch/powerpc/platforms/iseries/iommu.c
@@ -29,6 +29,7 @@
29#include <linux/list.h> 29#include <linux/list.h>
30#include <linux/pci.h> 30#include <linux/pci.h>
31#include <linux/module.h> 31#include <linux/module.h>
32#include <linux/slab.h>
32 33
33#include <asm/iommu.h> 34#include <asm/iommu.h>
34#include <asm/vio.h> 35#include <asm/vio.h>
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index 6617915bcb1a..d2c1d497846e 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -33,6 +33,7 @@
33#include <linux/dma-mapping.h> 33#include <linux/dma-mapping.h>
34#include <linux/bcd.h> 34#include <linux/bcd.h>
35#include <linux/rtc.h> 35#include <linux/rtc.h>
36#include <linux/slab.h>
36 37
37#include <asm/time.h> 38#include <asm/time.h>
38#include <asm/uaccess.h> 39#include <asm/uaccess.h>
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c
index 175aac8ca7e5..b841c9a9db87 100644
--- a/arch/powerpc/platforms/iseries/pci.c
+++ b/arch/powerpc/platforms/iseries/pci.c
@@ -27,6 +27,7 @@
27#include <linux/kernel.h> 27#include <linux/kernel.h>
28#include <linux/list.h> 28#include <linux/list.h>
29#include <linux/string.h> 29#include <linux/string.h>
30#include <linux/slab.h>
30#include <linux/init.h> 31#include <linux/init.h>
31#include <linux/module.h> 32#include <linux/module.h>
32#include <linux/pci.h> 33#include <linux/pci.h>
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c
index 2aa8b5631beb..00b6730bc48f 100644
--- a/arch/powerpc/platforms/iseries/vio.c
+++ b/arch/powerpc/platforms/iseries/vio.c
@@ -22,7 +22,7 @@
22 */ 22 */
23#include <linux/of.h> 23#include <linux/of.h>
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/gfp.h> 25#include <linux/slab.h>
26#include <linux/completion.h> 26#include <linux/completion.h>
27#include <linux/proc_fs.h> 27#include <linux/proc_fs.h>
28#include <linux/module.h> 28#include <linux/module.h>
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 5aea94f30836..b5f05d943a90 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -29,6 +29,7 @@
29 */ 29 */
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/kernel.h> 31#include <linux/kernel.h>
32#include <linux/slab.h>
32#include <linux/errno.h> 33#include <linux/errno.h>
33#include <linux/vmalloc.h> 34#include <linux/vmalloc.h>
34#include <linux/string.h> 35#include <linux/string.h>
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index 0636a3df6978..39df70529d29 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -21,7 +21,6 @@
21#include <linux/stddef.h> 21#include <linux/stddef.h>
22#include <linux/unistd.h> 22#include <linux/unistd.h>
23#include <linux/ptrace.h> 23#include <linux/ptrace.h>
24#include <linux/slab.h>
25#include <linux/user.h> 24#include <linux/user.h>
26#include <linux/tty.h> 25#include <linux/tty.h>
27#include <linux/string.h> 26#include <linux/string.h>
diff --git a/arch/powerpc/platforms/pasemi/dma_lib.c b/arch/powerpc/platforms/pasemi/dma_lib.c
index a6152d922243..09695ae50f91 100644
--- a/arch/powerpc/platforms/pasemi/dma_lib.c
+++ b/arch/powerpc/platforms/pasemi/dma_lib.c
@@ -21,6 +21,7 @@
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/pci.h> 23#include <linux/pci.h>
24#include <linux/slab.h>
24#include <linux/of.h> 25#include <linux/of.h>
25 26
26#include <asm/pasemi_dma.h> 27#include <asm/pasemi_dma.h>
diff --git a/arch/powerpc/platforms/pasemi/gpio_mdio.c b/arch/powerpc/platforms/pasemi/gpio_mdio.c
index 3bf546797cbb..0f881f64583e 100644
--- a/arch/powerpc/platforms/pasemi/gpio_mdio.c
+++ b/arch/powerpc/platforms/pasemi/gpio_mdio.c
@@ -24,6 +24,7 @@
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/slab.h>
27#include <linux/sched.h> 28#include <linux/sched.h>
28#include <linux/errno.h> 29#include <linux/errno.h>
29#include <linux/ioport.h> 30#include <linux/ioport.h>
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index 242f8095c2df..ac6fdd973291 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -28,6 +28,7 @@
28#include <linux/console.h> 28#include <linux/console.h>
29#include <linux/pci.h> 29#include <linux/pci.h>
30#include <linux/of_platform.h> 30#include <linux/of_platform.h>
31#include <linux/gfp.h>
31 32
32#include <asm/prom.h> 33#include <asm/prom.h>
33#include <asm/system.h> 34#include <asm/system.h>
diff --git a/arch/powerpc/platforms/powermac/cpufreq_32.c b/arch/powerpc/platforms/powermac/cpufreq_32.c
index d4f127d18141..1e9eba175ff0 100644
--- a/arch/powerpc/platforms/powermac/cpufreq_32.c
+++ b/arch/powerpc/platforms/powermac/cpufreq_32.c
@@ -21,7 +21,6 @@
21#include <linux/sched.h> 21#include <linux/sched.h>
22#include <linux/adb.h> 22#include <linux/adb.h>
23#include <linux/pmu.h> 23#include <linux/pmu.h>
24#include <linux/slab.h>
25#include <linux/cpufreq.h> 24#include <linux/cpufreq.h>
26#include <linux/init.h> 25#include <linux/init.h>
27#include <linux/sysdev.h> 26#include <linux/sysdev.h>
diff --git a/arch/powerpc/platforms/powermac/cpufreq_64.c b/arch/powerpc/platforms/powermac/cpufreq_64.c
index 3ed288e68ec4..3ca09d3ccce3 100644
--- a/arch/powerpc/platforms/powermac/cpufreq_64.c
+++ b/arch/powerpc/platforms/powermac/cpufreq_64.c
@@ -18,7 +18,6 @@
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/sched.h> 20#include <linux/sched.h>
21#include <linux/slab.h>
22#include <linux/cpufreq.h> 21#include <linux/cpufreq.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/completion.h> 23#include <linux/completion.h>
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c
index 345e2da56767..f45331ab97cb 100644
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -43,6 +43,7 @@
43#include <linux/timer.h> 43#include <linux/timer.h>
44#include <linux/mutex.h> 44#include <linux/mutex.h>
45#include <linux/i2c.h> 45#include <linux/i2c.h>
46#include <linux/slab.h>
46#include <asm/keylargo.h> 47#include <asm/keylargo.h>
47#include <asm/uninorth.h> 48#include <asm/uninorth.h>
48#include <asm/io.h> 49#include <asm/io.h>
diff --git a/arch/powerpc/platforms/powermac/nvram.c b/arch/powerpc/platforms/powermac/nvram.c
index 80a5258d0364..b1cdcf94aa8e 100644
--- a/arch/powerpc/platforms/powermac/nvram.c
+++ b/arch/powerpc/platforms/powermac/nvram.c
@@ -14,7 +14,6 @@
14#include <linux/string.h> 14#include <linux/string.h>
15#include <linux/nvram.h> 15#include <linux/nvram.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/slab.h>
18#include <linux/delay.h> 17#include <linux/delay.h>
19#include <linux/errno.h> 18#include <linux/errno.h>
20#include <linux/adb.h> 19#include <linux/adb.h>
diff --git a/arch/powerpc/platforms/powermac/pfunc_core.c b/arch/powerpc/platforms/powermac/pfunc_core.c
index ede49e78a8da..cec635942657 100644
--- a/arch/powerpc/platforms/powermac/pfunc_core.c
+++ b/arch/powerpc/platforms/powermac/pfunc_core.c
@@ -9,6 +9,7 @@
9#include <linux/delay.h> 9#include <linux/delay.h>
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/spinlock.h> 11#include <linux/spinlock.h>
12#include <linux/slab.h>
12#include <linux/module.h> 13#include <linux/module.h>
13#include <linux/mutex.h> 14#include <linux/mutex.h>
14 15
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index c20522656367..15c2241f9c72 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -31,7 +31,6 @@
31#include <linux/stddef.h> 31#include <linux/stddef.h>
32#include <linux/unistd.h> 32#include <linux/unistd.h>
33#include <linux/ptrace.h> 33#include <linux/ptrace.h>
34#include <linux/slab.h>
35#include <linux/user.h> 34#include <linux/user.h>
36#include <linux/tty.h> 35#include <linux/tty.h>
37#include <linux/string.h> 36#include <linux/string.h>
diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c
index bb028f165fb3..b341018326df 100644
--- a/arch/powerpc/platforms/ps3/device-init.c
+++ b/arch/powerpc/platforms/ps3/device-init.c
@@ -23,6 +23,7 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/kthread.h> 24#include <linux/kthread.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/slab.h>
26#include <linux/reboot.h> 27#include <linux/reboot.h>
27 28
28#include <asm/firmware.h> 29#include <asm/firmware.h>
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c
index e81b028a2a48..7925751e464a 100644
--- a/arch/powerpc/platforms/ps3/mm.c
+++ b/arch/powerpc/platforms/ps3/mm.c
@@ -22,6 +22,7 @@
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/memory_hotplug.h> 23#include <linux/memory_hotplug.h>
24#include <linux/lmb.h> 24#include <linux/lmb.h>
25#include <linux/slab.h>
25 26
26#include <asm/cell-regs.h> 27#include <asm/cell-regs.h>
27#include <asm/firmware.h> 28#include <asm/firmware.h>
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c
index d6487a9c8019..dd521a181f23 100644
--- a/arch/powerpc/platforms/ps3/os-area.c
+++ b/arch/powerpc/platforms/ps3/os-area.c
@@ -26,6 +26,7 @@
26#include <linux/ctype.h> 26#include <linux/ctype.h>
27#include <linux/lmb.h> 27#include <linux/lmb.h>
28#include <linux/of.h> 28#include <linux/of.h>
29#include <linux/slab.h>
29 30
30#include <asm/prom.h> 31#include <asm/prom.h>
31 32
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c
index b3c6a993f9f3..39a472e9e80f 100644
--- a/arch/powerpc/platforms/ps3/spu.c
+++ b/arch/powerpc/platforms/ps3/spu.c
@@ -20,6 +20,7 @@
20 20
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/init.h> 22#include <linux/init.h>
23#include <linux/slab.h>
23#include <linux/mmzone.h> 24#include <linux/mmzone.h>
24#include <linux/io.h> 25#include <linux/io.h>
25#include <linux/mm.h> 26#include <linux/mm.h>
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index e34b305a7a52..6d09f5e3e7e4 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -23,6 +23,7 @@
23#include <linux/module.h> 23#include <linux/module.h>
24#include <linux/dma-mapping.h> 24#include <linux/dma-mapping.h>
25#include <linux/err.h> 25#include <linux/err.h>
26#include <linux/slab.h>
26 27
27#include <asm/udbg.h> 28#include <asm/udbg.h>
28#include <asm/lv1call.h> 29#include <asm/lv1call.h>
diff --git a/arch/powerpc/platforms/pseries/cmm.c b/arch/powerpc/platforms/pseries/cmm.c
index a277f2e28dbc..f4803868642c 100644
--- a/arch/powerpc/platforms/pseries/cmm.c
+++ b/arch/powerpc/platforms/pseries/cmm.c
@@ -24,6 +24,7 @@
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <linux/errno.h> 25#include <linux/errno.h>
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/gfp.h>
27#include <linux/init.h> 28#include <linux/init.h>
28#include <linux/kthread.h> 29#include <linux/kthread.h>
29#include <linux/module.h> 30#include <linux/module.h>
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
index 37bce52526da..e1682bc168a3 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -16,6 +16,7 @@
16#include <linux/proc_fs.h> 16#include <linux/proc_fs.h>
17#include <linux/spinlock.h> 17#include <linux/spinlock.h>
18#include <linux/cpu.h> 18#include <linux/cpu.h>
19#include <linux/slab.h>
19#include "offline_states.h" 20#include "offline_states.h"
20 21
21#include <asm/prom.h> 22#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c
index c5f3116b6ca5..a00addb55945 100644
--- a/arch/powerpc/platforms/pseries/dtl.c
+++ b/arch/powerpc/platforms/pseries/dtl.c
@@ -21,6 +21,7 @@
21 */ 21 */
22 22
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/slab.h>
24#include <linux/debugfs.h> 25#include <linux/debugfs.h>
25#include <asm/smp.h> 26#include <asm/smp.h>
26#include <asm/system.h> 27#include <asm/system.h>
diff --git a/arch/powerpc/platforms/pseries/eeh_cache.c b/arch/powerpc/platforms/pseries/eeh_cache.c
index ce37040af870..30b987b73c20 100644
--- a/arch/powerpc/platforms/pseries/eeh_cache.c
+++ b/arch/powerpc/platforms/pseries/eeh_cache.c
@@ -23,6 +23,7 @@
23#include <linux/list.h> 23#include <linux/list.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/rbtree.h> 25#include <linux/rbtree.h>
26#include <linux/slab.h>
26#include <linux/spinlock.h> 27#include <linux/spinlock.h>
27#include <asm/atomic.h> 28#include <asm/atomic.h>
28#include <asm/pci-bridge.h> 29#include <asm/pci-bridge.h>
diff --git a/arch/powerpc/platforms/pseries/eeh_event.c b/arch/powerpc/platforms/pseries/eeh_event.c
index ec5df8f519c7..2ec500c130b5 100644
--- a/arch/powerpc/platforms/pseries/eeh_event.c
+++ b/arch/powerpc/platforms/pseries/eeh_event.c
@@ -22,6 +22,7 @@
22#include <linux/list.h> 22#include <linux/list.h>
23#include <linux/mutex.h> 23#include <linux/mutex.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/slab.h>
25#include <linux/workqueue.h> 26#include <linux/workqueue.h>
26#include <asm/eeh_event.h> 27#include <asm/eeh_event.h>
27#include <asm/ppc-pci.h> 28#include <asm/ppc-pci.h>
diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
index 42f7e384e6c4..bc3c7f2abd79 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -15,7 +15,6 @@
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/errno.h> 16#include <linux/errno.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/slab.h>
19#include <linux/spinlock.h> 18#include <linux/spinlock.h>
20#include <asm/uaccess.h> 19#include <asm/uaccess.h>
21#include <asm/nvram.h> 20#include <asm/nvram.h>
diff --git a/arch/powerpc/platforms/pseries/phyp_dump.c b/arch/powerpc/platforms/pseries/phyp_dump.c
index 225a50ab14be..7ebd9e88d369 100644
--- a/arch/powerpc/platforms/pseries/phyp_dump.c
+++ b/arch/powerpc/platforms/pseries/phyp_dump.c
@@ -11,6 +11,7 @@
11 * 11 *
12 */ 12 */
13 13
14#include <linux/gfp.h>
14#include <linux/init.h> 15#include <linux/init.h>
15#include <linux/kobject.h> 16#include <linux/kobject.h>
16#include <linux/mm.h> 17#include <linux/mm.h>
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c
index d20b96e22c2e..db940d2c39a0 100644
--- a/arch/powerpc/platforms/pseries/ras.c
+++ b/arch/powerpc/platforms/pseries/ras.c
@@ -30,7 +30,6 @@
30#include <linux/interrupt.h> 30#include <linux/interrupt.h>
31#include <linux/timex.h> 31#include <linux/timex.h>
32#include <linux/init.h> 32#include <linux/init.h>
33#include <linux/slab.h>
34#include <linux/delay.h> 33#include <linux/delay.h>
35#include <linux/irq.h> 34#include <linux/irq.h>
36#include <linux/random.h> 35#include <linux/random.h>
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
index a2305d29bbbd..1a58637bcea5 100644
--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -15,6 +15,7 @@
15#include <linux/kref.h> 15#include <linux/kref.h>
16#include <linux/notifier.h> 16#include <linux/notifier.h>
17#include <linux/proc_fs.h> 17#include <linux/proc_fs.h>
18#include <linux/slab.h>
18 19
19#include <asm/prom.h> 20#include <asm/prom.h>
20#include <asm/machdep.h> 21#include <asm/machdep.h>
diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c
index 1b45c458f952..80e9e7652a4d 100644
--- a/arch/powerpc/platforms/pseries/scanlog.c
+++ b/arch/powerpc/platforms/pseries/scanlog.c
@@ -26,6 +26,7 @@
26#include <linux/proc_fs.h> 26#include <linux/proc_fs.h>
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/slab.h>
29#include <asm/uaccess.h> 30#include <asm/uaccess.h>
30#include <asm/rtas.h> 31#include <asm/rtas.h>
31#include <asm/prom.h> 32#include <asm/prom.h>
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index ca5f2e10972c..6710761bf60f 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -23,7 +23,6 @@
23#include <linux/mm.h> 23#include <linux/mm.h>
24#include <linux/stddef.h> 24#include <linux/stddef.h>
25#include <linux/unistd.h> 25#include <linux/unistd.h>
26#include <linux/slab.h>
27#include <linux/user.h> 26#include <linux/user.h>
28#include <linux/tty.h> 27#include <linux/tty.h>
29#include <linux/major.h> 28#include <linux/major.h>
diff --git a/arch/powerpc/sysdev/cpm1.c b/arch/powerpc/sysdev/cpm1.c
index ecad10d4e928..4dae3698bf24 100644
--- a/arch/powerpc/sysdev/cpm1.c
+++ b/arch/powerpc/sysdev/cpm1.c
@@ -31,6 +31,7 @@
31#include <linux/irq.h> 31#include <linux/irq.h>
32#include <linux/module.h> 32#include <linux/module.h>
33#include <linux/spinlock.h> 33#include <linux/spinlock.h>
34#include <linux/slab.h>
34#include <asm/page.h> 35#include <asm/page.h>
35#include <asm/pgtable.h> 36#include <asm/pgtable.h>
36#include <asm/8xx_immap.h> 37#include <asm/8xx_immap.h>
diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c
index 9de72c96e6d1..88b9812c854f 100644
--- a/arch/powerpc/sysdev/cpm_common.c
+++ b/arch/powerpc/sysdev/cpm_common.c
@@ -21,6 +21,7 @@
21#include <linux/of_device.h> 21#include <linux/of_device.h>
22#include <linux/spinlock.h> 22#include <linux/spinlock.h>
23#include <linux/of.h> 23#include <linux/of.h>
24#include <linux/slab.h>
24 25
25#include <asm/udbg.h> 26#include <asm/udbg.h>
26#include <asm/io.h> 27#include <asm/io.h>
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c
index bafc3f85360d..c8b96ed7c015 100644
--- a/arch/powerpc/sysdev/dart_iommu.c
+++ b/arch/powerpc/sysdev/dart_iommu.c
@@ -29,7 +29,6 @@
29 29
30#include <linux/init.h> 30#include <linux/init.h>
31#include <linux/types.h> 31#include <linux/types.h>
32#include <linux/slab.h>
33#include <linux/mm.h> 32#include <linux/mm.h>
34#include <linux/spinlock.h> 33#include <linux/spinlock.h>
35#include <linux/string.h> 34#include <linux/string.h>
@@ -38,6 +37,7 @@
38#include <linux/vmalloc.h> 37#include <linux/vmalloc.h>
39#include <linux/suspend.h> 38#include <linux/suspend.h>
40#include <linux/lmb.h> 39#include <linux/lmb.h>
40#include <linux/gfp.h>
41#include <asm/io.h> 41#include <asm/io.h>
42#include <asm/prom.h> 42#include <asm/prom.h>
43#include <asm/iommu.h> 43#include <asm/iommu.h>
diff --git a/arch/powerpc/sysdev/fsl_gtm.c b/arch/powerpc/sysdev/fsl_gtm.c
index 714ec02fed2e..eca4545dd52e 100644
--- a/arch/powerpc/sysdev/fsl_gtm.c
+++ b/arch/powerpc/sysdev/fsl_gtm.c
@@ -20,6 +20,7 @@
20#include <linux/of.h> 20#include <linux/of.h>
21#include <linux/spinlock.h> 21#include <linux/spinlock.h>
22#include <linux/bitops.h> 22#include <linux/bitops.h>
23#include <linux/slab.h>
23#include <asm/fsl_gtm.h> 24#include <asm/fsl_gtm.h>
24 25
25#define GTCFR_STP(x) ((x) & 1 ? 1 << 5 : 1 << 1) 26#define GTCFR_STP(x) ((x) & 1 ? 1 << 5 : 1 << 1)
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c
index e094367d7739..3482e3fd89c0 100644
--- a/arch/powerpc/sysdev/fsl_msi.c
+++ b/arch/powerpc/sysdev/fsl_msi.c
@@ -16,6 +16,7 @@
16#include <linux/bootmem.h> 16#include <linux/bootmem.h>
17#include <linux/msi.h> 17#include <linux/msi.h>
18#include <linux/pci.h> 18#include <linux/pci.h>
19#include <linux/slab.h>
19#include <linux/of_platform.h> 20#include <linux/of_platform.h>
20#include <sysdev/fsl_soc.h> 21#include <sysdev/fsl_soc.h>
21#include <asm/prom.h> 22#include <asm/prom.h>
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index e1a028c1f18d..a14760fe513a 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -25,6 +25,7 @@
25#include <linux/bootmem.h> 25#include <linux/bootmem.h>
26#include <linux/lmb.h> 26#include <linux/lmb.h>
27#include <linux/log2.h> 27#include <linux/log2.h>
28#include <linux/slab.h>
28 29
29#include <asm/io.h> 30#include <asm/io.h>
30#include <asm/prom.h> 31#include <asm/prom.h>
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
index 757a83fe5e59..71fba88f50db 100644
--- a/arch/powerpc/sysdev/fsl_rio.c
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -23,6 +23,7 @@
23#include <linux/rio_drv.h> 23#include <linux/rio_drv.h>
24#include <linux/of_platform.h> 24#include <linux/of_platform.h>
25#include <linux/delay.h> 25#include <linux/delay.h>
26#include <linux/slab.h>
26 27
27#include <asm/io.h> 28#include <asm/io.h>
28 29
diff --git a/arch/powerpc/sysdev/mpc8xxx_gpio.c b/arch/powerpc/sysdev/mpc8xxx_gpio.c
index ee1c0e1cf4a7..6478eb10691a 100644
--- a/arch/powerpc/sysdev/mpc8xxx_gpio.c
+++ b/arch/powerpc/sysdev/mpc8xxx_gpio.c
@@ -15,6 +15,7 @@
15#include <linux/of.h> 15#include <linux/of.h>
16#include <linux/of_gpio.h> 16#include <linux/of_gpio.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <linux/slab.h>
18 19
19#define MPC8XXX_GPIO_PINS 32 20#define MPC8XXX_GPIO_PINS 32
20 21
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 339e8a3e26d2..260295b10557 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -26,6 +26,7 @@
26#include <linux/bootmem.h> 26#include <linux/bootmem.h>
27#include <linux/spinlock.h> 27#include <linux/spinlock.h>
28#include <linux/pci.h> 28#include <linux/pci.h>
29#include <linux/slab.h>
29 30
30#include <asm/ptrace.h> 31#include <asm/ptrace.h>
31#include <asm/signal.h> 32#include <asm/signal.h>
diff --git a/arch/powerpc/sysdev/msi_bitmap.c b/arch/powerpc/sysdev/msi_bitmap.c
index 5a32cbef9b6c..5287e95cec3a 100644
--- a/arch/powerpc/sysdev/msi_bitmap.c
+++ b/arch/powerpc/sysdev/msi_bitmap.c
@@ -8,6 +8,7 @@
8 * 8 *
9 */ 9 */
10 10
11#include <linux/slab.h>
11#include <linux/kernel.h> 12#include <linux/kernel.h>
12#include <linux/bitmap.h> 13#include <linux/bitmap.h>
13#include <asm/msi_bitmap.h> 14#include <asm/msi_bitmap.h>
diff --git a/arch/powerpc/sysdev/of_rtc.c b/arch/powerpc/sysdev/of_rtc.c
index 3d54450640c1..c9e803f3e267 100644
--- a/arch/powerpc/sysdev/of_rtc.c
+++ b/arch/powerpc/sysdev/of_rtc.c
@@ -12,6 +12,7 @@
12#include <linux/of.h> 12#include <linux/of.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/of_platform.h> 14#include <linux/of_platform.h>
15#include <linux/slab.h>
15 16
16static __initdata struct { 17static __initdata struct {
17 const char *compatible; 18 const char *compatible;
diff --git a/arch/powerpc/sysdev/pmi.c b/arch/powerpc/sysdev/pmi.c
index aaa915998eb6..652652db4ce2 100644
--- a/arch/powerpc/sysdev/pmi.c
+++ b/arch/powerpc/sysdev/pmi.c
@@ -25,6 +25,7 @@
25 */ 25 */
26 26
27#include <linux/interrupt.h> 27#include <linux/interrupt.h>
28#include <linux/slab.h>
28#include <linux/completion.h> 29#include <linux/completion.h>
29#include <linux/spinlock.h> 30#include <linux/spinlock.h>
30#include <linux/workqueue.h> 31#include <linux/workqueue.h>
diff --git a/arch/powerpc/sysdev/ppc4xx_gpio.c b/arch/powerpc/sysdev/ppc4xx_gpio.c
index 110efe2a54fc..3812fc366bec 100644
--- a/arch/powerpc/sysdev/ppc4xx_gpio.c
+++ b/arch/powerpc/sysdev/ppc4xx_gpio.c
@@ -29,6 +29,7 @@
29#include <linux/of_gpio.h> 29#include <linux/of_gpio.h>
30#include <linux/gpio.h> 30#include <linux/gpio.h>
31#include <linux/types.h> 31#include <linux/types.h>
32#include <linux/slab.h>
32 33
33#define GPIO_MASK(gpio) (0x80000000 >> (gpio)) 34#define GPIO_MASK(gpio) (0x80000000 >> (gpio))
34#define GPIO_MASK2(gpio) (0xc0000000 >> ((gpio) * 2)) 35#define GPIO_MASK2(gpio) (0xc0000000 >> ((gpio) * 2))
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c
index 8aa33021e50b..106d767bf65b 100644
--- a/arch/powerpc/sysdev/ppc4xx_pci.c
+++ b/arch/powerpc/sysdev/ppc4xx_pci.c
@@ -24,6 +24,7 @@
24#include <linux/of.h> 24#include <linux/of.h>
25#include <linux/bootmem.h> 25#include <linux/bootmem.h>
26#include <linux/delay.h> 26#include <linux/delay.h>
27#include <linux/slab.h>
27 28
28#include <asm/io.h> 29#include <asm/io.h>
29#include <asm/pci-bridge.h> 30#include <asm/pci-bridge.h>
diff --git a/arch/powerpc/sysdev/qe_lib/gpio.c b/arch/powerpc/sysdev/qe_lib/gpio.c
index 8e7a7767dd5c..dc8f8d618074 100644
--- a/arch/powerpc/sysdev/qe_lib/gpio.c
+++ b/arch/powerpc/sysdev/qe_lib/gpio.c
@@ -19,6 +19,7 @@
19#include <linux/of.h> 19#include <linux/of.h>
20#include <linux/of_gpio.h> 20#include <linux/of_gpio.h>
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <linux/slab.h>
22#include <asm/qe.h> 23#include <asm/qe.h>
23 24
24struct qe_gpio_chip { 25struct qe_gpio_chip {
diff --git a/arch/powerpc/sysdev/qe_lib/ucc.c b/arch/powerpc/sysdev/qe_lib/ucc.c
index ebb442ea1917..fa589b21dbcd 100644
--- a/arch/powerpc/sysdev/qe_lib/ucc.c
+++ b/arch/powerpc/sysdev/qe_lib/ucc.c
@@ -16,7 +16,6 @@
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/errno.h> 18#include <linux/errno.h>
19#include <linux/slab.h>
20#include <linux/stddef.h> 19#include <linux/stddef.h>
21#include <linux/spinlock.h> 20#include <linux/spinlock.h>
22#include <linux/module.h> 21#include <linux/module.h>
diff --git a/arch/powerpc/sysdev/simple_gpio.c b/arch/powerpc/sysdev/simple_gpio.c
index 43c4569e24b7..d5fb173e588c 100644
--- a/arch/powerpc/sysdev/simple_gpio.c
+++ b/arch/powerpc/sysdev/simple_gpio.c
@@ -21,6 +21,7 @@
21#include <linux/of.h> 21#include <linux/of.h>
22#include <linux/of_gpio.h> 22#include <linux/of_gpio.h>
23#include <linux/gpio.h> 23#include <linux/gpio.h>
24#include <linux/slab.h>
24#include <asm/prom.h> 25#include <asm/prom.h>
25#include "simple_gpio.h" 26#include "simple_gpio.h"
26 27
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 595034cfb85a..0ab9281e49ae 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -24,7 +24,6 @@
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/pci.h> 26#include <linux/pci.h>
27#include <linux/slab.h>
28#include <linux/irq.h> 27#include <linux/irq.h>
29#include <linux/interrupt.h> 28#include <linux/interrupt.h>
30 29
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c
index 4188cbe63a54..e43fe7537031 100644
--- a/arch/s390/appldata/appldata_mem.c
+++ b/arch/s390/appldata/appldata_mem.c
@@ -11,7 +11,6 @@
11 11
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/slab.h>
15#include <linux/errno.h> 14#include <linux/errno.h>
16#include <linux/kernel_stat.h> 15#include <linux/kernel_stat.h>
17#include <linux/pagemap.h> 16#include <linux/pagemap.h>
diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c
index 4ce7fa95880f..9a9586f4103f 100644
--- a/arch/s390/appldata/appldata_net_sum.c
+++ b/arch/s390/appldata/appldata_net_sum.c
@@ -12,7 +12,6 @@
12 12
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/slab.h>
16#include <linux/errno.h> 15#include <linux/errno.h>
17#include <linux/kernel_stat.h> 16#include <linux/kernel_stat.h>
18#include <linux/netdevice.h> 17#include <linux/netdevice.h>
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c
index a97d69525829..14e0479d3888 100644
--- a/arch/s390/boot/compressed/misc.c
+++ b/arch/s390/boot/compressed/misc.c
@@ -24,8 +24,8 @@
24/* Symbols defined by linker scripts */ 24/* Symbols defined by linker scripts */
25extern char input_data[]; 25extern char input_data[];
26extern int input_len; 26extern int input_len;
27extern int _text; 27extern char _text, _end;
28extern int _end; 28extern char _bss, _ebss;
29 29
30static void error(char *m); 30static void error(char *m);
31 31
@@ -129,12 +129,12 @@ unsigned long decompress_kernel(void)
129 unsigned long output_addr; 129 unsigned long output_addr;
130 unsigned char *output; 130 unsigned char *output;
131 131
132 check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start);
133 memset(&_bss, 0, &_ebss - &_bss);
132 free_mem_ptr = (unsigned long)&_end; 134 free_mem_ptr = (unsigned long)&_end;
133 free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; 135 free_mem_end_ptr = free_mem_ptr + HEAP_SIZE;
134 output = (unsigned char *) ((free_mem_end_ptr + 4095UL) & -4096UL); 136 output = (unsigned char *) ((free_mem_end_ptr + 4095UL) & -4096UL);
135 137
136 check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start);
137
138#ifdef CONFIG_BLK_DEV_INITRD 138#ifdef CONFIG_BLK_DEV_INITRD
139 /* 139 /*
140 * Move the initrd right behind the end of the decompressed 140 * Move the initrd right behind the end of the decompressed
diff --git a/arch/s390/crypto/prng.c b/arch/s390/crypto/prng.c
index a3209906739e..aa819dac2360 100644
--- a/arch/s390/crypto/prng.c
+++ b/arch/s390/crypto/prng.c
@@ -10,6 +10,7 @@
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/moduleparam.h> 11#include <linux/moduleparam.h>
12#include <linux/random.h> 12#include <linux/random.h>
13#include <linux/slab.h>
13#include <asm/debug.h> 14#include <asm/debug.h>
14#include <asm/uaccess.h> 15#include <asm/uaccess.h>
15 16
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 7ae71cc56973..bcd6884985ad 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/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.33-rc2 3# Linux kernel version: 2.6.34-rc3
4# Mon Jan 4 09:03:07 2010 4# Fri Apr 9 09:57:10 2010
5# 5#
6CONFIG_SCHED_MC=y 6CONFIG_SCHED_MC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
@@ -17,6 +17,7 @@ CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_TIME_VSYSCALL=y 17CONFIG_GENERIC_TIME_VSYSCALL=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_BUG=y 19CONFIG_GENERIC_BUG=y
20CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
20CONFIG_NO_IOMEM=y 21CONFIG_NO_IOMEM=y
21CONFIG_NO_DMA=y 22CONFIG_NO_DMA=y
22CONFIG_GENERIC_LOCKBREAK=y 23CONFIG_GENERIC_LOCKBREAK=y
@@ -62,15 +63,11 @@ CONFIG_TREE_RCU=y
62# CONFIG_RCU_TRACE is not set 63# CONFIG_RCU_TRACE is not set
63CONFIG_RCU_FANOUT=64 64CONFIG_RCU_FANOUT=64
64# CONFIG_RCU_FANOUT_EXACT is not set 65# CONFIG_RCU_FANOUT_EXACT is not set
66# CONFIG_RCU_FAST_NO_HZ is not set
65# CONFIG_TREE_RCU_TRACE is not set 67# CONFIG_TREE_RCU_TRACE is not set
66CONFIG_IKCONFIG=y 68CONFIG_IKCONFIG=y
67CONFIG_IKCONFIG_PROC=y 69CONFIG_IKCONFIG_PROC=y
68CONFIG_LOG_BUF_SHIFT=17 70CONFIG_LOG_BUF_SHIFT=17
69CONFIG_GROUP_SCHED=y
70CONFIG_FAIR_GROUP_SCHED=y
71# CONFIG_RT_GROUP_SCHED is not set
72CONFIG_USER_SCHED=y
73# CONFIG_CGROUP_SCHED is not set
74CONFIG_CGROUPS=y 71CONFIG_CGROUPS=y
75# CONFIG_CGROUP_DEBUG is not set 72# CONFIG_CGROUP_DEBUG is not set
76CONFIG_CGROUP_NS=y 73CONFIG_CGROUP_NS=y
@@ -79,6 +76,7 @@ CONFIG_CGROUP_NS=y
79# CONFIG_CPUSETS is not set 76# CONFIG_CPUSETS is not set
80# CONFIG_CGROUP_CPUACCT is not set 77# CONFIG_CGROUP_CPUACCT is not set
81# CONFIG_RESOURCE_COUNTERS is not set 78# CONFIG_RESOURCE_COUNTERS is not set
79# CONFIG_CGROUP_SCHED is not set
82CONFIG_SYSFS_DEPRECATED=y 80CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y 81CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_RELAY is not set 82# CONFIG_RELAY is not set
@@ -93,6 +91,7 @@ CONFIG_INITRAMFS_SOURCE=""
93CONFIG_RD_GZIP=y 91CONFIG_RD_GZIP=y
94CONFIG_RD_BZIP2=y 92CONFIG_RD_BZIP2=y
95CONFIG_RD_LZMA=y 93CONFIG_RD_LZMA=y
94CONFIG_RD_LZO=y
96# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 95# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
97CONFIG_SYSCTL=y 96CONFIG_SYSCTL=y
98CONFIG_ANON_INODES=y 97CONFIG_ANON_INODES=y
@@ -126,6 +125,7 @@ CONFIG_SLAB=y
126# CONFIG_SLUB is not set 125# CONFIG_SLUB is not set
127# CONFIG_SLOB is not set 126# CONFIG_SLOB is not set
128# CONFIG_PROFILING is not set 127# CONFIG_PROFILING is not set
128CONFIG_TRACEPOINTS=y
129CONFIG_HAVE_OPROFILE=y 129CONFIG_HAVE_OPROFILE=y
130CONFIG_KPROBES=y 130CONFIG_KPROBES=y
131CONFIG_HAVE_SYSCALL_WRAPPERS=y 131CONFIG_HAVE_SYSCALL_WRAPPERS=y
@@ -134,6 +134,7 @@ CONFIG_HAVE_KPROBES=y
134CONFIG_HAVE_KRETPROBES=y 134CONFIG_HAVE_KRETPROBES=y
135CONFIG_HAVE_ARCH_TRACEHOOK=y 135CONFIG_HAVE_ARCH_TRACEHOOK=y
136CONFIG_USE_GENERIC_SMP_HELPERS=y 136CONFIG_USE_GENERIC_SMP_HELPERS=y
137CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
137CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES=y 138CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES=y
138 139
139# 140#
@@ -246,6 +247,7 @@ CONFIG_64BIT=y
246CONFIG_SMP=y 247CONFIG_SMP=y
247CONFIG_NR_CPUS=32 248CONFIG_NR_CPUS=32
248CONFIG_HOTPLUG_CPU=y 249CONFIG_HOTPLUG_CPU=y
250# CONFIG_SCHED_BOOK is not set
249CONFIG_COMPAT=y 251CONFIG_COMPAT=y
250CONFIG_SYSVIPC_COMPAT=y 252CONFIG_SYSVIPC_COMPAT=y
251CONFIG_AUDIT_ARCH=y 253CONFIG_AUDIT_ARCH=y
@@ -345,13 +347,13 @@ CONFIG_PM_SLEEP=y
345CONFIG_HIBERNATION=y 347CONFIG_HIBERNATION=y
346CONFIG_PM_STD_PARTITION="" 348CONFIG_PM_STD_PARTITION=""
347# CONFIG_PM_RUNTIME is not set 349# CONFIG_PM_RUNTIME is not set
350CONFIG_PM_OPS=y
348CONFIG_NET=y 351CONFIG_NET=y
349 352
350# 353#
351# Networking options 354# Networking options
352# 355#
353CONFIG_PACKET=y 356CONFIG_PACKET=y
354# CONFIG_PACKET_MMAP is not set
355CONFIG_UNIX=y 357CONFIG_UNIX=y
356CONFIG_XFRM=y 358CONFIG_XFRM=y
357# CONFIG_XFRM_USER is not set 359# CONFIG_XFRM_USER is not set
@@ -529,6 +531,7 @@ CONFIG_NET_SCH_FIFO=y
529# 531#
530# CONFIG_NET_PKTGEN is not set 532# CONFIG_NET_PKTGEN is not set
531# CONFIG_NET_TCPPROBE is not set 533# CONFIG_NET_TCPPROBE is not set
534# CONFIG_NET_DROP_MONITOR is not set
532CONFIG_CAN=m 535CONFIG_CAN=m
533CONFIG_CAN_RAW=m 536CONFIG_CAN_RAW=m
534CONFIG_CAN_BCM=m 537CONFIG_CAN_BCM=m
@@ -605,6 +608,7 @@ CONFIG_MISC_DEVICES=y
605# 608#
606# SCSI device support 609# SCSI device support
607# 610#
611CONFIG_SCSI_MOD=y
608# CONFIG_RAID_ATTRS is not set 612# CONFIG_RAID_ATTRS is not set
609CONFIG_SCSI=y 613CONFIG_SCSI=y
610# CONFIG_SCSI_DMA is not set 614# CONFIG_SCSI_DMA is not set
@@ -863,6 +867,7 @@ CONFIG_MISC_FILESYSTEMS=y
863# CONFIG_BEFS_FS is not set 867# CONFIG_BEFS_FS is not set
864# CONFIG_BFS_FS is not set 868# CONFIG_BFS_FS is not set
865# CONFIG_EFS_FS is not set 869# CONFIG_EFS_FS is not set
870# CONFIG_LOGFS is not set
866# CONFIG_CRAMFS is not set 871# CONFIG_CRAMFS is not set
867# CONFIG_SQUASHFS is not set 872# CONFIG_SQUASHFS is not set
868# CONFIG_VXFS_FS is not set 873# CONFIG_VXFS_FS is not set
@@ -891,6 +896,7 @@ CONFIG_SUNRPC=y
891# CONFIG_RPCSEC_GSS_KRB5 is not set 896# CONFIG_RPCSEC_GSS_KRB5 is not set
892# CONFIG_RPCSEC_GSS_SPKM3 is not set 897# CONFIG_RPCSEC_GSS_SPKM3 is not set
893# CONFIG_SMB_FS is not set 898# CONFIG_SMB_FS is not set
899# CONFIG_CEPH_FS is not set
894# CONFIG_CIFS is not set 900# CONFIG_CIFS is not set
895# CONFIG_NCP_FS is not set 901# CONFIG_NCP_FS is not set
896# CONFIG_CODA_FS is not set 902# CONFIG_CODA_FS is not set
@@ -952,6 +958,7 @@ CONFIG_DEBUG_MUTEXES=y
952# CONFIG_LOCK_STAT is not set 958# CONFIG_LOCK_STAT is not set
953CONFIG_DEBUG_SPINLOCK_SLEEP=y 959CONFIG_DEBUG_SPINLOCK_SLEEP=y
954# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 960# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
961CONFIG_STACKTRACE=y
955# CONFIG_DEBUG_KOBJECT is not set 962# CONFIG_DEBUG_KOBJECT is not set
956CONFIG_DEBUG_BUGVERBOSE=y 963CONFIG_DEBUG_BUGVERBOSE=y
957# CONFIG_DEBUG_INFO is not set 964# CONFIG_DEBUG_INFO is not set
@@ -973,12 +980,17 @@ CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
973# CONFIG_LATENCYTOP is not set 980# CONFIG_LATENCYTOP is not set
974CONFIG_SYSCTL_SYSCALL_CHECK=y 981CONFIG_SYSCTL_SYSCALL_CHECK=y
975# CONFIG_DEBUG_PAGEALLOC is not set 982# CONFIG_DEBUG_PAGEALLOC is not set
983CONFIG_NOP_TRACER=y
976CONFIG_HAVE_FUNCTION_TRACER=y 984CONFIG_HAVE_FUNCTION_TRACER=y
977CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 985CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
978CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 986CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
979CONFIG_HAVE_DYNAMIC_FTRACE=y 987CONFIG_HAVE_DYNAMIC_FTRACE=y
980CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 988CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
981CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 989CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
990CONFIG_RING_BUFFER=y
991CONFIG_EVENT_TRACING=y
992CONFIG_CONTEXT_SWITCH_TRACER=y
993CONFIG_TRACING=y
982CONFIG_TRACING_SUPPORT=y 994CONFIG_TRACING_SUPPORT=y
983CONFIG_FTRACE=y 995CONFIG_FTRACE=y
984# CONFIG_FUNCTION_TRACER is not set 996# CONFIG_FUNCTION_TRACER is not set
@@ -995,10 +1007,15 @@ CONFIG_BRANCH_PROFILE_NONE=y
995# CONFIG_KMEMTRACE is not set 1007# CONFIG_KMEMTRACE is not set
996# CONFIG_WORKQUEUE_TRACER is not set 1008# CONFIG_WORKQUEUE_TRACER is not set
997# CONFIG_BLK_DEV_IO_TRACE is not set 1009# CONFIG_BLK_DEV_IO_TRACE is not set
1010CONFIG_KPROBE_EVENT=y
1011# CONFIG_RING_BUFFER_BENCHMARK is not set
998# CONFIG_DYNAMIC_DEBUG is not set 1012# CONFIG_DYNAMIC_DEBUG is not set
999CONFIG_SAMPLES=y 1013CONFIG_SAMPLES=y
1014# CONFIG_SAMPLE_TRACEPOINTS is not set
1015# CONFIG_SAMPLE_TRACE_EVENTS is not set
1000# CONFIG_SAMPLE_KOBJECT is not set 1016# CONFIG_SAMPLE_KOBJECT is not set
1001# CONFIG_SAMPLE_KPROBES is not set 1017# CONFIG_SAMPLE_KPROBES is not set
1018# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
1002 1019
1003# 1020#
1004# Security options 1021# Security options
@@ -1032,6 +1049,7 @@ CONFIG_CRYPTO_MANAGER=y
1032CONFIG_CRYPTO_MANAGER2=y 1049CONFIG_CRYPTO_MANAGER2=y
1033CONFIG_CRYPTO_GF128MUL=m 1050CONFIG_CRYPTO_GF128MUL=m
1034# CONFIG_CRYPTO_NULL is not set 1051# CONFIG_CRYPTO_NULL is not set
1052# CONFIG_CRYPTO_PCRYPT is not set
1035CONFIG_CRYPTO_WORKQUEUE=y 1053CONFIG_CRYPTO_WORKQUEUE=y
1036# CONFIG_CRYPTO_CRYPTD is not set 1054# CONFIG_CRYPTO_CRYPTD is not set
1037CONFIG_CRYPTO_AUTHENC=m 1055CONFIG_CRYPTO_AUTHENC=m
@@ -1119,7 +1137,7 @@ CONFIG_CRYPTO_SHA512_S390=m
1119# CONFIG_CRYPTO_DES_S390 is not set 1137# CONFIG_CRYPTO_DES_S390 is not set
1120# CONFIG_CRYPTO_AES_S390 is not set 1138# CONFIG_CRYPTO_AES_S390 is not set
1121CONFIG_S390_PRNG=m 1139CONFIG_S390_PRNG=m
1122# CONFIG_BINARY_PRINTF is not set 1140CONFIG_BINARY_PRINTF=y
1123 1141
1124# 1142#
1125# Library routines 1143# Library routines
@@ -1136,14 +1154,16 @@ CONFIG_LIBCRC32C=m
1136CONFIG_ZLIB_INFLATE=y 1154CONFIG_ZLIB_INFLATE=y
1137CONFIG_ZLIB_DEFLATE=m 1155CONFIG_ZLIB_DEFLATE=m
1138CONFIG_LZO_COMPRESS=m 1156CONFIG_LZO_COMPRESS=m
1139CONFIG_LZO_DECOMPRESS=m 1157CONFIG_LZO_DECOMPRESS=y
1140CONFIG_DECOMPRESS_GZIP=y 1158CONFIG_DECOMPRESS_GZIP=y
1141CONFIG_DECOMPRESS_BZIP2=y 1159CONFIG_DECOMPRESS_BZIP2=y
1142CONFIG_DECOMPRESS_LZMA=y 1160CONFIG_DECOMPRESS_LZMA=y
1161CONFIG_DECOMPRESS_LZO=y
1143CONFIG_NLATTR=y 1162CONFIG_NLATTR=y
1144CONFIG_HAVE_KVM=y 1163CONFIG_HAVE_KVM=y
1145CONFIG_VIRTUALIZATION=y 1164CONFIG_VIRTUALIZATION=y
1146CONFIG_KVM=m 1165CONFIG_KVM=m
1166# CONFIG_VHOST_NET is not set
1147CONFIG_VIRTIO=y 1167CONFIG_VIRTIO=y
1148CONFIG_VIRTIO_RING=y 1168CONFIG_VIRTIO_RING=y
1149CONFIG_VIRTIO_BALLOON=m 1169CONFIG_VIRTIO_BALLOON=m
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c
index 87cf523192e9..5b1acdba6495 100644
--- a/arch/s390/hypfs/hypfs_diag.c
+++ b/arch/s390/hypfs/hypfs_diag.c
@@ -12,7 +12,6 @@
12 12
13#include <linux/types.h> 13#include <linux/types.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/gfp.h>
16#include <linux/slab.h> 15#include <linux/slab.h>
17#include <linux/string.h> 16#include <linux/string.h>
18#include <linux/vmalloc.h> 17#include <linux/vmalloc.h>
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index cd128b07beda..c53f8ac825ca 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -14,8 +14,8 @@
14#include <linux/fs.h> 14#include <linux/fs.h>
15#include <linux/namei.h> 15#include <linux/namei.h>
16#include <linux/vfs.h> 16#include <linux/vfs.h>
17#include <linux/slab.h>
17#include <linux/pagemap.h> 18#include <linux/pagemap.h>
18#include <linux/gfp.h>
19#include <linux/time.h> 19#include <linux/time.h>
20#include <linux/parser.h> 20#include <linux/parser.h>
21#include <linux/sysfs.h> 21#include <linux/sysfs.h>
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 9b5b9189c15e..89a504c3f12e 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -105,7 +105,7 @@ extern char empty_zero_page[PAGE_SIZE];
105#ifndef __ASSEMBLY__ 105#ifndef __ASSEMBLY__
106/* 106/*
107 * The vmalloc area will always be on the topmost area of the kernel 107 * The vmalloc area will always be on the topmost area of the kernel
108 * mapping. We reserve 96MB (31bit) / 1GB (64bit) for vmalloc, 108 * mapping. We reserve 96MB (31bit) / 128GB (64bit) for vmalloc,
109 * which should be enough for any sane case. 109 * which should be enough for any sane case.
110 * By putting vmalloc at the top, we maximise the gap between physical 110 * By putting vmalloc at the top, we maximise the gap between physical
111 * memory and vmalloc to catch misplaced memory accesses. As a side 111 * memory and vmalloc to catch misplaced memory accesses. As a side
@@ -120,8 +120,8 @@ extern unsigned long VMALLOC_START;
120#define VMALLOC_END 0x7e000000UL 120#define VMALLOC_END 0x7e000000UL
121#define VMEM_MAP_END 0x80000000UL 121#define VMEM_MAP_END 0x80000000UL
122#else /* __s390x__ */ 122#else /* __s390x__ */
123#define VMALLOC_SIZE (1UL << 30) 123#define VMALLOC_SIZE (128UL << 30)
124#define VMALLOC_END 0x3e040000000UL 124#define VMALLOC_END 0x3e000000000UL
125#define VMEM_MAP_END 0x40000000000UL 125#define VMEM_MAP_END 0x40000000000UL
126#endif /* __s390x__ */ 126#endif /* __s390x__ */
127 127
diff --git a/arch/s390/include/asm/system.h b/arch/s390/include/asm/system.h
index 67ee6c3c6bb3..1741c1556a4e 100644
--- a/arch/s390/include/asm/system.h
+++ b/arch/s390/include/asm/system.h
@@ -110,6 +110,7 @@ extern void pfault_fini(void);
110#endif /* CONFIG_PFAULT */ 110#endif /* CONFIG_PFAULT */
111 111
112extern void cmma_init(void); 112extern void cmma_init(void);
113extern int memcpy_real(void *, void *, size_t);
113 114
114#define finish_arch_switch(prev) do { \ 115#define finish_arch_switch(prev) do { \
115 set_fs(current->thread.mm_segment); \ 116 set_fs(current->thread.mm_segment); \
@@ -218,8 +219,8 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
218 " l %0,%2\n" 219 " l %0,%2\n"
219 "0: nr %0,%5\n" 220 "0: nr %0,%5\n"
220 " lr %1,%0\n" 221 " lr %1,%0\n"
221 " or %0,%2\n" 222 " or %0,%3\n"
222 " or %1,%3\n" 223 " or %1,%4\n"
223 " cs %0,%1,%2\n" 224 " cs %0,%1,%2\n"
224 " jnl 1f\n" 225 " jnl 1f\n"
225 " xr %1,%0\n" 226 " xr %1,%0\n"
@@ -239,8 +240,8 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
239 " l %0,%2\n" 240 " l %0,%2\n"
240 "0: nr %0,%5\n" 241 "0: nr %0,%5\n"
241 " lr %1,%0\n" 242 " lr %1,%0\n"
242 " or %0,%2\n" 243 " or %0,%3\n"
243 " or %1,%3\n" 244 " or %1,%4\n"
244 " cs %0,%1,%2\n" 245 " cs %0,%1,%2\n"
245 " jnl 1f\n" 246 " jnl 1f\n"
246 " xr %1,%0\n" 247 " xr %1,%0\n"
diff --git a/arch/s390/include/asm/vdso.h b/arch/s390/include/asm/vdso.h
index 4a76d9480cce..533f35751aeb 100644
--- a/arch/s390/include/asm/vdso.h
+++ b/arch/s390/include/asm/vdso.h
@@ -29,6 +29,7 @@ struct vdso_data {
29 __u32 tz_minuteswest; /* Minutes west of Greenwich 0x30 */ 29 __u32 tz_minuteswest; /* Minutes west of Greenwich 0x30 */
30 __u32 tz_dsttime; /* Type of dst correction 0x34 */ 30 __u32 tz_dsttime; /* Type of dst correction 0x34 */
31 __u32 ectg_available; 31 __u32 ectg_available;
32 __u32 ntp_mult; /* NTP adjusted multiplier 0x3C */
32}; 33};
33 34
34struct vdso_per_cpu_data { 35struct vdso_per_cpu_data {
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index 08db736dded0..a09408952ed0 100644
--- a/arch/s390/kernel/asm-offsets.c
+++ b/arch/s390/kernel/asm-offsets.c
@@ -61,6 +61,7 @@ int main(void)
61 DEFINE(__VDSO_WTOM_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); 61 DEFINE(__VDSO_WTOM_NSEC, offsetof(struct vdso_data, wtom_clock_nsec));
62 DEFINE(__VDSO_TIMEZONE, offsetof(struct vdso_data, tz_minuteswest)); 62 DEFINE(__VDSO_TIMEZONE, offsetof(struct vdso_data, tz_minuteswest));
63 DEFINE(__VDSO_ECTG_OK, offsetof(struct vdso_data, ectg_available)); 63 DEFINE(__VDSO_ECTG_OK, offsetof(struct vdso_data, ectg_available));
64 DEFINE(__VDSO_NTP_MULT, offsetof(struct vdso_data, ntp_mult));
64 DEFINE(__VDSO_ECTG_BASE, offsetof(struct vdso_per_cpu_data, ectg_timer_base)); 65 DEFINE(__VDSO_ECTG_BASE, offsetof(struct vdso_per_cpu_data, ectg_timer_base));
65 DEFINE(__VDSO_ECTG_USER, offsetof(struct vdso_per_cpu_data, ectg_user_time)); 66 DEFINE(__VDSO_ECTG_USER, offsetof(struct vdso_per_cpu_data, ectg_user_time));
66 /* constants used by the vdso */ 67 /* constants used by the vdso */
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 11c3aba664ea..73b624ed9cd8 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -29,7 +29,6 @@
29#include <linux/sem.h> 29#include <linux/sem.h>
30#include <linux/msg.h> 30#include <linux/msg.h>
31#include <linux/shm.h> 31#include <linux/shm.h>
32#include <linux/slab.h>
33#include <linux/uio.h> 32#include <linux/uio.h>
34#include <linux/quota.h> 33#include <linux/quota.h>
35#include <linux/module.h> 34#include <linux/module.h>
@@ -52,6 +51,7 @@
52#include <linux/ptrace.h> 51#include <linux/ptrace.h>
53#include <linux/fadvise.h> 52#include <linux/fadvise.h>
54#include <linux/ipc.h> 53#include <linux/ipc.h>
54#include <linux/slab.h>
55 55
56#include <asm/types.h> 56#include <asm/types.h>
57#include <asm/uaccess.h> 57#include <asm/uaccess.h>
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 31d618a443af..2d92c2cf92d7 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -82,7 +82,8 @@ asm(
82 " lm 6,15,24(15)\n" 82 " lm 6,15,24(15)\n"
83#endif 83#endif
84 " br 14\n" 84 " br 14\n"
85 " .size savesys_ipl_nss, .-savesys_ipl_nss\n"); 85 " .size savesys_ipl_nss, .-savesys_ipl_nss\n"
86 " .previous\n");
86 87
87static __initdata char upper_command_line[COMMAND_LINE_SIZE]; 88static __initdata char upper_command_line[COMMAND_LINE_SIZE];
88 89
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index 4348f9bc5393..6af7045280a8 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -964,7 +964,7 @@ cleanup_critical:
964 clc 4(4,%r12),BASED(cleanup_table_io_work_loop) 964 clc 4(4,%r12),BASED(cleanup_table_io_work_loop)
965 bl BASED(0f) 965 bl BASED(0f)
966 clc 4(4,%r12),BASED(cleanup_table_io_work_loop+4) 966 clc 4(4,%r12),BASED(cleanup_table_io_work_loop+4)
967 bl BASED(cleanup_io_return) 967 bl BASED(cleanup_io_work_loop)
9680: 9680:
969 br %r14 969 br %r14
970 970
@@ -1039,6 +1039,12 @@ cleanup_sysc_leave_insn:
1039 1039
1040cleanup_io_return: 1040cleanup_io_return:
1041 mvc __LC_RETURN_PSW(4),0(%r12) 1041 mvc __LC_RETURN_PSW(4),0(%r12)
1042 mvc __LC_RETURN_PSW+4(4),BASED(cleanup_table_io_return)
1043 la %r12,__LC_RETURN_PSW
1044 br %r14
1045
1046cleanup_io_work_loop:
1047 mvc __LC_RETURN_PSW(4),0(%r12)
1042 mvc __LC_RETURN_PSW+4(4),BASED(cleanup_table_io_work_loop) 1048 mvc __LC_RETURN_PSW+4(4),BASED(cleanup_table_io_work_loop)
1043 la %r12,__LC_RETURN_PSW 1049 la %r12,__LC_RETURN_PSW
1044 br %r14 1050 br %r14
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 29fd0f1e6ec4..52106d53271c 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -946,7 +946,7 @@ cleanup_critical:
946 clc 8(8,%r12),BASED(cleanup_table_io_work_loop) 946 clc 8(8,%r12),BASED(cleanup_table_io_work_loop)
947 jl 0f 947 jl 0f
948 clc 8(8,%r12),BASED(cleanup_table_io_work_loop+8) 948 clc 8(8,%r12),BASED(cleanup_table_io_work_loop+8)
949 jl cleanup_io_return 949 jl cleanup_io_work_loop
9500: 9500:
951 br %r14 951 br %r14
952 952
@@ -1021,6 +1021,12 @@ cleanup_sysc_leave_insn:
1021 1021
1022cleanup_io_return: 1022cleanup_io_return:
1023 mvc __LC_RETURN_PSW(8),0(%r12) 1023 mvc __LC_RETURN_PSW(8),0(%r12)
1024 mvc __LC_RETURN_PSW+8(8),BASED(cleanup_table_io_return)
1025 la %r12,__LC_RETURN_PSW
1026 br %r14
1027
1028cleanup_io_work_loop:
1029 mvc __LC_RETURN_PSW(8),0(%r12)
1024 mvc __LC_RETURN_PSW+8(8),BASED(cleanup_table_io_work_loop) 1030 mvc __LC_RETURN_PSW+8(8),BASED(cleanup_table_io_work_loop)
1025 la %r12,__LC_RETURN_PSW 1031 la %r12,__LC_RETURN_PSW
1026 br %r14 1032 br %r14
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index ca4a62bd862f..9d1f76702d47 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -517,7 +517,10 @@ startup:
517 lhi %r1,2 # mode 2 = esame (dump) 517 lhi %r1,2 # mode 2 = esame (dump)
518 sigp %r1,%r0,0x12 # switch to esame mode 518 sigp %r1,%r0,0x12 # switch to esame mode
519 sam64 # switch to 64 bit mode 519 sam64 # switch to 64 bit mode
520 larl %r13,4f
521 lmh %r0,%r15,0(%r13) # clear high-order half
520 jg startup_continue 522 jg startup_continue
5234: .fill 16,4,0x0
521#else 524#else
522 mvi __LC_AR_MODE_ID,0 # set ESA flag (mode 0) 525 mvi __LC_AR_MODE_ID,0 # set ESA flag (mode 0)
523 l %r13,4f-.LPG0(%r13) 526 l %r13,4f-.LPG0(%r13)
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index 39580e768658..1f70970de0aa 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -21,7 +21,6 @@ startup_continue:
21 larl %r1,sched_clock_base_cc 21 larl %r1,sched_clock_base_cc
22 mvc 0(8,%r1),__LC_LAST_UPDATE_CLOCK 22 mvc 0(8,%r1),__LC_LAST_UPDATE_CLOCK
23 larl %r13,.LPG1 # get base 23 larl %r13,.LPG1 # get base
24 lmh %r0,%r15,.Lzero64-.LPG1(%r13) # clear high-order half
25 lctlg %c0,%c15,.Lctl-.LPG1(%r13) # load control registers 24 lctlg %c0,%c15,.Lctl-.LPG1(%r13) # load control registers
26 lg %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area 25 lg %r12,.Lparmaddr-.LPG1(%r13) # pointer to parameter area
27 # move IPL device to lowcore 26 # move IPL device to lowcore
@@ -67,7 +66,6 @@ startup_continue:
67.L4malign:.quad 0xffffffffffc00000 66.L4malign:.quad 0xffffffffffc00000
68.Lscan2g:.quad 0x80000000 + 0x20000 - 8 # 2GB + 128K - 8 67.Lscan2g:.quad 0x80000000 + 0x20000 - 8 # 2GB + 128K - 8
69.Lnop: .long 0x07000700 68.Lnop: .long 0x07000700
70.Lzero64:.fill 16,4,0x0
71.Lparmaddr: 69.Lparmaddr:
72 .quad PARMAREA 70 .quad PARMAREA
73 .align 64 71 .align 64
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 7eedbbcb54aa..72c8b0d070c8 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -15,6 +15,7 @@
15#include <linux/reboot.h> 15#include <linux/reboot.h>
16#include <linux/ctype.h> 16#include <linux/ctype.h>
17#include <linux/fs.h> 17#include <linux/fs.h>
18#include <linux/gfp.h>
18#include <asm/ipl.h> 19#include <asm/ipl.h>
19#include <asm/smp.h> 20#include <asm/smp.h>
20#include <asm/setup.h> 21#include <asm/setup.h>
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c
index 86783efa24ee..3d34eef5a2c3 100644
--- a/arch/s390/kernel/kprobes.c
+++ b/arch/s390/kernel/kprobes.c
@@ -29,6 +29,7 @@
29#include <asm/cacheflush.h> 29#include <asm/cacheflush.h>
30#include <asm/sections.h> 30#include <asm/sections.h>
31#include <linux/module.h> 31#include <linux/module.h>
32#include <linux/slab.h>
32 33
33DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; 34DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL;
34DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); 35DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 00b6d1d292f2..1039fdea15b5 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -16,9 +16,9 @@
16#include <linux/fs.h> 16#include <linux/fs.h>
17#include <linux/smp.h> 17#include <linux/smp.h>
18#include <linux/stddef.h> 18#include <linux/stddef.h>
19#include <linux/slab.h>
19#include <linux/unistd.h> 20#include <linux/unistd.h>
20#include <linux/ptrace.h> 21#include <linux/ptrace.h>
21#include <linux/slab.h>
22#include <linux/vmalloc.h> 22#include <linux/vmalloc.h>
23#include <linux/user.h> 23#include <linux/user.h>
24#include <linux/interrupt.h> 24#include <linux/interrupt.h>
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 77a63ae419f0..91625f759ccd 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -25,7 +25,6 @@
25#include <linux/stddef.h> 25#include <linux/stddef.h>
26#include <linux/unistd.h> 26#include <linux/unistd.h>
27#include <linux/ptrace.h> 27#include <linux/ptrace.h>
28#include <linux/slab.h>
29#include <linux/user.h> 28#include <linux/user.h>
30#include <linux/tty.h> 29#include <linux/tty.h>
31#include <linux/ioport.h> 30#include <linux/ioport.h>
@@ -401,7 +400,7 @@ setup_lowcore(void)
401 * Setup lowcore for boot cpu 400 * Setup lowcore for boot cpu
402 */ 401 */
403 BUILD_BUG_ON(sizeof(struct _lowcore) != LC_PAGES * 4096); 402 BUILD_BUG_ON(sizeof(struct _lowcore) != LC_PAGES * 4096);
404 lc = __alloc_bootmem(LC_PAGES * PAGE_SIZE, LC_PAGES * PAGE_SIZE, 0); 403 lc = __alloc_bootmem_low(LC_PAGES * PAGE_SIZE, LC_PAGES * PAGE_SIZE, 0);
405 lc->restart_psw.mask = PSW_BASE_BITS | PSW_DEFAULT_KEY; 404 lc->restart_psw.mask = PSW_BASE_BITS | PSW_DEFAULT_KEY;
406 lc->restart_psw.addr = 405 lc->restart_psw.addr =
407 PSW_ADDR_AMODE | (unsigned long) restart_int_handler; 406 PSW_ADDR_AMODE | (unsigned long) restart_int_handler;
@@ -433,7 +432,7 @@ setup_lowcore(void)
433#ifndef CONFIG_64BIT 432#ifndef CONFIG_64BIT
434 if (MACHINE_HAS_IEEE) { 433 if (MACHINE_HAS_IEEE) {
435 lc->extended_save_area_addr = (__u32) 434 lc->extended_save_area_addr = (__u32)
436 __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0); 435 __alloc_bootmem_low(PAGE_SIZE, PAGE_SIZE, 0);
437 /* enable extended save area */ 436 /* enable extended save area */
438 __ctl_set_bit(14, 29); 437 __ctl_set_bit(14, 29);
439 } 438 }
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 29f65bce55e1..e4d98de83dd8 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -36,6 +36,7 @@
36#include <linux/cpu.h> 36#include <linux/cpu.h>
37#include <linux/timex.h> 37#include <linux/timex.h>
38#include <linux/bootmem.h> 38#include <linux/bootmem.h>
39#include <linux/slab.h>
39#include <asm/asm-offsets.h> 40#include <asm/asm-offsets.h>
40#include <asm/ipl.h> 41#include <asm/ipl.h>
41#include <asm/setup.h> 42#include <asm/setup.h>
@@ -292,9 +293,9 @@ static void __init smp_get_save_area(unsigned int cpu, unsigned int phy_cpu)
292 zfcpdump_save_areas[cpu] = kmalloc(sizeof(struct save_area), GFP_KERNEL); 293 zfcpdump_save_areas[cpu] = kmalloc(sizeof(struct save_area), GFP_KERNEL);
293 while (raw_sigp(phy_cpu, sigp_stop_and_store_status) == sigp_busy) 294 while (raw_sigp(phy_cpu, sigp_stop_and_store_status) == sigp_busy)
294 cpu_relax(); 295 cpu_relax();
295 memcpy(zfcpdump_save_areas[cpu], 296 memcpy_real(zfcpdump_save_areas[cpu],
296 (void *)(unsigned long) store_prefix() + SAVE_AREA_BASE, 297 (void *)(unsigned long) store_prefix() + SAVE_AREA_BASE,
297 sizeof(struct save_area)); 298 sizeof(struct save_area));
298} 299}
299 300
300struct save_area *zfcpdump_save_areas[NR_CPUS + 1]; 301struct save_area *zfcpdump_save_areas[NR_CPUS + 1];
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S
index b354427e03b7..c56d3f56d020 100644
--- a/arch/s390/kernel/swsusp_asm64.S
+++ b/arch/s390/kernel/swsusp_asm64.S
@@ -256,6 +256,9 @@ restore_registers:
256 lghi %r2,0 256 lghi %r2,0
257 brasl %r14,arch_set_page_states 257 brasl %r14,arch_set_page_states
258 258
259 /* Reinitialize the channel subsystem */
260 brasl %r14,channel_subsystem_reinit
261
259 /* Return 0 */ 262 /* Return 0 */
260 lmg %r6,%r15,STACK_FRAME_OVERHEAD + __SF_GPRS(%r15) 263 lmg %r6,%r15,STACK_FRAME_OVERHEAD + __SF_GPRS(%r15)
261 lghi %r2,0 264 lghi %r2,0
diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
index b5e75e1061c8..a0ffc7717ed6 100644
--- a/arch/s390/kernel/sysinfo.c
+++ b/arch/s390/kernel/sysinfo.c
@@ -11,6 +11,7 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/delay.h> 12#include <linux/delay.h>
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/slab.h>
14#include <asm/ebcdic.h> 15#include <asm/ebcdic.h>
15#include <asm/sysinfo.h> 16#include <asm/sysinfo.h>
16#include <asm/cpcmd.h> 17#include <asm/cpcmd.h>
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index aa2483e460f3..d906bf19c14a 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -36,6 +36,7 @@
36#include <linux/notifier.h> 36#include <linux/notifier.h>
37#include <linux/clocksource.h> 37#include <linux/clocksource.h>
38#include <linux/clockchips.h> 38#include <linux/clockchips.h>
39#include <linux/gfp.h>
39#include <asm/uaccess.h> 40#include <asm/uaccess.h>
40#include <asm/delay.h> 41#include <asm/delay.h>
41#include <asm/s390_ext.h> 42#include <asm/s390_ext.h>
@@ -220,6 +221,7 @@ void update_vsyscall(struct timespec *wall_time, struct clocksource *clock,
220 vdso_data->xtime_clock_nsec = wall_time->tv_nsec; 221 vdso_data->xtime_clock_nsec = wall_time->tv_nsec;
221 vdso_data->wtom_clock_sec = wall_to_monotonic.tv_sec; 222 vdso_data->wtom_clock_sec = wall_to_monotonic.tv_sec;
222 vdso_data->wtom_clock_nsec = wall_to_monotonic.tv_nsec; 223 vdso_data->wtom_clock_nsec = wall_to_monotonic.tv_nsec;
224 vdso_data->ntp_mult = mult;
223 smp_wmb(); 225 smp_wmb();
224 ++vdso_data->tb_update_count; 226 ++vdso_data->tb_update_count;
225} 227}
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 14ef6f05e432..247b4c2d1e51 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -165,10 +165,11 @@ static void tl_to_cores(struct tl_info *info)
165 default: 165 default:
166 clear_cores(); 166 clear_cores();
167 machine_has_topology = 0; 167 machine_has_topology = 0;
168 return; 168 goto out;
169 } 169 }
170 tle = next_tle(tle); 170 tle = next_tle(tle);
171 } 171 }
172out:
172 spin_unlock_irq(&topology_lock); 173 spin_unlock_irq(&topology_lock);
173} 174}
174 175
diff --git a/arch/s390/kernel/vdso32/clock_gettime.S b/arch/s390/kernel/vdso32/clock_gettime.S
index 4a98909a8310..969643954273 100644
--- a/arch/s390/kernel/vdso32/clock_gettime.S
+++ b/arch/s390/kernel/vdso32/clock_gettime.S
@@ -38,13 +38,13 @@ __kernel_clock_gettime:
38 sl %r1,__VDSO_XTIME_STAMP+4(%r5) 38 sl %r1,__VDSO_XTIME_STAMP+4(%r5)
39 brc 3,2f 39 brc 3,2f
40 ahi %r0,-1 40 ahi %r0,-1
412: mhi %r0,1000 /* cyc2ns(clock,cycle_delta) */ 412: ms %r0,__VDSO_NTP_MULT(%r5) /* cyc2ns(clock,cycle_delta) */
42 lr %r2,%r0 42 lr %r2,%r0
43 lhi %r0,1000 43 l %r0,__VDSO_NTP_MULT(%r5)
44 ltr %r1,%r1 44 ltr %r1,%r1
45 mr %r0,%r0 45 mr %r0,%r0
46 jnm 3f 46 jnm 3f
47 ahi %r0,1000 47 a %r0,__VDSO_NTP_MULT(%r5)
483: alr %r0,%r2 483: alr %r0,%r2
49 srdl %r0,12 49 srdl %r0,12
50 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */ 50 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */
@@ -86,13 +86,13 @@ __kernel_clock_gettime:
86 sl %r1,__VDSO_XTIME_STAMP+4(%r5) 86 sl %r1,__VDSO_XTIME_STAMP+4(%r5)
87 brc 3,12f 87 brc 3,12f
88 ahi %r0,-1 88 ahi %r0,-1
8912: mhi %r0,1000 /* cyc2ns(clock,cycle_delta) */ 8912: ms %r0,__VDSO_NTP_MULT(%r5) /* cyc2ns(clock,cycle_delta) */
90 lr %r2,%r0 90 lr %r2,%r0
91 lhi %r0,1000 91 l %r0,__VDSO_NTP_MULT(%r5)
92 ltr %r1,%r1 92 ltr %r1,%r1
93 mr %r0,%r0 93 mr %r0,%r0
94 jnm 13f 94 jnm 13f
95 ahi %r0,1000 95 a %r0,__VDSO_NTP_MULT(%r5)
9613: alr %r0,%r2 9613: alr %r0,%r2
97 srdl %r0,12 97 srdl %r0,12
98 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */ 98 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */
diff --git a/arch/s390/kernel/vdso32/gettimeofday.S b/arch/s390/kernel/vdso32/gettimeofday.S
index ad8acfc949fb..2d3633175e3b 100644
--- a/arch/s390/kernel/vdso32/gettimeofday.S
+++ b/arch/s390/kernel/vdso32/gettimeofday.S
@@ -35,13 +35,13 @@ __kernel_gettimeofday:
35 sl %r1,__VDSO_XTIME_STAMP+4(%r5) 35 sl %r1,__VDSO_XTIME_STAMP+4(%r5)
36 brc 3,3f 36 brc 3,3f
37 ahi %r0,-1 37 ahi %r0,-1
383: mhi %r0,1000 /* cyc2ns(clock,cycle_delta) */ 383: ms %r0,__VDSO_NTP_MULT(%r5) /* cyc2ns(clock,cycle_delta) */
39 st %r0,24(%r15) 39 st %r0,24(%r15)
40 lhi %r0,1000 40 l %r0,__VDSO_NTP_MULT(%r5)
41 ltr %r1,%r1 41 ltr %r1,%r1
42 mr %r0,%r0 42 mr %r0,%r0
43 jnm 4f 43 jnm 4f
44 ahi %r0,1000 44 a %r0,__VDSO_NTP_MULT(%r5)
454: al %r0,24(%r15) 454: al %r0,24(%r15)
46 srdl %r0,12 46 srdl %r0,12
47 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */ 47 al %r0,__VDSO_XTIME_NSEC(%r5) /* + xtime */
diff --git a/arch/s390/kernel/vdso64/clock_gettime.S b/arch/s390/kernel/vdso64/clock_gettime.S
index 49106c6e6f88..f40467884a03 100644
--- a/arch/s390/kernel/vdso64/clock_gettime.S
+++ b/arch/s390/kernel/vdso64/clock_gettime.S
@@ -36,7 +36,7 @@ __kernel_clock_gettime:
36 stck 48(%r15) /* Store TOD clock */ 36 stck 48(%r15) /* Store TOD clock */
37 lg %r1,48(%r15) 37 lg %r1,48(%r15)
38 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */ 38 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */
39 mghi %r1,1000 39 msgf %r1,__VDSO_NTP_MULT(%r5) /* * NTP adjustment */
40 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */ 40 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */
41 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime */ 41 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime */
42 lg %r0,__VDSO_XTIME_SEC(%r5) 42 lg %r0,__VDSO_XTIME_SEC(%r5)
@@ -64,7 +64,7 @@ __kernel_clock_gettime:
64 stck 48(%r15) /* Store TOD clock */ 64 stck 48(%r15) /* Store TOD clock */
65 lg %r1,48(%r15) 65 lg %r1,48(%r15)
66 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */ 66 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */
67 mghi %r1,1000 67 msgf %r1,__VDSO_NTP_MULT(%r5) /* * NTP adjustment */
68 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */ 68 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */
69 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime */ 69 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime */
70 lg %r0,__VDSO_XTIME_SEC(%r5) 70 lg %r0,__VDSO_XTIME_SEC(%r5)
diff --git a/arch/s390/kernel/vdso64/gettimeofday.S b/arch/s390/kernel/vdso64/gettimeofday.S
index f873e75634e1..36ee674722ec 100644
--- a/arch/s390/kernel/vdso64/gettimeofday.S
+++ b/arch/s390/kernel/vdso64/gettimeofday.S
@@ -31,7 +31,7 @@ __kernel_gettimeofday:
31 stck 48(%r15) /* Store TOD clock */ 31 stck 48(%r15) /* Store TOD clock */
32 lg %r1,48(%r15) 32 lg %r1,48(%r15)
33 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */ 33 sg %r1,__VDSO_XTIME_STAMP(%r5) /* TOD - cycle_last */
34 mghi %r1,1000 34 msgf %r1,__VDSO_NTP_MULT(%r5) /* * NTP adjustment */
35 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */ 35 srlg %r1,%r1,12 /* cyc2ns(clock,cycle_delta) */
36 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime.tv_nsec */ 36 alg %r1,__VDSO_XTIME_NSEC(%r5) /* + xtime.tv_nsec */
37 lg %r0,__VDSO_XTIME_SEC(%r5) /* xtime.tv_sec */ 37 lg %r0,__VDSO_XTIME_SEC(%r5) /* xtime.tv_sec */
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 834774d8d5f3..35c21bf910c5 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -14,6 +14,7 @@
14#include <linux/kvm_host.h> 14#include <linux/kvm_host.h>
15#include <linux/hrtimer.h> 15#include <linux/hrtimer.h>
16#include <linux/signal.h> 16#include <linux/signal.h>
17#include <linux/slab.h>
17#include <asm/asm-offsets.h> 18#include <asm/asm-offsets.h>
18#include <asm/uaccess.h> 19#include <asm/uaccess.h>
19#include "kvm-s390.h" 20#include "kvm-s390.h"
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index 28c55677eb39..44205507717c 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -12,6 +12,7 @@
12 */ 12 */
13 13
14#include <linux/kvm.h> 14#include <linux/kvm.h>
15#include <linux/gfp.h>
15#include <linux/errno.h> 16#include <linux/errno.h>
16#include <asm/current.h> 17#include <asm/current.h>
17#include <asm/debug.h> 18#include <asm/debug.h>
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index 241a48459b66..eff3c5989b46 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -14,6 +14,7 @@
14 14
15#include <linux/kvm.h> 15#include <linux/kvm.h>
16#include <linux/kvm_host.h> 16#include <linux/kvm_host.h>
17#include <linux/slab.h>
17#include "gaccess.h" 18#include "gaccess.h"
18#include "kvm-s390.h" 19#include "kvm-s390.h"
19 20
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c
index f16bd04e39e9..f87b34731e1d 100644
--- a/arch/s390/mm/cmm.c
+++ b/arch/s390/mm/cmm.c
@@ -12,6 +12,7 @@
12#include <linux/fs.h> 12#include <linux/fs.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/gfp.h>
15#include <linux/sched.h> 16#include <linux/sched.h>
16#include <linux/sysctl.h> 17#include <linux/sysctl.h>
17#include <linux/ctype.h> 18#include <linux/ctype.h>
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index d5865e4024ce..acc91c75bc94 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -26,6 +26,7 @@
26#include <linux/pfn.h> 26#include <linux/pfn.h>
27#include <linux/poison.h> 27#include <linux/poison.h>
28#include <linux/initrd.h> 28#include <linux/initrd.h>
29#include <linux/gfp.h>
29#include <asm/processor.h> 30#include <asm/processor.h>
30#include <asm/system.h> 31#include <asm/system.h>
31#include <asm/uaccess.h> 32#include <asm/uaccess.h>
diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c
index 81756271dc44..a8c2af8c650f 100644
--- a/arch/s390/mm/maccess.c
+++ b/arch/s390/mm/maccess.c
@@ -59,3 +59,29 @@ long probe_kernel_write(void *dst, void *src, size_t size)
59 } 59 }
60 return copied < 0 ? -EFAULT : 0; 60 return copied < 0 ? -EFAULT : 0;
61} 61}
62
63int memcpy_real(void *dest, void *src, size_t count)
64{
65 register unsigned long _dest asm("2") = (unsigned long) dest;
66 register unsigned long _len1 asm("3") = (unsigned long) count;
67 register unsigned long _src asm("4") = (unsigned long) src;
68 register unsigned long _len2 asm("5") = (unsigned long) count;
69 unsigned long flags;
70 int rc = -EFAULT;
71
72 if (!count)
73 return 0;
74 flags = __raw_local_irq_stnsm(0xf8UL);
75 asm volatile (
76 "0: mvcle %1,%2,0x0\n"
77 "1: jo 0b\n"
78 " lhi %0,0x0\n"
79 "2:\n"
80 EX_TABLE(1b,2b)
81 : "+d" (rc), "+d" (_dest), "+d" (_src), "+d" (_len1),
82 "+d" (_len2), "=m" (*((long *) dest))
83 : "m" (*((long *) src))
84 : "cc", "memory");
85 __raw_local_irq_ssm(flags);
86 return rc;
87}
diff --git a/arch/s390/mm/page-states.c b/arch/s390/mm/page-states.c
index 098923ae458f..a90d45e9dfb0 100644
--- a/arch/s390/mm/page-states.c
+++ b/arch/s390/mm/page-states.c
@@ -10,6 +10,7 @@
10#include <linux/errno.h> 10#include <linux/errno.h>
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/gfp.h>
13#include <linux/init.h> 14#include <linux/init.h>
14 15
15#define ESSA_SET_STABLE 1 16#define ESSA_SET_STABLE 1
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index ad621e06ada3..8d999249d357 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -6,11 +6,11 @@
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/kernel.h> 7#include <linux/kernel.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/gfp.h>
9#include <linux/mm.h> 10#include <linux/mm.h>
10#include <linux/swap.h> 11#include <linux/swap.h>
11#include <linux/smp.h> 12#include <linux/smp.h>
12#include <linux/highmem.h> 13#include <linux/highmem.h>
13#include <linux/slab.h>
14#include <linux/pagemap.h> 14#include <linux/pagemap.h>
15#include <linux/spinlock.h> 15#include <linux/spinlock.h>
16#include <linux/module.h> 16#include <linux/module.h>
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 300ab012b0fd..90165e7ca04e 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -11,6 +11,7 @@
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/list.h> 12#include <linux/list.h>
13#include <linux/hugetlb.h> 13#include <linux/hugetlb.h>
14#include <linux/slab.h>
14#include <asm/pgalloc.h> 15#include <asm/pgalloc.h>
15#include <asm/pgtable.h> 16#include <asm/pgtable.h>
16#include <asm/setup.h> 17#include <asm/setup.h>
@@ -70,12 +71,8 @@ static pte_t __ref *vmem_pte_alloc(void)
70 pte = alloc_bootmem(PTRS_PER_PTE * sizeof(pte_t)); 71 pte = alloc_bootmem(PTRS_PER_PTE * sizeof(pte_t));
71 if (!pte) 72 if (!pte)
72 return NULL; 73 return NULL;
73 if (MACHINE_HAS_HPAGE) 74 clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY,
74 clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY | _PAGE_CO, 75 PTRS_PER_PTE * sizeof(pte_t));
75 PTRS_PER_PTE * sizeof(pte_t));
76 else
77 clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY,
78 PTRS_PER_PTE * sizeof(pte_t));
79 return pte; 76 return pte;
80} 77}
81 78
@@ -116,8 +113,7 @@ static int vmem_add_mem(unsigned long start, unsigned long size, int ro)
116 if (MACHINE_HAS_HPAGE && !(address & ~HPAGE_MASK) && 113 if (MACHINE_HAS_HPAGE && !(address & ~HPAGE_MASK) &&
117 (address + HPAGE_SIZE <= start + size) && 114 (address + HPAGE_SIZE <= start + size) &&
118 (address >= HPAGE_SIZE)) { 115 (address >= HPAGE_SIZE)) {
119 pte_val(pte) |= _SEGMENT_ENTRY_LARGE | 116 pte_val(pte) |= _SEGMENT_ENTRY_LARGE;
120 _SEGMENT_ENTRY_CO;
121 pmd_val(*pm_dir) = pte_val(pte); 117 pmd_val(*pm_dir) = pte_val(pte);
122 address += HPAGE_SIZE - PAGE_SIZE; 118 address += HPAGE_SIZE - PAGE_SIZE;
123 continue; 119 continue;
diff --git a/arch/score/kernel/sys_score.c b/arch/score/kernel/sys_score.c
index 856ed68a58e6..651096ff8db4 100644
--- a/arch/score/kernel/sys_score.c
+++ b/arch/score/kernel/sys_score.c
@@ -28,6 +28,7 @@
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/mman.h> 29#include <linux/mman.h>
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/slab.h>
31#include <linux/unistd.h> 32#include <linux/unistd.h>
32#include <linux/syscalls.h> 33#include <linux/syscalls.h>
33#include <asm/syscalls.h> 34#include <asm/syscalls.h>
diff --git a/arch/score/mm/init.c b/arch/score/mm/init.c
index 7f001bbedb00..50fdec54c70a 100644
--- a/arch/score/mm/init.c
+++ b/arch/score/mm/init.c
@@ -26,6 +26,7 @@
26#include <linux/errno.h> 26#include <linux/errno.h>
27#include <linux/bootmem.h> 27#include <linux/bootmem.h>
28#include <linux/kernel.h> 28#include <linux/kernel.h>
29#include <linux/gfp.h>
29#include <linux/init.h> 30#include <linux/init.h>
30#include <linux/mm.h> 31#include <linux/mm.h>
31#include <linux/mman.h> 32#include <linux/mman.h>
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 39ed8722d11a..6c13b92742e8 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -836,6 +836,8 @@ static void __init sh_eth_init(struct sh_eth_plat_data *pd)
836 pd->mac_addr[i] = mac_read(a, 0x10 + i); 836 pd->mac_addr[i] = mac_read(a, 0x10 + i);
837 msleep(10); 837 msleep(10);
838 } 838 }
839
840 i2c_put_adapter(a);
839} 841}
840#else 842#else
841static void __init sh_eth_init(struct sh_eth_plat_data *pd) 843static void __init sh_eth_init(struct sh_eth_plat_data *pd)
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c
index 66cdbc3c7af9..ccaa290e9aba 100644
--- a/arch/sh/boards/mach-se/7724/setup.c
+++ b/arch/sh/boards/mach-se/7724/setup.c
@@ -52,6 +52,13 @@
52 * and change SW41 to use 720p 52 * and change SW41 to use 720p
53 */ 53 */
54 54
55/*
56 * about sound
57 *
58 * This setup.c supports FSI slave mode.
59 * Please change J20, J21, J22 pin to 1-2 connection.
60 */
61
55/* Heartbeat */ 62/* Heartbeat */
56static struct resource heartbeat_resource = { 63static struct resource heartbeat_resource = {
57 .start = PA_LED, 64 .start = PA_LED,
@@ -276,6 +283,7 @@ static struct clk fsimcka_clk = {
276 .rate = 0, /* unknown */ 283 .rate = 0, /* unknown */
277}; 284};
278 285
286/* change J20, J21, J22 pin to 1-2 connection to use slave mode */
279struct sh_fsi_platform_info fsi_info = { 287struct sh_fsi_platform_info fsi_info = {
280 .porta_flags = SH_FSI_BRS_INV | 288 .porta_flags = SH_FSI_BRS_INV |
281 SH_FSI_OUT_SLAVE_MODE | 289 SH_FSI_OUT_SLAVE_MODE |
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig
index 18e3356406f3..6041c66dd10e 100644
--- a/arch/sh/configs/ecovec24_defconfig
+++ b/arch/sh/configs/ecovec24_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.33-rc2 3# Linux kernel version: 2.6.34-rc2
4# Mon Jan 4 11:20:36 2010 4# Mon Mar 29 02:21:58 2010
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,8 +13,8 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_HWEIGHT=y 13CONFIG_GENERIC_HWEIGHT=y
14CONFIG_GENERIC_HARDIRQS=y 14CONFIG_GENERIC_HARDIRQS=y
15CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 15CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
16CONFIG_GENERIC_IRQ_PROBE=y
17CONFIG_IRQ_PER_CPU=y 16CONFIG_IRQ_PER_CPU=y
17CONFIG_SPARSE_IRQ=y
18CONFIG_GENERIC_GPIO=y 18CONFIG_GENERIC_GPIO=y
19CONFIG_GENERIC_TIME=y 19CONFIG_GENERIC_TIME=y
20CONFIG_GENERIC_CLOCKEVENTS=y 20CONFIG_GENERIC_CLOCKEVENTS=y
@@ -32,6 +32,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y
32CONFIG_ARCH_HAS_DEFAULT_IDLE=y 32CONFIG_ARCH_HAS_DEFAULT_IDLE=y
33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y 33CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
34CONFIG_DMA_NONCOHERENT=y 34CONFIG_DMA_NONCOHERENT=y
35CONFIG_NEED_DMA_MAP_STATE=y
35CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 36CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
36CONFIG_CONSTRUCTORS=y 37CONFIG_CONSTRUCTORS=y
37 38
@@ -47,9 +48,11 @@ CONFIG_LOCALVERSION=""
47CONFIG_HAVE_KERNEL_GZIP=y 48CONFIG_HAVE_KERNEL_GZIP=y
48CONFIG_HAVE_KERNEL_BZIP2=y 49CONFIG_HAVE_KERNEL_BZIP2=y
49CONFIG_HAVE_KERNEL_LZMA=y 50CONFIG_HAVE_KERNEL_LZMA=y
51CONFIG_HAVE_KERNEL_LZO=y
50CONFIG_KERNEL_GZIP=y 52CONFIG_KERNEL_GZIP=y
51# CONFIG_KERNEL_BZIP2 is not set 53# CONFIG_KERNEL_BZIP2 is not set
52# CONFIG_KERNEL_LZMA is not set 54# CONFIG_KERNEL_LZMA is not set
55# CONFIG_KERNEL_LZO is not set
53CONFIG_SWAP=y 56CONFIG_SWAP=y
54CONFIG_SYSVIPC=y 57CONFIG_SYSVIPC=y
55CONFIG_SYSVIPC_SYSCTL=y 58CONFIG_SYSVIPC_SYSCTL=y
@@ -71,14 +74,8 @@ CONFIG_RCU_FANOUT=32
71# CONFIG_TREE_RCU_TRACE is not set 74# CONFIG_TREE_RCU_TRACE is not set
72# CONFIG_IKCONFIG is not set 75# CONFIG_IKCONFIG is not set
73CONFIG_LOG_BUF_SHIFT=14 76CONFIG_LOG_BUF_SHIFT=14
74CONFIG_GROUP_SCHED=y
75CONFIG_FAIR_GROUP_SCHED=y
76# CONFIG_RT_GROUP_SCHED is not set
77CONFIG_USER_SCHED=y
78# CONFIG_CGROUP_SCHED is not set
79# CONFIG_CGROUPS is not set 77# CONFIG_CGROUPS is not set
80CONFIG_SYSFS_DEPRECATED=y 78# CONFIG_SYSFS_DEPRECATED_V2 is not set
81CONFIG_SYSFS_DEPRECATED_V2=y
82# CONFIG_RELAY is not set 79# CONFIG_RELAY is not set
83# CONFIG_NAMESPACES is not set 80# CONFIG_NAMESPACES is not set
84# CONFIG_BLK_DEV_INITRD is not set 81# CONFIG_BLK_DEV_INITRD is not set
@@ -107,7 +104,7 @@ CONFIG_PERF_USE_VMALLOC=y
107# 104#
108# Kernel Performance Events And Counters 105# Kernel Performance Events And Counters
109# 106#
110# CONFIG_PERF_EVENTS is not set 107CONFIG_PERF_EVENTS=y
111# CONFIG_PERF_COUNTERS is not set 108# CONFIG_PERF_COUNTERS is not set
112CONFIG_VM_EVENT_COUNTERS=y 109CONFIG_VM_EVENT_COUNTERS=y
113CONFIG_COMPAT_BRK=y 110CONFIG_COMPAT_BRK=y
@@ -116,13 +113,13 @@ CONFIG_SLAB=y
116# CONFIG_SLOB is not set 113# CONFIG_SLOB is not set
117# CONFIG_PROFILING is not set 114# CONFIG_PROFILING is not set
118CONFIG_HAVE_OPROFILE=y 115CONFIG_HAVE_OPROFILE=y
119CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 116CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 117CONFIG_HAVE_KRETPROBES=y
122CONFIG_HAVE_ARCH_TRACEHOOK=y 118CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_HAVE_DMA_ATTRS=y 119CONFIG_HAVE_DMA_ATTRS=y
124CONFIG_HAVE_CLK=y 120CONFIG_HAVE_CLK=y
125CONFIG_HAVE_DMA_API_DEBUG=y 121CONFIG_HAVE_DMA_API_DEBUG=y
122CONFIG_HAVE_HW_BREAKPOINT=y
126 123
127# 124#
128# GCOV-based kernel profiling 125# GCOV-based kernel profiling
@@ -234,12 +231,12 @@ CONFIG_CPU_SUBTYPE_SH7724=y
234CONFIG_QUICKLIST=y 231CONFIG_QUICKLIST=y
235CONFIG_MMU=y 232CONFIG_MMU=y
236CONFIG_PAGE_OFFSET=0x80000000 233CONFIG_PAGE_OFFSET=0x80000000
237CONFIG_FORCE_MAX_ZONEORDER=11 234CONFIG_FORCE_MAX_ZONEORDER=12
238CONFIG_MEMORY_START=0x08000000 235CONFIG_MEMORY_START=0x08000000
239CONFIG_MEMORY_SIZE=0x10000000 236CONFIG_MEMORY_SIZE=0x10000000
240CONFIG_29BIT=y 237CONFIG_29BIT=y
241# CONFIG_PMB_ENABLE is not set 238# CONFIG_PMB is not set
242# CONFIG_X2TLB is not set 239CONFIG_X2TLB=y
243CONFIG_VSYSCALL=y 240CONFIG_VSYSCALL=y
244CONFIG_ARCH_FLATMEM_ENABLE=y 241CONFIG_ARCH_FLATMEM_ENABLE=y
245CONFIG_ARCH_SPARSEMEM_ENABLE=y 242CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -247,6 +244,8 @@ CONFIG_ARCH_SPARSEMEM_DEFAULT=y
247CONFIG_MAX_ACTIVE_REGIONS=1 244CONFIG_MAX_ACTIVE_REGIONS=1
248CONFIG_ARCH_POPULATES_NODE_MAP=y 245CONFIG_ARCH_POPULATES_NODE_MAP=y
249CONFIG_ARCH_SELECT_MEMORY_MODEL=y 246CONFIG_ARCH_SELECT_MEMORY_MODEL=y
247CONFIG_IOREMAP_FIXED=y
248CONFIG_UNCACHED_MAPPING=y
250CONFIG_PAGE_SIZE_4KB=y 249CONFIG_PAGE_SIZE_4KB=y
251# CONFIG_PAGE_SIZE_8KB is not set 250# CONFIG_PAGE_SIZE_8KB is not set
252# CONFIG_PAGE_SIZE_16KB is not set 251# CONFIG_PAGE_SIZE_16KB is not set
@@ -262,7 +261,7 @@ CONFIG_PAGEFLAGS_EXTENDED=y
262CONFIG_SPLIT_PTLOCK_CPUS=4 261CONFIG_SPLIT_PTLOCK_CPUS=4
263# CONFIG_PHYS_ADDR_T_64BIT is not set 262# CONFIG_PHYS_ADDR_T_64BIT is not set
264CONFIG_ZONE_DMA_FLAG=0 263CONFIG_ZONE_DMA_FLAG=0
265CONFIG_NR_QUICK=2 264CONFIG_NR_QUICK=1
266# CONFIG_KSM is not set 265# CONFIG_KSM is not set
267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
268 267
@@ -337,7 +336,6 @@ CONFIG_SECCOMP=y
337# CONFIG_PREEMPT_VOLUNTARY is not set 336# CONFIG_PREEMPT_VOLUNTARY is not set
338CONFIG_PREEMPT=y 337CONFIG_PREEMPT=y
339CONFIG_GUSA=y 338CONFIG_GUSA=y
340# CONFIG_SPARSE_IRQ is not set
341 339
342# 340#
343# Boot options 341# Boot options
@@ -347,7 +345,7 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
347CONFIG_ENTRY_OFFSET=0x00001000 345CONFIG_ENTRY_OFFSET=0x00001000
348CONFIG_CMDLINE_OVERWRITE=y 346CONFIG_CMDLINE_OVERWRITE=y
349# CONFIG_CMDLINE_EXTEND is not set 347# CONFIG_CMDLINE_EXTEND is not set
350CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 root=/dev/nfs ip=dhcp mem=120M memchunk.vpu=4m" 348CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 root=/dev/nfs ip=dhcp mem=248M memchunk.vpu=8m memchunk.veu0=4m"
351 349
352# 350#
353# Bus options 351# Bus options
@@ -373,6 +371,7 @@ CONFIG_SUSPEND=y
373CONFIG_SUSPEND_FREEZER=y 371CONFIG_SUSPEND_FREEZER=y
374# CONFIG_HIBERNATION is not set 372# CONFIG_HIBERNATION is not set
375CONFIG_PM_RUNTIME=y 373CONFIG_PM_RUNTIME=y
374CONFIG_PM_OPS=y
376# CONFIG_CPU_IDLE is not set 375# CONFIG_CPU_IDLE is not set
377CONFIG_NET=y 376CONFIG_NET=y
378 377
@@ -380,7 +379,6 @@ CONFIG_NET=y
380# Networking options 379# Networking options
381# 380#
382CONFIG_PACKET=y 381CONFIG_PACKET=y
383# CONFIG_PACKET_MMAP is not set
384CONFIG_UNIX=y 382CONFIG_UNIX=y
385# CONFIG_NET_KEY is not set 383# CONFIG_NET_KEY is not set
386CONFIG_INET=y 384CONFIG_INET=y
@@ -445,7 +443,45 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
445# CONFIG_NET_PKTGEN is not set 443# CONFIG_NET_PKTGEN is not set
446# CONFIG_HAMRADIO is not set 444# CONFIG_HAMRADIO is not set
447# CONFIG_CAN is not set 445# CONFIG_CAN is not set
448# CONFIG_IRDA is not set 446CONFIG_IRDA=y
447
448#
449# IrDA protocols
450#
451# CONFIG_IRLAN is not set
452# CONFIG_IRCOMM is not set
453# CONFIG_IRDA_ULTRA is not set
454
455#
456# IrDA options
457#
458# CONFIG_IRDA_CACHE_LAST_LSAP is not set
459# CONFIG_IRDA_FAST_RR is not set
460# CONFIG_IRDA_DEBUG is not set
461
462#
463# Infrared-port device drivers
464#
465
466#
467# SIR device drivers
468#
469# CONFIG_IRTTY_SIR is not set
470
471#
472# Dongle support
473#
474CONFIG_SH_SIR=y
475# CONFIG_KINGSUN_DONGLE is not set
476# CONFIG_KSDAZZLE_DONGLE is not set
477# CONFIG_KS959_DONGLE is not set
478
479#
480# FIR device drivers
481#
482# CONFIG_USB_IRDA is not set
483# CONFIG_SIGMATEL_FIR is not set
484# CONFIG_MCS_FIR is not set
449# CONFIG_BT is not set 485# CONFIG_BT is not set
450# CONFIG_AF_RXRPC is not set 486# CONFIG_AF_RXRPC is not set
451CONFIG_WIRELESS=y 487CONFIG_WIRELESS=y
@@ -556,6 +592,7 @@ CONFIG_MTD_NAND_IDS=y
556# CONFIG_MTD_NAND_NANDSIM is not set 592# CONFIG_MTD_NAND_NANDSIM is not set
557# CONFIG_MTD_NAND_PLATFORM is not set 593# CONFIG_MTD_NAND_PLATFORM is not set
558# CONFIG_MTD_ALAUDA is not set 594# CONFIG_MTD_ALAUDA is not set
595# CONFIG_MTD_NAND_SH_FLCTL is not set
559# CONFIG_MTD_ONENAND is not set 596# CONFIG_MTD_ONENAND is not set
560 597
561# 598#
@@ -597,6 +634,7 @@ CONFIG_MISC_DEVICES=y
597# CONFIG_ICS932S401 is not set 634# CONFIG_ICS932S401 is not set
598# CONFIG_ENCLOSURE_SERVICES is not set 635# CONFIG_ENCLOSURE_SERVICES is not set
599# CONFIG_ISL29003 is not set 636# CONFIG_ISL29003 is not set
637# CONFIG_SENSORS_TSL2550 is not set
600# CONFIG_DS1682 is not set 638# CONFIG_DS1682 is not set
601# CONFIG_TI_DAC7512 is not set 639# CONFIG_TI_DAC7512 is not set
602# CONFIG_C2PORT is not set 640# CONFIG_C2PORT is not set
@@ -616,6 +654,7 @@ CONFIG_HAVE_IDE=y
616# 654#
617# SCSI device support 655# SCSI device support
618# 656#
657CONFIG_SCSI_MOD=y
619# CONFIG_RAID_ATTRS is not set 658# CONFIG_RAID_ATTRS is not set
620CONFIG_SCSI=y 659CONFIG_SCSI=y
621CONFIG_SCSI_DMA=y 660CONFIG_SCSI_DMA=y
@@ -768,7 +807,29 @@ CONFIG_KEYBOARD_SH_KEYSC=y
768# CONFIG_INPUT_MOUSE is not set 807# CONFIG_INPUT_MOUSE is not set
769# CONFIG_INPUT_JOYSTICK is not set 808# CONFIG_INPUT_JOYSTICK is not set
770# CONFIG_INPUT_TABLET is not set 809# CONFIG_INPUT_TABLET is not set
771# CONFIG_INPUT_TOUCHSCREEN is not set 810CONFIG_INPUT_TOUCHSCREEN=y
811# CONFIG_TOUCHSCREEN_ADS7846 is not set
812# CONFIG_TOUCHSCREEN_AD7877 is not set
813# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
814# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
815# CONFIG_TOUCHSCREEN_AD7879 is not set
816# CONFIG_TOUCHSCREEN_DYNAPRO is not set
817# CONFIG_TOUCHSCREEN_EETI is not set
818# CONFIG_TOUCHSCREEN_FUJITSU is not set
819# CONFIG_TOUCHSCREEN_GUNZE is not set
820# CONFIG_TOUCHSCREEN_ELO is not set
821# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
822# CONFIG_TOUCHSCREEN_MCS5000 is not set
823# CONFIG_TOUCHSCREEN_MTOUCH is not set
824# CONFIG_TOUCHSCREEN_INEXIO is not set
825# CONFIG_TOUCHSCREEN_MK712 is not set
826# CONFIG_TOUCHSCREEN_PENMOUNT is not set
827# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
828# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
829# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
830# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
831CONFIG_TOUCHSCREEN_TSC2007=y
832# CONFIG_TOUCHSCREEN_W90X900 is not set
772# CONFIG_INPUT_MISC is not set 833# CONFIG_INPUT_MISC is not set
773 834
774# 835#
@@ -802,10 +863,10 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=6
802CONFIG_SERIAL_SH_SCI_CONSOLE=y 863CONFIG_SERIAL_SH_SCI_CONSOLE=y
803CONFIG_SERIAL_CORE=y 864CONFIG_SERIAL_CORE=y
804CONFIG_SERIAL_CORE_CONSOLE=y 865CONFIG_SERIAL_CORE_CONSOLE=y
866# CONFIG_SERIAL_TIMBERDALE is not set
805CONFIG_UNIX98_PTYS=y 867CONFIG_UNIX98_PTYS=y
806# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 868# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
807CONFIG_LEGACY_PTYS=y 869# CONFIG_LEGACY_PTYS is not set
808CONFIG_LEGACY_PTY_COUNT=256
809# CONFIG_IPMI_HANDLER is not set 870# CONFIG_IPMI_HANDLER is not set
810CONFIG_HW_RANDOM=y 871CONFIG_HW_RANDOM=y
811# CONFIG_HW_RANDOM_TIMERIOMEM is not set 872# CONFIG_HW_RANDOM_TIMERIOMEM is not set
@@ -830,6 +891,7 @@ CONFIG_I2C_HELPER_AUTO=y
830# CONFIG_I2C_OCORES is not set 891# CONFIG_I2C_OCORES is not set
831CONFIG_I2C_SH_MOBILE=y 892CONFIG_I2C_SH_MOBILE=y
832# CONFIG_I2C_SIMTEC is not set 893# CONFIG_I2C_SIMTEC is not set
894# CONFIG_I2C_XILINX is not set
833 895
834# 896#
835# External I2C/SMBus adapter drivers 897# External I2C/SMBus adapter drivers
@@ -843,15 +905,9 @@ CONFIG_I2C_SH_MOBILE=y
843# 905#
844# CONFIG_I2C_PCA_PLATFORM is not set 906# CONFIG_I2C_PCA_PLATFORM is not set
845# CONFIG_I2C_STUB is not set 907# CONFIG_I2C_STUB is not set
846
847#
848# Miscellaneous I2C Chip support
849#
850# CONFIG_SENSORS_TSL2550 is not set
851# CONFIG_I2C_DEBUG_CORE is not set 908# CONFIG_I2C_DEBUG_CORE is not set
852# CONFIG_I2C_DEBUG_ALGO is not set 909# CONFIG_I2C_DEBUG_ALGO is not set
853# CONFIG_I2C_DEBUG_BUS is not set 910# CONFIG_I2C_DEBUG_BUS is not set
854# CONFIG_I2C_DEBUG_CHIP is not set
855CONFIG_SPI=y 911CONFIG_SPI=y
856CONFIG_SPI_MASTER=y 912CONFIG_SPI_MASTER=y
857 913
@@ -882,13 +938,16 @@ CONFIG_GPIOLIB=y
882# 938#
883# Memory mapped GPIO expanders: 939# Memory mapped GPIO expanders:
884# 940#
941# CONFIG_GPIO_IT8761E is not set
885 942
886# 943#
887# I2C GPIO expanders: 944# I2C GPIO expanders:
888# 945#
946# CONFIG_GPIO_MAX7300 is not set
889# CONFIG_GPIO_MAX732X is not set 947# CONFIG_GPIO_MAX732X is not set
890# CONFIG_GPIO_PCA953X is not set 948# CONFIG_GPIO_PCA953X is not set
891# CONFIG_GPIO_PCF857X is not set 949# CONFIG_GPIO_PCF857X is not set
950# CONFIG_GPIO_ADP5588 is not set
892 951
893# 952#
894# PCI GPIO expanders: 953# PCI GPIO expanders:
@@ -919,23 +978,26 @@ CONFIG_SSB_POSSIBLE=y
919# 978#
920# Multifunction device drivers 979# Multifunction device drivers
921# 980#
922# CONFIG_MFD_CORE is not set 981CONFIG_MFD_CORE=y
982# CONFIG_MFD_88PM860X is not set
923# CONFIG_MFD_SM501 is not set 983# CONFIG_MFD_SM501 is not set
924# CONFIG_MFD_SH_MOBILE_SDHI is not set 984CONFIG_MFD_SH_MOBILE_SDHI=y
925# CONFIG_HTC_PASIC3 is not set 985# CONFIG_HTC_PASIC3 is not set
986# CONFIG_HTC_I2CPLD is not set
926# CONFIG_TPS65010 is not set 987# CONFIG_TPS65010 is not set
927# CONFIG_TWL4030_CORE is not set 988# CONFIG_TWL4030_CORE is not set
928# CONFIG_MFD_TMIO is not set 989# CONFIG_MFD_TMIO is not set
929# CONFIG_PMIC_DA903X is not set 990# CONFIG_PMIC_DA903X is not set
930# CONFIG_PMIC_ADP5520 is not set 991# CONFIG_PMIC_ADP5520 is not set
992# CONFIG_MFD_MAX8925 is not set
931# CONFIG_MFD_WM8400 is not set 993# CONFIG_MFD_WM8400 is not set
932# CONFIG_MFD_WM831X is not set 994# CONFIG_MFD_WM831X is not set
933# CONFIG_MFD_WM8350_I2C is not set 995# CONFIG_MFD_WM8350_I2C is not set
996# CONFIG_MFD_WM8994 is not set
934# CONFIG_MFD_PCF50633 is not set 997# CONFIG_MFD_PCF50633 is not set
935# CONFIG_MFD_MC13783 is not set 998# CONFIG_MFD_MC13783 is not set
936# CONFIG_AB3100_CORE is not set 999# CONFIG_AB3100_CORE is not set
937# CONFIG_EZX_PCAP is not set 1000# CONFIG_EZX_PCAP is not set
938# CONFIG_MFD_88PM8607 is not set
939# CONFIG_AB4500_CORE is not set 1001# CONFIG_AB4500_CORE is not set
940# CONFIG_REGULATOR is not set 1002# CONFIG_REGULATOR is not set
941CONFIG_MEDIA_SUPPORT=y 1003CONFIG_MEDIA_SUPPORT=y
@@ -985,10 +1047,10 @@ CONFIG_SOC_CAMERA=y
985# CONFIG_SOC_CAMERA_MT9M001 is not set 1047# CONFIG_SOC_CAMERA_MT9M001 is not set
986# CONFIG_SOC_CAMERA_MT9M111 is not set 1048# CONFIG_SOC_CAMERA_MT9M111 is not set
987# CONFIG_SOC_CAMERA_MT9T031 is not set 1049# CONFIG_SOC_CAMERA_MT9T031 is not set
988# CONFIG_SOC_CAMERA_MT9T112 is not set 1050CONFIG_SOC_CAMERA_MT9T112=y
989# CONFIG_SOC_CAMERA_MT9V022 is not set 1051# CONFIG_SOC_CAMERA_MT9V022 is not set
990# CONFIG_SOC_CAMERA_RJ54N1 is not set 1052# CONFIG_SOC_CAMERA_RJ54N1 is not set
991# CONFIG_SOC_CAMERA_TW9910 is not set 1053CONFIG_SOC_CAMERA_TW9910=y
992# CONFIG_SOC_CAMERA_PLATFORM is not set 1054# CONFIG_SOC_CAMERA_PLATFORM is not set
993# CONFIG_SOC_CAMERA_OV772X is not set 1055# CONFIG_SOC_CAMERA_OV772X is not set
994# CONFIG_SOC_CAMERA_OV9640 is not set 1056# CONFIG_SOC_CAMERA_OV9640 is not set
@@ -1001,6 +1063,7 @@ CONFIG_RADIO_ADAPTERS=y
1001# CONFIG_RADIO_SI470X is not set 1063# CONFIG_RADIO_SI470X is not set
1002# CONFIG_USB_MR800 is not set 1064# CONFIG_USB_MR800 is not set
1003# CONFIG_RADIO_TEA5764 is not set 1065# CONFIG_RADIO_TEA5764 is not set
1066# CONFIG_RADIO_SAA7706H is not set
1004# CONFIG_RADIO_TEF6862 is not set 1067# CONFIG_RADIO_TEF6862 is not set
1005# CONFIG_DAB is not set 1068# CONFIG_DAB is not set
1006 1069
@@ -1034,6 +1097,7 @@ CONFIG_FB_DEFERRED_IO=y
1034# 1097#
1035# CONFIG_FB_S1D13XXX is not set 1098# CONFIG_FB_S1D13XXX is not set
1036CONFIG_FB_SH_MOBILE_LCDC=y 1099CONFIG_FB_SH_MOBILE_LCDC=y
1100# CONFIG_FB_TMIO is not set
1037# CONFIG_FB_VIRTUAL is not set 1101# CONFIG_FB_VIRTUAL is not set
1038# CONFIG_FB_METRONOME is not set 1102# CONFIG_FB_METRONOME is not set
1039# CONFIG_FB_MB862XX is not set 1103# CONFIG_FB_MB862XX is not set
@@ -1062,7 +1126,46 @@ CONFIG_LOGO=y
1062# CONFIG_LOGO_SUPERH_MONO is not set 1126# CONFIG_LOGO_SUPERH_MONO is not set
1063# CONFIG_LOGO_SUPERH_VGA16 is not set 1127# CONFIG_LOGO_SUPERH_VGA16 is not set
1064CONFIG_LOGO_SUPERH_CLUT224=y 1128CONFIG_LOGO_SUPERH_CLUT224=y
1065# CONFIG_SOUND is not set 1129CONFIG_SOUND=y
1130CONFIG_SOUND_OSS_CORE=y
1131CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1132CONFIG_SND=y
1133CONFIG_SND_TIMER=y
1134CONFIG_SND_PCM=y
1135CONFIG_SND_JACK=y
1136CONFIG_SND_SEQUENCER=y
1137CONFIG_SND_SEQ_DUMMY=y
1138CONFIG_SND_OSSEMUL=y
1139CONFIG_SND_MIXER_OSS=y
1140CONFIG_SND_PCM_OSS=y
1141CONFIG_SND_PCM_OSS_PLUGINS=y
1142# CONFIG_SND_SEQUENCER_OSS is not set
1143# CONFIG_SND_DYNAMIC_MINORS is not set
1144CONFIG_SND_SUPPORT_OLD_API=y
1145CONFIG_SND_VERBOSE_PROCFS=y
1146# CONFIG_SND_VERBOSE_PRINTK is not set
1147# CONFIG_SND_DEBUG is not set
1148# CONFIG_SND_RAWMIDI_SEQ is not set
1149# CONFIG_SND_OPL3_LIB_SEQ is not set
1150# CONFIG_SND_OPL4_LIB_SEQ is not set
1151# CONFIG_SND_SBAWE_SEQ is not set
1152# CONFIG_SND_EMU10K1_SEQ is not set
1153# CONFIG_SND_DRIVERS is not set
1154# CONFIG_SND_SPI is not set
1155CONFIG_SND_SUPERH=y
1156# CONFIG_SND_USB is not set
1157CONFIG_SND_SOC=y
1158
1159#
1160# SoC Audio support for SuperH
1161#
1162CONFIG_SND_SOC_SH4_FSI=y
1163# CONFIG_SND_FSI_AK4642 is not set
1164CONFIG_SND_FSI_DA7210=y
1165CONFIG_SND_SOC_I2C_AND_SPI=y
1166# CONFIG_SND_SOC_ALL_CODECS is not set
1167CONFIG_SND_SOC_DA7210=y
1168# CONFIG_SOUND_PRIME is not set
1066CONFIG_HID_SUPPORT=y 1169CONFIG_HID_SUPPORT=y
1067CONFIG_HID=y 1170CONFIG_HID=y
1068# CONFIG_HIDRAW is not set 1171# CONFIG_HIDRAW is not set
@@ -1077,6 +1180,7 @@ CONFIG_USB_HID=y
1077# 1180#
1078# Special HID drivers 1181# Special HID drivers
1079# 1182#
1183# CONFIG_HID_3M_PCT is not set
1080# CONFIG_HID_A4TECH is not set 1184# CONFIG_HID_A4TECH is not set
1081# CONFIG_HID_APPLE is not set 1185# CONFIG_HID_APPLE is not set
1082# CONFIG_HID_BELKIN is not set 1186# CONFIG_HID_BELKIN is not set
@@ -1091,12 +1195,16 @@ CONFIG_USB_HID=y
1091# CONFIG_HID_KENSINGTON is not set 1195# CONFIG_HID_KENSINGTON is not set
1092# CONFIG_HID_LOGITECH is not set 1196# CONFIG_HID_LOGITECH is not set
1093# CONFIG_HID_MICROSOFT is not set 1197# CONFIG_HID_MICROSOFT is not set
1198# CONFIG_HID_MOSART is not set
1094# CONFIG_HID_MONTEREY is not set 1199# CONFIG_HID_MONTEREY is not set
1095# CONFIG_HID_NTRIG is not set 1200# CONFIG_HID_NTRIG is not set
1201# CONFIG_HID_ORTEK is not set
1096# CONFIG_HID_PANTHERLORD is not set 1202# CONFIG_HID_PANTHERLORD is not set
1097# CONFIG_HID_PETALYNX is not set 1203# CONFIG_HID_PETALYNX is not set
1204# CONFIG_HID_QUANTA is not set
1098# CONFIG_HID_SAMSUNG is not set 1205# CONFIG_HID_SAMSUNG is not set
1099# CONFIG_HID_SONY is not set 1206# CONFIG_HID_SONY is not set
1207# CONFIG_HID_STANTUM is not set
1100# CONFIG_HID_SUNPLUS is not set 1208# CONFIG_HID_SUNPLUS is not set
1101# CONFIG_HID_GREENASIA is not set 1209# CONFIG_HID_GREENASIA is not set
1102# CONFIG_HID_SMARTJOYPLUS is not set 1210# CONFIG_HID_SMARTJOYPLUS is not set
@@ -1136,6 +1244,7 @@ CONFIG_USB_MON=y
1136# CONFIG_USB_SL811_HCD is not set 1244# CONFIG_USB_SL811_HCD is not set
1137CONFIG_USB_R8A66597_HCD=y 1245CONFIG_USB_R8A66597_HCD=y
1138# CONFIG_USB_HWA_HCD is not set 1246# CONFIG_USB_HWA_HCD is not set
1247# CONFIG_USB_GADGET_MUSB_HDRC is not set
1139 1248
1140# 1249#
1141# USB Device Class drivers 1250# USB Device Class drivers
@@ -1188,7 +1297,6 @@ CONFIG_USB_STORAGE=y
1188# CONFIG_USB_RIO500 is not set 1297# CONFIG_USB_RIO500 is not set
1189# CONFIG_USB_LEGOTOWER is not set 1298# CONFIG_USB_LEGOTOWER is not set
1190# CONFIG_USB_LCD is not set 1299# CONFIG_USB_LCD is not set
1191# CONFIG_USB_BERRY_CHARGE is not set
1192# CONFIG_USB_LED is not set 1300# CONFIG_USB_LED is not set
1193# CONFIG_USB_CYPRESS_CY7C63 is not set 1301# CONFIG_USB_CYPRESS_CY7C63 is not set
1194# CONFIG_USB_CYTHERM is not set 1302# CONFIG_USB_CYTHERM is not set
@@ -1200,8 +1308,45 @@ CONFIG_USB_STORAGE=y
1200# CONFIG_USB_IOWARRIOR is not set 1308# CONFIG_USB_IOWARRIOR is not set
1201# CONFIG_USB_TEST is not set 1309# CONFIG_USB_TEST is not set
1202# CONFIG_USB_ISIGHTFW is not set 1310# CONFIG_USB_ISIGHTFW is not set
1203# CONFIG_USB_VST is not set 1311CONFIG_USB_GADGET=y
1204# CONFIG_USB_GADGET is not set 1312# CONFIG_USB_GADGET_DEBUG_FILES is not set
1313# CONFIG_USB_GADGET_DEBUG_FS is not set
1314CONFIG_USB_GADGET_VBUS_DRAW=2
1315CONFIG_USB_GADGET_SELECTED=y
1316# CONFIG_USB_GADGET_AT91 is not set
1317# CONFIG_USB_GADGET_ATMEL_USBA is not set
1318# CONFIG_USB_GADGET_FSL_USB2 is not set
1319# CONFIG_USB_GADGET_LH7A40X is not set
1320# CONFIG_USB_GADGET_OMAP is not set
1321# CONFIG_USB_GADGET_PXA25X is not set
1322CONFIG_USB_GADGET_R8A66597=y
1323CONFIG_USB_R8A66597=y
1324# CONFIG_USB_GADGET_PXA27X is not set
1325# CONFIG_USB_GADGET_S3C_HSOTG is not set
1326# CONFIG_USB_GADGET_IMX is not set
1327# CONFIG_USB_GADGET_S3C2410 is not set
1328# CONFIG_USB_GADGET_M66592 is not set
1329# CONFIG_USB_GADGET_AMD5536UDC is not set
1330# CONFIG_USB_GADGET_FSL_QE is not set
1331# CONFIG_USB_GADGET_CI13XXX is not set
1332# CONFIG_USB_GADGET_NET2280 is not set
1333# CONFIG_USB_GADGET_GOKU is not set
1334# CONFIG_USB_GADGET_LANGWELL is not set
1335# CONFIG_USB_GADGET_DUMMY_HCD is not set
1336CONFIG_USB_GADGET_DUALSPEED=y
1337# CONFIG_USB_ZERO is not set
1338# CONFIG_USB_AUDIO is not set
1339# CONFIG_USB_ETH is not set
1340# CONFIG_USB_GADGETFS is not set
1341CONFIG_USB_FILE_STORAGE=m
1342# CONFIG_USB_FILE_STORAGE_TEST is not set
1343# CONFIG_USB_MASS_STORAGE is not set
1344# CONFIG_USB_G_SERIAL is not set
1345# CONFIG_USB_MIDI_GADGET is not set
1346# CONFIG_USB_G_PRINTER is not set
1347# CONFIG_USB_CDC_COMPOSITE is not set
1348# CONFIG_USB_G_NOKIA is not set
1349# CONFIG_USB_G_MULTI is not set
1205 1350
1206# 1351#
1207# OTG and related infrastructure 1352# OTG and related infrastructure
@@ -1224,10 +1369,8 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1224# MMC/SD/SDIO Host Controller Drivers 1369# MMC/SD/SDIO Host Controller Drivers
1225# 1370#
1226# CONFIG_MMC_SDHCI is not set 1371# CONFIG_MMC_SDHCI is not set
1227# CONFIG_MMC_AT91 is not set
1228# CONFIG_MMC_ATMELMCI is not set
1229CONFIG_MMC_SPI=y 1372CONFIG_MMC_SPI=y
1230# CONFIG_MMC_TMIO is not set 1373CONFIG_MMC_TMIO=y
1231# CONFIG_MEMSTICK is not set 1374# CONFIG_MEMSTICK is not set
1232# CONFIG_NEW_LEDS is not set 1375# CONFIG_NEW_LEDS is not set
1233# CONFIG_ACCESSIBILITY is not set 1376# CONFIG_ACCESSIBILITY is not set
@@ -1253,10 +1396,10 @@ CONFIG_RTC_INTF_DEV=y
1253# CONFIG_RTC_DRV_DS1374 is not set 1396# CONFIG_RTC_DRV_DS1374 is not set
1254# CONFIG_RTC_DRV_DS1672 is not set 1397# CONFIG_RTC_DRV_DS1672 is not set
1255# CONFIG_RTC_DRV_MAX6900 is not set 1398# CONFIG_RTC_DRV_MAX6900 is not set
1256# CONFIG_RTC_DRV_RS5C372 is not set 1399CONFIG_RTC_DRV_RS5C372=y
1257# CONFIG_RTC_DRV_ISL1208 is not set 1400# CONFIG_RTC_DRV_ISL1208 is not set
1258# CONFIG_RTC_DRV_X1205 is not set 1401# CONFIG_RTC_DRV_X1205 is not set
1259CONFIG_RTC_DRV_PCF8563=y 1402# CONFIG_RTC_DRV_PCF8563 is not set
1260# CONFIG_RTC_DRV_PCF8583 is not set 1403# CONFIG_RTC_DRV_PCF8583 is not set
1261# CONFIG_RTC_DRV_M41T80 is not set 1404# CONFIG_RTC_DRV_M41T80 is not set
1262# CONFIG_RTC_DRV_BQ32K is not set 1405# CONFIG_RTC_DRV_BQ32K is not set
@@ -1303,8 +1446,6 @@ CONFIG_RTC_DRV_PCF8563=y
1303CONFIG_UIO=y 1446CONFIG_UIO=y
1304# CONFIG_UIO_PDRV is not set 1447# CONFIG_UIO_PDRV is not set
1305CONFIG_UIO_PDRV_GENIRQ=y 1448CONFIG_UIO_PDRV_GENIRQ=y
1306# CONFIG_UIO_SMX is not set
1307# CONFIG_UIO_SERCOS3 is not set
1308 1449
1309# 1450#
1310# TI VLYNQ 1451# TI VLYNQ
@@ -1390,6 +1531,7 @@ CONFIG_MISC_FILESYSTEMS=y
1390# CONFIG_EFS_FS is not set 1531# CONFIG_EFS_FS is not set
1391# CONFIG_JFFS2_FS is not set 1532# CONFIG_JFFS2_FS is not set
1392# CONFIG_UBIFS_FS is not set 1533# CONFIG_UBIFS_FS is not set
1534# CONFIG_LOGFS is not set
1393# CONFIG_CRAMFS is not set 1535# CONFIG_CRAMFS is not set
1394# CONFIG_SQUASHFS is not set 1536# CONFIG_SQUASHFS is not set
1395# CONFIG_VXFS_FS is not set 1537# CONFIG_VXFS_FS is not set
@@ -1418,6 +1560,7 @@ CONFIG_SUNRPC=y
1418# CONFIG_RPCSEC_GSS_KRB5 is not set 1560# CONFIG_RPCSEC_GSS_KRB5 is not set
1419# CONFIG_RPCSEC_GSS_SPKM3 is not set 1561# CONFIG_RPCSEC_GSS_SPKM3 is not set
1420# CONFIG_SMB_FS is not set 1562# CONFIG_SMB_FS is not set
1563# CONFIG_CEPH_FS is not set
1421# CONFIG_CIFS is not set 1564# CONFIG_CIFS is not set
1422# CONFIG_NCP_FS is not set 1565# CONFIG_NCP_FS is not set
1423# CONFIG_CODA_FS is not set 1566# CONFIG_CODA_FS is not set
@@ -1487,6 +1630,7 @@ CONFIG_DEBUG_FS=y
1487CONFIG_DEBUG_BUGVERBOSE=y 1630CONFIG_DEBUG_BUGVERBOSE=y
1488# CONFIG_DEBUG_MEMORY_INIT is not set 1631# CONFIG_DEBUG_MEMORY_INIT is not set
1489# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1632# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1633# CONFIG_LKDTM is not set
1490# CONFIG_LATENCYTOP is not set 1634# CONFIG_LATENCYTOP is not set
1491CONFIG_SYSCTL_SYSCALL_CHECK=y 1635CONFIG_SYSCTL_SYSCALL_CHECK=y
1492CONFIG_HAVE_FUNCTION_TRACER=y 1636CONFIG_HAVE_FUNCTION_TRACER=y
@@ -1618,7 +1762,7 @@ CONFIG_CRYPTO_HW=y
1618# 1762#
1619CONFIG_BITREVERSE=y 1763CONFIG_BITREVERSE=y
1620CONFIG_GENERIC_FIND_LAST_BIT=y 1764CONFIG_GENERIC_FIND_LAST_BIT=y
1621# CONFIG_CRC_CCITT is not set 1765CONFIG_CRC_CCITT=y
1622# CONFIG_CRC16 is not set 1766# CONFIG_CRC16 is not set
1623CONFIG_CRC_T10DIF=y 1767CONFIG_CRC_T10DIF=y
1624CONFIG_CRC_ITU_T=y 1768CONFIG_CRC_ITU_T=y
diff --git a/arch/sh/drivers/dma/dma-api.c b/arch/sh/drivers/dma/dma-api.c
index 727126e907e3..4a277224a871 100644
--- a/arch/sh/drivers/dma/dma-api.c
+++ b/arch/sh/drivers/dma/dma-api.c
@@ -17,6 +17,7 @@
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18#include <linux/mm.h> 18#include <linux/mm.h>
19#include <linux/sched.h> 19#include <linux/sched.h>
20#include <linux/slab.h>
20#include <asm/dma.h> 21#include <asm/dma.h>
21 22
22DEFINE_SPINLOCK(dma_spin_lock); 23DEFINE_SPINLOCK(dma_spin_lock);
diff --git a/arch/sh/drivers/dma/dmabrg.c b/arch/sh/drivers/dma/dmabrg.c
index 72622e307613..6ab9c4a15439 100644
--- a/arch/sh/drivers/dma/dmabrg.c
+++ b/arch/sh/drivers/dma/dmabrg.c
@@ -8,6 +8,7 @@
8 8
9#include <linux/interrupt.h> 9#include <linux/interrupt.h>
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/slab.h>
11#include <asm/dma.h> 12#include <asm/dma.h>
12#include <asm/dmabrg.h> 13#include <asm/dmabrg.h>
13#include <asm/io.h> 14#include <asm/io.h>
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c
index 2acbc793032d..7efc9c354fc7 100644
--- a/arch/sh/drivers/heartbeat.c
+++ b/arch/sh/drivers/heartbeat.c
@@ -24,6 +24,7 @@
24#include <linux/sched.h> 24#include <linux/sched.h>
25#include <linux/timer.h> 25#include <linux/timer.h>
26#include <linux/io.h> 26#include <linux/io.h>
27#include <linux/slab.h>
27#include <asm/heartbeat.h> 28#include <asm/heartbeat.h>
28 29
29#define DRV_NAME "heartbeat" 30#define DRV_NAME "heartbeat"
diff --git a/arch/sh/drivers/pci/pcie-sh7786.c b/arch/sh/drivers/pci/pcie-sh7786.c
index ae91a2dd9183..68cb9b0ac9d2 100644
--- a/arch/sh/drivers/pci/pcie-sh7786.c
+++ b/arch/sh/drivers/pci/pcie-sh7786.c
@@ -12,6 +12,7 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <linux/delay.h> 14#include <linux/delay.h>
15#include <linux/slab.h>
15#include "pcie-sh7786.h" 16#include "pcie-sh7786.h"
16#include <asm/sizes.h> 17#include <asm/sizes.h>
17 18
diff --git a/arch/sh/drivers/push-switch.c b/arch/sh/drivers/push-switch.c
index 725be6de589b..7b42c247316c 100644
--- a/arch/sh/drivers/push-switch.c
+++ b/arch/sh/drivers/push-switch.c
@@ -8,6 +8,7 @@
8 * for more details. 8 * for more details.
9 */ 9 */
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/slab.h>
11#include <linux/module.h> 12#include <linux/module.h>
12#include <linux/interrupt.h> 13#include <linux/interrupt.h>
13#include <linux/platform_device.h> 14#include <linux/platform_device.h>
diff --git a/arch/sh/include/asm/elf.h b/arch/sh/include/asm/elf.h
index ac04255022b6..ce830faeebbf 100644
--- a/arch/sh/include/asm/elf.h
+++ b/arch/sh/include/asm/elf.h
@@ -211,7 +211,9 @@ extern void __kernel_vsyscall;
211 211
212#define VSYSCALL_AUX_ENT \ 212#define VSYSCALL_AUX_ENT \
213 if (vdso_enabled) \ 213 if (vdso_enabled) \
214 NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); 214 NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \
215 else \
216 NEW_AUX_ENT(AT_IGNORE, 0);
215#else 217#else
216#define VSYSCALL_AUX_ENT 218#define VSYSCALL_AUX_ENT
217#endif /* CONFIG_VSYSCALL */ 219#endif /* CONFIG_VSYSCALL */
@@ -219,7 +221,7 @@ extern void __kernel_vsyscall;
219#ifdef CONFIG_SH_FPU 221#ifdef CONFIG_SH_FPU
220#define FPU_AUX_ENT NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT) 222#define FPU_AUX_ENT NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT)
221#else 223#else
222#define FPU_AUX_ENT 224#define FPU_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0)
223#endif 225#endif
224 226
225extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape; 227extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape;
diff --git a/arch/sh/include/asm/mmu.h b/arch/sh/include/asm/mmu.h
index 19fe84550b49..56e4418c19b9 100644
--- a/arch/sh/include/asm/mmu.h
+++ b/arch/sh/include/asm/mmu.h
@@ -66,6 +66,13 @@ int pmb_unmap(void __iomem *addr);
66 66
67#else 67#else
68 68
69static inline int
70pmb_bolt_mapping(unsigned long virt, phys_addr_t phys,
71 unsigned long size, pgprot_t prot)
72{
73 return -EINVAL;
74}
75
69static inline void __iomem * 76static inline void __iomem *
70pmb_remap_caller(phys_addr_t phys, unsigned long size, 77pmb_remap_caller(phys_addr_t phys, unsigned long size,
71 pgprot_t prot, void *caller) 78 pgprot_t prot, void *caller)
diff --git a/arch/sh/include/cpu-sh4/cpu/mmu_context.h b/arch/sh/include/cpu-sh4/cpu/mmu_context.h
index 03ea75c5315d..5963124c1d4a 100644
--- a/arch/sh/include/cpu-sh4/cpu/mmu_context.h
+++ b/arch/sh/include/cpu-sh4/cpu/mmu_context.h
@@ -19,6 +19,8 @@
19 19
20#define MMUCR 0xFF000010 /* MMU Control Register */ 20#define MMUCR 0xFF000010 /* MMU Control Register */
21 21
22#define MMU_ITLB_ADDRESS_ARRAY 0xF2000000
23#define MMU_ITLB_ADDRESS_ARRAY2 0xF2800000
22#define MMU_UTLB_ADDRESS_ARRAY 0xF6000000 24#define MMU_UTLB_ADDRESS_ARRAY 0xF6000000
23#define MMU_UTLB_ADDRESS_ARRAY2 0xF6800000 25#define MMU_UTLB_ADDRESS_ARRAY2 0xF6800000
24#define MMU_PAGE_ASSOC_BIT 0x80 26#define MMU_PAGE_ASSOC_BIT 0x80
@@ -28,6 +30,8 @@
28#define MMUCR_URB 0x00FC0000 30#define MMUCR_URB 0x00FC0000
29#define MMUCR_URB_SHIFT 18 31#define MMUCR_URB_SHIFT 18
30#define MMUCR_URB_NENTRIES 64 32#define MMUCR_URB_NENTRIES 64
33#define MMUCR_URC 0x0000FC00
34#define MMUCR_URC_SHIFT 10
31 35
32#if defined(CONFIG_32BIT) && defined(CONFIG_CPU_SUBTYPE_ST40) 36#if defined(CONFIG_32BIT) && defined(CONFIG_CPU_SUBTYPE_ST40)
33#define MMUCR_SE (1 << 4) 37#define MMUCR_SE (1 << 4)
diff --git a/arch/sh/include/cpu-sh4/cpu/watchdog.h b/arch/sh/include/cpu-sh4/cpu/watchdog.h
index 7672301d0c70..7f62b9380938 100644
--- a/arch/sh/include/cpu-sh4/cpu/watchdog.h
+++ b/arch/sh/include/cpu-sh4/cpu/watchdog.h
@@ -21,6 +21,12 @@
21#define WTCNT 0xffcc0000 /*WDTST*/ 21#define WTCNT 0xffcc0000 /*WDTST*/
22#define WTST WTCNT 22#define WTST WTCNT
23#define WTBST 0xffcc0008 /*WDTBST*/ 23#define WTBST 0xffcc0008 /*WDTBST*/
24/* Register definitions */
25#elif defined(CONFIG_CPU_SUBTYPE_SH7722) || \
26 defined(CONFIG_CPU_SUBTYPE_SH7723) || \
27 defined(CONFIG_CPU_SUBTYPE_SH7724)
28#define WTCNT 0xa4520000
29#define WTCSR 0xa4520004
24#else 30#else
25/* Register definitions */ 31/* Register definitions */
26#define WTCNT 0xffc00008 32#define WTCNT 0xffc00008
diff --git a/arch/sh/kernel/cpu/fpu.c b/arch/sh/kernel/cpu/fpu.c
index f059ed62cf57..7f1b70cace35 100644
--- a/arch/sh/kernel/cpu/fpu.c
+++ b/arch/sh/kernel/cpu/fpu.c
@@ -1,4 +1,5 @@
1#include <linux/sched.h> 1#include <linux/sched.h>
2#include <linux/slab.h>
2#include <asm/processor.h> 3#include <asm/processor.h>
3#include <asm/fpu.h> 4#include <asm/fpu.h>
4 5
diff --git a/arch/sh/kernel/cpu/hwblk.c b/arch/sh/kernel/cpu/hwblk.c
index c0ad7d46e784..67a1e811cfe8 100644
--- a/arch/sh/kernel/cpu/hwblk.c
+++ b/arch/sh/kernel/cpu/hwblk.c
@@ -1,6 +1,5 @@
1#include <linux/clk.h> 1#include <linux/clk.h>
2#include <linux/compiler.h> 2#include <linux/compiler.h>
3#include <linux/slab.h>
4#include <linux/io.h> 3#include <linux/io.h>
5#include <linux/spinlock.h> 4#include <linux/spinlock.h>
6#include <asm/suspend.h> 5#include <asm/suspend.h>
diff --git a/arch/sh/kernel/cpufreq.c b/arch/sh/kernel/cpufreq.c
index dce4f3ff0932..0fffacea6ed9 100644
--- a/arch/sh/kernel/cpufreq.c
+++ b/arch/sh/kernel/cpufreq.c
@@ -48,7 +48,7 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy,
48 return -ENODEV; 48 return -ENODEV;
49 49
50 cpus_allowed = current->cpus_allowed; 50 cpus_allowed = current->cpus_allowed;
51 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 51 set_cpus_allowed_ptr(current, cpumask_of(cpu));
52 52
53 BUG_ON(smp_processor_id() != cpu); 53 BUG_ON(smp_processor_id() != cpu);
54 54
@@ -66,7 +66,7 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy,
66 freqs.flags = 0; 66 freqs.flags = 0;
67 67
68 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 68 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
69 set_cpus_allowed(current, cpus_allowed); 69 set_cpus_allowed_ptr(current, &cpus_allowed);
70 clk_set_rate(cpuclk, freq); 70 clk_set_rate(cpuclk, freq);
71 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 71 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
72 72
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c
index bd1c497280a6..a8234b2010d1 100644
--- a/arch/sh/kernel/dwarf.c
+++ b/arch/sh/kernel/dwarf.c
@@ -22,6 +22,7 @@
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/elf.h> 23#include <linux/elf.h>
24#include <linux/ftrace.h> 24#include <linux/ftrace.h>
25#include <linux/slab.h>
25#include <asm/dwarf.h> 26#include <asm/dwarf.h>
26#include <asm/unwinder.h> 27#include <asm/unwinder.h>
27#include <asm/sections.h> 28#include <asm/sections.h>
@@ -727,7 +728,7 @@ static int dwarf_parse_cie(void *entry, void *p, unsigned long len,
727 unsigned char *end, struct module *mod) 728 unsigned char *end, struct module *mod)
728{ 729{
729 struct rb_node **rb_node = &cie_root.rb_node; 730 struct rb_node **rb_node = &cie_root.rb_node;
730 struct rb_node *parent; 731 struct rb_node *parent = *rb_node;
731 struct dwarf_cie *cie; 732 struct dwarf_cie *cie;
732 unsigned long flags; 733 unsigned long flags;
733 int count; 734 int count;
@@ -856,7 +857,7 @@ static int dwarf_parse_fde(void *entry, u32 entry_type,
856 unsigned char *end, struct module *mod) 857 unsigned char *end, struct module *mod)
857{ 858{
858 struct rb_node **rb_node = &fde_root.rb_node; 859 struct rb_node **rb_node = &fde_root.rb_node;
859 struct rb_node *parent; 860 struct rb_node *parent = *rb_node;
860 struct dwarf_fde *fde; 861 struct dwarf_fde *fde;
861 struct dwarf_cie *cie; 862 struct dwarf_cie *cie;
862 unsigned long flags; 863 unsigned long flags;
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c
index 0fd7b41f0a22..273f890b17ae 100644
--- a/arch/sh/kernel/idle.c
+++ b/arch/sh/kernel/idle.c
@@ -112,7 +112,7 @@ void cpu_idle(void)
112 } 112 }
113} 113}
114 114
115void __cpuinit select_idle_routine(void) 115void __init select_idle_routine(void)
116{ 116{
117 /* 117 /*
118 * If a platform has set its own idle routine, leave it alone. 118 * If a platform has set its own idle routine, leave it alone.
diff --git a/arch/sh/kernel/kprobes.c b/arch/sh/kernel/kprobes.c
index c96850b061fb..4049d99f76e1 100644
--- a/arch/sh/kernel/kprobes.c
+++ b/arch/sh/kernel/kprobes.c
@@ -13,6 +13,7 @@
13#include <linux/ptrace.h> 13#include <linux/ptrace.h>
14#include <linux/preempt.h> 14#include <linux/preempt.h>
15#include <linux/kdebug.h> 15#include <linux/kdebug.h>
16#include <linux/slab.h>
16#include <asm/cacheflush.h> 17#include <asm/cacheflush.h>
17#include <asm/uaccess.h> 18#include <asm/uaccess.h>
18 19
diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c
index 7ff0943e7a08..81b6de41ae5d 100644
--- a/arch/sh/kernel/perf_event.c
+++ b/arch/sh/kernel/perf_event.c
@@ -275,13 +275,30 @@ const struct pmu *hw_perf_event_init(struct perf_event *event)
275 return &pmu; 275 return &pmu;
276} 276}
277 277
278void hw_perf_event_setup(int cpu) 278static void sh_pmu_setup(int cpu)
279{ 279{
280 struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu); 280 struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu);
281 281
282 memset(cpuhw, 0, sizeof(struct cpu_hw_events)); 282 memset(cpuhw, 0, sizeof(struct cpu_hw_events));
283} 283}
284 284
285static int __cpuinit
286sh_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu)
287{
288 unsigned int cpu = (long)hcpu;
289
290 switch (action & ~CPU_TASKS_FROZEN) {
291 case CPU_UP_PREPARE:
292 sh_pmu_setup(cpu);
293 break;
294
295 default:
296 break;
297 }
298
299 return NOTIFY_OK;
300}
301
285void hw_perf_enable(void) 302void hw_perf_enable(void)
286{ 303{
287 if (!sh_pmu_initialized()) 304 if (!sh_pmu_initialized())
@@ -298,7 +315,7 @@ void hw_perf_disable(void)
298 sh_pmu->disable_all(); 315 sh_pmu->disable_all();
299} 316}
300 317
301int register_sh_pmu(struct sh_pmu *pmu) 318int __cpuinit register_sh_pmu(struct sh_pmu *pmu)
302{ 319{
303 if (sh_pmu) 320 if (sh_pmu)
304 return -EBUSY; 321 return -EBUSY;
@@ -308,5 +325,6 @@ int register_sh_pmu(struct sh_pmu *pmu)
308 325
309 WARN_ON(pmu->num_events > MAX_HWEVENTS); 326 WARN_ON(pmu->num_events > MAX_HWEVENTS);
310 327
328 perf_cpu_notifier(sh_pmu_notifier);
311 return 0; 329 return 0;
312} 330}
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index 81add9b9ea6e..17f89aa4e1b3 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -1,5 +1,6 @@
1#include <linux/mm.h> 1#include <linux/mm.h>
2#include <linux/kernel.h> 2#include <linux/kernel.h>
3#include <linux/slab.h>
3#include <linux/sched.h> 4#include <linux/sched.h>
4 5
5struct kmem_cache *task_xstate_cachep = NULL; 6struct kmem_cache *task_xstate_cachep = NULL;
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c
index 3cb88f114d7a..052981972ae6 100644
--- a/arch/sh/kernel/process_32.c
+++ b/arch/sh/kernel/process_32.c
@@ -15,6 +15,7 @@
15 */ 15 */
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/slab.h>
18#include <linux/elfcore.h> 19#include <linux/elfcore.h>
19#include <linux/kallsyms.h> 20#include <linux/kallsyms.h>
20#include <linux/fs.h> 21#include <linux/fs.h>
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index c90957a459ac..d4ca6480e355 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -21,6 +21,7 @@
21#include <linux/fs.h> 21#include <linux/fs.h>
22#include <linux/ptrace.h> 22#include <linux/ptrace.h>
23#include <linux/reboot.h> 23#include <linux/reboot.h>
24#include <linux/slab.h>
24#include <linux/init.h> 25#include <linux/init.h>
25#include <linux/module.h> 26#include <linux/module.h>
26#include <linux/io.h> 27#include <linux/io.h>
@@ -504,13 +505,6 @@ out:
504 return error; 505 return error;
505} 506}
506 507
507/*
508 * These bracket the sleeping functions..
509 */
510extern void interruptible_sleep_on(wait_queue_head_t *q);
511
512#define mid_sched ((unsigned long) interruptible_sleep_on)
513
514#ifdef CONFIG_FRAME_POINTER 508#ifdef CONFIG_FRAME_POINTER
515static int in_sh64_switch_to(unsigned long pc) 509static int in_sh64_switch_to(unsigned long pc)
516{ 510{
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c
index c625cdab76dd..7759a9a93211 100644
--- a/arch/sh/kernel/ptrace_32.c
+++ b/arch/sh/kernel/ptrace_32.c
@@ -17,7 +17,6 @@
17#include <linux/errno.h> 17#include <linux/errno.h>
18#include <linux/ptrace.h> 18#include <linux/ptrace.h>
19#include <linux/user.h> 19#include <linux/user.h>
20#include <linux/slab.h>
21#include <linux/security.h> 20#include <linux/security.h>
22#include <linux/signal.h> 21#include <linux/signal.h>
23#include <linux/io.h> 22#include <linux/io.h>
diff --git a/arch/sh/kernel/return_address.c b/arch/sh/kernel/return_address.c
index df3ab5811074..cbf1dd5372b2 100644
--- a/arch/sh/kernel/return_address.c
+++ b/arch/sh/kernel/return_address.c
@@ -9,6 +9,7 @@
9 * for more details. 9 * for more details.
10 */ 10 */
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/module.h>
12#include <asm/dwarf.h> 13#include <asm/dwarf.h>
13 14
14#ifdef CONFIG_DWARF_UNWINDER 15#ifdef CONFIG_DWARF_UNWINDER
@@ -52,3 +53,5 @@ void *return_address(unsigned int depth)
52} 53}
53 54
54#endif 55#endif
56
57EXPORT_SYMBOL_GPL(return_address);
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index e124cf7008df..002cc612deef 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -69,6 +69,7 @@ asmlinkage void __cpuinit start_secondary(void)
69 unsigned int cpu; 69 unsigned int cpu;
70 struct mm_struct *mm = &init_mm; 70 struct mm_struct *mm = &init_mm;
71 71
72 enable_mmu();
72 atomic_inc(&mm->mm_count); 73 atomic_inc(&mm->mm_count);
73 atomic_inc(&mm->mm_users); 74 atomic_inc(&mm->mm_users);
74 current->active_mm = mm; 75 current->active_mm = mm;
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index 3f7e415be86a..242117cbad67 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -11,7 +11,6 @@
11 * for more details. 11 * for more details.
12 */ 12 */
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/slab.h>
15#include <linux/kernel.h> 14#include <linux/kernel.h>
16#include <linux/init.h> 15#include <linux/init.h>
17#include <linux/gfp.h> 16#include <linux/gfp.h>
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c
index 902967e3f841..c86a08540258 100644
--- a/arch/sh/mm/consistent.c
+++ b/arch/sh/mm/consistent.c
@@ -16,6 +16,7 @@
16#include <linux/dma-debug.h> 16#include <linux/dma-debug.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/gfp.h>
19#include <asm/cacheflush.h> 20#include <asm/cacheflush.h>
20#include <asm/addrspace.h> 21#include <asm/addrspace.h>
21 22
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c
index 9304117039c4..9163db3e8d15 100644
--- a/arch/sh/mm/hugetlbpage.c
+++ b/arch/sh/mm/hugetlbpage.c
@@ -13,7 +13,6 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/hugetlb.h> 14#include <linux/hugetlb.h>
15#include <linux/pagemap.h> 15#include <linux/pagemap.h>
16#include <linux/slab.h>
17#include <linux/sysctl.h> 16#include <linux/sysctl.h>
18 17
19#include <asm/mman.h> 18#include <asm/mman.h>
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 68028e8f26ce..c505de61a5ca 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -10,6 +10,7 @@
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/swap.h> 11#include <linux/swap.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/gfp.h>
13#include <linux/bootmem.h> 14#include <linux/bootmem.h>
14#include <linux/proc_fs.h> 15#include <linux/proc_fs.h>
15#include <linux/pagemap.h> 16#include <linux/pagemap.h>
diff --git a/arch/sh/mm/ioremap.c b/arch/sh/mm/ioremap.c
index 1ab2385ecefe..0c99ec2e7ed8 100644
--- a/arch/sh/mm/ioremap.c
+++ b/arch/sh/mm/ioremap.c
@@ -14,6 +14,7 @@
14 */ 14 */
15#include <linux/vmalloc.h> 15#include <linux/vmalloc.h>
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/slab.h>
17#include <linux/mm.h> 18#include <linux/mm.h>
18#include <linux/pci.h> 19#include <linux/pci.h>
19#include <linux/io.h> 20#include <linux/io.h>
diff --git a/arch/sh/mm/ioremap_fixed.c b/arch/sh/mm/ioremap_fixed.c
index 7f682e5dafcf..efbe84af9983 100644
--- a/arch/sh/mm/ioremap_fixed.c
+++ b/arch/sh/mm/ioremap_fixed.c
@@ -15,7 +15,6 @@
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/bootmem.h> 16#include <linux/bootmem.h>
17#include <linux/proc_fs.h> 17#include <linux/proc_fs.h>
18#include <linux/slab.h>
19#include <asm/fixmap.h> 18#include <asm/fixmap.h>
20#include <asm/page.h> 19#include <asm/page.h>
21#include <asm/pgalloc.h> 20#include <asm/pgalloc.h>
diff --git a/arch/sh/mm/pgtable.c b/arch/sh/mm/pgtable.c
index 6f21fb1d8726..26e03a1f7ca4 100644
--- a/arch/sh/mm/pgtable.c
+++ b/arch/sh/mm/pgtable.c
@@ -1,4 +1,5 @@
1#include <linux/mm.h> 1#include <linux/mm.h>
2#include <linux/slab.h>
2 3
3#define PGALLOC_GFP GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO 4#define PGALLOC_GFP GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO
4 5
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c
index a4662e2782c3..e43ec600afcf 100644
--- a/arch/sh/mm/pmb.c
+++ b/arch/sh/mm/pmb.c
@@ -15,7 +15,6 @@
15#include <linux/sysdev.h> 15#include <linux/sysdev.h>
16#include <linux/cpu.h> 16#include <linux/cpu.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/slab.h>
19#include <linux/bitops.h> 18#include <linux/bitops.h>
20#include <linux/debugfs.h> 19#include <linux/debugfs.h>
21#include <linux/fs.h> 20#include <linux/fs.h>
@@ -323,6 +322,7 @@ static void __clear_pmb_entry(struct pmb_entry *pmbe)
323 writel_uncached(data_val & ~PMB_V, data); 322 writel_uncached(data_val & ~PMB_V, data);
324} 323}
325 324
325#ifdef CONFIG_PM
326static void set_pmb_entry(struct pmb_entry *pmbe) 326static void set_pmb_entry(struct pmb_entry *pmbe)
327{ 327{
328 unsigned long flags; 328 unsigned long flags;
@@ -331,6 +331,7 @@ static void set_pmb_entry(struct pmb_entry *pmbe)
331 __set_pmb_entry(pmbe); 331 __set_pmb_entry(pmbe);
332 spin_unlock_irqrestore(&pmbe->lock, flags); 332 spin_unlock_irqrestore(&pmbe->lock, flags);
333} 333}
334#endif /* CONFIG_PM */
334 335
335int pmb_bolt_mapping(unsigned long vaddr, phys_addr_t phys, 336int pmb_bolt_mapping(unsigned long vaddr, phys_addr_t phys,
336 unsigned long size, pgprot_t prot) 337 unsigned long size, pgprot_t prot)
@@ -802,7 +803,7 @@ void __init pmb_init(void)
802 writel_uncached(0, PMB_IRMCR); 803 writel_uncached(0, PMB_IRMCR);
803 804
804 /* Flush out the TLB */ 805 /* Flush out the TLB */
805 __raw_writel(__raw_readl(MMUCR) | MMUCR_TI, MMUCR); 806 local_flush_tlb_all();
806 ctrl_barrier(); 807 ctrl_barrier();
807} 808}
808 809
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c
index 32dc674c550c..b71db6af8060 100644
--- a/arch/sh/mm/tlb-pteaex.c
+++ b/arch/sh/mm/tlb-pteaex.c
@@ -73,5 +73,35 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page)
73 jump_to_uncached(); 73 jump_to_uncached();
74 __raw_writel(page, MMU_UTLB_ADDRESS_ARRAY | MMU_PAGE_ASSOC_BIT); 74 __raw_writel(page, MMU_UTLB_ADDRESS_ARRAY | MMU_PAGE_ASSOC_BIT);
75 __raw_writel(asid, MMU_UTLB_ADDRESS_ARRAY2 | MMU_PAGE_ASSOC_BIT); 75 __raw_writel(asid, MMU_UTLB_ADDRESS_ARRAY2 | MMU_PAGE_ASSOC_BIT);
76 __raw_writel(page, MMU_ITLB_ADDRESS_ARRAY | MMU_PAGE_ASSOC_BIT);
77 __raw_writel(asid, MMU_ITLB_ADDRESS_ARRAY2 | MMU_PAGE_ASSOC_BIT);
76 back_to_cached(); 78 back_to_cached();
77} 79}
80
81void local_flush_tlb_all(void)
82{
83 unsigned long flags, status;
84 int i;
85
86 /*
87 * Flush all the TLB.
88 */
89 local_irq_save(flags);
90 jump_to_uncached();
91
92 status = __raw_readl(MMUCR);
93 status = ((status & MMUCR_URB) >> MMUCR_URB_SHIFT);
94
95 if (status == 0)
96 status = MMUCR_URB_NENTRIES;
97
98 for (i = 0; i < status; i++)
99 __raw_writel(0x0, MMU_UTLB_ADDRESS_ARRAY | (i << 8));
100
101 for (i = 0; i < 4; i++)
102 __raw_writel(0x0, MMU_ITLB_ADDRESS_ARRAY | (i << 8));
103
104 back_to_cached();
105 ctrl_barrier();
106 local_irq_restore(flags);
107}
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c
index 4f5f7cbdd508..7a940dbfc2e9 100644
--- a/arch/sh/mm/tlb-sh3.c
+++ b/arch/sh/mm/tlb-sh3.c
@@ -77,3 +77,22 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page)
77 for (i = 0; i < ways; i++) 77 for (i = 0; i < ways; i++)
78 __raw_writel(data, addr + (i << 8)); 78 __raw_writel(data, addr + (i << 8));
79} 79}
80
81void local_flush_tlb_all(void)
82{
83 unsigned long flags, status;
84
85 /*
86 * Flush all the TLB.
87 *
88 * Write to the MMU control register's bit:
89 * TF-bit for SH-3, TI-bit for SH-4.
90 * It's same position, bit #2.
91 */
92 local_irq_save(flags);
93 status = __raw_readl(MMUCR);
94 status |= 0x04;
95 __raw_writel(status, MMUCR);
96 ctrl_barrier();
97 local_irq_restore(flags);
98}
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c
index ccac77f504a8..cfdf7930d294 100644
--- a/arch/sh/mm/tlb-sh4.c
+++ b/arch/sh/mm/tlb-sh4.c
@@ -80,3 +80,31 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page)
80 __raw_writel(data, addr); 80 __raw_writel(data, addr);
81 back_to_cached(); 81 back_to_cached();
82} 82}
83
84void local_flush_tlb_all(void)
85{
86 unsigned long flags, status;
87 int i;
88
89 /*
90 * Flush all the TLB.
91 */
92 local_irq_save(flags);
93 jump_to_uncached();
94
95 status = __raw_readl(MMUCR);
96 status = ((status & MMUCR_URB) >> MMUCR_URB_SHIFT);
97
98 if (status == 0)
99 status = MMUCR_URB_NENTRIES;
100
101 for (i = 0; i < status; i++)
102 __raw_writel(0x0, MMU_UTLB_ADDRESS_ARRAY | (i << 8));
103
104 for (i = 0; i < 4; i++)
105 __raw_writel(0x0, MMU_ITLB_ADDRESS_ARRAY | (i << 8));
106
107 back_to_cached();
108 ctrl_barrier();
109 local_irq_restore(flags);
110}
diff --git a/arch/sh/mm/tlb-urb.c b/arch/sh/mm/tlb-urb.c
index bb5b9098956d..c92ce20db39b 100644
--- a/arch/sh/mm/tlb-urb.c
+++ b/arch/sh/mm/tlb-urb.c
@@ -24,13 +24,9 @@ void tlb_wire_entry(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
24 24
25 local_irq_save(flags); 25 local_irq_save(flags);
26 26
27 /* Load the entry into the TLB */
28 __update_tlb(vma, addr, pte);
29
30 /* ... and wire it up. */
31 status = __raw_readl(MMUCR); 27 status = __raw_readl(MMUCR);
32 urb = (status & MMUCR_URB) >> MMUCR_URB_SHIFT; 28 urb = (status & MMUCR_URB) >> MMUCR_URB_SHIFT;
33 status &= ~MMUCR_URB; 29 status &= ~MMUCR_URC;
34 30
35 /* 31 /*
36 * Make sure we're not trying to wire the last TLB entry slot. 32 * Make sure we're not trying to wire the last TLB entry slot.
@@ -39,7 +35,23 @@ void tlb_wire_entry(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
39 35
40 urb = urb % MMUCR_URB_NENTRIES; 36 urb = urb % MMUCR_URB_NENTRIES;
41 37
38 /*
39 * Insert this entry into the highest non-wired TLB slot (via
40 * the URC field).
41 */
42 status |= (urb << MMUCR_URC_SHIFT);
43 __raw_writel(status, MMUCR);
44 ctrl_barrier();
45
46 /* Load the entry into the TLB */
47 __update_tlb(vma, addr, pte);
48
49 /* ... and wire it up. */
50 status = __raw_readl(MMUCR);
51
52 status &= ~MMUCR_URB;
42 status |= (urb << MMUCR_URB_SHIFT); 53 status |= (urb << MMUCR_URB_SHIFT);
54
43 __raw_writel(status, MMUCR); 55 __raw_writel(status, MMUCR);
44 ctrl_barrier(); 56 ctrl_barrier();
45 57
diff --git a/arch/sh/mm/tlbflush_32.c b/arch/sh/mm/tlbflush_32.c
index 004bb3f25b5f..3fbe03ce8fe3 100644
--- a/arch/sh/mm/tlbflush_32.c
+++ b/arch/sh/mm/tlbflush_32.c
@@ -119,22 +119,3 @@ void local_flush_tlb_mm(struct mm_struct *mm)
119 local_irq_restore(flags); 119 local_irq_restore(flags);
120 } 120 }
121} 121}
122
123void local_flush_tlb_all(void)
124{
125 unsigned long flags, status;
126
127 /*
128 * Flush all the TLB.
129 *
130 * Write to the MMU control register's bit:
131 * TF-bit for SH-3, TI-bit for SH-4.
132 * It's same position, bit #2.
133 */
134 local_irq_save(flags);
135 status = __raw_readl(MMUCR);
136 status |= 0x04;
137 __raw_writel(status, MMUCR);
138 ctrl_barrier();
139 local_irq_restore(flags);
140}
diff --git a/arch/sh/mm/uncached.c b/arch/sh/mm/uncached.c
index cf20a5c5136a..8a4eca551fc0 100644
--- a/arch/sh/mm/uncached.c
+++ b/arch/sh/mm/uncached.c
@@ -1,6 +1,8 @@
1#include <linux/init.h> 1#include <linux/init.h>
2#include <linux/module.h>
2#include <asm/sizes.h> 3#include <asm/sizes.h>
3#include <asm/page.h> 4#include <asm/page.h>
5#include <asm/addrspace.h>
4 6
5/* 7/*
6 * This is the offset of the uncached section from its cached alias. 8 * This is the offset of the uncached section from its cached alias.
@@ -15,15 +17,22 @@
15unsigned long cached_to_uncached = SZ_512M; 17unsigned long cached_to_uncached = SZ_512M;
16unsigned long uncached_size = SZ_512M; 18unsigned long uncached_size = SZ_512M;
17unsigned long uncached_start, uncached_end; 19unsigned long uncached_start, uncached_end;
20EXPORT_SYMBOL(uncached_start);
21EXPORT_SYMBOL(uncached_end);
18 22
19int virt_addr_uncached(unsigned long kaddr) 23int virt_addr_uncached(unsigned long kaddr)
20{ 24{
21 return (kaddr >= uncached_start) && (kaddr < uncached_end); 25 return (kaddr >= uncached_start) && (kaddr < uncached_end);
22} 26}
27EXPORT_SYMBOL(virt_addr_uncached);
23 28
24void __init uncached_init(void) 29void __init uncached_init(void)
25{ 30{
31#ifdef CONFIG_29BIT
32 uncached_start = P2SEG;
33#else
26 uncached_start = memory_end; 34 uncached_start = memory_end;
35#endif
27 uncached_end = uncached_start + uncached_size; 36 uncached_end = uncached_start + uncached_size;
28} 37}
29 38
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 6db513674050..9908d477ccd9 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -37,6 +37,9 @@ config SPARC64
37 def_bool 64BIT 37 def_bool 64BIT
38 select ARCH_SUPPORTS_MSI 38 select ARCH_SUPPORTS_MSI
39 select HAVE_FUNCTION_TRACER 39 select HAVE_FUNCTION_TRACER
40 select HAVE_FUNCTION_GRAPH_TRACER
41 select HAVE_FUNCTION_GRAPH_FP_TEST
42 select HAVE_FUNCTION_TRACE_MCOUNT_TEST
40 select HAVE_KRETPROBES 43 select HAVE_KRETPROBES
41 select HAVE_KPROBES 44 select HAVE_KPROBES
42 select HAVE_LMB 45 select HAVE_LMB
diff --git a/arch/sparc/Kconfig.debug b/arch/sparc/Kconfig.debug
index 9d3c889718ac..1b4a831565f9 100644
--- a/arch/sparc/Kconfig.debug
+++ b/arch/sparc/Kconfig.debug
@@ -19,13 +19,10 @@ config DEBUG_DCFLUSH
19 bool "D-cache flush debugging" 19 bool "D-cache flush debugging"
20 depends on SPARC64 && DEBUG_KERNEL 20 depends on SPARC64 && DEBUG_KERNEL
21 21
22config STACK_DEBUG
23 bool "Stack Overflow Detection Support"
24
25config MCOUNT 22config MCOUNT
26 bool 23 bool
27 depends on SPARC64 24 depends on SPARC64
28 depends on STACK_DEBUG || FUNCTION_TRACER 25 depends on FUNCTION_TRACER
29 default y 26 default y
30 27
31config FRAME_POINTER 28config FRAME_POINTER
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index 56e3163673e3..259e3fd50993 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/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.33 3# Linux kernel version: 2.6.34-rc3
4# Wed Mar 3 02:54:29 2010 4# Sat Apr 3 15:49:56 2010
5# 5#
6CONFIG_64BIT=y 6CONFIG_64BIT=y
7CONFIG_SPARC=y 7CONFIG_SPARC=y
@@ -23,6 +23,7 @@ CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
23CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 23CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 24CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
25CONFIG_MMU=y 25CONFIG_MMU=y
26CONFIG_NEED_DMA_MAP_STATE=y
26CONFIG_ARCH_NO_VIRT_TO_BUS=y 27CONFIG_ARCH_NO_VIRT_TO_BUS=y
27CONFIG_OF=y 28CONFIG_OF=y
28CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 29CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
@@ -439,6 +440,7 @@ CONFIG_MISC_DEVICES=y
439# CONFIG_ENCLOSURE_SERVICES is not set 440# CONFIG_ENCLOSURE_SERVICES is not set
440# CONFIG_HP_ILO is not set 441# CONFIG_HP_ILO is not set
441# CONFIG_ISL29003 is not set 442# CONFIG_ISL29003 is not set
443# CONFIG_SENSORS_TSL2550 is not set
442# CONFIG_DS1682 is not set 444# CONFIG_DS1682 is not set
443# CONFIG_C2PORT is not set 445# CONFIG_C2PORT is not set
444 446
@@ -511,6 +513,7 @@ CONFIG_BLK_DEV_IDEDMA=y
511# 513#
512# SCSI device support 514# SCSI device support
513# 515#
516CONFIG_SCSI_MOD=y
514CONFIG_RAID_ATTRS=m 517CONFIG_RAID_ATTRS=m
515CONFIG_SCSI=y 518CONFIG_SCSI=y
516CONFIG_SCSI_DMA=y 519CONFIG_SCSI_DMA=y
@@ -888,6 +891,7 @@ CONFIG_SERIAL_SUNHV=y
888CONFIG_SERIAL_CORE=y 891CONFIG_SERIAL_CORE=y
889CONFIG_SERIAL_CORE_CONSOLE=y 892CONFIG_SERIAL_CORE_CONSOLE=y
890# CONFIG_SERIAL_JSM is not set 893# CONFIG_SERIAL_JSM is not set
894# CONFIG_SERIAL_TIMBERDALE is not set
891# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set 895# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
892CONFIG_UNIX98_PTYS=y 896CONFIG_UNIX98_PTYS=y
893# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 897# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
@@ -935,6 +939,7 @@ CONFIG_I2C_ALGOBIT=y
935# 939#
936# CONFIG_I2C_OCORES is not set 940# CONFIG_I2C_OCORES is not set
937# CONFIG_I2C_SIMTEC is not set 941# CONFIG_I2C_SIMTEC is not set
942# CONFIG_I2C_XILINX is not set
938 943
939# 944#
940# External I2C/SMBus adapter drivers 945# External I2C/SMBus adapter drivers
@@ -948,15 +953,9 @@ CONFIG_I2C_ALGOBIT=y
948# 953#
949# CONFIG_I2C_PCA_PLATFORM is not set 954# CONFIG_I2C_PCA_PLATFORM is not set
950# CONFIG_I2C_STUB is not set 955# CONFIG_I2C_STUB is not set
951
952#
953# Miscellaneous I2C Chip support
954#
955# CONFIG_SENSORS_TSL2550 is not set
956# CONFIG_I2C_DEBUG_CORE is not set 956# CONFIG_I2C_DEBUG_CORE is not set
957# CONFIG_I2C_DEBUG_ALGO is not set 957# CONFIG_I2C_DEBUG_ALGO is not set
958# CONFIG_I2C_DEBUG_BUS is not set 958# CONFIG_I2C_DEBUG_BUS is not set
959# CONFIG_I2C_DEBUG_CHIP is not set
960# CONFIG_SPI is not set 959# CONFIG_SPI is not set
961 960
962# 961#
@@ -982,10 +981,11 @@ CONFIG_HWMON=y
982# CONFIG_SENSORS_ADM1029 is not set 981# CONFIG_SENSORS_ADM1029 is not set
983# CONFIG_SENSORS_ADM1031 is not set 982# CONFIG_SENSORS_ADM1031 is not set
984# CONFIG_SENSORS_ADM9240 is not set 983# CONFIG_SENSORS_ADM9240 is not set
984# CONFIG_SENSORS_ADT7411 is not set
985# CONFIG_SENSORS_ADT7462 is not set 985# CONFIG_SENSORS_ADT7462 is not set
986# CONFIG_SENSORS_ADT7470 is not set 986# CONFIG_SENSORS_ADT7470 is not set
987# CONFIG_SENSORS_ADT7473 is not set
988# CONFIG_SENSORS_ADT7475 is not set 987# CONFIG_SENSORS_ADT7475 is not set
988# CONFIG_SENSORS_ASC7621 is not set
989# CONFIG_SENSORS_ATXP1 is not set 989# CONFIG_SENSORS_ATXP1 is not set
990# CONFIG_SENSORS_DS1621 is not set 990# CONFIG_SENSORS_DS1621 is not set
991# CONFIG_SENSORS_I5K_AMB is not set 991# CONFIG_SENSORS_I5K_AMB is not set
@@ -1052,18 +1052,21 @@ CONFIG_SSB_POSSIBLE=y
1052# Multifunction device drivers 1052# Multifunction device drivers
1053# 1053#
1054# CONFIG_MFD_CORE is not set 1054# CONFIG_MFD_CORE is not set
1055# CONFIG_MFD_88PM860X is not set
1055# CONFIG_MFD_SM501 is not set 1056# CONFIG_MFD_SM501 is not set
1056# CONFIG_HTC_PASIC3 is not set 1057# CONFIG_HTC_PASIC3 is not set
1057# CONFIG_TWL4030_CORE is not set 1058# CONFIG_TWL4030_CORE is not set
1058# CONFIG_MFD_TMIO is not set 1059# CONFIG_MFD_TMIO is not set
1059# CONFIG_PMIC_DA903X is not set 1060# CONFIG_PMIC_DA903X is not set
1060# CONFIG_PMIC_ADP5520 is not set 1061# CONFIG_PMIC_ADP5520 is not set
1062# CONFIG_MFD_MAX8925 is not set
1061# CONFIG_MFD_WM8400 is not set 1063# CONFIG_MFD_WM8400 is not set
1062# CONFIG_MFD_WM831X is not set 1064# CONFIG_MFD_WM831X is not set
1063# CONFIG_MFD_WM8350_I2C is not set 1065# CONFIG_MFD_WM8350_I2C is not set
1066# CONFIG_MFD_WM8994 is not set
1064# CONFIG_MFD_PCF50633 is not set 1067# CONFIG_MFD_PCF50633 is not set
1065# CONFIG_AB3100_CORE is not set 1068# CONFIG_AB3100_CORE is not set
1066# CONFIG_MFD_88PM8607 is not set 1069# CONFIG_LPC_SCH is not set
1067# CONFIG_REGULATOR is not set 1070# CONFIG_REGULATOR is not set
1068# CONFIG_MEDIA_SUPPORT is not set 1071# CONFIG_MEDIA_SUPPORT is not set
1069 1072
@@ -1113,6 +1116,7 @@ CONFIG_FB_FFB=y
1113# CONFIG_FB_LEO is not set 1116# CONFIG_FB_LEO is not set
1114CONFIG_FB_XVR500=y 1117CONFIG_FB_XVR500=y
1115CONFIG_FB_XVR2500=y 1118CONFIG_FB_XVR2500=y
1119CONFIG_FB_XVR1000=y
1116# CONFIG_FB_S1D13XXX is not set 1120# CONFIG_FB_S1D13XXX is not set
1117# CONFIG_FB_NVIDIA is not set 1121# CONFIG_FB_NVIDIA is not set
1118# CONFIG_FB_RIVA is not set 1122# CONFIG_FB_RIVA is not set
@@ -1430,7 +1434,6 @@ CONFIG_USB_STORAGE=m
1430# CONFIG_USB_RIO500 is not set 1434# CONFIG_USB_RIO500 is not set
1431# CONFIG_USB_LEGOTOWER is not set 1435# CONFIG_USB_LEGOTOWER is not set
1432# CONFIG_USB_LCD is not set 1436# CONFIG_USB_LCD is not set
1433# CONFIG_USB_BERRY_CHARGE is not set
1434# CONFIG_USB_LED is not set 1437# CONFIG_USB_LED is not set
1435# CONFIG_USB_CYPRESS_CY7C63 is not set 1438# CONFIG_USB_CYPRESS_CY7C63 is not set
1436# CONFIG_USB_CYTHERM is not set 1439# CONFIG_USB_CYTHERM is not set
@@ -1443,7 +1446,6 @@ CONFIG_USB_STORAGE=m
1443# CONFIG_USB_IOWARRIOR is not set 1446# CONFIG_USB_IOWARRIOR is not set
1444# CONFIG_USB_TEST is not set 1447# CONFIG_USB_TEST is not set
1445# CONFIG_USB_ISIGHTFW is not set 1448# CONFIG_USB_ISIGHTFW is not set
1446# CONFIG_USB_VST is not set
1447# CONFIG_USB_GADGET is not set 1449# CONFIG_USB_GADGET is not set
1448 1450
1449# 1451#
@@ -1610,6 +1612,7 @@ CONFIG_MISC_FILESYSTEMS=y
1610# CONFIG_BEFS_FS is not set 1612# CONFIG_BEFS_FS is not set
1611# CONFIG_BFS_FS is not set 1613# CONFIG_BFS_FS is not set
1612# CONFIG_EFS_FS is not set 1614# CONFIG_EFS_FS is not set
1615# CONFIG_LOGFS is not set
1613# CONFIG_CRAMFS is not set 1616# CONFIG_CRAMFS is not set
1614# CONFIG_SQUASHFS is not set 1617# CONFIG_SQUASHFS is not set
1615# CONFIG_VXFS_FS is not set 1618# CONFIG_VXFS_FS is not set
@@ -1624,6 +1627,7 @@ CONFIG_NETWORK_FILESYSTEMS=y
1624# CONFIG_NFS_FS is not set 1627# CONFIG_NFS_FS is not set
1625# CONFIG_NFSD is not set 1628# CONFIG_NFSD is not set
1626# CONFIG_SMB_FS is not set 1629# CONFIG_SMB_FS is not set
1630# CONFIG_CEPH_FS is not set
1627# CONFIG_CIFS is not set 1631# CONFIG_CIFS is not set
1628# CONFIG_NCP_FS is not set 1632# CONFIG_NCP_FS is not set
1629# CONFIG_CODA_FS is not set 1633# CONFIG_CODA_FS is not set
diff --git a/arch/sparc/include/asm/cpudata_64.h b/arch/sparc/include/asm/cpudata_64.h
index 926397d345ff..050ef35b9dcf 100644
--- a/arch/sparc/include/asm/cpudata_64.h
+++ b/arch/sparc/include/asm/cpudata_64.h
@@ -17,7 +17,7 @@ typedef struct {
17 unsigned int __nmi_count; 17 unsigned int __nmi_count;
18 unsigned long clock_tick; /* %tick's per second */ 18 unsigned long clock_tick; /* %tick's per second */
19 unsigned long __pad; 19 unsigned long __pad;
20 unsigned int __pad1; 20 unsigned int irq0_irqs;
21 unsigned int __pad2; 21 unsigned int __pad2;
22 22
23 /* Dcache line 2, rarely used */ 23 /* Dcache line 2, rarely used */
diff --git a/arch/sparc/include/asm/irqflags_64.h b/arch/sparc/include/asm/irqflags_64.h
index 8b49bf920df3..bfa1ea45b4cd 100644
--- a/arch/sparc/include/asm/irqflags_64.h
+++ b/arch/sparc/include/asm/irqflags_64.h
@@ -76,9 +76,26 @@ static inline int raw_irqs_disabled(void)
76 */ 76 */
77static inline unsigned long __raw_local_irq_save(void) 77static inline unsigned long __raw_local_irq_save(void)
78{ 78{
79 unsigned long flags = __raw_local_save_flags(); 79 unsigned long flags, tmp;
80 80
81 raw_local_irq_disable(); 81 /* Disable interrupts to PIL_NORMAL_MAX unless we already
82 * are using PIL_NMI, in which case PIL_NMI is retained.
83 *
84 * The only values we ever program into the %pil are 0,
85 * PIL_NORMAL_MAX and PIL_NMI.
86 *
87 * Since PIL_NMI is the largest %pil value and all bits are
88 * set in it (0xf), it doesn't matter what PIL_NORMAL_MAX
89 * actually is.
90 */
91 __asm__ __volatile__(
92 "rdpr %%pil, %0\n\t"
93 "or %0, %2, %1\n\t"
94 "wrpr %1, 0x0, %%pil"
95 : "=r" (flags), "=r" (tmp)
96 : "i" (PIL_NORMAL_MAX)
97 : "memory"
98 );
82 99
83 return flags; 100 return flags;
84} 101}
diff --git a/arch/sparc/include/asm/stat.h b/arch/sparc/include/asm/stat.h
index 39327d6a57eb..a232e9e1f4e5 100644
--- a/arch/sparc/include/asm/stat.h
+++ b/arch/sparc/include/asm/stat.h
@@ -53,8 +53,8 @@ struct stat {
53 ino_t st_ino; 53 ino_t st_ino;
54 mode_t st_mode; 54 mode_t st_mode;
55 short st_nlink; 55 short st_nlink;
56 uid16_t st_uid; 56 unsigned short st_uid;
57 gid16_t st_gid; 57 unsigned short st_gid;
58 unsigned short st_rdev; 58 unsigned short st_rdev;
59 off_t st_size; 59 off_t st_size;
60 time_t st_atime; 60 time_t st_atime;
diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h
index 9e2d9447f2ad..4827a3aeac7f 100644
--- a/arch/sparc/include/asm/thread_info_64.h
+++ b/arch/sparc/include/asm/thread_info_64.h
@@ -111,7 +111,7 @@ struct thread_info {
111#define THREAD_SHIFT PAGE_SHIFT 111#define THREAD_SHIFT PAGE_SHIFT
112#endif /* PAGE_SHIFT == 13 */ 112#endif /* PAGE_SHIFT == 13 */
113 113
114#define PREEMPT_ACTIVE 0x4000000 114#define PREEMPT_ACTIVE 0x10000000
115 115
116/* 116/*
117 * macros/functions for gaining access to the thread information structure 117 * macros/functions for gaining access to the thread information structure
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
index c6316142db4e..0c2dc1f24a9a 100644
--- a/arch/sparc/kernel/Makefile
+++ b/arch/sparc/kernel/Makefile
@@ -13,6 +13,14 @@ extra-y += init_task.o
13CPPFLAGS_vmlinux.lds := -Usparc -m$(BITS) 13CPPFLAGS_vmlinux.lds := -Usparc -m$(BITS)
14extra-y += vmlinux.lds 14extra-y += vmlinux.lds
15 15
16ifdef CONFIG_FUNCTION_TRACER
17# Do not profile debug and lowlevel utilities
18CFLAGS_REMOVE_ftrace.o := -pg
19CFLAGS_REMOVE_time_$(BITS).o := -pg
20CFLAGS_REMOVE_perf_event.o := -pg
21CFLAGS_REMOVE_pcr.o := -pg
22endif
23
16obj-$(CONFIG_SPARC32) += entry.o wof.o wuf.o 24obj-$(CONFIG_SPARC32) += entry.o wof.o wuf.o
17obj-$(CONFIG_SPARC32) += etrap_32.o 25obj-$(CONFIG_SPARC32) += etrap_32.o
18obj-$(CONFIG_SPARC32) += rtrap_32.o 26obj-$(CONFIG_SPARC32) += rtrap_32.o
@@ -85,7 +93,7 @@ obj-$(CONFIG_KGDB) += kgdb_$(BITS).o
85 93
86 94
87obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o 95obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o
88CFLAGS_REMOVE_ftrace.o := -pg 96obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o
89 97
90obj-$(CONFIG_EARLYFB) += btext.o 98obj-$(CONFIG_EARLYFB) += btext.o
91obj-$(CONFIG_STACKTRACE) += stacktrace.o 99obj-$(CONFIG_STACKTRACE) += stacktrace.o
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
index 4589ca33220f..415c86d5a8da 100644
--- a/arch/sparc/kernel/central.c
+++ b/arch/sparc/kernel/central.c
@@ -5,6 +5,7 @@
5 5
6#include <linux/kernel.h> 6#include <linux/kernel.h>
7#include <linux/types.h> 7#include <linux/types.h>
8#include <linux/slab.h>
8#include <linux/string.h> 9#include <linux/string.h>
9#include <linux/init.h> 10#include <linux/init.h>
10#include <linux/of_device.h> 11#include <linux/of_device.h>
diff --git a/arch/sparc/kernel/cpumap.c b/arch/sparc/kernel/cpumap.c
index 7430ed080b23..8de64c8126bc 100644
--- a/arch/sparc/kernel/cpumap.c
+++ b/arch/sparc/kernel/cpumap.c
@@ -4,6 +4,7 @@
4 */ 4 */
5 5
6#include <linux/module.h> 6#include <linux/module.h>
7#include <linux/slab.h>
7#include <linux/kernel.h> 8#include <linux/kernel.h>
8#include <linux/init.h> 9#include <linux/init.h>
9#include <linux/cpumask.h> 10#include <linux/cpumask.h>
diff --git a/arch/sparc/kernel/ftrace.c b/arch/sparc/kernel/ftrace.c
index 9103a56b39e8..03ab022e51c5 100644
--- a/arch/sparc/kernel/ftrace.c
+++ b/arch/sparc/kernel/ftrace.c
@@ -13,7 +13,7 @@ static const u32 ftrace_nop = 0x01000000;
13 13
14static u32 ftrace_call_replace(unsigned long ip, unsigned long addr) 14static u32 ftrace_call_replace(unsigned long ip, unsigned long addr)
15{ 15{
16 static u32 call; 16 u32 call;
17 s32 off; 17 s32 off;
18 18
19 off = ((s32)addr - (s32)ip); 19 off = ((s32)addr - (s32)ip);
@@ -91,3 +91,61 @@ int __init ftrace_dyn_arch_init(void *data)
91 return 0; 91 return 0;
92} 92}
93#endif 93#endif
94
95#ifdef CONFIG_FUNCTION_GRAPH_TRACER
96
97#ifdef CONFIG_DYNAMIC_FTRACE
98extern void ftrace_graph_call(void);
99
100int ftrace_enable_ftrace_graph_caller(void)
101{
102 unsigned long ip = (unsigned long)(&ftrace_graph_call);
103 u32 old, new;
104
105 old = *(u32 *) &ftrace_graph_call;
106 new = ftrace_call_replace(ip, (unsigned long) &ftrace_graph_caller);
107 return ftrace_modify_code(ip, old, new);
108}
109
110int ftrace_disable_ftrace_graph_caller(void)
111{
112 unsigned long ip = (unsigned long)(&ftrace_graph_call);
113 u32 old, new;
114
115 old = *(u32 *) &ftrace_graph_call;
116 new = ftrace_call_replace(ip, (unsigned long) &ftrace_stub);
117
118 return ftrace_modify_code(ip, old, new);
119}
120
121#endif /* !CONFIG_DYNAMIC_FTRACE */
122
123/*
124 * Hook the return address and push it in the stack of return addrs
125 * in current thread info.
126 */
127unsigned long prepare_ftrace_return(unsigned long parent,
128 unsigned long self_addr,
129 unsigned long frame_pointer)
130{
131 unsigned long return_hooker = (unsigned long) &return_to_handler;
132 struct ftrace_graph_ent trace;
133
134 if (unlikely(atomic_read(&current->tracing_graph_pause)))
135 return parent + 8UL;
136
137 if (ftrace_push_return_trace(parent, self_addr, &trace.depth,
138 frame_pointer) == -EBUSY)
139 return parent + 8UL;
140
141 trace.func = self_addr;
142
143 /* Only trace if the calling function expects to */
144 if (!ftrace_graph_entry(&trace)) {
145 current->curr_ret_stack--;
146 return parent + 8UL;
147 }
148
149 return return_hooker;
150}
151#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
diff --git a/arch/sparc/kernel/helpers.S b/arch/sparc/kernel/helpers.S
index 314dd0c9fc5b..92090cc9e829 100644
--- a/arch/sparc/kernel/helpers.S
+++ b/arch/sparc/kernel/helpers.S
@@ -46,6 +46,81 @@ stack_trace_flush:
46 nop 46 nop
47 .size stack_trace_flush,.-stack_trace_flush 47 .size stack_trace_flush,.-stack_trace_flush
48 48
49#ifdef CONFIG_PERF_EVENTS
50 .globl perf_arch_fetch_caller_regs
51 .type perf_arch_fetch_caller_regs,#function
52perf_arch_fetch_caller_regs:
53 /* We always read the %pstate into %o5 since we will use
54 * that to construct a fake %tstate to store into the regs.
55 */
56 rdpr %pstate, %o5
57 brz,pn %o2, 50f
58 mov %o2, %g7
59
60 /* Turn off interrupts while we walk around the register
61 * window by hand.
62 */
63 wrpr %o5, PSTATE_IE, %pstate
64
65 /* The %canrestore tells us how many register windows are
66 * still live in the chip above us, past that we have to
67 * walk the frame as saved on the stack. We stash away
68 * the %cwp in %g1 so we can return back to the original
69 * register window.
70 */
71 rdpr %cwp, %g1
72 rdpr %canrestore, %g2
73 sub %g1, 1, %g3
74
75 /* We have the skip count in %g7, if it hits zero then
76 * %fp/%i7 are the registers we need. Otherwise if our
77 * %canrestore count maintained in %g2 hits zero we have
78 * to start traversing the stack.
79 */
8010: brz,pn %g2, 4f
81 sub %g2, 1, %g2
82 wrpr %g3, %cwp
83 subcc %g7, 1, %g7
84 bne,pt %xcc, 10b
85 sub %g3, 1, %g3
86
87 /* We found the values we need in the cpu's register
88 * windows.
89 */
90 mov %fp, %g3
91 ba,pt %xcc, 3f
92 mov %i7, %g2
93
9450: mov %fp, %g3
95 ba,pt %xcc, 2f
96 mov %i7, %g2
97
98 /* We hit the end of the valid register windows in the
99 * cpu, start traversing the stack frame.
100 */
1014: mov %fp, %g3
102
10320: ldx [%g3 + STACK_BIAS + RW_V9_I7], %g2
104 subcc %g7, 1, %g7
105 bne,pn %xcc, 20b
106 ldx [%g3 + STACK_BIAS + RW_V9_I6], %g3
107
108 /* Restore the current register window position and
109 * re-enable interrupts.
110 */
1113: wrpr %g1, %cwp
112 wrpr %o5, %pstate
113
1142: stx %g3, [%o0 + PT_V9_FP]
115 sllx %o5, 8, %o5
116 stx %o5, [%o0 + PT_V9_TSTATE]
117 stx %g2, [%o0 + PT_V9_TPC]
118 add %g2, 4, %g2
119 retl
120 stx %g2, [%o0 + PT_V9_TNPC]
121 .size perf_arch_fetch_caller_regs,.-perf_arch_fetch_caller_regs
122#endif /* CONFIG_PERF_EVENTS */
123
49#ifdef CONFIG_SMP 124#ifdef CONFIG_SMP
50 .globl hard_smp_processor_id 125 .globl hard_smp_processor_id
51 .type hard_smp_processor_id,#function 126 .type hard_smp_processor_id,#function
diff --git a/arch/sparc/kernel/hvapi.c b/arch/sparc/kernel/hvapi.c
index 1d272c3b5740..7c60afb835b0 100644
--- a/arch/sparc/kernel/hvapi.c
+++ b/arch/sparc/kernel/hvapi.c
@@ -5,7 +5,6 @@
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/module.h> 6#include <linux/module.h>
7#include <linux/init.h> 7#include <linux/init.h>
8#include <linux/slab.h>
9 8
10#include <asm/hypervisor.h> 9#include <asm/hypervisor.h>
11#include <asm/oplib.h> 10#include <asm/oplib.h>
diff --git a/arch/sparc/kernel/iommu.c b/arch/sparc/kernel/iommu.c
index 8414549c1834..47977a77f6c6 100644
--- a/arch/sparc/kernel/iommu.c
+++ b/arch/sparc/kernel/iommu.c
@@ -6,6 +6,7 @@
6 6
7#include <linux/kernel.h> 7#include <linux/kernel.h>
8#include <linux/module.h> 8#include <linux/module.h>
9#include <linux/slab.h>
9#include <linux/delay.h> 10#include <linux/delay.h>
10#include <linux/device.h> 11#include <linux/device.h>
11#include <linux/dma-mapping.h> 12#include <linux/dma-mapping.h>
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
index e1cbdb94d97b..830d70a3e20b 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -20,7 +20,9 @@
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/proc_fs.h> 21#include <linux/proc_fs.h>
22#include <linux/seq_file.h> 22#include <linux/seq_file.h>
23#include <linux/ftrace.h>
23#include <linux/irq.h> 24#include <linux/irq.h>
25#include <linux/kmemleak.h>
24 26
25#include <asm/ptrace.h> 27#include <asm/ptrace.h>
26#include <asm/processor.h> 28#include <asm/processor.h>
@@ -45,6 +47,7 @@
45 47
46#include "entry.h" 48#include "entry.h"
47#include "cpumap.h" 49#include "cpumap.h"
50#include "kstack.h"
48 51
49#define NUM_IVECS (IMAP_INR + 1) 52#define NUM_IVECS (IMAP_INR + 1)
50 53
@@ -647,6 +650,14 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
647 bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC); 650 bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC);
648 if (unlikely(!bucket)) 651 if (unlikely(!bucket))
649 return 0; 652 return 0;
653
654 /* The only reference we store to the IRQ bucket is
655 * by physical address which kmemleak can't see, tell
656 * it that this object explicitly is not a leak and
657 * should be scanned.
658 */
659 kmemleak_not_leak(bucket);
660
650 __flush_dcache_range((unsigned long) bucket, 661 __flush_dcache_range((unsigned long) bucket,
651 ((unsigned long) bucket + 662 ((unsigned long) bucket +
652 sizeof(struct ino_bucket))); 663 sizeof(struct ino_bucket)));
@@ -703,25 +714,7 @@ void ack_bad_irq(unsigned int virt_irq)
703void *hardirq_stack[NR_CPUS]; 714void *hardirq_stack[NR_CPUS];
704void *softirq_stack[NR_CPUS]; 715void *softirq_stack[NR_CPUS];
705 716
706static __attribute__((always_inline)) void *set_hardirq_stack(void) 717void __irq_entry handler_irq(int irq, struct pt_regs *regs)
707{
708 void *orig_sp, *sp = hardirq_stack[smp_processor_id()];
709
710 __asm__ __volatile__("mov %%sp, %0" : "=r" (orig_sp));
711 if (orig_sp < sp ||
712 orig_sp > (sp + THREAD_SIZE)) {
713 sp += THREAD_SIZE - 192 - STACK_BIAS;
714 __asm__ __volatile__("mov %0, %%sp" : : "r" (sp));
715 }
716
717 return orig_sp;
718}
719static __attribute__((always_inline)) void restore_hardirq_stack(void *orig_sp)
720{
721 __asm__ __volatile__("mov %0, %%sp" : : "r" (orig_sp));
722}
723
724void handler_irq(int irq, struct pt_regs *regs)
725{ 718{
726 unsigned long pstate, bucket_pa; 719 unsigned long pstate, bucket_pa;
727 struct pt_regs *old_regs; 720 struct pt_regs *old_regs;
diff --git a/arch/sparc/kernel/kgdb_64.c b/arch/sparc/kernel/kgdb_64.c
index f5a0fd490b59..0a2bd0f99fc1 100644
--- a/arch/sparc/kernel/kgdb_64.c
+++ b/arch/sparc/kernel/kgdb_64.c
@@ -5,6 +5,7 @@
5 5
6#include <linux/kgdb.h> 6#include <linux/kgdb.h>
7#include <linux/kdebug.h> 7#include <linux/kdebug.h>
8#include <linux/ftrace.h>
8 9
9#include <asm/kdebug.h> 10#include <asm/kdebug.h>
10#include <asm/ptrace.h> 11#include <asm/ptrace.h>
@@ -108,7 +109,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
108} 109}
109 110
110#ifdef CONFIG_SMP 111#ifdef CONFIG_SMP
111void smp_kgdb_capture_client(int irq, struct pt_regs *regs) 112void __irq_entry smp_kgdb_capture_client(int irq, struct pt_regs *regs)
112{ 113{
113 unsigned long flags; 114 unsigned long flags;
114 115
diff --git a/arch/sparc/kernel/kprobes.c b/arch/sparc/kernel/kprobes.c
index 6716584e48ab..a39d1ba5a119 100644
--- a/arch/sparc/kernel/kprobes.c
+++ b/arch/sparc/kernel/kprobes.c
@@ -7,6 +7,7 @@
7#include <linux/kprobes.h> 7#include <linux/kprobes.h>
8#include <linux/module.h> 8#include <linux/module.h>
9#include <linux/kdebug.h> 9#include <linux/kdebug.h>
10#include <linux/slab.h>
10#include <asm/signal.h> 11#include <asm/signal.h>
11#include <asm/cacheflush.h> 12#include <asm/cacheflush.h>
12#include <asm/uaccess.h> 13#include <asm/uaccess.h>
diff --git a/arch/sparc/kernel/kstack.h b/arch/sparc/kernel/kstack.h
index 5247283d1c03..53dfb92e09fb 100644
--- a/arch/sparc/kernel/kstack.h
+++ b/arch/sparc/kernel/kstack.h
@@ -61,4 +61,23 @@ check_magic:
61 61
62} 62}
63 63
64static inline __attribute__((always_inline)) void *set_hardirq_stack(void)
65{
66 void *orig_sp, *sp = hardirq_stack[smp_processor_id()];
67
68 __asm__ __volatile__("mov %%sp, %0" : "=r" (orig_sp));
69 if (orig_sp < sp ||
70 orig_sp > (sp + THREAD_SIZE)) {
71 sp += THREAD_SIZE - 192 - STACK_BIAS;
72 __asm__ __volatile__("mov %0, %%sp" : : "r" (sp));
73 }
74
75 return orig_sp;
76}
77
78static inline __attribute__((always_inline)) void restore_hardirq_stack(void *orig_sp)
79{
80 __asm__ __volatile__("mov %0, %%sp" : : "r" (orig_sp));
81}
82
64#endif /* _KSTACK_H */ 83#endif /* _KSTACK_H */
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c
index 00d034ea2164..3ae36f36e758 100644
--- a/arch/sparc/kernel/led.c
+++ b/arch/sparc/kernel/led.c
@@ -3,6 +3,7 @@
3#include <linux/init.h> 3#include <linux/init.h>
4#include <linux/proc_fs.h> 4#include <linux/proc_fs.h>
5#include <linux/seq_file.h> 5#include <linux/seq_file.h>
6#include <linux/slab.h>
6#include <linux/string.h> 7#include <linux/string.h>
7#include <linux/jiffies.h> 8#include <linux/jiffies.h>
8#include <linux/timer.h> 9#include <linux/timer.h>
diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c
index 0409d62d8ca2..6a7b4dbc8e09 100644
--- a/arch/sparc/kernel/leon_kernel.c
+++ b/arch/sparc/kernel/leon_kernel.c
@@ -7,7 +7,6 @@
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/mutex.h> 9#include <linux/mutex.h>
10#include <linux/slab.h>
11#include <linux/of.h> 10#include <linux/of.h>
12#include <linux/of_platform.h> 11#include <linux/of_platform.h>
13#include <linux/interrupt.h> 12#include <linux/interrupt.h>
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index 85787577f683..e1656fc41ccb 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -22,6 +22,7 @@
22#include <linux/profile.h> 22#include <linux/profile.h>
23#include <linux/pm.h> 23#include <linux/pm.h>
24#include <linux/delay.h> 24#include <linux/delay.h>
25#include <linux/gfp.h>
25 26
26#include <asm/cacheflush.h> 27#include <asm/cacheflush.h>
27#include <asm/tlbflush.h> 28#include <asm/tlbflush.h>
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c
index 0ee642f63234..f848aadf54dc 100644
--- a/arch/sparc/kernel/module.c
+++ b/arch/sparc/kernel/module.c
@@ -9,9 +9,9 @@
9#include <linux/elf.h> 9#include <linux/elf.h>
10#include <linux/vmalloc.h> 10#include <linux/vmalloc.h>
11#include <linux/fs.h> 11#include <linux/fs.h>
12#include <linux/gfp.h>
12#include <linux/string.h> 13#include <linux/string.h>
13#include <linux/ctype.h> 14#include <linux/ctype.h>
14#include <linux/slab.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16 16
17#include <asm/processor.h> 17#include <asm/processor.h>
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c
index b287b62c7ea3..a4bd7ba74c89 100644
--- a/arch/sparc/kernel/nmi.c
+++ b/arch/sparc/kernel/nmi.c
@@ -23,6 +23,8 @@
23#include <asm/ptrace.h> 23#include <asm/ptrace.h>
24#include <asm/pcr.h> 24#include <asm/pcr.h>
25 25
26#include "kstack.h"
27
26/* We don't have a real NMI on sparc64, but we can fake one 28/* We don't have a real NMI on sparc64, but we can fake one
27 * up using profiling counter overflow interrupts and interrupt 29 * up using profiling counter overflow interrupts and interrupt
28 * levels. 30 * levels.
@@ -92,7 +94,7 @@ static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
92notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs) 94notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
93{ 95{
94 unsigned int sum, touched = 0; 96 unsigned int sum, touched = 0;
95 int cpu = smp_processor_id(); 97 void *orig_sp;
96 98
97 clear_softint(1 << irq); 99 clear_softint(1 << irq);
98 100
@@ -100,13 +102,15 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
100 102
101 nmi_enter(); 103 nmi_enter();
102 104
105 orig_sp = set_hardirq_stack();
106
103 if (notify_die(DIE_NMI, "nmi", regs, 0, 107 if (notify_die(DIE_NMI, "nmi", regs, 0,
104 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP) 108 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
105 touched = 1; 109 touched = 1;
106 else 110 else
107 pcr_ops->write(PCR_PIC_PRIV); 111 pcr_ops->write(PCR_PIC_PRIV);
108 112
109 sum = kstat_irqs_cpu(0, cpu); 113 sum = local_cpu_data().irq0_irqs;
110 if (__get_cpu_var(nmi_touch)) { 114 if (__get_cpu_var(nmi_touch)) {
111 __get_cpu_var(nmi_touch) = 0; 115 __get_cpu_var(nmi_touch) = 0;
112 touched = 1; 116 touched = 1;
@@ -125,6 +129,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
125 pcr_ops->write(pcr_enable); 129 pcr_ops->write(pcr_enable);
126 } 130 }
127 131
132 restore_hardirq_stack(orig_sp);
133
128 nmi_exit(); 134 nmi_exit();
129} 135}
130 136
diff --git a/arch/sparc/kernel/of_device_common.c b/arch/sparc/kernel/of_device_common.c
index cb8eb799bb6c..0247e68210b3 100644
--- a/arch/sparc/kernel/of_device_common.c
+++ b/arch/sparc/kernel/of_device_common.c
@@ -4,7 +4,6 @@
4#include <linux/init.h> 4#include <linux/init.h>
5#include <linux/module.h> 5#include <linux/module.h>
6#include <linux/mod_devicetable.h> 6#include <linux/mod_devicetable.h>
7#include <linux/slab.h>
8#include <linux/errno.h> 7#include <linux/errno.h>
9#include <linux/irq.h> 8#include <linux/irq.h>
10#include <linux/of_device.h> 9#include <linux/of_device.h>
diff --git a/arch/sparc/kernel/pci_common.c b/arch/sparc/kernel/pci_common.c
index b775658a927d..8a000583b5cf 100644
--- a/arch/sparc/kernel/pci_common.c
+++ b/arch/sparc/kernel/pci_common.c
@@ -371,14 +371,19 @@ static void pci_register_iommu_region(struct pci_pbm_info *pbm)
371 struct resource *rp = kzalloc(sizeof(*rp), GFP_KERNEL); 371 struct resource *rp = kzalloc(sizeof(*rp), GFP_KERNEL);
372 372
373 if (!rp) { 373 if (!rp) {
374 prom_printf("Cannot allocate IOMMU resource.\n"); 374 pr_info("%s: Cannot allocate IOMMU resource.\n",
375 prom_halt(); 375 pbm->name);
376 return;
376 } 377 }
377 rp->name = "IOMMU"; 378 rp->name = "IOMMU";
378 rp->start = pbm->mem_space.start + (unsigned long) vdma[0]; 379 rp->start = pbm->mem_space.start + (unsigned long) vdma[0];
379 rp->end = rp->start + (unsigned long) vdma[1] - 1UL; 380 rp->end = rp->start + (unsigned long) vdma[1] - 1UL;
380 rp->flags = IORESOURCE_BUSY; 381 rp->flags = IORESOURCE_BUSY;
381 request_resource(&pbm->mem_space, rp); 382 if (request_resource(&pbm->mem_space, rp)) {
383 pr_info("%s: Unable to request IOMMU resource.\n",
384 pbm->name);
385 kfree(rp);
386 }
382 } 387 }
383} 388}
384 389
diff --git a/arch/sparc/kernel/pci_msi.c b/arch/sparc/kernel/pci_msi.c
index e1b0541feb19..e0ef847219c3 100644
--- a/arch/sparc/kernel/pci_msi.c
+++ b/arch/sparc/kernel/pci_msi.c
@@ -4,6 +4,7 @@
4 */ 4 */
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/slab.h>
7#include <linux/irq.h> 8#include <linux/irq.h>
8 9
9#include "pci_impl.h" 10#include "pci_impl.h"
diff --git a/arch/sparc/kernel/pcr.c b/arch/sparc/kernel/pcr.c
index 2d94e7a03af5..c4a6a50b4849 100644
--- a/arch/sparc/kernel/pcr.c
+++ b/arch/sparc/kernel/pcr.c
@@ -8,6 +8,7 @@
8#include <linux/irq.h> 8#include <linux/irq.h>
9 9
10#include <linux/perf_event.h> 10#include <linux/perf_event.h>
11#include <linux/ftrace.h>
11 12
12#include <asm/pil.h> 13#include <asm/pil.h>
13#include <asm/pcr.h> 14#include <asm/pcr.h>
@@ -34,7 +35,7 @@ unsigned int picl_shift;
34 * Therefore in such situations we defer the work by signalling 35 * Therefore in such situations we defer the work by signalling
35 * a lower level cpu IRQ. 36 * a lower level cpu IRQ.
36 */ 37 */
37void deferred_pcr_work_irq(int irq, struct pt_regs *regs) 38void __irq_entry deferred_pcr_work_irq(int irq, struct pt_regs *regs)
38{ 39{
39 struct pt_regs *old_regs; 40 struct pt_regs *old_regs;
40 41
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c
index b867ab3353b4..e2771939341d 100644
--- a/arch/sparc/kernel/perf_event.c
+++ b/arch/sparc/kernel/perf_event.c
@@ -1189,7 +1189,7 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self,
1189 1189
1190 regs = args->regs; 1190 regs = args->regs;
1191 1191
1192 data.addr = 0; 1192 perf_sample_data_init(&data, 0);
1193 1193
1194 cpuc = &__get_cpu_var(cpu_hw_events); 1194 cpuc = &__get_cpu_var(cpu_hw_events);
1195 1195
@@ -1337,7 +1337,7 @@ static void perf_callchain_user_32(struct pt_regs *regs,
1337 callchain_store(entry, PERF_CONTEXT_USER); 1337 callchain_store(entry, PERF_CONTEXT_USER);
1338 callchain_store(entry, regs->tpc); 1338 callchain_store(entry, regs->tpc);
1339 1339
1340 ufp = regs->u_regs[UREG_I6]; 1340 ufp = regs->u_regs[UREG_I6] & 0xffffffffUL;
1341 do { 1341 do {
1342 struct sparc_stackf32 *usf, sf; 1342 struct sparc_stackf32 *usf, sf;
1343 unsigned long pc; 1343 unsigned long pc;
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index c49865b30719..40e29fc8a4d6 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -17,13 +17,13 @@
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/stddef.h> 18#include <linux/stddef.h>
19#include <linux/ptrace.h> 19#include <linux/ptrace.h>
20#include <linux/slab.h>
21#include <linux/user.h> 20#include <linux/user.h>
22#include <linux/smp.h> 21#include <linux/smp.h>
23#include <linux/reboot.h> 22#include <linux/reboot.h>
24#include <linux/delay.h> 23#include <linux/delay.h>
25#include <linux/pm.h> 24#include <linux/pm.h>
26#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/slab.h>
27 27
28#include <asm/auxio.h> 28#include <asm/auxio.h>
29#include <asm/oplib.h> 29#include <asm/oplib.h>
diff --git a/arch/sparc/kernel/ptrace_32.c b/arch/sparc/kernel/ptrace_32.c
index 7e3dfd9bb97e..e608f397e11f 100644
--- a/arch/sparc/kernel/ptrace_32.c
+++ b/arch/sparc/kernel/ptrace_32.c
@@ -65,6 +65,7 @@ static int genregs32_get(struct task_struct *target,
65 *k++ = regs->u_regs[pos++]; 65 *k++ = regs->u_regs[pos++];
66 66
67 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6]; 67 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
68 reg_window -= 16;
68 for (; count > 0 && pos < 32; count--) { 69 for (; count > 0 && pos < 32; count--) {
69 if (get_user(*k++, &reg_window[pos++])) 70 if (get_user(*k++, &reg_window[pos++]))
70 return -EFAULT; 71 return -EFAULT;
@@ -76,6 +77,7 @@ static int genregs32_get(struct task_struct *target,
76 } 77 }
77 78
78 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6]; 79 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
80 reg_window -= 16;
79 for (; count > 0 && pos < 32; count--) { 81 for (; count > 0 && pos < 32; count--) {
80 if (get_user(reg, &reg_window[pos++]) || 82 if (get_user(reg, &reg_window[pos++]) ||
81 put_user(reg, u++)) 83 put_user(reg, u++))
@@ -141,6 +143,7 @@ static int genregs32_set(struct task_struct *target,
141 regs->u_regs[pos++] = *k++; 143 regs->u_regs[pos++] = *k++;
142 144
143 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6]; 145 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
146 reg_window -= 16;
144 for (; count > 0 && pos < 32; count--) { 147 for (; count > 0 && pos < 32; count--) {
145 if (put_user(*k++, &reg_window[pos++])) 148 if (put_user(*k++, &reg_window[pos++]))
146 return -EFAULT; 149 return -EFAULT;
@@ -153,6 +156,7 @@ static int genregs32_set(struct task_struct *target,
153 } 156 }
154 157
155 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6]; 158 reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
159 reg_window -= 16;
156 for (; count > 0 && pos < 32; count--) { 160 for (; count > 0 && pos < 32; count--) {
157 if (get_user(reg, u++) || 161 if (get_user(reg, u++) ||
158 put_user(reg, &reg_window[pos++])) 162 put_user(reg, &reg_window[pos++]))
diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c
index 2f6524d1a817..aa90da08bf61 100644
--- a/arch/sparc/kernel/ptrace_64.c
+++ b/arch/sparc/kernel/ptrace_64.c
@@ -492,6 +492,7 @@ static int genregs32_get(struct task_struct *target,
492 *k++ = regs->u_regs[pos++]; 492 *k++ = regs->u_regs[pos++];
493 493
494 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; 494 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
495 reg_window -= 16;
495 if (target == current) { 496 if (target == current) {
496 for (; count > 0 && pos < 32; count--) { 497 for (; count > 0 && pos < 32; count--) {
497 if (get_user(*k++, &reg_window[pos++])) 498 if (get_user(*k++, &reg_window[pos++]))
@@ -516,6 +517,7 @@ static int genregs32_get(struct task_struct *target,
516 } 517 }
517 518
518 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; 519 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
520 reg_window -= 16;
519 if (target == current) { 521 if (target == current) {
520 for (; count > 0 && pos < 32; count--) { 522 for (; count > 0 && pos < 32; count--) {
521 if (get_user(reg, &reg_window[pos++]) || 523 if (get_user(reg, &reg_window[pos++]) ||
@@ -599,6 +601,7 @@ static int genregs32_set(struct task_struct *target,
599 regs->u_regs[pos++] = *k++; 601 regs->u_regs[pos++] = *k++;
600 602
601 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; 603 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
604 reg_window -= 16;
602 if (target == current) { 605 if (target == current) {
603 for (; count > 0 && pos < 32; count--) { 606 for (; count > 0 && pos < 32; count--) {
604 if (put_user(*k++, &reg_window[pos++])) 607 if (put_user(*k++, &reg_window[pos++]))
@@ -625,6 +628,7 @@ static int genregs32_set(struct task_struct *target,
625 } 628 }
626 629
627 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; 630 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
631 reg_window -= 16;
628 if (target == current) { 632 if (target == current) {
629 for (; count > 0 && pos < 32; count--) { 633 for (; count > 0 && pos < 32; count--) {
630 if (get_user(reg, u++) || 634 if (get_user(reg, u++) ||
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index 83f1873c6c13..090b9e9ad5e3 100644
--- a/arch/sparc/kernel/rtrap_64.S
+++ b/arch/sparc/kernel/rtrap_64.S
@@ -130,7 +130,17 @@ rtrap_xcall:
130 nop 130 nop
131 call trace_hardirqs_on 131 call trace_hardirqs_on
132 nop 132 nop
133 wrpr %l4, %pil 133 /* Do not actually set the %pil here. We will do that
134 * below after we clear PSTATE_IE in the %pstate register.
135 * If we re-enable interrupts here, we can recurse down
136 * the hardirq stack potentially endlessly, causing a
137 * stack overflow.
138 *
139 * It is tempting to put this test and trace_hardirqs_on
140 * call at the 'rt_continue' label, but that will not work
141 * as that path hits unconditionally and we do not want to
142 * execute this in NMI return paths, for example.
143 */
134#endif 144#endif
135rtrap_no_irq_enable: 145rtrap_no_irq_enable:
136 andcc %l1, TSTATE_PRIV, %l3 146 andcc %l1, TSTATE_PRIV, %l3
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
index a2a79e76344f..5f72de67588b 100644
--- a/arch/sparc/kernel/setup_64.c
+++ b/arch/sparc/kernel/setup_64.c
@@ -12,7 +12,6 @@
12#include <linux/stddef.h> 12#include <linux/stddef.h>
13#include <linux/unistd.h> 13#include <linux/unistd.h>
14#include <linux/ptrace.h> 14#include <linux/ptrace.h>
15#include <linux/slab.h>
16#include <asm/smp.h> 15#include <asm/smp.h>
17#include <linux/user.h> 16#include <linux/user.h>
18#include <linux/screen_info.h> 17#include <linux/screen_info.h>
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
index eb14844a0021..b6a2b8f47040 100644
--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -22,7 +22,9 @@
22#include <linux/profile.h> 22#include <linux/profile.h>
23#include <linux/bootmem.h> 23#include <linux/bootmem.h>
24#include <linux/vmalloc.h> 24#include <linux/vmalloc.h>
25#include <linux/ftrace.h>
25#include <linux/cpu.h> 26#include <linux/cpu.h>
27#include <linux/slab.h>
26 28
27#include <asm/head.h> 29#include <asm/head.h>
28#include <asm/ptrace.h> 30#include <asm/ptrace.h>
@@ -822,13 +824,13 @@ void arch_send_call_function_single_ipi(int cpu)
822 &cpumask_of_cpu(cpu)); 824 &cpumask_of_cpu(cpu));
823} 825}
824 826
825void smp_call_function_client(int irq, struct pt_regs *regs) 827void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs)
826{ 828{
827 clear_softint(1 << irq); 829 clear_softint(1 << irq);
828 generic_smp_call_function_interrupt(); 830 generic_smp_call_function_interrupt();
829} 831}
830 832
831void smp_call_function_single_client(int irq, struct pt_regs *regs) 833void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs)
832{ 834{
833 clear_softint(1 << irq); 835 clear_softint(1 << irq);
834 generic_smp_call_function_single_interrupt(); 836 generic_smp_call_function_single_interrupt();
@@ -964,7 +966,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
964 put_cpu(); 966 put_cpu();
965} 967}
966 968
967void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) 969void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
968{ 970{
969 struct mm_struct *mm; 971 struct mm_struct *mm;
970 unsigned long flags; 972 unsigned long flags;
@@ -1148,7 +1150,7 @@ void smp_release(void)
1148 */ 1150 */
1149extern void prom_world(int); 1151extern void prom_world(int);
1150 1152
1151void smp_penguin_jailcell(int irq, struct pt_regs *regs) 1153void __irq_entry smp_penguin_jailcell(int irq, struct pt_regs *regs)
1152{ 1154{
1153 clear_softint(1 << irq); 1155 clear_softint(1 << irq);
1154 1156
@@ -1364,7 +1366,7 @@ void smp_send_reschedule(int cpu)
1364 &cpumask_of_cpu(cpu)); 1366 &cpumask_of_cpu(cpu));
1365} 1367}
1366 1368
1367void smp_receive_signal_client(int irq, struct pt_regs *regs) 1369void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs)
1368{ 1370{
1369 clear_softint(1 << irq); 1371 clear_softint(1 << irq);
1370} 1372}
diff --git a/arch/sparc/kernel/sun4c_irq.c b/arch/sparc/kernel/sun4c_irq.c
index bc3adbf79c6a..892fb884910a 100644
--- a/arch/sparc/kernel/sun4c_irq.c
+++ b/arch/sparc/kernel/sun4c_irq.c
@@ -16,7 +16,6 @@
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/slab.h>
20#include <linux/init.h> 19#include <linux/init.h>
21#include <linux/of.h> 20#include <linux/of.h>
22#include <linux/of_device.h> 21#include <linux/of_device.h>
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c
index 301892e2d718..7f3b97ff62c1 100644
--- a/arch/sparc/kernel/sun4m_irq.c
+++ b/arch/sparc/kernel/sun4m_irq.c
@@ -17,7 +17,6 @@
17#include <linux/ptrace.h> 17#include <linux/ptrace.h>
18#include <linux/smp.h> 18#include <linux/smp.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/slab.h>
21#include <linux/init.h> 20#include <linux/init.h>
22#include <linux/ioport.h> 21#include <linux/ioport.h>
23#include <linux/of.h> 22#include <linux/of.h>
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index daded3b96398..c0ca87553e1c 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -21,7 +21,6 @@
21#include <linux/sem.h> 21#include <linux/sem.h>
22#include <linux/msg.h> 22#include <linux/msg.h>
23#include <linux/shm.h> 23#include <linux/shm.h>
24#include <linux/slab.h>
25#include <linux/uio.h> 24#include <linux/uio.h>
26#include <linux/nfs_fs.h> 25#include <linux/nfs_fs.h>
27#include <linux/quota.h> 26#include <linux/quota.h>
@@ -44,6 +43,7 @@
44#include <linux/compat.h> 43#include <linux/compat.h>
45#include <linux/vfs.h> 44#include <linux/vfs.h>
46#include <linux/ptrace.h> 45#include <linux/ptrace.h>
46#include <linux/slab.h>
47 47
48#include <asm/types.h> 48#include <asm/types.h>
49#include <asm/uaccess.h> 49#include <asm/uaccess.h>
diff --git a/arch/sparc/kernel/sysfs.c b/arch/sparc/kernel/sysfs.c
index ca39c606fe8e..1eb8b00aed75 100644
--- a/arch/sparc/kernel/sysfs.c
+++ b/arch/sparc/kernel/sysfs.c
@@ -107,12 +107,12 @@ static unsigned long run_on_cpu(unsigned long cpu,
107 unsigned long ret; 107 unsigned long ret;
108 108
109 /* should return -EINVAL to userspace */ 109 /* should return -EINVAL to userspace */
110 if (set_cpus_allowed(current, cpumask_of_cpu(cpu))) 110 if (set_cpus_allowed_ptr(current, cpumask_of(cpu)))
111 return 0; 111 return 0;
112 112
113 ret = func(arg); 113 ret = func(arg);
114 114
115 set_cpus_allowed(current, old_affinity); 115 set_cpus_allowed_ptr(current, &old_affinity);
116 116
117 return ret; 117 return ret;
118} 118}
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c
index 67e165102885..c7bbe6cf7b85 100644
--- a/arch/sparc/kernel/time_64.c
+++ b/arch/sparc/kernel/time_64.c
@@ -35,6 +35,7 @@
35#include <linux/clocksource.h> 35#include <linux/clocksource.h>
36#include <linux/of_device.h> 36#include <linux/of_device.h>
37#include <linux/platform_device.h> 37#include <linux/platform_device.h>
38#include <linux/ftrace.h>
38 39
39#include <asm/oplib.h> 40#include <asm/oplib.h>
40#include <asm/timer.h> 41#include <asm/timer.h>
@@ -717,7 +718,7 @@ static struct clock_event_device sparc64_clockevent = {
717}; 718};
718static DEFINE_PER_CPU(struct clock_event_device, sparc64_events); 719static DEFINE_PER_CPU(struct clock_event_device, sparc64_events);
719 720
720void timer_interrupt(int irq, struct pt_regs *regs) 721void __irq_entry timer_interrupt(int irq, struct pt_regs *regs)
721{ 722{
722 struct pt_regs *old_regs = set_irq_regs(regs); 723 struct pt_regs *old_regs = set_irq_regs(regs);
723 unsigned long tick_mask = tick_ops->softint_mask; 724 unsigned long tick_mask = tick_ops->softint_mask;
@@ -728,6 +729,7 @@ void timer_interrupt(int irq, struct pt_regs *regs)
728 729
729 irq_enter(); 730 irq_enter();
730 731
732 local_cpu_data().irq0_irqs++;
731 kstat_incr_irqs_this_cpu(0, irq_to_desc(0)); 733 kstat_incr_irqs_this_cpu(0, irq_to_desc(0));
732 734
733 if (unlikely(!evt->event_handler)) { 735 if (unlikely(!evt->event_handler)) {
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
index bdc05a21908b..9da57f032983 100644
--- a/arch/sparc/kernel/traps_64.c
+++ b/arch/sparc/kernel/traps_64.c
@@ -17,6 +17,7 @@
17#include <linux/mm.h> 17#include <linux/mm.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/kdebug.h> 19#include <linux/kdebug.h>
20#include <linux/gfp.h>
20 21
21#include <asm/smp.h> 22#include <asm/smp.h>
22#include <asm/delay.h> 23#include <asm/delay.h>
@@ -2202,27 +2203,6 @@ void dump_stack(void)
2202 2203
2203EXPORT_SYMBOL(dump_stack); 2204EXPORT_SYMBOL(dump_stack);
2204 2205
2205static inline int is_kernel_stack(struct task_struct *task,
2206 struct reg_window *rw)
2207{
2208 unsigned long rw_addr = (unsigned long) rw;
2209 unsigned long thread_base, thread_end;
2210
2211 if (rw_addr < PAGE_OFFSET) {
2212 if (task != &init_task)
2213 return 0;
2214 }
2215
2216 thread_base = (unsigned long) task_stack_page(task);
2217 thread_end = thread_base + sizeof(union thread_union);
2218 if (rw_addr >= thread_base &&
2219 rw_addr < thread_end &&
2220 !(rw_addr & 0x7UL))
2221 return 1;
2222
2223 return 0;
2224}
2225
2226static inline struct reg_window *kernel_stack_up(struct reg_window *rw) 2206static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
2227{ 2207{
2228 unsigned long fp = rw->ins[6]; 2208 unsigned long fp = rw->ins[6];
@@ -2251,6 +2231,7 @@ void die_if_kernel(char *str, struct pt_regs *regs)
2251 show_regs(regs); 2231 show_regs(regs);
2252 add_taint(TAINT_DIE); 2232 add_taint(TAINT_DIE);
2253 if (regs->tstate & TSTATE_PRIV) { 2233 if (regs->tstate & TSTATE_PRIV) {
2234 struct thread_info *tp = current_thread_info();
2254 struct reg_window *rw = (struct reg_window *) 2235 struct reg_window *rw = (struct reg_window *)
2255 (regs->u_regs[UREG_FP] + STACK_BIAS); 2236 (regs->u_regs[UREG_FP] + STACK_BIAS);
2256 2237
@@ -2258,8 +2239,8 @@ void die_if_kernel(char *str, struct pt_regs *regs)
2258 * find some badly aligned kernel stack. 2239 * find some badly aligned kernel stack.
2259 */ 2240 */
2260 while (rw && 2241 while (rw &&
2261 count++ < 30&& 2242 count++ < 30 &&
2262 is_kernel_stack(current, rw)) { 2243 kstack_valid(tp, (unsigned long) rw)) {
2263 printk("Caller[%016lx]: %pS\n", rw->ins[7], 2244 printk("Caller[%016lx]: %pS\n", rw->ins[7],
2264 (void *) rw->ins[7]); 2245 (void *) rw->ins[7]);
2265 2246
diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
index ebce43018c49..c752c4c479bd 100644
--- a/arch/sparc/kernel/unaligned_64.c
+++ b/arch/sparc/kernel/unaligned_64.c
@@ -50,7 +50,7 @@ static inline enum direction decode_direction(unsigned int insn)
50} 50}
51 51
52/* 16 = double-word, 8 = extra-word, 4 = word, 2 = half-word */ 52/* 16 = double-word, 8 = extra-word, 4 = word, 2 = half-word */
53static inline int decode_access_size(unsigned int insn) 53static inline int decode_access_size(struct pt_regs *regs, unsigned int insn)
54{ 54{
55 unsigned int tmp; 55 unsigned int tmp;
56 56
@@ -66,7 +66,7 @@ static inline int decode_access_size(unsigned int insn)
66 return 2; 66 return 2;
67 else { 67 else {
68 printk("Impossible unaligned trap. insn=%08x\n", insn); 68 printk("Impossible unaligned trap. insn=%08x\n", insn);
69 die_if_kernel("Byte sized unaligned access?!?!", current_thread_info()->kregs); 69 die_if_kernel("Byte sized unaligned access?!?!", regs);
70 70
71 /* GCC should never warn that control reaches the end 71 /* GCC should never warn that control reaches the end
72 * of this function without returning a value because 72 * of this function without returning a value because
@@ -286,7 +286,7 @@ static void log_unaligned(struct pt_regs *regs)
286asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn) 286asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn)
287{ 287{
288 enum direction dir = decode_direction(insn); 288 enum direction dir = decode_direction(insn);
289 int size = decode_access_size(insn); 289 int size = decode_access_size(regs, insn);
290 int orig_asi, asi; 290 int orig_asi, asi;
291 291
292 current_thread_info()->kern_una_regs = regs; 292 current_thread_info()->kern_una_regs = regs;
diff --git a/arch/sparc/kernel/us2e_cpufreq.c b/arch/sparc/kernel/us2e_cpufreq.c
index 791c15138f3a..8f982b76c712 100644
--- a/arch/sparc/kernel/us2e_cpufreq.c
+++ b/arch/sparc/kernel/us2e_cpufreq.c
@@ -238,12 +238,12 @@ static unsigned int us2e_freq_get(unsigned int cpu)
238 return 0; 238 return 0;
239 239
240 cpus_allowed = current->cpus_allowed; 240 cpus_allowed = current->cpus_allowed;
241 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 241 set_cpus_allowed_ptr(current, cpumask_of(cpu));
242 242
243 clock_tick = sparc64_get_clock_tick(cpu) / 1000; 243 clock_tick = sparc64_get_clock_tick(cpu) / 1000;
244 estar = read_hbreg(HBIRD_ESTAR_MODE_ADDR); 244 estar = read_hbreg(HBIRD_ESTAR_MODE_ADDR);
245 245
246 set_cpus_allowed(current, cpus_allowed); 246 set_cpus_allowed_ptr(current, &cpus_allowed);
247 247
248 return clock_tick / estar_to_divisor(estar); 248 return clock_tick / estar_to_divisor(estar);
249} 249}
@@ -259,7 +259,7 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
259 return; 259 return;
260 260
261 cpus_allowed = current->cpus_allowed; 261 cpus_allowed = current->cpus_allowed;
262 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 262 set_cpus_allowed_ptr(current, cpumask_of(cpu));
263 263
264 new_freq = clock_tick = sparc64_get_clock_tick(cpu) / 1000; 264 new_freq = clock_tick = sparc64_get_clock_tick(cpu) / 1000;
265 new_bits = index_to_estar_mode(index); 265 new_bits = index_to_estar_mode(index);
@@ -281,7 +281,7 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
281 281
282 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 282 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
283 283
284 set_cpus_allowed(current, cpus_allowed); 284 set_cpus_allowed_ptr(current, &cpus_allowed);
285} 285}
286 286
287static int us2e_freq_target(struct cpufreq_policy *policy, 287static int us2e_freq_target(struct cpufreq_policy *policy,
diff --git a/arch/sparc/kernel/us3_cpufreq.c b/arch/sparc/kernel/us3_cpufreq.c
index 365b6464e2ce..f35d1e794548 100644
--- a/arch/sparc/kernel/us3_cpufreq.c
+++ b/arch/sparc/kernel/us3_cpufreq.c
@@ -86,12 +86,12 @@ static unsigned int us3_freq_get(unsigned int cpu)
86 return 0; 86 return 0;
87 87
88 cpus_allowed = current->cpus_allowed; 88 cpus_allowed = current->cpus_allowed;
89 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 89 set_cpus_allowed_ptr(current, cpumask_of(cpu));
90 90
91 reg = read_safari_cfg(); 91 reg = read_safari_cfg();
92 ret = get_current_freq(cpu, reg); 92 ret = get_current_freq(cpu, reg);
93 93
94 set_cpus_allowed(current, cpus_allowed); 94 set_cpus_allowed_ptr(current, &cpus_allowed);
95 95
96 return ret; 96 return ret;
97} 97}
@@ -106,7 +106,7 @@ static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
106 return; 106 return;
107 107
108 cpus_allowed = current->cpus_allowed; 108 cpus_allowed = current->cpus_allowed;
109 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 109 set_cpus_allowed_ptr(current, cpumask_of(cpu));
110 110
111 new_freq = sparc64_get_clock_tick(cpu) / 1000; 111 new_freq = sparc64_get_clock_tick(cpu) / 1000;
112 switch (index) { 112 switch (index) {
@@ -140,7 +140,7 @@ static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
140 140
141 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 141 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
142 142
143 set_cpus_allowed(current, cpus_allowed); 143 set_cpus_allowed_ptr(current, &cpus_allowed);
144} 144}
145 145
146static int us3_freq_target(struct cpufreq_policy *policy, 146static int us3_freq_target(struct cpufreq_policy *policy,
diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c
index c28c71449a6c..3cb1def9806c 100644
--- a/arch/sparc/kernel/vio.c
+++ b/arch/sparc/kernel/vio.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/slab.h>
13#include <linux/irq.h> 14#include <linux/irq.h>
14#include <linux/init.h> 15#include <linux/init.h>
15 16
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index 4e5992593967..0c1e6783657f 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -46,11 +46,16 @@ SECTIONS
46 SCHED_TEXT 46 SCHED_TEXT
47 LOCK_TEXT 47 LOCK_TEXT
48 KPROBES_TEXT 48 KPROBES_TEXT
49 IRQENTRY_TEXT
49 *(.gnu.warning) 50 *(.gnu.warning)
50 } = 0 51 } = 0
51 _etext = .; 52 _etext = .;
52 53
53 RO_DATA(PAGE_SIZE) 54 RO_DATA(PAGE_SIZE)
55
56 /* Start of data section */
57 _sdata = .;
58
54 .data1 : { 59 .data1 : {
55 *(.data1) 60 *(.data1)
56 } 61 }
diff --git a/arch/sparc/lib/mcount.S b/arch/sparc/lib/mcount.S
index 24b8b12deed2..3ad6cbdc2163 100644
--- a/arch/sparc/lib/mcount.S
+++ b/arch/sparc/lib/mcount.S
@@ -7,26 +7,11 @@
7 7
8#include <linux/linkage.h> 8#include <linux/linkage.h>
9 9
10#include <asm/ptrace.h>
11#include <asm/thread_info.h>
12
13/* 10/*
14 * This is the main variant and is called by C code. GCC's -pg option 11 * This is the main variant and is called by C code. GCC's -pg option
15 * automatically instruments every C function with a call to this. 12 * automatically instruments every C function with a call to this.
16 */ 13 */
17 14
18#ifdef CONFIG_STACK_DEBUG
19
20#define OVSTACKSIZE 4096 /* lets hope this is enough */
21
22 .data
23 .align 8
24panicstring:
25 .asciz "Stack overflow\n"
26 .align 8
27ovstack:
28 .skip OVSTACKSIZE
29#endif
30 .text 15 .text
31 .align 32 16 .align 32
32 .globl _mcount 17 .globl _mcount
@@ -35,84 +20,48 @@ ovstack:
35 .type mcount,#function 20 .type mcount,#function
36_mcount: 21_mcount:
37mcount: 22mcount:
38#ifdef CONFIG_STACK_DEBUG
39 /*
40 * Check whether %sp is dangerously low.
41 */
42 ldub [%g6 + TI_FPDEPTH], %g1
43 srl %g1, 1, %g3
44 add %g3, 1, %g3
45 sllx %g3, 8, %g3 ! each fpregs frame is 256b
46 add %g3, 192, %g3
47 add %g6, %g3, %g3 ! where does task_struct+frame end?
48 sub %g3, STACK_BIAS, %g3
49 cmp %sp, %g3
50 bg,pt %xcc, 1f
51 nop
52 lduh [%g6 + TI_CPU], %g1
53 sethi %hi(hardirq_stack), %g3
54 or %g3, %lo(hardirq_stack), %g3
55 sllx %g1, 3, %g1
56 ldx [%g3 + %g1], %g7
57 sub %g7, STACK_BIAS, %g7
58 cmp %sp, %g7
59 bleu,pt %xcc, 2f
60 sethi %hi(THREAD_SIZE), %g3
61 add %g7, %g3, %g7
62 cmp %sp, %g7
63 blu,pn %xcc, 1f
642: sethi %hi(softirq_stack), %g3
65 or %g3, %lo(softirq_stack), %g3
66 ldx [%g3 + %g1], %g7
67 sub %g7, STACK_BIAS, %g7
68 cmp %sp, %g7
69 bleu,pt %xcc, 3f
70 sethi %hi(THREAD_SIZE), %g3
71 add %g7, %g3, %g7
72 cmp %sp, %g7
73 blu,pn %xcc, 1f
74 nop
75 /* If we are already on ovstack, don't hop onto it
76 * again, we are already trying to output the stack overflow
77 * message.
78 */
793: sethi %hi(ovstack), %g7 ! cant move to panic stack fast enough
80 or %g7, %lo(ovstack), %g7
81 add %g7, OVSTACKSIZE, %g3
82 sub %g3, STACK_BIAS + 192, %g3
83 sub %g7, STACK_BIAS, %g7
84 cmp %sp, %g7
85 blu,pn %xcc, 2f
86 cmp %sp, %g3
87 bleu,pn %xcc, 1f
88 nop
892: mov %g3, %sp
90 sethi %hi(panicstring), %g3
91 call prom_printf
92 or %g3, %lo(panicstring), %o0
93 call prom_halt
94 nop
951:
96#endif
97#ifdef CONFIG_FUNCTION_TRACER 23#ifdef CONFIG_FUNCTION_TRACER
98#ifdef CONFIG_DYNAMIC_FTRACE 24#ifdef CONFIG_DYNAMIC_FTRACE
99 mov %o7, %o0 25 /* Do nothing, the retl/nop below is all we need. */
100 .globl mcount_call
101mcount_call:
102 call ftrace_stub
103 mov %o0, %o7
104#else 26#else
105 sethi %hi(ftrace_trace_function), %g1 27 sethi %hi(function_trace_stop), %g1
28 lduw [%g1 + %lo(function_trace_stop)], %g2
29 brnz,pn %g2, 2f
30 sethi %hi(ftrace_trace_function), %g1
106 sethi %hi(ftrace_stub), %g2 31 sethi %hi(ftrace_stub), %g2
107 ldx [%g1 + %lo(ftrace_trace_function)], %g1 32 ldx [%g1 + %lo(ftrace_trace_function)], %g1
108 or %g2, %lo(ftrace_stub), %g2 33 or %g2, %lo(ftrace_stub), %g2
109 cmp %g1, %g2 34 cmp %g1, %g2
110 be,pn %icc, 1f 35 be,pn %icc, 1f
111 mov %i7, %o1 36 mov %i7, %g3
112 jmpl %g1, %g0 37 save %sp, -176, %sp
113 mov %o7, %o0 38 mov %g3, %o1
39 jmpl %g1, %o7
40 mov %i7, %o0
41 ret
42 restore
114 /* not reached */ 43 /* not reached */
1151: 441:
45#ifdef CONFIG_FUNCTION_GRAPH_TRACER
46 sethi %hi(ftrace_graph_return), %g1
47 ldx [%g1 + %lo(ftrace_graph_return)], %g3
48 cmp %g2, %g3
49 bne,pn %xcc, 5f
50 sethi %hi(ftrace_graph_entry_stub), %g2
51 sethi %hi(ftrace_graph_entry), %g1
52 or %g2, %lo(ftrace_graph_entry_stub), %g2
53 ldx [%g1 + %lo(ftrace_graph_entry)], %g1
54 cmp %g1, %g2
55 be,pt %xcc, 2f
56 nop
575: mov %i7, %g2
58 mov %fp, %g3
59 save %sp, -176, %sp
60 mov %g2, %l0
61 ba,pt %xcc, ftrace_graph_caller
62 mov %g3, %l1
63#endif
642:
116#endif 65#endif
117#endif 66#endif
118 retl 67 retl
@@ -131,14 +80,50 @@ ftrace_stub:
131 .globl ftrace_caller 80 .globl ftrace_caller
132 .type ftrace_caller,#function 81 .type ftrace_caller,#function
133ftrace_caller: 82ftrace_caller:
134 mov %i7, %o1 83 sethi %hi(function_trace_stop), %g1
135 mov %o7, %o0 84 mov %i7, %g2
85 lduw [%g1 + %lo(function_trace_stop)], %g1
86 brnz,pn %g1, ftrace_stub
87 mov %fp, %g3
88 save %sp, -176, %sp
89 mov %g2, %o1
90 mov %g2, %l0
91 mov %g3, %l1
136 .globl ftrace_call 92 .globl ftrace_call
137ftrace_call: 93ftrace_call:
138 call ftrace_stub 94 call ftrace_stub
139 mov %o0, %o7 95 mov %i7, %o0
140 retl 96#ifdef CONFIG_FUNCTION_GRAPH_TRACER
97 .globl ftrace_graph_call
98ftrace_graph_call:
99 call ftrace_stub
141 nop 100 nop
101#endif
102 ret
103 restore
104#ifdef CONFIG_FUNCTION_GRAPH_TRACER
105 .size ftrace_graph_call,.-ftrace_graph_call
106#endif
107 .size ftrace_call,.-ftrace_call
142 .size ftrace_caller,.-ftrace_caller 108 .size ftrace_caller,.-ftrace_caller
143#endif 109#endif
144#endif 110#endif
111
112#ifdef CONFIG_FUNCTION_GRAPH_TRACER
113ENTRY(ftrace_graph_caller)
114 mov %l0, %o0
115 mov %i7, %o1
116 call prepare_ftrace_return
117 mov %l1, %o2
118 ret
119 restore %o0, -8, %i7
120END(ftrace_graph_caller)
121
122ENTRY(return_to_handler)
123 save %sp, -176, %sp
124 call ftrace_return_to_handler
125 mov %fp, %o0
126 jmpl %o0 + 8, %g0
127 restore
128END(return_to_handler)
129#endif
diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
index f27d10369e0c..5fdddf134caa 100644
--- a/arch/sparc/mm/hugetlbpage.c
+++ b/arch/sparc/mm/hugetlbpage.c
@@ -10,7 +10,6 @@
10#include <linux/mm.h> 10#include <linux/mm.h>
11#include <linux/hugetlb.h> 11#include <linux/hugetlb.h>
12#include <linux/pagemap.h> 12#include <linux/pagemap.h>
13#include <linux/slab.h>
14#include <linux/sysctl.h> 13#include <linux/sysctl.h>
15 14
16#include <asm/mman.h> 15#include <asm/mman.h>
diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c
index dc7c3b17a15f..6d0e02c4fe09 100644
--- a/arch/sparc/mm/init_32.c
+++ b/arch/sparc/mm/init_32.c
@@ -24,6 +24,7 @@
24#include <linux/bootmem.h> 24#include <linux/bootmem.h>
25#include <linux/pagemap.h> 25#include <linux/pagemap.h>
26#include <linux/poison.h> 26#include <linux/poison.h>
27#include <linux/gfp.h>
27 28
28#include <asm/sections.h> 29#include <asm/sections.h>
29#include <asm/system.h> 30#include <asm/system.h>
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 9245a822a2f1..b2831dc3c121 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -13,7 +13,6 @@
13#include <linux/bootmem.h> 13#include <linux/bootmem.h>
14#include <linux/mm.h> 14#include <linux/mm.h>
15#include <linux/hugetlb.h> 15#include <linux/hugetlb.h>
16#include <linux/slab.h>
17#include <linux/initrd.h> 16#include <linux/initrd.h>
18#include <linux/swap.h> 17#include <linux/swap.h>
19#include <linux/pagemap.h> 18#include <linux/pagemap.h>
@@ -26,6 +25,7 @@
26#include <linux/percpu.h> 25#include <linux/percpu.h>
27#include <linux/lmb.h> 26#include <linux/lmb.h>
28#include <linux/mmzone.h> 27#include <linux/mmzone.h>
28#include <linux/gfp.h>
29 29
30#include <asm/head.h> 30#include <asm/head.h>
31#include <asm/system.h> 31#include <asm/system.h>
@@ -2117,7 +2117,7 @@ int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node)
2117 "node=%d entry=%lu/%lu\n", start, block, nr, 2117 "node=%d entry=%lu/%lu\n", start, block, nr,
2118 node, 2118 node,
2119 addr >> VMEMMAP_CHUNK_SHIFT, 2119 addr >> VMEMMAP_CHUNK_SHIFT,
2120 VMEMMAP_SIZE >> VMEMMAP_CHUNK_SHIFT); 2120 VMEMMAP_SIZE);
2121 } 2121 }
2122 } 2122 }
2123 return 0; 2123 return 0;
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index df49b200ca4c..f5f75a58e0b3 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -10,7 +10,6 @@
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/slab.h>
14#include <linux/vmalloc.h> 13#include <linux/vmalloc.h>
15#include <linux/pagemap.h> 14#include <linux/pagemap.h>
16#include <linux/init.h> 15#include <linux/init.h>
@@ -20,6 +19,7 @@
20#include <linux/seq_file.h> 19#include <linux/seq_file.h>
21#include <linux/kdebug.h> 20#include <linux/kdebug.h>
22#include <linux/log2.h> 21#include <linux/log2.h>
22#include <linux/gfp.h>
23 23
24#include <asm/bitext.h> 24#include <asm/bitext.h>
25#include <asm/page.h> 25#include <asm/page.h>
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
index 18652534b91a..cf38846753dd 100644
--- a/arch/sparc/mm/sun4c.c
+++ b/arch/sparc/mm/sun4c.c
@@ -12,6 +12,7 @@
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/slab.h>
15#include <linux/bootmem.h> 16#include <linux/bootmem.h>
16#include <linux/highmem.h> 17#include <linux/highmem.h>
17#include <linux/fs.h> 18#include <linux/fs.h>
diff --git a/arch/sparc/mm/tsb.c b/arch/sparc/mm/tsb.c
index 36a0813f9517..101d7c82870b 100644
--- a/arch/sparc/mm/tsb.c
+++ b/arch/sparc/mm/tsb.c
@@ -5,6 +5,7 @@
5 5
6#include <linux/kernel.h> 6#include <linux/kernel.h>
7#include <linux/preempt.h> 7#include <linux/preempt.h>
8#include <linux/slab.h>
8#include <asm/system.h> 9#include <asm/system.h>
9#include <asm/page.h> 10#include <asm/page.h>
10#include <asm/tlbflush.h> 11#include <asm/tlbflush.h>
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index a74245ae3a84..f05372694233 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -16,6 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/rtnetlink.h> 17#include <linux/rtnetlink.h>
18#include <linux/skbuff.h> 18#include <linux/skbuff.h>
19#include <linux/slab.h>
19#include <linux/spinlock.h> 20#include <linux/spinlock.h>
20#include "init.h" 21#include "init.h"
21#include "irq_kern.h" 22#include "irq_kern.h"
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index 4ebc8a34738f..a11573be0961 100644
--- a/arch/um/drivers/port_kern.c
+++ b/arch/um/drivers/port_kern.c
@@ -7,6 +7,7 @@
7#include "linux/interrupt.h" 7#include "linux/interrupt.h"
8#include "linux/list.h" 8#include "linux/list.h"
9#include "linux/mutex.h" 9#include "linux/mutex.h"
10#include "linux/slab.h"
10#include "linux/workqueue.h" 11#include "linux/workqueue.h"
11#include "asm/atomic.h" 12#include "asm/atomic.h"
12#include "init.h" 13#include "init.h"
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index c1ff6903b622..da992a3ad6b7 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -31,6 +31,7 @@
31#include "linux/ctype.h" 31#include "linux/ctype.h"
32#include "linux/capability.h" 32#include "linux/capability.h"
33#include "linux/mm.h" 33#include "linux/mm.h"
34#include "linux/slab.h"
34#include "linux/vmalloc.h" 35#include "linux/vmalloc.h"
35#include "linux/blkpg.h" 36#include "linux/blkpg.h"
36#include "linux/genhd.h" 37#include "linux/genhd.h"
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index fda30d21fb90..97974c1bdd12 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -8,6 +8,7 @@
8#include "linux/smp_lock.h" 8#include "linux/smp_lock.h"
9#include "linux/ptrace.h" 9#include "linux/ptrace.h"
10#include "linux/sched.h" 10#include "linux/sched.h"
11#include "linux/slab.h"
11#include "asm/current.h" 12#include "asm/current.h"
12#include "asm/processor.h" 13#include "asm/processor.h"
13#include "asm/uaccess.h" 14#include "asm/uaccess.h"
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 89474ba0741e..a3f0b04d7101 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -12,6 +12,7 @@
12#include "linux/module.h" 12#include "linux/module.h"
13#include "linux/sched.h" 13#include "linux/sched.h"
14#include "linux/seq_file.h" 14#include "linux/seq_file.h"
15#include "linux/slab.h"
15#include "as-layout.h" 16#include "as-layout.h"
16#include "kern_util.h" 17#include "kern_util.h"
17#include "os.h" 18#include "os.h"
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index a5d5e70cf6f5..8137ccc9635b 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -5,10 +5,10 @@
5 5
6#include <linux/stddef.h> 6#include <linux/stddef.h>
7#include <linux/bootmem.h> 7#include <linux/bootmem.h>
8#include <linux/gfp.h>
9#include <linux/highmem.h> 8#include <linux/highmem.h>
10#include <linux/mm.h> 9#include <linux/mm.h>
11#include <linux/swap.h> 10#include <linux/swap.h>
11#include <linux/slab.h>
12#include <asm/fixmap.h> 12#include <asm/fixmap.h>
13#include <asm/page.h> 13#include <asm/page.h>
14#include "as-layout.h" 14#include "as-layout.h"
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index 2f910a1b7454..fab4371184f6 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -7,13 +7,13 @@
7#include <linux/stddef.h> 7#include <linux/stddef.h>
8#include <linux/err.h> 8#include <linux/err.h>
9#include <linux/hardirq.h> 9#include <linux/hardirq.h>
10#include <linux/gfp.h>
11#include <linux/mm.h> 10#include <linux/mm.h>
12#include <linux/module.h> 11#include <linux/module.h>
13#include <linux/personality.h> 12#include <linux/personality.h>
14#include <linux/proc_fs.h> 13#include <linux/proc_fs.h>
15#include <linux/ptrace.h> 14#include <linux/ptrace.h>
16#include <linux/random.h> 15#include <linux/random.h>
16#include <linux/slab.h>
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/seq_file.h> 18#include <linux/seq_file.h>
19#include <linux/tick.h> 19#include <linux/tick.h>
diff --git a/arch/um/kernel/reboot.c b/arch/um/kernel/reboot.c
index 00197d3d21ec..869bec9f2516 100644
--- a/arch/um/kernel/reboot.c
+++ b/arch/um/kernel/reboot.c
@@ -4,6 +4,7 @@
4 */ 4 */
5 5
6#include "linux/sched.h" 6#include "linux/sched.h"
7#include "linux/slab.h"
7#include "kern_util.h" 8#include "kern_util.h"
8#include "os.h" 9#include "os.h"
9#include "skas.h" 10#include "skas.h"
diff --git a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c
index 8bfd1e905812..3d099f974785 100644
--- a/arch/um/kernel/skas/mmu.c
+++ b/arch/um/kernel/skas/mmu.c
@@ -5,6 +5,7 @@
5 5
6#include "linux/mm.h" 6#include "linux/mm.h"
7#include "linux/sched.h" 7#include "linux/sched.h"
8#include "linux/slab.h"
8#include "asm/pgalloc.h" 9#include "asm/pgalloc.h"
9#include "asm/pgtable.h" 10#include "asm/pgtable.h"
10#include "as-layout.h" 11#include "as-layout.h"
diff --git a/arch/um/os-Linux/helper.c b/arch/um/os-Linux/helper.c
index b6b1096152aa..06d6ccf0e444 100644
--- a/arch/um/os-Linux/helper.c
+++ b/arch/um/os-Linux/helper.c
@@ -8,6 +8,7 @@
8#include <errno.h> 8#include <errno.h>
9#include <sched.h> 9#include <sched.h>
10#include <linux/limits.h> 10#include <linux/limits.h>
11#include <linux/slab.h>
11#include <sys/socket.h> 12#include <sys/socket.h>
12#include <sys/wait.h> 13#include <sys/wait.h>
13#include "kern_constants.h" 14#include "kern_constants.h"
diff --git a/arch/um/sys-i386/ldt.c b/arch/um/sys-i386/ldt.c
index a4846a84a7be..3f2bf208d884 100644
--- a/arch/um/sys-i386/ldt.c
+++ b/arch/um/sys-i386/ldt.c
@@ -5,6 +5,7 @@
5 5
6#include <linux/mm.h> 6#include <linux/mm.h>
7#include <linux/sched.h> 7#include <linux/sched.h>
8#include <linux/slab.h>
8#include <asm/unistd.h> 9#include <asm/unistd.h>
9#include "os.h" 10#include "os.h"
10#include "proc_mm.h" 11#include "proc_mm.h"
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 93936de67796..9458685902bd 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -662,7 +662,7 @@ config GART_IOMMU
662 bool "GART IOMMU support" if EMBEDDED 662 bool "GART IOMMU support" if EMBEDDED
663 default y 663 default y
664 select SWIOTLB 664 select SWIOTLB
665 depends on X86_64 && PCI 665 depends on X86_64 && PCI && K8_NB
666 ---help--- 666 ---help---
667 Support for full DMA access of devices with 32bit memory access only 667 Support for full DMA access of devices with 32bit memory access only
668 on systems with more than 3GB. This is usually needed for USB, 668 on systems with more than 3GB. This is usually needed for USB,
@@ -1216,8 +1216,8 @@ config NUMA_EMU
1216 1216
1217config NODES_SHIFT 1217config NODES_SHIFT
1218 int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP 1218 int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
1219 range 1 9 1219 range 1 10
1220 default "9" if MAXSMP 1220 default "10" if MAXSMP
1221 default "6" if X86_64 1221 default "6" if X86_64
1222 default "4" if X86_NUMAQ 1222 default "4" if X86_NUMAQ
1223 default "3" 1223 default "3"
@@ -2061,7 +2061,7 @@ endif # X86_32
2061 2061
2062config K8_NB 2062config K8_NB
2063 def_bool y 2063 def_bool y
2064 depends on AGP_AMD64 || (X86_64 && (GART_IOMMU || (PCI && NUMA))) 2064 depends on CPU_SUP_AMD && PCI
2065 2065
2066source "drivers/pcmcia/Kconfig" 2066source "drivers/pcmcia/Kconfig"
2067 2067
diff --git a/arch/x86/crypto/fpu.c b/arch/x86/crypto/fpu.c
index daef6cd2b45d..1a8f8649c035 100644
--- a/arch/x86/crypto/fpu.c
+++ b/arch/x86/crypto/fpu.c
@@ -16,6 +16,7 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/slab.h>
19#include <asm/i387.h> 20#include <asm/i387.h>
20 21
21struct crypto_fpu_ctx { 22struct crypto_fpu_ctx {
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index 280c019cfad8..0350311906ae 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -21,7 +21,6 @@
21#include <linux/fcntl.h> 21#include <linux/fcntl.h>
22#include <linux/ptrace.h> 22#include <linux/ptrace.h>
23#include <linux/user.h> 23#include <linux/user.h>
24#include <linux/slab.h>
25#include <linux/binfmts.h> 24#include <linux/binfmts.h>
26#include <linux/personality.h> 25#include <linux/personality.h>
27#include <linux/init.h> 26#include <linux/init.h>
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 59b4556a5b92..e790bc1fbfa3 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -626,7 +626,7 @@ ia32_sys_call_table:
626 .quad stub32_sigreturn 626 .quad stub32_sigreturn
627 .quad stub32_clone /* 120 */ 627 .quad stub32_clone /* 120 */
628 .quad sys_setdomainname 628 .quad sys_setdomainname
629 .quad sys_uname 629 .quad sys_newuname
630 .quad sys_modify_ldt 630 .quad sys_modify_ldt
631 .quad compat_sys_adjtimex 631 .quad compat_sys_adjtimex
632 .quad sys32_mprotect /* 125 */ 632 .quad sys32_mprotect /* 125 */
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index 74c35431b7d8..626be156d88d 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -40,6 +40,7 @@
40#include <linux/ptrace.h> 40#include <linux/ptrace.h>
41#include <linux/highuid.h> 41#include <linux/highuid.h>
42#include <linux/sysctl.h> 42#include <linux/sysctl.h>
43#include <linux/slab.h>
43#include <asm/mman.h> 44#include <asm/mman.h>
44#include <asm/types.h> 45#include <asm/types.h>
45#include <asm/uaccess.h> 46#include <asm/uaccess.h>
diff --git a/arch/x86/include/asm/amd_iommu_types.h b/arch/x86/include/asm/amd_iommu_types.h
index ba19ad4c47d0..86a0ff0aeac7 100644
--- a/arch/x86/include/asm/amd_iommu_types.h
+++ b/arch/x86/include/asm/amd_iommu_types.h
@@ -21,6 +21,7 @@
21#define _ASM_X86_AMD_IOMMU_TYPES_H 21#define _ASM_X86_AMD_IOMMU_TYPES_H
22 22
23#include <linux/types.h> 23#include <linux/types.h>
24#include <linux/mutex.h>
24#include <linux/list.h> 25#include <linux/list.h>
25#include <linux/spinlock.h> 26#include <linux/spinlock.h>
26 27
@@ -140,6 +141,7 @@
140 141
141/* constants to configure the command buffer */ 142/* constants to configure the command buffer */
142#define CMD_BUFFER_SIZE 8192 143#define CMD_BUFFER_SIZE 8192
144#define CMD_BUFFER_UNINITIALIZED 1
143#define CMD_BUFFER_ENTRIES 512 145#define CMD_BUFFER_ENTRIES 512
144#define MMIO_CMD_SIZE_SHIFT 56 146#define MMIO_CMD_SIZE_SHIFT 56
145#define MMIO_CMD_SIZE_512 (0x9ULL << MMIO_CMD_SIZE_SHIFT) 147#define MMIO_CMD_SIZE_512 (0x9ULL << MMIO_CMD_SIZE_SHIFT)
@@ -237,6 +239,7 @@ struct protection_domain {
237 struct list_head list; /* for list of all protection domains */ 239 struct list_head list; /* for list of all protection domains */
238 struct list_head dev_list; /* List of all devices in this domain */ 240 struct list_head dev_list; /* List of all devices in this domain */
239 spinlock_t lock; /* mostly used to lock the page table*/ 241 spinlock_t lock; /* mostly used to lock the page table*/
242 struct mutex api_lock; /* protect page tables in the iommu-api path */
240 u16 id; /* the domain id written to the device table */ 243 u16 id; /* the domain id written to the device table */
241 int mode; /* paging mode (0-6 levels) */ 244 int mode; /* paging mode (0-6 levels) */
242 u64 *pt_root; /* page table root pointer */ 245 u64 *pt_root; /* page table root pointer */
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 635f03bb4995..d07b44f7d1dc 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -82,6 +82,9 @@ enum fixed_addresses {
82#endif 82#endif
83 FIX_DBGP_BASE, 83 FIX_DBGP_BASE,
84 FIX_EARLYCON_MEM_BASE, 84 FIX_EARLYCON_MEM_BASE,
85#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
86 FIX_OHCI1394_BASE,
87#endif
85#ifdef CONFIG_X86_LOCAL_APIC 88#ifdef CONFIG_X86_LOCAL_APIC
86 FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */ 89 FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
87#endif 90#endif
@@ -132,9 +135,6 @@ enum fixed_addresses {
132 (__end_of_permanent_fixed_addresses & (TOTAL_FIX_BTMAPS - 1)) 135 (__end_of_permanent_fixed_addresses & (TOTAL_FIX_BTMAPS - 1))
133 : __end_of_permanent_fixed_addresses, 136 : __end_of_permanent_fixed_addresses,
134 FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1, 137 FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1,
135#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
136 FIX_OHCI1394_BASE,
137#endif
138#ifdef CONFIG_X86_32 138#ifdef CONFIG_X86_32
139 FIX_WP_TEST, 139 FIX_WP_TEST,
140#endif 140#endif
diff --git a/arch/x86/include/asm/hw_breakpoint.h b/arch/x86/include/asm/hw_breakpoint.h
index 0675a7c4c20e..2a1bd8f4f23a 100644
--- a/arch/x86/include/asm/hw_breakpoint.h
+++ b/arch/x86/include/asm/hw_breakpoint.h
@@ -10,7 +10,6 @@
10 * (display/resolving) 10 * (display/resolving)
11 */ 11 */
12struct arch_hw_breakpoint { 12struct arch_hw_breakpoint {
13 char *name; /* Contains name of the symbol to set bkpt */
14 unsigned long address; 13 unsigned long address;
15 u8 len; 14 u8 len;
16 u8 type; 15 u8 type;
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index a929c9ede33d..46c0fe05f230 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -133,6 +133,7 @@ extern void (*__initconst interrupt[NR_VECTORS-FIRST_EXTERNAL_VECTOR])(void);
133 133
134typedef int vector_irq_t[NR_VECTORS]; 134typedef int vector_irq_t[NR_VECTORS];
135DECLARE_PER_CPU(vector_irq_t, vector_irq); 135DECLARE_PER_CPU(vector_irq_t, vector_irq);
136extern void setup_vector_irq(int cpu);
136 137
137#ifdef CONFIG_X86_IO_APIC 138#ifdef CONFIG_X86_IO_APIC
138extern void lock_vector_lock(void); 139extern void lock_vector_lock(void);
diff --git a/arch/x86/include/asm/lguest_hcall.h b/arch/x86/include/asm/lguest_hcall.h
index ba0eed8aa1a6..b60f2924c413 100644
--- a/arch/x86/include/asm/lguest_hcall.h
+++ b/arch/x86/include/asm/lguest_hcall.h
@@ -28,22 +28,39 @@
28 28
29#ifndef __ASSEMBLY__ 29#ifndef __ASSEMBLY__
30#include <asm/hw_irq.h> 30#include <asm/hw_irq.h>
31#include <asm/kvm_para.h>
32 31
33/*G:030 32/*G:030
34 * But first, how does our Guest contact the Host to ask for privileged 33 * But first, how does our Guest contact the Host to ask for privileged
35 * operations? There are two ways: the direct way is to make a "hypercall", 34 * operations? There are two ways: the direct way is to make a "hypercall",
36 * to make requests of the Host Itself. 35 * to make requests of the Host Itself.
37 * 36 *
38 * We use the KVM hypercall mechanism, though completely different hypercall 37 * Our hypercall mechanism uses the highest unused trap code (traps 32 and
39 * numbers. Seventeen hypercalls are available: the hypercall number is put in 38 * above are used by real hardware interrupts). Seventeen hypercalls are
40 * the %eax register, and the arguments (when required) are placed in %ebx, 39 * available: the hypercall number is put in the %eax register, and the
41 * %ecx, %edx and %esi. If a return value makes sense, it's returned in %eax. 40 * arguments (when required) are placed in %ebx, %ecx, %edx and %esi.
41 * If a return value makes sense, it's returned in %eax.
42 * 42 *
43 * Grossly invalid calls result in Sudden Death at the hands of the vengeful 43 * Grossly invalid calls result in Sudden Death at the hands of the vengeful
44 * Host, rather than returning failure. This reflects Winston Churchill's 44 * Host, rather than returning failure. This reflects Winston Churchill's
45 * definition of a gentleman: "someone who is only rude intentionally". 45 * definition of a gentleman: "someone who is only rude intentionally".
46:*/ 46 */
47static inline unsigned long
48hcall(unsigned long call,
49 unsigned long arg1, unsigned long arg2, unsigned long arg3,
50 unsigned long arg4)
51{
52 /* "int" is the Intel instruction to trigger a trap. */
53 asm volatile("int $" __stringify(LGUEST_TRAP_ENTRY)
54 /* The call in %eax (aka "a") might be overwritten */
55 : "=a"(call)
56 /* The arguments are in %eax, %ebx, %ecx, %edx & %esi */
57 : "a"(call), "b"(arg1), "c"(arg2), "d"(arg3), "S"(arg4)
58 /* "memory" means this might write somewhere in memory.
59 * This isn't true for all calls, but it's safe to tell
60 * gcc that it might happen so it doesn't get clever. */
61 : "memory");
62 return call;
63}
47 64
48/* Can't use our min() macro here: needs to be a constant */ 65/* Can't use our min() macro here: needs to be a constant */
49#define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32) 66#define LGUEST_IRQS (NR_IRQS < 32 ? NR_IRQS: 32)
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 1cd58cdbc03f..4604e6a54d36 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -105,6 +105,8 @@
105#define MSR_AMD64_PATCH_LEVEL 0x0000008b 105#define MSR_AMD64_PATCH_LEVEL 0x0000008b
106#define MSR_AMD64_NB_CFG 0xc001001f 106#define MSR_AMD64_NB_CFG 0xc001001f
107#define MSR_AMD64_PATCH_LOADER 0xc0010020 107#define MSR_AMD64_PATCH_LOADER 0xc0010020
108#define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140
109#define MSR_AMD64_OSVW_STATUS 0xc0010141
108#define MSR_AMD64_IBSFETCHCTL 0xc0011030 110#define MSR_AMD64_IBSFETCHCTL 0xc0011030
109#define MSR_AMD64_IBSFETCHLINAD 0xc0011031 111#define MSR_AMD64_IBSFETCHLINAD 0xc0011031
110#define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032 112#define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h
index befd172c82ad..db6109a885a7 100644
--- a/arch/x86/include/asm/perf_event.h
+++ b/arch/x86/include/asm/perf_event.h
@@ -18,7 +18,7 @@
18#define MSR_ARCH_PERFMON_EVENTSEL0 0x186 18#define MSR_ARCH_PERFMON_EVENTSEL0 0x186
19#define MSR_ARCH_PERFMON_EVENTSEL1 0x187 19#define MSR_ARCH_PERFMON_EVENTSEL1 0x187
20 20
21#define ARCH_PERFMON_EVENTSEL0_ENABLE (1 << 22) 21#define ARCH_PERFMON_EVENTSEL_ENABLE (1 << 22)
22#define ARCH_PERFMON_EVENTSEL_ANY (1 << 21) 22#define ARCH_PERFMON_EVENTSEL_ANY (1 << 21)
23#define ARCH_PERFMON_EVENTSEL_INT (1 << 20) 23#define ARCH_PERFMON_EVENTSEL_INT (1 << 20)
24#define ARCH_PERFMON_EVENTSEL_OS (1 << 17) 24#define ARCH_PERFMON_EVENTSEL_OS (1 << 17)
@@ -50,7 +50,7 @@
50 INTEL_ARCH_INV_MASK| \ 50 INTEL_ARCH_INV_MASK| \
51 INTEL_ARCH_EDGE_MASK|\ 51 INTEL_ARCH_EDGE_MASK|\
52 INTEL_ARCH_UNIT_MASK|\ 52 INTEL_ARCH_UNIT_MASK|\
53 INTEL_ARCH_EVTSEL_MASK) 53 INTEL_ARCH_EVENT_MASK)
54 54
55#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL 0x3c 55#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL 0x3c
56#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_UMASK (0x00 << 8) 56#define ARCH_PERFMON_UNHALTED_CORE_CYCLES_UMASK (0x00 << 8)
@@ -117,6 +117,18 @@ union cpuid10_edx {
117 */ 117 */
118#define X86_PMC_IDX_FIXED_BTS (X86_PMC_IDX_FIXED + 16) 118#define X86_PMC_IDX_FIXED_BTS (X86_PMC_IDX_FIXED + 16)
119 119
120/* IbsFetchCtl bits/masks */
121#define IBS_FETCH_RAND_EN (1ULL<<57)
122#define IBS_FETCH_VAL (1ULL<<49)
123#define IBS_FETCH_ENABLE (1ULL<<48)
124#define IBS_FETCH_CNT 0xFFFF0000ULL
125#define IBS_FETCH_MAX_CNT 0x0000FFFFULL
126
127/* IbsOpCtl bits */
128#define IBS_OP_CNT_CTL (1ULL<<19)
129#define IBS_OP_VAL (1ULL<<18)
130#define IBS_OP_ENABLE (1ULL<<17)
131#define IBS_OP_MAX_CNT 0x0000FFFFULL
120 132
121#ifdef CONFIG_PERF_EVENTS 133#ifdef CONFIG_PERF_EVENTS
122extern void init_hw_perf_events(void); 134extern void init_hw_perf_events(void);
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
index 47339a1ac7b6..2984a25ff383 100644
--- a/arch/x86/include/asm/pgtable_32.h
+++ b/arch/x86/include/asm/pgtable_32.h
@@ -19,7 +19,6 @@
19#include <asm/paravirt.h> 19#include <asm/paravirt.h>
20 20
21#include <linux/bitops.h> 21#include <linux/bitops.h>
22#include <linux/slab.h>
23#include <linux/list.h> 22#include <linux/list.h>
24#include <linux/spinlock.h> 23#include <linux/spinlock.h>
25 24
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index a54d714545ff..cd40aba6aa95 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -31,6 +31,7 @@
31#include <linux/module.h> 31#include <linux/module.h>
32#include <linux/dmi.h> 32#include <linux/dmi.h>
33#include <linux/irq.h> 33#include <linux/irq.h>
34#include <linux/slab.h>
34#include <linux/bootmem.h> 35#include <linux/bootmem.h>
35#include <linux/ioport.h> 36#include <linux/ioport.h>
36#include <linux/pci.h> 37#include <linux/pci.h>
@@ -490,6 +491,7 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, int polarity)
490 * ACPI based hotplug support for CPU 491 * ACPI based hotplug support for CPU
491 */ 492 */
492#ifdef CONFIG_ACPI_HOTPLUG_CPU 493#ifdef CONFIG_ACPI_HOTPLUG_CPU
494#include <acpi/processor.h>
493 495
494static void acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) 496static void acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
495{ 497{
@@ -567,6 +569,8 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu)
567 goto free_new_map; 569 goto free_new_map;
568 } 570 }
569 571
572 acpi_processor_set_pdc(handle);
573
570 cpu = cpumask_first(new_map); 574 cpu = cpumask_first(new_map);
571 acpi_map_cpu2node(handle, cpu, physid); 575 acpi_map_cpu2node(handle, cpu, physid);
572 576
@@ -1293,23 +1297,6 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
1293} 1297}
1294 1298
1295/* 1299/*
1296 * Limit ACPI to CPU enumeration for HT
1297 */
1298static int __init force_acpi_ht(const struct dmi_system_id *d)
1299{
1300 if (!acpi_force) {
1301 printk(KERN_NOTICE "%s detected: force use of acpi=ht\n",
1302 d->ident);
1303 disable_acpi();
1304 acpi_ht = 1;
1305 } else {
1306 printk(KERN_NOTICE
1307 "Warning: acpi=force overrules DMI blacklist: acpi=ht\n");
1308 }
1309 return 0;
1310}
1311
1312/*
1313 * Force ignoring BIOS IRQ0 pin2 override 1300 * Force ignoring BIOS IRQ0 pin2 override
1314 */ 1301 */
1315static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) 1302static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
@@ -1345,82 +1332,6 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
1345 }, 1332 },
1346 1333
1347 /* 1334 /*
1348 * Boxes that need acpi=ht
1349 */
1350 {
1351 .callback = force_acpi_ht,
1352 .ident = "FSC Primergy T850",
1353 .matches = {
1354 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
1355 DMI_MATCH(DMI_PRODUCT_NAME, "PRIMERGY T850"),
1356 },
1357 },
1358 {
1359 .callback = force_acpi_ht,
1360 .ident = "HP VISUALIZE NT Workstation",
1361 .matches = {
1362 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
1363 DMI_MATCH(DMI_PRODUCT_NAME, "HP VISUALIZE NT Workstation"),
1364 },
1365 },
1366 {
1367 .callback = force_acpi_ht,
1368 .ident = "Compaq Workstation W8000",
1369 .matches = {
1370 DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
1371 DMI_MATCH(DMI_PRODUCT_NAME, "Workstation W8000"),
1372 },
1373 },
1374 {
1375 .callback = force_acpi_ht,
1376 .ident = "ASUS CUR-DLS",
1377 .matches = {
1378 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
1379 DMI_MATCH(DMI_BOARD_NAME, "CUR-DLS"),
1380 },
1381 },
1382 {
1383 .callback = force_acpi_ht,
1384 .ident = "ABIT i440BX-W83977",
1385 .matches = {
1386 DMI_MATCH(DMI_BOARD_VENDOR, "ABIT <http://www.abit.com>"),
1387 DMI_MATCH(DMI_BOARD_NAME, "i440BX-W83977 (BP6)"),
1388 },
1389 },
1390 {
1391 .callback = force_acpi_ht,
1392 .ident = "IBM Bladecenter",
1393 .matches = {
1394 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1395 DMI_MATCH(DMI_BOARD_NAME, "IBM eServer BladeCenter HS20"),
1396 },
1397 },
1398 {
1399 .callback = force_acpi_ht,
1400 .ident = "IBM eServer xSeries 360",
1401 .matches = {
1402 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1403 DMI_MATCH(DMI_BOARD_NAME, "eServer xSeries 360"),
1404 },
1405 },
1406 {
1407 .callback = force_acpi_ht,
1408 .ident = "IBM eserver xSeries 330",
1409 .matches = {
1410 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1411 DMI_MATCH(DMI_BOARD_NAME, "eserver xSeries 330"),
1412 },
1413 },
1414 {
1415 .callback = force_acpi_ht,
1416 .ident = "IBM eserver xSeries 440",
1417 .matches = {
1418 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1419 DMI_MATCH(DMI_PRODUCT_NAME, "eserver xSeries 440"),
1420 },
1421 },
1422
1423 /*
1424 * Boxes that need ACPI PCI IRQ routing disabled 1335 * Boxes that need ACPI PCI IRQ routing disabled
1425 */ 1336 */
1426 { 1337 {
@@ -1652,8 +1563,10 @@ static int __init parse_acpi(char *arg)
1652 } 1563 }
1653 /* Limit ACPI just to boot-time to enable HT */ 1564 /* Limit ACPI just to boot-time to enable HT */
1654 else if (strcmp(arg, "ht") == 0) { 1565 else if (strcmp(arg, "ht") == 0) {
1655 if (!acpi_force) 1566 if (!acpi_force) {
1567 printk(KERN_WARNING "acpi=ht will be removed in Linux-2.6.35\n");
1656 disable_acpi(); 1568 disable_acpi();
1569 }
1657 acpi_ht = 1; 1570 acpi_ht = 1;
1658 } 1571 }
1659 /* acpi=rsdt use RSDT instead of XSDT */ 1572 /* acpi=rsdt use RSDT instead of XSDT */
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 3a4bf35c179b..1a160d5d44d0 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -8,6 +8,7 @@
8#include <linux/vmalloc.h> 8#include <linux/vmalloc.h>
9#include <linux/memory.h> 9#include <linux/memory.h>
10#include <linux/stop_machine.h> 10#include <linux/stop_machine.h>
11#include <linux/slab.h>
11#include <asm/alternative.h> 12#include <asm/alternative.h>
12#include <asm/sections.h> 13#include <asm/sections.h>
13#include <asm/pgtable.h> 14#include <asm/pgtable.h>
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index adb0ba025702..f854d89b7edf 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -18,8 +18,8 @@
18 */ 18 */
19 19
20#include <linux/pci.h> 20#include <linux/pci.h>
21#include <linux/gfp.h>
22#include <linux/bitmap.h> 21#include <linux/bitmap.h>
22#include <linux/slab.h>
23#include <linux/debugfs.h> 23#include <linux/debugfs.h>
24#include <linux/scatterlist.h> 24#include <linux/scatterlist.h>
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
@@ -118,7 +118,7 @@ static bool check_device(struct device *dev)
118 return false; 118 return false;
119 119
120 /* No device or no PCI device */ 120 /* No device or no PCI device */
121 if (!dev || dev->bus != &pci_bus_type) 121 if (dev->bus != &pci_bus_type)
122 return false; 122 return false;
123 123
124 devid = get_device_id(dev); 124 devid = get_device_id(dev);
@@ -392,6 +392,7 @@ static int __iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd)
392 u32 tail, head; 392 u32 tail, head;
393 u8 *target; 393 u8 *target;
394 394
395 WARN_ON(iommu->cmd_buf_size & CMD_BUFFER_UNINITIALIZED);
395 tail = readl(iommu->mmio_base + MMIO_CMD_TAIL_OFFSET); 396 tail = readl(iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
396 target = iommu->cmd_buf + tail; 397 target = iommu->cmd_buf + tail;
397 memcpy_toio(target, cmd, sizeof(*cmd)); 398 memcpy_toio(target, cmd, sizeof(*cmd));
@@ -2186,7 +2187,7 @@ static void prealloc_protection_domains(void)
2186 struct dma_ops_domain *dma_dom; 2187 struct dma_ops_domain *dma_dom;
2187 u16 devid; 2188 u16 devid;
2188 2189
2189 while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { 2190 for_each_pci_dev(dev) {
2190 2191
2191 /* Do we handle this device? */ 2192 /* Do we handle this device? */
2192 if (!check_device(&dev->dev)) 2193 if (!check_device(&dev->dev))
@@ -2298,7 +2299,7 @@ static void cleanup_domain(struct protection_domain *domain)
2298 list_for_each_entry_safe(dev_data, next, &domain->dev_list, list) { 2299 list_for_each_entry_safe(dev_data, next, &domain->dev_list, list) {
2299 struct device *dev = dev_data->dev; 2300 struct device *dev = dev_data->dev;
2300 2301
2301 do_detach(dev); 2302 __detach_device(dev);
2302 atomic_set(&dev_data->bind, 0); 2303 atomic_set(&dev_data->bind, 0);
2303 } 2304 }
2304 2305
@@ -2327,6 +2328,7 @@ static struct protection_domain *protection_domain_alloc(void)
2327 return NULL; 2328 return NULL;
2328 2329
2329 spin_lock_init(&domain->lock); 2330 spin_lock_init(&domain->lock);
2331 mutex_init(&domain->api_lock);
2330 domain->id = domain_id_alloc(); 2332 domain->id = domain_id_alloc();
2331 if (!domain->id) 2333 if (!domain->id)
2332 goto out_err; 2334 goto out_err;
@@ -2379,9 +2381,7 @@ static void amd_iommu_domain_destroy(struct iommu_domain *dom)
2379 2381
2380 free_pagetable(domain); 2382 free_pagetable(domain);
2381 2383
2382 domain_id_free(domain->id); 2384 protection_domain_free(domain);
2383
2384 kfree(domain);
2385 2385
2386 dom->priv = NULL; 2386 dom->priv = NULL;
2387} 2387}
@@ -2456,6 +2456,8 @@ static int amd_iommu_map_range(struct iommu_domain *dom,
2456 iova &= PAGE_MASK; 2456 iova &= PAGE_MASK;
2457 paddr &= PAGE_MASK; 2457 paddr &= PAGE_MASK;
2458 2458
2459 mutex_lock(&domain->api_lock);
2460
2459 for (i = 0; i < npages; ++i) { 2461 for (i = 0; i < npages; ++i) {
2460 ret = iommu_map_page(domain, iova, paddr, prot, PM_MAP_4k); 2462 ret = iommu_map_page(domain, iova, paddr, prot, PM_MAP_4k);
2461 if (ret) 2463 if (ret)
@@ -2465,6 +2467,8 @@ static int amd_iommu_map_range(struct iommu_domain *dom,
2465 paddr += PAGE_SIZE; 2467 paddr += PAGE_SIZE;
2466 } 2468 }
2467 2469
2470 mutex_unlock(&domain->api_lock);
2471
2468 return 0; 2472 return 0;
2469} 2473}
2470 2474
@@ -2477,12 +2481,16 @@ static void amd_iommu_unmap_range(struct iommu_domain *dom,
2477 2481
2478 iova &= PAGE_MASK; 2482 iova &= PAGE_MASK;
2479 2483
2484 mutex_lock(&domain->api_lock);
2485
2480 for (i = 0; i < npages; ++i) { 2486 for (i = 0; i < npages; ++i) {
2481 iommu_unmap_page(domain, iova, PM_MAP_4k); 2487 iommu_unmap_page(domain, iova, PM_MAP_4k);
2482 iova += PAGE_SIZE; 2488 iova += PAGE_SIZE;
2483 } 2489 }
2484 2490
2485 iommu_flush_tlb_pde(domain); 2491 iommu_flush_tlb_pde(domain);
2492
2493 mutex_unlock(&domain->api_lock);
2486} 2494}
2487 2495
2488static phys_addr_t amd_iommu_iova_to_phys(struct iommu_domain *dom, 2496static phys_addr_t amd_iommu_iova_to_phys(struct iommu_domain *dom,
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 9dc91b431470..6360abf993d4 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -19,8 +19,8 @@
19 19
20#include <linux/pci.h> 20#include <linux/pci.h>
21#include <linux/acpi.h> 21#include <linux/acpi.h>
22#include <linux/gfp.h>
23#include <linux/list.h> 22#include <linux/list.h>
23#include <linux/slab.h>
24#include <linux/sysdev.h> 24#include <linux/sysdev.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/msi.h> 26#include <linux/msi.h>
@@ -138,9 +138,9 @@ int amd_iommus_present;
138bool amd_iommu_np_cache __read_mostly; 138bool amd_iommu_np_cache __read_mostly;
139 139
140/* 140/*
141 * Set to true if ACPI table parsing and hardware intialization went properly 141 * The ACPI table parsing functions set this variable on an error
142 */ 142 */
143static bool amd_iommu_initialized; 143static int __initdata amd_iommu_init_err;
144 144
145/* 145/*
146 * List of protection domains - used during resume 146 * List of protection domains - used during resume
@@ -391,9 +391,11 @@ static int __init find_last_devid_acpi(struct acpi_table_header *table)
391 */ 391 */
392 for (i = 0; i < table->length; ++i) 392 for (i = 0; i < table->length; ++i)
393 checksum += p[i]; 393 checksum += p[i];
394 if (checksum != 0) 394 if (checksum != 0) {
395 /* ACPI table corrupt */ 395 /* ACPI table corrupt */
396 return -ENODEV; 396 amd_iommu_init_err = -ENODEV;
397 return 0;
398 }
397 399
398 p += IVRS_HEADER_LENGTH; 400 p += IVRS_HEADER_LENGTH;
399 401
@@ -436,7 +438,7 @@ static u8 * __init alloc_command_buffer(struct amd_iommu *iommu)
436 if (cmd_buf == NULL) 438 if (cmd_buf == NULL)
437 return NULL; 439 return NULL;
438 440
439 iommu->cmd_buf_size = CMD_BUFFER_SIZE; 441 iommu->cmd_buf_size = CMD_BUFFER_SIZE | CMD_BUFFER_UNINITIALIZED;
440 442
441 return cmd_buf; 443 return cmd_buf;
442} 444}
@@ -472,12 +474,13 @@ static void iommu_enable_command_buffer(struct amd_iommu *iommu)
472 &entry, sizeof(entry)); 474 &entry, sizeof(entry));
473 475
474 amd_iommu_reset_cmd_buffer(iommu); 476 amd_iommu_reset_cmd_buffer(iommu);
477 iommu->cmd_buf_size &= ~(CMD_BUFFER_UNINITIALIZED);
475} 478}
476 479
477static void __init free_command_buffer(struct amd_iommu *iommu) 480static void __init free_command_buffer(struct amd_iommu *iommu)
478{ 481{
479 free_pages((unsigned long)iommu->cmd_buf, 482 free_pages((unsigned long)iommu->cmd_buf,
480 get_order(iommu->cmd_buf_size)); 483 get_order(iommu->cmd_buf_size & ~(CMD_BUFFER_UNINITIALIZED)));
481} 484}
482 485
483/* allocates the memory where the IOMMU will log its events to */ 486/* allocates the memory where the IOMMU will log its events to */
@@ -920,11 +923,16 @@ static int __init init_iommu_all(struct acpi_table_header *table)
920 h->mmio_phys); 923 h->mmio_phys);
921 924
922 iommu = kzalloc(sizeof(struct amd_iommu), GFP_KERNEL); 925 iommu = kzalloc(sizeof(struct amd_iommu), GFP_KERNEL);
923 if (iommu == NULL) 926 if (iommu == NULL) {
924 return -ENOMEM; 927 amd_iommu_init_err = -ENOMEM;
928 return 0;
929 }
930
925 ret = init_iommu_one(iommu, h); 931 ret = init_iommu_one(iommu, h);
926 if (ret) 932 if (ret) {
927 return ret; 933 amd_iommu_init_err = ret;
934 return 0;
935 }
928 break; 936 break;
929 default: 937 default:
930 break; 938 break;
@@ -934,8 +942,6 @@ static int __init init_iommu_all(struct acpi_table_header *table)
934 } 942 }
935 WARN_ON(p != end); 943 WARN_ON(p != end);
936 944
937 amd_iommu_initialized = true;
938
939 return 0; 945 return 0;
940} 946}
941 947
@@ -1211,6 +1217,10 @@ static int __init amd_iommu_init(void)
1211 if (acpi_table_parse("IVRS", find_last_devid_acpi) != 0) 1217 if (acpi_table_parse("IVRS", find_last_devid_acpi) != 0)
1212 return -ENODEV; 1218 return -ENODEV;
1213 1219
1220 ret = amd_iommu_init_err;
1221 if (ret)
1222 goto out;
1223
1214 dev_table_size = tbl_size(DEV_TABLE_ENTRY_SIZE); 1224 dev_table_size = tbl_size(DEV_TABLE_ENTRY_SIZE);
1215 alias_table_size = tbl_size(ALIAS_TABLE_ENTRY_SIZE); 1225 alias_table_size = tbl_size(ALIAS_TABLE_ENTRY_SIZE);
1216 rlookup_table_size = tbl_size(RLOOKUP_TABLE_ENTRY_SIZE); 1226 rlookup_table_size = tbl_size(RLOOKUP_TABLE_ENTRY_SIZE);
@@ -1270,12 +1280,19 @@ static int __init amd_iommu_init(void)
1270 if (acpi_table_parse("IVRS", init_iommu_all) != 0) 1280 if (acpi_table_parse("IVRS", init_iommu_all) != 0)
1271 goto free; 1281 goto free;
1272 1282
1273 if (!amd_iommu_initialized) 1283 if (amd_iommu_init_err) {
1284 ret = amd_iommu_init_err;
1274 goto free; 1285 goto free;
1286 }
1275 1287
1276 if (acpi_table_parse("IVRS", init_memory_definitions) != 0) 1288 if (acpi_table_parse("IVRS", init_memory_definitions) != 0)
1277 goto free; 1289 goto free;
1278 1290
1291 if (amd_iommu_init_err) {
1292 ret = amd_iommu_init_err;
1293 goto free;
1294 }
1295
1279 ret = sysdev_class_register(&amd_iommu_sysdev_class); 1296 ret = sysdev_class_register(&amd_iommu_sysdev_class);
1280 if (ret) 1297 if (ret)
1281 goto free; 1298 goto free;
@@ -1288,6 +1305,8 @@ static int __init amd_iommu_init(void)
1288 if (ret) 1305 if (ret)
1289 goto free; 1306 goto free;
1290 1307
1308 enable_iommus();
1309
1291 if (iommu_pass_through) 1310 if (iommu_pass_through)
1292 ret = amd_iommu_init_passthrough(); 1311 ret = amd_iommu_init_passthrough();
1293 else 1312 else
@@ -1300,8 +1319,6 @@ static int __init amd_iommu_init(void)
1300 1319
1301 amd_iommu_init_notifier(); 1320 amd_iommu_init_notifier();
1302 1321
1303 enable_iommus();
1304
1305 if (iommu_pass_through) 1322 if (iommu_pass_through)
1306 goto out; 1323 goto out;
1307 1324
@@ -1315,6 +1332,7 @@ out:
1315 return ret; 1332 return ret;
1316 1333
1317free: 1334free:
1335 disable_iommus();
1318 1336
1319 amd_iommu_uninit_devices(); 1337 amd_iommu_uninit_devices();
1320 1338
diff --git a/arch/x86/kernel/apb_timer.c b/arch/x86/kernel/apb_timer.c
index 4b7099526d2c..ff469e470059 100644
--- a/arch/x86/kernel/apb_timer.c
+++ b/arch/x86/kernel/apb_timer.c
@@ -33,6 +33,7 @@
33#include <linux/errno.h> 33#include <linux/errno.h>
34#include <linux/init.h> 34#include <linux/init.h>
35#include <linux/sysdev.h> 35#include <linux/sysdev.h>
36#include <linux/slab.h>
36#include <linux/pm.h> 37#include <linux/pm.h>
37#include <linux/pci.h> 38#include <linux/pci.h>
38#include <linux/sfi.h> 39#include <linux/sfi.h>
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index f147a95fd84a..b5d8b0bcf235 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -31,7 +31,6 @@
31#include <asm/x86_init.h> 31#include <asm/x86_init.h>
32 32
33int gart_iommu_aperture; 33int gart_iommu_aperture;
34EXPORT_SYMBOL_GPL(gart_iommu_aperture);
35int gart_iommu_aperture_disabled __initdata; 34int gart_iommu_aperture_disabled __initdata;
36int gart_iommu_aperture_allowed __initdata; 35int gart_iommu_aperture_allowed __initdata;
37 36
@@ -394,6 +393,7 @@ void __init gart_iommu_hole_init(void)
394 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { 393 for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
395 int bus; 394 int bus;
396 int dev_base, dev_limit; 395 int dev_base, dev_limit;
396 u32 ctl;
397 397
398 bus = bus_dev_ranges[i].bus; 398 bus = bus_dev_ranges[i].bus;
399 dev_base = bus_dev_ranges[i].dev_base; 399 dev_base = bus_dev_ranges[i].dev_base;
@@ -407,7 +407,19 @@ void __init gart_iommu_hole_init(void)
407 gart_iommu_aperture = 1; 407 gart_iommu_aperture = 1;
408 x86_init.iommu.iommu_init = gart_iommu_init; 408 x86_init.iommu.iommu_init = gart_iommu_init;
409 409
410 aper_order = (read_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL) >> 1) & 7; 410 ctl = read_pci_config(bus, slot, 3,
411 AMD64_GARTAPERTURECTL);
412
413 /*
414 * Before we do anything else disable the GART. It may
415 * still be enabled if we boot into a crash-kernel here.
416 * Reconfiguring the GART while it is enabled could have
417 * unknown side-effects.
418 */
419 ctl &= ~GARTEN;
420 write_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL, ctl);
421
422 aper_order = (ctl >> 1) & 7;
411 aper_size = (32 * 1024 * 1024) << aper_order; 423 aper_size = (32 * 1024 * 1024) << aper_order;
412 aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff; 424 aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff;
413 aper_base <<= 25; 425 aper_base <<= 25;
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 00187f1fcfb7..e5a4a1e01618 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -1640,8 +1640,10 @@ int __init APIC_init_uniprocessor(void)
1640 } 1640 }
1641#endif 1641#endif
1642 1642
1643#ifndef CONFIG_SMP
1643 enable_IR_x2apic(); 1644 enable_IR_x2apic();
1644 default_setup_apic_routing(); 1645 default_setup_apic_routing();
1646#endif
1645 1647
1646 verify_local_APIC(); 1648 verify_local_APIC();
1647 connect_bsp_APIC(); 1649 connect_bsp_APIC();
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c
index dd2b5f264643..03ba1b895f5e 100644
--- a/arch/x86/kernel/apic/es7000_32.c
+++ b/arch/x86/kernel/apic/es7000_32.c
@@ -42,6 +42,7 @@
42#include <linux/errno.h> 42#include <linux/errno.h>
43#include <linux/acpi.h> 43#include <linux/acpi.h>
44#include <linux/init.h> 44#include <linux/init.h>
45#include <linux/gfp.h>
45#include <linux/nmi.h> 46#include <linux/nmi.h>
46#include <linux/smp.h> 47#include <linux/smp.h>
47#include <linux/io.h> 48#include <linux/io.h>
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index e4e0ddcb1546..127b8718abfb 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -36,6 +36,7 @@
36#include <linux/freezer.h> 36#include <linux/freezer.h>
37#include <linux/kthread.h> 37#include <linux/kthread.h>
38#include <linux/jiffies.h> /* time_after() */ 38#include <linux/jiffies.h> /* time_after() */
39#include <linux/slab.h>
39#ifdef CONFIG_ACPI 40#ifdef CONFIG_ACPI
40#include <acpi/acpi_bus.h> 41#include <acpi/acpi_bus.h>
41#endif 42#endif
@@ -1268,6 +1269,14 @@ void __setup_vector_irq(int cpu)
1268 /* Mark the inuse vectors */ 1269 /* Mark the inuse vectors */
1269 for_each_irq_desc(irq, desc) { 1270 for_each_irq_desc(irq, desc) {
1270 cfg = desc->chip_data; 1271 cfg = desc->chip_data;
1272
1273 /*
1274 * If it is a legacy IRQ handled by the legacy PIC, this cpu
1275 * will be part of the irq_cfg's domain.
1276 */
1277 if (irq < legacy_pic->nr_legacy_irqs && !IO_APIC_IRQ(irq))
1278 cpumask_set_cpu(cpu, cfg->domain);
1279
1271 if (!cpumask_test_cpu(cpu, cfg->domain)) 1280 if (!cpumask_test_cpu(cpu, cfg->domain))
1272 continue; 1281 continue;
1273 vector = cfg->vector; 1282 vector = cfg->vector;
diff --git a/arch/x86/kernel/apic/nmi.c b/arch/x86/kernel/apic/nmi.c
index 8aa65adbd25d..1edaf15c0b8e 100644
--- a/arch/x86/kernel/apic/nmi.c
+++ b/arch/x86/kernel/apic/nmi.c
@@ -18,6 +18,7 @@
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/module.h> 20#include <linux/module.h>
21#include <linux/slab.h>
21#include <linux/sysdev.h> 22#include <linux/sysdev.h>
22#include <linux/sysctl.h> 23#include <linux/sysctl.h>
23#include <linux/percpu.h> 24#include <linux/percpu.h>
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index 3740c8a4eae7..c085d52dbaf2 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -17,6 +17,7 @@
17#include <linux/ctype.h> 17#include <linux/ctype.h>
18#include <linux/sched.h> 18#include <linux/sched.h>
19#include <linux/timer.h> 19#include <linux/timer.h>
20#include <linux/slab.h>
20#include <linux/cpu.h> 21#include <linux/cpu.h>
21#include <linux/init.h> 22#include <linux/init.h>
22#include <linux/io.h> 23#include <linux/io.h>
@@ -120,11 +121,9 @@ EXPORT_SYMBOL_GPL(uv_possible_blades);
120unsigned long sn_rtc_cycles_per_second; 121unsigned long sn_rtc_cycles_per_second;
121EXPORT_SYMBOL(sn_rtc_cycles_per_second); 122EXPORT_SYMBOL(sn_rtc_cycles_per_second);
122 123
123/* Start with all IRQs pointing to boot CPU. IRQ balancing will shift them. */
124
125static const struct cpumask *uv_target_cpus(void) 124static const struct cpumask *uv_target_cpus(void)
126{ 125{
127 return cpumask_of(0); 126 return cpu_online_mask;
128} 127}
129 128
130static void uv_vector_allocation_domain(int cpu, struct cpumask *retmask) 129static void uv_vector_allocation_domain(int cpu, struct cpumask *retmask)
diff --git a/arch/x86/kernel/bootflag.c b/arch/x86/kernel/bootflag.c
index 30f25a75fe28..5de7f4c56971 100644
--- a/arch/x86/kernel/bootflag.c
+++ b/arch/x86/kernel/bootflag.c
@@ -5,7 +5,6 @@
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/init.h> 6#include <linux/init.h>
7#include <linux/string.h> 7#include <linux/string.h>
8#include <linux/slab.h>
9#include <linux/spinlock.h> 8#include <linux/spinlock.h>
10#include <linux/acpi.h> 9#include <linux/acpi.h>
11#include <asm/io.h> 10#include <asm/io.h>
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 1b1920fa7c80..459168083b77 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -33,6 +33,7 @@
33#include <linux/cpufreq.h> 33#include <linux/cpufreq.h>
34#include <linux/compiler.h> 34#include <linux/compiler.h>
35#include <linux/dmi.h> 35#include <linux/dmi.h>
36#include <linux/slab.h>
36#include <trace/events/power.h> 37#include <trace/events/power.h>
37 38
38#include <linux/acpi.h> 39#include <linux/acpi.h>
diff --git a/arch/x86/kernel/cpu/cpufreq/elanfreq.c b/arch/x86/kernel/cpu/cpufreq/elanfreq.c
index 006b278b0d5d..c587db472a75 100644
--- a/arch/x86/kernel/cpu/cpufreq/elanfreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/elanfreq.c
@@ -20,7 +20,6 @@
20#include <linux/module.h> 20#include <linux/module.h>
21#include <linux/init.h> 21#include <linux/init.h>
22 22
23#include <linux/slab.h>
24#include <linux/delay.h> 23#include <linux/delay.h>
25#include <linux/cpufreq.h> 24#include <linux/cpufreq.h>
26 25
diff --git a/arch/x86/kernel/cpu/cpufreq/gx-suspmod.c b/arch/x86/kernel/cpu/cpufreq/gx-suspmod.c
index ac27ec2264d5..16e3483be9e3 100644
--- a/arch/x86/kernel/cpu/cpufreq/gx-suspmod.c
+++ b/arch/x86/kernel/cpu/cpufreq/gx-suspmod.c
@@ -80,6 +80,7 @@
80#include <linux/cpufreq.h> 80#include <linux/cpufreq.h>
81#include <linux/pci.h> 81#include <linux/pci.h>
82#include <linux/errno.h> 82#include <linux/errno.h>
83#include <linux/slab.h>
83 84
84#include <asm/processor-cyrix.h> 85#include <asm/processor-cyrix.h>
85 86
diff --git a/arch/x86/kernel/cpu/cpufreq/longrun.c b/arch/x86/kernel/cpu/cpufreq/longrun.c
index da5f70fcb766..e7b559d74c52 100644
--- a/arch/x86/kernel/cpu/cpufreq/longrun.c
+++ b/arch/x86/kernel/cpu/cpufreq/longrun.c
@@ -9,7 +9,6 @@
9#include <linux/kernel.h> 9#include <linux/kernel.h>
10#include <linux/module.h> 10#include <linux/module.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/slab.h>
13#include <linux/cpufreq.h> 12#include <linux/cpufreq.h>
14#include <linux/timex.h> 13#include <linux/timex.h>
15 14
diff --git a/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c b/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
index 869615193720..7b8a8ba67b07 100644
--- a/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
+++ b/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
@@ -25,7 +25,6 @@
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/smp.h> 26#include <linux/smp.h>
27#include <linux/cpufreq.h> 27#include <linux/cpufreq.h>
28#include <linux/slab.h>
29#include <linux/cpumask.h> 28#include <linux/cpumask.h>
30#include <linux/timex.h> 29#include <linux/timex.h>
31 30
diff --git a/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c
index ff36d2979a90..ce7cde713e71 100644
--- a/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.c
@@ -30,6 +30,7 @@
30#include <linux/sched.h> 30#include <linux/sched.h>
31#include <linux/cpufreq.h> 31#include <linux/cpufreq.h>
32#include <linux/compiler.h> 32#include <linux/compiler.h>
33#include <linux/slab.h>
33 34
34#include <linux/acpi.h> 35#include <linux/acpi.h>
35#include <linux/io.h> 36#include <linux/io.h>
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k6.c b/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
index cb01dac267d3..b3379d6a5c57 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k6.c
@@ -13,7 +13,6 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/cpufreq.h> 14#include <linux/cpufreq.h>
15#include <linux/ioport.h> 15#include <linux/ioport.h>
16#include <linux/slab.h>
17#include <linux/timex.h> 16#include <linux/timex.h>
18#include <linux/io.h> 17#include <linux/io.h>
19 18
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
index 8d672ef162ce..9b1ff37de46a 100644
--- a/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
+++ b/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c
@@ -20,6 +20,7 @@
20#include <linux/sched.h> /* current */ 20#include <linux/sched.h> /* current */
21#include <linux/delay.h> 21#include <linux/delay.h>
22#include <linux/compiler.h> 22#include <linux/compiler.h>
23#include <linux/gfp.h>
23 24
24#include <asm/msr.h> 25#include <asm/msr.h>
25#include <asm/processor.h> 26#include <asm/processor.h>
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c b/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
index 2ce8e0b5cc54..561758e95180 100644
--- a/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
+++ b/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
@@ -23,7 +23,6 @@
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/cpufreq.h> 24#include <linux/cpufreq.h>
25#include <linux/pci.h> 25#include <linux/pci.h>
26#include <linux/slab.h>
27#include <linux/sched.h> 26#include <linux/sched.h>
28 27
29#include "speedstep-lib.h" 28#include "speedstep-lib.h"
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c b/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c
index ad0083abfa23..a94ec6be69fa 100644
--- a/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c
+++ b/arch/x86/kernel/cpu/cpufreq/speedstep-lib.c
@@ -13,7 +13,6 @@
13#include <linux/moduleparam.h> 13#include <linux/moduleparam.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/cpufreq.h> 15#include <linux/cpufreq.h>
16#include <linux/slab.h>
17 16
18#include <asm/msr.h> 17#include <asm/msr.h>
19#include <asm/tsc.h> 18#include <asm/tsc.h>
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c b/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c
index 04d73c114e49..8abd869baabf 100644
--- a/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c
+++ b/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c
@@ -17,7 +17,6 @@
17#include <linux/moduleparam.h> 17#include <linux/moduleparam.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/cpufreq.h> 19#include <linux/cpufreq.h>
20#include <linux/slab.h>
21#include <linux/delay.h> 20#include <linux/delay.h>
22#include <linux/io.h> 21#include <linux/io.h>
23#include <asm/ist.h> 22#include <asm/ist.h>
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 879666f4d871..7e1cca13af35 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -70,7 +70,8 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
70 if (c->x86_power & (1 << 8)) { 70 if (c->x86_power & (1 << 8)) {
71 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); 71 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
72 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); 72 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
73 sched_clock_stable = 1; 73 if (!check_tsc_unstable())
74 sched_clock_stable = 1;
74 } 75 }
75 76
76 /* 77 /*
diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c b/arch/x86/kernel/cpu/mcheck/mce-inject.c
index 73734baa50f2..e7dbde7bfedb 100644
--- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
+++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
@@ -22,6 +22,7 @@
22#include <linux/kdebug.h> 22#include <linux/kdebug.h>
23#include <linux/cpu.h> 23#include <linux/cpu.h>
24#include <linux/sched.h> 24#include <linux/sched.h>
25#include <linux/gfp.h>
25#include <asm/mce.h> 26#include <asm/mce.h>
26#include <asm/apic.h> 27#include <asm/apic.h>
27 28
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 28cba46bf32c..8a6f0afa767e 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -26,6 +26,7 @@
26#include <linux/sched.h> 26#include <linux/sched.h>
27#include <linux/sysfs.h> 27#include <linux/sysfs.h>
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/slab.h>
29#include <linux/init.h> 30#include <linux/init.h>
30#include <linux/kmod.h> 31#include <linux/kmod.h>
31#include <linux/poll.h> 32#include <linux/poll.h>
@@ -46,6 +47,13 @@
46 47
47#include "mce-internal.h" 48#include "mce-internal.h"
48 49
50static DEFINE_MUTEX(mce_read_mutex);
51
52#define rcu_dereference_check_mce(p) \
53 rcu_dereference_check((p), \
54 rcu_read_lock_sched_held() || \
55 lockdep_is_held(&mce_read_mutex))
56
49#define CREATE_TRACE_POINTS 57#define CREATE_TRACE_POINTS
50#include <trace/events/mce.h> 58#include <trace/events/mce.h>
51 59
@@ -158,7 +166,7 @@ void mce_log(struct mce *mce)
158 mce->finished = 0; 166 mce->finished = 0;
159 wmb(); 167 wmb();
160 for (;;) { 168 for (;;) {
161 entry = rcu_dereference(mcelog.next); 169 entry = rcu_dereference_check_mce(mcelog.next);
162 for (;;) { 170 for (;;) {
163 /* 171 /*
164 * When the buffer fills up discard new entries. 172 * When the buffer fills up discard new entries.
@@ -1485,8 +1493,6 @@ static void collect_tscs(void *data)
1485 rdtscll(cpu_tsc[smp_processor_id()]); 1493 rdtscll(cpu_tsc[smp_processor_id()]);
1486} 1494}
1487 1495
1488static DEFINE_MUTEX(mce_read_mutex);
1489
1490static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, 1496static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize,
1491 loff_t *off) 1497 loff_t *off)
1492{ 1498{
@@ -1500,7 +1506,7 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize,
1500 return -ENOMEM; 1506 return -ENOMEM;
1501 1507
1502 mutex_lock(&mce_read_mutex); 1508 mutex_lock(&mce_read_mutex);
1503 next = rcu_dereference(mcelog.next); 1509 next = rcu_dereference_check_mce(mcelog.next);
1504 1510
1505 /* Only supports full reads right now */ 1511 /* Only supports full reads right now */
1506 if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) { 1512 if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) {
@@ -1565,7 +1571,7 @@ timeout:
1565static unsigned int mce_poll(struct file *file, poll_table *wait) 1571static unsigned int mce_poll(struct file *file, poll_table *wait)
1566{ 1572{
1567 poll_wait(file, &mce_wait, wait); 1573 poll_wait(file, &mce_wait, wait);
1568 if (rcu_dereference(mcelog.next)) 1574 if (rcu_dereference_check_mce(mcelog.next))
1569 return POLLIN | POLLRDNORM; 1575 return POLLIN | POLLRDNORM;
1570 return 0; 1576 return 0;
1571} 1577}
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
index cda932ca3ade..224392d8fe8c 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -21,6 +21,7 @@
21#include <linux/errno.h> 21#include <linux/errno.h>
22#include <linux/sched.h> 22#include <linux/sched.h>
23#include <linux/sysfs.h> 23#include <linux/sysfs.h>
24#include <linux/slab.h>
24#include <linux/init.h> 25#include <linux/init.h>
25#include <linux/cpu.h> 26#include <linux/cpu.h>
26#include <linux/smp.h> 27#include <linux/smp.h>
diff --git a/arch/x86/kernel/cpu/mcheck/mce_intel.c b/arch/x86/kernel/cpu/mcheck/mce_intel.c
index 7c785634af2b..62b48e40920a 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_intel.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_intel.c
@@ -5,6 +5,7 @@
5 * Author: Andi Kleen 5 * Author: Andi Kleen
6 */ 6 */
7 7
8#include <linux/gfp.h>
8#include <linux/init.h> 9#include <linux/init.h>
9#include <linux/interrupt.h> 10#include <linux/interrupt.h>
10#include <linux/percpu.h> 11#include <linux/percpu.h>
@@ -95,7 +96,7 @@ static void cmci_discover(int banks, int boot)
95 96
96 /* Already owned by someone else? */ 97 /* Already owned by someone else? */
97 if (val & CMCI_EN) { 98 if (val & CMCI_EN) {
98 if (test_and_clear_bit(i, owned) || boot) 99 if (test_and_clear_bit(i, owned) && !boot)
99 print_update("SHD", &hdr, i); 100 print_update("SHD", &hdr, i);
100 __clear_bit(i, __get_cpu_var(mce_poll_banks)); 101 __clear_bit(i, __get_cpu_var(mce_poll_banks));
101 continue; 102 continue;
@@ -107,7 +108,7 @@ static void cmci_discover(int banks, int boot)
107 108
108 /* Did the enable bit stick? -- the bank supports CMCI */ 109 /* Did the enable bit stick? -- the bank supports CMCI */
109 if (val & CMCI_EN) { 110 if (val & CMCI_EN) {
110 if (!test_and_set_bit(i, owned) || boot) 111 if (!test_and_set_bit(i, owned) && !boot)
111 print_update("CMCI", &hdr, i); 112 print_update("CMCI", &hdr, i);
112 __clear_bit(i, __get_cpu_var(mce_poll_banks)); 113 __clear_bit(i, __get_cpu_var(mce_poll_banks));
113 } else { 114 } else {
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c
index 9aa5dc76ff4a..fd31a441c61c 100644
--- a/arch/x86/kernel/cpu/mtrr/generic.c
+++ b/arch/x86/kernel/cpu/mtrr/generic.c
@@ -6,7 +6,6 @@
6 6
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/slab.h>
10#include <linux/io.h> 9#include <linux/io.h>
11#include <linux/mm.h> 10#include <linux/mm.h>
12 11
diff --git a/arch/x86/kernel/cpu/mtrr/if.c b/arch/x86/kernel/cpu/mtrr/if.c
index e006e56f699c..79289632cb27 100644
--- a/arch/x86/kernel/cpu/mtrr/if.c
+++ b/arch/x86/kernel/cpu/mtrr/if.c
@@ -5,6 +5,7 @@
5#include <linux/module.h> 5#include <linux/module.h>
6#include <linux/ctype.h> 6#include <linux/ctype.h>
7#include <linux/string.h> 7#include <linux/string.h>
8#include <linux/slab.h>
8#include <linux/init.h> 9#include <linux/init.h>
9 10
10#define LINE_SIZE 80 11#define LINE_SIZE 80
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index b1fbdeecf6c9..db5bdc8addf8 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -21,6 +21,7 @@
21#include <linux/kdebug.h> 21#include <linux/kdebug.h>
22#include <linux/sched.h> 22#include <linux/sched.h>
23#include <linux/uaccess.h> 23#include <linux/uaccess.h>
24#include <linux/slab.h>
24#include <linux/highmem.h> 25#include <linux/highmem.h>
25#include <linux/cpu.h> 26#include <linux/cpu.h>
26#include <linux/bitops.h> 27#include <linux/bitops.h>
@@ -28,6 +29,7 @@
28#include <asm/apic.h> 29#include <asm/apic.h>
29#include <asm/stacktrace.h> 30#include <asm/stacktrace.h>
30#include <asm/nmi.h> 31#include <asm/nmi.h>
32#include <asm/compat.h>
31 33
32static u64 perf_event_mask __read_mostly; 34static u64 perf_event_mask __read_mostly;
33 35
@@ -73,10 +75,10 @@ struct debug_store {
73struct event_constraint { 75struct event_constraint {
74 union { 76 union {
75 unsigned long idxmsk[BITS_TO_LONGS(X86_PMC_IDX_MAX)]; 77 unsigned long idxmsk[BITS_TO_LONGS(X86_PMC_IDX_MAX)];
76 u64 idxmsk64[1]; 78 u64 idxmsk64;
77 }; 79 };
78 int code; 80 u64 code;
79 int cmask; 81 u64 cmask;
80 int weight; 82 int weight;
81}; 83};
82 84
@@ -103,7 +105,7 @@ struct cpu_hw_events {
103}; 105};
104 106
105#define __EVENT_CONSTRAINT(c, n, m, w) {\ 107#define __EVENT_CONSTRAINT(c, n, m, w) {\
106 { .idxmsk64[0] = (n) }, \ 108 { .idxmsk64 = (n) }, \
107 .code = (c), \ 109 .code = (c), \
108 .cmask = (m), \ 110 .cmask = (m), \
109 .weight = (w), \ 111 .weight = (w), \
@@ -116,7 +118,7 @@ struct cpu_hw_events {
116 EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVTSEL_MASK) 118 EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVTSEL_MASK)
117 119
118#define FIXED_EVENT_CONSTRAINT(c, n) \ 120#define FIXED_EVENT_CONSTRAINT(c, n) \
119 EVENT_CONSTRAINT(c, n, INTEL_ARCH_FIXED_MASK) 121 EVENT_CONSTRAINT(c, (1ULL << (32+n)), INTEL_ARCH_FIXED_MASK)
120 122
121#define EVENT_CONSTRAINT_END \ 123#define EVENT_CONSTRAINT_END \
122 EVENT_CONSTRAINT(0, 0, 0) 124 EVENT_CONSTRAINT(0, 0, 0)
@@ -133,8 +135,8 @@ struct x86_pmu {
133 int (*handle_irq)(struct pt_regs *); 135 int (*handle_irq)(struct pt_regs *);
134 void (*disable_all)(void); 136 void (*disable_all)(void);
135 void (*enable_all)(void); 137 void (*enable_all)(void);
136 void (*enable)(struct hw_perf_event *, int); 138 void (*enable)(struct perf_event *);
137 void (*disable)(struct hw_perf_event *, int); 139 void (*disable)(struct perf_event *);
138 unsigned eventsel; 140 unsigned eventsel;
139 unsigned perfctr; 141 unsigned perfctr;
140 u64 (*event_map)(int); 142 u64 (*event_map)(int);
@@ -157,6 +159,11 @@ struct x86_pmu {
157 void (*put_event_constraints)(struct cpu_hw_events *cpuc, 159 void (*put_event_constraints)(struct cpu_hw_events *cpuc,
158 struct perf_event *event); 160 struct perf_event *event);
159 struct event_constraint *event_constraints; 161 struct event_constraint *event_constraints;
162
163 int (*cpu_prepare)(int cpu);
164 void (*cpu_starting)(int cpu);
165 void (*cpu_dying)(int cpu);
166 void (*cpu_dead)(int cpu);
160}; 167};
161 168
162static struct x86_pmu x86_pmu __read_mostly; 169static struct x86_pmu x86_pmu __read_mostly;
@@ -165,8 +172,7 @@ static DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = {
165 .enabled = 1, 172 .enabled = 1,
166}; 173};
167 174
168static int x86_perf_event_set_period(struct perf_event *event, 175static int x86_perf_event_set_period(struct perf_event *event);
169 struct hw_perf_event *hwc, int idx);
170 176
171/* 177/*
172 * Generalized hw caching related hw_event table, filled 178 * Generalized hw caching related hw_event table, filled
@@ -189,11 +195,12 @@ static u64 __read_mostly hw_cache_event_ids
189 * Returns the delta events processed. 195 * Returns the delta events processed.
190 */ 196 */
191static u64 197static u64
192x86_perf_event_update(struct perf_event *event, 198x86_perf_event_update(struct perf_event *event)
193 struct hw_perf_event *hwc, int idx)
194{ 199{
200 struct hw_perf_event *hwc = &event->hw;
195 int shift = 64 - x86_pmu.event_bits; 201 int shift = 64 - x86_pmu.event_bits;
196 u64 prev_raw_count, new_raw_count; 202 u64 prev_raw_count, new_raw_count;
203 int idx = hwc->idx;
197 s64 delta; 204 s64 delta;
198 205
199 if (idx == X86_PMC_IDX_FIXED_BTS) 206 if (idx == X86_PMC_IDX_FIXED_BTS)
@@ -293,7 +300,7 @@ static inline bool bts_available(void)
293 return x86_pmu.enable_bts != NULL; 300 return x86_pmu.enable_bts != NULL;
294} 301}
295 302
296static inline void init_debug_store_on_cpu(int cpu) 303static void init_debug_store_on_cpu(int cpu)
297{ 304{
298 struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds; 305 struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds;
299 306
@@ -305,7 +312,7 @@ static inline void init_debug_store_on_cpu(int cpu)
305 (u32)((u64)(unsigned long)ds >> 32)); 312 (u32)((u64)(unsigned long)ds >> 32));
306} 313}
307 314
308static inline void fini_debug_store_on_cpu(int cpu) 315static void fini_debug_store_on_cpu(int cpu)
309{ 316{
310 if (!per_cpu(cpu_hw_events, cpu).ds) 317 if (!per_cpu(cpu_hw_events, cpu).ds)
311 return; 318 return;
@@ -503,6 +510,9 @@ static int __hw_perf_event_init(struct perf_event *event)
503 */ 510 */
504 if (attr->type == PERF_TYPE_RAW) { 511 if (attr->type == PERF_TYPE_RAW) {
505 hwc->config |= x86_pmu.raw_event(attr->config); 512 hwc->config |= x86_pmu.raw_event(attr->config);
513 if ((hwc->config & ARCH_PERFMON_EVENTSEL_ANY) &&
514 perf_paranoid_cpu() && !capable(CAP_SYS_ADMIN))
515 return -EACCES;
506 return 0; 516 return 0;
507 } 517 }
508 518
@@ -553,9 +563,9 @@ static void x86_pmu_disable_all(void)
553 if (!test_bit(idx, cpuc->active_mask)) 563 if (!test_bit(idx, cpuc->active_mask))
554 continue; 564 continue;
555 rdmsrl(x86_pmu.eventsel + idx, val); 565 rdmsrl(x86_pmu.eventsel + idx, val);
556 if (!(val & ARCH_PERFMON_EVENTSEL0_ENABLE)) 566 if (!(val & ARCH_PERFMON_EVENTSEL_ENABLE))
557 continue; 567 continue;
558 val &= ~ARCH_PERFMON_EVENTSEL0_ENABLE; 568 val &= ~ARCH_PERFMON_EVENTSEL_ENABLE;
559 wrmsrl(x86_pmu.eventsel + idx, val); 569 wrmsrl(x86_pmu.eventsel + idx, val);
560 } 570 }
561} 571}
@@ -590,7 +600,7 @@ static void x86_pmu_enable_all(void)
590 continue; 600 continue;
591 601
592 val = event->hw.config; 602 val = event->hw.config;
593 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 603 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
594 wrmsrl(x86_pmu.eventsel + idx, val); 604 wrmsrl(x86_pmu.eventsel + idx, val);
595 } 605 }
596} 606}
@@ -612,8 +622,8 @@ static int x86_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign)
612 bitmap_zero(used_mask, X86_PMC_IDX_MAX); 622 bitmap_zero(used_mask, X86_PMC_IDX_MAX);
613 623
614 for (i = 0; i < n; i++) { 624 for (i = 0; i < n; i++) {
615 constraints[i] = 625 c = x86_pmu.get_event_constraints(cpuc, cpuc->event_list[i]);
616 x86_pmu.get_event_constraints(cpuc, cpuc->event_list[i]); 626 constraints[i] = c;
617 } 627 }
618 628
619 /* 629 /*
@@ -635,7 +645,7 @@ static int x86_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign)
635 if (test_bit(hwc->idx, used_mask)) 645 if (test_bit(hwc->idx, used_mask))
636 break; 646 break;
637 647
638 set_bit(hwc->idx, used_mask); 648 __set_bit(hwc->idx, used_mask);
639 if (assign) 649 if (assign)
640 assign[i] = hwc->idx; 650 assign[i] = hwc->idx;
641 } 651 }
@@ -684,7 +694,7 @@ static int x86_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign)
684 if (j == X86_PMC_IDX_MAX) 694 if (j == X86_PMC_IDX_MAX)
685 break; 695 break;
686 696
687 set_bit(j, used_mask); 697 __set_bit(j, used_mask);
688 698
689 if (assign) 699 if (assign)
690 assign[i] = j; 700 assign[i] = j;
@@ -777,6 +787,7 @@ static inline int match_prev_assignment(struct hw_perf_event *hwc,
777 hwc->last_tag == cpuc->tags[i]; 787 hwc->last_tag == cpuc->tags[i];
778} 788}
779 789
790static int x86_pmu_start(struct perf_event *event);
780static void x86_pmu_stop(struct perf_event *event); 791static void x86_pmu_stop(struct perf_event *event);
781 792
782void hw_perf_enable(void) 793void hw_perf_enable(void)
@@ -793,6 +804,7 @@ void hw_perf_enable(void)
793 return; 804 return;
794 805
795 if (cpuc->n_added) { 806 if (cpuc->n_added) {
807 int n_running = cpuc->n_events - cpuc->n_added;
796 /* 808 /*
797 * apply assignment obtained either from 809 * apply assignment obtained either from
798 * hw_perf_group_sched_in() or x86_pmu_enable() 810 * hw_perf_group_sched_in() or x86_pmu_enable()
@@ -800,8 +812,7 @@ void hw_perf_enable(void)
800 * step1: save events moving to new counters 812 * step1: save events moving to new counters
801 * step2: reprogram moved events into new counters 813 * step2: reprogram moved events into new counters
802 */ 814 */
803 for (i = 0; i < cpuc->n_events; i++) { 815 for (i = 0; i < n_running; i++) {
804
805 event = cpuc->event_list[i]; 816 event = cpuc->event_list[i];
806 hwc = &event->hw; 817 hwc = &event->hw;
807 818
@@ -816,29 +827,18 @@ void hw_perf_enable(void)
816 continue; 827 continue;
817 828
818 x86_pmu_stop(event); 829 x86_pmu_stop(event);
819
820 hwc->idx = -1;
821 } 830 }
822 831
823 for (i = 0; i < cpuc->n_events; i++) { 832 for (i = 0; i < cpuc->n_events; i++) {
824
825 event = cpuc->event_list[i]; 833 event = cpuc->event_list[i];
826 hwc = &event->hw; 834 hwc = &event->hw;
827 835
828 if (hwc->idx == -1) { 836 if (!match_prev_assignment(hwc, cpuc, i))
829 x86_assign_hw_event(event, cpuc, i); 837 x86_assign_hw_event(event, cpuc, i);
830 x86_perf_event_set_period(event, hwc, hwc->idx); 838 else if (i < n_running)
831 } 839 continue;
832 /*
833 * need to mark as active because x86_pmu_disable()
834 * clear active_mask and events[] yet it preserves
835 * idx
836 */
837 set_bit(hwc->idx, cpuc->active_mask);
838 cpuc->events[hwc->idx] = event;
839 840
840 x86_pmu.enable(hwc, hwc->idx); 841 x86_pmu_start(event);
841 perf_event_update_userpage(event);
842 } 842 }
843 cpuc->n_added = 0; 843 cpuc->n_added = 0;
844 perf_events_lapic_init(); 844 perf_events_lapic_init();
@@ -850,15 +850,16 @@ void hw_perf_enable(void)
850 x86_pmu.enable_all(); 850 x86_pmu.enable_all();
851} 851}
852 852
853static inline void __x86_pmu_enable_event(struct hw_perf_event *hwc, int idx) 853static inline void __x86_pmu_enable_event(struct hw_perf_event *hwc)
854{ 854{
855 (void)checking_wrmsrl(hwc->config_base + idx, 855 (void)checking_wrmsrl(hwc->config_base + hwc->idx,
856 hwc->config | ARCH_PERFMON_EVENTSEL0_ENABLE); 856 hwc->config | ARCH_PERFMON_EVENTSEL_ENABLE);
857} 857}
858 858
859static inline void x86_pmu_disable_event(struct hw_perf_event *hwc, int idx) 859static inline void x86_pmu_disable_event(struct perf_event *event)
860{ 860{
861 (void)checking_wrmsrl(hwc->config_base + idx, hwc->config); 861 struct hw_perf_event *hwc = &event->hw;
862 (void)checking_wrmsrl(hwc->config_base + hwc->idx, hwc->config);
862} 863}
863 864
864static DEFINE_PER_CPU(u64 [X86_PMC_IDX_MAX], pmc_prev_left); 865static DEFINE_PER_CPU(u64 [X86_PMC_IDX_MAX], pmc_prev_left);
@@ -868,12 +869,12 @@ static DEFINE_PER_CPU(u64 [X86_PMC_IDX_MAX], pmc_prev_left);
868 * To be called with the event disabled in hw: 869 * To be called with the event disabled in hw:
869 */ 870 */
870static int 871static int
871x86_perf_event_set_period(struct perf_event *event, 872x86_perf_event_set_period(struct perf_event *event)
872 struct hw_perf_event *hwc, int idx)
873{ 873{
874 struct hw_perf_event *hwc = &event->hw;
874 s64 left = atomic64_read(&hwc->period_left); 875 s64 left = atomic64_read(&hwc->period_left);
875 s64 period = hwc->sample_period; 876 s64 period = hwc->sample_period;
876 int err, ret = 0; 877 int err, ret = 0, idx = hwc->idx;
877 878
878 if (idx == X86_PMC_IDX_FIXED_BTS) 879 if (idx == X86_PMC_IDX_FIXED_BTS)
879 return 0; 880 return 0;
@@ -919,11 +920,11 @@ x86_perf_event_set_period(struct perf_event *event,
919 return ret; 920 return ret;
920} 921}
921 922
922static void x86_pmu_enable_event(struct hw_perf_event *hwc, int idx) 923static void x86_pmu_enable_event(struct perf_event *event)
923{ 924{
924 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 925 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
925 if (cpuc->enabled) 926 if (cpuc->enabled)
926 __x86_pmu_enable_event(hwc, idx); 927 __x86_pmu_enable_event(&event->hw);
927} 928}
928 929
929/* 930/*
@@ -959,34 +960,32 @@ static int x86_pmu_enable(struct perf_event *event)
959 memcpy(cpuc->assign, assign, n*sizeof(int)); 960 memcpy(cpuc->assign, assign, n*sizeof(int));
960 961
961 cpuc->n_events = n; 962 cpuc->n_events = n;
962 cpuc->n_added = n - n0; 963 cpuc->n_added += n - n0;
963 964
964 return 0; 965 return 0;
965} 966}
966 967
967static int x86_pmu_start(struct perf_event *event) 968static int x86_pmu_start(struct perf_event *event)
968{ 969{
969 struct hw_perf_event *hwc = &event->hw; 970 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
971 int idx = event->hw.idx;
970 972
971 if (hwc->idx == -1) 973 if (idx == -1)
972 return -EAGAIN; 974 return -EAGAIN;
973 975
974 x86_perf_event_set_period(event, hwc, hwc->idx); 976 x86_perf_event_set_period(event);
975 x86_pmu.enable(hwc, hwc->idx); 977 cpuc->events[idx] = event;
978 __set_bit(idx, cpuc->active_mask);
979 x86_pmu.enable(event);
980 perf_event_update_userpage(event);
976 981
977 return 0; 982 return 0;
978} 983}
979 984
980static void x86_pmu_unthrottle(struct perf_event *event) 985static void x86_pmu_unthrottle(struct perf_event *event)
981{ 986{
982 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 987 int ret = x86_pmu_start(event);
983 struct hw_perf_event *hwc = &event->hw; 988 WARN_ON_ONCE(ret);
984
985 if (WARN_ON_ONCE(hwc->idx >= X86_PMC_IDX_MAX ||
986 cpuc->events[hwc->idx] != event))
987 return;
988
989 x86_pmu.enable(hwc, hwc->idx);
990} 989}
991 990
992void perf_event_print_debug(void) 991void perf_event_print_debug(void)
@@ -1046,18 +1045,16 @@ static void x86_pmu_stop(struct perf_event *event)
1046 struct hw_perf_event *hwc = &event->hw; 1045 struct hw_perf_event *hwc = &event->hw;
1047 int idx = hwc->idx; 1046 int idx = hwc->idx;
1048 1047
1049 /* 1048 if (!__test_and_clear_bit(idx, cpuc->active_mask))
1050 * Must be done before we disable, otherwise the nmi handler 1049 return;
1051 * could reenable again: 1050
1052 */ 1051 x86_pmu.disable(event);
1053 clear_bit(idx, cpuc->active_mask);
1054 x86_pmu.disable(hwc, idx);
1055 1052
1056 /* 1053 /*
1057 * Drain the remaining delta count out of a event 1054 * Drain the remaining delta count out of a event
1058 * that we are disabling: 1055 * that we are disabling:
1059 */ 1056 */
1060 x86_perf_event_update(event, hwc, idx); 1057 x86_perf_event_update(event);
1061 1058
1062 cpuc->events[idx] = NULL; 1059 cpuc->events[idx] = NULL;
1063} 1060}
@@ -1094,8 +1091,7 @@ static int x86_pmu_handle_irq(struct pt_regs *regs)
1094 int idx, handled = 0; 1091 int idx, handled = 0;
1095 u64 val; 1092 u64 val;
1096 1093
1097 data.addr = 0; 1094 perf_sample_data_init(&data, 0);
1098 data.raw = NULL;
1099 1095
1100 cpuc = &__get_cpu_var(cpu_hw_events); 1096 cpuc = &__get_cpu_var(cpu_hw_events);
1101 1097
@@ -1106,7 +1102,7 @@ static int x86_pmu_handle_irq(struct pt_regs *regs)
1106 event = cpuc->events[idx]; 1102 event = cpuc->events[idx];
1107 hwc = &event->hw; 1103 hwc = &event->hw;
1108 1104
1109 val = x86_perf_event_update(event, hwc, idx); 1105 val = x86_perf_event_update(event);
1110 if (val & (1ULL << (x86_pmu.event_bits - 1))) 1106 if (val & (1ULL << (x86_pmu.event_bits - 1)))
1111 continue; 1107 continue;
1112 1108
@@ -1116,11 +1112,11 @@ static int x86_pmu_handle_irq(struct pt_regs *regs)
1116 handled = 1; 1112 handled = 1;
1117 data.period = event->hw.last_period; 1113 data.period = event->hw.last_period;
1118 1114
1119 if (!x86_perf_event_set_period(event, hwc, idx)) 1115 if (!x86_perf_event_set_period(event))
1120 continue; 1116 continue;
1121 1117
1122 if (perf_event_overflow(event, 1, &data, regs)) 1118 if (perf_event_overflow(event, 1, &data, regs))
1123 x86_pmu.disable(hwc, idx); 1119 x86_pmu_stop(event);
1124 } 1120 }
1125 1121
1126 if (handled) 1122 if (handled)
@@ -1307,7 +1303,7 @@ int hw_perf_group_sched_in(struct perf_event *leader,
1307 memcpy(cpuc->assign, assign, n0*sizeof(int)); 1303 memcpy(cpuc->assign, assign, n0*sizeof(int));
1308 1304
1309 cpuc->n_events = n0; 1305 cpuc->n_events = n0;
1310 cpuc->n_added = n1; 1306 cpuc->n_added += n1;
1311 ctx->nr_active += n1; 1307 ctx->nr_active += n1;
1312 1308
1313 /* 1309 /*
@@ -1335,6 +1331,41 @@ undo:
1335#include "perf_event_p6.c" 1331#include "perf_event_p6.c"
1336#include "perf_event_intel.c" 1332#include "perf_event_intel.c"
1337 1333
1334static int __cpuinit
1335x86_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu)
1336{
1337 unsigned int cpu = (long)hcpu;
1338 int ret = NOTIFY_OK;
1339
1340 switch (action & ~CPU_TASKS_FROZEN) {
1341 case CPU_UP_PREPARE:
1342 if (x86_pmu.cpu_prepare)
1343 ret = x86_pmu.cpu_prepare(cpu);
1344 break;
1345
1346 case CPU_STARTING:
1347 if (x86_pmu.cpu_starting)
1348 x86_pmu.cpu_starting(cpu);
1349 break;
1350
1351 case CPU_DYING:
1352 if (x86_pmu.cpu_dying)
1353 x86_pmu.cpu_dying(cpu);
1354 break;
1355
1356 case CPU_UP_CANCELED:
1357 case CPU_DEAD:
1358 if (x86_pmu.cpu_dead)
1359 x86_pmu.cpu_dead(cpu);
1360 break;
1361
1362 default:
1363 break;
1364 }
1365
1366 return ret;
1367}
1368
1338static void __init pmu_check_apic(void) 1369static void __init pmu_check_apic(void)
1339{ 1370{
1340 if (cpu_has_apic) 1371 if (cpu_has_apic)
@@ -1347,6 +1378,7 @@ static void __init pmu_check_apic(void)
1347 1378
1348void __init init_hw_perf_events(void) 1379void __init init_hw_perf_events(void)
1349{ 1380{
1381 struct event_constraint *c;
1350 int err; 1382 int err;
1351 1383
1352 pr_info("Performance Events: "); 1384 pr_info("Performance Events: ");
@@ -1395,6 +1427,16 @@ void __init init_hw_perf_events(void)
1395 __EVENT_CONSTRAINT(0, (1ULL << x86_pmu.num_events) - 1, 1427 __EVENT_CONSTRAINT(0, (1ULL << x86_pmu.num_events) - 1,
1396 0, x86_pmu.num_events); 1428 0, x86_pmu.num_events);
1397 1429
1430 if (x86_pmu.event_constraints) {
1431 for_each_event_constraint(c, x86_pmu.event_constraints) {
1432 if (c->cmask != INTEL_ARCH_FIXED_MASK)
1433 continue;
1434
1435 c->idxmsk64 |= (1ULL << x86_pmu.num_events) - 1;
1436 c->weight += x86_pmu.num_events;
1437 }
1438 }
1439
1398 pr_info("... version: %d\n", x86_pmu.version); 1440 pr_info("... version: %d\n", x86_pmu.version);
1399 pr_info("... bit width: %d\n", x86_pmu.event_bits); 1441 pr_info("... bit width: %d\n", x86_pmu.event_bits);
1400 pr_info("... generic registers: %d\n", x86_pmu.num_events); 1442 pr_info("... generic registers: %d\n", x86_pmu.num_events);
@@ -1402,11 +1444,13 @@ void __init init_hw_perf_events(void)
1402 pr_info("... max period: %016Lx\n", x86_pmu.max_period); 1444 pr_info("... max period: %016Lx\n", x86_pmu.max_period);
1403 pr_info("... fixed-purpose events: %d\n", x86_pmu.num_events_fixed); 1445 pr_info("... fixed-purpose events: %d\n", x86_pmu.num_events_fixed);
1404 pr_info("... event mask: %016Lx\n", perf_event_mask); 1446 pr_info("... event mask: %016Lx\n", perf_event_mask);
1447
1448 perf_cpu_notifier(x86_pmu_notifier);
1405} 1449}
1406 1450
1407static inline void x86_pmu_read(struct perf_event *event) 1451static inline void x86_pmu_read(struct perf_event *event)
1408{ 1452{
1409 x86_perf_event_update(event, &event->hw, event->hw.idx); 1453 x86_perf_event_update(event);
1410} 1454}
1411 1455
1412static const struct pmu pmu = { 1456static const struct pmu pmu = {
@@ -1588,14 +1632,42 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n)
1588 return len; 1632 return len;
1589} 1633}
1590 1634
1591static int copy_stack_frame(const void __user *fp, struct stack_frame *frame) 1635#ifdef CONFIG_COMPAT
1636static inline int
1637perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
1592{ 1638{
1593 unsigned long bytes; 1639 /* 32-bit process in 64-bit kernel. */
1640 struct stack_frame_ia32 frame;
1641 const void __user *fp;
1594 1642
1595 bytes = copy_from_user_nmi(frame, fp, sizeof(*frame)); 1643 if (!test_thread_flag(TIF_IA32))
1644 return 0;
1596 1645
1597 return bytes == sizeof(*frame); 1646 fp = compat_ptr(regs->bp);
1647 while (entry->nr < PERF_MAX_STACK_DEPTH) {
1648 unsigned long bytes;
1649 frame.next_frame = 0;
1650 frame.return_address = 0;
1651
1652 bytes = copy_from_user_nmi(&frame, fp, sizeof(frame));
1653 if (bytes != sizeof(frame))
1654 break;
1655
1656 if (fp < compat_ptr(regs->sp))
1657 break;
1658
1659 callchain_store(entry, frame.return_address);
1660 fp = compat_ptr(frame.next_frame);
1661 }
1662 return 1;
1663}
1664#else
1665static inline int
1666perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry)
1667{
1668 return 0;
1598} 1669}
1670#endif
1599 1671
1600static void 1672static void
1601perf_callchain_user(struct pt_regs *regs, struct perf_callchain_entry *entry) 1673perf_callchain_user(struct pt_regs *regs, struct perf_callchain_entry *entry)
@@ -1611,11 +1683,16 @@ perf_callchain_user(struct pt_regs *regs, struct perf_callchain_entry *entry)
1611 callchain_store(entry, PERF_CONTEXT_USER); 1683 callchain_store(entry, PERF_CONTEXT_USER);
1612 callchain_store(entry, regs->ip); 1684 callchain_store(entry, regs->ip);
1613 1685
1686 if (perf_callchain_user32(regs, entry))
1687 return;
1688
1614 while (entry->nr < PERF_MAX_STACK_DEPTH) { 1689 while (entry->nr < PERF_MAX_STACK_DEPTH) {
1690 unsigned long bytes;
1615 frame.next_frame = NULL; 1691 frame.next_frame = NULL;
1616 frame.return_address = 0; 1692 frame.return_address = 0;
1617 1693
1618 if (!copy_stack_frame(fp, &frame)) 1694 bytes = copy_from_user_nmi(&frame, fp, sizeof(frame));
1695 if (bytes != sizeof(frame))
1619 break; 1696 break;
1620 1697
1621 if ((unsigned long)fp < regs->sp) 1698 if ((unsigned long)fp < regs->sp)
@@ -1662,28 +1739,14 @@ struct perf_callchain_entry *perf_callchain(struct pt_regs *regs)
1662 return entry; 1739 return entry;
1663} 1740}
1664 1741
1665void hw_perf_event_setup_online(int cpu) 1742void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip)
1666{
1667 init_debug_store_on_cpu(cpu);
1668
1669 switch (boot_cpu_data.x86_vendor) {
1670 case X86_VENDOR_AMD:
1671 amd_pmu_cpu_online(cpu);
1672 break;
1673 default:
1674 return;
1675 }
1676}
1677
1678void hw_perf_event_setup_offline(int cpu)
1679{ 1743{
1680 init_debug_store_on_cpu(cpu); 1744 regs->ip = ip;
1681 1745 /*
1682 switch (boot_cpu_data.x86_vendor) { 1746 * perf_arch_fetch_caller_regs adds another call, we need to increment
1683 case X86_VENDOR_AMD: 1747 * the skip level
1684 amd_pmu_cpu_offline(cpu); 1748 */
1685 break; 1749 regs->bp = rewind_frame_pointer(skip + 1);
1686 default: 1750 regs->cs = __KERNEL_CS;
1687 return; 1751 local_save_flags(regs->flags);
1688 }
1689} 1752}
diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
index 8f3dbfda3c4f..db6f7d4056e1 100644
--- a/arch/x86/kernel/cpu/perf_event_amd.c
+++ b/arch/x86/kernel/cpu/perf_event_amd.c
@@ -137,6 +137,13 @@ static inline int amd_is_nb_event(struct hw_perf_event *hwc)
137 return (hwc->config & 0xe0) == 0xe0; 137 return (hwc->config & 0xe0) == 0xe0;
138} 138}
139 139
140static inline int amd_has_nb(struct cpu_hw_events *cpuc)
141{
142 struct amd_nb *nb = cpuc->amd_nb;
143
144 return nb && nb->nb_id != -1;
145}
146
140static void amd_put_event_constraints(struct cpu_hw_events *cpuc, 147static void amd_put_event_constraints(struct cpu_hw_events *cpuc,
141 struct perf_event *event) 148 struct perf_event *event)
142{ 149{
@@ -147,7 +154,7 @@ static void amd_put_event_constraints(struct cpu_hw_events *cpuc,
147 /* 154 /*
148 * only care about NB events 155 * only care about NB events
149 */ 156 */
150 if (!(nb && amd_is_nb_event(hwc))) 157 if (!(amd_has_nb(cpuc) && amd_is_nb_event(hwc)))
151 return; 158 return;
152 159
153 /* 160 /*
@@ -214,7 +221,7 @@ amd_get_event_constraints(struct cpu_hw_events *cpuc, struct perf_event *event)
214 /* 221 /*
215 * if not NB event or no NB, then no constraints 222 * if not NB event or no NB, then no constraints
216 */ 223 */
217 if (!(nb && amd_is_nb_event(hwc))) 224 if (!(amd_has_nb(cpuc) && amd_is_nb_event(hwc)))
218 return &unconstrained; 225 return &unconstrained;
219 226
220 /* 227 /*
@@ -271,28 +278,6 @@ done:
271 return &emptyconstraint; 278 return &emptyconstraint;
272} 279}
273 280
274static __initconst struct x86_pmu amd_pmu = {
275 .name = "AMD",
276 .handle_irq = x86_pmu_handle_irq,
277 .disable_all = x86_pmu_disable_all,
278 .enable_all = x86_pmu_enable_all,
279 .enable = x86_pmu_enable_event,
280 .disable = x86_pmu_disable_event,
281 .eventsel = MSR_K7_EVNTSEL0,
282 .perfctr = MSR_K7_PERFCTR0,
283 .event_map = amd_pmu_event_map,
284 .raw_event = amd_pmu_raw_event,
285 .max_events = ARRAY_SIZE(amd_perfmon_event_map),
286 .num_events = 4,
287 .event_bits = 48,
288 .event_mask = (1ULL << 48) - 1,
289 .apic = 1,
290 /* use highest bit to detect overflow */
291 .max_period = (1ULL << 47) - 1,
292 .get_event_constraints = amd_get_event_constraints,
293 .put_event_constraints = amd_put_event_constraints
294};
295
296static struct amd_nb *amd_alloc_nb(int cpu, int nb_id) 281static struct amd_nb *amd_alloc_nb(int cpu, int nb_id)
297{ 282{
298 struct amd_nb *nb; 283 struct amd_nb *nb;
@@ -309,57 +294,61 @@ static struct amd_nb *amd_alloc_nb(int cpu, int nb_id)
309 * initialize all possible NB constraints 294 * initialize all possible NB constraints
310 */ 295 */
311 for (i = 0; i < x86_pmu.num_events; i++) { 296 for (i = 0; i < x86_pmu.num_events; i++) {
312 set_bit(i, nb->event_constraints[i].idxmsk); 297 __set_bit(i, nb->event_constraints[i].idxmsk);
313 nb->event_constraints[i].weight = 1; 298 nb->event_constraints[i].weight = 1;
314 } 299 }
315 return nb; 300 return nb;
316} 301}
317 302
318static void amd_pmu_cpu_online(int cpu) 303static int amd_pmu_cpu_prepare(int cpu)
319{ 304{
320 struct cpu_hw_events *cpu1, *cpu2; 305 struct cpu_hw_events *cpuc = &per_cpu(cpu_hw_events, cpu);
321 struct amd_nb *nb = NULL; 306
307 WARN_ON_ONCE(cpuc->amd_nb);
308
309 if (boot_cpu_data.x86_max_cores < 2)
310 return NOTIFY_OK;
311
312 cpuc->amd_nb = amd_alloc_nb(cpu, -1);
313 if (!cpuc->amd_nb)
314 return NOTIFY_BAD;
315
316 return NOTIFY_OK;
317}
318
319static void amd_pmu_cpu_starting(int cpu)
320{
321 struct cpu_hw_events *cpuc = &per_cpu(cpu_hw_events, cpu);
322 struct amd_nb *nb;
322 int i, nb_id; 323 int i, nb_id;
323 324
324 if (boot_cpu_data.x86_max_cores < 2) 325 if (boot_cpu_data.x86_max_cores < 2)
325 return; 326 return;
326 327
327 /*
328 * function may be called too early in the
329 * boot process, in which case nb_id is bogus
330 */
331 nb_id = amd_get_nb_id(cpu); 328 nb_id = amd_get_nb_id(cpu);
332 if (nb_id == BAD_APICID) 329 WARN_ON_ONCE(nb_id == BAD_APICID);
333 return;
334
335 cpu1 = &per_cpu(cpu_hw_events, cpu);
336 cpu1->amd_nb = NULL;
337 330
338 raw_spin_lock(&amd_nb_lock); 331 raw_spin_lock(&amd_nb_lock);
339 332
340 for_each_online_cpu(i) { 333 for_each_online_cpu(i) {
341 cpu2 = &per_cpu(cpu_hw_events, i); 334 nb = per_cpu(cpu_hw_events, i).amd_nb;
342 nb = cpu2->amd_nb; 335 if (WARN_ON_ONCE(!nb))
343 if (!nb)
344 continue; 336 continue;
345 if (nb->nb_id == nb_id)
346 goto found;
347 }
348 337
349 nb = amd_alloc_nb(cpu, nb_id); 338 if (nb->nb_id == nb_id) {
350 if (!nb) { 339 kfree(cpuc->amd_nb);
351 pr_err("perf_events: failed NB allocation for CPU%d\n", cpu); 340 cpuc->amd_nb = nb;
352 raw_spin_unlock(&amd_nb_lock); 341 break;
353 return; 342 }
354 } 343 }
355found: 344
356 nb->refcnt++; 345 cpuc->amd_nb->nb_id = nb_id;
357 cpu1->amd_nb = nb; 346 cpuc->amd_nb->refcnt++;
358 347
359 raw_spin_unlock(&amd_nb_lock); 348 raw_spin_unlock(&amd_nb_lock);
360} 349}
361 350
362static void amd_pmu_cpu_offline(int cpu) 351static void amd_pmu_cpu_dead(int cpu)
363{ 352{
364 struct cpu_hw_events *cpuhw; 353 struct cpu_hw_events *cpuhw;
365 354
@@ -370,14 +359,44 @@ static void amd_pmu_cpu_offline(int cpu)
370 359
371 raw_spin_lock(&amd_nb_lock); 360 raw_spin_lock(&amd_nb_lock);
372 361
373 if (--cpuhw->amd_nb->refcnt == 0) 362 if (cpuhw->amd_nb) {
374 kfree(cpuhw->amd_nb); 363 struct amd_nb *nb = cpuhw->amd_nb;
364
365 if (nb->nb_id == -1 || --nb->refcnt == 0)
366 kfree(nb);
375 367
376 cpuhw->amd_nb = NULL; 368 cpuhw->amd_nb = NULL;
369 }
377 370
378 raw_spin_unlock(&amd_nb_lock); 371 raw_spin_unlock(&amd_nb_lock);
379} 372}
380 373
374static __initconst struct x86_pmu amd_pmu = {
375 .name = "AMD",
376 .handle_irq = x86_pmu_handle_irq,
377 .disable_all = x86_pmu_disable_all,
378 .enable_all = x86_pmu_enable_all,
379 .enable = x86_pmu_enable_event,
380 .disable = x86_pmu_disable_event,
381 .eventsel = MSR_K7_EVNTSEL0,
382 .perfctr = MSR_K7_PERFCTR0,
383 .event_map = amd_pmu_event_map,
384 .raw_event = amd_pmu_raw_event,
385 .max_events = ARRAY_SIZE(amd_perfmon_event_map),
386 .num_events = 4,
387 .event_bits = 48,
388 .event_mask = (1ULL << 48) - 1,
389 .apic = 1,
390 /* use highest bit to detect overflow */
391 .max_period = (1ULL << 47) - 1,
392 .get_event_constraints = amd_get_event_constraints,
393 .put_event_constraints = amd_put_event_constraints,
394
395 .cpu_prepare = amd_pmu_cpu_prepare,
396 .cpu_starting = amd_pmu_cpu_starting,
397 .cpu_dead = amd_pmu_cpu_dead,
398};
399
381static __init int amd_pmu_init(void) 400static __init int amd_pmu_init(void)
382{ 401{
383 /* Performance-monitoring supported from K7 and later: */ 402 /* Performance-monitoring supported from K7 and later: */
@@ -390,11 +409,6 @@ static __init int amd_pmu_init(void)
390 memcpy(hw_cache_event_ids, amd_hw_cache_event_ids, 409 memcpy(hw_cache_event_ids, amd_hw_cache_event_ids,
391 sizeof(hw_cache_event_ids)); 410 sizeof(hw_cache_event_ids));
392 411
393 /*
394 * explicitly initialize the boot cpu, other cpus will get
395 * the cpu hotplug callbacks from smp_init()
396 */
397 amd_pmu_cpu_online(smp_processor_id());
398 return 0; 412 return 0;
399} 413}
400 414
@@ -405,12 +419,4 @@ static int amd_pmu_init(void)
405 return 0; 419 return 0;
406} 420}
407 421
408static void amd_pmu_cpu_online(int cpu)
409{
410}
411
412static void amd_pmu_cpu_offline(int cpu)
413{
414}
415
416#endif 422#endif
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
index 977e7544738c..9c794ac87837 100644
--- a/arch/x86/kernel/cpu/perf_event_intel.c
+++ b/arch/x86/kernel/cpu/perf_event_intel.c
@@ -1,7 +1,7 @@
1#ifdef CONFIG_CPU_SUP_INTEL 1#ifdef CONFIG_CPU_SUP_INTEL
2 2
3/* 3/*
4 * Intel PerfMon v3. Used on Core2 and later. 4 * Intel PerfMon, used on Core and later.
5 */ 5 */
6static const u64 intel_perfmon_event_map[] = 6static const u64 intel_perfmon_event_map[] =
7{ 7{
@@ -27,8 +27,14 @@ static struct event_constraint intel_core_event_constraints[] =
27 27
28static struct event_constraint intel_core2_event_constraints[] = 28static struct event_constraint intel_core2_event_constraints[] =
29{ 29{
30 FIXED_EVENT_CONSTRAINT(0xc0, (0x3|(1ULL<<32))), /* INSTRUCTIONS_RETIRED */ 30 FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */
31 FIXED_EVENT_CONSTRAINT(0x3c, (0x3|(1ULL<<33))), /* UNHALTED_CORE_CYCLES */ 31 FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */
32 /*
33 * Core2 has Fixed Counter 2 listed as CPU_CLK_UNHALTED.REF and event
34 * 0x013c as CPU_CLK_UNHALTED.BUS and specifies there is a fixed
35 * ratio between these counters.
36 */
37 /* FIXED_EVENT_CONSTRAINT(0x013c, 2), CPU_CLK_UNHALTED.REF */
32 INTEL_EVENT_CONSTRAINT(0x10, 0x1), /* FP_COMP_OPS_EXE */ 38 INTEL_EVENT_CONSTRAINT(0x10, 0x1), /* FP_COMP_OPS_EXE */
33 INTEL_EVENT_CONSTRAINT(0x11, 0x2), /* FP_ASSIST */ 39 INTEL_EVENT_CONSTRAINT(0x11, 0x2), /* FP_ASSIST */
34 INTEL_EVENT_CONSTRAINT(0x12, 0x2), /* MUL */ 40 INTEL_EVENT_CONSTRAINT(0x12, 0x2), /* MUL */
@@ -37,14 +43,16 @@ static struct event_constraint intel_core2_event_constraints[] =
37 INTEL_EVENT_CONSTRAINT(0x18, 0x1), /* IDLE_DURING_DIV */ 43 INTEL_EVENT_CONSTRAINT(0x18, 0x1), /* IDLE_DURING_DIV */
38 INTEL_EVENT_CONSTRAINT(0x19, 0x2), /* DELAYED_BYPASS */ 44 INTEL_EVENT_CONSTRAINT(0x19, 0x2), /* DELAYED_BYPASS */
39 INTEL_EVENT_CONSTRAINT(0xa1, 0x1), /* RS_UOPS_DISPATCH_CYCLES */ 45 INTEL_EVENT_CONSTRAINT(0xa1, 0x1), /* RS_UOPS_DISPATCH_CYCLES */
46 INTEL_EVENT_CONSTRAINT(0xc9, 0x1), /* ITLB_MISS_RETIRED (T30-9) */
40 INTEL_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED */ 47 INTEL_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED */
41 EVENT_CONSTRAINT_END 48 EVENT_CONSTRAINT_END
42}; 49};
43 50
44static struct event_constraint intel_nehalem_event_constraints[] = 51static struct event_constraint intel_nehalem_event_constraints[] =
45{ 52{
46 FIXED_EVENT_CONSTRAINT(0xc0, (0xf|(1ULL<<32))), /* INSTRUCTIONS_RETIRED */ 53 FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */
47 FIXED_EVENT_CONSTRAINT(0x3c, (0xf|(1ULL<<33))), /* UNHALTED_CORE_CYCLES */ 54 FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */
55 /* FIXED_EVENT_CONSTRAINT(0x013c, 2), CPU_CLK_UNHALTED.REF */
48 INTEL_EVENT_CONSTRAINT(0x40, 0x3), /* L1D_CACHE_LD */ 56 INTEL_EVENT_CONSTRAINT(0x40, 0x3), /* L1D_CACHE_LD */
49 INTEL_EVENT_CONSTRAINT(0x41, 0x3), /* L1D_CACHE_ST */ 57 INTEL_EVENT_CONSTRAINT(0x41, 0x3), /* L1D_CACHE_ST */
50 INTEL_EVENT_CONSTRAINT(0x42, 0x3), /* L1D_CACHE_LOCK */ 58 INTEL_EVENT_CONSTRAINT(0x42, 0x3), /* L1D_CACHE_LOCK */
@@ -58,8 +66,9 @@ static struct event_constraint intel_nehalem_event_constraints[] =
58 66
59static struct event_constraint intel_westmere_event_constraints[] = 67static struct event_constraint intel_westmere_event_constraints[] =
60{ 68{
61 FIXED_EVENT_CONSTRAINT(0xc0, (0xf|(1ULL<<32))), /* INSTRUCTIONS_RETIRED */ 69 FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */
62 FIXED_EVENT_CONSTRAINT(0x3c, (0xf|(1ULL<<33))), /* UNHALTED_CORE_CYCLES */ 70 FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */
71 /* FIXED_EVENT_CONSTRAINT(0x013c, 2), CPU_CLK_UNHALTED.REF */
63 INTEL_EVENT_CONSTRAINT(0x51, 0x3), /* L1D */ 72 INTEL_EVENT_CONSTRAINT(0x51, 0x3), /* L1D */
64 INTEL_EVENT_CONSTRAINT(0x60, 0x1), /* OFFCORE_REQUESTS_OUTSTANDING */ 73 INTEL_EVENT_CONSTRAINT(0x60, 0x1), /* OFFCORE_REQUESTS_OUTSTANDING */
65 INTEL_EVENT_CONSTRAINT(0x63, 0x3), /* CACHE_LOCK_CYCLES */ 74 INTEL_EVENT_CONSTRAINT(0x63, 0x3), /* CACHE_LOCK_CYCLES */
@@ -68,8 +77,9 @@ static struct event_constraint intel_westmere_event_constraints[] =
68 77
69static struct event_constraint intel_gen_event_constraints[] = 78static struct event_constraint intel_gen_event_constraints[] =
70{ 79{
71 FIXED_EVENT_CONSTRAINT(0xc0, (0x3|(1ULL<<32))), /* INSTRUCTIONS_RETIRED */ 80 FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */
72 FIXED_EVENT_CONSTRAINT(0x3c, (0x3|(1ULL<<33))), /* UNHALTED_CORE_CYCLES */ 81 FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */
82 /* FIXED_EVENT_CONSTRAINT(0x013c, 2), CPU_CLK_UNHALTED.REF */
73 EVENT_CONSTRAINT_END 83 EVENT_CONSTRAINT_END
74}; 84};
75 85
@@ -538,9 +548,9 @@ static inline void intel_pmu_ack_status(u64 ack)
538} 548}
539 549
540static inline void 550static inline void
541intel_pmu_disable_fixed(struct hw_perf_event *hwc, int __idx) 551intel_pmu_disable_fixed(struct hw_perf_event *hwc)
542{ 552{
543 int idx = __idx - X86_PMC_IDX_FIXED; 553 int idx = hwc->idx - X86_PMC_IDX_FIXED;
544 u64 ctrl_val, mask; 554 u64 ctrl_val, mask;
545 555
546 mask = 0xfULL << (idx * 4); 556 mask = 0xfULL << (idx * 4);
@@ -580,10 +590,9 @@ static void intel_pmu_drain_bts_buffer(void)
580 590
581 ds->bts_index = ds->bts_buffer_base; 591 ds->bts_index = ds->bts_buffer_base;
582 592
593 perf_sample_data_init(&data, 0);
583 594
584 data.period = event->hw.last_period; 595 data.period = event->hw.last_period;
585 data.addr = 0;
586 data.raw = NULL;
587 regs.ip = 0; 596 regs.ip = 0;
588 597
589 /* 598 /*
@@ -612,26 +621,28 @@ static void intel_pmu_drain_bts_buffer(void)
612} 621}
613 622
614static inline void 623static inline void
615intel_pmu_disable_event(struct hw_perf_event *hwc, int idx) 624intel_pmu_disable_event(struct perf_event *event)
616{ 625{
617 if (unlikely(idx == X86_PMC_IDX_FIXED_BTS)) { 626 struct hw_perf_event *hwc = &event->hw;
627
628 if (unlikely(hwc->idx == X86_PMC_IDX_FIXED_BTS)) {
618 intel_pmu_disable_bts(); 629 intel_pmu_disable_bts();
619 intel_pmu_drain_bts_buffer(); 630 intel_pmu_drain_bts_buffer();
620 return; 631 return;
621 } 632 }
622 633
623 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) { 634 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) {
624 intel_pmu_disable_fixed(hwc, idx); 635 intel_pmu_disable_fixed(hwc);
625 return; 636 return;
626 } 637 }
627 638
628 x86_pmu_disable_event(hwc, idx); 639 x86_pmu_disable_event(event);
629} 640}
630 641
631static inline void 642static inline void
632intel_pmu_enable_fixed(struct hw_perf_event *hwc, int __idx) 643intel_pmu_enable_fixed(struct hw_perf_event *hwc)
633{ 644{
634 int idx = __idx - X86_PMC_IDX_FIXED; 645 int idx = hwc->idx - X86_PMC_IDX_FIXED;
635 u64 ctrl_val, bits, mask; 646 u64 ctrl_val, bits, mask;
636 int err; 647 int err;
637 648
@@ -661,9 +672,11 @@ intel_pmu_enable_fixed(struct hw_perf_event *hwc, int __idx)
661 err = checking_wrmsrl(hwc->config_base, ctrl_val); 672 err = checking_wrmsrl(hwc->config_base, ctrl_val);
662} 673}
663 674
664static void intel_pmu_enable_event(struct hw_perf_event *hwc, int idx) 675static void intel_pmu_enable_event(struct perf_event *event)
665{ 676{
666 if (unlikely(idx == X86_PMC_IDX_FIXED_BTS)) { 677 struct hw_perf_event *hwc = &event->hw;
678
679 if (unlikely(hwc->idx == X86_PMC_IDX_FIXED_BTS)) {
667 if (!__get_cpu_var(cpu_hw_events).enabled) 680 if (!__get_cpu_var(cpu_hw_events).enabled)
668 return; 681 return;
669 682
@@ -672,11 +685,11 @@ static void intel_pmu_enable_event(struct hw_perf_event *hwc, int idx)
672 } 685 }
673 686
674 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) { 687 if (unlikely(hwc->config_base == MSR_ARCH_PERFMON_FIXED_CTR_CTRL)) {
675 intel_pmu_enable_fixed(hwc, idx); 688 intel_pmu_enable_fixed(hwc);
676 return; 689 return;
677 } 690 }
678 691
679 __x86_pmu_enable_event(hwc, idx); 692 __x86_pmu_enable_event(hwc);
680} 693}
681 694
682/* 695/*
@@ -685,14 +698,8 @@ static void intel_pmu_enable_event(struct hw_perf_event *hwc, int idx)
685 */ 698 */
686static int intel_pmu_save_and_restart(struct perf_event *event) 699static int intel_pmu_save_and_restart(struct perf_event *event)
687{ 700{
688 struct hw_perf_event *hwc = &event->hw; 701 x86_perf_event_update(event);
689 int idx = hwc->idx; 702 return x86_perf_event_set_period(event);
690 int ret;
691
692 x86_perf_event_update(event, hwc, idx);
693 ret = x86_perf_event_set_period(event, hwc, idx);
694
695 return ret;
696} 703}
697 704
698static void intel_pmu_reset(void) 705static void intel_pmu_reset(void)
@@ -732,16 +739,15 @@ static int intel_pmu_handle_irq(struct pt_regs *regs)
732 int bit, loops; 739 int bit, loops;
733 u64 ack, status; 740 u64 ack, status;
734 741
735 data.addr = 0; 742 perf_sample_data_init(&data, 0);
736 data.raw = NULL;
737 743
738 cpuc = &__get_cpu_var(cpu_hw_events); 744 cpuc = &__get_cpu_var(cpu_hw_events);
739 745
740 perf_disable(); 746 intel_pmu_disable_all();
741 intel_pmu_drain_bts_buffer(); 747 intel_pmu_drain_bts_buffer();
742 status = intel_pmu_get_status(); 748 status = intel_pmu_get_status();
743 if (!status) { 749 if (!status) {
744 perf_enable(); 750 intel_pmu_enable_all();
745 return 0; 751 return 0;
746 } 752 }
747 753
@@ -751,8 +757,7 @@ again:
751 WARN_ONCE(1, "perfevents: irq loop stuck!\n"); 757 WARN_ONCE(1, "perfevents: irq loop stuck!\n");
752 perf_event_print_debug(); 758 perf_event_print_debug();
753 intel_pmu_reset(); 759 intel_pmu_reset();
754 perf_enable(); 760 goto done;
755 return 1;
756 } 761 }
757 762
758 inc_irq_stat(apic_perf_irqs); 763 inc_irq_stat(apic_perf_irqs);
@@ -760,7 +765,6 @@ again:
760 for_each_set_bit(bit, (unsigned long *)&status, X86_PMC_IDX_MAX) { 765 for_each_set_bit(bit, (unsigned long *)&status, X86_PMC_IDX_MAX) {
761 struct perf_event *event = cpuc->events[bit]; 766 struct perf_event *event = cpuc->events[bit];
762 767
763 clear_bit(bit, (unsigned long *) &status);
764 if (!test_bit(bit, cpuc->active_mask)) 768 if (!test_bit(bit, cpuc->active_mask))
765 continue; 769 continue;
766 770
@@ -770,7 +774,7 @@ again:
770 data.period = event->hw.last_period; 774 data.period = event->hw.last_period;
771 775
772 if (perf_event_overflow(event, 1, &data, regs)) 776 if (perf_event_overflow(event, 1, &data, regs))
773 intel_pmu_disable_event(&event->hw, bit); 777 x86_pmu_stop(event);
774 } 778 }
775 779
776 intel_pmu_ack_status(ack); 780 intel_pmu_ack_status(ack);
@@ -782,8 +786,8 @@ again:
782 if (status) 786 if (status)
783 goto again; 787 goto again;
784 788
785 perf_enable(); 789done:
786 790 intel_pmu_enable_all();
787 return 1; 791 return 1;
788} 792}
789 793
@@ -862,7 +866,10 @@ static __initconst struct x86_pmu intel_pmu = {
862 .max_period = (1ULL << 31) - 1, 866 .max_period = (1ULL << 31) - 1,
863 .enable_bts = intel_pmu_enable_bts, 867 .enable_bts = intel_pmu_enable_bts,
864 .disable_bts = intel_pmu_disable_bts, 868 .disable_bts = intel_pmu_disable_bts,
865 .get_event_constraints = intel_get_event_constraints 869 .get_event_constraints = intel_get_event_constraints,
870
871 .cpu_starting = init_debug_store_on_cpu,
872 .cpu_dying = fini_debug_store_on_cpu,
866}; 873};
867 874
868static __init int intel_pmu_init(void) 875static __init int intel_pmu_init(void)
@@ -929,13 +936,14 @@ static __init int intel_pmu_init(void)
929 936
930 case 26: /* 45 nm nehalem, "Bloomfield" */ 937 case 26: /* 45 nm nehalem, "Bloomfield" */
931 case 30: /* 45 nm nehalem, "Lynnfield" */ 938 case 30: /* 45 nm nehalem, "Lynnfield" */
939 case 46: /* 45 nm nehalem-ex, "Beckton" */
932 memcpy(hw_cache_event_ids, nehalem_hw_cache_event_ids, 940 memcpy(hw_cache_event_ids, nehalem_hw_cache_event_ids,
933 sizeof(hw_cache_event_ids)); 941 sizeof(hw_cache_event_ids));
934 942
935 x86_pmu.event_constraints = intel_nehalem_event_constraints; 943 x86_pmu.event_constraints = intel_nehalem_event_constraints;
936 pr_cont("Nehalem/Corei7 events, "); 944 pr_cont("Nehalem/Corei7 events, ");
937 break; 945 break;
938 case 28: 946 case 28: /* Atom */
939 memcpy(hw_cache_event_ids, atom_hw_cache_event_ids, 947 memcpy(hw_cache_event_ids, atom_hw_cache_event_ids,
940 sizeof(hw_cache_event_ids)); 948 sizeof(hw_cache_event_ids));
941 949
@@ -951,6 +959,7 @@ static __init int intel_pmu_init(void)
951 x86_pmu.event_constraints = intel_westmere_event_constraints; 959 x86_pmu.event_constraints = intel_westmere_event_constraints;
952 pr_cont("Westmere events, "); 960 pr_cont("Westmere events, ");
953 break; 961 break;
962
954 default: 963 default:
955 /* 964 /*
956 * default constraints for v2 and up 965 * default constraints for v2 and up
diff --git a/arch/x86/kernel/cpu/perf_event_p6.c b/arch/x86/kernel/cpu/perf_event_p6.c
index 1ca5ba078afd..a330485d14da 100644
--- a/arch/x86/kernel/cpu/perf_event_p6.c
+++ b/arch/x86/kernel/cpu/perf_event_p6.c
@@ -62,7 +62,7 @@ static void p6_pmu_disable_all(void)
62 62
63 /* p6 only has one enable register */ 63 /* p6 only has one enable register */
64 rdmsrl(MSR_P6_EVNTSEL0, val); 64 rdmsrl(MSR_P6_EVNTSEL0, val);
65 val &= ~ARCH_PERFMON_EVENTSEL0_ENABLE; 65 val &= ~ARCH_PERFMON_EVENTSEL_ENABLE;
66 wrmsrl(MSR_P6_EVNTSEL0, val); 66 wrmsrl(MSR_P6_EVNTSEL0, val);
67} 67}
68 68
@@ -72,32 +72,34 @@ static void p6_pmu_enable_all(void)
72 72
73 /* p6 only has one enable register */ 73 /* p6 only has one enable register */
74 rdmsrl(MSR_P6_EVNTSEL0, val); 74 rdmsrl(MSR_P6_EVNTSEL0, val);
75 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 75 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
76 wrmsrl(MSR_P6_EVNTSEL0, val); 76 wrmsrl(MSR_P6_EVNTSEL0, val);
77} 77}
78 78
79static inline void 79static inline void
80p6_pmu_disable_event(struct hw_perf_event *hwc, int idx) 80p6_pmu_disable_event(struct perf_event *event)
81{ 81{
82 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 82 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
83 struct hw_perf_event *hwc = &event->hw;
83 u64 val = P6_NOP_EVENT; 84 u64 val = P6_NOP_EVENT;
84 85
85 if (cpuc->enabled) 86 if (cpuc->enabled)
86 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 87 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
87 88
88 (void)checking_wrmsrl(hwc->config_base + idx, val); 89 (void)checking_wrmsrl(hwc->config_base + hwc->idx, val);
89} 90}
90 91
91static void p6_pmu_enable_event(struct hw_perf_event *hwc, int idx) 92static void p6_pmu_enable_event(struct perf_event *event)
92{ 93{
93 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); 94 struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events);
95 struct hw_perf_event *hwc = &event->hw;
94 u64 val; 96 u64 val;
95 97
96 val = hwc->config; 98 val = hwc->config;
97 if (cpuc->enabled) 99 if (cpuc->enabled)
98 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 100 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
99 101
100 (void)checking_wrmsrl(hwc->config_base + idx, val); 102 (void)checking_wrmsrl(hwc->config_base + hwc->idx, val);
101} 103}
102 104
103static __initconst struct x86_pmu p6_pmu = { 105static __initconst struct x86_pmu p6_pmu = {
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c
index 74f4e85a5727..fb329e9f8494 100644
--- a/arch/x86/kernel/cpu/perfctr-watchdog.c
+++ b/arch/x86/kernel/cpu/perfctr-watchdog.c
@@ -680,7 +680,7 @@ static int setup_intel_arch_watchdog(unsigned nmi_hz)
680 cpu_nmi_set_wd_enabled(); 680 cpu_nmi_set_wd_enabled();
681 681
682 apic_write(APIC_LVTPC, APIC_DM_NMI); 682 apic_write(APIC_LVTPC, APIC_DM_NMI);
683 evntsel |= ARCH_PERFMON_EVENTSEL0_ENABLE; 683 evntsel |= ARCH_PERFMON_EVENTSEL_ENABLE;
684 wrmsr(evntsel_msr, evntsel, 0); 684 wrmsr(evntsel_msr, evntsel, 0);
685 intel_arch_wd_ops.checkbit = 1ULL << (eax.split.bit_width - 1); 685 intel_arch_wd_ops.checkbit = 1ULL << (eax.split.bit_width - 1);
686 return 1; 686 return 1;
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
index 83e5e628de73..8b862d5900fe 100644
--- a/arch/x86/kernel/cpuid.c
+++ b/arch/x86/kernel/cpuid.c
@@ -40,6 +40,7 @@
40#include <linux/cpu.h> 40#include <linux/cpu.h>
41#include <linux/notifier.h> 41#include <linux/notifier.h>
42#include <linux/uaccess.h> 42#include <linux/uaccess.h>
43#include <linux/gfp.h>
43 44
44#include <asm/processor.h> 45#include <asm/processor.h>
45#include <asm/msr.h> 46#include <asm/msr.h>
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index a4849c10a77e..ebd4c51d096a 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -27,7 +27,6 @@
27#include <asm/cpu.h> 27#include <asm/cpu.h>
28#include <asm/reboot.h> 28#include <asm/reboot.h>
29#include <asm/virtext.h> 29#include <asm/virtext.h>
30#include <asm/x86_init.h>
31 30
32#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC) 31#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC)
33 32
@@ -103,10 +102,5 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
103#ifdef CONFIG_HPET_TIMER 102#ifdef CONFIG_HPET_TIMER
104 hpet_disable(); 103 hpet_disable();
105#endif 104#endif
106
107#ifdef CONFIG_X86_64
108 x86_platform.iommu_shutdown();
109#endif
110
111 crash_save_cpu(regs, safe_smp_processor_id()); 105 crash_save_cpu(regs, safe_smp_processor_id());
112} 106}
diff --git a/arch/x86/kernel/crash_dump_32.c b/arch/x86/kernel/crash_dump_32.c
index cd97ce18c29d..67414550c3cc 100644
--- a/arch/x86/kernel/crash_dump_32.c
+++ b/arch/x86/kernel/crash_dump_32.c
@@ -5,6 +5,7 @@
5 * Copyright (C) IBM Corporation, 2004. All rights reserved 5 * Copyright (C) IBM Corporation, 2004. All rights reserved
6 */ 6 */
7 7
8#include <linux/slab.h>
8#include <linux/errno.h> 9#include <linux/errno.h>
9#include <linux/highmem.h> 10#include <linux/highmem.h>
10#include <linux/crash_dump.h> 11#include <linux/crash_dump.h>
diff --git a/arch/x86/kernel/dumpstack.h b/arch/x86/kernel/dumpstack.h
index 4fd1420faffa..e1a93be4fd44 100644
--- a/arch/x86/kernel/dumpstack.h
+++ b/arch/x86/kernel/dumpstack.h
@@ -14,6 +14,8 @@
14#define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :) 14#define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :)
15#endif 15#endif
16 16
17#include <linux/uaccess.h>
18
17extern void 19extern void
18show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, 20show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
19 unsigned long *stack, unsigned long bp, char *log_lvl); 21 unsigned long *stack, unsigned long bp, char *log_lvl);
@@ -29,4 +31,26 @@ struct stack_frame {
29 struct stack_frame *next_frame; 31 struct stack_frame *next_frame;
30 unsigned long return_address; 32 unsigned long return_address;
31}; 33};
34
35struct stack_frame_ia32 {
36 u32 next_frame;
37 u32 return_address;
38};
39
40static inline unsigned long rewind_frame_pointer(int n)
41{
42 struct stack_frame *frame;
43
44 get_bp(frame);
45
46#ifdef CONFIG_FRAME_POINTER
47 while (n--) {
48 if (probe_kernel_address(&frame->next_frame, frame))
49 break;
50 }
32#endif 51#endif
52
53 return (unsigned long)frame;
54}
55
56#endif /* DUMPSTACK_H */
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index dce99abb4496..272c9f1f05f3 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -120,9 +120,15 @@ fixup_bp_irq_link(unsigned long bp, unsigned long *stack,
120{ 120{
121#ifdef CONFIG_FRAME_POINTER 121#ifdef CONFIG_FRAME_POINTER
122 struct stack_frame *frame = (struct stack_frame *)bp; 122 struct stack_frame *frame = (struct stack_frame *)bp;
123 unsigned long next;
123 124
124 if (!in_irq_stack(stack, irq_stack, irq_stack_end)) 125 if (!in_irq_stack(stack, irq_stack, irq_stack_end)) {
125 return (unsigned long)frame->next_frame; 126 if (!probe_kernel_address(&frame->next_frame, next))
127 return next;
128 else
129 WARN_ONCE(1, "Perf: bad frame pointer = %p in "
130 "callchain\n", &frame->next_frame);
131 }
126#endif 132#endif
127 return bp; 133 return bp;
128} 134}
@@ -202,7 +208,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
202 if (in_irq_stack(stack, irq_stack, irq_stack_end)) { 208 if (in_irq_stack(stack, irq_stack, irq_stack_end)) {
203 if (ops->stack(data, "IRQ") < 0) 209 if (ops->stack(data, "IRQ") < 0)
204 break; 210 break;
205 bp = print_context_stack(tinfo, stack, bp, 211 bp = ops->walk_stack(tinfo, stack, bp,
206 ops, data, irq_stack_end, &graph); 212 ops, data, irq_stack_end, &graph);
207 /* 213 /*
208 * We link to the next stack (which would be 214 * We link to the next stack (which would be
@@ -223,7 +229,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
223 /* 229 /*
224 * This handles the process stack: 230 * This handles the process stack:
225 */ 231 */
226 bp = print_context_stack(tinfo, stack, bp, ops, data, NULL, &graph); 232 bp = ops->walk_stack(tinfo, stack, bp, ops, data, NULL, &graph);
227 put_cpu(); 233 put_cpu();
228} 234}
229EXPORT_SYMBOL(dump_trace); 235EXPORT_SYMBOL(dump_trace);
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 740b440fbd73..7bca3c6a02fb 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -519,29 +519,45 @@ u64 __init e820_remove_range(u64 start, u64 size, unsigned old_type,
519 printk(KERN_DEBUG "e820 remove range: %016Lx - %016Lx ", 519 printk(KERN_DEBUG "e820 remove range: %016Lx - %016Lx ",
520 (unsigned long long) start, 520 (unsigned long long) start,
521 (unsigned long long) end); 521 (unsigned long long) end);
522 e820_print_type(old_type); 522 if (checktype)
523 e820_print_type(old_type);
523 printk(KERN_CONT "\n"); 524 printk(KERN_CONT "\n");
524 525
525 for (i = 0; i < e820.nr_map; i++) { 526 for (i = 0; i < e820.nr_map; i++) {
526 struct e820entry *ei = &e820.map[i]; 527 struct e820entry *ei = &e820.map[i];
527 u64 final_start, final_end; 528 u64 final_start, final_end;
529 u64 ei_end;
528 530
529 if (checktype && ei->type != old_type) 531 if (checktype && ei->type != old_type)
530 continue; 532 continue;
533
534 ei_end = ei->addr + ei->size;
531 /* totally covered? */ 535 /* totally covered? */
532 if (ei->addr >= start && 536 if (ei->addr >= start && ei_end <= end) {
533 (ei->addr + ei->size) <= (start + size)) {
534 real_removed_size += ei->size; 537 real_removed_size += ei->size;
535 memset(ei, 0, sizeof(struct e820entry)); 538 memset(ei, 0, sizeof(struct e820entry));
536 continue; 539 continue;
537 } 540 }
541
542 /* new range is totally covered? */
543 if (ei->addr < start && ei_end > end) {
544 e820_add_region(end, ei_end - end, ei->type);
545 ei->size = start - ei->addr;
546 real_removed_size += size;
547 continue;
548 }
549
538 /* partially covered */ 550 /* partially covered */
539 final_start = max(start, ei->addr); 551 final_start = max(start, ei->addr);
540 final_end = min(start + size, ei->addr + ei->size); 552 final_end = min(end, ei_end);
541 if (final_start >= final_end) 553 if (final_start >= final_end)
542 continue; 554 continue;
543 real_removed_size += final_end - final_start; 555 real_removed_size += final_end - final_start;
544 556
557 /*
558 * left range could be head or tail, so need to update
559 * size at first.
560 */
545 ei->size -= final_end - final_start; 561 ei->size -= final_end - final_start;
546 if (ei->addr < final_start) 562 if (ei->addr < final_start)
547 continue; 563 continue;
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
index adedeef1dedc..b2e246037392 100644
--- a/arch/x86/kernel/head32.c
+++ b/arch/x86/kernel/head32.c
@@ -7,6 +7,7 @@
7 7
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/start_kernel.h> 9#include <linux/start_kernel.h>
10#include <linux/mm.h>
10 11
11#include <asm/setup.h> 12#include <asm/setup.h>
12#include <asm/sections.h> 13#include <asm/sections.h>
@@ -44,9 +45,10 @@ void __init i386_start_kernel(void)
44#ifdef CONFIG_BLK_DEV_INITRD 45#ifdef CONFIG_BLK_DEV_INITRD
45 /* Reserve INITRD */ 46 /* Reserve INITRD */
46 if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) { 47 if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) {
48 /* Assume only end is not page aligned */
47 u64 ramdisk_image = boot_params.hdr.ramdisk_image; 49 u64 ramdisk_image = boot_params.hdr.ramdisk_image;
48 u64 ramdisk_size = boot_params.hdr.ramdisk_size; 50 u64 ramdisk_size = boot_params.hdr.ramdisk_size;
49 u64 ramdisk_end = ramdisk_image + ramdisk_size; 51 u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size);
50 reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); 52 reserve_early(ramdisk_image, ramdisk_end, "RAMDISK");
51 } 53 }
52#endif 54#endif
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index b5a9896ca1e7..7147143fd614 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -103,9 +103,10 @@ void __init x86_64_start_reservations(char *real_mode_data)
103#ifdef CONFIG_BLK_DEV_INITRD 103#ifdef CONFIG_BLK_DEV_INITRD
104 /* Reserve INITRD */ 104 /* Reserve INITRD */
105 if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) { 105 if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) {
106 /* Assume only end is not page aligned */
106 unsigned long ramdisk_image = boot_params.hdr.ramdisk_image; 107 unsigned long ramdisk_image = boot_params.hdr.ramdisk_image;
107 unsigned long ramdisk_size = boot_params.hdr.ramdisk_size; 108 unsigned long ramdisk_size = boot_params.hdr.ramdisk_size;
108 unsigned long ramdisk_end = ramdisk_image + ramdisk_size; 109 unsigned long ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size);
109 reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); 110 reserve_early(ramdisk_image, ramdisk_end, "RAMDISK");
110 } 111 }
111#endif 112#endif
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index ee4fa1bfcb33..23b4ecdffa9b 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -4,6 +4,7 @@
4#include <linux/sysdev.h> 4#include <linux/sysdev.h>
5#include <linux/delay.h> 5#include <linux/delay.h>
6#include <linux/errno.h> 6#include <linux/errno.h>
7#include <linux/slab.h>
7#include <linux/hpet.h> 8#include <linux/hpet.h>
8#include <linux/init.h> 9#include <linux/init.h>
9#include <linux/cpu.h> 10#include <linux/cpu.h>
@@ -399,9 +400,15 @@ static int hpet_next_event(unsigned long delta,
399 * then we might have a real hardware problem. We can not do 400 * then we might have a real hardware problem. We can not do
400 * much about it here, but at least alert the user/admin with 401 * much about it here, but at least alert the user/admin with
401 * a prominent warning. 402 * a prominent warning.
403 * An erratum on some chipsets (ICH9,..), results in comparator read
404 * immediately following a write returning old value. Workaround
405 * for this is to read this value second time, when first
406 * read returns old value.
402 */ 407 */
403 WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt, 408 if (unlikely((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt)) {
409 WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt,
404 KERN_WARNING "hpet: compare register read back failed.\n"); 410 KERN_WARNING "hpet: compare register read back failed.\n");
411 }
405 412
406 return (s32)(hpet_readl(HPET_COUNTER) - cnt) >= 0 ? -ETIME : 0; 413 return (s32)(hpet_readl(HPET_COUNTER) - cnt) >= 0 ? -ETIME : 0;
407} 414}
@@ -1143,6 +1150,7 @@ int hpet_set_periodic_freq(unsigned long freq)
1143 do_div(clc, freq); 1150 do_div(clc, freq);
1144 clc >>= hpet_clockevent.shift; 1151 clc >>= hpet_clockevent.shift;
1145 hpet_pie_delta = clc; 1152 hpet_pie_delta = clc;
1153 hpet_pie_limit = 0;
1146 } 1154 }
1147 return 1; 1155 return 1;
1148} 1156}
diff --git a/arch/x86/kernel/hw_breakpoint.c b/arch/x86/kernel/hw_breakpoint.c
index dca2802c666f..d6cc065f519f 100644
--- a/arch/x86/kernel/hw_breakpoint.c
+++ b/arch/x86/kernel/hw_breakpoint.c
@@ -344,13 +344,6 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp,
344 } 344 }
345 345
346 /* 346 /*
347 * For kernel-addresses, either the address or symbol name can be
348 * specified.
349 */
350 if (info->name)
351 info->address = (unsigned long)
352 kallsyms_lookup_name(info->name);
353 /*
354 * Check that the low-order bits of the address are appropriate 347 * Check that the low-order bits of the address are appropriate
355 * for the alignment implied by len. 348 * for the alignment implied by len.
356 */ 349 */
@@ -535,8 +528,3 @@ void hw_breakpoint_pmu_read(struct perf_event *bp)
535{ 528{
536 /* TODO */ 529 /* TODO */
537} 530}
538
539void hw_breakpoint_pmu_unthrottle(struct perf_event *bp)
540{
541 /* TODO */
542}
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index c01a2b846d47..54c31c285488 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -8,6 +8,7 @@
8#include <linux/module.h> 8#include <linux/module.h>
9#include <linux/regset.h> 9#include <linux/regset.h>
10#include <linux/sched.h> 10#include <linux/sched.h>
11#include <linux/slab.h>
11 12
12#include <asm/sigcontext.h> 13#include <asm/sigcontext.h>
13#include <asm/processor.h> 14#include <asm/processor.h>
diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
index fb725ee15f55..7c9f02c130f3 100644
--- a/arch/x86/kernel/i8259.c
+++ b/arch/x86/kernel/i8259.c
@@ -5,7 +5,6 @@
5#include <linux/ioport.h> 5#include <linux/ioport.h>
6#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/timex.h> 7#include <linux/timex.h>
8#include <linux/slab.h>
9#include <linux/random.h> 8#include <linux/random.h>
10#include <linux/init.h> 9#include <linux/init.h>
11#include <linux/kernel_stat.h> 10#include <linux/kernel_stat.h>
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c
index ef257fc2921b..0ed2d300cd46 100644
--- a/arch/x86/kernel/irqinit.c
+++ b/arch/x86/kernel/irqinit.c
@@ -5,7 +5,6 @@
5#include <linux/ioport.h> 5#include <linux/ioport.h>
6#include <linux/interrupt.h> 6#include <linux/interrupt.h>
7#include <linux/timex.h> 7#include <linux/timex.h>
8#include <linux/slab.h>
9#include <linux/random.h> 8#include <linux/random.h>
10#include <linux/kprobes.h> 9#include <linux/kprobes.h>
11#include <linux/init.h> 10#include <linux/init.h>
@@ -141,6 +140,28 @@ void __init init_IRQ(void)
141 x86_init.irqs.intr_init(); 140 x86_init.irqs.intr_init();
142} 141}
143 142
143/*
144 * Setup the vector to irq mappings.
145 */
146void setup_vector_irq(int cpu)
147{
148#ifndef CONFIG_X86_IO_APIC
149 int irq;
150
151 /*
152 * On most of the platforms, legacy PIC delivers the interrupts on the
153 * boot cpu. But there are certain platforms where PIC interrupts are
154 * delivered to multiple cpu's. If the legacy IRQ is handled by the
155 * legacy PIC, for the new cpu that is coming online, setup the static
156 * legacy vector to irq mapping:
157 */
158 for (irq = 0; irq < legacy_pic->nr_legacy_irqs; irq++)
159 per_cpu(vector_irq, cpu)[IRQ0_VECTOR + irq] = irq;
160#endif
161
162 __setup_vector_irq(cpu);
163}
164
144static void __init smp_intr_init(void) 165static void __init smp_intr_init(void)
145{ 166{
146#ifdef CONFIG_SMP 167#ifdef CONFIG_SMP
diff --git a/arch/x86/kernel/k8.c b/arch/x86/kernel/k8.c
index cbc4332a77b2..0f7bc20cfcde 100644
--- a/arch/x86/kernel/k8.c
+++ b/arch/x86/kernel/k8.c
@@ -2,8 +2,8 @@
2 * Shared support code for AMD K8 northbridges and derivates. 2 * Shared support code for AMD K8 northbridges and derivates.
3 * Copyright 2006 Andi Kleen, SUSE Labs. Subject to GPLv2. 3 * Copyright 2006 Andi Kleen, SUSE Labs. Subject to GPLv2.
4 */ 4 */
5#include <linux/gfp.h>
6#include <linux/types.h> 5#include <linux/types.h>
6#include <linux/slab.h>
7#include <linux/init.h> 7#include <linux/init.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <linux/module.h> 9#include <linux/module.h>
@@ -121,3 +121,17 @@ void k8_flush_garts(void)
121} 121}
122EXPORT_SYMBOL_GPL(k8_flush_garts); 122EXPORT_SYMBOL_GPL(k8_flush_garts);
123 123
124static __init int init_k8_nbs(void)
125{
126 int err = 0;
127
128 err = cache_k8_northbridges();
129
130 if (err < 0)
131 printk(KERN_NOTICE "K8 NB: Cannot enumerate AMD northbridges.\n");
132
133 return err;
134}
135
136/* This has to go after the PCI subsystem */
137fs_initcall(init_k8_nbs);
diff --git a/arch/x86/kernel/kdebugfs.c b/arch/x86/kernel/kdebugfs.c
index e444357375ce..8afd9f321f10 100644
--- a/arch/x86/kernel/kdebugfs.c
+++ b/arch/x86/kernel/kdebugfs.c
@@ -9,6 +9,7 @@
9#include <linux/debugfs.h> 9#include <linux/debugfs.h>
10#include <linux/uaccess.h> 10#include <linux/uaccess.h>
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/slab.h>
12#include <linux/init.h> 13#include <linux/init.h>
13#include <linux/stat.h> 14#include <linux/stat.h>
14#include <linux/io.h> 15#include <linux/io.h>
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index bfba6019d762..b2258ca91003 100644
--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -618,8 +618,8 @@ int kgdb_arch_init(void)
618 * portion of kgdb because this operation requires mutexs to 618 * portion of kgdb because this operation requires mutexs to
619 * complete. 619 * complete.
620 */ 620 */
621 hw_breakpoint_init(&attr);
621 attr.bp_addr = (unsigned long)kgdb_arch_init; 622 attr.bp_addr = (unsigned long)kgdb_arch_init;
622 attr.type = PERF_TYPE_BREAKPOINT;
623 attr.bp_len = HW_BREAKPOINT_LEN_1; 623 attr.bp_len = HW_BREAKPOINT_LEN_1;
624 attr.bp_type = HW_BREAKPOINT_W; 624 attr.bp_type = HW_BREAKPOINT_W;
625 attr.disabled = 1; 625 attr.disabled = 1;
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
index ec6ef60cbd17..ea697263b373 100644
--- a/arch/x86/kernel/ldt.c
+++ b/arch/x86/kernel/ldt.c
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/errno.h> 9#include <linux/errno.h>
10#include <linux/gfp.h>
10#include <linux/sched.h> 11#include <linux/sched.h>
11#include <linux/string.h> 12#include <linux/string.h>
12#include <linux/mm.h> 13#include <linux/mm.h>
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
index 4a8bb82248ae..035c8c529181 100644
--- a/arch/x86/kernel/machine_kexec_64.c
+++ b/arch/x86/kernel/machine_kexec_64.c
@@ -9,6 +9,7 @@
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/kexec.h> 10#include <linux/kexec.h>
11#include <linux/string.h> 11#include <linux/string.h>
12#include <linux/gfp.h>
12#include <linux/reboot.h> 13#include <linux/reboot.h>
13#include <linux/numa.h> 14#include <linux/numa.h>
14#include <linux/ftrace.h> 15#include <linux/ftrace.h>
diff --git a/arch/x86/kernel/mca_32.c b/arch/x86/kernel/mca_32.c
index 845d80ce1ef1..63eaf6596233 100644
--- a/arch/x86/kernel/mca_32.c
+++ b/arch/x86/kernel/mca_32.c
@@ -42,6 +42,7 @@
42#include <linux/kernel.h> 42#include <linux/kernel.h>
43#include <linux/mca.h> 43#include <linux/mca.h>
44#include <linux/kprobes.h> 44#include <linux/kprobes.h>
45#include <linux/slab.h>
45#include <asm/system.h> 46#include <asm/system.h>
46#include <asm/io.h> 47#include <asm/io.h>
47#include <linux/proc_fs.h> 48#include <linux/proc_fs.h>
diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
index 89f386f044e4..e0bc186d7501 100644
--- a/arch/x86/kernel/module.c
+++ b/arch/x86/kernel/module.c
@@ -23,6 +23,7 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/bug.h> 24#include <linux/bug.h>
25#include <linux/mm.h> 25#include <linux/mm.h>
26#include <linux/gfp.h>
26 27
27#include <asm/system.h> 28#include <asm/system.h>
28#include <asm/page.h> 29#include <asm/page.h>
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index a2c1edd2d3ac..e81030f71a8f 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -664,7 +664,7 @@ static void __init smp_reserve_memory(struct mpf_intel *mpf)
664{ 664{
665 unsigned long size = get_mpc_size(mpf->physptr); 665 unsigned long size = get_mpc_size(mpf->physptr);
666 666
667 reserve_early(mpf->physptr, mpf->physptr+size, "MP-table mpc"); 667 reserve_early_overlap_ok(mpf->physptr, mpf->physptr+size, "MP-table mpc");
668} 668}
669 669
670static int __init smp_scan_config(unsigned long base, unsigned long length) 670static int __init smp_scan_config(unsigned long base, unsigned long length)
@@ -693,7 +693,7 @@ static int __init smp_scan_config(unsigned long base, unsigned long length)
693 mpf, (u64)virt_to_phys(mpf)); 693 mpf, (u64)virt_to_phys(mpf));
694 694
695 mem = virt_to_phys(mpf); 695 mem = virt_to_phys(mpf);
696 reserve_early(mem, mem + sizeof(*mpf), "MP-table mpf"); 696 reserve_early_overlap_ok(mem, mem + sizeof(*mpf), "MP-table mpf");
697 if (mpf->physptr) 697 if (mpf->physptr)
698 smp_reserve_memory(mpf); 698 smp_reserve_memory(mpf);
699 699
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
index 206735ac8cbd..4d4468e9f47c 100644
--- a/arch/x86/kernel/msr.c
+++ b/arch/x86/kernel/msr.c
@@ -37,6 +37,7 @@
37#include <linux/cpu.h> 37#include <linux/cpu.h>
38#include <linux/notifier.h> 38#include <linux/notifier.h>
39#include <linux/uaccess.h> 39#include <linux/uaccess.h>
40#include <linux/gfp.h>
40 41
41#include <asm/processor.h> 42#include <asm/processor.h>
42#include <asm/msr.h> 43#include <asm/msr.h>
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index a4ac764a6880..4b7e3d8b01dd 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -2,6 +2,7 @@
2#include <linux/dma-debug.h> 2#include <linux/dma-debug.h>
3#include <linux/dmar.h> 3#include <linux/dmar.h>
4#include <linux/bootmem.h> 4#include <linux/bootmem.h>
5#include <linux/gfp.h>
5#include <linux/pci.h> 6#include <linux/pci.h>
6#include <linux/kmemleak.h> 7#include <linux/kmemleak.h>
7 8
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index 34de53b46f87..0f7f130caa67 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -29,6 +29,7 @@
29#include <linux/iommu-helper.h> 29#include <linux/iommu-helper.h>
30#include <linux/sysdev.h> 30#include <linux/sysdev.h>
31#include <linux/io.h> 31#include <linux/io.h>
32#include <linux/gfp.h>
32#include <asm/atomic.h> 33#include <asm/atomic.h>
33#include <asm/mtrr.h> 34#include <asm/mtrr.h>
34#include <asm/pgtable.h> 35#include <asm/pgtable.h>
@@ -564,6 +565,9 @@ static void enable_gart_translations(void)
564 565
565 enable_gart_translation(dev, __pa(agp_gatt_table)); 566 enable_gart_translation(dev, __pa(agp_gatt_table));
566 } 567 }
568
569 /* Flush the GART-TLB to remove stale entries */
570 k8_flush_garts();
567} 571}
568 572
569/* 573/*
@@ -735,7 +739,7 @@ int __init gart_iommu_init(void)
735 unsigned long scratch; 739 unsigned long scratch;
736 long i; 740 long i;
737 741
738 if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) 742 if (num_k8_northbridges == 0)
739 return 0; 743 return 0;
740 744
741#ifndef CONFIG_AGP_AMD64 745#ifndef CONFIG_AGP_AMD64
diff --git a/arch/x86/kernel/pci-nommu.c b/arch/x86/kernel/pci-nommu.c
index 22be12b60a8f..3af4af810c07 100644
--- a/arch/x86/kernel/pci-nommu.c
+++ b/arch/x86/kernel/pci-nommu.c
@@ -4,6 +4,7 @@
4#include <linux/scatterlist.h> 4#include <linux/scatterlist.h>
5#include <linux/string.h> 5#include <linux/string.h>
6#include <linux/init.h> 6#include <linux/init.h>
7#include <linux/gfp.h>
7#include <linux/pci.h> 8#include <linux/pci.h>
8#include <linux/mm.h> 9#include <linux/mm.h>
9 10
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 02d678065d7d..28ad9f4d8b94 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -526,21 +526,37 @@ static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c)
526} 526}
527 527
528/* 528/*
529 * Check for AMD CPUs, which have potentially C1E support 529 * Check for AMD CPUs, where APIC timer interrupt does not wake up CPU from C1e.
530 * For more information see
531 * - Erratum #400 for NPT family 0xf and family 0x10 CPUs
532 * - Erratum #365 for family 0x11 (not affected because C1e not in use)
530 */ 533 */
531static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c) 534static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c)
532{ 535{
536 u64 val;
533 if (c->x86_vendor != X86_VENDOR_AMD) 537 if (c->x86_vendor != X86_VENDOR_AMD)
534 return 0; 538 goto no_c1e_idle;
535
536 if (c->x86 < 0x0F)
537 return 0;
538 539
539 /* Family 0x0f models < rev F do not have C1E */ 540 /* Family 0x0f models < rev F do not have C1E */
540 if (c->x86 == 0x0f && c->x86_model < 0x40) 541 if (c->x86 == 0x0F && c->x86_model >= 0x40)
541 return 0; 542 return 1;
542 543
543 return 1; 544 if (c->x86 == 0x10) {
545 /*
546 * check OSVW bit for CPUs that are not affected
547 * by erratum #400
548 */
549 rdmsrl(MSR_AMD64_OSVW_ID_LENGTH, val);
550 if (val >= 2) {
551 rdmsrl(MSR_AMD64_OSVW_STATUS, val);
552 if (!(val & BIT(1)))
553 goto no_c1e_idle;
554 }
555 return 1;
556 }
557
558no_c1e_idle:
559 return 0;
544} 560}
545 561
546static cpumask_var_t c1e_mask; 562static cpumask_var_t c1e_mask;
@@ -607,7 +623,7 @@ void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)
607{ 623{
608#ifdef CONFIG_SMP 624#ifdef CONFIG_SMP
609 if (pm_idle == poll_idle && smp_num_siblings > 1) { 625 if (pm_idle == poll_idle && smp_num_siblings > 1) {
610 printk(KERN_WARNING "WARNING: polling idle and HT enabled," 626 printk_once(KERN_WARNING "WARNING: polling idle and HT enabled,"
611 " performance may degrade.\n"); 627 " performance may degrade.\n");
612 } 628 }
613#endif 629#endif
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index a503b1fd04e5..2e9b55027b7e 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -12,6 +12,7 @@
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/smp.h> 13#include <linux/smp.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/slab.h>
15#include <linux/ptrace.h> 16#include <linux/ptrace.h>
16#include <linux/regset.h> 17#include <linux/regset.h>
17#include <linux/tracehook.h> 18#include <linux/tracehook.h>
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 5d7ba1a449bd..c4851eff57b3 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -55,7 +55,6 @@
55#include <linux/stddef.h> 55#include <linux/stddef.h>
56#include <linux/unistd.h> 56#include <linux/unistd.h>
57#include <linux/ptrace.h> 57#include <linux/ptrace.h>
58#include <linux/slab.h>
59#include <linux/user.h> 58#include <linux/user.h>
60#include <linux/delay.h> 59#include <linux/delay.h>
61 60
@@ -314,16 +313,17 @@ static void __init reserve_brk(void)
314#define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT) 313#define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT)
315static void __init relocate_initrd(void) 314static void __init relocate_initrd(void)
316{ 315{
317 316 /* Assume only end is not page aligned */
318 u64 ramdisk_image = boot_params.hdr.ramdisk_image; 317 u64 ramdisk_image = boot_params.hdr.ramdisk_image;
319 u64 ramdisk_size = boot_params.hdr.ramdisk_size; 318 u64 ramdisk_size = boot_params.hdr.ramdisk_size;
319 u64 area_size = PAGE_ALIGN(ramdisk_size);
320 u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT; 320 u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
321 u64 ramdisk_here; 321 u64 ramdisk_here;
322 unsigned long slop, clen, mapaddr; 322 unsigned long slop, clen, mapaddr;
323 char *p, *q; 323 char *p, *q;
324 324
325 /* We need to move the initrd down into lowmem */ 325 /* We need to move the initrd down into lowmem */
326 ramdisk_here = find_e820_area(0, end_of_lowmem, ramdisk_size, 326 ramdisk_here = find_e820_area(0, end_of_lowmem, area_size,
327 PAGE_SIZE); 327 PAGE_SIZE);
328 328
329 if (ramdisk_here == -1ULL) 329 if (ramdisk_here == -1ULL)
@@ -332,7 +332,7 @@ static void __init relocate_initrd(void)
332 332
333 /* Note: this includes all the lowmem currently occupied by 333 /* Note: this includes all the lowmem currently occupied by
334 the initrd, we rely on that fact to keep the data intact. */ 334 the initrd, we rely on that fact to keep the data intact. */
335 reserve_early(ramdisk_here, ramdisk_here + ramdisk_size, 335 reserve_early(ramdisk_here, ramdisk_here + area_size,
336 "NEW RAMDISK"); 336 "NEW RAMDISK");
337 initrd_start = ramdisk_here + PAGE_OFFSET; 337 initrd_start = ramdisk_here + PAGE_OFFSET;
338 initrd_end = initrd_start + ramdisk_size; 338 initrd_end = initrd_start + ramdisk_size;
@@ -376,9 +376,10 @@ static void __init relocate_initrd(void)
376 376
377static void __init reserve_initrd(void) 377static void __init reserve_initrd(void)
378{ 378{
379 /* Assume only end is not page aligned */
379 u64 ramdisk_image = boot_params.hdr.ramdisk_image; 380 u64 ramdisk_image = boot_params.hdr.ramdisk_image;
380 u64 ramdisk_size = boot_params.hdr.ramdisk_size; 381 u64 ramdisk_size = boot_params.hdr.ramdisk_size;
381 u64 ramdisk_end = ramdisk_image + ramdisk_size; 382 u64 ramdisk_end = PAGE_ALIGN(ramdisk_image + ramdisk_size);
382 u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT; 383 u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
383 384
384 if (!boot_params.hdr.type_of_loader || 385 if (!boot_params.hdr.type_of_loader ||
@@ -606,6 +607,16 @@ static int __init setup_elfcorehdr(char *arg)
606early_param("elfcorehdr", setup_elfcorehdr); 607early_param("elfcorehdr", setup_elfcorehdr);
607#endif 608#endif
608 609
610static __init void reserve_ibft_region(void)
611{
612 unsigned long addr, size = 0;
613
614 addr = find_ibft_region(&size);
615
616 if (size)
617 reserve_early_overlap_ok(addr, addr + size, "ibft");
618}
619
609#ifdef CONFIG_X86_RESERVE_LOW_64K 620#ifdef CONFIG_X86_RESERVE_LOW_64K
610static int __init dmi_low_memory_corruption(const struct dmi_system_id *d) 621static int __init dmi_low_memory_corruption(const struct dmi_system_id *d)
611{ 622{
@@ -908,6 +919,8 @@ void __init setup_arch(char **cmdline_p)
908 */ 919 */
909 find_smp_config(); 920 find_smp_config();
910 921
922 reserve_ibft_region();
923
911 reserve_trampoline_memory(); 924 reserve_trampoline_memory();
912 925
913#ifdef CONFIG_ACPI_SLEEP 926#ifdef CONFIG_ACPI_SLEEP
@@ -975,8 +988,6 @@ void __init setup_arch(char **cmdline_p)
975 988
976 dma32_reserve_bootmem(); 989 dma32_reserve_bootmem();
977 990
978 reserve_ibft_region();
979
980#ifdef CONFIG_KVM_CLOCK 991#ifdef CONFIG_KVM_CLOCK
981 kvmclock_init(); 992 kvmclock_init();
982#endif 993#endif
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index ec1de97600e7..d801210945d6 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -21,6 +21,7 @@
21#include <linux/cache.h> 21#include <linux/cache.h>
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/cpu.h> 23#include <linux/cpu.h>
24#include <linux/gfp.h>
24 25
25#include <asm/mtrr.h> 26#include <asm/mtrr.h>
26#include <asm/tlbflush.h> 27#include <asm/tlbflush.h>
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index a02e80c3c54b..763d815e27a0 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -49,6 +49,7 @@
49#include <linux/nmi.h> 49#include <linux/nmi.h>
50#include <linux/tboot.h> 50#include <linux/tboot.h>
51#include <linux/stackprotector.h> 51#include <linux/stackprotector.h>
52#include <linux/gfp.h>
52 53
53#include <asm/acpi.h> 54#include <asm/acpi.h>
54#include <asm/desc.h> 55#include <asm/desc.h>
@@ -242,12 +243,10 @@ static void __cpuinit smp_callin(void)
242 end_local_APIC_setup(); 243 end_local_APIC_setup();
243 map_cpu_to_logical_apicid(); 244 map_cpu_to_logical_apicid();
244 245
245 notify_cpu_starting(cpuid);
246
247 /* 246 /*
248 * Need to setup vector mappings before we enable interrupts. 247 * Need to setup vector mappings before we enable interrupts.
249 */ 248 */
250 __setup_vector_irq(smp_processor_id()); 249 setup_vector_irq(smp_processor_id());
251 /* 250 /*
252 * Get our bogomips. 251 * Get our bogomips.
253 * 252 *
@@ -264,6 +263,8 @@ static void __cpuinit smp_callin(void)
264 */ 263 */
265 smp_store_cpu_info(cpuid); 264 smp_store_cpu_info(cpuid);
266 265
266 notify_cpu_starting(cpuid);
267
267 /* 268 /*
268 * Allow the master to continue. 269 * Allow the master to continue.
269 */ 270 */
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index 364d015efebc..17b03dd3a6b5 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -9,6 +9,7 @@
9#include <linux/seq_file.h> 9#include <linux/seq_file.h>
10#include <linux/proc_fs.h> 10#include <linux/proc_fs.h>
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/slab.h>
12 13
13#include <asm/mmu_context.h> 14#include <asm/mmu_context.h>
14#include <asm/uv/uv.h> 15#include <asm/uv/uv.h>
diff --git a/arch/x86/kernel/uv_irq.c b/arch/x86/kernel/uv_irq.c
index ece73d8e3240..1d40336b030a 100644
--- a/arch/x86/kernel/uv_irq.c
+++ b/arch/x86/kernel/uv_irq.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/rbtree.h> 12#include <linux/rbtree.h>
13#include <linux/slab.h>
13#include <linux/irq.h> 14#include <linux/irq.h>
14 15
15#include <asm/apic.h> 16#include <asm/apic.h>
diff --git a/arch/x86/kernel/uv_time.c b/arch/x86/kernel/uv_time.c
index 2b75ef638dbc..56e421bc379b 100644
--- a/arch/x86/kernel/uv_time.c
+++ b/arch/x86/kernel/uv_time.c
@@ -19,6 +19,7 @@
19 * Copyright (c) Dimitri Sivanich 19 * Copyright (c) Dimitri Sivanich
20 */ 20 */
21#include <linux/clockchips.h> 21#include <linux/clockchips.h>
22#include <linux/slab.h>
22 23
23#include <asm/uv/uv_mmrs.h> 24#include <asm/uv/uv_mmrs.h>
24#include <asm/uv/uv_hub.h> 25#include <asm/uv/uv_hub.h>
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c
index 7dd599deca4a..ce9fbacb7526 100644
--- a/arch/x86/kernel/vmi_32.c
+++ b/arch/x86/kernel/vmi_32.c
@@ -28,6 +28,7 @@
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/highmem.h> 29#include <linux/highmem.h>
30#include <linux/sched.h> 30#include <linux/sched.h>
31#include <linux/gfp.h>
31#include <asm/vmi.h> 32#include <asm/vmi.h>
32#include <asm/io.h> 33#include <asm/io.h>
33#include <asm/fixmap.h> 34#include <asm/fixmap.h>
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 44879df55696..2cc249718c46 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -291,8 +291,8 @@ SECTIONS
291 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 291 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
292 __smp_locks = .; 292 __smp_locks = .;
293 *(.smp_locks) 293 *(.smp_locks)
294 __smp_locks_end = .;
295 . = ALIGN(PAGE_SIZE); 294 . = ALIGN(PAGE_SIZE);
295 __smp_locks_end = .;
296 } 296 }
297 297
298#ifdef CONFIG_X86_64 298#ifdef CONFIG_X86_64
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c
index 294698b6daff..0150affad25d 100644
--- a/arch/x86/kvm/i8254.c
+++ b/arch/x86/kvm/i8254.c
@@ -32,6 +32,7 @@
32#define pr_fmt(fmt) "pit: " fmt 32#define pr_fmt(fmt) "pit: " fmt
33 33
34#include <linux/kvm_host.h> 34#include <linux/kvm_host.h>
35#include <linux/slab.h>
35 36
36#include "irq.h" 37#include "irq.h"
37#include "i8254.h" 38#include "i8254.h"
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c
index 07771da85de5..a790fa128a9f 100644
--- a/arch/x86/kvm/i8259.c
+++ b/arch/x86/kvm/i8259.c
@@ -26,6 +26,7 @@
26 * Port from Qemu. 26 * Port from Qemu.
27 */ 27 */
28#include <linux/mm.h> 28#include <linux/mm.h>
29#include <linux/slab.h>
29#include <linux/bitops.h> 30#include <linux/bitops.h>
30#include "irq.h" 31#include "irq.h"
31 32
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 4b224f90087b..1eb7a4ae0c9c 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -26,6 +26,7 @@
26#include <linux/io.h> 26#include <linux/io.h>
27#include <linux/module.h> 27#include <linux/module.h>
28#include <linux/math64.h> 28#include <linux/math64.h>
29#include <linux/slab.h>
29#include <asm/processor.h> 30#include <asm/processor.h>
30#include <asm/msr.h> 31#include <asm/msr.h>
31#include <asm/page.h> 32#include <asm/page.h>
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 741373e8ca77..19a8906bcaa2 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -31,6 +31,7 @@
31#include <linux/hugetlb.h> 31#include <linux/hugetlb.h>
32#include <linux/compiler.h> 32#include <linux/compiler.h>
33#include <linux/srcu.h> 33#include <linux/srcu.h>
34#include <linux/slab.h>
34 35
35#include <asm/page.h> 36#include <asm/page.h>
36#include <asm/cmpxchg.h> 37#include <asm/cmpxchg.h>
@@ -1489,8 +1490,8 @@ static int mmu_zap_unsync_children(struct kvm *kvm,
1489 for_each_sp(pages, sp, parents, i) { 1490 for_each_sp(pages, sp, parents, i) {
1490 kvm_mmu_zap_page(kvm, sp); 1491 kvm_mmu_zap_page(kvm, sp);
1491 mmu_pages_clear_parents(&parents); 1492 mmu_pages_clear_parents(&parents);
1493 zapped++;
1492 } 1494 }
1493 zapped += pages.nr;
1494 kvm_mmu_pages_init(parent, &parents, &pages); 1495 kvm_mmu_pages_init(parent, &parents, &pages);
1495 } 1496 }
1496 1497
@@ -1541,14 +1542,16 @@ void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages)
1541 */ 1542 */
1542 1543
1543 if (used_pages > kvm_nr_mmu_pages) { 1544 if (used_pages > kvm_nr_mmu_pages) {
1544 while (used_pages > kvm_nr_mmu_pages) { 1545 while (used_pages > kvm_nr_mmu_pages &&
1546 !list_empty(&kvm->arch.active_mmu_pages)) {
1545 struct kvm_mmu_page *page; 1547 struct kvm_mmu_page *page;
1546 1548
1547 page = container_of(kvm->arch.active_mmu_pages.prev, 1549 page = container_of(kvm->arch.active_mmu_pages.prev,
1548 struct kvm_mmu_page, link); 1550 struct kvm_mmu_page, link);
1549 kvm_mmu_zap_page(kvm, page); 1551 used_pages -= kvm_mmu_zap_page(kvm, page);
1550 used_pages--; 1552 used_pages--;
1551 } 1553 }
1554 kvm_nr_mmu_pages = used_pages;
1552 kvm->arch.n_free_mmu_pages = 0; 1555 kvm->arch.n_free_mmu_pages = 0;
1553 } 1556 }
1554 else 1557 else
@@ -1595,7 +1598,8 @@ static void mmu_unshadow(struct kvm *kvm, gfn_t gfn)
1595 && !sp->role.invalid) { 1598 && !sp->role.invalid) {
1596 pgprintk("%s: zap %lx %x\n", 1599 pgprintk("%s: zap %lx %x\n",
1597 __func__, gfn, sp->role.word); 1600 __func__, gfn, sp->role.word);
1598 kvm_mmu_zap_page(kvm, sp); 1601 if (kvm_mmu_zap_page(kvm, sp))
1602 nn = bucket->first;
1599 } 1603 }
1600 } 1604 }
1601} 1605}
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 52f78dd03010..2ba58206812a 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -26,6 +26,7 @@
26#include <linux/highmem.h> 26#include <linux/highmem.h>
27#include <linux/sched.h> 27#include <linux/sched.h>
28#include <linux/ftrace_event.h> 28#include <linux/ftrace_event.h>
29#include <linux/slab.h>
29 30
30#include <asm/desc.h> 31#include <asm/desc.h>
31 32
@@ -705,29 +706,28 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
705 if (err) 706 if (err)
706 goto free_svm; 707 goto free_svm;
707 708
709 err = -ENOMEM;
708 page = alloc_page(GFP_KERNEL); 710 page = alloc_page(GFP_KERNEL);
709 if (!page) { 711 if (!page)
710 err = -ENOMEM;
711 goto uninit; 712 goto uninit;
712 }
713 713
714 err = -ENOMEM;
715 msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER); 714 msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER);
716 if (!msrpm_pages) 715 if (!msrpm_pages)
717 goto uninit; 716 goto free_page1;
718 717
719 nested_msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER); 718 nested_msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER);
720 if (!nested_msrpm_pages) 719 if (!nested_msrpm_pages)
721 goto uninit; 720 goto free_page2;
722
723 svm->msrpm = page_address(msrpm_pages);
724 svm_vcpu_init_msrpm(svm->msrpm);
725 721
726 hsave_page = alloc_page(GFP_KERNEL); 722 hsave_page = alloc_page(GFP_KERNEL);
727 if (!hsave_page) 723 if (!hsave_page)
728 goto uninit; 724 goto free_page3;
725
729 svm->nested.hsave = page_address(hsave_page); 726 svm->nested.hsave = page_address(hsave_page);
730 727
728 svm->msrpm = page_address(msrpm_pages);
729 svm_vcpu_init_msrpm(svm->msrpm);
730
731 svm->nested.msrpm = page_address(nested_msrpm_pages); 731 svm->nested.msrpm = page_address(nested_msrpm_pages);
732 732
733 svm->vmcb = page_address(page); 733 svm->vmcb = page_address(page);
@@ -743,6 +743,12 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
743 743
744 return &svm->vcpu; 744 return &svm->vcpu;
745 745
746free_page3:
747 __free_pages(nested_msrpm_pages, MSRPM_ALLOC_ORDER);
748free_page2:
749 __free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
750free_page1:
751 __free_page(page);
746uninit: 752uninit:
747 kvm_vcpu_uninit(&svm->vcpu); 753 kvm_vcpu_uninit(&svm->vcpu);
748free_svm: 754free_svm:
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 14873b9f8430..bc933cfb4e66 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -26,6 +26,7 @@
26#include <linux/sched.h> 26#include <linux/sched.h>
27#include <linux/moduleparam.h> 27#include <linux/moduleparam.h>
28#include <linux/ftrace_event.h> 28#include <linux/ftrace_event.h>
29#include <linux/slab.h>
29#include "kvm_cache_regs.h" 30#include "kvm_cache_regs.h"
30#include "x86.h" 31#include "x86.h"
31 32
@@ -76,6 +77,8 @@ module_param(emulate_invalid_guest_state, bool, S_IRUGO);
76#define KVM_PMODE_VM_CR4_ALWAYS_ON (X86_CR4_PAE | X86_CR4_VMXE) 77#define KVM_PMODE_VM_CR4_ALWAYS_ON (X86_CR4_PAE | X86_CR4_VMXE)
77#define KVM_RMODE_VM_CR4_ALWAYS_ON (X86_CR4_VME | X86_CR4_PAE | X86_CR4_VMXE) 78#define KVM_RMODE_VM_CR4_ALWAYS_ON (X86_CR4_VME | X86_CR4_PAE | X86_CR4_VMXE)
78 79
80#define RMODE_GUEST_OWNED_EFLAGS_BITS (~(X86_EFLAGS_IOPL | X86_EFLAGS_VM))
81
79/* 82/*
80 * These 2 parameters are used to config the controls for Pause-Loop Exiting: 83 * These 2 parameters are used to config the controls for Pause-Loop Exiting:
81 * ple_gap: upper bound on the amount of time between two successive 84 * ple_gap: upper bound on the amount of time between two successive
@@ -130,7 +133,7 @@ struct vcpu_vmx {
130 } host_state; 133 } host_state;
131 struct { 134 struct {
132 int vm86_active; 135 int vm86_active;
133 u8 save_iopl; 136 ulong save_rflags;
134 struct kvm_save_segment { 137 struct kvm_save_segment {
135 u16 selector; 138 u16 selector;
136 unsigned long base; 139 unsigned long base;
@@ -817,18 +820,23 @@ static void vmx_fpu_deactivate(struct kvm_vcpu *vcpu)
817 820
818static unsigned long vmx_get_rflags(struct kvm_vcpu *vcpu) 821static unsigned long vmx_get_rflags(struct kvm_vcpu *vcpu)
819{ 822{
820 unsigned long rflags; 823 unsigned long rflags, save_rflags;
821 824
822 rflags = vmcs_readl(GUEST_RFLAGS); 825 rflags = vmcs_readl(GUEST_RFLAGS);
823 if (to_vmx(vcpu)->rmode.vm86_active) 826 if (to_vmx(vcpu)->rmode.vm86_active) {
824 rflags &= ~(unsigned long)(X86_EFLAGS_IOPL | X86_EFLAGS_VM); 827 rflags &= RMODE_GUEST_OWNED_EFLAGS_BITS;
828 save_rflags = to_vmx(vcpu)->rmode.save_rflags;
829 rflags |= save_rflags & ~RMODE_GUEST_OWNED_EFLAGS_BITS;
830 }
825 return rflags; 831 return rflags;
826} 832}
827 833
828static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) 834static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)
829{ 835{
830 if (to_vmx(vcpu)->rmode.vm86_active) 836 if (to_vmx(vcpu)->rmode.vm86_active) {
837 to_vmx(vcpu)->rmode.save_rflags = rflags;
831 rflags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM; 838 rflags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM;
839 }
832 vmcs_writel(GUEST_RFLAGS, rflags); 840 vmcs_writel(GUEST_RFLAGS, rflags);
833} 841}
834 842
@@ -1482,8 +1490,8 @@ static void enter_pmode(struct kvm_vcpu *vcpu)
1482 vmcs_write32(GUEST_TR_AR_BYTES, vmx->rmode.tr.ar); 1490 vmcs_write32(GUEST_TR_AR_BYTES, vmx->rmode.tr.ar);
1483 1491
1484 flags = vmcs_readl(GUEST_RFLAGS); 1492 flags = vmcs_readl(GUEST_RFLAGS);
1485 flags &= ~(X86_EFLAGS_IOPL | X86_EFLAGS_VM); 1493 flags &= RMODE_GUEST_OWNED_EFLAGS_BITS;
1486 flags |= (vmx->rmode.save_iopl << IOPL_SHIFT); 1494 flags |= vmx->rmode.save_rflags & ~RMODE_GUEST_OWNED_EFLAGS_BITS;
1487 vmcs_writel(GUEST_RFLAGS, flags); 1495 vmcs_writel(GUEST_RFLAGS, flags);
1488 1496
1489 vmcs_writel(GUEST_CR4, (vmcs_readl(GUEST_CR4) & ~X86_CR4_VME) | 1497 vmcs_writel(GUEST_CR4, (vmcs_readl(GUEST_CR4) & ~X86_CR4_VME) |
@@ -1556,8 +1564,7 @@ static void enter_rmode(struct kvm_vcpu *vcpu)
1556 vmcs_write32(GUEST_TR_AR_BYTES, 0x008b); 1564 vmcs_write32(GUEST_TR_AR_BYTES, 0x008b);
1557 1565
1558 flags = vmcs_readl(GUEST_RFLAGS); 1566 flags = vmcs_readl(GUEST_RFLAGS);
1559 vmx->rmode.save_iopl 1567 vmx->rmode.save_rflags = flags;
1560 = (flags & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
1561 1568
1562 flags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM; 1569 flags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM;
1563 1570
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e46282a56565..3c4ca98ad27f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -39,6 +39,7 @@
39#include <linux/cpufreq.h> 39#include <linux/cpufreq.h>
40#include <linux/user-return-notifier.h> 40#include <linux/user-return-notifier.h>
41#include <linux/srcu.h> 41#include <linux/srcu.h>
42#include <linux/slab.h>
42#include <trace/events/kvm.h> 43#include <trace/events/kvm.h>
43#undef TRACE_INCLUDE_FILE 44#undef TRACE_INCLUDE_FILE
44#define CREATE_TRACE_POINTS 45#define CREATE_TRACE_POINTS
@@ -432,8 +433,6 @@ void kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
432 433
433#ifdef CONFIG_X86_64 434#ifdef CONFIG_X86_64
434 if (cr0 & 0xffffffff00000000UL) { 435 if (cr0 & 0xffffffff00000000UL) {
435 printk(KERN_DEBUG "set_cr0: 0x%lx #GP, reserved bits 0x%lx\n",
436 cr0, kvm_read_cr0(vcpu));
437 kvm_inject_gp(vcpu, 0); 436 kvm_inject_gp(vcpu, 0);
438 return; 437 return;
439 } 438 }
@@ -442,14 +441,11 @@ void kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
442 cr0 &= ~CR0_RESERVED_BITS; 441 cr0 &= ~CR0_RESERVED_BITS;
443 442
444 if ((cr0 & X86_CR0_NW) && !(cr0 & X86_CR0_CD)) { 443 if ((cr0 & X86_CR0_NW) && !(cr0 & X86_CR0_CD)) {
445 printk(KERN_DEBUG "set_cr0: #GP, CD == 0 && NW == 1\n");
446 kvm_inject_gp(vcpu, 0); 444 kvm_inject_gp(vcpu, 0);
447 return; 445 return;
448 } 446 }
449 447
450 if ((cr0 & X86_CR0_PG) && !(cr0 & X86_CR0_PE)) { 448 if ((cr0 & X86_CR0_PG) && !(cr0 & X86_CR0_PE)) {
451 printk(KERN_DEBUG "set_cr0: #GP, set PG flag "
452 "and a clear PE flag\n");
453 kvm_inject_gp(vcpu, 0); 449 kvm_inject_gp(vcpu, 0);
454 return; 450 return;
455 } 451 }
@@ -460,15 +456,11 @@ void kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
460 int cs_db, cs_l; 456 int cs_db, cs_l;
461 457
462 if (!is_pae(vcpu)) { 458 if (!is_pae(vcpu)) {
463 printk(KERN_DEBUG "set_cr0: #GP, start paging "
464 "in long mode while PAE is disabled\n");
465 kvm_inject_gp(vcpu, 0); 459 kvm_inject_gp(vcpu, 0);
466 return; 460 return;
467 } 461 }
468 kvm_x86_ops->get_cs_db_l_bits(vcpu, &cs_db, &cs_l); 462 kvm_x86_ops->get_cs_db_l_bits(vcpu, &cs_db, &cs_l);
469 if (cs_l) { 463 if (cs_l) {
470 printk(KERN_DEBUG "set_cr0: #GP, start paging "
471 "in long mode while CS.L == 1\n");
472 kvm_inject_gp(vcpu, 0); 464 kvm_inject_gp(vcpu, 0);
473 return; 465 return;
474 466
@@ -476,8 +468,6 @@ void kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
476 } else 468 } else
477#endif 469#endif
478 if (is_pae(vcpu) && !load_pdptrs(vcpu, vcpu->arch.cr3)) { 470 if (is_pae(vcpu) && !load_pdptrs(vcpu, vcpu->arch.cr3)) {
479 printk(KERN_DEBUG "set_cr0: #GP, pdptrs "
480 "reserved bits\n");
481 kvm_inject_gp(vcpu, 0); 471 kvm_inject_gp(vcpu, 0);
482 return; 472 return;
483 } 473 }
@@ -504,28 +494,23 @@ void kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
504 unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE; 494 unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE;
505 495
506 if (cr4 & CR4_RESERVED_BITS) { 496 if (cr4 & CR4_RESERVED_BITS) {
507 printk(KERN_DEBUG "set_cr4: #GP, reserved bits\n");
508 kvm_inject_gp(vcpu, 0); 497 kvm_inject_gp(vcpu, 0);
509 return; 498 return;
510 } 499 }
511 500
512 if (is_long_mode(vcpu)) { 501 if (is_long_mode(vcpu)) {
513 if (!(cr4 & X86_CR4_PAE)) { 502 if (!(cr4 & X86_CR4_PAE)) {
514 printk(KERN_DEBUG "set_cr4: #GP, clearing PAE while "
515 "in long mode\n");
516 kvm_inject_gp(vcpu, 0); 503 kvm_inject_gp(vcpu, 0);
517 return; 504 return;
518 } 505 }
519 } else if (is_paging(vcpu) && (cr4 & X86_CR4_PAE) 506 } else if (is_paging(vcpu) && (cr4 & X86_CR4_PAE)
520 && ((cr4 ^ old_cr4) & pdptr_bits) 507 && ((cr4 ^ old_cr4) & pdptr_bits)
521 && !load_pdptrs(vcpu, vcpu->arch.cr3)) { 508 && !load_pdptrs(vcpu, vcpu->arch.cr3)) {
522 printk(KERN_DEBUG "set_cr4: #GP, pdptrs reserved bits\n");
523 kvm_inject_gp(vcpu, 0); 509 kvm_inject_gp(vcpu, 0);
524 return; 510 return;
525 } 511 }
526 512
527 if (cr4 & X86_CR4_VMXE) { 513 if (cr4 & X86_CR4_VMXE) {
528 printk(KERN_DEBUG "set_cr4: #GP, setting VMXE\n");
529 kvm_inject_gp(vcpu, 0); 514 kvm_inject_gp(vcpu, 0);
530 return; 515 return;
531 } 516 }
@@ -546,21 +531,16 @@ void kvm_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
546 531
547 if (is_long_mode(vcpu)) { 532 if (is_long_mode(vcpu)) {
548 if (cr3 & CR3_L_MODE_RESERVED_BITS) { 533 if (cr3 & CR3_L_MODE_RESERVED_BITS) {
549 printk(KERN_DEBUG "set_cr3: #GP, reserved bits\n");
550 kvm_inject_gp(vcpu, 0); 534 kvm_inject_gp(vcpu, 0);
551 return; 535 return;
552 } 536 }
553 } else { 537 } else {
554 if (is_pae(vcpu)) { 538 if (is_pae(vcpu)) {
555 if (cr3 & CR3_PAE_RESERVED_BITS) { 539 if (cr3 & CR3_PAE_RESERVED_BITS) {
556 printk(KERN_DEBUG
557 "set_cr3: #GP, reserved bits\n");
558 kvm_inject_gp(vcpu, 0); 540 kvm_inject_gp(vcpu, 0);
559 return; 541 return;
560 } 542 }
561 if (is_paging(vcpu) && !load_pdptrs(vcpu, cr3)) { 543 if (is_paging(vcpu) && !load_pdptrs(vcpu, cr3)) {
562 printk(KERN_DEBUG "set_cr3: #GP, pdptrs "
563 "reserved bits\n");
564 kvm_inject_gp(vcpu, 0); 544 kvm_inject_gp(vcpu, 0);
565 return; 545 return;
566 } 546 }
@@ -592,7 +572,6 @@ EXPORT_SYMBOL_GPL(kvm_set_cr3);
592void kvm_set_cr8(struct kvm_vcpu *vcpu, unsigned long cr8) 572void kvm_set_cr8(struct kvm_vcpu *vcpu, unsigned long cr8)
593{ 573{
594 if (cr8 & CR8_RESERVED_BITS) { 574 if (cr8 & CR8_RESERVED_BITS) {
595 printk(KERN_DEBUG "set_cr8: #GP, reserved bits 0x%lx\n", cr8);
596 kvm_inject_gp(vcpu, 0); 575 kvm_inject_gp(vcpu, 0);
597 return; 576 return;
598 } 577 }
@@ -648,15 +627,12 @@ static u32 emulated_msrs[] = {
648static void set_efer(struct kvm_vcpu *vcpu, u64 efer) 627static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
649{ 628{
650 if (efer & efer_reserved_bits) { 629 if (efer & efer_reserved_bits) {
651 printk(KERN_DEBUG "set_efer: 0x%llx #GP, reserved bits\n",
652 efer);
653 kvm_inject_gp(vcpu, 0); 630 kvm_inject_gp(vcpu, 0);
654 return; 631 return;
655 } 632 }
656 633
657 if (is_paging(vcpu) 634 if (is_paging(vcpu)
658 && (vcpu->arch.efer & EFER_LME) != (efer & EFER_LME)) { 635 && (vcpu->arch.efer & EFER_LME) != (efer & EFER_LME)) {
659 printk(KERN_DEBUG "set_efer: #GP, change LME while paging\n");
660 kvm_inject_gp(vcpu, 0); 636 kvm_inject_gp(vcpu, 0);
661 return; 637 return;
662 } 638 }
@@ -666,7 +642,6 @@ static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
666 642
667 feat = kvm_find_cpuid_entry(vcpu, 0x80000001, 0); 643 feat = kvm_find_cpuid_entry(vcpu, 0x80000001, 0);
668 if (!feat || !(feat->edx & bit(X86_FEATURE_FXSR_OPT))) { 644 if (!feat || !(feat->edx & bit(X86_FEATURE_FXSR_OPT))) {
669 printk(KERN_DEBUG "set_efer: #GP, enable FFXSR w/o CPUID capability\n");
670 kvm_inject_gp(vcpu, 0); 645 kvm_inject_gp(vcpu, 0);
671 return; 646 return;
672 } 647 }
@@ -677,7 +652,6 @@ static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
677 652
678 feat = kvm_find_cpuid_entry(vcpu, 0x80000001, 0); 653 feat = kvm_find_cpuid_entry(vcpu, 0x80000001, 0);
679 if (!feat || !(feat->ecx & bit(X86_FEATURE_SVM))) { 654 if (!feat || !(feat->ecx & bit(X86_FEATURE_SVM))) {
680 printk(KERN_DEBUG "set_efer: #GP, enable SVM w/o SVM\n");
681 kvm_inject_gp(vcpu, 0); 655 kvm_inject_gp(vcpu, 0);
682 return; 656 return;
683 } 657 }
@@ -966,9 +940,13 @@ static int set_msr_mce(struct kvm_vcpu *vcpu, u32 msr, u64 data)
966 if (msr >= MSR_IA32_MC0_CTL && 940 if (msr >= MSR_IA32_MC0_CTL &&
967 msr < MSR_IA32_MC0_CTL + 4 * bank_num) { 941 msr < MSR_IA32_MC0_CTL + 4 * bank_num) {
968 u32 offset = msr - MSR_IA32_MC0_CTL; 942 u32 offset = msr - MSR_IA32_MC0_CTL;
969 /* only 0 or all 1s can be written to IA32_MCi_CTL */ 943 /* only 0 or all 1s can be written to IA32_MCi_CTL
944 * some Linux kernels though clear bit 10 in bank 4 to
945 * workaround a BIOS/GART TBL issue on AMD K8s, ignore
946 * this to avoid an uncatched #GP in the guest
947 */
970 if ((offset & 0x3) == 0 && 948 if ((offset & 0x3) == 0 &&
971 data != 0 && data != ~(u64)0) 949 data != 0 && (data | (1 << 10)) != ~(u64)0)
972 return -1; 950 return -1;
973 vcpu->arch.mce_banks[offset] = data; 951 vcpu->arch.mce_banks[offset] = data;
974 break; 952 break;
@@ -2634,8 +2612,9 @@ static int kvm_vm_ioctl_reinject(struct kvm *kvm,
2634int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, 2612int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
2635 struct kvm_dirty_log *log) 2613 struct kvm_dirty_log *log)
2636{ 2614{
2637 int r, n, i; 2615 int r, i;
2638 struct kvm_memory_slot *memslot; 2616 struct kvm_memory_slot *memslot;
2617 unsigned long n;
2639 unsigned long is_dirty = 0; 2618 unsigned long is_dirty = 0;
2640 unsigned long *dirty_bitmap = NULL; 2619 unsigned long *dirty_bitmap = NULL;
2641 2620
@@ -2650,7 +2629,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
2650 if (!memslot->dirty_bitmap) 2629 if (!memslot->dirty_bitmap)
2651 goto out; 2630 goto out;
2652 2631
2653 n = ALIGN(memslot->npages, BITS_PER_LONG) / 8; 2632 n = kvm_dirty_bitmap_bytes(memslot);
2654 2633
2655 r = -ENOMEM; 2634 r = -ENOMEM;
2656 dirty_bitmap = vmalloc(n); 2635 dirty_bitmap = vmalloc(n);
@@ -4482,7 +4461,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
4482 kvm_set_cr8(vcpu, kvm_run->cr8); 4461 kvm_set_cr8(vcpu, kvm_run->cr8);
4483 4462
4484 if (vcpu->arch.pio.cur_count) { 4463 if (vcpu->arch.pio.cur_count) {
4464 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
4485 r = complete_pio(vcpu); 4465 r = complete_pio(vcpu);
4466 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
4486 if (r) 4467 if (r)
4487 goto out; 4468 goto out;
4488 } 4469 }
@@ -5145,6 +5126,7 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason)
5145 int ret = 0; 5126 int ret = 0;
5146 u32 old_tss_base = get_segment_base(vcpu, VCPU_SREG_TR); 5127 u32 old_tss_base = get_segment_base(vcpu, VCPU_SREG_TR);
5147 u16 old_tss_sel = get_segment_selector(vcpu, VCPU_SREG_TR); 5128 u16 old_tss_sel = get_segment_selector(vcpu, VCPU_SREG_TR);
5129 u32 desc_limit;
5148 5130
5149 old_tss_base = kvm_mmu_gva_to_gpa_write(vcpu, old_tss_base, NULL); 5131 old_tss_base = kvm_mmu_gva_to_gpa_write(vcpu, old_tss_base, NULL);
5150 5132
@@ -5167,7 +5149,10 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason)
5167 } 5149 }
5168 } 5150 }
5169 5151
5170 if (!nseg_desc.p || get_desc_limit(&nseg_desc) < 0x67) { 5152 desc_limit = get_desc_limit(&nseg_desc);
5153 if (!nseg_desc.p ||
5154 ((desc_limit < 0x67 && (nseg_desc.type & 8)) ||
5155 desc_limit < 0x2b)) {
5171 kvm_queue_exception_e(vcpu, TS_VECTOR, tss_selector & 0xfffc); 5156 kvm_queue_exception_e(vcpu, TS_VECTOR, tss_selector & 0xfffc);
5172 return 1; 5157 return 1;
5173 } 5158 }
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index 7e59dc1d3fc2..2bdf628066bd 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -115,7 +115,7 @@ static void async_hcall(unsigned long call, unsigned long arg1,
115 local_irq_save(flags); 115 local_irq_save(flags);
116 if (lguest_data.hcall_status[next_call] != 0xFF) { 116 if (lguest_data.hcall_status[next_call] != 0xFF) {
117 /* Table full, so do normal hcall which will flush table. */ 117 /* Table full, so do normal hcall which will flush table. */
118 kvm_hypercall4(call, arg1, arg2, arg3, arg4); 118 hcall(call, arg1, arg2, arg3, arg4);
119 } else { 119 } else {
120 lguest_data.hcalls[next_call].arg0 = call; 120 lguest_data.hcalls[next_call].arg0 = call;
121 lguest_data.hcalls[next_call].arg1 = arg1; 121 lguest_data.hcalls[next_call].arg1 = arg1;
@@ -145,46 +145,45 @@ static void async_hcall(unsigned long call, unsigned long arg1,
145 * So, when we're in lazy mode, we call async_hcall() to store the call for 145 * So, when we're in lazy mode, we call async_hcall() to store the call for
146 * future processing: 146 * future processing:
147 */ 147 */
148static void lazy_hcall1(unsigned long call, 148static void lazy_hcall1(unsigned long call, unsigned long arg1)
149 unsigned long arg1)
150{ 149{
151 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) 150 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
152 kvm_hypercall1(call, arg1); 151 hcall(call, arg1, 0, 0, 0);
153 else 152 else
154 async_hcall(call, arg1, 0, 0, 0); 153 async_hcall(call, arg1, 0, 0, 0);
155} 154}
156 155
157/* You can imagine what lazy_hcall2, 3 and 4 look like. :*/ 156/* You can imagine what lazy_hcall2, 3 and 4 look like. :*/
158static void lazy_hcall2(unsigned long call, 157static void lazy_hcall2(unsigned long call,
159 unsigned long arg1, 158 unsigned long arg1,
160 unsigned long arg2) 159 unsigned long arg2)
161{ 160{
162 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) 161 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
163 kvm_hypercall2(call, arg1, arg2); 162 hcall(call, arg1, arg2, 0, 0);
164 else 163 else
165 async_hcall(call, arg1, arg2, 0, 0); 164 async_hcall(call, arg1, arg2, 0, 0);
166} 165}
167 166
168static void lazy_hcall3(unsigned long call, 167static void lazy_hcall3(unsigned long call,
169 unsigned long arg1, 168 unsigned long arg1,
170 unsigned long arg2, 169 unsigned long arg2,
171 unsigned long arg3) 170 unsigned long arg3)
172{ 171{
173 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) 172 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
174 kvm_hypercall3(call, arg1, arg2, arg3); 173 hcall(call, arg1, arg2, arg3, 0);
175 else 174 else
176 async_hcall(call, arg1, arg2, arg3, 0); 175 async_hcall(call, arg1, arg2, arg3, 0);
177} 176}
178 177
179#ifdef CONFIG_X86_PAE 178#ifdef CONFIG_X86_PAE
180static void lazy_hcall4(unsigned long call, 179static void lazy_hcall4(unsigned long call,
181 unsigned long arg1, 180 unsigned long arg1,
182 unsigned long arg2, 181 unsigned long arg2,
183 unsigned long arg3, 182 unsigned long arg3,
184 unsigned long arg4) 183 unsigned long arg4)
185{ 184{
186 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) 185 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
187 kvm_hypercall4(call, arg1, arg2, arg3, arg4); 186 hcall(call, arg1, arg2, arg3, arg4);
188 else 187 else
189 async_hcall(call, arg1, arg2, arg3, arg4); 188 async_hcall(call, arg1, arg2, arg3, arg4);
190} 189}
@@ -196,13 +195,13 @@ static void lazy_hcall4(unsigned long call,
196:*/ 195:*/
197static void lguest_leave_lazy_mmu_mode(void) 196static void lguest_leave_lazy_mmu_mode(void)
198{ 197{
199 kvm_hypercall0(LHCALL_FLUSH_ASYNC); 198 hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0, 0);
200 paravirt_leave_lazy_mmu(); 199 paravirt_leave_lazy_mmu();
201} 200}
202 201
203static void lguest_end_context_switch(struct task_struct *next) 202static void lguest_end_context_switch(struct task_struct *next)
204{ 203{
205 kvm_hypercall0(LHCALL_FLUSH_ASYNC); 204 hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0, 0);
206 paravirt_end_context_switch(next); 205 paravirt_end_context_switch(next);
207} 206}
208 207
@@ -286,7 +285,7 @@ static void lguest_write_idt_entry(gate_desc *dt,
286 /* Keep the local copy up to date. */ 285 /* Keep the local copy up to date. */
287 native_write_idt_entry(dt, entrynum, g); 286 native_write_idt_entry(dt, entrynum, g);
288 /* Tell Host about this new entry. */ 287 /* Tell Host about this new entry. */
289 kvm_hypercall3(LHCALL_LOAD_IDT_ENTRY, entrynum, desc[0], desc[1]); 288 hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, desc[0], desc[1], 0);
290} 289}
291 290
292/* 291/*
@@ -300,7 +299,7 @@ static void lguest_load_idt(const struct desc_ptr *desc)
300 struct desc_struct *idt = (void *)desc->address; 299 struct desc_struct *idt = (void *)desc->address;
301 300
302 for (i = 0; i < (desc->size+1)/8; i++) 301 for (i = 0; i < (desc->size+1)/8; i++)
303 kvm_hypercall3(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b); 302 hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b, 0);
304} 303}
305 304
306/* 305/*
@@ -321,7 +320,7 @@ static void lguest_load_gdt(const struct desc_ptr *desc)
321 struct desc_struct *gdt = (void *)desc->address; 320 struct desc_struct *gdt = (void *)desc->address;
322 321
323 for (i = 0; i < (desc->size+1)/8; i++) 322 for (i = 0; i < (desc->size+1)/8; i++)
324 kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, i, gdt[i].a, gdt[i].b); 323 hcall(LHCALL_LOAD_GDT_ENTRY, i, gdt[i].a, gdt[i].b, 0);
325} 324}
326 325
327/* 326/*
@@ -334,8 +333,8 @@ static void lguest_write_gdt_entry(struct desc_struct *dt, int entrynum,
334{ 333{
335 native_write_gdt_entry(dt, entrynum, desc, type); 334 native_write_gdt_entry(dt, entrynum, desc, type);
336 /* Tell Host about this new entry. */ 335 /* Tell Host about this new entry. */
337 kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, entrynum, 336 hcall(LHCALL_LOAD_GDT_ENTRY, entrynum,
338 dt[entrynum].a, dt[entrynum].b); 337 dt[entrynum].a, dt[entrynum].b, 0);
339} 338}
340 339
341/* 340/*
@@ -931,7 +930,7 @@ static int lguest_clockevent_set_next_event(unsigned long delta,
931 } 930 }
932 931
933 /* Please wake us this far in the future. */ 932 /* Please wake us this far in the future. */
934 kvm_hypercall1(LHCALL_SET_CLOCKEVENT, delta); 933 hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0, 0);
935 return 0; 934 return 0;
936} 935}
937 936
@@ -942,7 +941,7 @@ static void lguest_clockevent_set_mode(enum clock_event_mode mode,
942 case CLOCK_EVT_MODE_UNUSED: 941 case CLOCK_EVT_MODE_UNUSED:
943 case CLOCK_EVT_MODE_SHUTDOWN: 942 case CLOCK_EVT_MODE_SHUTDOWN:
944 /* A 0 argument shuts the clock down. */ 943 /* A 0 argument shuts the clock down. */
945 kvm_hypercall0(LHCALL_SET_CLOCKEVENT); 944 hcall(LHCALL_SET_CLOCKEVENT, 0, 0, 0, 0);
946 break; 945 break;
947 case CLOCK_EVT_MODE_ONESHOT: 946 case CLOCK_EVT_MODE_ONESHOT:
948 /* This is what we expect. */ 947 /* This is what we expect. */
@@ -1100,7 +1099,7 @@ static void set_lguest_basic_apic_ops(void)
1100/* STOP! Until an interrupt comes in. */ 1099/* STOP! Until an interrupt comes in. */
1101static void lguest_safe_halt(void) 1100static void lguest_safe_halt(void)
1102{ 1101{
1103 kvm_hypercall0(LHCALL_HALT); 1102 hcall(LHCALL_HALT, 0, 0, 0, 0);
1104} 1103}
1105 1104
1106/* 1105/*
@@ -1112,8 +1111,8 @@ static void lguest_safe_halt(void)
1112 */ 1111 */
1113static void lguest_power_off(void) 1112static void lguest_power_off(void)
1114{ 1113{
1115 kvm_hypercall2(LHCALL_SHUTDOWN, __pa("Power down"), 1114 hcall(LHCALL_SHUTDOWN, __pa("Power down"),
1116 LGUEST_SHUTDOWN_POWEROFF); 1115 LGUEST_SHUTDOWN_POWEROFF, 0, 0);
1117} 1116}
1118 1117
1119/* 1118/*
@@ -1123,7 +1122,7 @@ static void lguest_power_off(void)
1123 */ 1122 */
1124static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p) 1123static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p)
1125{ 1124{
1126 kvm_hypercall2(LHCALL_SHUTDOWN, __pa(p), LGUEST_SHUTDOWN_POWEROFF); 1125 hcall(LHCALL_SHUTDOWN, __pa(p), LGUEST_SHUTDOWN_POWEROFF, 0, 0);
1127 /* The hcall won't return, but to keep gcc happy, we're "done". */ 1126 /* The hcall won't return, but to keep gcc happy, we're "done". */
1128 return NOTIFY_DONE; 1127 return NOTIFY_DONE;
1129} 1128}
@@ -1162,7 +1161,7 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
1162 len = sizeof(scratch) - 1; 1161 len = sizeof(scratch) - 1;
1163 scratch[len] = '\0'; 1162 scratch[len] = '\0';
1164 memcpy(scratch, buf, len); 1163 memcpy(scratch, buf, len);
1165 kvm_hypercall1(LHCALL_NOTIFY, __pa(scratch)); 1164 hcall(LHCALL_NOTIFY, __pa(scratch), 0, 0, 0);
1166 1165
1167 /* This routine returns the number of bytes actually written. */ 1166 /* This routine returns the number of bytes actually written. */
1168 return len; 1167 return len;
@@ -1174,7 +1173,7 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)
1174 */ 1173 */
1175static void lguest_restart(char *reason) 1174static void lguest_restart(char *reason)
1176{ 1175{
1177 kvm_hypercall2(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART); 1176 hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0, 0);
1178} 1177}
1179 1178
1180/*G:050 1179/*G:050
diff --git a/arch/x86/lguest/i386_head.S b/arch/x86/lguest/i386_head.S
index 27eac0faee48..4f420c2f2d55 100644
--- a/arch/x86/lguest/i386_head.S
+++ b/arch/x86/lguest/i386_head.S
@@ -32,7 +32,7 @@ ENTRY(lguest_entry)
32 */ 32 */
33 movl $LHCALL_LGUEST_INIT, %eax 33 movl $LHCALL_LGUEST_INIT, %eax
34 movl $lguest_data - __PAGE_OFFSET, %ebx 34 movl $lguest_data - __PAGE_OFFSET, %ebx
35 .byte 0x0f,0x01,0xc1 /* KVM_HYPERCALL */ 35 int $LGUEST_TRAP_ENTRY
36 36
37 /* Set up the initial stack so we can run C code. */ 37 /* Set up the initial stack so we can run C code. */
38 movl $(init_thread_union+THREAD_SIZE),%esp 38 movl $(init_thread_union+THREAD_SIZE),%esp
diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
index f46c340727b8..069ce7c37c01 100644
--- a/arch/x86/mm/hugetlbpage.c
+++ b/arch/x86/mm/hugetlbpage.c
@@ -9,7 +9,6 @@
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/hugetlb.h> 10#include <linux/hugetlb.h>
11#include <linux/pagemap.h> 11#include <linux/pagemap.h>
12#include <linux/slab.h>
13#include <linux/err.h> 12#include <linux/err.h>
14#include <linux/sysctl.h> 13#include <linux/sysctl.h>
15#include <asm/mman.h> 14#include <asm/mman.h>
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index e71c5cbc8f35..b278535b14aa 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -1,3 +1,4 @@
1#include <linux/gfp.h>
1#include <linux/initrd.h> 2#include <linux/initrd.h>
2#include <linux/ioport.h> 3#include <linux/ioport.h>
3#include <linux/swap.h> 4#include <linux/swap.h>
@@ -331,11 +332,23 @@ int devmem_is_allowed(unsigned long pagenr)
331 332
332void free_init_pages(char *what, unsigned long begin, unsigned long end) 333void free_init_pages(char *what, unsigned long begin, unsigned long end)
333{ 334{
334 unsigned long addr = begin; 335 unsigned long addr;
336 unsigned long begin_aligned, end_aligned;
335 337
336 if (addr >= end) 338 /* Make sure boundaries are page aligned */
339 begin_aligned = PAGE_ALIGN(begin);
340 end_aligned = end & PAGE_MASK;
341
342 if (WARN_ON(begin_aligned != begin || end_aligned != end)) {
343 begin = begin_aligned;
344 end = end_aligned;
345 }
346
347 if (begin >= end)
337 return; 348 return;
338 349
350 addr = begin;
351
339 /* 352 /*
340 * If debugging page accesses then do not free this memory but 353 * If debugging page accesses then do not free this memory but
341 * mark them not present - any buggy init-section access will 354 * mark them not present - any buggy init-section access will
@@ -343,7 +356,7 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
343 */ 356 */
344#ifdef CONFIG_DEBUG_PAGEALLOC 357#ifdef CONFIG_DEBUG_PAGEALLOC
345 printk(KERN_INFO "debug: unmapping init memory %08lx..%08lx\n", 358 printk(KERN_INFO "debug: unmapping init memory %08lx..%08lx\n",
346 begin, PAGE_ALIGN(end)); 359 begin, end);
347 set_memory_np(begin, (end - begin) >> PAGE_SHIFT); 360 set_memory_np(begin, (end - begin) >> PAGE_SHIFT);
348#else 361#else
349 /* 362 /*
@@ -358,8 +371,7 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
358 for (; addr < end; addr += PAGE_SIZE) { 371 for (; addr < end; addr += PAGE_SIZE) {
359 ClearPageReserved(virt_to_page(addr)); 372 ClearPageReserved(virt_to_page(addr));
360 init_page_count(virt_to_page(addr)); 373 init_page_count(virt_to_page(addr));
361 memset((void *)(addr & ~(PAGE_SIZE-1)), 374 memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
362 POISON_FREE_INITMEM, PAGE_SIZE);
363 free_page(addr); 375 free_page(addr);
364 totalram_pages++; 376 totalram_pages++;
365 } 377 }
@@ -376,6 +388,15 @@ void free_initmem(void)
376#ifdef CONFIG_BLK_DEV_INITRD 388#ifdef CONFIG_BLK_DEV_INITRD
377void free_initrd_mem(unsigned long start, unsigned long end) 389void free_initrd_mem(unsigned long start, unsigned long end)
378{ 390{
379 free_init_pages("initrd memory", start, end); 391 /*
392 * end could be not aligned, and We can not align that,
393 * decompresser could be confused by aligned initrd_end
394 * We already reserve the end partial page before in
395 * - i386_start_kernel()
396 * - x86_64_start_kernel()
397 * - relocate_initrd()
398 * So here We can do PAGE_ALIGN() safely to get partial page to be freed
399 */
400 free_init_pages("initrd memory", start, PAGE_ALIGN(end));
380} 401}
381#endif 402#endif
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 5cb3f0f54f47..bca79091b9d6 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -25,11 +25,11 @@
25#include <linux/pfn.h> 25#include <linux/pfn.h>
26#include <linux/poison.h> 26#include <linux/poison.h>
27#include <linux/bootmem.h> 27#include <linux/bootmem.h>
28#include <linux/slab.h>
29#include <linux/proc_fs.h> 28#include <linux/proc_fs.h>
30#include <linux/memory_hotplug.h> 29#include <linux/memory_hotplug.h>
31#include <linux/initrd.h> 30#include <linux/initrd.h>
32#include <linux/cpumask.h> 31#include <linux/cpumask.h>
32#include <linux/gfp.h>
33 33
34#include <asm/asm.h> 34#include <asm/asm.h>
35#include <asm/bios_ebda.h> 35#include <asm/bios_ebda.h>
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index e9b040e1cde5..ee41bba315d1 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -29,6 +29,7 @@
29#include <linux/module.h> 29#include <linux/module.h>
30#include <linux/memory_hotplug.h> 30#include <linux/memory_hotplug.h>
31#include <linux/nmi.h> 31#include <linux/nmi.h>
32#include <linux/gfp.h>
32 33
33#include <asm/processor.h> 34#include <asm/processor.h>
34#include <asm/bios_ebda.h> 35#include <asm/bios_ebda.h>
diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
index 536fb6823366..5d0e67fff1a6 100644
--- a/arch/x86/mm/kmmio.c
+++ b/arch/x86/mm/kmmio.c
@@ -21,6 +21,7 @@
21#include <linux/kdebug.h> 21#include <linux/kdebug.h>
22#include <linux/mutex.h> 22#include <linux/mutex.h>
23#include <linux/io.h> 23#include <linux/io.h>
24#include <linux/slab.h>
24#include <asm/cacheflush.h> 25#include <asm/cacheflush.h>
25#include <asm/tlbflush.h> 26#include <asm/tlbflush.h>
26#include <linux/errno.h> 27#include <linux/errno.h>
diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c
index 34a3291ca103..3adff7dcc148 100644
--- a/arch/x86/mm/mmio-mod.c
+++ b/arch/x86/mm/mmio-mod.c
@@ -26,6 +26,7 @@
26 26
27#include <linux/module.h> 27#include <linux/module.h>
28#include <linux/debugfs.h> 28#include <linux/debugfs.h>
29#include <linux/slab.h>
29#include <linux/uaccess.h> 30#include <linux/uaccess.h>
30#include <linux/io.h> 31#include <linux/io.h>
31#include <linux/version.h> 32#include <linux/version.h>
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 1d4eb93d333c..28195c350b97 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -6,13 +6,13 @@
6#include <linux/bootmem.h> 6#include <linux/bootmem.h>
7#include <linux/module.h> 7#include <linux/module.h>
8#include <linux/sched.h> 8#include <linux/sched.h>
9#include <linux/slab.h>
10#include <linux/mm.h> 9#include <linux/mm.h>
11#include <linux/interrupt.h> 10#include <linux/interrupt.h>
12#include <linux/seq_file.h> 11#include <linux/seq_file.h>
13#include <linux/debugfs.h> 12#include <linux/debugfs.h>
14#include <linux/pfn.h> 13#include <linux/pfn.h>
15#include <linux/percpu.h> 14#include <linux/percpu.h>
15#include <linux/gfp.h>
16 16
17#include <asm/e820.h> 17#include <asm/e820.h>
18#include <asm/processor.h> 18#include <asm/processor.h>
@@ -291,8 +291,29 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
291 */ 291 */
292 if (kernel_set_to_readonly && 292 if (kernel_set_to_readonly &&
293 within(address, (unsigned long)_text, 293 within(address, (unsigned long)_text,
294 (unsigned long)__end_rodata_hpage_align)) 294 (unsigned long)__end_rodata_hpage_align)) {
295 pgprot_val(forbidden) |= _PAGE_RW; 295 unsigned int level;
296
297 /*
298 * Don't enforce the !RW mapping for the kernel text mapping,
299 * if the current mapping is already using small page mapping.
300 * No need to work hard to preserve large page mappings in this
301 * case.
302 *
303 * This also fixes the Linux Xen paravirt guest boot failure
304 * (because of unexpected read-only mappings for kernel identity
305 * mappings). In this paravirt guest case, the kernel text
306 * mapping and the kernel identity mapping share the same
307 * page-table pages. Thus we can't really use different
308 * protections for the kernel text and identity mappings. Also,
309 * these shared mappings are made of small page mappings.
310 * Thus this don't enforce !RW mapping for small page kernel
311 * text mapping logic will help Linux Xen parvirt guest boot
312 * aswell.
313 */
314 if (lookup_address(address, &level) && (level != PG_LEVEL_4K))
315 pgprot_val(forbidden) |= _PAGE_RW;
316 }
296#endif 317#endif
297 318
298 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden)); 319 prot = __pgprot(pgprot_val(prot) & ~pgprot_val(forbidden));
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index ae9648eb1c7f..edc8b95afc1a 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -12,7 +12,7 @@
12#include <linux/debugfs.h> 12#include <linux/debugfs.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/gfp.h> 15#include <linux/slab.h>
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/fs.h> 17#include <linux/fs.h>
18#include <linux/rbtree.h> 18#include <linux/rbtree.h>
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index c9ba9deafe83..5c4ee422590e 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -1,4 +1,5 @@
1#include <linux/mm.h> 1#include <linux/mm.h>
2#include <linux/gfp.h>
2#include <asm/pgalloc.h> 3#include <asm/pgalloc.h>
3#include <asm/pgtable.h> 4#include <asm/pgtable.h>
4#include <asm/tlb.h> 5#include <asm/tlb.h>
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 46c8834aedc0..1a8faf09afed 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -6,7 +6,6 @@
6#include <linux/swap.h> 6#include <linux/swap.h>
7#include <linux/smp.h> 7#include <linux/smp.h>
8#include <linux/highmem.h> 8#include <linux/highmem.h>
9#include <linux/slab.h>
10#include <linux/pagemap.h> 9#include <linux/pagemap.h>
11#include <linux/spinlock.h> 10#include <linux/spinlock.h>
12#include <linux/module.h> 11#include <linux/module.h>
diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c
index 6a58256dce9f..090cbbec7dbd 100644
--- a/arch/x86/oprofile/op_model_amd.c
+++ b/arch/x86/oprofile/op_model_amd.c
@@ -46,17 +46,6 @@
46 46
47static unsigned long reset_value[NUM_VIRT_COUNTERS]; 47static unsigned long reset_value[NUM_VIRT_COUNTERS];
48 48
49/* IbsFetchCtl bits/masks */
50#define IBS_FETCH_RAND_EN (1ULL<<57)
51#define IBS_FETCH_VAL (1ULL<<49)
52#define IBS_FETCH_ENABLE (1ULL<<48)
53#define IBS_FETCH_CNT_MASK 0xFFFF0000ULL
54
55/* IbsOpCtl bits */
56#define IBS_OP_CNT_CTL (1ULL<<19)
57#define IBS_OP_VAL (1ULL<<18)
58#define IBS_OP_ENABLE (1ULL<<17)
59
60#define IBS_FETCH_SIZE 6 49#define IBS_FETCH_SIZE 6
61#define IBS_OP_SIZE 12 50#define IBS_OP_SIZE 12
62 51
@@ -182,7 +171,7 @@ static void op_amd_setup_ctrs(struct op_x86_model_spec const *model,
182 continue; 171 continue;
183 } 172 }
184 rdmsrl(msrs->controls[i].addr, val); 173 rdmsrl(msrs->controls[i].addr, val);
185 if (val & ARCH_PERFMON_EVENTSEL0_ENABLE) 174 if (val & ARCH_PERFMON_EVENTSEL_ENABLE)
186 op_x86_warn_in_use(i); 175 op_x86_warn_in_use(i);
187 val &= model->reserved; 176 val &= model->reserved;
188 wrmsrl(msrs->controls[i].addr, val); 177 wrmsrl(msrs->controls[i].addr, val);
@@ -290,7 +279,7 @@ op_amd_handle_ibs(struct pt_regs * const regs,
290 oprofile_write_commit(&entry); 279 oprofile_write_commit(&entry);
291 280
292 /* reenable the IRQ */ 281 /* reenable the IRQ */
293 ctl &= ~(IBS_FETCH_VAL | IBS_FETCH_CNT_MASK); 282 ctl &= ~(IBS_FETCH_VAL | IBS_FETCH_CNT);
294 ctl |= IBS_FETCH_ENABLE; 283 ctl |= IBS_FETCH_ENABLE;
295 wrmsrl(MSR_AMD64_IBSFETCHCTL, ctl); 284 wrmsrl(MSR_AMD64_IBSFETCHCTL, ctl);
296 } 285 }
@@ -330,7 +319,7 @@ static inline void op_amd_start_ibs(void)
330 return; 319 return;
331 320
332 if (ibs_config.fetch_enabled) { 321 if (ibs_config.fetch_enabled) {
333 val = (ibs_config.max_cnt_fetch >> 4) & 0xFFFF; 322 val = (ibs_config.max_cnt_fetch >> 4) & IBS_FETCH_MAX_CNT;
334 val |= ibs_config.rand_en ? IBS_FETCH_RAND_EN : 0; 323 val |= ibs_config.rand_en ? IBS_FETCH_RAND_EN : 0;
335 val |= IBS_FETCH_ENABLE; 324 val |= IBS_FETCH_ENABLE;
336 wrmsrl(MSR_AMD64_IBSFETCHCTL, val); 325 wrmsrl(MSR_AMD64_IBSFETCHCTL, val);
@@ -352,7 +341,7 @@ static inline void op_amd_start_ibs(void)
352 * avoid underflows. 341 * avoid underflows.
353 */ 342 */
354 ibs_op_ctl = min(ibs_op_ctl + IBS_RANDOM_MAXCNT_OFFSET, 343 ibs_op_ctl = min(ibs_op_ctl + IBS_RANDOM_MAXCNT_OFFSET,
355 0xFFFFULL); 344 IBS_OP_MAX_CNT);
356 } 345 }
357 if (ibs_caps & IBS_CAPS_OPCNT && ibs_config.dispatched_ops) 346 if (ibs_caps & IBS_CAPS_OPCNT && ibs_config.dispatched_ops)
358 ibs_op_ctl |= IBS_OP_CNT_CTL; 347 ibs_op_ctl |= IBS_OP_CNT_CTL;
@@ -409,7 +398,7 @@ static void op_amd_start(struct op_msrs const * const msrs)
409 if (!reset_value[op_x86_phys_to_virt(i)]) 398 if (!reset_value[op_x86_phys_to_virt(i)])
410 continue; 399 continue;
411 rdmsrl(msrs->controls[i].addr, val); 400 rdmsrl(msrs->controls[i].addr, val);
412 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 401 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
413 wrmsrl(msrs->controls[i].addr, val); 402 wrmsrl(msrs->controls[i].addr, val);
414 } 403 }
415 404
@@ -429,7 +418,7 @@ static void op_amd_stop(struct op_msrs const * const msrs)
429 if (!reset_value[op_x86_phys_to_virt(i)]) 418 if (!reset_value[op_x86_phys_to_virt(i)])
430 continue; 419 continue;
431 rdmsrl(msrs->controls[i].addr, val); 420 rdmsrl(msrs->controls[i].addr, val);
432 val &= ~ARCH_PERFMON_EVENTSEL0_ENABLE; 421 val &= ~ARCH_PERFMON_EVENTSEL_ENABLE;
433 wrmsrl(msrs->controls[i].addr, val); 422 wrmsrl(msrs->controls[i].addr, val);
434 } 423 }
435 424
diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
index 5d1727ba409e..2bf90fafa7b5 100644
--- a/arch/x86/oprofile/op_model_ppro.c
+++ b/arch/x86/oprofile/op_model_ppro.c
@@ -88,7 +88,7 @@ static void ppro_setup_ctrs(struct op_x86_model_spec const *model,
88 continue; 88 continue;
89 } 89 }
90 rdmsrl(msrs->controls[i].addr, val); 90 rdmsrl(msrs->controls[i].addr, val);
91 if (val & ARCH_PERFMON_EVENTSEL0_ENABLE) 91 if (val & ARCH_PERFMON_EVENTSEL_ENABLE)
92 op_x86_warn_in_use(i); 92 op_x86_warn_in_use(i);
93 val &= model->reserved; 93 val &= model->reserved;
94 wrmsrl(msrs->controls[i].addr, val); 94 wrmsrl(msrs->controls[i].addr, val);
@@ -166,7 +166,7 @@ static void ppro_start(struct op_msrs const * const msrs)
166 for (i = 0; i < num_counters; ++i) { 166 for (i = 0; i < num_counters; ++i) {
167 if (reset_value[i]) { 167 if (reset_value[i]) {
168 rdmsrl(msrs->controls[i].addr, val); 168 rdmsrl(msrs->controls[i].addr, val);
169 val |= ARCH_PERFMON_EVENTSEL0_ENABLE; 169 val |= ARCH_PERFMON_EVENTSEL_ENABLE;
170 wrmsrl(msrs->controls[i].addr, val); 170 wrmsrl(msrs->controls[i].addr, val);
171 } 171 }
172 } 172 }
@@ -184,7 +184,7 @@ static void ppro_stop(struct op_msrs const * const msrs)
184 if (!reset_value[i]) 184 if (!reset_value[i])
185 continue; 185 continue;
186 rdmsrl(msrs->controls[i].addr, val); 186 rdmsrl(msrs->controls[i].addr, val);
187 val &= ~ARCH_PERFMON_EVENTSEL0_ENABLE; 187 val &= ~ARCH_PERFMON_EVENTSEL_ENABLE;
188 wrmsrl(msrs->controls[i].addr, val); 188 wrmsrl(msrs->controls[i].addr, val);
189 } 189 }
190} 190}
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 6e22454bfaa6..c7b1ebfb7da7 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -3,6 +3,7 @@
3#include <linux/init.h> 3#include <linux/init.h>
4#include <linux/irq.h> 4#include <linux/irq.h>
5#include <linux/dmi.h> 5#include <linux/dmi.h>
6#include <linux/slab.h>
6#include <asm/numa.h> 7#include <asm/numa.h>
7#include <asm/pci_x86.h> 8#include <asm/pci_x86.h>
8 9
@@ -122,8 +123,8 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
122 struct acpi_resource_address64 addr; 123 struct acpi_resource_address64 addr;
123 acpi_status status; 124 acpi_status status;
124 unsigned long flags; 125 unsigned long flags;
125 struct resource *root; 126 struct resource *root, *conflict;
126 u64 start, end; 127 u64 start, end, max_len;
127 128
128 status = resource_to_addr(acpi_res, &addr); 129 status = resource_to_addr(acpi_res, &addr);
129 if (!ACPI_SUCCESS(status)) 130 if (!ACPI_SUCCESS(status))
@@ -140,6 +141,17 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
140 } else 141 } else
141 return AE_OK; 142 return AE_OK;
142 143
144 max_len = addr.maximum - addr.minimum + 1;
145 if (addr.address_length > max_len) {
146 dev_printk(KERN_DEBUG, &info->bridge->dev,
147 "host bridge window length %#llx doesn't fit in "
148 "%#llx-%#llx, trimming\n",
149 (unsigned long long) addr.address_length,
150 (unsigned long long) addr.minimum,
151 (unsigned long long) addr.maximum);
152 addr.address_length = max_len;
153 }
154
143 start = addr.minimum + addr.translation_offset; 155 start = addr.minimum + addr.translation_offset;
144 end = start + addr.address_length - 1; 156 end = start + addr.address_length - 1;
145 157
@@ -157,9 +169,12 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
157 return AE_OK; 169 return AE_OK;
158 } 170 }
159 171
160 if (insert_resource(root, res)) { 172 conflict = insert_resource_conflict(root, res);
173 if (conflict) {
161 dev_err(&info->bridge->dev, 174 dev_err(&info->bridge->dev,
162 "can't allocate host bridge window %pR\n", res); 175 "address space collision: host bridge window %pR "
176 "conflicts with %s %pR\n",
177 res, conflict->name, conflict);
163 } else { 178 } else {
164 pci_bus_add_resource(info->bus, res, 0); 179 pci_bus_add_resource(info->bus, res, 0);
165 info->res_num++; 180 info->res_num++;
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 294e10cb11e1..cf2e93869c48 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -9,6 +9,7 @@
9#include <linux/ioport.h> 9#include <linux/ioport.h>
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/dmi.h> 11#include <linux/dmi.h>
12#include <linux/slab.h>
12 13
13#include <asm/acpi.h> 14#include <asm/acpi.h>
14#include <asm/segment.h> 15#include <asm/segment.h>
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
index dece3eb9c906..46fd43f79103 100644
--- a/arch/x86/pci/i386.c
+++ b/arch/x86/pci/i386.c
@@ -127,9 +127,6 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
127 continue; 127 continue;
128 if (!r->start || 128 if (!r->start ||
129 pci_claim_resource(dev, idx) < 0) { 129 pci_claim_resource(dev, idx) < 0) {
130 dev_info(&dev->dev,
131 "can't reserve window %pR\n",
132 r);
133 /* 130 /*
134 * Something is wrong with the region. 131 * Something is wrong with the region.
135 * Invalidate the resource to prevent 132 * Invalidate the resource to prevent
@@ -181,8 +178,6 @@ static void __init pcibios_allocate_resources(int pass)
181 "BAR %d: reserving %pr (d=%d, p=%d)\n", 178 "BAR %d: reserving %pr (d=%d, p=%d)\n",
182 idx, r, disabled, pass); 179 idx, r, disabled, pass);
183 if (pci_claim_resource(dev, idx) < 0) { 180 if (pci_claim_resource(dev, idx) < 0) {
184 dev_info(&dev->dev,
185 "can't reserve %pR\n", r);
186 /* We'll assign a new address later */ 181 /* We'll assign a new address later */
187 r->end -= r->start; 182 r->end -= r->start;
188 r->start = 0; 183 r->start = 0;
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 8b107521d24e..5d362b5ba06f 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -8,7 +8,6 @@
8#include <linux/kernel.h> 8#include <linux/kernel.h>
9#include <linux/pci.h> 9#include <linux/pci.h>
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/slab.h>
12#include <linux/interrupt.h> 11#include <linux/interrupt.h>
13#include <linux/dmi.h> 12#include <linux/dmi.h>
14#include <linux/io.h> 13#include <linux/io.h>
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 8f3f9a50b1e0..39b9ebe8f886 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -16,6 +16,7 @@
16#include <linux/sfi_acpi.h> 16#include <linux/sfi_acpi.h>
17#include <linux/bitmap.h> 17#include <linux/bitmap.h>
18#include <linux/dmi.h> 18#include <linux/dmi.h>
19#include <linux/slab.h>
19#include <asm/e820.h> 20#include <asm/e820.h>
20#include <asm/pci_x86.h> 21#include <asm/pci_x86.h>
21#include <asm/acpi.h> 22#include <asm/acpi.h>
diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
index 1c975cc9839e..59a225c17b84 100644
--- a/arch/x86/pci/pcbios.c
+++ b/arch/x86/pci/pcbios.c
@@ -4,6 +4,7 @@
4 4
5#include <linux/pci.h> 5#include <linux/pci.h>
6#include <linux/init.h> 6#include <linux/init.h>
7#include <linux/slab.h>
7#include <linux/module.h> 8#include <linux/module.h>
8#include <linux/uaccess.h> 9#include <linux/uaccess.h>
9#include <asm/pci_x86.h> 10#include <asm/pci_x86.h>
diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c
index 81197c62d5b3..3769079874d8 100644
--- a/arch/x86/power/hibernate_32.c
+++ b/arch/x86/power/hibernate_32.c
@@ -6,6 +6,7 @@
6 * Copyright (c) 2006 Rafael J. Wysocki <rjw@sisk.pl> 6 * Copyright (c) 2006 Rafael J. Wysocki <rjw@sisk.pl>
7 */ 7 */
8 8
9#include <linux/gfp.h>
9#include <linux/suspend.h> 10#include <linux/suspend.h>
10#include <linux/bootmem.h> 11#include <linux/bootmem.h>
11 12
diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c
index 65fdc86e923f..d24f983ba1e5 100644
--- a/arch/x86/power/hibernate_64.c
+++ b/arch/x86/power/hibernate_64.c
@@ -8,6 +8,7 @@
8 * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org> 8 * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
9 */ 9 */
10 10
11#include <linux/gfp.h>
11#include <linux/smp.h> 12#include <linux/smp.h>
12#include <linux/suspend.h> 13#include <linux/suspend.h>
13#include <asm/proto.h> 14#include <asm/proto.h>
diff --git a/arch/x86/power/hibernate_asm_32.S b/arch/x86/power/hibernate_asm_32.S
index b641388d8286..ad47daeafa4e 100644
--- a/arch/x86/power/hibernate_asm_32.S
+++ b/arch/x86/power/hibernate_asm_32.S
@@ -27,10 +27,17 @@ ENTRY(swsusp_arch_suspend)
27 ret 27 ret
28 28
29ENTRY(restore_image) 29ENTRY(restore_image)
30 movl mmu_cr4_features, %ecx
30 movl resume_pg_dir, %eax 31 movl resume_pg_dir, %eax
31 subl $__PAGE_OFFSET, %eax 32 subl $__PAGE_OFFSET, %eax
32 movl %eax, %cr3 33 movl %eax, %cr3
33 34
35 jecxz 1f # cr4 Pentium and higher, skip if zero
36 andl $~(X86_CR4_PGE), %ecx
37 movl %ecx, %cr4; # turn off PGE
38 movl %cr3, %eax; # flush TLB
39 movl %eax, %cr3
401:
34 movl restore_pblist, %edx 41 movl restore_pblist, %edx
35 .p2align 4,,7 42 .p2align 4,,7
36 43
@@ -54,16 +61,8 @@ done:
54 movl $swapper_pg_dir, %eax 61 movl $swapper_pg_dir, %eax
55 subl $__PAGE_OFFSET, %eax 62 subl $__PAGE_OFFSET, %eax
56 movl %eax, %cr3 63 movl %eax, %cr3
57 /* Flush TLB, including "global" things (vmalloc) */
58 movl mmu_cr4_features, %ecx 64 movl mmu_cr4_features, %ecx
59 jecxz 1f # cr4 Pentium and higher, skip if zero 65 jecxz 1f # cr4 Pentium and higher, skip if zero
60 movl %ecx, %edx
61 andl $~(X86_CR4_PGE), %edx
62 movl %edx, %cr4; # turn off PGE
631:
64 movl %cr3, %eax; # flush TLB
65 movl %eax, %cr3
66 jecxz 1f # cr4 Pentium and higher, skip if zero
67 movl %ecx, %cr4; # turn PGE back on 66 movl %ecx, %cr4; # turn PGE back on
681: 671:
69 68
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 21e1aeb9f3ea..ac74869b8140 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -6,6 +6,7 @@
6#include <linux/mm.h> 6#include <linux/mm.h>
7#include <linux/err.h> 7#include <linux/err.h>
8#include <linux/sched.h> 8#include <linux/sched.h>
9#include <linux/slab.h>
9#include <linux/init.h> 10#include <linux/init.h>
10#include <linux/random.h> 11#include <linux/random.h>
11#include <linux/elf.h> 12#include <linux/elf.h>
diff --git a/arch/x86/xen/debugfs.c b/arch/x86/xen/debugfs.c
index e133ce25e290..1304bcec8ee5 100644
--- a/arch/x86/xen/debugfs.c
+++ b/arch/x86/xen/debugfs.c
@@ -1,5 +1,6 @@
1#include <linux/init.h> 1#include <linux/init.h>
2#include <linux/debugfs.h> 2#include <linux/debugfs.h>
3#include <linux/slab.h>
3#include <linux/module.h> 4#include <linux/module.h>
4 5
5#include "debugfs.h" 6#include "debugfs.h"
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index b607239c1ba8..65d8d79b46a8 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -28,6 +28,7 @@
28#include <linux/highmem.h> 28#include <linux/highmem.h>
29#include <linux/console.h> 29#include <linux/console.h>
30#include <linux/pci.h> 30#include <linux/pci.h>
31#include <linux/gfp.h>
31 32
32#include <xen/xen.h> 33#include <xen/xen.h>
33#include <xen/interface/xen.h> 34#include <xen/interface/xen.h>
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index f9eb7de74f42..914f04695ce5 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -43,6 +43,7 @@
43#include <linux/debugfs.h> 43#include <linux/debugfs.h>
44#include <linux/bug.h> 44#include <linux/bug.h>
45#include <linux/module.h> 45#include <linux/module.h>
46#include <linux/gfp.h>
46 47
47#include <asm/pgtable.h> 48#include <asm/pgtable.h>
48#include <asm/tlbflush.h> 49#include <asm/tlbflush.h>
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index deafb65ef44e..a29693fd3138 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -14,6 +14,7 @@
14 */ 14 */
15#include <linux/sched.h> 15#include <linux/sched.h>
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/slab.h>
17#include <linux/smp.h> 18#include <linux/smp.h>
18 19
19#include <asm/paravirt.h> 20#include <asm/paravirt.h>
diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
index 24ded31b5aec..e0500646585d 100644
--- a/arch/x86/xen/spinlock.c
+++ b/arch/x86/xen/spinlock.c
@@ -6,6 +6,7 @@
6#include <linux/spinlock.h> 6#include <linux/spinlock.h>
7#include <linux/debugfs.h> 7#include <linux/debugfs.h>
8#include <linux/log2.h> 8#include <linux/log2.h>
9#include <linux/gfp.h>
9 10
10#include <asm/paravirt.h> 11#include <asm/paravirt.h>
11 12
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index 0d3f07cd1b5f..32764b8880b5 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -13,6 +13,7 @@
13#include <linux/clockchips.h> 13#include <linux/clockchips.h>
14#include <linux/kernel_stat.h> 14#include <linux/kernel_stat.h>
15#include <linux/math64.h> 15#include <linux/math64.h>
16#include <linux/gfp.h>
16 17
17#include <asm/pvclock.h> 18#include <asm/pvclock.h>
18#include <asm/xen/hypervisor.h> 19#include <asm/xen/hypervisor.h>
diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c
index f5319d78c876..2783fda76ddc 100644
--- a/arch/xtensa/kernel/pci-dma.c
+++ b/arch/xtensa/kernel/pci-dma.c
@@ -20,6 +20,7 @@
20#include <linux/mm.h> 20#include <linux/mm.h>
21#include <linux/string.h> 21#include <linux/string.h>
22#include <linux/pci.h> 22#include <linux/pci.h>
23#include <linux/gfp.h>
23#include <asm/io.h> 24#include <asm/io.h>
24#include <asm/cacheflush.h> 25#include <asm/cacheflush.h>
25 26
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index e1a04a346e75..f167e0f5e05e 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -23,7 +23,6 @@
23#include <linux/stddef.h> 23#include <linux/stddef.h>
24#include <linux/unistd.h> 24#include <linux/unistd.h>
25#include <linux/ptrace.h> 25#include <linux/ptrace.h>
26#include <linux/slab.h>
27#include <linux/elf.h> 26#include <linux/elf.h>
28#include <linux/init.h> 27#include <linux/init.h>
29#include <linux/prctl.h> 28#include <linux/prctl.h>
@@ -31,6 +30,7 @@
31#include <linux/module.h> 30#include <linux/module.h>
32#include <linux/mqueue.h> 31#include <linux/mqueue.h>
33#include <linux/fs.h> 32#include <linux/fs.h>
33#include <linux/slab.h>
34 34
35#include <asm/pgtable.h> 35#include <asm/pgtable.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c
index cdbc27ca9665..ba150e5de2eb 100644
--- a/arch/xtensa/mm/init.c
+++ b/arch/xtensa/mm/init.c
@@ -18,11 +18,11 @@
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/errno.h> 19#include <linux/errno.h>
20#include <linux/bootmem.h> 20#include <linux/bootmem.h>
21#include <linux/gfp.h>
21#include <linux/swap.h> 22#include <linux/swap.h>
22#include <linux/mman.h> 23#include <linux/mman.h>
23#include <linux/nodemask.h> 24#include <linux/nodemask.h>
24#include <linux/mm.h> 25#include <linux/mm.h>
25#include <linux/slab.h>
26 26
27#include <asm/bootparam.h> 27#include <asm/bootparam.h>
28#include <asm/page.h> 28#include <asm/page.h>
diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c
index e60a1f57022f..2c723e8b30da 100644
--- a/arch/xtensa/platforms/iss/console.c
+++ b/arch/xtensa/platforms/iss/console.c
@@ -14,7 +14,6 @@
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/console.h> 15#include <linux/console.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/slab.h>
18#include <linux/mm.h> 17#include <linux/mm.h>
19#include <linux/major.h> 18#include <linux/major.h>
20#include <linux/param.h> 19#include <linux/param.h>