Kindle 3 kernel diff
.gitignore | 66
Documentation/DocBook/.gitignore | 6
Documentation/filesystems/ext4.txt | 133
Documentation/filesystems/proc.txt | 23
Documentation/filesystems/ubifs.txt | 173
MAINTAINERS | 12
Makefile | 10
arch/.gitignore | 2
arch/Kconfig | 5
arch/arm/Kconfig | 44
arch/arm/Kconfig.debug | 8
arch/arm/Makefile | 6
arch/arm/boot/.gitignore | 5
arch/arm/boot/compressed/.gitignore | 2
arch/arm/boot/compressed/Makefile | 6
arch/arm/boot/compressed/head.S | 16
arch/arm/boot/compressed/vmlinux.lds | 56
arch/arm/common/time-acorn.c | 2
arch/arm/kernel/Makefile | 7
arch/arm/kernel/armksyms.c | 5
arch/arm/kernel/dma.c | 2
arch/arm/kernel/early_console.c | 40
arch/arm/kernel/entry-common.S | 164
arch/arm/kernel/fiq.c | 4
arch/arm/kernel/ftrace.c | 116
arch/arm/kernel/irq.c | 10
arch/arm/kernel/kgdb.c | 206
arch/arm/kernel/process.c | 29
arch/arm/kernel/ptrace.c | 57
arch/arm/kernel/setup.c | 57
arch/arm/kernel/signal.c | 8
arch/arm/kernel/smp.c | 2
arch/arm/kernel/time.c | 38
arch/arm/kernel/traps.c | 121
arch/arm/kernel/vmlinux.lds.S | 15
arch/arm/lib/Makefile | 1
arch/arm/lib/stacktrace.c | 7
arch/arm/mach-at91/gpio.c | 8
arch/arm/mach-footbridge/netwinder-hw.c | 2
arch/arm/mach-footbridge/netwinder-leds.c | 2
arch/arm/mach-integrator/core.c | 2
arch/arm/mach-integrator/pci_v3.c | 2
arch/arm/mach-ixp4xx/common-pci.c | 2
arch/arm/mach-mx21/Kconfig | 17
arch/arm/mach-mx21/Makefile | 12
arch/arm/mach-mx21/Makefile.boot | 3
arch/arm/mach-mx21/board-mx21ads.h | 145
arch/arm/mach-mx21/clock.c | 664
arch/arm/mach-mx21/crm_regs.h | 163
arch/arm/mach-mx21/devices.c | 278
arch/arm/mach-mx21/dma.c | 491
arch/arm/mach-mx21/gpio_mux.c | 302
arch/arm/mach-mx21/gpio_mux.h | 78
arch/arm/mach-mx21/mm.c | 55
arch/arm/mach-mx21/mx21_pins.h | 233
arch/arm/mach-mx21/mx21ads.c | 353
arch/arm/mach-mx21/mx21ads_gpio.c | 384
arch/arm/mach-mx21/serial.c | 200
arch/arm/mach-mx21/serial.h | 139
arch/arm/mach-mx21/system.c | 65
arch/arm/mach-mx21/time.c | 168
arch/arm/mach-mx27/Kconfig | 43
arch/arm/mach-mx27/Makefile | 18
arch/arm/mach-mx27/Makefile.boot | 3
arch/arm/mach-mx27/board-mx27ads.h | 385
arch/arm/mach-mx27/clock.c | 1549
arch/arm/mach-mx27/cpu.c | 33
arch/arm/mach-mx27/crm_regs.h | 283
arch/arm/mach-mx27/devices.c | 697
arch/arm/mach-mx27/dma.c | 553
arch/arm/mach-mx27/dptc.c | 49
arch/arm/mach-mx27/gpio_mux.c | 308
arch/arm/mach-mx27/gpio_mux.h | 78
arch/arm/mach-mx27/mm.c | 62
arch/arm/mach-mx27/mx27_pins.h | 207
arch/arm/mach-mx27/mx27ads.c | 823
arch/arm/mach-mx27/mx27ads_gpio.c | 1226
arch/arm/mach-mx27/mxc_pm.c | 458
arch/arm/mach-mx27/pm.c | 102
arch/arm/mach-mx27/serial.c | 275
arch/arm/mach-mx27/serial.h | 170
arch/arm/mach-mx27/system.c | 60
arch/arm/mach-mx27/time.c | 240
arch/arm/mach-mx27/usb.h | 116
arch/arm/mach-mx27/usb_dr.c | 126
arch/arm/mach-mx27/usb_h1.c | 53
arch/arm/mach-mx27/usb_h2.c | 53
arch/arm/mach-mx3/Kconfig | 90
arch/arm/mach-mx3/Makefile | 16
arch/arm/mach-mx3/board-mx31ads.h | 326
arch/arm/mach-mx3/board-mx3_3stack.h | 150
arch/arm/mach-mx3/clock.c | 1380
arch/arm/mach-mx3/cpu.c | 78
arch/arm/mach-mx3/crm_regs.h | 394
arch/arm/mach-mx3/devices.c | 858
arch/arm/mach-mx3/dma.c | 745
arch/arm/mach-mx3/dptc.c | 103
arch/arm/mach-mx3/dvfs_v2.c | 530
arch/arm/mach-mx3/iomux.c | 259
arch/arm/mach-mx3/iomux.h | 185
arch/arm/mach-mx3/mm.c | 48
arch/arm/mach-mx3/mx31_pins.h | 429
arch/arm/mach-mx3/mx31ads.c | 1004
arch/arm/mach-mx3/mx31ads_gpio.c | 1561
arch/arm/mach-mx3/mx3_3stack.c | 1081
arch/arm/mach-mx3/mx3_3stack_gpio.c | 1298
arch/arm/mach-mx3/mxc_pm.c | 446
arch/arm/mach-mx3/pm.c | 113
arch/arm/mach-mx3/sdma_script_code.h | 581
arch/arm/mach-mx3/sdma_script_code_pass2.h | 434
arch/arm/mach-mx3/serial.c | 267
arch/arm/mach-mx3/serial.h | 158
arch/arm/mach-mx3/system.c | 103
arch/arm/mach-mx3/time.c | 148
arch/arm/mach-mx3/usb.h | 122
arch/arm/mach-mx3/usb_dr.c | 128
arch/arm/mach-mx3/usb_h1.c | 53
arch/arm/mach-mx3/usb_h2.c | 75
arch/arm/mach-mx35/Kconfig | 148
arch/arm/mach-mx35/Makefile | 24
arch/arm/mach-mx35/Makefile.boot | 9
arch/arm/mach-mx35/board-mx35_3stack.h | 210
arch/arm/mach-mx35/board-mx35evb.h | 151
arch/arm/mach-mx35/boardid.c | 207
arch/arm/mach-mx35/boardid.h | 20
arch/arm/mach-mx35/boot_globals.c | 777
arch/arm/mach-mx35/bootdata.c | 809
arch/arm/mach-mx35/clock.c | 2021
arch/arm/mach-mx35/cpu.c | 80
arch/arm/mach-mx35/cpufreq.c | 306
arch/arm/mach-mx35/crm_regs.h | 444
arch/arm/mach-mx35/devices.c | 712
arch/arm/mach-mx35/dma.c | 1046
arch/arm/mach-mx35/dvfs.c | 788
arch/arm/mach-mx35/iomux.c | 474
arch/arm/mach-mx35/iomux.h | 293
arch/arm/mach-mx35/mm.c | 92
arch/arm/mach-mx35/mx35_3stack.c | 773
arch/arm/mach-mx35/mx35_3stack_cpld.c | 159
arch/arm/mach-mx35/mx35_3stack_gpio.c | 1353
arch/arm/mach-mx35/mx35_3stack_irq.c | 371
arch/arm/mach-mx35/mx35_accessory.c | 458
arch/arm/mach-mx35/mx35_luigi.c | 1004
arch/arm/mach-mx35/mx35_luigi_gpio.c | 2180
arch/arm/mach-mx35/mx35_pins.h | 338
arch/arm/mach-mx35/mx35evb.c | 396
arch/arm/mach-mx35/mx35evb_cpld.c | 82
arch/arm/mach-mx35/mx35evb_gpio.c | 276
arch/arm/mach-mx35/pm.c | 383
arch/arm/mach-mx35/sdma_script_code.h | 254
arch/arm/mach-mx35/sdma_script_code_v2.h | 234
arch/arm/mach-mx35/serial.c | 180
arch/arm/mach-mx35/serial.h | 132
arch/arm/mach-mx35/system.c | 640
arch/arm/mach-mx35/usb.h | 104
arch/arm/mach-mx35/usb_dr.c | 222
arch/arm/mach-mx35/usb_h2.c | 62
arch/arm/mach-mx35/wifi.c | 197
arch/arm/mach-mx37/Kconfig | 89
arch/arm/mach-mx37/Makefile | 19
arch/arm/mach-mx37/Makefile.boot | 3
arch/arm/mach-mx37/board-mx37_3stack.h | 121
arch/arm/mach-mx37/clock.c | 3008 +
arch/arm/mach-mx37/cpu.c | 71
arch/arm/mach-mx37/crm_regs.h | 611
arch/arm/mach-mx37/devices.c | 941
arch/arm/mach-mx37/dma.c | 666
arch/arm/mach-mx37/dptc.c | 69
arch/arm/mach-mx37/iomux.c | 204
arch/arm/mach-mx37/iomux.h | 226
arch/arm/mach-mx37/lpmodes.c | 408
arch/arm/mach-mx37/mm.c | 82
arch/arm/mach-mx37/mx37_3stack.c | 962
arch/arm/mach-mx37/mx37_3stack_cpld.c | 231
arch/arm/mach-mx37/mx37_3stack_gpio.c | 1018
arch/arm/mach-mx37/mx37_3stack_pmic_wm8350.c | 411
arch/arm/mach-mx37/mx37_pins.h | 256
arch/arm/mach-mx37/pm.c | 72
arch/arm/mach-mx37/sdma_script_code.h | 203
arch/arm/mach-mx37/serial.c | 169
arch/arm/mach-mx37/serial.h | 127
arch/arm/mach-mx37/system.c | 192
arch/arm/mach-mx37/usb.h | 112
arch/arm/mach-mx37/usb_dr.c | 120
arch/arm/mach-mx51/Kconfig | 85
arch/arm/mach-mx51/Makefile | 19
arch/arm/mach-mx51/Makefile.boot | 3
arch/arm/mach-mx51/board-mx51_3stack.h | 128
arch/arm/mach-mx51/clock.c | 3123 +
arch/arm/mach-mx51/cpu.c | 60
arch/arm/mach-mx51/crm_regs.h | 677
arch/arm/mach-mx51/devices.c | 916
arch/arm/mach-mx51/dma.c | 666
arch/arm/mach-mx51/iomux.c | 248
arch/arm/mach-mx51/iomux.h | 236
arch/arm/mach-mx51/lpmodes.c | 204
arch/arm/mach-mx51/mm.c | 84
arch/arm/mach-mx51/mx51_3stack.c | 1207
arch/arm/mach-mx51/mx51_3stack_gpio.c | 1926
arch/arm/mach-mx51/mx51_pins.h | 361
arch/arm/mach-mx51/pm.c | 146
arch/arm/mach-mx51/sdma_script_code.h | 170
arch/arm/mach-mx51/serial.c | 169
arch/arm/mach-mx51/serial.h | 127
arch/arm/mach-mx51/suspend.S | 152
arch/arm/mach-mx51/system.c | 191
arch/arm/mach-mx51/usb.h | 116
arch/arm/mach-mx51/usb_dr.c | 140
arch/arm/mach-mx51/usb_h1.c | 54
arch/arm/mach-mx51/usb_h2.c | 57
arch/arm/mach-mx51/wfi.S | 434
arch/arm/mach-sa1100/badge4.c | 11
arch/arm/mach-shark/leds.c | 2
arch/arm/mm/Kconfig | 6
arch/arm/mm/abort-ev6.S | 5
arch/arm/mm/cache-l2x0.c | 186
arch/arm/mm/cache-v6.S | 57
arch/arm/mm/consistent.c | 2
arch/arm/mm/context.c | 2
arch/arm/mm/copypage-v4mc.c | 6
arch/arm/mm/copypage-v6.c | 2
arch/arm/mm/copypage-xscale.c | 6
arch/arm/mm/fault.c | 49
arch/arm/mm/flush.c | 29
arch/arm/mm/mmu.c | 3
arch/arm/mm/proc-v6.S | 63
arch/arm/mm/tlb-v6.S | 3
arch/arm/oprofile/Makefile | 1
arch/arm/oprofile/common.c | 45
arch/arm/oprofile/evtmon_regs.h | 84
arch/arm/oprofile/op_model_arm11.c | 477
arch/arm/oprofile/op_model_arm11_core.c | 44
arch/arm/oprofile/op_model_arm11_core.h | 13
arch/arm/oprofile/op_model_arm11_evtmon.c | 188
arch/arm/oprofile/op_model_v6.c | 19
arch/arm/oprofile/op_model_xscale.c | 3
arch/arm/plat-mxc/Kconfig | 145
arch/arm/plat-mxc/Makefile | 55
arch/arm/plat-mxc/clock.c | 683
arch/arm/plat-mxc/cpu_common.c | 85
arch/arm/plat-mxc/cpufreq.c | 595
arch/arm/plat-mxc/dma_mx2.c | 1316
arch/arm/plat-mxc/dptc.c | 610
arch/arm/plat-mxc/dvfs_core.c | 584
arch/arm/plat-mxc/entry-pm.S | 315
arch/arm/plat-mxc/gpio.c | 909
arch/arm/plat-mxc/io.c | 41
arch/arm/plat-mxc/irq.c | 361
arch/arm/plat-mxc/isp1301xc.c | 290
arch/arm/plat-mxc/isp1504xc.c | 278
arch/arm/plat-mxc/leds.c | 111
arch/arm/plat-mxc/mc13783_xc.c | 299
arch/arm/plat-mxc/pwm.c | 282
arch/arm/plat-mxc/sdma/Makefile | 18
arch/arm/plat-mxc/sdma/dma_sdma.c | 697
arch/arm/plat-mxc/sdma/iapi/Makefile | 5
arch/arm/plat-mxc/sdma/iapi/include/epm.h | 187
arch/arm/plat-mxc/sdma/iapi/include/iapi.h | 49
arch/arm/plat-mxc/sdma/iapi/include/iapiDefaults.h | 128
arch/arm/plat-mxc/sdma/iapi/include/iapiHigh.h | 136
arch/arm/plat-mxc/sdma/iapi/include/iapiLow.h | 78
arch/arm/plat-mxc/sdma/iapi/include/iapiLowDsp.h | 50
arch/arm/plat-mxc/sdma/iapi/include/iapiLowMcu.h | 60
arch/arm/plat-mxc/sdma/iapi/include/iapiMiddle.h | 52
arch/arm/plat-mxc/sdma/iapi/include/iapiMiddleMcu.h | 41
arch/arm/plat-mxc/sdma/iapi/include/iapiOS.h | 96
arch/arm/plat-mxc/sdma/iapi/include/sdmaStruct.h | 426
arch/arm/plat-mxc/sdma/iapi/src/Makefile | 18
arch/arm/plat-mxc/sdma/iapi/src/iapiDefaults.c | 110
arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c | 2801 +
arch/arm/plat-mxc/sdma/iapi/src/iapiLow.c | 150
arch/arm/plat-mxc/sdma/iapi/src/iapiLowDsp.c | 79
arch/arm/plat-mxc/sdma/iapi/src/iapiLowMcu.c | 519
arch/arm/plat-mxc/sdma/iapi/src/iapiMiddle.c | 623
arch/arm/plat-mxc/sdma/iapi/src/iapiMiddleMcu.c | 52
arch/arm/plat-mxc/sdma/iapi/src/iapiOS.c | 64
arch/arm/plat-mxc/sdma/sdma.c | 1484
arch/arm/plat-mxc/sdma/sdma_malloc.c | 388
arch/arm/plat-mxc/serialxc.c | 64
arch/arm/plat-mxc/snoop.c | 133
arch/arm/plat-mxc/spba.c | 133
arch/arm/plat-mxc/time.c | 265
arch/arm/plat-mxc/tzic.c | 179
arch/arm/plat-mxc/usb_common.c | 867
arch/arm/plat-mxc/utmixc.c | 120
arch/arm/plat-mxc/wdog.c | 153
arch/arm/plat-omap/clock.c | 3
arch/arm/tools/mach-types | 4
arch/arm/vfp/entry.S | 23
arch/arm/vfp/vfp.h | 2
arch/arm/vfp/vfphw.S | 14
arch/arm/vfp/vfpmodule.c | 123
arch/avr32/kernel/process.c | 2
arch/blackfin/boot/.gitignore | 1
arch/blackfin/kernel/process.c | 2
arch/ia64/Kconfig | 64
arch/ia64/kernel/.gitignore | 1
arch/ia64/kernel/asm-offsets.c | 2
arch/ia64/kernel/entry.S | 18
arch/ia64/kernel/fsys.S | 21
arch/ia64/kernel/iosapic.c | 33
arch/ia64/kernel/mca.c | 2
arch/ia64/kernel/perfmon.c | 6
arch/ia64/kernel/process.c | 10
arch/ia64/kernel/sal.c | 2
arch/ia64/kernel/salinfo.c | 6
arch/ia64/kernel/signal.c | 8
arch/ia64/kernel/smp.c | 16
arch/ia64/kernel/smpboot.c | 3
arch/ia64/kernel/time.c | 74
arch/ia64/kernel/traps.c | 10
arch/ia64/kernel/unwind.c | 4
arch/ia64/kernel/unwind_i.h | 2
arch/ia64/mm/init.c | 2
arch/ia64/mm/tlb.c | 2
arch/m68knommu/Kconfig | 20
arch/m68knommu/Makefile | 11
arch/m68knommu/configs/m5208evb_defconfig | 610
arch/m68knommu/configs/m5249evb_defconfig | 497
arch/m68knommu/configs/m5275evb_defconfig | 627
arch/m68knommu/configs/m5307c3_defconfig | 580
arch/m68knommu/configs/m5407c3_defconfig | 641
arch/m68knommu/kernel/Makefile | 5
arch/m68knommu/kernel/irq.c | 11
arch/m68knommu/kernel/process.c | 8
arch/m68knommu/kernel/stacktrace.c | 69
arch/m68knommu/kernel/time.c | 40
arch/m68knommu/kernel/traps.c | 38
arch/m68knommu/platform/coldfire/Makefile | 2
arch/m68knommu/platform/coldfire/dma_timer.c | 84
arch/m68knommu/platform/coldfire/entry.S | 48
arch/m68knommu/platform/coldfire/irq_chip.c | 110
arch/m68knommu/platform/coldfire/pit.c | 95
arch/mips/Kconfig | 21
arch/mips/boot/.gitignore | 4
arch/mips/kernel/asm-offsets.c | 3
arch/mips/kernel/entry.S | 20
arch/mips/kernel/gdb-stub.c | 2
arch/mips/kernel/i8253.c | 2
arch/mips/kernel/i8259.c | 2
arch/mips/kernel/module.c | 2
arch/mips/kernel/process.c | 2
arch/mips/kernel/scall32-o32.S | 2
arch/mips/kernel/scall64-64.S | 2
arch/mips/kernel/scall64-n32.S | 2
arch/mips/kernel/scall64-o32.S | 2
arch/mips/kernel/signal.c | 4
arch/mips/kernel/signal32.c | 4
arch/mips/kernel/smp.c | 27
arch/mips/kernel/traps.c | 2
arch/mips/mm/fault.c | 2
arch/mips/mm/highmem.c | 5
arch/mips/mm/init.c | 2
arch/mips/sibyte/sb1250/irq.c | 6
arch/mips/sibyte/sb1250/smp.c | 2
arch/mips/sibyte/swarm/setup.c | 6
arch/mn10300/Kconfig | 11
arch/mn10300/boot/.gitignore | 1
arch/powerpc/.gitignore | 1
arch/powerpc/Kconfig | 19
arch/powerpc/Kconfig.debug | 4
arch/powerpc/boot/.gitignore | 38
arch/powerpc/boot/dtc-src/.gitignore | 3
arch/powerpc/kernel/Makefile | 13
arch/powerpc/kernel/cputable.c | 4
arch/powerpc/kernel/entry_32.S | 131
arch/powerpc/kernel/entry_64.S | 115
arch/powerpc/kernel/ftrace.c | 159
arch/powerpc/kernel/idle.c | 2
arch/powerpc/kernel/io.c | 3
arch/powerpc/kernel/irq.c | 157
arch/powerpc/kernel/pmc.c | 2
arch/powerpc/kernel/ppc_ksyms.c | 1
arch/powerpc/kernel/process.c | 22
arch/powerpc/kernel/prom.c | 2
arch/powerpc/kernel/rtas.c | 2
arch/powerpc/kernel/setup_32.c | 18
arch/powerpc/kernel/smp.c | 12
arch/powerpc/kernel/stacktrace.c | 37
arch/powerpc/kernel/time.c | 2
arch/powerpc/kernel/traps.c | 12
arch/powerpc/kernel/vdso32/.gitignore | 2
arch/powerpc/kernel/vdso64/.gitignore | 2
arch/powerpc/lib/locks.c | 6
arch/powerpc/mm/fault.c | 2
arch/powerpc/mm/hash_native_64.c | 2
arch/powerpc/mm/init_32.c | 2
arch/powerpc/mm/tlb_64.c | 50
arch/powerpc/platforms/cell/beat_htab.c | 2
arch/powerpc/platforms/cell/beat_interrupt.c | 2
arch/powerpc/platforms/cell/smp.c | 2
arch/powerpc/platforms/cell/spufs/.gitignore | 2
arch/powerpc/platforms/chrp/smp.c | 2
arch/powerpc/platforms/chrp/time.c | 5
arch/powerpc/platforms/iseries/setup.c | 4
arch/powerpc/platforms/powermac/Makefile | 5
arch/powerpc/platforms/powermac/feature.c | 2
arch/powerpc/platforms/powermac/nvram.c | 2
arch/powerpc/platforms/powermac/pic.c | 2
arch/powerpc/platforms/pseries/eeh.c | 2
arch/powerpc/platforms/pseries/iommu.c | 14
arch/powerpc/platforms/pseries/smp.c | 2
arch/powerpc/platforms/pseries/xics.c | 11
arch/powerpc/sysdev/i8259.c | 2
arch/powerpc/sysdev/ipic.c | 2
arch/powerpc/sysdev/mpic.c | 2
arch/powerpc/xmon/xmon.c | 2
arch/ppc/.gitignore | 1
arch/ppc/8260_io/enet.c | 2
arch/ppc/8260_io/fcc_enet.c | 2
arch/ppc/8xx_io/commproc.c | 2
arch/ppc/8xx_io/enet.c | 2
arch/ppc/8xx_io/fec.c | 2
arch/ppc/Kconfig | 19
arch/ppc/boot/Makefile | 9
arch/ppc/boot/images/.gitignore | 6
arch/ppc/boot/lib/.gitignore | 3
arch/ppc/boot/utils/.gitignore | 3
arch/ppc/kernel/entry.S | 4
arch/ppc/kernel/smp.c | 12
arch/ppc/kernel/traps.c | 6
arch/ppc/lib/locks.c | 38
arch/ppc/mm/init.c | 2
arch/ppc/platforms/hdpu.c | 2
arch/ppc/platforms/sbc82xx.c | 2
arch/ppc/syslib/cpm2_common.c | 2
arch/ppc/syslib/open_pic.c | 2
arch/ppc/syslib/open_pic2.c | 2
arch/s390/kernel/process.c | 2
arch/sh/boot/.gitignore | 1
arch/sh/kernel/process_32.c | 2
arch/sh/kernel/vsyscall/.gitignore | 1
arch/sh/lib64/.gitignore | 1
arch/sparc/mm/highmem.c | 4
arch/sparc64/Kconfig | 2
arch/sparc64/Kconfig.debug | 2
arch/sparc64/boot/.gitignore | 4
arch/sparc64/kernel/Makefile | 1
arch/sparc64/kernel/ftrace.c | 94
arch/sparc64/kernel/process.c | 2
arch/sparc64/lib/mcount.S | 58
arch/um/kernel/process.c | 2
arch/x86/Kconfig | 19
arch/x86/Kconfig.debug | 1
arch/x86/boot/.gitignore | 8
arch/x86/boot/compressed/.gitignore | 1
arch/x86/boot/tools/.gitignore | 1
arch/x86/ia32/ia32entry.S | 9
arch/x86/kernel/.gitignore | 3
arch/x86/kernel/Makefile | 8
arch/x86/kernel/acpi/realmode/.gitignore | 3
arch/x86/kernel/alternative.c | 4
arch/x86/kernel/apic_32.c | 3
arch/x86/kernel/apic_64.c | 1
arch/x86/kernel/cpu/mtrr/generic.c | 2
arch/x86/kernel/crash.c | 8
arch/x86/kernel/early_printk.c | 8
arch/x86/kernel/entry_32.S | 94
arch/x86/kernel/entry_64.S | 109
arch/x86/kernel/ftrace.c | 173
arch/x86/kernel/head64.c | 6
arch/x86/kernel/head_32.S | 1
arch/x86/kernel/i386_ksyms_32.c | 8
arch/x86/kernel/i8253.c | 2
arch/x86/kernel/i8259_32.c | 13
arch/x86/kernel/i8259_64.c | 3
arch/x86/kernel/io_apic_32.c | 75
arch/x86/kernel/io_apic_64.c | 89
arch/x86/kernel/irq_32.c | 9
arch/x86/kernel/irq_64.c | 5
arch/x86/kernel/kprobes.c | 12
arch/x86/kernel/microcode.c | 2
arch/x86/kernel/nmi_32.c | 119
arch/x86/kernel/nmi_64.c | 103
arch/x86/kernel/paravirt.c | 12
arch/x86/kernel/process.c | 4
arch/x86/kernel/process_32.c | 31
arch/x86/kernel/process_64.c | 2
arch/x86/kernel/setup64.c | 2
arch/x86/kernel/setup_64.c | 7
arch/x86/kernel/signal_32.c | 7
arch/x86/kernel/signal_64.c | 7
arch/x86/kernel/smp.c | 21
arch/x86/kernel/smpboot.c | 1
arch/x86/kernel/time_64.c | 3
arch/x86/kernel/tlb_32.c | 2
arch/x86/kernel/tlb_64.c | 2
arch/x86/kernel/traps_32.c | 31
arch/x86/kernel/traps_64.c | 51
arch/x86/kernel/tsc_32.c | 2
arch/x86/kernel/tsc_sync.c | 6
arch/x86/kernel/vm86_32.c | 1
arch/x86/kernel/vsyscall_64.c | 57
arch/x86/kernel/x8664_ksyms_64.c | 6
arch/x86/lib/Makefile | 1
arch/x86/lib/thunk_32.S | 47
arch/x86/lib/thunk_64.S | 19
arch/x86/mach-default/setup.c | 3
arch/x86/mach-visws/visws_apic.c | 2
arch/x86/mach-voyager/setup.c | 3
arch/x86/mm/fault.c | 6
arch/x86/mm/highmem_32.c | 44
arch/x86/mm/init_32.c | 6
arch/x86/mm/init_64.c | 12
arch/x86/pci/Makefile_32 | 3
arch/x86/pci/common.c | 2
arch/x86/pci/direct.c | 29
arch/x86/pci/pci.h | 2
arch/x86/vdso/.gitignore | 6
arch/x86/vdso/vclock_gettime.c | 15
arch/x86/vdso/vdso32/.gitignore | 1
arch/x86/vdso/vgetcpu.c | 3
block/blk-core.c | 6
cpufreq.c | 195
drivers/Kconfig | 2
drivers/Makefile | 3
drivers/acpi/ec.c | 12
drivers/acpi/hardware/hwregs.c | 12
drivers/acpi/osl.c | 12
drivers/acpi/processor_idle.c | 2
drivers/acpi/utilities/utmutex.c | 2
drivers/ata/Kconfig | 9
drivers/ata/Makefile | 1
drivers/ata/libata-sff.c | 12
drivers/ata/pata_fsl.c | 1042
drivers/atm/.gitignore | 5
drivers/block/floppy.c | 31
drivers/block/paride/pseudo.h | 2
drivers/char/.gitignore | 2
drivers/char/Kconfig | 89
drivers/char/Makefile | 9
drivers/char/alloc_rtsj_mem.c | 88
drivers/char/blocker.c | 109
drivers/char/hw_random/Kconfig | 24
drivers/char/hw_random/Makefile | 2
drivers/char/hw_random/fsl-rnga.c | 238
drivers/char/hw_random/fsl-rngc.c | 372
drivers/char/lpptest.c | 178
drivers/char/luigi_button.c | 234
drivers/char/mxc_iim.c | 162
drivers/char/mxc_si4702.c | 1220
drivers/char/random.c | 9
drivers/char/rmem.c | 135
drivers/char/rtc.c | 181
drivers/char/sysrq.c | 18
drivers/char/tty_io.c | 26
drivers/char/vt.c | 2
drivers/clocksource/acpi_pm.c | 19
drivers/cpufreq/cpufreq.c | 3
drivers/cpufreq/cpufreq_ondemand.c | 4
drivers/dma/ioat_dma.c | 2
drivers/eisa/.gitignore | 1
drivers/hwmon/Kconfig | 10
drivers/hwmon/Makefile | 2
drivers/hwmon/isl29003.c | 441
drivers/hwmon/mxc_mma7450.c | 788
drivers/i2c-slave/Kconfig | 40
drivers/i2c-slave/Makefile | 10
drivers/i2c-slave/i2c_slave_client.c | 81
drivers/i2c-slave/i2c_slave_core.c | 355
drivers/i2c-slave/i2c_slave_device.c | 269
drivers/i2c-slave/i2c_slave_device.h | 79
drivers/i2c-slave/i2c_slave_ring_buffer.c | 185
drivers/i2c-slave/i2c_slave_ring_buffer.h | 39
drivers/i2c-slave/mxc_i2c_slave.c | 329
drivers/i2c-slave/mxc_i2c_slave.h | 44
drivers/i2c-slave/mxc_i2c_slave_reg.h | 41
drivers/i2c/busses/Kconfig | 51
drivers/i2c/busses/Makefile | 2
drivers/i2c/busses/mxc_i2c.c | 828
drivers/i2c/busses/mxc_i2c_hs.c | 549
drivers/i2c/busses/mxc_i2c_hs_reg.h | 97
drivers/i2c/busses/mxc_i2c_reg.h | 40
drivers/ide/Kconfig | 8
drivers/ide/arm/Makefile | 1
drivers/ide/arm/mxc_ide.c | 1350
drivers/ide/arm/mxc_ide.h | 198
drivers/ide/ide-floppy.c | 4
drivers/ide/ide-io.c | 4
drivers/ide/ide-iops.c | 22
drivers/ide/ide-lib.c | 8
drivers/ide/ide-probe.c | 8
drivers/ide/ide-taskfile.c | 6
drivers/ide/pci/alim15x3.c | 12
drivers/ide/pci/hpt366.c | 4
drivers/infiniband/hw/ipath/ipath_verbs.c | 6
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4
drivers/input/Kconfig | 4
drivers/input/Makefile | 2
drivers/input/ff-memless.c | 1
drivers/input/fiveway/Kconfig | 14
drivers/input/fiveway/Makefile | 5
drivers/input/fiveway/fiveway.c | 1245
drivers/input/fiveway/fiveway.h | 47
drivers/input/gameport/gameport.c | 9
drivers/input/input.c | 104
drivers/input/keyboard/Kconfig | 15
drivers/input/keyboard/Makefile | 4
drivers/input/keyboard/atkbd.c | 15
drivers/input/keyboard/mpr084.c | 508
drivers/input/keyboard/mxc_keyb.c | 1470
drivers/input/keyboard/mxc_keyb.h | 220
drivers/input/mouse/psmouse-base.c | 15
drivers/input/touchscreen/Kconfig | 42
drivers/input/touchscreen/Makefile | 5
drivers/input/touchscreen/imx_adc_ts.c | 114
drivers/input/touchscreen/mc13892_ts.c | 119
drivers/input/touchscreen/mxc_ts.c | 118
drivers/input/touchscreen/smk.c | 436
drivers/input/touchscreen/tsc2007.c | 443
drivers/input/volume/Kconfig | 14
drivers/input/volume/Makefile | 5
drivers/input/volume/volume.c | 567
drivers/input/volume/volume.h | 38
drivers/leds/Kconfig | 4
drivers/leds/Makefile | 1
drivers/leds/leds-mc13892.c | 162
drivers/macintosh/adb.c | 2
drivers/md/.gitignore | 4
drivers/media/dvb/dvb-core/dvb_frontend.c | 2
drivers/media/video/Kconfig | 27
drivers/media/video/Makefile | 6
drivers/media/video/mxc/capture/Kconfig | 111
drivers/media/video/mxc/capture/Makefile | 36
drivers/media/video/mxc/capture/adv7180.c | 975
drivers/media/video/mxc/capture/emma_mt9v111.c | 679
drivers/media/video/mxc/capture/emma_ov2640.c | 444
drivers/media/video/mxc/capture/emma_v4l2_capture.c | 2075
drivers/media/video/mxc/capture/ipu_prp_enc.c | 455
drivers/media/video/mxc/capture/ipu_prp_sw.h | 36
drivers/media/video/mxc/capture/ipu_prp_vf_adc.c | 601
drivers/media/video/mxc/capture/ipu_prp_vf_sdc.c | 472
drivers/media/video/mxc/capture/ipu_prp_vf_sdc_bg.c | 411
drivers/media/video/mxc/capture/ipu_still.c | 250
drivers/media/video/mxc/capture/mc521da.c | 648
drivers/media/video/mxc/capture/mt9v111.c | 1076
drivers/media/video/mxc/capture/mt9v111.h | 431
drivers/media/video/mxc/capture/mx27_csi.c | 332
drivers/media/video/mxc/capture/mx27_csi.h | 165
drivers/media/video/mxc/capture/mx27_prp.h | 310
drivers/media/video/mxc/capture/mx27_prphw.c | 1099
drivers/media/video/mxc/capture/mx27_prpsw.c | 1042
drivers/media/video/mxc/capture/mxc_v4l2_capture.c | 2443 +
drivers/media/video/mxc/capture/mxc_v4l2_capture.h | 195
drivers/media/video/mxc/capture/ov2640.c | 811
drivers/media/video/mxc/capture/ov3640.c | 1109
drivers/media/video/mxc/capture/sensor_clock.c | 85
drivers/media/video/mxc/opl/Makefile | 5
drivers/media/video/mxc/opl/hmirror_rotate180_u16.c | 259
drivers/media/video/mxc/opl/opl.h | 162
drivers/media/video/mxc/opl/opl_mod.c | 30
drivers/media/video/mxc/opl/rotate270_u16.c | 285
drivers/media/video/mxc/opl/rotate270_u16_qcif.S | 70
drivers/media/video/mxc/opl/rotate90_u16.c | 220
drivers/media/video/mxc/opl/rotate90_u16_qcif.S | 71
drivers/media/video/mxc/opl/vmirror_u16.c | 46
drivers/media/video/mxc/output/Kconfig | 28
drivers/media/video/mxc/output/Makefile | 11
drivers/media/video/mxc/output/mx27_pp.c | 904
drivers/media/video/mxc/output/mx27_pp.h | 180
drivers/media/video/mxc/output/mx27_v4l2_output.c | 1445
drivers/media/video/mxc/output/mx31_v4l2_wvga_output.c | 1926
drivers/media/video/mxc/output/mxc_v4l2_output.c | 1884
drivers/media/video/mxc/output/mxc_v4l2_output.h | 132
drivers/media/video/v4l2-int-device.c | 5
drivers/mmc/card/Kconfig | 12
drivers/mmc/card/Makefile | 1
drivers/mmc/card/block.c | 182
drivers/mmc/card/mmc_test.c | 566
drivers/mmc/card/queue.c | 20
drivers/mmc/card/unifi_fs/Makefile | 2
drivers/mmc/card/unifi_fs/fs_lx.c | 684
drivers/mmc/card/unifi_fs/fs_sdio_api.h | 68
drivers/mmc/core/Makefile | 1
drivers/mmc/core/bus.c | 8
drivers/mmc/core/core.c | 104
drivers/mmc/core/core.h | 7
drivers/mmc/core/host.c | 7
drivers/mmc/core/mmc.c | 171
drivers/mmc/core/mmc_debug.c | 303
drivers/mmc/core/mmc_ops.c | 23
drivers/mmc/core/sd.c | 41
drivers/mmc/core/sdio.c | 470
drivers/mmc/core/sdio_cis.c | 2
drivers/mmc/core/sdio_io.c | 49
drivers/mmc/core/sdio_irq.c | 50
drivers/mmc/core/sdio_ops.c | 36
drivers/mmc/core/sdio_ops.h | 1
drivers/mmc/host/Kconfig | 38
drivers/mmc/host/Makefile | 2
drivers/mmc/host/mx_sdhci.c | 2581 +
drivers/mmc/host/mx_sdhci.h | 281
drivers/mmc/host/mxc_mmc.c | 1532
drivers/mmc/host/mxc_mmc.h | 128
drivers/mtd/chips/cfi_probe.c | 26
drivers/mtd/chips/cfi_util.c | 11
drivers/mtd/maps/Kconfig | 10
drivers/mtd/maps/Makefile | 1
drivers/mtd/maps/mxc_nor.c | 184
drivers/mtd/nand/Kconfig | 50
drivers/mtd/nand/Makefile | 3
drivers/mtd/nand/mxc_nd.c | 1413
drivers/mtd/nand/mxc_nd.h | 112
drivers/mtd/nand/mxc_nd2.c | 1433
drivers/mtd/nand/mxc_nd2.h | 675
drivers/mtd/nand/nand_base.c | 3
drivers/mtd/nand/nand_ids.c | 3
drivers/mtd/nand/nandsim.c | 43
drivers/mtd/ubi/build.c | 99
drivers/mtd/ubi/cdev.c | 234
drivers/mtd/ubi/debug.c | 158
drivers/mtd/ubi/debug.h | 74
drivers/mtd/ubi/eba.c | 79
drivers/mtd/ubi/gluebi.c | 16
drivers/mtd/ubi/io.c | 48
drivers/mtd/ubi/kapi.c | 50
drivers/mtd/ubi/misc.c | 2
drivers/mtd/ubi/scan.c | 140
drivers/mtd/ubi/scan.h | 21
drivers/mtd/ubi/ubi-media.h | 38
drivers/mtd/ubi/ubi.h | 75
drivers/mtd/ubi/upd.c | 32
drivers/mtd/ubi/vmt.c | 148
drivers/mtd/ubi/vtbl.c | 131
drivers/mtd/ubi/wl.c | 213
drivers/mxc/Kconfig | 39
drivers/mxc/Makefile | 19
drivers/mxc/adc/Kconfig | 14
drivers/mxc/adc/Makefile | 4
drivers/mxc/adc/imx_adc.c | 1036
drivers/mxc/adc/imx_adc_reg.h | 242
drivers/mxc/asrc/Kconfig | 13
drivers/mxc/asrc/Makefile | 7
drivers/mxc/asrc/mxc_asrc.c | 1579
drivers/mxc/bt/Kconfig | 13
drivers/mxc/bt/Makefile | 4
drivers/mxc/bt/mxc_bt.c | 127
drivers/mxc/dam/Kconfig | 13
drivers/mxc/dam/Makefile | 9
drivers/mxc/dam/dam.c | 427
drivers/mxc/dam/dam.h | 258
drivers/mxc/dam/dam_v1.c | 616
drivers/mxc/gps_ioctrl/Kconfig | 14
drivers/mxc/gps_ioctrl/Makefile | 5
drivers/mxc/gps_ioctrl/agpsgpiodev.c | 299
drivers/mxc/gps_ioctrl/agpsgpiodev.h | 46
drivers/mxc/hmp4e/Kconfig | 24
drivers/mxc/hmp4e/Makefile | 8
drivers/mxc/hmp4e/mxc_hmp4e.c | 811
drivers/mxc/hmp4e/mxc_hmp4e.h | 70
drivers/mxc/hw_event/Kconfig | 11
drivers/mxc/hw_event/Makefile | 1
drivers/mxc/hw_event/mxc_hw_event.c | 265
drivers/mxc/ipu/Kconfig | 5
drivers/mxc/ipu/Makefile | 9
drivers/mxc/ipu/ipu_adc.c | 694
drivers/mxc/ipu/ipu_common.c | 1870
drivers/mxc/ipu/ipu_csi.c | 217
drivers/mxc/ipu/ipu_device.c | 599
drivers/mxc/ipu/ipu_ic.c | 592
drivers/mxc/ipu/ipu_l126_detect.c | 193
drivers/mxc/ipu/ipu_param_mem.h | 176
drivers/mxc/ipu/ipu_prv.h | 64
drivers/mxc/ipu/ipu_sdc.c | 357
drivers/mxc/ipu/pf/Kconfig | 7
drivers/mxc/ipu/pf/Makefile | 1
drivers/mxc/ipu/pf/mxc_pf.c | 993
drivers/mxc/ipu3/Kconfig | 5
drivers/mxc/ipu3/Makefile | 4
drivers/mxc/ipu3/ipu_capture.c | 725
drivers/mxc/ipu3/ipu_common.c | 1938
drivers/mxc/ipu3/ipu_device.c | 496
drivers/mxc/ipu3/ipu_disp.c | 1354
drivers/mxc/ipu3/ipu_ic.c | 632
drivers/mxc/ipu3/ipu_param_mem.h | 332
drivers/mxc/ipu3/ipu_prv.h | 88
drivers/mxc/ipu3/ipu_regs.h | 625
drivers/mxc/mcu_pmic/Kconfig | 19
drivers/mxc/mcu_pmic/Makefile | 8
drivers/mxc/mcu_pmic/max8660.c | 154
drivers/mxc/mcu_pmic/max8660.h | 49
drivers/mxc/mcu_pmic/mc9sdz60.c | 102
drivers/mxc/mcu_pmic/mc9sdz60.h | 74
drivers/mxc/mcu_pmic/mcu_pmic_core.c | 227
drivers/mxc/mcu_pmic/mcu_pmic_gpio.c | 132
drivers/mxc/mlb/Kconfig | 13
drivers/mxc/mlb/Makefile | 5
drivers/mxc/mlb/mxc_mlb.c | 1048
drivers/mxc/pm/Kconfig | 15
drivers/mxc/pm/Makefile | 4
drivers/mxc/pm/dptc_mx27.c | 1415
drivers/mxc/pm/dvfs_dptc.h | 83
drivers/mxc/pm/dvfs_dptc_table_mx27.h | 69
drivers/mxc/pmic/Kconfig | 57
drivers/mxc/pmic/Makefile | 8
drivers/mxc/pmic/core/Makefile | 22
drivers/mxc/pmic/core/mc13783.c | 366
drivers/mxc/pmic/core/mc13892.c | 594
drivers/mxc/pmic/core/mc34704.c | 314
drivers/mxc/pmic/core/pmic-dev.c | 317
drivers/mxc/pmic/core/pmic.h | 139
drivers/mxc/pmic/core/pmic_common.c | 99
drivers/mxc/pmic/core/pmic_core_i2c.c | 320
drivers/mxc/pmic/core/pmic_core_spi.c | 300
drivers/mxc/pmic/core/pmic_event.c | 237
drivers/mxc/pmic/core/pmic_external.c | 103
drivers/mxc/pmic/mc13783/Kconfig | 55
drivers/mxc/pmic/mc13783/Makefile | 18
drivers/mxc/pmic/mc13783/pmic_adc.c | 1544
drivers/mxc/pmic/mc13783/pmic_adc_defs.h | 321
drivers/mxc/pmic/mc13783/pmic_audio.c | 5876 ++
drivers/mxc/pmic/mc13783/pmic_battery.c | 1221
drivers/mxc/pmic/mc13783/pmic_battery_defs.h | 81
drivers/mxc/pmic/mc13783/pmic_convity.c | 2482 +
drivers/mxc/pmic/mc13783/pmic_light.c | 2768 +
drivers/mxc/pmic/mc13783/pmic_light_defs.h | 144
drivers/mxc/pmic/mc13783/pmic_power.c | 3140 +
drivers/mxc/pmic/mc13783/pmic_power_defs.h | 509
drivers/mxc/pmic/mc13783/pmic_rtc.c | 552
drivers/mxc/pmic/mc13783/pmic_rtc_defs.h | 47
drivers/mxc/pmic/mc13892/Kconfig | 48
drivers/mxc/pmic/mc13892/Makefile | 10
drivers/mxc/pmic/mc13892/pmic_adc.c | 978
drivers/mxc/pmic/mc13892/pmic_light.c | 694
drivers/mxc/pmic/mc13892/pmic_power.c | 208
drivers/mxc/pmic/mc13892/pmic_rtc.c | 101
drivers/mxc/security/Kconfig | 67
drivers/mxc/security/Makefile | 18
drivers/mxc/security/dryice-regs.h | 207
drivers/mxc/security/dryice.c | 1121
drivers/mxc/security/dryice.h | 287
drivers/mxc/security/mxc_scc.c | 2386 +
drivers/mxc/security/mxc_scc_internals.h | 499
drivers/mxc/security/mxc_sec_mod.c | 67
drivers/mxc/security/rng/Makefile | 35
drivers/mxc/security/rng/des_key.c | 385
drivers/mxc/security/rng/fsl_shw_hash.c | 84
drivers/mxc/security/rng/fsl_shw_hmac.c | 83
drivers/mxc/security/rng/fsl_shw_rand.c | 122
drivers/mxc/security/rng/fsl_shw_sym.c | 317
drivers/mxc/security/rng/fsl_shw_wrap.c | 1301
drivers/mxc/security/rng/include/rng_driver.h | 134
drivers/mxc/security/rng/include/rng_internals.h | 666
drivers/mxc/security/rng/include/rng_rnga.h | 181
drivers/mxc/security/rng/include/rng_rngc.h | 235
drivers/mxc/security/rng/include/shw_driver.h | 2971 +
drivers/mxc/security/rng/include/shw_hash.h | 96
drivers/mxc/security/rng/include/shw_hmac.h | 82
drivers/mxc/security/rng/include/shw_internals.h | 162
drivers/mxc/security/rng/rng_driver.c | 1150
drivers/mxc/security/rng/shw_driver.c | 2335 +
drivers/mxc/security/rng/shw_dryice.c | 204
drivers/mxc/security/rng/shw_hash.c | 328
drivers/mxc/security/rng/shw_hmac.c | 145
drivers/mxc/security/rng/shw_memory_mapper.c | 213
drivers/mxc/security/sahara2/Kconfig | 35
drivers/mxc/security/sahara2/Makefile | 47
drivers/mxc/security/sahara2/fsl_shw_auth.c | 706
drivers/mxc/security/sahara2/fsl_shw_hash.c | 186
drivers/mxc/security/sahara2/fsl_shw_hmac.c | 266
drivers/mxc/security/sahara2/fsl_shw_keystore.c | 837
drivers/mxc/security/sahara2/fsl_shw_rand.c | 96
drivers/mxc/security/sahara2/fsl_shw_sym.c | 281
drivers/mxc/security/sahara2/fsl_shw_user.c | 137
drivers/mxc/security/sahara2/fsl_shw_wrap.c | 967
drivers/mxc/security/sahara2/include/adaptor.h | 113
drivers/mxc/security/sahara2/include/diagnostic.h | 116
drivers/mxc/security/sahara2/include/fsl_platform.h | 161
drivers/mxc/security/sahara2/include/fsl_shw.h | 2515 +
drivers/mxc/security/sahara2/include/fsl_shw_keystore.h | 475
drivers/mxc/security/sahara2/include/linux_port.h | 1808
drivers/mxc/security/sahara2/include/platform_abstractions.h | 15
drivers/mxc/security/sahara2/include/portable_os.h | 1453
drivers/mxc/security/sahara2/include/sah_driver_common.h | 102
drivers/mxc/security/sahara2/include/sah_hardware_interface.h | 99
drivers/mxc/security/sahara2/include/sah_interrupt_handler.h | 42
drivers/mxc/security/sahara2/include/sah_kernel.h | 113
drivers/mxc/security/sahara2/include/sah_memory_mapper.h | 79
drivers/mxc/security/sahara2/include/sah_queue_manager.h | 63
drivers/mxc/security/sahara2/include/sah_status_manager.h | 228
drivers/mxc/security/sahara2/include/sahara.h | 2266 +
drivers/mxc/security/sahara2/include/sahara2_kernel.h | 49
drivers/mxc/security/sahara2/include/sf_util.h | 466
drivers/mxc/security/sahara2/km_adaptor.c | 849
drivers/mxc/security/sahara2/sah_driver_interface.c | 2162
drivers/mxc/security/sahara2/sah_hardware_interface.c | 854
drivers/mxc/security/sahara2/sah_interrupt_handler.c | 216
drivers/mxc/security/sahara2/sah_memory_mapper.c | 2349 +
drivers/mxc/security/sahara2/sah_queue.c | 249
drivers/mxc/security/sahara2/sah_queue_manager.c | 1033
drivers/mxc/security/sahara2/sah_status_manager.c | 710
drivers/mxc/security/sahara2/sf_util.c | 1396
drivers/mxc/security/scc2_driver.c | 2261 +
drivers/mxc/security/scc2_internals.h | 527
drivers/mxc/ssi/Kconfig | 12
drivers/mxc/ssi/Makefile | 7
drivers/mxc/ssi/registers.h | 208
drivers/mxc/ssi/ssi.c | 1238
drivers/mxc/ssi/ssi.h | 574
drivers/mxc/ssi/ssi_types.h | 367
drivers/mxc/vpu/Kconfig | 30
drivers/mxc/vpu/Makefile | 10
drivers/mxc/vpu/mxc_vl2cc.c | 123
drivers/mxc/vpu/mxc_vpu.c | 762
drivers/net/3c527.c | 2
drivers/net/3c59x.c | 16
drivers/net/8139too.c | 6
drivers/net/Kconfig | 54
drivers/net/Makefile | 1
drivers/net/can/Kconfig | 9
drivers/net/can/Makefile | 1
drivers/net/can/flexcan/Makefile | 3
drivers/net/can/flexcan/dev.c | 619
drivers/net/can/flexcan/drv.c | 624
drivers/net/can/flexcan/flexcan.h | 223
drivers/net/can/flexcan/mbm.c | 347
drivers/net/cs89x0.c | 17
drivers/net/fec.c | 779
drivers/net/fec.h | 18
drivers/net/hamradio/6pack.c | 2
drivers/net/hamradio/mkiss.c | 2
drivers/net/ibm_emac/ibm_emac_core.c | 11
drivers/net/ibm_emac/ibm_emac_core.h | 2
drivers/net/irda/Kconfig | 4
drivers/net/irda/Makefile | 1
drivers/net/irda/mxc_ir.c | 1777
drivers/net/irda/mxc_ir.h | 133
drivers/net/loopback.c | 6
drivers/net/ppp_async.c | 22
drivers/net/ppp_generic.c | 1
drivers/net/smc911x.h | 10
drivers/net/smsc911x.c | 2253 +
drivers/net/smsc911x.h | 395
drivers/net/sungem.c | 4
drivers/net/tulip/tulip_core.c | 1
drivers/net/usb/usbnet.c | 2
drivers/net/wan/.gitignore | 1
drivers/net/wan/Kconfig | 4
drivers/net/wan/Makefile | 5
drivers/net/wan/mwan-core.c | 34
drivers/net/wan/mwan.c | 727
drivers/net/wireless/Kconfig | 1
drivers/net/wireless/Makefile | 1
drivers/net/wireless/ar6000/Kconfig | 14
drivers/net/wireless/ar6000/Makefile | 22
drivers/net/wireless/ar6000/ar6000_drv.c | 3309 +
drivers/net/wireless/ar6000/ar6000_raw_if.c | 443
drivers/net/wireless/ar6000/ar6k.c | 1006
drivers/net/wireless/ar6000/ar6k_events.c | 650
drivers/net/wireless/ar6000/bmi.c | 778
drivers/net/wireless/ar6000/common_drv.c | 851
drivers/net/wireless/ar6000/credit_dist.c | 357
drivers/net/wireless/ar6000/engine.c | 278
drivers/net/wireless/ar6000/hif.c | 718
drivers/net/wireless/ar6000/htc.c | 580
drivers/net/wireless/ar6000/htc_recv.c | 766
drivers/net/wireless/ar6000/htc_send.c | 593
drivers/net/wireless/ar6000/htc_services.c | 412
drivers/net/wireless/ar6000/include/AR6000/ar6k.h | 199
drivers/net/wireless/ar6000/include/AR6002/AR6002_regdump.h | 59
drivers/net/wireless/ar6000/include/AR6002/AR6K_version.h | 52
drivers/net/wireless/ar6000/include/AR6002/addrs.h | 63
drivers/net/wireless/ar6000/include/AR6002/hw/mbox_host_reg.h | 409
drivers/net/wireless/ar6000/include/a_config.h | 41
drivers/net/wireless/ar6000/include/a_debug.h | 53
drivers/net/wireless/ar6000/include/a_drv.h | 42
drivers/net/wireless/ar6000/include/a_drv_api.h | 198
drivers/net/wireless/ar6000/include/a_osapi.h | 47
drivers/net/wireless/ar6000/include/a_types.h | 42
drivers/net/wireless/ar6000/include/ar6000_api.h | 42
drivers/net/wireless/ar6000/include/ar6000_diag.h | 42
drivers/net/wireless/ar6000/include/ar6k.h | 199
drivers/net/wireless/ar6000/include/athdefs.h | 102
drivers/net/wireless/ar6000/include/athdrv.h | 35
drivers/net/wireless/ar6000/include/athendpack.h | 44
drivers/net/wireless/ar6000/include/athstartpack.h | 44
drivers/net/wireless/ar6000/include/bmi.h | 115
drivers/net/wireless/ar6000/include/bmi_internal.h | 50
drivers/net/wireless/ar6000/include/bmi_msg.h | 234
drivers/net/wireless/ar6000/include/common_drv.h | 79
drivers/net/wireless/ar6000/include/dbglog.h | 128
drivers/net/wireless/ar6000/include/dbglog_api.h | 52
drivers/net/wireless/ar6000/include/dl_list.h | 118
drivers/net/wireless/ar6000/include/dset_api.h | 65
drivers/net/wireless/ar6000/include/gpio.h | 49
drivers/net/wireless/ar6000/include/gpio_api.h | 59
drivers/net/wireless/ar6000/include/hif.h | 317
drivers/net/wireless/ar6000/include/hif_internal.h | 88
drivers/net/wireless/ar6000/include/host_version.h | 52
drivers/net/wireless/ar6000/include/htc.h | 204
drivers/net/wireless/ar6000/include/htc_api.h | 474
drivers/net/wireless/ar6000/include/htc_internal.h | 176
drivers/net/wireless/ar6000/include/htc_packet.h | 160
drivers/net/wireless/ar6000/include/htc_services.h | 52
drivers/net/wireless/ar6000/include/ieee80211.h | 344
drivers/net/wireless/ar6000/include/ieee80211_node.h | 85
drivers/net/wireless/ar6000/include/regdump.h | 49
drivers/net/wireless/ar6000/include/roaming.h | 41
drivers/net/wireless/ar6000/include/targaddrs.h | 175
drivers/net/wireless/ar6000/include/testcmd.h | 163
drivers/net/wireless/ar6000/include/wlan_api.h | 110
drivers/net/wireless/ar6000/include/wmi.h | 1871
drivers/net/wireless/ar6000/include/wmi_api.h | 289
drivers/net/wireless/ar6000/include/wmi_host.h | 77
drivers/net/wireless/ar6000/include/wmix.h | 279
drivers/net/wireless/ar6000/ioctl.c | 2756 +
drivers/net/wireless/ar6000/netbuf.c | 229
drivers/net/wireless/ar6000/os/linux/include/ar6000_drv.h | 377
drivers/net/wireless/ar6000/os/linux/include/ar6xapi_linux.h | 143
drivers/net/wireless/ar6000/os/linux/include/athdrv_linux.h | 1053
drivers/net/wireless/ar6000/os/linux/include/athtypes_linux.h | 49
drivers/net/wireless/ar6000/os/linux/include/config_linux.h | 54
drivers/net/wireless/ar6000/os/linux/include/debug_linux.h | 90
drivers/net/wireless/ar6000/os/linux/include/engine.h | 97
drivers/net/wireless/ar6000/os/linux/include/ieee80211_ioctl.h | 165
drivers/net/wireless/ar6000/os/linux/include/osapi_linux.h | 331
drivers/net/wireless/ar6000/wireless_ext.c | 2313 +
drivers/net/wireless/ar6000/wlan_node.c | 467
drivers/net/wireless/ar6000/wlan_recv_beacon.c | 185
drivers/net/wireless/ar6000/wlan_utils.c | 61
drivers/net/wireless/ar6000/wmi.c | 4780 ++
drivers/net/wireless/ath6k/AR6002_regdump.h | 59
drivers/net/wireless/ath6k/AR6K_version.h | 52
drivers/net/wireless/ath6k/AR6K_version.h.NEW | 38
drivers/net/wireless/ath6k/Kconfig | 14
drivers/net/wireless/ath6k/Makefile | 20
drivers/net/wireless/ath6k/README.txt | 3
drivers/net/wireless/ath6k/a_config.h | 45
drivers/net/wireless/ath6k/a_debug.h | 59
drivers/net/wireless/ath6k/a_drv.h | 46
drivers/net/wireless/ath6k/a_drv_api.h | 207
drivers/net/wireless/ath6k/a_osapi.h | 56
drivers/net/wireless/ath6k/a_pyxis.h | 60
drivers/net/wireless/ath6k/a_types.h | 46
drivers/net/wireless/ath6k/addrs.h | 85
drivers/net/wireless/ath6k/analog_intf_reg.h | 87
drivers/net/wireless/ath6k/analog_reg.h | 1955
drivers/net/wireless/ath6k/apb_map.h | 36
drivers/net/wireless/ath6k/ar6000_api.h | 46
drivers/net/wireless/ath6k/ar6000_diag.h | 42
drivers/net/wireless/ath6k/ar6000_drv.c | 4300 +
drivers/net/wireless/ath6k/ar6000_drv.h | 444
drivers/net/wireless/ath6k/ar6000_raw_if.c | 443
drivers/net/wireless/ath6k/ar6k.c | 1033
drivers/net/wireless/ath6k/ar6k.h | 206
drivers/net/wireless/ath6k/ar6k_events.c | 665
drivers/net/wireless/ath6k/ar6kap_common.h | 40
drivers/net/wireless/ath6k/ar6xapi_linux.h | 158
drivers/net/wireless/ath6k/athbtfilter.h | 131
drivers/net/wireless/ath6k/athdefs.h | 84
drivers/net/wireless/ath6k/athdrv.h | 35
drivers/net/wireless/ath6k/athdrv_linux.h | 1091
drivers/net/wireless/ath6k/athendpack.h | 49
drivers/net/wireless/ath6k/athstartpack.h | 48
drivers/net/wireless/ath6k/athtypes_linux.h | 56
drivers/net/wireless/ath6k/bmi.c | 879
drivers/net/wireless/ath6k/bmi.h | 115
drivers/net/wireless/ath6k/bmi_internal.h | 51
drivers/net/wireless/ath6k/bmi_msg.h | 235
drivers/net/wireless/ath6k/cnxmgmt.h | 33
drivers/net/wireless/ath6k/common_drv.c | 663
drivers/net/wireless/ath6k/common_drv.h | 79
drivers/net/wireless/ath6k/config_linux.h | 51
drivers/net/wireless/ath6k/credit_dist.c | 373
drivers/net/wireless/ath6k/dbglog.h | 126
drivers/net/wireless/ath6k/dbglog_api.h | 52
drivers/net/wireless/ath6k/dbglog_id.h | 491
drivers/net/wireless/ath6k/debug_linux.h | 89
drivers/net/wireless/ath6k/discovery.h | 74
drivers/net/wireless/ath6k/dl_list.h | 119
drivers/net/wireless/ath6k/dset_api.h | 65
drivers/net/wireless/ath6k/dset_internal.h | 55
drivers/net/wireless/ath6k/dsetid.h | 126
drivers/net/wireless/ath6k/eeprom.c | 586
drivers/net/wireless/ath6k/engine.c | 278
drivers/net/wireless/ath6k/engine.h | 75
drivers/net/wireless/ath6k/gpio.h | 49
drivers/net/wireless/ath6k/gpio_api.h | 59
drivers/net/wireless/ath6k/gpio_reg.h | 1000
drivers/net/wireless/ath6k/hif.c | 737
drivers/net/wireless/ath6k/hif.h | 323
drivers/net/wireless/ath6k/hif_internal.h | 89
drivers/net/wireless/ath6k/host_version.h | 52
drivers/net/wireless/ath6k/htc.c | 525
drivers/net/wireless/ath6k/htc.h | 204
drivers/net/wireless/ath6k/htc_api.h | 463
drivers/net/wireless/ath6k/htc_debug.h | 69
drivers/net/wireless/ath6k/htc_internal.h | 177
drivers/net/wireless/ath6k/htc_packet.h | 162
drivers/net/wireless/ath6k/htc_recv.c | 785
drivers/net/wireless/ath6k/htc_send.c | 612
drivers/net/wireless/ath6k/htc_services.c | 412
drivers/net/wireless/ath6k/htc_services.h | 52
drivers/net/wireless/ath6k/ieee80211.h | 404
drivers/net/wireless/ath6k/ieee80211_ioctl.h | 173
drivers/net/wireless/ath6k/ieee80211_node.h | 85
drivers/net/wireless/ath6k/ini_dset.h | 90
drivers/net/wireless/ath6k/ioctl.c | 3381 +
drivers/net/wireless/ath6k/mbox_host_reg.h | 409
drivers/net/wireless/ath6k/mbox_reg.h | 504
drivers/net/wireless/ath6k/netbuf.c | 229
drivers/net/wireless/ath6k/osapi_linux.h | 333
drivers/net/wireless/ath6k/regDb.h | 30
drivers/net/wireless/ath6k/reg_dbschema.h | 211
drivers/net/wireless/ath6k/reg_dbvalues.h | 476
drivers/net/wireless/ath6k/regdump.h | 49
drivers/net/wireless/ath6k/roaming.h | 41
drivers/net/wireless/ath6k/rtc_reg.h | 1186
drivers/net/wireless/ath6k/si_reg.h | 209
drivers/net/wireless/ath6k/targaddrs.h | 202
drivers/net/wireless/ath6k/testcmd.h | 165
drivers/net/wireless/ath6k/uart_reg.h | 350
drivers/net/wireless/ath6k/vmc_reg.h | 99
drivers/net/wireless/ath6k/wireless_ext.c | 2077
drivers/net/wireless/ath6k/wlan_api.h | 119
drivers/net/wireless/ath6k/wlan_defs.h | 55
drivers/net/wireless/ath6k/wlan_dset.h | 34
drivers/net/wireless/ath6k/wlan_node.c | 470
drivers/net/wireless/ath6k/wlan_recv_beacon.c | 203
drivers/net/wireless/ath6k/wlan_utils.c | 61
drivers/net/wireless/ath6k/wmi.c | 5805 ++
drivers/net/wireless/ath6k/wmi.h | 2263 +
drivers/net/wireless/ath6k/wmi_api.h | 367
drivers/net/wireless/ath6k/wmi_filter_linux.h | 246
drivers/net/wireless/ath6k/wmi_host.h | 80
drivers/net/wireless/ath6k/wmix.h | 279
drivers/net/wireless/ath6k22.133/AR6002_regdump.h | 59
drivers/net/wireless/ath6k22.133/AR6K_version.h | 52
drivers/net/wireless/ath6k22.133/Makefile | 37
drivers/net/wireless/ath6k22.133/a_config.h | 46
drivers/net/wireless/ath6k22.133/a_debug.h | 59
drivers/net/wireless/ath6k22.133/a_drv.h | 46
drivers/net/wireless/ath6k22.133/a_drv_api.h | 211
drivers/net/wireless/ath6k22.133/a_osapi.h | 56
drivers/net/wireless/ath6k22.133/a_pyxis.h | 59
drivers/net/wireless/ath6k22.133/a_types.h | 46
drivers/net/wireless/ath6k22.133/addrs.h | 85
drivers/net/wireless/ath6k22.133/analog_intf_reg.h | 87
drivers/net/wireless/ath6k22.133/analog_reg.h | 1955
drivers/net/wireless/ath6k22.133/apb_map.h | 36
drivers/net/wireless/ath6k22.133/ar6000_api.h | 46
drivers/net/wireless/ath6k22.133/ar6000_diag.h | 42
drivers/net/wireless/ath6k22.133/ar6000_drv.c | 4917 ++
drivers/net/wireless/ath6k22.133/ar6000_drv.h | 451
drivers/net/wireless/ath6k22.133/ar6000_raw_if.c | 442
drivers/net/wireless/ath6k22.133/ar6k.c | 1033
drivers/net/wireless/ath6k22.133/ar6k.h | 206
drivers/net/wireless/ath6k22.133/ar6k_events.c | 665
drivers/net/wireless/ath6k22.133/ar6kap_common.h | 40
drivers/net/wireless/ath6k22.133/ar6xapi_linux.h | 159
drivers/net/wireless/ath6k22.133/athbtfilter.h | 131
drivers/net/wireless/ath6k22.133/athdefs.h | 84
drivers/net/wireless/ath6k22.133/athdrv.h | 35
drivers/net/wireless/ath6k22.133/athdrv_linux.h | 1089
drivers/net/wireless/ath6k22.133/athendpack.h | 49
drivers/net/wireless/ath6k22.133/athstartpack.h | 48
drivers/net/wireless/ath6k22.133/athtypes_linux.h | 56
drivers/net/wireless/ath6k22.133/bmi.c | 879
drivers/net/wireless/ath6k22.133/bmi.h | 115
drivers/net/wireless/ath6k22.133/bmi_internal.h | 51
drivers/net/wireless/ath6k22.133/bmi_msg.h | 235
drivers/net/wireless/ath6k22.133/cnxmgmt.h | 33
drivers/net/wireless/ath6k22.133/common_drv.c | 663
drivers/net/wireless/ath6k22.133/common_drv.h | 79
drivers/net/wireless/ath6k22.133/config_linux.h | 51
drivers/net/wireless/ath6k22.133/credit_dist.c | 373
drivers/net/wireless/ath6k22.133/dbglog.h | 126
drivers/net/wireless/ath6k22.133/dbglog_api.h | 52
drivers/net/wireless/ath6k22.133/dbglog_id.h | 505
drivers/net/wireless/ath6k22.133/debug_linux.h | 91
drivers/net/wireless/ath6k22.133/discovery.h | 74
drivers/net/wireless/ath6k22.133/dl_list.h | 119
drivers/net/wireless/ath6k22.133/dset_api.h | 65
drivers/net/wireless/ath6k22.133/dset_internal.h | 55
drivers/net/wireless/ath6k22.133/dsetid.h | 126
drivers/net/wireless/ath6k22.133/eeprom.c | 588
drivers/net/wireless/ath6k22.133/engine.c | 278
drivers/net/wireless/ath6k22.133/engine.h | 75
drivers/net/wireless/ath6k22.133/gpio.h | 49
drivers/net/wireless/ath6k22.133/gpio_api.h | 59
drivers/net/wireless/ath6k22.133/gpio_reg.h | 1000
drivers/net/wireless/ath6k22.133/hif.c | 753
drivers/net/wireless/ath6k22.133/hif.h | 323
drivers/net/wireless/ath6k22.133/hif_internal.h | 90
drivers/net/wireless/ath6k22.133/host_version.h | 52
drivers/net/wireless/ath6k22.133/htc.c | 525
drivers/net/wireless/ath6k22.133/htc.h | 204
drivers/net/wireless/ath6k22.133/htc_api.h | 463
drivers/net/wireless/ath6k22.133/htc_debug.h | 69
drivers/net/wireless/ath6k22.133/htc_internal.h | 179
drivers/net/wireless/ath6k22.133/htc_packet.h | 162
drivers/net/wireless/ath6k22.133/htc_recv.c | 785
drivers/net/wireless/ath6k22.133/htc_send.c | 612
drivers/net/wireless/ath6k22.133/htc_services.c | 412
drivers/net/wireless/ath6k22.133/htc_services.h | 52
drivers/net/wireless/ath6k22.133/ieee80211.h | 405
drivers/net/wireless/ath6k22.133/ieee80211_ioctl.h | 173
drivers/net/wireless/ath6k22.133/ieee80211_node.h | 90
drivers/net/wireless/ath6k22.133/ini_dset.h | 90
drivers/net/wireless/ath6k22.133/ioctl.c | 3484 +
drivers/net/wireless/ath6k22.133/mbox_host_reg.h | 409
drivers/net/wireless/ath6k22.133/mbox_reg.h | 504
drivers/net/wireless/ath6k22.133/miscdrv.h | 44
drivers/net/wireless/ath6k22.133/netbuf.c | 229
drivers/net/wireless/ath6k22.133/osapi_linux.h | 333
drivers/net/wireless/ath6k22.133/regDb.h | 30
drivers/net/wireless/ath6k22.133/regTableData.h | 456
drivers/net/wireless/ath6k22.133/reg_dbschema.h | 211
drivers/net/wireless/ath6k22.133/reg_dbvalues.h | 477
drivers/net/wireless/ath6k22.133/regdump.h | 49
drivers/net/wireless/ath6k22.133/roaming.h | 41
drivers/net/wireless/ath6k22.133/rtc_reg.h | 1186
drivers/net/wireless/ath6k22.133/si_reg.h | 209
drivers/net/wireless/ath6k22.133/targaddrs.h | 202
drivers/net/wireless/ath6k22.133/testcmd.h | 165
drivers/net/wireless/ath6k22.133/uart_reg.h | 350
drivers/net/wireless/ath6k22.133/vmc_reg.h | 99
drivers/net/wireless/ath6k22.133/wireless_ext.c | 2340 +
drivers/net/wireless/ath6k22.133/wlan_api.h | 119
drivers/net/wireless/ath6k22.133/wlan_defs.h | 55
drivers/net/wireless/ath6k22.133/wlan_dset.h | 34
drivers/net/wireless/ath6k22.133/wlan_node.c | 470
drivers/net/wireless/ath6k22.133/wlan_recv_beacon.c | 207
drivers/net/wireless/ath6k22.133/wlan_utils.c | 61
drivers/net/wireless/ath6k22.133/wmi.c | 5879 ++
drivers/net/wireless/ath6k22.133/wmi.h | 2256 +
drivers/net/wireless/ath6k22.133/wmi_api.h | 368
drivers/net/wireless/ath6k22.133/wmi_filter_linux.h | 250
drivers/net/wireless/ath6k22.133/wmi_host.h | 82
drivers/net/wireless/ath6k22.133/wmix.h | 279
drivers/net/wireless/ath6k22/AR6002_regdump.h | 59
drivers/net/wireless/ath6k22/AR6K_version.h | 52
drivers/net/wireless/ath6k22/Makefile | 20
drivers/net/wireless/ath6k22/a_config.h | 45
drivers/net/wireless/ath6k22/a_debug.h | 59
drivers/net/wireless/ath6k22/a_drv.h | 46
drivers/net/wireless/ath6k22/a_drv_api.h | 211
drivers/net/wireless/ath6k22/a_osapi.h | 56
drivers/net/wireless/ath6k22/a_pyxis.h | 60
drivers/net/wireless/ath6k22/a_types.h | 46
drivers/net/wireless/ath6k22/addrs.h | 85
drivers/net/wireless/ath6k22/analog_intf_reg.h | 87
drivers/net/wireless/ath6k22/analog_reg.h | 1955
drivers/net/wireless/ath6k22/apb_map.h | 36
drivers/net/wireless/ath6k22/ar6000_api.h | 46
drivers/net/wireless/ath6k22/ar6000_diag.h | 42
drivers/net/wireless/ath6k22/ar6000_drv.c | 4475 ++
drivers/net/wireless/ath6k22/ar6000_drv.h | 447
drivers/net/wireless/ath6k22/ar6000_raw_if.c | 443
drivers/net/wireless/ath6k22/ar6k.c | 1033
drivers/net/wireless/ath6k22/ar6k.h | 206
drivers/net/wireless/ath6k22/ar6k_events.c | 665
drivers/net/wireless/ath6k22/ar6kap_common.h | 40
drivers/net/wireless/ath6k22/ar6xapi_linux.h | 159
drivers/net/wireless/ath6k22/athbtfilter.h | 131
drivers/net/wireless/ath6k22/athdefs.h | 84
drivers/net/wireless/ath6k22/athdrv.h | 35
drivers/net/wireless/ath6k22/athdrv_linux.h | 1091
drivers/net/wireless/ath6k22/athendpack.h | 49
drivers/net/wireless/ath6k22/athstartpack.h | 48
drivers/net/wireless/ath6k22/athtypes_linux.h | 56
drivers/net/wireless/ath6k22/bmi.c | 879
drivers/net/wireless/ath6k22/bmi.h | 115
drivers/net/wireless/ath6k22/bmi_internal.h | 51
drivers/net/wireless/ath6k22/bmi_msg.h | 235
drivers/net/wireless/ath6k22/cnxmgmt.h | 33
drivers/net/wireless/ath6k22/common_drv.c | 663
drivers/net/wireless/ath6k22/common_drv.h | 79
drivers/net/wireless/ath6k22/config_linux.h | 51
drivers/net/wireless/ath6k22/credit_dist.c | 373
drivers/net/wireless/ath6k22/dbglog.h | 126
drivers/net/wireless/ath6k22/dbglog_api.h | 52
drivers/net/wireless/ath6k22/dbglog_id.h | 505
drivers/net/wireless/ath6k22/debug_linux.h | 92
drivers/net/wireless/ath6k22/discovery.h | 74
drivers/net/wireless/ath6k22/dl_list.h | 119
drivers/net/wireless/ath6k22/dset_api.h | 65
drivers/net/wireless/ath6k22/dset_internal.h | 55
drivers/net/wireless/ath6k22/dsetid.h | 126
drivers/net/wireless/ath6k22/eeprom.c | 588
drivers/net/wireless/ath6k22/engine.c | 278
drivers/net/wireless/ath6k22/engine.h | 75
drivers/net/wireless/ath6k22/gpio.h | 49
drivers/net/wireless/ath6k22/gpio_api.h | 59
drivers/net/wireless/ath6k22/gpio_reg.h | 1000
drivers/net/wireless/ath6k22/hif.c | 739
drivers/net/wireless/ath6k22/hif.h | 323
drivers/net/wireless/ath6k22/hif_internal.h | 89
drivers/net/wireless/ath6k22/host_version.h | 52
drivers/net/wireless/ath6k22/htc.c | 525
drivers/net/wireless/ath6k22/htc.h | 204
drivers/net/wireless/ath6k22/htc_api.h | 463
drivers/net/wireless/ath6k22/htc_debug.h | 69
drivers/net/wireless/ath6k22/htc_internal.h | 177
drivers/net/wireless/ath6k22/htc_packet.h | 162
drivers/net/wireless/ath6k22/htc_recv.c | 785
drivers/net/wireless/ath6k22/htc_send.c | 612
drivers/net/wireless/ath6k22/htc_services.c | 412
drivers/net/wireless/ath6k22/htc_services.h | 52
drivers/net/wireless/ath6k22/ieee80211.h | 404
drivers/net/wireless/ath6k22/ieee80211_ioctl.h | 173
drivers/net/wireless/ath6k22/ieee80211_node.h | 85
drivers/net/wireless/ath6k22/ini_dset.h | 90
drivers/net/wireless/ath6k22/ioctl.c | 3466 +
drivers/net/wireless/ath6k22/mbox_host_reg.h | 409
drivers/net/wireless/ath6k22/mbox_reg.h | 504
drivers/net/wireless/ath6k22/miscdrv.h | 44
drivers/net/wireless/ath6k22/netbuf.c | 229
drivers/net/wireless/ath6k22/osapi_linux.h | 333
drivers/net/wireless/ath6k22/regDb.h | 30
drivers/net/wireless/ath6k22/regdump.h | 49
drivers/net/wireless/ath6k22/roaming.h | 41
drivers/net/wireless/ath6k22/rtc_reg.h | 1186
drivers/net/wireless/ath6k22/si_reg.h | 209
drivers/net/wireless/ath6k22/targaddrs.h | 202
drivers/net/wireless/ath6k22/testcmd.h | 165
drivers/net/wireless/ath6k22/uart_reg.h | 350
drivers/net/wireless/ath6k22/vmc_reg.h | 99
drivers/net/wireless/ath6k22/wireless_ext.c | 2240 +
drivers/net/wireless/ath6k22/wlan_api.h | 119
drivers/net/wireless/ath6k22/wlan_defs.h | 55
drivers/net/wireless/ath6k22/wlan_dset.h | 34
drivers/net/wireless/ath6k22/wlan_node.c | 470
drivers/net/wireless/ath6k22/wlan_recv_beacon.c | 207
drivers/net/wireless/ath6k22/wlan_utils.c | 61
drivers/net/wireless/ath6k22/wmi.c | 5873 ++
drivers/net/wireless/ath6k22/wmi.h | 2255 +
drivers/net/wireless/ath6k22/wmi_api.h | 367
drivers/net/wireless/ath6k22/wmi_filter_linux.h | 250
drivers/net/wireless/ath6k22/wmi_host.h | 82
drivers/net/wireless/ath6k22/wmix.h | 279
drivers/of/base.c | 2
drivers/oprofile/oprofilefs.c | 2
drivers/pci/.gitignore | 4
drivers/pci/access.c | 2
drivers/pci/hotplug/ibmphp_hpc.c | 2
drivers/pci/msi.c | 16
drivers/pci/pci.c | 36
drivers/pci/probe.c | 4
drivers/pcmcia/Kconfig | 8
drivers/pcmcia/Makefile | 1
drivers/pcmcia/mx31ads-pcmcia.c | 1293
drivers/pcmcia/mx31ads-pcmcia.h | 157
drivers/power/Kconfig | 5
drivers/power/Makefile | 1
drivers/power/luigi_battery.c | 754
drivers/regulator/Kconfig | 77
drivers/regulator/Makefile | 16
drivers/regulator/max8660/Makefile | 1
drivers/regulator/max8660/reg-max8660.c | 899
drivers/regulator/mc13783/Makefile | 5
drivers/regulator/mc13783/reg-mc13783.c | 3235 +
drivers/regulator/mc13892/Makefile | 5
drivers/regulator/mc13892/reg-mc13892.c | 2025
drivers/regulator/mc34704/Makefile | 5
drivers/regulator/mc34704/reg-mc34704.c | 291
drivers/regulator/mc9sdz60/Makefile | 1
drivers/regulator/mc9sdz60/reg-mc9sdz60.c | 203
drivers/regulator/reg-core.c | 844
drivers/regulator/wm8350/Makefile | 5
drivers/regulator/wm8350/reg-wm8350-bus.c | 1525
drivers/regulator/wm8350/reg-wm8350-i2c.c | 185
drivers/regulator/wm8350/reg-wm8350.c | 1014
drivers/rtc/Kconfig | 29
drivers/rtc/Makefile | 4
drivers/rtc/rtc-imxdi.c | 567
drivers/rtc/rtc-lib.c | 5
drivers/rtc/rtc-mc13892.c | 266
drivers/rtc/rtc-mxc.c | 989
drivers/rtc/rtc-mxc_v2.c | 762
drivers/scsi/.gitignore | 1
drivers/scsi/aacraid/aacraid.h | 4
drivers/scsi/aic7xxx/.gitignore | 6
drivers/serial/8250.c | 36
drivers/serial/Kconfig | 25
drivers/serial/Makefile | 2
drivers/serial/mcfserial.c | 121
drivers/serial/mxc_uart.c | 2078
drivers/serial/mxc_uart_early.c | 252
drivers/serial/mxc_uart_reg.h | 128
drivers/spi/Kconfig | 28
drivers/spi/Makefile | 1
drivers/spi/mxc_spi.c | 1252
drivers/usb/Kconfig | 2
drivers/usb/Makefile | 3
drivers/usb/core/Kconfig | 7
drivers/usb/core/devio.c | 5
drivers/usb/core/driver.c | 23
drivers/usb/core/hcd.c | 25
drivers/usb/core/hub.c | 8
drivers/usb/core/message.c | 13
drivers/usb/gadget/Kconfig | 118
drivers/usb/gadget/Makefile | 4
drivers/usb/gadget/arcotg_udc.c | 4945 ++
drivers/usb/gadget/arcotg_udc.h | 686
drivers/usb/gadget/epautoconf.c | 6
drivers/usb/gadget/ether.c | 15
drivers/usb/gadget/file_storage.c | 147
drivers/usb/gadget/gadget_chips.h | 8
drivers/usb/gadget/inode.c | 115
drivers/usb/gadget/serial.c | 2
drivers/usb/host/Kconfig | 107
drivers/usb/host/ehci-arc.c | 772
drivers/usb/host/ehci-fsl.h | 14
drivers/usb/host/ehci-hcd.c | 650
drivers/usb/host/ehci-hub.c | 46
drivers/usb/host/ehci-mem-iram.c | 506
drivers/usb/host/ehci-q-iram.c | 1345
drivers/usb/host/ehci-q.c | 2
drivers/usb/host/ehci-sched.c | 68
drivers/usb/host/ehci.h | 24
drivers/usb/host/isp1760-hcd.c | 4
drivers/usb/otg/Kconfig | 5
drivers/usb/otg/Makefile | 7
drivers/usb/otg/fsl_otg.c | 1200
drivers/usb/otg/fsl_otg.h | 410
drivers/usb/otg/otg_fsm.c | 371
drivers/usb/otg/otg_fsm.h | 151
drivers/usb/serial/option.c | 122
drivers/usb/serial/usb-serial.c | 12
drivers/usb/storage/usb.h | 2
drivers/usb/usblan/Kconfig | 24
drivers/usb/usblan/Makefile | 8
drivers/usb/usblan/usblan-compat.h | 286
drivers/usb/usblan/usblan.c | 3045 +
drivers/usb/usblan/usblan.h | 84
drivers/video/Kconfig | 9
drivers/video/Makefile | 3
drivers/video/backlight/Kconfig | 33
drivers/video/backlight/Makefile | 6
drivers/video/backlight/mxc_ipu_bl.c | 155
drivers/video/backlight/mxc_lcdc_bl.c | 160
drivers/video/backlight/mxc_mc13892_bl.c | 171
drivers/video/backlight/mxc_pmic_bl.c | 197
drivers/video/backlight/wm8350_bl.c | 303
drivers/video/console/fbcon.c | 5
drivers/video/console/vgacon.c | 2
drivers/video/eink/Kconfig | 62
drivers/video/eink/Makefile | 12
drivers/video/eink/auo/auo.c | 850
drivers/video/eink/auo/auo.h | 54
drivers/video/eink/auo/auo_def.h | 244
drivers/video/eink/auo/auo_hal.c | 496
drivers/video/eink/auo/auo_mxc.c | 42
drivers/video/eink/broadsheet/broadsheet.c | 4992 ++
drivers/video/eink/broadsheet/broadsheet.h | 335
drivers/video/eink/broadsheet/broadsheet_commands.c | 155
drivers/video/eink/broadsheet/broadsheet_commands.h | 55
drivers/video/eink/broadsheet/broadsheet_def.h | 591
drivers/video/eink/broadsheet/broadsheet_eeprom.c | 223
drivers/video/eink/broadsheet/broadsheet_eeprom.h | 44
drivers/video/eink/broadsheet/broadsheet_hal.c | 1495
drivers/video/eink/broadsheet/broadsheet_mxc.c | 101
drivers/video/eink/broadsheet/broadsheet_papyrus.c | 505
drivers/video/eink/broadsheet/broadsheet_papyrus.h | 72
drivers/video/eink/broadsheet/broadsheet_pmic.c | 302
drivers/video/eink/broadsheet/broadsheet_waveform.c | 434
drivers/video/eink/broadsheet/broadsheet_waveform.h | 105
drivers/video/eink/broadsheet/platform_waveform.c | 130
drivers/video/eink/broadsheet/platform_waveform.h | 52
drivers/video/eink/emulator/emulator_hal.c | 217
drivers/video/eink/hal/Makefile | 34
drivers/video/eink/hal/einkfb_hal.h | 616
drivers/video/eink/hal/einkfb_hal_builtin_base.c | 30
drivers/video/eink/hal/einkfb_hal_events.c | 181
drivers/video/eink/hal/einkfb_hal_io.c | 554
drivers/video/eink/hal/einkfb_hal_main.c | 952
drivers/video/eink/hal/einkfb_hal_mem.c | 185
drivers/video/eink/hal/einkfb_hal_pm.c | 505
drivers/video/eink/hal/einkfb_hal_proc.c | 783
drivers/video/eink/hal/einkfb_hal_util.c | 1505
drivers/video/eink/legacy/Makefile | 3
drivers/video/eink/legacy/einkfb_shim.c | 2334 +
drivers/video/eink/legacy/einkfb_shim.h | 133
drivers/video/eink/legacy/einkfb_shim_mario.c | 535
drivers/video/eink/legacy/einksp.h | 3822 +
drivers/video/eink/legacy/einksp_mario.h | 3826 +
drivers/video/fb_defio.c | 12
drivers/video/logo/.gitignore | 7
drivers/video/mxc/Kconfig | 82
drivers/video/mxc/Makefile | 21
drivers/video/mxc/ch7024.c | 866
drivers/video/mxc/fs453.c | 494
drivers/video/mxc/fs453.h | 134
drivers/video/mxc/mx2fb.c | 1347
drivers/video/mxc/mx2fb.h | 141
drivers/video/mxc/mx2fb_epson.c | 2173
drivers/video/mxc/mxc_ipuv3_fb.c | 1061
drivers/video/mxc/mxcfb.c | 1481
drivers/video/mxc/mxcfb_claa_wvga.c | 234
drivers/video/mxc/mxcfb_epson.c | 1158
drivers/video/mxc/mxcfb_epson_qvga.c | 1146
drivers/video/mxc/mxcfb_epson_vga.c | 357
drivers/video/mxc/mxcfb_modedb.c | 69
drivers/video/mxc/mxcfb_sharp_128x128.c | 1167
drivers/video/mxc/mxcfb_toshiba_qvga.c | 1202
drivers/video/mxc/tve.c | 709
drivers/w1/masters/Kconfig | 6
drivers/w1/masters/Makefile | 2
drivers/w1/masters/mxc_w1.c | 432
drivers/w1/slaves/Kconfig | 22
drivers/w1/slaves/Makefile | 3
drivers/w1/slaves/w1_ds2438.c | 585
drivers/w1/slaves/w1_ds2438.h | 119
drivers/w1/slaves/w1_ds2751.c | 317
drivers/w1/w1_family.h | 2
drivers/watchdog/Kconfig | 12
drivers/watchdog/Makefile | 1
drivers/watchdog/mxc_wdt.c | 465
drivers/watchdog/mxc_wdt.h | 38
fs/Kconfig | 101
fs/Makefile | 1
fs/aio.c | 4
fs/block_dev.c | 36
fs/buffer.c | 55
fs/dcache.c | 5
fs/debugfs/inode.c | 114
fs/dnotify.c | 2
fs/drop_caches.c | 2
fs/exec.c | 5
fs/ext3/inode.c | 23
fs/ext4/acl.c | 182
fs/ext4/balloc.c | 221
fs/ext4/dir.c | 37
fs/ext4/ext4.h | 64
fs/ext4/ext4_extents.h | 5
fs/ext4/ext4_i.h | 10
fs/ext4/ext4_jbd2.h | 29
fs/ext4/ext4_sb.h | 5
fs/ext4/extents.c | 277
fs/ext4/file.c | 20
fs/ext4/fsync.c | 4
fs/ext4/group.h | 2
fs/ext4/ialloc.c | 171
fs/ext4/inode.c | 1927
fs/ext4/mballoc.c | 744
fs/ext4/mballoc.h | 10
fs/ext4/migrate.c | 3
fs/ext4/namei.c | 45
fs/ext4/resize.c | 134
fs/ext4/super.c | 451
fs/ext4/xattr.c | 4
fs/ext4/xattr_trusted.c | 4
fs/ext4/xattr_user.c | 4
fs/fat/Kconfig | 98
fs/fat/inode.c | 11
fs/fat/misc.c | 12
fs/file.c | 5
fs/file_table.c | 34
fs/fs-writeback.c | 22
fs/gfs2/glock.c | 2
fs/gfs2/glops.c | 4
fs/gfs2/meta_io.c | 2
fs/hugetlbfs/inode.c | 2
fs/inode.c | 12
fs/ioprio.c | 3
fs/jbd/commit.c | 6
fs/jbd/journal.c | 3
fs/jbd/transaction.c | 6
fs/jbd2/checkpoint.c | 1
fs/jbd2/commit.c | 304
fs/jbd2/journal.c | 54
fs/jbd2/transaction.c | 365
fs/jffs2/dir.c | 4
fs/jffs2/fs.c | 8
fs/jffs2/os-linux.h | 2
fs/jffs2/scan.c | 24
fs/libfs.c | 2
fs/mpage.c | 14
fs/namespace.c | 22
fs/nfs/inode.c | 6
fs/nfs/iostat.h | 4
fs/ntfs/aops.c | 13
fs/pipe.c | 22
fs/proc/Makefile | 2
fs/proc/array.c | 27
fs/proc/generic.c | 2
fs/proc/proc_misc.c | 138
fs/proc/softirqs.c | 49
fs/proc/task_mmu.c | 4
fs/select.c | 18
fs/super.c | 14
fs/sysfs/file.c | 13
fs/ubifs/Kconfig | 72
fs/ubifs/Makefile | 9
fs/ubifs/budget.c | 814
fs/ubifs/commit.c | 677
fs/ubifs/compress.c | 251
fs/ubifs/debug.c | 2347 +
fs/ubifs/debug.h | 404
fs/ubifs/dir.c | 1240
fs/ubifs/file.c | 1549
fs/ubifs/find.c | 977
fs/ubifs/gc.c | 849
fs/ubifs/io.c | 934
fs/ubifs/ioctl.c | 204
fs/ubifs/journal.c | 1382
fs/ubifs/key.h | 553
fs/ubifs/log.c | 807
fs/ubifs/lprops.c | 1325
fs/ubifs/lpt.c | 2275 +
fs/ubifs/lpt_commit.c | 1813
fs/ubifs/master.c | 387
fs/ubifs/misc.h | 340
fs/ubifs/orphan.c | 962
fs/ubifs/recovery.c | 1520
fs/ubifs/replay.c | 1075
fs/ubifs/sb.c | 630
fs/ubifs/scan.c | 362
fs/ubifs/shrinker.c | 322
fs/ubifs/super.c | 2033
fs/ubifs/tnc.c | 3262 +
fs/ubifs/tnc_commit.c | 1102
fs/ubifs/tnc_misc.c | 494
fs/ubifs/ubifs-media.h | 751
fs/ubifs/ubifs.h | 1716
fs/ubifs/xattr.c | 571
fs/xfs/linux-2.6/mrlock.h | 2
fs/xfs/linux-2.6/sema.h | 9
fs/xfs/linux-2.6/xfs_buf.h | 4
fs/xfs/linux-2.6/xfs_fs_subr.c | 4
fs/xfs/linux-2.6/xfs_lrw.c | 7
fs/xfs/linux-2.6/xfs_vnode.h | 2
fs/xfs/xfs_mount.h | 2
include/acpi/acglobal.h | 7
include/acpi/acpiosxf.h | 2
include/asm-arm/.gitignore | 2
include/asm-arm/arch-ep93xx/timex.h | 6
include/asm-arm/arch-mxc/arc_otg.h | 339
include/asm-arm/arch-mxc/audio_controls.h | 220
include/asm-arm/arch-mxc/board_id.h | 39
include/asm-arm/arch-mxc/boot_globals.h | 461
include/asm-arm/arch-mxc/clock.h | 91
include/asm-arm/arch-mxc/controller_common.c | 115
include/asm-arm/arch-mxc/controller_common.h | 239
include/asm-arm/arch-mxc/controller_common_display.c | 79
include/asm-arm/arch-mxc/controller_common_mxc.c | 459
include/asm-arm/arch-mxc/dam.h | 258
include/asm-arm/arch-mxc/debug-macro.S | 57
include/asm-arm/arch-mxc/dma.h | 279
include/asm-arm/arch-mxc/dptc.h | 186
include/asm-arm/arch-mxc/dvfs_dptc_struct.h | 169
include/asm-arm/arch-mxc/entry-macro.S | 31
include/asm-arm/arch-mxc/fsl_usb.h | 79
include/asm-arm/arch-mxc/fsl_usb_gadget.h | 40
include/asm-arm/arch-mxc/gpio.h | 167
include/asm-arm/arch-mxc/hardware.h | 136
include/asm-arm/arch-mxc/hw_events.h | 65
include/asm-arm/arch-mxc/ide.h | 55
include/asm-arm/arch-mxc/iim.h | 71
include/asm-arm/arch-mxc/imx_adc.h | 275
include/asm-arm/arch-mxc/io.h | 27
include/asm-arm/arch-mxc/ipu.h | 1108
include/asm-arm/arch-mxc/ipu_regs.h | 396
include/asm-arm/arch-mxc/irqs.h | 18
include/asm-arm/arch-mxc/memory.h | 54
include/asm-arm/arch-mxc/mmc.h | 35
include/asm-arm/arch-mxc/mtd-xip.h | 52
include/asm-arm/arch-mxc/mx21.h | 303
include/asm-arm/arch-mxc/mx27.h | 336
include/asm-arm/arch-mxc/mx2_dma.h | 261
include/asm-arm/arch-mxc/mx31.h | 215
include/asm-arm/arch-mxc/mx35.h | 475
include/asm-arm/arch-mxc/mx37.h | 509
include/asm-arm/arch-mxc/mx51.h | 521
include/asm-arm/arch-mxc/mxc.h | 486
include/asm-arm/arch-mxc/mxc_dptc.h | 111
include/asm-arm/arch-mxc/mxc_gpc.h | 74
include/asm-arm/arch-mxc/mxc_pm.h | 252
include/asm-arm/arch-mxc/mxc_scc.h | 45
include/asm-arm/arch-mxc/mxc_security_api.h | 700
include/asm-arm/arch-mxc/mxc_uart.h | 275
include/asm-arm/arch-mxc/mxc_vpu.h | 92
include/asm-arm/arch-mxc/pcmcia.h | 218
include/asm-arm/arch-mxc/pm_api.h | 353
include/asm-arm/arch-mxc/pmic_audio.h | 2315 +
include/asm-arm/arch-mxc/pmic_convity.h | 873
include/asm-arm/arch-mxc/pmic_power.h | 1358
include/asm-arm/arch-mxc/sdma.h | 559
include/asm-arm/arch-mxc/spba.h | 66
include/asm-arm/arch-mxc/system.h | 23
include/asm-arm/arch-mxc/timex.h | 1
include/asm-arm/arch-mxc/uncompress.h | 2
include/asm-arm/arch-mxc/uncompress1.h | 80
include/asm-arm/arch-pxa/timex.h | 6
include/asm-arm/arch/arc_otg.h | 339
include/asm-arm/arch/audio_controls.h | 220
include/asm-arm/arch/board-mx31ads.h | 112
include/asm-arm/arch/board_id.h | 39
include/asm-arm/arch/boot_globals.h | 461
include/asm-arm/arch/clock.h | 91
include/asm-arm/arch/common.h | 20
include/asm-arm/arch/controller_common.c | 115
include/asm-arm/arch/controller_common.h | 239
include/asm-arm/arch/controller_common_display.c | 79
include/asm-arm/arch/controller_common_mxc.c | 459
include/asm-arm/arch/dam.h | 258
include/asm-arm/arch/debug-macro.S | 57
include/asm-arm/arch/dma.h | 291
include/asm-arm/arch/dptc.h | 186
include/asm-arm/arch/dvfs_dptc_struct.h | 169
include/asm-arm/arch/entry-macro.S | 70
include/asm-arm/arch/fsl_usb.h | 79
include/asm-arm/arch/fsl_usb_gadget.h | 40
include/asm-arm/arch/gpio.h | 167
include/asm-arm/arch/hardware.h | 151
include/asm-arm/arch/hw_events.h | 65
include/asm-arm/arch/ide.h | 55
include/asm-arm/arch/iim.h | 71
include/asm-arm/arch/imx_adc.h | 275
include/asm-arm/arch/io.h | 47
include/asm-arm/arch/ipu.h | 1108
include/asm-arm/arch/ipu_regs.h | 396
include/asm-arm/arch/irqs.h | 39
include/asm-arm/arch/memory.h | 79
include/asm-arm/arch/mmc.h | 35
include/asm-arm/arch/mtd-xip.h | 52
include/asm-arm/arch/mx21.h | 303
include/asm-arm/arch/mx27.h | 336
include/asm-arm/arch/mx2_dma.h | 261
include/asm-arm/arch/mx31.h | 460
include/asm-arm/arch/mx35.h | 475
include/asm-arm/arch/mx37.h | 509
include/asm-arm/arch/mx51.h | 521
include/asm-arm/arch/mxc.h | 442
include/asm-arm/arch/mxc_dptc.h | 111
include/asm-arm/arch/mxc_gpc.h | 74
include/asm-arm/arch/mxc_pm.h | 252
include/asm-arm/arch/mxc_scc.h | 45
include/asm-arm/arch/mxc_security_api.h | 700
include/asm-arm/arch/mxc_uart.h | 275
include/asm-arm/arch/mxc_vpu.h | 92
include/asm-arm/arch/pcmcia.h | 218
include/asm-arm/arch/pm_api.h | 353
include/asm-arm/arch/pmic_audio.h | 2315 +
include/asm-arm/arch/pmic_convity.h | 873
include/asm-arm/arch/pmic_power.h | 1358
include/asm-arm/arch/sdma.h | 559
include/asm-arm/arch/spba.h | 66
include/asm-arm/arch/system.h | 37
include/asm-arm/arch/timex.h | 26
include/asm-arm/arch/uncompress.h | 80
include/asm-arm/arch/uncompress1.h | 80
include/asm-arm/arch/vmalloc.h | 26
include/asm-arm/cacheflush.h | 12
include/asm-arm/dma.h | 2
include/asm-arm/elf.h | 5
include/asm-arm/ftrace.h | 14
include/asm-arm/futex.h | 125
include/asm-arm/hardware/cache-l2x0.h | 3
include/asm-arm/ide.h | 5
include/asm-arm/kgdb.h | 107
include/asm-arm/mach-types.h |22189 ++++++++++
include/asm-arm/mach/keypad.h | 28
include/asm-arm/mach/time.h | 2
include/asm-arm/page.h | 4
include/asm-arm/pgalloc.h | 4
include/asm-arm/pgtable.h | 11
include/asm-arm/ptrace.h | 2
include/asm-arm/setup.h | 12
include/asm-arm/system.h | 5
include/asm-arm/thread_info.h | 2
include/asm-arm/timex.h | 10
include/asm-arm/tlb.h | 9
include/asm-arm/traps.h | 2
include/asm-arm/unistd.h | 9
include/asm-arm/user.h | 9
include/asm-arm26/irq_regs.h | 1
include/asm-blackfin/.gitignore | 1
include/asm-frv/highmem.h | 2
include/asm-generic/bug.h | 16
include/asm-generic/cmpxchg-local.h | 8
include/asm-generic/percpu.h | 18
include/asm-generic/tlb.h | 9
include/asm-generic/vmlinux.lds.h | 57
include/asm-ia64/irqflags.h | 95
include/asm-ia64/mmu_context.h | 2
include/asm-ia64/processor.h | 6
include/asm-ia64/rtc.h | 7
include/asm-ia64/rwsem.h | 32
include/asm-ia64/sal.h | 2
include/asm-ia64/spinlock.h | 26
include/asm-ia64/spinlock_types.h | 4
include/asm-ia64/system.h | 69
include/asm-ia64/tlb.h | 10
include/asm-m68knommu/bitops.h | 30
include/asm-m68knommu/byteorder.h | 16
include/asm-m68knommu/commproc.h | 19
include/asm-m68knommu/m523xsim.h | 147
include/asm-m68knommu/m528xsim.h | 63
include/asm-m68knommu/m532xsim.h | 86
include/asm-m68knommu/system.h | 18
include/asm-mips/asmmacro.h | 8
include/asm-mips/atomic.h | 25
include/asm-mips/bitops.h | 5
include/asm-mips/hw_irq.h | 1
include/asm-mips/i8259.h | 2
include/asm-mips/io.h | 1
include/asm-mips/linkage.h | 5
include/asm-mips/m48t35.h | 2
include/asm-mips/mach-tx49xx/cpu-feature-overrides.h | 7
include/asm-mips/rwsem.h | 176
include/asm-mips/spinlock.h | 18
include/asm-mips/spinlock_types.h | 4
include/asm-mips/system.h | 3
include/asm-mips/time.h | 2
include/asm-mips/timeofday.h | 5
include/asm-mips/uaccess.h | 12
include/asm-mn10300/.gitignore | 2
include/asm-parisc/cacheflush.h | 4
include/asm-powerpc/ftrace.h | 14
include/asm-powerpc/hw_irq.h | 38
include/asm-powerpc/irq.h | 19
include/asm-powerpc/mpic.h | 2
include/asm-powerpc/pgtable-ppc64.h | 9
include/asm-powerpc/pmac_feature.h | 2
include/asm-powerpc/rtas.h | 2
include/asm-powerpc/rwsem.h | 40
include/asm-powerpc/spinlock.h | 50
include/asm-powerpc/spinlock_types.h | 4
include/asm-powerpc/tlb.h | 6
include/asm-powerpc/tlbflush.h | 31
include/asm-ppc/highmem.h | 4
include/asm-sh/.gitignore | 3
include/asm-sparc64/ftrace.h | 14
include/asm-x86/acpi.h | 4
include/asm-x86/alternative.h | 2
include/asm-x86/apic.h | 2
include/asm-x86/atomic_32.h | 4
include/asm-x86/calling.h | 50
include/asm-x86/ftrace.h | 24
include/asm-x86/highmem.h | 27
include/asm-x86/hw_irq_64.h | 2
include/asm-x86/i8253.h | 2
include/asm-x86/i8259.h | 2
include/asm-x86/irqflags.h | 24
include/asm-x86/mach-default/irq_vectors.h | 2
include/asm-x86/nmi.h | 3
include/asm-x86/page_64.h | 9
include/asm-x86/pgalloc.h | 1
include/asm-x86/rwsem.h | 51
include/asm-x86/smp.h | 4
include/asm-x86/spinlock.h | 32
include/asm-x86/spinlock_types.h | 4
include/asm-x86/timer.h | 8
include/asm-x86/tlbflush.h | 24
include/asm-x86/unistd_32.h | 2
include/asm-x86/unistd_64.h | 2
include/asm-x86/vgtod.h | 2
include/asm-x86/vsyscall.h | 3
include/asm-x86/xor_32.h | 19
include/linux/bit_spinlock.h | 4
include/linux/bottom_half.h | 9
include/linux/buffer_head.h | 6
include/linux/compiler.h | 2
include/linux/completion.h | 1
include/linux/console.h | 12
include/linux/debugfs.h | 4
include/linux/einkfb.h | 467
include/linux/etherdevice.h | 5
include/linux/fs.h | 46
include/linux/fsl_devices.h | 66
include/linux/ftrace.h | 330
include/linux/futex.h | 1
include/linux/genhd.h | 15
include/linux/hardirq.h | 80
include/linux/hrtimer.h | 16
include/linux/init.h | 2
include/linux/init_task.h | 26
include/linux/input.h | 26
include/linux/interrupt.h | 104
include/linux/ioport.h | 6
include/linux/ioprio.h | 2
include/linux/ipu.h | 1187
include/linux/irq.h | 27
include/linux/irqflags.h | 54
include/linux/irqnr.h | 23
include/linux/jbd.h | 21
include/linux/jbd2.h | 73
include/linux/kernel.h | 13
include/linux/kernel_stat.h | 14
include/linux/kobject.h | 4
include/linux/kprobes.h | 7
include/linux/list.h | 66
include/linux/lock_list.h | 74
include/linux/lockdep.h | 45
include/linux/mm.h | 32
include/linux/mm_types.h | 3
include/linux/mmc/card.h | 5
include/linux/mmc/core.h | 3
include/linux/mmc/host.h | 19
include/linux/mmc/mmc.h | 1
include/linux/mmc/pm.h | 31
include/linux/mmc/sdio.h | 2
include/linux/mmc/sdio_func.h | 5
include/linux/mmiotrace.h | 85
include/linux/module.h | 17
include/linux/mpage.h | 10
include/linux/mtd/nand.h | 4
include/linux/mtd/ubi.h | 5
include/linux/mutex.h | 79
include/linux/mxc_asrc.h | 206
include/linux/mxc_mlb.h | 51
include/linux/mxc_pf.h | 125
include/linux/mxc_scc2_driver.h | 973
include/linux/mxc_scc_driver.h | 1031
include/linux/mxc_si4702.h | 39
include/linux/mxc_v4l2.h | 42
include/linux/mxcfb.h | 75
include/linux/netdevice.h | 20
include/linux/netfilter/xt_TCPMSS.h | 10
include/linux/netfilter/xt_tcpmss.h | 9
include/linux/netfilter_ipv4/ipt_CONNMARK.h | 19
include/linux/netfilter_ipv4/ipt_MARK.h | 18
include/linux/netfilter_ipv4/ipt_TOS.h | 12
include/linux/netfilter_ipv4/ipt_TTL.h | 21
include/linux/netfilter_ipv4/ipt_connmark.h | 7
include/linux/netfilter_ipv4/ipt_mark.h | 9
include/linux/netfilter_ipv4/ipt_tos.h | 13
include/linux/netfilter_ipv4/ipt_ttl.h | 21
include/linux/netfilter_ipv6/ip6t_HL.h | 22
include/linux/netfilter_ipv6/ip6t_hl.h | 22
include/linux/netpoll.h | 2
include/linux/oprofile.h | 2
include/linux/page-flags.h | 5
include/linux/pagemap.h | 198
include/linux/pagevec.h | 2
include/linux/parport.h | 2
include/linux/pci.h | 6
include/linux/pci_regs.h | 1
include/linux/percpu.h | 40
include/linux/percpu_counter.h | 14
include/linux/percpu_list.h | 119
include/linux/pickop.h | 32
include/linux/platform_lab126.h | 67
include/linux/plist.h | 19
include/linux/pmic_adc.h | 455
include/linux/pmic_battery.h | 419
include/linux/pmic_external.h | 1137
include/linux/pmic_light.h | 1082
include/linux/pmic_rtc.h | 153
include/linux/pmic_status.h | 82
include/linux/posix-timers.h | 2
include/linux/preempt.h | 53
include/linux/profile.h | 13
include/linux/proportions.h | 6
include/linux/pwm.h | 31
include/linux/quicklist.h | 27
include/linux/radix-tree.h | 121
include/linux/rcuclassic.h | 6
include/linux/rcupdate.h | 66
include/linux/rcupreempt.h | 87
include/linux/regulator/mcu_max8660-bus.h | 102
include/linux/regulator/regulator-drv.h | 107
include/linux/regulator/regulator-platform.h | 102
include/linux/regulator/regulator.h | 332
include/linux/regulator/wm8350/wm8350-audio.h | 638
include/linux/regulator/wm8350/wm8350-bus.h | 118
include/linux/regulator/wm8350/wm8350-comparator.h | 183
include/linux/regulator/wm8350/wm8350-gpio.h | 345
include/linux/regulator/wm8350/wm8350-pmic.h | 805
include/linux/regulator/wm8350/wm8350-rtc.h | 282
include/linux/regulator/wm8350/wm8350-supply.h | 159
include/linux/regulator/wm8350/wm8350-wdt.h | 29
include/linux/regulator/wm8350/wm8350.h | 1863
include/linux/rt_lock.h | 313
include/linux/rtmutex.h | 35
include/linux/rwsem-spinlock.h | 35
include/linux/rwsem.h | 108
include/linux/sched.h | 293
include/linux/sched_prio.h | 23
include/linux/semaphore.h | 78
include/linux/seqlock.h | 316
include/linux/serial_core.h | 3
include/linux/smp.h | 23
include/linux/smp_lock.h | 2
include/linux/soundcard.h | 7
include/linux/spinlock.h | 609
include/linux/spinlock_api_smp.h | 91
include/linux/spinlock_api_up.h | 76
include/linux/spinlock_types.h | 61
include/linux/spinlock_types_up.h | 6
include/linux/spinlock_up.h | 8
include/linux/srcu.h | 22
include/linux/stacktrace.h | 3
include/linux/swap.h | 2
include/linux/sysfs.h | 7
include/linux/tick.h | 5
include/linux/time.h | 2
include/linux/timer.h | 4
include/linux/tracepoint.h | 127
include/linux/tty.h | 2
include/linux/uaccess.h | 33
include/linux/usb.h | 3
include/linux/usb/fsl_xcvr.h | 44
include/linux/usb/gadget.h | 1
include/linux/vmstat.h | 10
include/linux/wireless.h | 2
include/linux/workqueue.h | 35
include/linux/writeback.h | 3
include/llog.h | 527
include/mtd/mtd-abi.h | 3
include/mtd/ubi-user.h | 76
include/net/dn_dev.h | 6
include/net/mwan.h | 34
include/net/netfilter/nf_conntrack.h | 4
include/net/netfilter/nf_conntrack_ecache.h | 13
include/sound/driver.h | 52
include/sound/soc-dapm.h | 51
include/sound/soc.h | 31
include/trace/sched.h | 60
init/Kconfig | 18
init/Makefile | 3
init/do_mounts.c | 3
init/main.c | 88
ipc/mqueue.c | 5
ipc/msg.c | 25
ipc/sem.c | 6
ipc/shm.c | 4
kernel/.gitignore | 6
kernel/Kconfig.hz | 2
kernel/Kconfig.preempt | 107
kernel/Makefile | 26
kernel/cgroup.c | 2
kernel/cpu.c | 9
kernel/exit.c | 20
kernel/fork.c | 199
kernel/futex.c | 29
kernel/hrtimer.c | 122
kernel/irq/Makefile | 1
kernel/irq/autoprobe.c | 1
kernel/irq/chip.c | 50
kernel/irq/handle.c | 80
kernel/irq/internals.h | 6
kernel/irq/manage.c | 348
kernel/irq/migration.c | 14
kernel/irq/pm.c | 81
kernel/irq/proc.c | 129
kernel/irq/spurious.c | 25
kernel/itimer.c | 1
kernel/kprobes.c | 2
kernel/lockdep.c | 162
kernel/lockdep_internals.h | 4
kernel/lockdep_proc.c | 4
kernel/module.c | 81
kernel/notifier.c | 4
kernel/panic.c | 56
kernel/pm_qos_params.c | 25
kernel/posix-cpu-timers.c | 207
kernel/posix-timers.c | 3
kernel/power/poweroff.c | 1
kernel/printk.c | 84
kernel/profile.c | 14
kernel/rcuclassic.c | 10
kernel/rcupdate.c | 20
kernel/rcupreempt-boost.c | 600
kernel/rcupreempt.c | 424
kernel/rcupreempt_trace.c | 14
kernel/rcutorture.c | 138
kernel/relay.c | 14
kernel/rt.c | 528
kernel/rtmutex-debug.c | 111
kernel/rtmutex-debug.h | 12
kernel/rtmutex.c | 2028
kernel/rtmutex_common.h | 83
kernel/rwlock_torture.c | 845
kernel/rwsem.c | 44
kernel/sched.c | 936
kernel/sched_clock.c | 13
kernel/sched_cpupri.c | 174
kernel/sched_cpupri.h | 36
kernel/sched_debug.c | 13
kernel/sched_fair.c | 28
kernel/sched_rt.c | 360
kernel/semaphore.c | 46
kernel/signal.c | 4
kernel/softirq.c | 600
kernel/softlockup.c | 23
kernel/spinlock.c | 264
kernel/srcu.c | 86
kernel/stacktrace.c | 14
kernel/stop_machine.c | 8
kernel/sys.c | 11
kernel/sysctl.c | 106
kernel/time/clockevents.c | 5
kernel/time/clocksource.c | 2
kernel/time/tick-broadcast.c | 2
kernel/time/tick-common.c | 3
kernel/time/tick-internal.h | 2
kernel/time/tick-sched.c | 22
kernel/time/timekeeping.c | 4
kernel/time/timer_stats.c | 6
kernel/timer.c | 226
kernel/trace/Kconfig | 199
kernel/trace/Makefile | 32
kernel/trace/ftrace.c | 1961
kernel/trace/preempt-trace.c | 30
kernel/trace/trace.c | 3989 +
kernel/trace/trace.h | 512
kernel/trace/trace_events.c | 655
kernel/trace/trace_functions.c | 81
kernel/trace/trace_hist.c | 657
kernel/trace/trace_hist.h | 39
kernel/trace/trace_irqsoff.c | 515
kernel/trace/trace_mmiotrace.c | 295
kernel/trace/trace_sched_switch.c | 214
kernel/trace/trace_sched_wakeup.c | 383
kernel/trace/trace_selftest.c | 575
kernel/trace/trace_selftest_dynamic.c | 7
kernel/trace/trace_stack.c | 305
kernel/trace/trace_sysprof.c | 363
kernel/tracepoint.c | 476
kernel/user.c | 8
kernel/workqueue.c | 334
lib/.gitignore | 6
lib/Kconfig.debug | 50
lib/Makefile | 14
lib/dec_and_lock.c | 4
lib/kernel_lock.c | 129
lib/kobject_uevent.c | 176
lib/lock_list.c | 161
lib/locking-selftest.c | 35
lib/percpu_counter.c | 7
lib/plist.c | 70
lib/radix-tree.c | 766
lib/ratelimit.c | 2
lib/rwsem-spinlock.c | 29
lib/rwsem.c | 6
lib/spinlock_debug.c | 64
localversion | 1
mm/bounce.c | 4
mm/filemap.c | 236
mm/highmem.c | 521
mm/memory.c | 65
mm/migrate.c | 28
mm/mmap.c | 10
mm/page-writeback.c | 52
mm/page_alloc.c | 133
mm/quicklist.c | 15
mm/readahead.c | 4
mm/shmem.c | 8
mm/slab.c | 517
mm/swap.c | 93
mm/swap_state.c | 26
mm/swapfile.c | 14
mm/truncate.c | 8
mm/vmscan.c | 24
mm/vmstat.c | 38
net/core/dev.c | 41
net/core/flow.c | 22
net/core/netpoll.c | 62
net/core/sock.c | 7
net/decnet/dn_dev.c | 44
net/ethernet/eth.c | 22
net/ipv4/icmp.c | 5
net/ipv4/netfilter/arp_tables.c | 4
net/ipv4/netfilter/ip_tables.c | 2
net/ipv4/netfilter/ipt_ECN.c | 146
net/ipv4/netfilter/ipt_TTL.c | 102
net/ipv4/netfilter/ipt_ecn.c | 135
net/ipv4/netfilter/ipt_ttl.c | 66
net/ipv4/route.c | 6
net/ipv4/tcp.c | 4
net/ipv4/tcp_ipv4.c | 152
net/ipv6/netfilter/ip6_tables.c | 2
net/ipv6/netfilter/ip6t_HL.c | 100
net/ipv6/netfilter/ip6t_hl.c | 71
net/irda/irttp.c | 1
net/netfilter/nf_conntrack_core.c | 18
net/netfilter/nf_conntrack_ecache.c | 16
net/netfilter/xt_CONNMARK.c | 261
net/netfilter/xt_TCPMSS.c | 340
net/netfilter/xt_connmark.c | 204
net/netfilter/xt_tcpmss.c | 113
net/sched/sch_generic.c | 14
scripts/.gitignore | 9
scripts/Makefile | 6
scripts/Makefile.build | 9
scripts/Makefile.lib | 3
scripts/basic/.gitignore | 3
scripts/genksyms/.gitignore | 4
scripts/kconfig/.gitignore | 19
scripts/kconfig/lxdialog/.gitignore | 4
scripts/mkcompile_h | 4
scripts/mod/.gitignore | 4
scripts/recordmcount.pl | 395
scripts/testlpp.c | 159
security/selinux/hooks.c | 9
sound/arm/Kconfig | 54
sound/arm/Makefile | 11
sound/arm/mxc-alsa-common.h | 68
sound/arm/mxc-alsa-mixer.c | 410
sound/arm/mxc-alsa-pmic.c | 3786 +
sound/arm/mxc-alsa-pmic.h | 110
sound/arm/mxc-alsa-spdif.c | 2264 +
sound/core/pcm_lib.c | 1
sound/oss/.gitignore | 4
sound/soc/Kconfig | 1
sound/soc/Makefile | 4
sound/soc/codecs/Kconfig | 29
sound/soc/codecs/Makefile | 14
sound/soc/codecs/ak4647.c | 811
sound/soc/codecs/ak4647.h | 95
sound/soc/codecs/bluetooth.c | 133
sound/soc/codecs/sgtl5000.c | 1044
sound/soc/codecs/sgtl5000.h | 403
sound/soc/codecs/wm8350.c | 1536
sound/soc/codecs/wm8350.h | 49
sound/soc/codecs/wm8580.c | 1240
sound/soc/codecs/wm8580.h | 45
sound/soc/codecs/wm8903.c | 1880
sound/soc/codecs/wm8903.h | 1453
sound/soc/codecs/wm8960.c | 1804
sound/soc/codecs/wm8960.h | 132
sound/soc/imx/Kconfig | 84
sound/soc/imx/Makefile | 30
sound/soc/imx/imx-3stack-ak4647.c | 527
sound/soc/imx/imx-3stack-bt.c | 335
sound/soc/imx/imx-3stack-bt.h | 23
sound/soc/imx/imx-3stack-sgtl5000.c | 896
sound/soc/imx/imx-3stack-wm8350.c | 658
sound/soc/imx/imx-3stack-wm8580.c | 543
sound/soc/imx/imx-3stack-wm8903.c | 560
sound/soc/imx/imx-esai.c | 950
sound/soc/imx/imx-esai.h | 23
sound/soc/imx/imx-pcm.c | 715
sound/soc/imx/imx-pcm.h | 78
sound/soc/imx/imx-ssi.c | 869
sound/soc/imx/imx-ssi.h | 219
sound/soc/imx/imx31-pcm.h | 72
sound/soc/imx/imx35-pcm.c | 609
sound/soc/imx/imx35-pcm.h | 72
sound/soc/imx/mx35luigi_wm8960.c | 388
sound/soc/imx/mxc_fiq_ssi.S | 129
sound/soc/imx/mxc_pcm.c | 601
sound/soc/imx/mxc_pcm.h | 73
sound/soc/imx/mxc_pcm_fiq.c | 313
sound/soc/imx/mxc_ssi_ksym.c | 19
sound/soc/imx/ssi_fiq.h | 8
sound/soc/soc-core.c | 144
sound/soc/soc-dapm.c | 197
sound/soc/soc-helper.c | 71
usr/.gitignore | 8
2243 files changed, 644909 insertions(+), 8840 deletions(-)
diff -urN linux-2.6.26/.gitignore linux-2.6.26-lab126/.gitignore
--- linux-2.6.26/.gitignore 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,66 +0,0 @@
-#
-# NOTE! Don't add files that are generated in specific
-# subdirectories here. Add them in the ".gitignore" file
-# in that subdirectory instead.
-#
-# NOTE! Please use 'git-ls-files -i --exclude-standard'
-# command after changing this file, to see if there are
-# any tracked files which get ignored after the change.
-#
-# Normal rules
-#
-.*
-*.o
-*.o.*
-*.a
-*.s
-*.ko
-*.so
-*.so.dbg
-*.mod.c
-*.i
-*.lst
-*.symtypes
-*.order
-*.elf
-*.bin
-*.gz
-
-#
-# Top-level generic files
-#
-tags
-TAGS
-vmlinux
-System.map
-Module.markers
-Module.symvers
-!.gitignore
-!.mailmap
-
-#
-# Generated include files
-#
-include/asm
-include/asm-*/asm-offsets.h
-include/config
-include/linux/autoconf.h
-include/linux/compile.h
-include/linux/version.h
-include/linux/utsrelease.h
-include/linux/bounds.h
-
-# stgit generated dirs
-patches-*
-
-# quilt's files
-patches
-series
-
-# cscope files
-cscope.*
-ncscope.*
-
-*.orig
-*~
-\#*#
diff -urN linux-2.6.26/Documentation/DocBook/.gitignore linux-2.6.26-lab126/Documentation/DocBook/.gitignore
--- linux-2.6.26/Documentation/DocBook/.gitignore 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/Documentation/DocBook/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,6 +0,0 @@
-*.xml
-*.ps
-*.pdf
-*.html
-*.9.gz
-*.9
diff -urN linux-2.6.26/Documentation/filesystems/ext4.txt linux-2.6.26-lab126/Documentation/filesystems/ext4.txt
--- linux-2.6.26/Documentation/filesystems/ext4.txt 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/Documentation/filesystems/ext4.txt 2010-08-10 04:13:43.000000000 -0400
@@ -13,72 +13,99 @@
1. Quick usage instructions:
===========================
- - Grab updated e2fsprogs from
- ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/
- This is a patchset on top of e2fsprogs-1.39, which can be found at
+ - Compile and install the latest version of e2fsprogs (as of this
+ writing version 1.41) from:
+
+ http://sourceforge.net/project/showfiles.php?group_id=2406
+
+ or
+
ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/
- - It's still mke2fs -j /dev/hda1
+ or grab the latest git repository from:
+
+ git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
+
+ - Note that it is highly important to install the mke2fs.conf file
+ that comes with the e2fsprogs 1.41.x sources in /etc/mke2fs.conf. If
+ you have edited the /etc/mke2fs.conf file installed on your system,
+ you will need to merge your changes with the version from e2fsprogs
+ 1.41.x.
+
+ - Create a new filesystem using the ext4dev filesystem type:
+
+ # mke2fs -t ext4dev /dev/hda1
+
+ Or configure an existing ext3 filesystem to support extents and set
+ the test_fs flag to indicate that it's ok for an in-development
+ filesystem to touch this filesystem:
- - mount /dev/hda1 /wherever -t ext4dev
+ # tune2fs -O extents -E test_fs /dev/hda1
- - To enable extents,
+ If the filesystem was created with 128 byte inodes, it can be
+ converted to use 256 byte for greater efficiency via:
- mount /dev/hda1 /wherever -t ext4dev -o extents
+ # tune2fs -I 256 /dev/hda1
- - The filesystem is compatible with the ext3 driver until you add a file
- which has extents (ie: `mount -o extents', then create a file).
+ (Note: we currently do not have tools to convert an ext4dev
+ filesystem back to ext3; so please do not do try this on production
+ filesystems.)
- NOTE: The "extents" mount flag is temporary. It will soon go away and
- extents will be enabled by the "-o extents" flag to mke2fs or tune2fs
+ - Mounting:
+
+ # mount -t ext4dev /dev/hda1 /wherever
- When comparing performance with other filesystems, remember that
- ext3/4 by default offers higher data integrity guarantees than most. So
- when comparing with a metadata-only journalling filesystem, use `mount -o
- data=writeback'. And you might as well use `mount -o nobh' too along
- with it. Making the journal larger than the mke2fs default often helps
- performance with metadata-intensive workloads.
+ ext3/4 by default offers higher data integrity guarantees than most.
+ So when comparing with a metadata-only journalling filesystem, such
+ as ext3, use `mount -o data=writeback'. And you might as well use
+ `mount -o nobh' too along with it. Making the journal larger than
+ the mke2fs default often helps performance with metadata-intensive
+ workloads.
2. Features
===========
2.1 Currently available
-* ability to use filesystems > 16TB
+* ability to use filesystems > 16TB (e2fsprogs support not available yet)
* extent format reduces metadata overhead (RAM, IO for access, transactions)
* extent format more robust in face of on-disk corruption due to magics,
* internal redunancy in tree
-
-2.1 Previously available, soon to be enabled by default by "mkefs.ext4":
-
-* dir_index and resize inode will be on by default
-* large inodes will be used by default for fast EAs, nsec timestamps, etc
+* improved file allocation (multi-block alloc)
+* fix 32000 subdirectory limit
+* nsec timestamps for mtime, atime, ctime, create time
+* inode version field on disk (NFSv4, Lustre)
+* reduced e2fsck time via uninit_bg feature
+* journal checksumming for robustness, performance
+* persistent file preallocation (e.g for streaming media, databases)
+* ability to pack bitmaps and inode tables into larger virtual groups via the
+ flex_bg feature
+* large file support
+* Inode allocation using large virtual block groups via flex_bg
+* delayed allocation
+* large block (up to pagesize) support
+* efficent new ordered mode in JBD2 and ext4(avoid using buffer head to force
+ the ordering)
2.2 Candidate features for future inclusion
-There are several under discussion, whether they all make it in is
-partly a function of how much time everyone has to work on them:
+* Online defrag (patches available but not well tested)
+* reduced mke2fs time via lazy itable initialization in conjuction with
+ the uninit_bg feature (capability to do this is available in e2fsprogs
+ but a kernel thread to do lazy zeroing of unused inode table blocks
+ after filesystem is first mounted is required for safety)
+
+There are several others under discussion, whether they all make it in is
+partly a function of how much time everyone has to work on them. Features like
+metadata checksumming have been discussed and planned for a bit but no patches
+exist yet so I'm not sure they're in the near-term roadmap.
-* improved file allocation (multi-block alloc, delayed alloc; basically done)
-* fix 32000 subdirectory limit (patch exists, needs some e2fsck work)
-* nsec timestamps for mtime, atime, ctime, create time (patch exists,
- needs some e2fsck work)
-* inode version field on disk (NFSv4, Lustre; prototype exists)
-* reduced mke2fs/e2fsck time via uninitialized groups (prototype exists)
-* journal checksumming for robustness, performance (prototype exists)
-* persistent file preallocation (e.g for streaming media, databases)
+The big performance win will come with mballoc, delalloc and flex_bg
+grouping of bitmaps and inode tables. Some test results available here:
-Features like metadata checksumming have been discussed and planned for
-a bit but no patches exist yet so I'm not sure they're in the near-term
-roadmap.
-
-The big performance win will come with mballoc and delalloc. CFS has
-been using mballoc for a few years already with Lustre, and IBM + Bull
-did a lot of benchmarking on it. The reason it isn't in the first set of
-patches is partly a manageability issue, and partly because it doesn't
-directly affect the on-disk format (outside of much better allocation)
-so it isn't critical to get into the first round of changes. I believe
-Alex is working on a new set of patches right now.
+ - http://www.bullopensource.org/ext4/20080530/ffsb-write-2.6.26-rc2.html
+ - http://www.bullopensource.org/ext4/20080530/ffsb-readwrite-2.6.26-rc2.html
3. Options
==========
@@ -222,9 +249,11 @@
to use for allocation size and alignment. For RAID5/6
systems this should be the number of data
disks * RAID chunk size in file system blocks.
-
+delalloc (*) Deferring block allocation until write-out time.
+nodelalloc Disable delayed allocation. Blocks are allocation
+ when data is copied from user to page cache.
Data Mode
----------
+=========
There are 3 different data modes:
* writeback mode
@@ -236,10 +265,10 @@
* ordered mode
In data=ordered mode, ext4 only officially journals metadata, but it logically
-groups metadata and data blocks into a single unit called a transaction. When
-it's time to write the new metadata out to disk, the associated data blocks
-are written first. In general, this mode performs slightly slower than
-writeback but significantly faster than journal mode.
+groups metadata information related to data changes with the data blocks into a
+single unit called a transaction. When it's time to write the new metadata
+out to disk, the associated data blocks are written first. In general,
+this mode performs slightly slower than writeback but significantly faster than journal mode.
* journal mode
data=journal mode provides full data and metadata journaling. All new data is
@@ -247,7 +276,8 @@
In the event of a crash, the journal can be replayed, bringing both data and
metadata into a consistent state. This mode is the slowest except when data
needs to be read from and written to disk at the same time where it
-outperforms all others modes.
+outperforms all others modes. Curently ext4 does not have delayed
+allocation support if this data journalling mode is selected.
References
==========
@@ -256,7 +286,8 @@
programs: http://e2fsprogs.sourceforge.net/
- http://ext2resize.sourceforge.net
useful links: http://fedoraproject.org/wiki/ext3-devel
http://www.bullopensource.org/ext4/
+ http://ext4.wiki.kernel.org/index.php/Main_Page
+ http://fedoraproject.org/wiki/Features/Ext4
diff -urN linux-2.6.26/Documentation/filesystems/proc.txt linux-2.6.26-lab126/Documentation/filesystems/proc.txt
--- linux-2.6.26/Documentation/filesystems/proc.txt 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/Documentation/filesystems/proc.txt 2010-08-10 04:13:43.000000000 -0400
@@ -288,6 +288,7 @@
rtc Real time clock
scsi SCSI info (see text)
slabinfo Slab pool info
+ softirqs softirq usage
stat Overall statistics
swaps Swap space utilization
sys See chapter 2
@@ -550,6 +551,22 @@
VmallocUsed: amount of vmalloc area which is used
VmallocChunk: largest contigious block of vmalloc area which is free
+..............................................................................
+softirqs:
+
+Provides counts of softirq handlers serviced since boot time.
+
+> cat /proc/softirqs
+ CPU0 CPU1 CPU2 CPU3
+ HI: 0 0 0 0
+ TIMER: 27166 27120 27097 27034
+ NET_TX: 0 0 0 17
+ NET_RX: 42 0 0 39
+ BLOCK: 0 0 107 1121
+ TASKLET: 0 0 0 290
+ SCHED: 27035 26983 26971 26746
+ HRTIMER: 0 0 0 0
+ RCU: 1678 1769 2178 2250
1.3 IDE devices in /proc/ide
----------------------------
@@ -837,6 +854,7 @@
processes 2915
procs_running 1
procs_blocked 0
+ softirq 183433 0 21755 12 39 1137 231 21459 2263
The very first "cpu" line aggregates the numbers in all of the other "cpuN"
lines. These numbers identify the amount of time the CPU has spent performing
@@ -872,6 +890,11 @@
The "procs_blocked" line gives the number of processes currently blocked,
waiting for I/O to complete.
+The "softirq" line gives counts of softirqs serviced since boot time, for each
+of the possible system softirqs. The first column is the total of all
+softirqs serviced; each subsequent column is the total for that particular
+softirq.
+
1.9 Ext4 file system parameters
------------------------------
Ext4 file system have one directory per partition under /proc/fs/ext4/
diff -urN linux-2.6.26/Documentation/filesystems/ubifs.txt linux-2.6.26-lab126/Documentation/filesystems/ubifs.txt
--- linux-2.6.26/Documentation/filesystems/ubifs.txt 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/Documentation/filesystems/ubifs.txt 2010-08-10 04:13:43.000000000 -0400
@@ -0,0 +1,173 @@
+Introduction
+=============
+
+UBIFS file-system stands for UBI File System. UBI stands for "Unsorted
+Block Images". UBIFS is a flash file system, which means it is designed
+to work with flash devices. It is important to understand, that UBIFS
+is completely different to any traditional file-system in Linux, like
+Ext2, XFS, JFS, etc. UBIFS represents a separate class of file-systems
+which work with MTD devices, not block devices. The other Linux
+file-system of this class is JFFS2.
+
+To make it more clear, here is a small comparison of MTD devices and
+block devices.
+
+1 MTD devices represent flash devices and they consist of eraseblocks of
+ rather large size, typically about 128KiB. Block devices consist of
+ small blocks, typically 512 bytes.
+2 MTD devices support 3 main operations - read from some offset within an
+ eraseblock, write to some offset within an eraseblock, and erase a whole
+ eraseblock. Block devices support 2 main operations - read a whole
+ block and write a whole block.
+3 The whole eraseblock has to be erased before it becomes possible to
+ re-write its contents. Blocks may be just re-written.
+4 Eraseblocks become worn out after some number of erase cycles -
+ typically 100K-1G for SLC NAND and NOR flashes, and 1K-10K for MLC
+ NAND flashes. Blocks do not have the wear-out property.
+5 Eraseblocks may become bad (only on NAND flashes) and software should
+ deal with this. Blocks on hard drives typically do not become bad,
+ because hardware has mechanisms to substitute bad blocks, at least in
+ modern LBA disks.
+
+It should be quite obvious why UBIFS is very different to traditional
+file-systems.
+
+UBIFS works on top of UBI. UBI is a separate software layer which may be
+found in drivers/mtd/ubi. UBI is basically a volume management and
+wear-leveling layer. It provides so called UBI volumes which is a higher
+level abstraction than a MTD device. The programming model of UBI devices
+is very similar to MTD devices - they still consist of large eraseblocks,
+they have read/write/erase operations, but UBI devices are devoid of
+limitations like wear and bad blocks (items 4 and 5 in the above list).
+
+In a sense, UBIFS is a next generation of JFFS2 file-system, but it is
+very different and incompatible to JFFS2. The following are the main
+differences.
+
+* JFFS2 works on top of MTD devices, UBIFS depends on UBI and works on
+ top of UBI volumes.
+* JFFS2 does not have on-media index and has to build it while mounting,
+ which requires full media scan. UBIFS maintains the FS indexing
+ information on the flash media and does not require full media scan,
+ so it mounts many times faster than JFFS2.
+* JFFS2 is a write-through file-system, while UBIFS supports write-back,
+ which makes UBIFS much faster on writes.
+
+Similarly to JFFS2, UBIFS supports on-the-flight compression which makes
+it possible to fit quite a lot of data to the flash.
+
+Similarly to JFFS2, UBIFS is tolerant of unclean reboots and power-cuts.
+It does not need stuff like ckfs.ext2. UBIFS automatically replays its
+journal and recovers from crashes, ensuring that the on-flash data
+structures are consistent.
+
+UBIFS scales logarithmically (most of the data structures it uses are
+trees), so the mount time and memory consumption do not linearly depend
+on the flash size, like in case of JFFS2. This is because UBIFS
+maintains the FS index on the flash media. However, UBIFS depends on
+UBI, which scales linearly. So overall UBI/UBIFS stack scales linearly.
+Nevertheless, UBI/UBIFS scales considerably better than JFFS2.
+
+The authors of UBIFS believe, that it is possible to develop UBI2 which
+would scale logarithmically as well. UBI2 would support the same API as UBI,
+but it would be binary incompatible to UBI. So UBIFS would not need to be
+changed to use UBI2
+
+
+Mount options
+=============
+
+(*) == default.
+
+norm_unmount (*) commit on unmount; the journal is committed
+ when the file-system is unmounted so that the
+ next mount does not have to replay the journal
+ and it becomes very fast;
+fast_unmount do not commit on unmount; this option makes
+ unmount faster, but the next mount slower
+ because of the need to replay the journal.
+bulk_read read more in one go to take advantage of flash
+ media that read faster sequentially
+no_bulk_read (*) do not bulk-read
+no_chk_data_crc skip checking of CRCs on data nodes in order to
+ improve read performance. Use this option only
+ if the flash media is highly reliable. The effect
+ of this option is that corruption of the contents
+ of a file can go unnoticed.
+chk_data_crc (*) do not skip checking CRCs on data nodes
+
+
+Quick usage instructions
+========================
+
+The UBI volume to mount is specified using "ubiX_Y" or "ubiX:NAME" syntax,
+where "X" is UBI device number, "Y" is UBI volume number, and "NAME" is
+UBI volume name.
+
+Mount volume 0 on UBI device 0 to /mnt/ubifs:
+$ mount -t ubifs ubi0_0 /mnt/ubifs
+
+Mount "rootfs" volume of UBI device 0 to /mnt/ubifs ("rootfs" is volume
+name):
+$ mount -t ubifs ubi0:rootfs /mnt/ubifs
+
+The following is an example of the kernel boot arguments to attach mtd0
+to UBI and mount volume "rootfs":
+ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs
+
+
+Module Parameters for Debugging
+===============================
+
+When UBIFS has been compiled with debugging enabled, there are 3 module
+parameters that are available to control aspects of testing and debugging.
+The parameters are unsigned integers where each bit controls an option.
+The parameters are:
+
+debug_msgs Selects which debug messages to display, as follows:
+
+ Message Type Flag value
+
+ General messages 1
+ Journal messages 2
+ Mount messages 4
+ Commit messages 8
+ LEB search messages 16
+ Budgeting messages 32
+ Garbage collection messages 64
+ Tree Node Cache (TNC) messages 128
+ LEB properties (lprops) messages 256
+ Input/output messages 512
+ Log messages 1024
+ Scan messages 2048
+ Recovery messages 4096
+
+debug_chks Selects extra checks that UBIFS can do while running:
+
+ Check Flag value
+
+ General checks 1
+ Check Tree Node Cache (TNC) 2
+ Check indexing tree size 4
+ Check orphan area 8
+ Check old indexing tree 16
+ Check LEB properties (lprops) 32
+ Check leaf nodes and inodes 64
+
+debug_tsts Selects a mode of testing, as follows:
+
+ Test mode Flag value
+
+ Force in-the-gaps method 2
+ Failure mode for recovery testing 4
+
+For example, set debug_msgs to 5 to display General messages and Mount
+messages.
+
+
+References
+==========
+
+UBIFS documentation and FAQ/HOWTO at the MTD web site:
+http://www.linux-mtd.infradead.org/doc/ubifs.html
+http://www.linux-mtd.infradead.org/faq/ubifs.html
diff -urN linux-2.6.26/MAINTAINERS linux-2.6.26-lab126/MAINTAINERS
--- linux-2.6.26/MAINTAINERS 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/MAINTAINERS 2010-08-10 04:17:28.000000000 -0400
@@ -2307,6 +2307,16 @@
W: http://www.linux-mtd.infradead.org/doc/jffs2.html
S: Maintained
+UBI FILE SYSTEM (UBIFS)
+P: Artem Bityutskiy
+M: dedekind@infradead.org
+P: Adrian Hunter
+M: ext-adrian.hunter@nokia.com
+L: linux-mtd@lists.infradead.org
+T: git git://git.infradead.org/~dedekind/ubifs-2.6.git
+W: http://www.linux-mtd.infradead.org/doc/ubifs.html
+S: Maintained
+
JFS FILESYSTEM
P: Dave Kleikamp
M: shaggy@austin.ibm.com
@@ -2751,7 +2761,7 @@
M: dedekind@infradead.org
W: http://www.linux-mtd.infradead.org/
L: linux-mtd@lists.infradead.org
-T: git git://git.infradead.org/~dedekind/ubi-2.6.git
+T: git git://git.infradead.org/ubi-2.6.git
S: Maintained
MICROTEK X6 SCANNER
diff -urN linux-2.6.26/Makefile linux-2.6.26-lab126/Makefile
--- linux-2.6.26/Makefile 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/Makefile 2010-08-10 04:17:28.000000000 -0400
@@ -336,8 +336,10 @@
KBUILD_AFLAGS := -D__ASSEMBLY__
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
-KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
-KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+#KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
+#KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+KERNELRELEASE = 2.6.26-rt-lab126
+KERNELVERSION = 2.6.26-rt-lab126
export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
@@ -528,6 +530,10 @@
KBUILD_AFLAGS += -gdwarf-2
endif
+ifdef CONFIG_FTRACE
+KBUILD_CFLAGS += -pg
+endif
+
# We trigger additional mismatches with less inlining
ifdef CONFIG_DEBUG_SECTION_MISMATCH
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
diff -urN linux-2.6.26/arch/.gitignore linux-2.6.26-lab126/arch/.gitignore
--- linux-2.6.26/arch/.gitignore 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,2 +0,0 @@
-i386
-x86_64
diff -urN linux-2.6.26/arch/Kconfig linux-2.6.26-lab126/arch/Kconfig
--- linux-2.6.26/arch/Kconfig 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/Kconfig 2010-08-10 04:15:13.000000000 -0400
@@ -16,6 +16,11 @@
config HAVE_OPROFILE
def_bool n
+config PROFILE_NMI
+ bool
+ depends on OPROFILE
+ default y
+
config KPROBES
bool "Kprobes"
depends on KALLSYMS && MODULES
diff -urN linux-2.6.26/arch/arm/Kconfig linux-2.6.26-lab126/arch/arm/Kconfig
--- linux-2.6.26/arch/arm/Kconfig 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/Kconfig 2010-08-10 04:14:16.000000000 -0400
@@ -12,8 +12,11 @@
select RTC_LIB
select SYS_SUPPORTS_APM_EMULATION
select HAVE_OPROFILE
+ select HAVE_ARCH_KGDB
select HAVE_KPROBES if (!XIP_KERNEL)
select HAVE_KRETPROBES if (HAVE_KPROBES)
+ select HAVE_FTRACE if (!XIP_KERNEL)
+ select HAVE_DYNAMIC_FTRACE if (HAVE_FTRACE)
help
The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and
@@ -33,6 +36,10 @@
bool
default n
+config GENERIC_CMOS_UPDATE
+ bool
+ default y
+
config GENERIC_CLOCKEVENTS
bool
default n
@@ -42,6 +49,10 @@
depends on GENERIC_CLOCKEVENTS
default y if SMP && !LOCAL_TIMERS
+config STACKTRACE_SUPPORT
+ bool
+ default y
+
config MMU
bool
default y
@@ -368,6 +379,8 @@
config ARCH_MXC
bool "Freescale MXC/iMX-based"
select ARCH_MTD_XIP
+ select GENERIC_TIME
+ select GENERIC_CLOCKEVENTS
help
Support for Freescale MXC/iMX-based family of processors
@@ -690,18 +703,7 @@
accounting to be spread across the timer interval, preventing a
"thundering herd" at every timer tick.
-config PREEMPT
- bool "Preemptible Kernel (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- help
- This option reduces the latency of the kernel when reacting to
- real-time or interactive events by allowing a low priority process to
- be preempted even if it is in kernel mode executing a system call.
- This allows applications to run more reliably even when the system is
- under load.
-
- Say Y here if you are building a kernel for a desktop, embedded
- or real-time system. Say N if you are unsure.
+source kernel/Kconfig.preempt
config NO_IDLE_HZ
bool "Dynamic tick timer"
@@ -795,7 +797,7 @@
ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
ARCH_AT91 || MACH_TRIZEPS4 || ARCH_DAVINCI || \
- ARCH_KS8695 || MACH_RD88F5182
+ ARCH_KS8695 || MACH_RD88F5182 || ARCH_MXC
help
If you say Y here, the LEDs on your machine will be used
to provide useful information about your current system status.
@@ -954,7 +956,7 @@
endmenu
-if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA)
+if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA || ARCH_MXC)
menu "CPU Frequency scaling"
@@ -996,6 +998,12 @@
default y
select CPU_FREQ_DEFAULT_GOV_USERSPACE
+config CPU_FREQ_IMX
+ tristate "CPUfreq driver for i.MX CPUs"
+ depends on ARCH_MXC && CPU_FREQ && REGULATOR
+ help
+ This enables the CPUfreq driver for i.MX CPUs.
+
endmenu
endif
@@ -1105,6 +1113,8 @@
source "drivers/mtd/Kconfig"
endif
+source "drivers/regulator/Kconfig"
+
source "drivers/parport/Kconfig"
source "drivers/pnp/Kconfig"
@@ -1141,6 +1151,8 @@
source "drivers/i2c/Kconfig"
+source "drivers/i2c-slave/Kconfig"
+
source "drivers/spi/Kconfig"
source "drivers/gpio/Kconfig"
@@ -1181,6 +1193,10 @@
source "drivers/uio/Kconfig"
+if ARCH_MXC
+source "drivers/mxc/Kconfig"
+endif
+
endmenu
source "fs/Kconfig"
diff -urN linux-2.6.26/arch/arm/Kconfig.debug linux-2.6.26-lab126/arch/arm/Kconfig.debug
--- linux-2.6.26/arch/arm/Kconfig.debug 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/Kconfig.debug 2010-08-10 04:14:16.000000000 -0400
@@ -59,6 +59,14 @@
in the kernel. This is helpful if you are debugging code that
executes before the console is initialized.
+config DEBUG_LL_EARLY_CONSOLE
+ bool "Kernel early console"
+ depends on DEBUG_LL
+ help
+ Say Y here if you want to have an early console using the Kernel
+ low-level debugging functions. Add earlyconsole to your kernel
+ parameters to enable this console.
+
config DEBUG_ICEDCC
bool "Kernel low-level debugging via EmbeddedICE DCC channel"
depends on DEBUG_LL
diff -urN linux-2.6.26/arch/arm/Makefile linux-2.6.26-lab126/arch/arm/Makefile
--- linux-2.6.26/arch/arm/Makefile 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/Makefile 2010-08-10 04:14:16.000000000 -0400
@@ -138,6 +138,12 @@
machine-$(CONFIG_ARCH_KS8695) := ks8695
incdir-$(CONFIG_ARCH_MXC) := mxc
machine-$(CONFIG_ARCH_MX3) := mx3
+ machine-$(CONFIG_ARCH_MX35) := mx35
+ machine-$(CONFIG_ARCH_MX37) := mx37
+ machine-$(CONFIG_ARCH_MX51) := mx51
+ machine-$(CONFIG_ARCH_MX27) := mx27
+ machine-$(CONFIG_ARCH_MX25) := mx25
+ machine-$(CONFIG_ARCH_MX21) := mx21
machine-$(CONFIG_ARCH_ORION5X) := orion5x
machine-$(CONFIG_ARCH_MSM7X00A) := msm
diff -urN linux-2.6.26/arch/arm/boot/.gitignore linux-2.6.26-lab126/arch/arm/boot/.gitignore
--- linux-2.6.26/arch/arm/boot/.gitignore 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/boot/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,5 +0,0 @@
-Image
-zImage
-xipImage
-bootpImage
-uImage
diff -urN linux-2.6.26/arch/arm/boot/compressed/.gitignore linux-2.6.26-lab126/arch/arm/boot/compressed/.gitignore
--- linux-2.6.26/arch/arm/boot/compressed/.gitignore 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/boot/compressed/.gitignore 1969-12-31 19:00:00.000000000 -0500
@@ -1,2 +0,0 @@
-piggy.gz
-font.c
diff -urN linux-2.6.26/arch/arm/boot/compressed/Makefile linux-2.6.26-lab126/arch/arm/boot/compressed/Makefile
--- linux-2.6.26/arch/arm/boot/compressed/Makefile 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/boot/compressed/Makefile 2010-08-10 04:14:03.000000000 -0400
@@ -69,6 +69,12 @@
targets := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \
head.o misc.o $(OBJS)
+
+ifeq ($(CONFIG_FTRACE),y)
+ORIG_CFLAGS := $(KBUILD_CFLAGS)
+KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
+endif
+
EXTRA_CFLAGS := -fpic -fno-builtin
EXTRA_AFLAGS :=
diff -urN linux-2.6.26/arch/arm/boot/compressed/head.S linux-2.6.26-lab126/arch/arm/boot/compressed/head.S
--- linux-2.6.26/arch/arm/boot/compressed/head.S 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/boot/compressed/head.S 2010-08-10 04:14:03.000000000 -0400
@@ -711,6 +711,9 @@
__armv7_mmu_cache_off:
mrc p15, 0, r0, c1, c0
bic r0, r0, #0x000d
+#if defined(CONFIG_ARCH_MX51)
+ bic r0, r0, #0x1000
+#endif
mcr p15, 0, r0, c1, c0 @ turn MMU and cache off
mov r12, lr
bl __armv7_mmu_cache_flush
@@ -941,6 +944,19 @@
#endif
.ltorg
+#ifdef CONFIG_MCOUNT
+/* CONFIG_MCOUNT causes boot header to be built with -pg requiring this
+ * trampoline
+ */
+ .text
+ .align 0
+ .type mcount %function
+ .global mcount
+mcount:
+ mov pc, lr @ just return
+#endif
+
+
reloc_end:
.align
diff -urN linux-2.6.26/arch/arm/boot/compressed/vmlinux.lds linux-2.6.26-lab126/arch/arm/boot/compressed/vmlinux.lds
--- linux-2.6.26/arch/arm/boot/compressed/vmlinux.lds 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/boot/compressed/vmlinux.lds 2010-08-10 04:14:03.000000000 -0400
@@ -0,0 +1,56 @@
+/*
+ * linux/arch/arm/boot/compressed/vmlinux.lds.in
+ *
+ * Copyright (C) 2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+ . = 0;
+ _text = .;
+
+ .text : {
+ _start = .;
+ *(.start)
+ *(.text)
+ *(.text.*)
+ *(.fixup)
+ *(.gnu.warning)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.piggydata)
+ . = ALIGN(4);
+ }
+
+ _etext = .;
+
+ _got_start = .;
+ .got : { *(.got) }
+ _got_end = .;
+ .got.plt : { *(.got.plt) }
+ .data : { *(.data) }
+ _edata = .;
+
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss : { *(.bss) }
+ _end = .;
+
+ .stack (NOLOAD) : { *(.stack) }
+
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+}
+
diff -urN linux-2.6.26/arch/arm/common/time-acorn.c linux-2.6.26-lab126/arch/arm/common/time-acorn.c
--- linux-2.6.26/arch/arm/common/time-acorn.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/common/time-acorn.c 2010-08-10 04:14:12.000000000 -0400
@@ -75,7 +75,7 @@
static struct irqaction ioc_timer_irq = {
.name = "timer",
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NODELAY,
.handler = ioc_timer_interrupt
};
diff -urN linux-2.6.26/arch/arm/kernel/Makefile linux-2.6.26-lab126/arch/arm/kernel/Makefile
--- linux-2.6.26/arch/arm/kernel/Makefile 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/Makefile 2010-08-10 04:14:06.000000000 -0400
@@ -4,6 +4,10 @@
AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
+ifdef CONFIG_DYNAMIC_FTRACE
+CFLAGS_REMOVE_ftrace.o = -pg
+endif
+
# Object file lists.
obj-y := compat.o entry-armv.o entry-common.o irq.o \
@@ -18,11 +22,13 @@
obj-$(CONFIG_ISA_DMA) += dma-isa.o
obj-$(CONFIG_PCI) += bios32.o isa.o
obj-$(CONFIG_SMP) += smp.o
+obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o
obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
obj-$(CONFIG_KPROBES) += kprobes.o kprobes-decode.o
obj-$(CONFIG_ATAGS_PROC) += atags.o
obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o
obj-$(CONFIG_ARM_THUMBEE) += thumbee.o
+obj-$(CONFIG_KGDB) += kgdb.o
obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o
AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312
@@ -38,5 +44,6 @@
head-y := head$(MMUEXT).o
obj-$(CONFIG_DEBUG_LL) += debug.o
+obj-$(CONFIG_DEBUG_LL_EARLY_CONSOLE) += early_console.o
extra-y := $(head-y) init_task.o vmlinux.lds
diff -urN linux-2.6.26/arch/arm/kernel/armksyms.c linux-2.6.26-lab126/arch/arm/kernel/armksyms.c
--- linux-2.6.26/arch/arm/kernel/armksyms.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/armksyms.c 2010-08-10 04:14:06.000000000 -0400
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
/*
* libgcc functions - functions that are used internally by the
@@ -181,3 +182,7 @@
#endif
EXPORT_SYMBOL(copy_page);
+
+#ifdef CONFIG_FTRACE
+EXPORT_SYMBOL(mcount);
+#endif
diff -urN linux-2.6.26/arch/arm/kernel/dma.c linux-2.6.26-lab126/arch/arm/kernel/dma.c
--- linux-2.6.26/arch/arm/kernel/dma.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/dma.c 2010-08-10 04:14:06.000000000 -0400
@@ -20,7 +20,7 @@
#include
-DEFINE_SPINLOCK(dma_spin_lock);
+DEFINE_RAW_SPINLOCK(dma_spin_lock);
EXPORT_SYMBOL(dma_spin_lock);
static dma_t dma_chan[MAX_DMA_CHANNELS];
diff -urN linux-2.6.26/arch/arm/kernel/early_console.c linux-2.6.26-lab126/arch/arm/kernel/early_console.c
--- linux-2.6.26/arch/arm/kernel/early_console.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/kernel/early_console.c 2010-08-10 04:14:06.000000000 -0400
@@ -0,0 +1,40 @@
+/*
+ * linux/arch/arm/kernel/early_printk.c
+ *
+ * Copyright 2008-2009 Amazon.com Technologies Inc., All Rights Reserved.
+ * Manish Lachwani (lachwani@lab126.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include
+#include
+
+extern void printch(int);
+
+static void early_console_write(struct console *con, const char *s, unsigned n)
+{
+ while (*s && n-- > 0) {
+ if (*s == '\n')
+ printch('\r');
+ printch(*s);
+ s++;
+ }
+}
+
+static struct console early_serial_console = {
+ .name = "earlycons",
+ .write = early_console_write,
+ .flags = CON_PRINTBUFFER | CON_BOOT,
+ .index = -1,
+};
+
+static int __init setup_early_console(char *buf)
+{
+ register_console(&early_serial_console);
+ return 0;
+}
+
+early_param("earlyconsole", setup_early_console);
diff -urN linux-2.6.26/arch/arm/kernel/entry-common.S linux-2.6.26-lab126/arch/arm/kernel/entry-common.S
--- linux-2.6.26/arch/arm/kernel/entry-common.S 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/entry-common.S 2010-08-10 04:14:06.000000000 -0400
@@ -3,12 +3,15 @@
*
* Copyright (C) 2000 Russell King
*
+ * FUNCTION_TRACE/mcount support (C) 2005 Timesys john.cooper@timesys.com
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include
+#include
#include
#include "entry-header.S"
@@ -54,7 +57,8 @@
b ret_slow_syscall @ Check work again
work_resched:
- bl schedule
+ bl __schedule
+
/*
* "slow" syscall return path. "why" tells us if this was a real syscall.
*/
@@ -99,6 +103,56 @@
#undef CALL
#define CALL(x) .long x
+#ifdef CONFIG_FTRACE
+#ifdef CONFIG_DYNAMIC_FTRACE
+ENTRY(mcount)
+ stmdb sp!, {r0-r3, lr}
+ mov r0, lr
+ sub r0, r0, #MCOUNT_INSN_SIZE
+
+ .globl mcount_call
+mcount_call:
+ bl ftrace_stub
+ ldmia sp!, {r0-r3, pc}
+
+ENTRY(ftrace_caller)
+ stmdb sp!, {r0-r3, lr}
+ ldr r1, [fp, #-4]
+ mov r0, lr
+ sub r0, r0, #MCOUNT_INSN_SIZE
+
+ .globl ftrace_call
+ftrace_call:
+ bl ftrace_stub
+ ldmia sp!, {r0-r3, pc}
+
+#else
+
+ENTRY(mcount)
+ stmdb sp!, {r0-r3, lr}
+ ldr r0, =ftrace_trace_function
+ ldr r2, [r0]
+ adr r0, ftrace_stub
+ cmp r0, r2
+ bne trace
+ ldmia sp!, {r0-r3, pc}
+
+trace:
+ ldr r1, [fp, #-4]
+ mov r0, lr
+ sub r0, r0, #MCOUNT_INSN_SIZE
+ mov lr, pc
+ mov pc, r2
+ ldmia sp!, {r0-r3, pc}
+
+#endif /* CONFIG_DYNAMIC_FTRACE */
+
+ .globl ftrace_stub
+ftrace_stub:
+ mov pc, lr
+
+#endif /* CONFIG_FTRACE */
+
/*=============================================================================
* SWI handler
*-----------------------------------------------------------------------------
@@ -399,6 +453,114 @@
#include "calls.S"
#undef ABI
#undef OBSOLETE
+#endif
+
+#ifdef CONFIG_FRAME_POINTER
+
+#ifdef CONFIG_MCOUNT
+/*
+ * At the point where we are in mcount() we maintain the
+ * frame of the prologue code and keep the call to mcount()
+ * out of the stack frame list:
+
+ saved pc <---\ caller of instrumented routine
+ saved lr |
+ ip/prev_sp |
+ fp -----^ |
+ : |
+ |
+ -> saved pc | instrumented routine
+ | saved lr |
+ | ip/prev_sp |
+ | fp ---------/
+ | :
+ |
+ | mcount
+ | saved pc
+ | saved lr
+ | ip/prev sp
+ -- fp
+ r3
+ r2
+ r1
+ sp-> r0
+ :
+ */
+
+ .text
+ .align 0
+ .type mcount %function
+ .global mcount
+
+/* gcc -pg generated FUNCTION_PROLOGUE references mcount()
+ * and has already created the stack frame invocation for
+ * the routine we have been called to instrument. We create
+ * a complete frame nevertheless, as we want to use the same
+ * call to mcount() from c code.
+ */
+mcount:
+
+ ldr ip, =mcount_enabled @ leave early, if disabled
+ ldr ip, [ip]
+ cmp ip, #0
+ moveq pc, lr
+
+ mov ip, sp
+ stmdb sp!, {r0 - r3, fp, ip, lr, pc} @ create stack frame
+
+ mov r2, =mcount_trace_function
+
+ ldr r1, [fp, #-4] @ get lr (the return address
+ @ of the caller of the
+ @ instrumented function)
+ mov r0, lr @ get lr - (the return address
+ @ of the instrumented function)
+
+ sub fp, ip, #4 @ point fp at this frame
+
+ bl r2
+1:
+ ldmdb fp, {r0 - r3, fp, sp, pc} @ pop entry frame and return
+
+#endif
+
+/* ARM replacement for unsupported gcc __builtin_return_address(n)
+ * where 0 < n. n == 0 is supported here as well.
+ *
+ * Walk up the stack frame until the desired frame is found or a NULL
+ * fp is encountered, return NULL in the latter case.
+ *
+ * Note: it is possible under code optimization for the stack invocation
+ * of an ancestor function (level N) to be removed before calling a
+ * descendant function (level N+1). No easy means is available to deduce
+ * this scenario with the result being [for example] caller_addr(0) when
+ * called from level N+1 returning level N-1 rather than the expected
+ * level N. This optimization issue appears isolated to the case of
+ * a call to a level N+1 routine made at the tail end of a level N
+ * routine -- the level N frame is deleted and a simple branch is made
+ * to the level N+1 routine.
+ */
+
+ .text
+ .align 0
+ .type arm_return_addr %function
+ .global arm_return_addr
+
+arm_return_addr:
+ mov ip, r0
+ mov r0, fp
+3:
+ cmp r0, #0
+ beq 1f @ frame list hit end, bail
+ cmp ip, #0
+ beq 2f @ reached desired frame
+ ldr r0, [r0, #-12] @ else continue, get next fp
+ sub ip, ip, #1
+ b 3b
+2:
+ ldr r0, [r0, #-4] @ get target return address
+1:
+ mov pc, lr
#endif
diff -urN linux-2.6.26/arch/arm/kernel/fiq.c linux-2.6.26-lab126/arch/arm/kernel/fiq.c
--- linux-2.6.26/arch/arm/kernel/fiq.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/fiq.c 2010-08-10 04:14:06.000000000 -0400
@@ -89,7 +89,7 @@
* disable irqs for the duration. Note - these functions are almost
* entirely coded in assembly.
*/
-void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
+void notrace __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
{
register unsigned long tmp;
asm volatile (
@@ -107,7 +107,7 @@
: "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
}
-void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
+void notrace __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
{
register unsigned long tmp;
asm volatile (
diff -urN linux-2.6.26/arch/arm/kernel/ftrace.c linux-2.6.26-lab126/arch/arm/kernel/ftrace.c
--- linux-2.6.26/arch/arm/kernel/ftrace.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/kernel/ftrace.c 2010-08-10 04:14:06.000000000 -0400
@@ -0,0 +1,116 @@
+/*
+ * Dynamic function tracing support.
+ *
+ * Copyright (C) 2008 Abhishek Sagar
+ *
+ * For licencing details, see COPYING.
+ *
+ * Defines low-level handling of mcount calls when the kernel
+ * is compiled with the -pg flag. When using dynamic ftrace, the
+ * mcount call-sites get patched lazily with NOP till they are
+ * enabled. All code mutation routines here take effect atomically.
+ */
+
+#include
+
+#include
+#include
+
+#define PC_OFFSET 8
+#define BL_OPCODE 0xeb000000
+#define BL_OFFSET_MASK 0x00ffffff
+
+static unsigned long bl_insn;
+static const unsigned long NOP = 0xe1a00000; /* mov r0, r0 */
+
+unsigned char *ftrace_nop_replace(void)
+{
+ return (char *)&NOP;
+}
+
+/* construct a branch (BL) instruction to addr */
+unsigned char *ftrace_call_replace(unsigned long pc, unsigned long addr)
+{
+ long offset;
+
+ offset = (long)addr - (long)(pc + PC_OFFSET);
+ if (unlikely(offset < -33554432 || offset > 33554428)) {
+ /* Can't generate branches that far (from ARM ARM). Ftrace
+ * doesn't generate branches outside of kernel text.
+ */
+ WARN_ON_ONCE(1);
+ return NULL;
+ }
+ offset = (offset >> 2) & BL_OFFSET_MASK;
+ bl_insn = BL_OPCODE | offset;
+ return (unsigned char *)&bl_insn;
+}
+
+int ftrace_modify_code(unsigned long pc, unsigned char *old_code,
+ unsigned char *new_code)
+{
+ unsigned long err = 0, replaced = 0, old, new;
+
+ old = *(unsigned long *)old_code;
+ new = *(unsigned long *)new_code;
+
+ __asm__ __volatile__ (
+ "1: ldr %1, [%2] \n"
+ " cmp %1, %4 \n"
+ "2: streq %3, [%2] \n"
+ " cmpne %1, %3 \n"
+ " movne %0, #2 \n"
+ "3:\n"
+
+ ".section .fixup, \"ax\"\n"
+ "4: mov %0, #1 \n"
+ " b 3b \n"
+ ".previous\n"
+
+ ".section __ex_table, \"a\"\n"
+ " .long 1b, 4b \n"
+ " .long 2b, 4b \n"
+ ".previous\n"
+
+ : "=r"(err), "=r"(replaced)
+ : "r"(pc), "r"(new), "r"(old), "0"(err), "1"(replaced)
+ : "memory");
+
+ if (!err && (replaced == old))
+ flush_icache_range(pc, pc + MCOUNT_INSN_SIZE);
+
+ return err;
+}
+
+int ftrace_update_ftrace_func(ftrace_func_t func)
+{
+ int ret;
+ unsigned long pc, old;
+ unsigned char *new;
+
+ pc = (unsigned long)&ftrace_call;
+ memcpy(&old, &ftrace_call, MCOUNT_INSN_SIZE);
+ new = ftrace_call_replace(pc, (unsigned long)func);
+ ret = ftrace_modify_code(pc, (unsigned char *)&old, new);
+ return ret;
+}
+
+int ftrace_mcount_set(unsigned long *data)
+{
+ unsigned long pc, old;
+ unsigned long *addr = data;
+ unsigned char *new;
+
+ pc = (unsigned long)&mcount_call;
+ memcpy(&old, &mcount_call, MCOUNT_INSN_SIZE);
+ new = ftrace_call_replace(pc, *addr);
+ *addr = ftrace_modify_code(pc, (unsigned char *)&old, new);
+ return 0;
+}
+
+/* run from kstop_machine */
+int __init ftrace_dyn_arch_init(void *data)
+{
+ ftrace_mcount_set(data);
+ return 0;
+}
diff -urN linux-2.6.26/arch/arm/kernel/irq.c linux-2.6.26-lab126/arch/arm/kernel/irq.c
--- linux-2.6.26/arch/arm/kernel/irq.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/irq.c 2010-08-10 04:14:06.000000000 -0400
@@ -37,6 +37,8 @@
#include
#include
+#include
+
#include
#include
@@ -85,7 +87,7 @@
unlock:
spin_unlock_irqrestore(&irq_desc[i].lock, flags);
} else if (i == NR_IRQS) {
-#ifdef CONFIG_ARCH_ACORN
+#ifdef CONFIG_FIQ
show_fiq_list(p, v);
#endif
#ifdef CONFIG_SMP
@@ -100,7 +102,7 @@
/* Handle bad interrupts */
static struct irq_desc bad_irq_desc = {
.handle_irq = handle_bad_irq,
- .lock = SPIN_LOCK_UNLOCKED
+ .lock = RAW_SPIN_LOCK_UNLOCKED(bad_irq_desc.lock)
};
/*
@@ -108,11 +110,13 @@
* come via this function. Instead, they should provide their
* own 'handler'
*/
-asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+asmlinkage void __exception notrace asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
struct irq_desc *desc = irq_desc + irq;
+ trace_event_irq(irq, user_mode(regs), instruction_pointer(regs));
+
/*
* Some hardware gives randomly wrong interrupts. Rather
* than crashing, do something sensible.
diff -urN linux-2.6.26/arch/arm/kernel/kgdb.c linux-2.6.26-lab126/arch/arm/kernel/kgdb.c
--- linux-2.6.26/arch/arm/kernel/kgdb.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/kernel/kgdb.c 2010-08-10 04:14:06.000000000 -0400
@@ -0,0 +1,206 @@
+/*
+ * arch/arm/kernel/kgdb.c
+ *
+ * ARM KGDB support
+ *
+ * Copyright (c) 2002-2004 MontaVista Software, Inc
+ * Copyright (c) 2008 Wind River Systems, Inc.
+ *
+ * Authors: George Davis
+ * Deepak Saxena
+ *
+ * Copyright 2009 Amazon Technologies, Inc. All Rights Reserved.
+ * Manish Lachwani (lachwani@lab126.com)
+ */
+
+#include
+#include
+
+/* Make a local copy of the registers passed into the handler (bletch) */
+void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *kernel_regs)
+{
+ int regno;
+
+ /* Initialize all to zero. */
+ for (regno = 0; regno < GDB_MAX_REGS; regno++)
+ gdb_regs[regno] = 0;
+
+ gdb_regs[_R0] = kernel_regs->ARM_r0;
+ gdb_regs[_R1] = kernel_regs->ARM_r1;
+ gdb_regs[_R2] = kernel_regs->ARM_r2;
+ gdb_regs[_R3] = kernel_regs->ARM_r3;
+ gdb_regs[_R4] = kernel_regs->ARM_r4;
+ gdb_regs[_R5] = kernel_regs->ARM_r5;
+ gdb_regs[_R6] = kernel_regs->ARM_r6;
+ gdb_regs[_R7] = kernel_regs->ARM_r7;
+ gdb_regs[_R8] = kernel_regs->ARM_r8;
+ gdb_regs[_R9] = kernel_regs->ARM_r9;
+ gdb_regs[_R10] = kernel_regs->ARM_r10;
+ gdb_regs[_FP] = kernel_regs->ARM_fp;
+ gdb_regs[_IP] = kernel_regs->ARM_ip;
+ gdb_regs[_SPT] = kernel_regs->ARM_sp;
+ gdb_regs[_LR] = kernel_regs->ARM_lr;
+ gdb_regs[_PC] = kernel_regs->ARM_pc;
+ gdb_regs[_CPSR] = kernel_regs->ARM_cpsr;
+}
+
+/* Copy local gdb registers back to kgdb regs, for later copy to kernel */
+void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *kernel_regs)
+{
+ kernel_regs->ARM_r0 = gdb_regs[_R0];
+ kernel_regs->ARM_r1 = gdb_regs[_R1];
+ kernel_regs->ARM_r2 = gdb_regs[_R2];
+ kernel_regs->ARM_r3 = gdb_regs[_R3];
+ kernel_regs->ARM_r4 = gdb_regs[_R4];
+ kernel_regs->ARM_r5 = gdb_regs[_R5];
+ kernel_regs->ARM_r6 = gdb_regs[_R6];
+ kernel_regs->ARM_r7 = gdb_regs[_R7];
+ kernel_regs->ARM_r8 = gdb_regs[_R8];
+ kernel_regs->ARM_r9 = gdb_regs[_R9];
+ kernel_regs->ARM_r10 = gdb_regs[_R10];
+ kernel_regs->ARM_fp = gdb_regs[_FP];
+ kernel_regs->ARM_ip = gdb_regs[_IP];
+ kernel_regs->ARM_sp = gdb_regs[_SPT];
+ kernel_regs->ARM_lr = gdb_regs[_LR];
+ kernel_regs->ARM_pc = gdb_regs[_PC];
+ kernel_regs->ARM_cpsr = gdb_regs[_CPSR];
+}
+
+void
+sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
+{
+ struct pt_regs *thread_regs;
+ int regno;
+
+ /* Just making sure... */
+ if (task == NULL)
+ return;
+
+ /* Initialize to zero */
+ for (regno = 0; regno < GDB_MAX_REGS; regno++)
+ gdb_regs[regno] = 0;
+
+ /* Otherwise, we have only some registers from switch_to() */
+ thread_regs = task_pt_regs(task);
+ gdb_regs[_R0] = thread_regs->ARM_r0;
+ gdb_regs[_R1] = thread_regs->ARM_r1;
+ gdb_regs[_R2] = thread_regs->ARM_r2;
+ gdb_regs[_R3] = thread_regs->ARM_r3;
+ gdb_regs[_R4] = thread_regs->ARM_r4;
+ gdb_regs[_R5] = thread_regs->ARM_r5;
+ gdb_regs[_R6] = thread_regs->ARM_r6;
+ gdb_regs[_R7] = thread_regs->ARM_r7;
+ gdb_regs[_R8] = thread_regs->ARM_r8;
+ gdb_regs[_R9] = thread_regs->ARM_r9;
+ gdb_regs[_R10] = thread_regs->ARM_r10;
+ gdb_regs[_FP] = thread_regs->ARM_fp;
+ gdb_regs[_IP] = thread_regs->ARM_ip;
+ gdb_regs[_SPT] = thread_regs->ARM_sp;
+ gdb_regs[_LR] = thread_regs->ARM_lr;
+ gdb_regs[_PC] = thread_regs->ARM_pc;
+ gdb_regs[_CPSR] = thread_regs->ARM_cpsr;
+}
+
+static int compiled_break;
+
+int kgdb_arch_handle_exception(int exception_vector, int signo,
+ int err_code, char *remcom_in_buffer,
+ char *remcom_out_buffer,
+ struct pt_regs *linux_regs)
+{
+ unsigned long addr;
+ char *ptr;
+
+ switch (remcom_in_buffer[0]) {
+ case 'D':
+ case 'k':
+ case 'c':
+ kgdb_contthread = NULL;
+
+ /*
+ * Try to read optional parameter, pc unchanged if no parm.
+ * If this was a compiled breakpoint, we need to move
+ * to the next instruction or we will just breakpoint
+ * over and over again.
+ */
+ ptr = &remcom_in_buffer[1];
+ if (kgdb_hex2long(&ptr, &addr))
+ linux_regs->ARM_pc = addr;
+ else if (compiled_break == 1)
+ linux_regs->ARM_pc += 4;
+
+ compiled_break = 0;
+
+ return 0;
+ }
+
+ return -1;
+}
+
+static int kgdb_brk_fn(struct pt_regs *regs, unsigned int instr)
+{
+ kgdb_handle_exception(1, SIGTRAP, 0, regs);
+
+ return 0;
+}
+
+static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int instr)
+{
+ compiled_break = 1;
+ kgdb_handle_exception(1, SIGTRAP, 0, regs);
+
+ return 0;
+}
+
+static struct undef_hook kgdb_brkpt_hook = {
+ .instr_mask = 0xffffffff,
+ .instr_val = KGDB_BREAKINST,
+ .fn = kgdb_brk_fn
+};
+
+static struct undef_hook kgdb_compiled_brkpt_hook = {
+ .instr_mask = 0xffffffff,
+ .instr_val = KGDB_COMPILED_BREAK,
+ .fn = kgdb_compiled_brk_fn
+};
+
+/**
+ * kgdb_arch_init - Perform any architecture specific initalization.
+ *
+ * This function will handle the initalization of any architecture
+ * specific callbacks.
+ */
+int kgdb_arch_init(void)
+{
+ register_undef_hook(&kgdb_brkpt_hook);
+ register_undef_hook(&kgdb_compiled_brkpt_hook);
+
+ return 0;
+}
+
+/**
+ * kgdb_arch_exit - Perform any architecture specific uninitalization.
+ *
+ * This function will handle the uninitalization of any architecture
+ * specific callbacks, for dynamic registration and unregistration.
+ */
+void kgdb_arch_exit(void)
+{
+ unregister_undef_hook(&kgdb_brkpt_hook);
+ unregister_undef_hook(&kgdb_compiled_brkpt_hook);
+}
+
+/*
+ * Register our undef instruction hooks with ARM undef core.
+ * We regsiter a hook specifically looking for the KGB break inst
+ * and we handle the normal undef case within the do_undefinstr
+ * handler.
+ */
+struct kgdb_arch arch_kgdb_ops = {
+#ifndef __ARMEB__
+ .gdb_bpt_instr = {0xfe, 0xde, 0xff, 0xe7}
+#else /* ! __ARMEB__ */
+ .gdb_bpt_instr = {0xe7, 0xff, 0xde, 0xfe}
+#endif
+};
+
diff -urN linux-2.6.26/arch/arm/kernel/process.c linux-2.6.26-lab126/arch/arm/kernel/process.c
--- linux-2.6.26/arch/arm/kernel/process.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/process.c 2010-08-10 04:14:06.000000000 -0400
@@ -36,6 +36,8 @@
#include
#include
+DEFINE_RAW_SPINLOCK(futex_atomic_lock);
+
static const char *processor_modes[] = {
"USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
"UK8_26" , "UK9_26" , "UK10_26", "UK11_26", "UK12_26", "UK13_26", "UK14_26", "UK15_26",
@@ -164,14 +166,16 @@
if (!idle)
idle = default_idle;
leds_event(led_idle_start);
- tick_nohz_stop_sched_tick();
+ tick_nohz_stop_sched_tick(1);
while (!need_resched())
idle();
leds_event(led_idle_end);
tick_nohz_restart_sched_tick();
- preempt_enable_no_resched();
- schedule();
+ local_irq_disable();
+ __preempt_enable_no_resched();
+ __schedule();
preempt_disable();
+ local_irq_enable();
}
}
@@ -185,17 +189,17 @@
__setup("reboot=", reboot_setup);
-void machine_halt(void)
-{
-}
-
-
void machine_power_off(void)
{
if (pm_power_off)
pm_power_off();
}
+void machine_halt(void)
+{
+ machine_power_off();
+}
+
void machine_restart(char * __unused)
{
arm_pm_restart(reboot_mode);
@@ -352,6 +356,15 @@
}
/*
+ * Fill in the task's elfregs structure for a core dump.
+ */
+int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs)
+{
+ elf_core_copy_regs(elfregs, task_pt_regs(t));
+ return 1;
+}
+
+/*
* fill in the fpe structure for a core dump...
*/
int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
diff -urN linux-2.6.26/arch/arm/kernel/ptrace.c linux-2.6.26-lab126/arch/arm/kernel/ptrace.c
--- linux-2.6.26/arch/arm/kernel/ptrace.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/ptrace.c 2010-08-10 04:14:06.000000000 -0400
@@ -655,6 +655,54 @@
}
#endif
+#ifdef CONFIG_VFP
+/*
+ * Get the child VFP state.
+ */
+static int ptrace_getvfpregs(struct task_struct *tsk, void __user *data)
+{
+ struct thread_info *thread = task_thread_info(tsk);
+ union vfp_state *vfp = &thread->vfpstate;
+ struct user_vfp __user *ufp = data;
+
+ vfp_sync_state(thread);
+
+ /* copy the floating point registers */
+ if (copy_to_user(&ufp->fpregs, &vfp->hard.fpregs,
+ sizeof(vfp->hard.fpregs)))
+ return -EFAULT;
+
+ /* copy the status and control register */
+ if (put_user(vfp->hard.fpscr, &ufp->fpscr))
+ return -EFAULT;
+
+ return 0;
+}
+
+/*
+ * Set the child VFP state.
+ */
+static int ptrace_setvfpregs(struct task_struct *tsk, void __user *data)
+{
+ struct thread_info *thread = task_thread_info(tsk);
+ union vfp_state *vfp = &thread->vfpstate;
+ struct user_vfp __user *ufp = data;
+
+ vfp_sync_state(thread);
+
+ /* copy the floating point registers */
+ if (copy_from_user(&vfp->hard.fpregs, &ufp->fpregs,
+ sizeof(vfp->hard.fpregs)))
+ return -EFAULT;
+
+ /* copy the status and control register */
+ if (get_user(vfp->hard.fpscr, &ufp->fpscr))
+ return -EFAULT;
+
+ return 0;
+}
+#endif
+
long arch_ptrace(struct task_struct *child, long request, long addr, long data)
{
int ret;
@@ -777,6 +825,15 @@
break;
#endif
+#ifdef CONFIG_VFP
+ case PTRACE_GETVFPREGS:
+ ret = ptrace_getvfpregs(child, (void __user *)data);
+ break;
+
+ case PTRACE_SETVFPREGS:
+ ret = ptrace_setvfpregs(child, (void __user *)data);
+ break;
+#endif
default:
ret = ptrace_request(child, request, addr, data);
break;
diff -urN linux-2.6.26/arch/arm/kernel/setup.c linux-2.6.26-lab126/arch/arm/kernel/setup.c
--- linux-2.6.26/arch/arm/kernel/setup.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/setup.c 2010-08-10 04:14:06.000000000 -0400
@@ -36,6 +36,7 @@
#include
#include
#include
+#include
#include "compat.h"
#include "atags.h"
@@ -68,6 +69,12 @@
unsigned int __atags_pointer __initdata;
+unsigned char system_rev16[REVISION16_SIZE];
+EXPORT_SYMBOL(system_rev16);
+
+unsigned char system_serial16[SERIAL16_SIZE];
+EXPORT_SYMBOL(system_serial16);
+
unsigned int system_rev;
EXPORT_SYMBOL(system_rev);
@@ -717,9 +724,30 @@
__tagtable(ATAG_REVISION, parse_tag_revision);
+static int __init parse_tag_serial16(const struct tag *tag)
+{
+ memcpy(system_serial16, tag->u.id16.data, SERIAL16_SIZE);
+#if 0
+ printk(KERN_DEBUG "ATAGS:serial16:str=\"%.*s\"\n", SERIAL16_SIZE, system_serial16);
+#endif
+ return 0;
+}
+
+__tagtable(ATAG_SERIAL16, parse_tag_serial16);
+
+static int __init parse_tag_revision16(const struct tag *tag)
+{
+ memcpy(system_rev16, tag->u.id16.data, REVISION16_SIZE);
+ printk(KERN_DEBUG "ATAGS:rev16:str=\"%.*s\"\n", REVISION16_SIZE, system_rev16);
+ return 0;
+}
+__tagtable(ATAG_REVISION16, parse_tag_revision16);
+
static int __init parse_tag_cmdline(const struct tag *tag)
{
+#if 0
strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
+#endif
return 0;
}
@@ -737,6 +765,7 @@
for (t = &__tagtable_begin; t < &__tagtable_end; t++)
if (tag->hdr.tag == t->tag) {
+ // printk(KERN_DEBUG "ATAGS:tag=0x%08x size=%d\n", tag->hdr.tag, tag->hdr.size);
t->parse(tag);
break;
}
@@ -750,11 +779,12 @@
*/
static void __init parse_tags(const struct tag *t)
{
- for (; t->hdr.size; t = tag_next(t))
+ for (; (t->hdr.tag != ATAG_NONE) && t->hdr.size; t = tag_next(t)) {
if (!parse_tag(t))
printk(KERN_WARNING
"Ignoring unrecognised tag 0x%08x\n",
t->hdr.tag);
+ }
}
/*
@@ -853,6 +883,7 @@
conswitchp = &dummy_con;
#endif
#endif
+ early_trap_init();
}
@@ -980,8 +1011,28 @@
seq_printf(m, "Hardware\t: %s\n", machine_name);
seq_printf(m, "Revision\t: %04x\n", system_rev);
- seq_printf(m, "Serial\t\t: %08x%08x\n",
- system_serial_high, system_serial_low);
+
+ /* if 16-byte serial was initialized, print that. */
+ if (system_serial16[0]) {
+ char serial_num[SERIAL16_SIZE + 1];
+
+ memset(serial_num, '\0', sizeof(serial_num));
+ strncpy(serial_num, system_serial16, SERIAL16_SIZE);
+ seq_printf(m, "Serial\t\t: \"%s\"\n", serial_num);
+ } else {
+ /* no 16-byte serial, use the 64-bit one. */
+ seq_printf(m, "Serial\t\t: %08x%08x\n",
+ system_serial_high, system_serial_low);
+ }
+
+ /* if 16-byte revision was initialized, print that. */
+ if (system_rev16[0]) {
+ char board_id[REVISION16_SIZE + 1];
+
+ memset(board_id, '\0', sizeof(board_id));
+ strncpy(board_id, system_rev16, REVISION16_SIZE);
+ seq_printf(m, "BoardId\t\t: \"%s\"\n", board_id);
+ }
return 0;
}
diff -urN linux-2.6.26/arch/arm/kernel/signal.c linux-2.6.26-lab126/arch/arm/kernel/signal.c
--- linux-2.6.26/arch/arm/kernel/signal.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/signal.c 2010-08-10 04:14:06.000000000 -0400
@@ -623,6 +623,14 @@
siginfo_t info;
int signr;
+#ifdef CONFIG_PREEMPT_RT
+ /*
+ * Fully-preemptible kernel does not need interrupts disabled:
+ */
+ local_irq_enable();
+ preempt_check_resched();
+#endif
+
/*
* We want the common case to go fast, which
* is why we may in certain cases get here from
diff -urN linux-2.6.26/arch/arm/kernel/smp.c linux-2.6.26-lab126/arch/arm/kernel/smp.c
--- linux-2.6.26/arch/arm/kernel/smp.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/smp.c 2010-08-10 04:14:06.000000000 -0400
@@ -542,7 +542,7 @@
cpu_clear(cpu, data->unfinished);
}
-static DEFINE_SPINLOCK(stop_lock);
+static DEFINE_RAW_SPINLOCK(stop_lock);
/*
* ipi_cpu_stop - handle IPI from smp_send_stop()
diff -urN linux-2.6.26/arch/arm/kernel/time.c linux-2.6.26-lab126/arch/arm/kernel/time.c
--- linux-2.6.26/arch/arm/kernel/time.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/time.c 2010-08-10 04:14:06.000000000 -0400
@@ -70,7 +70,7 @@
/*
* hook for setting the RTC's idea of the current time.
*/
-int (*set_rtc)(void);
+int (*set_rtc)(struct timespec now);
#ifndef CONFIG_GENERIC_TIME
static unsigned long dummy_gettimeoffset(void)
@@ -79,34 +79,12 @@
}
#endif
-static unsigned long next_rtc_update;
-
-/*
- * If we have an externally synchronized linux clock, then update
- * CMOS clock accordingly every ~11 minutes. set_rtc() has to be
- * called as close as possible to 500 ms before the new second
- * starts.
- */
-static inline void do_set_rtc(void)
+int update_persistent_clock(struct timespec now)
{
- if (!ntp_synced() || set_rtc == NULL)
- return;
-
- if (next_rtc_update &&
- time_before((unsigned long)xtime.tv_sec, next_rtc_update))
- return;
+ if (set_rtc == NULL)
+ return -1;
- if (xtime.tv_nsec < 500000000 - ((unsigned) tick_nsec >> 1) &&
- xtime.tv_nsec >= 500000000 + ((unsigned) tick_nsec >> 1))
- return;
-
- if (set_rtc())
- /*
- * rtc update failed. Try again in 60s
- */
- next_rtc_update = xtime.tv_sec + 60;
- else
- next_rtc_update = xtime.tv_sec + 660;
+ return set_rtc(now);
}
#ifdef CONFIG_LEDS
@@ -293,9 +271,10 @@
*/
void save_time_delta(struct timespec *delta, struct timespec *rtc)
{
+ struct timespec now = current_kernel_time();
set_normalized_timespec(delta,
- xtime.tv_sec - rtc->tv_sec,
- xtime.tv_nsec - rtc->tv_nsec);
+ now.tv_sec - rtc->tv_sec,
+ now.tv_nsec - rtc->tv_nsec);
}
EXPORT_SYMBOL(save_time_delta);
@@ -324,7 +303,6 @@
{
profile_tick(CPU_PROFILING);
do_leds();
- do_set_rtc();
write_seqlock(&xtime_lock);
do_timer(1);
write_sequnlock(&xtime_lock);
diff -urN linux-2.6.26/arch/arm/kernel/traps.c linux-2.6.26-lab126/arch/arm/kernel/traps.c
--- linux-2.6.26/arch/arm/kernel/traps.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/traps.c 2010-08-10 04:14:06.000000000 -0400
@@ -29,10 +29,15 @@
#include
#include
+#ifdef CONFIG_MACH_LUIGI_LAB126
+#include
+#endif
+
#include "ptrace.h"
#include "signal.h"
static const char *handler[]= { "prefetch abort", "data abort", "address exception", "interrupt" };
+extern void mxc_wd_reset(void);
#ifdef CONFIG_DEBUG_USER
unsigned int user_debug;
@@ -45,6 +50,14 @@
__setup("user_debug=", user_debug_setup);
#endif
+#ifdef CONFIG_MACH_LUIGI_LAB126
+char bug_buffer[100];
+static int bug_buffer_filled = 0;
+
+int kernel_oops_counter = 0;
+EXPORT_SYMBOL(kernel_oops_counter);
+#endif
+
static void dump_mem(const char *str, unsigned long bottom, unsigned long top);
void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame)
@@ -205,13 +218,45 @@
#define S_SMP ""
#endif
+char die_buffer[OOPS_SAVE_SIZE];
+char *die_start;
+unsigned die_len;
+static unsigned die_oops_enable;
+
+void insert_oops_chars(char c)
+{
+ if (!die_oops_enable)
+ return;
+
+ die_buffer[die_len++] = c;
+}
+EXPORT_SYMBOL(insert_oops_chars);
+
static void __die(const char *str, int err, struct thread_info *thread, struct pt_regs *regs)
{
struct task_struct *tsk = thread->task;
static int die_counter;
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ die_len = 0; /* Initialize */
+ die_start = die_buffer;
+ kernel_oops_counter++;
+
+ die_buffer[die_len++] = 'O';
+ die_buffer[die_len++] = 'O';
+ die_buffer[die_len++] = 'P';
+ die_buffer[die_len++] = 'S';
+ die_buffer[die_len++] = ':';
+ die_start += die_len;
+
+ if (bug_buffer_filled == 1) {
+ die_len += sprintf(die_start, "%s\n", bug_buffer);
+ die_start += die_len;
+ }
+#endif
printk("Internal error: %s: %x [#%d]" S_PREEMPT S_SMP "\n",
str, err, ++die_counter);
+ sysfs_printk_last_file();
print_modules();
__show_regs(regs);
printk("Process %s (pid: %d, stack limit = 0x%p)\n",
@@ -225,7 +270,11 @@
}
}
-DEFINE_SPINLOCK(die_lock);
+DEFINE_RAW_SPINLOCK(die_lock);
+
+#ifdef CONFIG_MACH_LUIGI_LAB126
+extern void *oops_start;
+#endif
/*
* This function is protected against re-entrancy.
@@ -233,24 +282,39 @@
NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
{
struct thread_info *thread = current_thread_info();
-
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ void *die_oops_start = oops_start;
+ memset(die_oops_start, 0, OOPS_SAVE_SIZE);
+ die_oops_enable = 1;
+#endif
oops_enter();
- console_verbose();
spin_lock_irq(&die_lock);
+ console_verbose();
bust_spinlocks(1);
__die(str, err, thread, regs);
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ die_oops_enable = 0;
+ die_buffer[die_len++] = '\0';
+#endif
bust_spinlocks(0);
add_taint(TAINT_DIE);
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ memcpy((void *)die_oops_start, (void *)die_buffer, OOPS_SAVE_SIZE);
+#endif
spin_unlock_irq(&die_lock);
+ oops_exit();
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ if (bug_buffer_filled)
+ mxc_wd_reset();
+#endif
if (in_interrupt())
panic("Fatal exception in interrupt");
if (panic_on_oops)
panic("Fatal exception");
- oops_exit();
do_exit(SIGSEGV);
}
@@ -268,7 +332,7 @@
}
static LIST_HEAD(undef_hook);
-static DEFINE_SPINLOCK(undef_lock);
+static DEFINE_RAW_SPINLOCK(undef_lock);
void register_undef_hook(struct undef_hook *hook)
{
@@ -288,14 +352,27 @@
spin_unlock_irqrestore(&undef_lock, flags);
}
+static int call_arm_undef_hook(struct pt_regs *regs, unsigned int instr)
+{
+ struct undef_hook *hook;
+ unsigned long flags;
+ int (*fn)(struct pt_regs *regs, unsigned int instr) = NULL;
+
+ spin_lock_irqsave(&undef_lock, flags);
+ list_for_each_entry(hook, &undef_hook, node)
+ if ((instr & hook->instr_mask) == hook->instr_val &&
+ (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val)
+ fn = hook->fn;
+ spin_unlock_irqrestore(&undef_lock, flags);
+ return fn ? fn(regs, instr) : 1;
+}
+
asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
{
unsigned int correction = thumb_mode(regs) ? 2 : 4;
unsigned int instr;
- struct undef_hook *hook;
siginfo_t info;
void __user *pc;
- unsigned long flags;
/*
* According to the ARM ARM, PC is 2 or 4 bytes ahead,
@@ -325,17 +402,8 @@
}
#endif
- spin_lock_irqsave(&undef_lock, flags);
- list_for_each_entry(hook, &undef_hook, node) {
- if ((instr & hook->instr_mask) == hook->instr_val &&
- (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) {
- if (hook->fn(regs, instr) == 0) {
- spin_unlock_irqrestore(&undef_lock, flags);
- return;
- }
- }
- }
- spin_unlock_irqrestore(&undef_lock, flags);
+ if (call_arm_undef_hook(regs, instr) == 0)
+ return;
#ifdef CONFIG_DEBUG_USER
if (user_debug & UDBG_UNDEFINED) {
@@ -357,6 +425,7 @@
{
printk("Hmm. Unexpected FIQ received, but trying to continue\n");
printk("You may have a hardware problem...\n");
+ print_preempt_trace(current);
}
/*
@@ -556,7 +625,7 @@
if not implemented, rather than raising SIGILL. This
way the calling program can gracefully determine whether
a feature is supported. */
- if (no <= 0x7ff)
+ if ((no & 0xffff) <= 0x7ff)
return -ENOSYS;
break;
}
@@ -660,7 +729,16 @@
void __attribute__((noreturn)) __bug(const char *file, int line)
{
+#ifdef CONFIG_MACH_LUIGI_LAB126
+ unsigned tlen;
+ char *start = bug_buffer;
+
+ tlen = sprintf(start, "kernel BUG at %s:%d!\n", file, line);
+ printk(KERN_CRIT"%s\n", bug_buffer);
+ bug_buffer_filled = 1;
+#else
printk(KERN_CRIT"kernel BUG at %s:%d!\n", file, line);
+#endif
*(int *)0 = 0;
/* Avoid "noreturn function does return" */
@@ -708,6 +786,11 @@
void __init trap_init(void)
{
+ return;
+}
+
+void __init early_trap_init(void)
+{
unsigned long vectors = CONFIG_VECTORS_BASE;
extern char __stubs_start[], __stubs_end[];
extern char __vectors_start[], __vectors_end[];
diff -urN linux-2.6.26/arch/arm/kernel/vmlinux.lds.S linux-2.6.26-lab126/arch/arm/kernel/vmlinux.lds.S
--- linux-2.6.26/arch/arm/kernel/vmlinux.lds.S 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/kernel/vmlinux.lds.S 2010-08-10 04:14:06.000000000 -0400
@@ -6,6 +6,7 @@
#include
#include
#include
+#include
OUTPUT_ARCH(arm)
ENTRY(stext)
@@ -63,7 +64,7 @@
usr/built-in.o(.init.ramfs)
__initramfs_end = .;
#endif
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__per_cpu_start = .;
*(.data.percpu)
*(.data.percpu.shared_aligned)
@@ -71,7 +72,7 @@
#ifndef CONFIG_XIP_KERNEL
__init_begin = _stext;
INIT_DATA
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__init_end = .;
#endif
}
@@ -106,7 +107,7 @@
*(.got) /* Global offset table */
}
- RODATA
+ RO_DATA(PAGE_SIZE)
_etext = .; /* End of text and rodata section */
@@ -128,17 +129,17 @@
*(.data.init_task)
#ifdef CONFIG_XIP_KERNEL
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__init_begin = .;
INIT_DATA
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__init_end = .;
#endif
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__nosave_begin = .;
*(.data.nosave)
- . = ALIGN(4096);
+ . = ALIGN(PAGE_SIZE);
__nosave_end = .;
/*
diff -urN linux-2.6.26/arch/arm/lib/Makefile linux-2.6.26-lab126/arch/arm/lib/Makefile
--- linux-2.6.26/arch/arm/lib/Makefile 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/lib/Makefile 2010-08-10 04:14:10.000000000 -0400
@@ -41,6 +41,7 @@
lib-$(CONFIG_ARCH_CLPS7500) += io-acorn.o
lib-$(CONFIG_ARCH_L7200) += io-acorn.o
lib-$(CONFIG_ARCH_SHARK) += io-shark.o
+lib-$(CONFIG_STACKTRACE) += stacktrace.o
$(obj)/csumpartialcopy.o: $(obj)/csumpartialcopygeneric.S
$(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S
diff -urN linux-2.6.26/arch/arm/lib/stacktrace.c linux-2.6.26-lab126/arch/arm/lib/stacktrace.c
--- linux-2.6.26/arch/arm/lib/stacktrace.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/lib/stacktrace.c 2010-08-10 04:14:10.000000000 -0400
@@ -0,0 +1,7 @@
+#include
+#include
+
+void save_stack_trace(struct stack_trace *trace)
+{
+}
+
diff -urN linux-2.6.26/arch/arm/mach-at91/gpio.c linux-2.6.26-lab126/arch/arm/mach-at91/gpio.c
--- linux-2.6.26/arch/arm/mach-at91/gpio.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-at91/gpio.c 2010-08-10 04:14:04.000000000 -0400
@@ -368,12 +368,18 @@
}
}
+static void gpio_irq_ack_noop(unsigned int irq)
+{
+ /* Dummy function. */
+}
+
static struct irq_chip gpio_irqchip = {
.name = "GPIO",
.mask = gpio_irq_mask,
.unmask = gpio_irq_unmask,
.set_type = gpio_irq_type,
.set_wake = gpio_irq_set_wake,
+ .ack = gpio_irq_ack_noop,
};
static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
@@ -522,7 +528,7 @@
* shorter, and the AIC handles interrupts sanely.
*/
set_irq_chip(pin, &gpio_irqchip);
- set_irq_handler(pin, handle_simple_irq);
+ set_irq_handler(pin, handle_edge_irq);
set_irq_flags(pin, IRQF_VALID);
}
diff -urN linux-2.6.26/arch/arm/mach-footbridge/netwinder-hw.c linux-2.6.26-lab126/arch/arm/mach-footbridge/netwinder-hw.c
--- linux-2.6.26/arch/arm/mach-footbridge/netwinder-hw.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-footbridge/netwinder-hw.c 2010-08-10 04:14:13.000000000 -0400
@@ -67,7 +67,7 @@
/*
* This is a lock for accessing ports GP1_IO_BASE and GP2_IO_BASE
*/
-DEFINE_SPINLOCK(gpio_lock);
+DEFINE_RAW_SPINLOCK(gpio_lock);
static unsigned int current_gpio_op;
static unsigned int current_gpio_io;
diff -urN linux-2.6.26/arch/arm/mach-footbridge/netwinder-leds.c linux-2.6.26-lab126/arch/arm/mach-footbridge/netwinder-leds.c
--- linux-2.6.26/arch/arm/mach-footbridge/netwinder-leds.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-footbridge/netwinder-leds.c 2010-08-10 04:14:13.000000000 -0400
@@ -32,7 +32,7 @@
static char hw_led_state;
static DEFINE_SPINLOCK(leds_lock);
-extern spinlock_t gpio_lock;
+extern raw_spinlock_t gpio_lock;
static void netwinder_leds_event(led_event_t evt)
{
diff -urN linux-2.6.26/arch/arm/mach-integrator/core.c linux-2.6.26-lab126/arch/arm/mach-integrator/core.c
--- linux-2.6.26/arch/arm/mach-integrator/core.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-integrator/core.c 2010-08-10 04:14:04.000000000 -0400
@@ -164,7 +164,7 @@
#define CM_CTRL IO_ADDRESS(INTEGRATOR_HDR_BASE) + INTEGRATOR_HDR_CTRL_OFFSET
-static DEFINE_SPINLOCK(cm_lock);
+static DEFINE_RAW_SPINLOCK(cm_lock);
/**
* cm_control - update the CM_CTRL register.
diff -urN linux-2.6.26/arch/arm/mach-integrator/pci_v3.c linux-2.6.26-lab126/arch/arm/mach-integrator/pci_v3.c
--- linux-2.6.26/arch/arm/mach-integrator/pci_v3.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-integrator/pci_v3.c 2010-08-10 04:14:04.000000000 -0400
@@ -162,7 +162,7 @@
* 7:2 register number
*
*/
-static DEFINE_SPINLOCK(v3_lock);
+static DEFINE_RAW_SPINLOCK(v3_lock);
#define PCI_BUS_NONMEM_START 0x00000000
#define PCI_BUS_NONMEM_SIZE SZ_256M
diff -urN linux-2.6.26/arch/arm/mach-ixp4xx/common-pci.c linux-2.6.26-lab126/arch/arm/mach-ixp4xx/common-pci.c
--- linux-2.6.26/arch/arm/mach-ixp4xx/common-pci.c 2008-07-13 17:51:29.000000000 -0400
+++ linux-2.6.26-lab126/arch/arm/mach-ixp4xx/common-pci.c 2010-08-10 04:14:16.000000000 -0400
@@ -53,7 +53,7 @@
* these transactions are atomic or we will end up
* with corrupt data on the bus or in a driver.
*/
-static DEFINE_SPINLOCK(ixp4xx_pci_lock);
+static DEFINE_RAW_SPINLOCK(ixp4xx_pci_lock);
/*
* Read from PCI config space
diff -urN linux-2.6.26/arch/arm/mach-mx21/Kconfig linux-2.6.26-lab126/arch/arm/mach-mx21/Kconfig
--- linux-2.6.26/arch/arm/mach-mx21/Kconfig 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/Kconfig 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,17 @@
+menu "MX21 Options"
+ depends on ARCH_MX21
+
+config MX21_OPTIONS
+ bool
+ default y
+ select CPU_ARM926T
+ select MXC_EMMA
+
+config MACH_MX21ADS
+ bool "Support MX21 ADS platforms"
+ default y
+ help
+ Include support for MX21 ADS platform. This includes specific
+ configurations for the board and its peripherals.
+
+endmenu
diff -urN linux-2.6.26/arch/arm/mach-mx21/Makefile linux-2.6.26-lab126/arch/arm/mach-mx21/Makefile
--- linux-2.6.26/arch/arm/mach-mx21/Makefile 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/Makefile 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,12 @@
+#
+# Makefile for the linux kernel.
+#
+
+# Object file lists.
+
+obj-y := mm.o time.o dma.o gpio_mux.o clock.o devices.o serial.o system.o
+obj-$(CONFIG_MACH_MX21ADS) += mx21ads.o mx21ads_gpio.o
+
+# power management
+obj-$(CONFIG_PM) += pm.o mxc_pm.o
+obj-$(CONFIG_DPM) += dpm.o
diff -urN linux-2.6.26/arch/arm/mach-mx21/Makefile.boot linux-2.6.26-lab126/arch/arm/mach-mx21/Makefile.boot
--- linux-2.6.26/arch/arm/mach-mx21/Makefile.boot 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/Makefile.boot 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,3 @@
+ zreladdr-y := 0xC0008000
+params_phys-y := 0xC0000100
+initrd_phys-y := 0xC0800000
diff -urN linux-2.6.26/arch/arm/mach-mx21/board-mx21ads.h linux-2.6.26-lab126/arch/arm/mach-mx21/board-mx21ads.h
--- linux-2.6.26/arch/arm/mach-mx21/board-mx21ads.h 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/board-mx21ads.h 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __ASM_ARCH_MXC_BOARD_MX21ADS_H__
+#define __ASM_ARCH_MXC_BOARD_MX21ADS_H__
+
+/*!
+ * @defgroup BRDCFG Board Configuration Options
+ * @ingroup MSL
+ */
+
+/*!
+ * @file arch-mxc/board-mx21ads.h
+ *
+ * @brief This file contains all the board level configuration options.
+ *
+ * It currently hold the options defined for MX21 ADS Platform.
+ *
+ * @ingroup BRDCFG
+ */
+
+/*
+ * Include Files
+ */
+#include
+
+/* Start of physical RAM */
+#define PHYS_OFFSET UL(0xC0000000)
+
+/* Size of contiguous memory for DMA and other h/w blocks */
+#define CONSISTENT_DMA_SIZE SZ_8M
+
+/*!
+ * @name MXC UART EVB board level configurations
+ */
+/*! @{ */
+/*!
+ * Specify the max baudrate for the MXC UARTs for your board, do not specify a max
+ * baudrate greater than 1500000. This is used while specifying the UART Power
+ * management constraints.
+ */
+#define MAX_UART_BAUDRATE 1500000
+/*!
+ * Specifies if the Irda transmit path is inverting
+ */
+#define MXC_IRDA_TX_INV 0
+/*!
+ * Specifies if the Irda receive path is inverting
+ */
+#define MXC_IRDA_RX_INV 0
+/* UART 1 configuration */
+/*!
+ * This define specifies if the UART port is configured to be in DTE or
+ * DCE mode. There exists a define like this for each UART port. Valid
+ * values that can be used are \b MODE_DTE or \b MODE_DCE.
+ */
+#define UART1_MODE MODE_DCE
+/*!
+ * This define specifies if the UART is to be used for IRDA. There exists a
+ * define like this for each UART port. Valid values that can be used are
+ * \b IRDA or \b NO_IRDA.
+ */
+#define UART1_IR NO_IRDA
+/*!
+ * This define is used to enable or disable a particular UART port. If
+ * disabled, the UART will not be registered in the file system and the user
+ * will not be able to access it. There exists a define like this for each UART
+ * port. Specify a value of 1 to enable the UART and 0 to disable it.
+ */
+#define UART1_ENABLED 1
+/*! @} */
+/* UART 2 configuration */
+#define UART2_MODE MODE_DCE
+#define UART2_IR NO_IRDA
+#define UART2_ENABLED 1
+/* UART 3 configuration */
+#define UART3_MODE MODE_DTE
+#define UART3_IR IRDA
+#define UART3_ENABLED 1
+/* UART 4 configuration */
+#define UART4_MODE MODE_DTE
+#define UART4_IR NO_IRDA
+#define UART4_ENABLED 1 /* Enable UART 4 */
+
+#define MXC_LL_EXTUART_PADDR (CS1_BASE_ADDR + 0x200000)
+#define MXC_LL_EXTUART_VADDR CS1_IO_ADDRESS(MXC_LL_EXTUART_PADDR)
+#define MXC_LL_EXTUART_16BIT_BUS
+
+#define MXC_LL_UART_PADDR UART1_BASE_ADDR
+#define MXC_LL_UART_VADDR AIPI_IO_ADDRESS(UART1_BASE_ADDR)
+
+/*!
+ * @name Memory Size parameters
+ */
+/*! @{ */
+/*!
+ * Size of SDRAM memory
+ */
+#define SDRAM_MEM_SIZE SZ_64M
+/*!
+ * Size of display buffer memory
+ */
+#define MXCLCDC_MEM_SIZE SZ_8M
+/*!
+ * Size of memory available to kernel
+ */
+#define MEM_SIZE (SDRAM_MEM_SIZE - MXCLCDC_MEM_SIZE)
+/*! @} */
+
+/*! @{ */
+/*!
+ * @name Keypad Configurations
+ */
+/*! @{ */
+/*!
+ * Maximum number of rows (0 to 7)
+ */
+#define MAXROW 6
+/*!
+ * Maximum number of columns (0 to 7)
+ */
+#define MAXCOL 6
+/*! @} */
+
+/*!
+ * @name Defines Base address and IRQ used for CS8900A Ethernet Controller on MXC Boards
+ */
+/*! @{*/
+/*! This is System IRQ used by CS8900A for interrupt generation taken from platform.h */
+#define CS8900AIRQ IOMUX_TO_IRQ(MX21_PIN_UART3_RTS)
+/*! This is I/O Base address used to access registers of CS8900A on MXC ADS */
+#define CS8900A_BASE_ADDRESS (IO_ADDRESS(CS1_BASE_ADDR))
+/*! @} */
+
+#endif /* __ASM_ARCH_MXC_BOARD_MX21ADS_H__ */
diff -urN linux-2.6.26/arch/arm/mach-mx21/clock.c linux-2.6.26-lab126/arch/arm/mach-mx21/clock.c
--- linux-2.6.26/arch/arm/mach-mx21/clock.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/clock.c 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,664 @@
+/*
+ * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/*!
+ * @file clock.c
+ * @brief API for setting up and retrieving clocks.
+ *
+ * This file contains API for setting up and retrieving clocks.
+ *
+ * @ingroup CLOCKS
+ */
+
+#include
+#include
+#include
+#include
+#include "crm_regs.h"
+/*!
+ * Spinlock to protect CRM register accesses
+ */
+static DEFINE_SPINLOCK(mxc_crm_lock);
+
+/*!
+ * g_emma_clock_map is defined to control the emma_clock .
+ * emma_clock will be disabled until emma_prp_clk and emma_pp_clk are closed.
+ */
+#define MXC_CLK_EMMA_PRP 0
+#define MXC_CLK_EMMA_PP 1
+static int g_emma_clock_map = 0;
+
+#define MXC_REG_BIT_MOD(r, off, en) (r = (r & (~(1 << off))) | (en << off))
+
+/*!
+ * This function enables the emma clock.
+ * @param source each bit of source indicate the clock status of mdoule
+ * which is using emma clk
+ * @return none
+ */
+static void inline __enable_emma_clk(unsigned long source)
+{
+ unsigned long reg;
+
+ if (g_emma_clock_map == 0) {
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ MXC_REG_BIT_MOD(reg, CCM_PCCR0_EMMA_OFFSET, 1);
+ MXC_REG_BIT_MOD(reg, CCM_PCCR0_HCLK_EMMA_OFFSET, 1);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ }
+ g_emma_clock_map |= (1 << source);
+}
+
+/*!
+ * This function disables the emma clock.
+ * @param source each bit of source indicate the clock status of mdoule
+ * which is using emma clk
+ * @return none
+ */
+static void inline __disable_emma_clk(unsigned long source)
+{
+ unsigned long reg;
+
+ g_emma_clock_map &= ~(1 << source);
+ if (g_emma_clock_map == 0) {
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ MXC_REG_BIT_MOD(reg, CCM_PCCR0_EMMA_OFFSET, 0);
+ MXC_REG_BIT_MOD(reg, CCM_PCCR0_HCLK_EMMA_OFFSET, 0);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ }
+}
+
+/*!
+ * This function returns the PLL output value in Hz based on pll.
+ * @param pll PLL as defined in enum plls
+ * @return PLL value in Hz.
+ */
+unsigned long mxc_pll_clock(enum plls pll)
+{
+ unsigned long mfi = 0, mfn = 0, mfd = 0, pdf = 0;
+ unsigned long ref_clk = 0, pll_out = 0;
+ volatile unsigned long reg, cscr;
+
+ cscr = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ if (pll == MCUPLL) {
+ if ((cscr & CCM_CSCR_MCU) != 0) {
+ ref_clk = CKIH_CLK_FREQ;
+ } else {
+ ref_clk = CKIL_CLK_FREQ;
+ }
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_MPCTL0);
+ pdf = (reg & CCM_MPCTL0_PD_MASK) >> CCM_MPCTL0_PD_OFFSET;
+ mfd = (reg & CCM_MPCTL0_MFD_MASK) >> CCM_MPCTL0_MFD_OFFSET;
+ mfi = (reg & CCM_MPCTL0_MFI_MASK) >> CCM_MPCTL0_MFI_OFFSET;
+ mfn = (reg & CCM_MPCTL0_MFN_MASK) >> CCM_MPCTL0_MFN_OFFSET;
+ } else if (pll == SERIALPLL) {
+ if ((cscr & CCM_CSCR_SP) != 0) {
+ ref_clk = CKIH_CLK_FREQ;
+ } else {
+ ref_clk = CKIL_CLK_FREQ;
+ }
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_SPCTL0);
+ pdf = (reg & CCM_SPCTL0_PD_MASK) >> CCM_SPCTL0_PD_OFFSET;
+ mfd = (reg & CCM_SPCTL0_MFD_MASK) >> CCM_SPCTL0_MFD_OFFSET;
+ mfi = (reg & CCM_SPCTL0_MFI_MASK) >> CCM_SPCTL0_MFI_OFFSET;
+ mfn = (reg & CCM_SPCTL0_MFN_MASK) >> CCM_SPCTL0_MFN_OFFSET;
+ } else {
+ printk(KERN_ERR "Wrong PLL: %d\n", pll);
+ BUG(); /* oops */
+ }
+
+ mfi = (mfi <= 5) ? 5 : mfi;
+ pll_out = (2 * ref_clk * mfi + ((2 * ref_clk / (mfd + 1)) * mfn)) /
+ (pdf + 1);
+ return pll_out;
+}
+
+/*!
+ * This function returns the mcu main clock frequency
+ *
+ * @return mcu main clock value in Hz.
+ */
+static unsigned long mxc_mcu_main_clock(void)
+{
+ return mxc_pll_clock(MCUPLL);
+}
+
+/*!
+ * This function returns the main clock values in Hz.
+ *
+ * @param clk as defined in enum mxc_clocks
+ *
+ * @return clock value in Hz
+ */
+unsigned long mxc_get_clocks(enum mxc_clocks clk)
+{
+ unsigned long pll, spll, ret_val = 0, hclk;
+ unsigned long presc_pdf, ipg_pdf, nfc_pdf, usb_pdf;
+ volatile unsigned long cscr =
+ __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ volatile unsigned long pcdr0 =
+ __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ volatile unsigned long pcdr1 =
+ __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+
+ unsigned long fclk, ipgclk, perclk1, perclk2, perclk3, perclk4;
+ unsigned long bclk_pdf;
+ unsigned long perclk1_pdf, perclk2_pdf, perclk3_pdf, perclk4_pdf;
+ unsigned long clk_src;
+ unsigned long ssi1_pdf = 0;
+ unsigned long ssi2_pdf = 0;
+ presc_pdf = (cscr & CCM_CSCR_PRESC_MASK) >> CCM_CSCR_PRESC_OFFSET;
+ bclk_pdf = (cscr & CCM_CSCR_BCLK_MASK) >> CCM_CSCR_BCLK_OFFSET;
+ ipg_pdf = (cscr & CCM_CSCR_IPDIV) >> CCM_CSCR_IPDIV_OFFSET;
+ perclk1_pdf =
+ (pcdr1 & CCM_PCDR1_PERDIV1_MASK) >> CCM_PCDR1_PERDIV1_OFFSET;
+ perclk2_pdf =
+ (pcdr1 & CCM_PCDR1_PERDIV2_MASK) >> CCM_PCDR1_PERDIV2_OFFSET;
+ perclk3_pdf =
+ (pcdr1 & CCM_PCDR1_PERDIV3_MASK) >> CCM_PCDR1_PERDIV3_OFFSET;
+ perclk4_pdf =
+ (pcdr1 & CCM_PCDR1_PERDIV4_MASK) >> CCM_PCDR1_PERDIV4_OFFSET;
+
+ pll = mxc_mcu_main_clock();
+ spll = mxc_pll_clock(SERIALPLL);
+ fclk = pll / (presc_pdf + 1);
+ hclk = fclk / (bclk_pdf + 1);
+ ipgclk = hclk / (ipg_pdf + 1);
+ perclk1 = pll / (perclk1_pdf + 1);
+ perclk2 = pll / (perclk2_pdf + 1);
+ perclk3 = pll / (perclk3_pdf + 1);
+ perclk4 = pll / (perclk4_pdf + 1);
+ switch (clk) {
+ case CPU_CLK:
+ ret_val = fclk;
+ break;
+ case AHB_CLK:
+ ret_val = hclk;
+ break;
+ case PERCLK1:
+ case UART6_BAUD:
+ case UART5_BAUD:
+ case UART4_BAUD:
+ case UART3_BAUD:
+ case UART2_BAUD:
+ case UART1_BAUD:
+ case GPT6_CLK:
+ case GPT5_CLK:
+ case GPT4_CLK:
+ case GPT3_CLK:
+ case GPT2_CLK:
+ case GPT1_CLK:
+ case PWM_CLK:
+ ret_val = perclk1;
+ break;
+ case PERCLK2:
+ case SDHC2_CLK:
+ case SDHC1_CLK:
+ case CSPI3_CLK:
+ case CSPI2_CLK:
+ case CSPI1_CLK:
+ ret_val = perclk2;
+ break;
+ case PERCLK3:
+ case LCDC_CLK:
+ ret_val = perclk3;
+ break;
+ case PERCLK4:
+ case CSI_BAUD:
+ ret_val = perclk4;
+ break;
+ case USB_CLK:
+ usb_pdf = (cscr & CCM_CSCR_USB_MASK) >> CCM_CSCR_USB_OFFSET;
+ ret_val = spll / (usb_pdf + 1);
+ break;
+ case SSI1_BAUD:
+ ssi1_pdf = (pcdr0 & CCM_PCDR0_SSI1BAUDDIV_MASK) >>
+ CCM_PCDR0_SSI1BAUDDIV_OFFSET;
+ clk_src = (cscr & CCM_CSCR_SSI1) >> CCM_CSCR_SSI1_OFFSET;
+ if (clk_src)
+ ret_val = pll / (ssi1_pdf + 1);
+ else
+ ret_val = spll / (ssi1_pdf + 1);
+ break;
+ case SSI2_BAUD:
+ ssi1_pdf = (pcdr0 & CCM_PCDR0_SSI2BAUDDIV_MASK) >>
+ CCM_PCDR0_SSI2BAUDDIV_OFFSET;
+ clk_src = (cscr & CCM_CSCR_SSI2) >> CCM_CSCR_SSI2_OFFSET;
+ if (clk_src)
+ ret_val = pll / (ssi2_pdf + 1);
+ else
+ ret_val = spll / (ssi2_pdf + 1);
+ break;
+ case NFC_CLK:
+ nfc_pdf = (pcdr0 & CCM_PCDR0_NFCDIV_MASK) >>
+ CCM_PCDR0_NFCDIV_OFFSET;
+ ret_val = hclk / (nfc_pdf + 1);
+ break;
+ default:
+ ret_val = ipgclk;
+ break;
+ }
+ return ret_val;
+}
+
+/*!
+ * This function returns the parent clock values in Hz.
+ *
+ * @param clk as defined in enum mxc_clocks
+ *
+ * @return clock value in Hz
+ */
+unsigned long mxc_get_clocks_parent(enum mxc_clocks clk)
+{
+ unsigned long ret_val = 0;
+
+ switch (clk) {
+ case CSI_BAUD:
+ ret_val = mxc_mcu_main_clock();
+ break;
+ default:
+ break;
+ }
+ return ret_val;
+}
+
+/*!
+ * This function sets the PLL source for a clock.
+ *
+ * @param clk as defined in enum mxc_clocks
+ * @param pll_num the PLL that you wish to use as source for this clock
+ */
+void mxc_set_clocks_pll(enum mxc_clocks clk, enum plls pll_num)
+{
+ volatile unsigned long cscr;
+ unsigned long flags;
+
+ spin_lock_irqsave(&mxc_crm_lock, flags);
+ cscr = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+
+ switch (clk) {
+ case SSI1_BAUD:
+ cscr = (cscr & (~CCM_CSCR_SSI1)) |
+ (pll_num << CCM_CSCR_SSI1_OFFSET);
+ break;
+ case SSI2_BAUD:
+ cscr = (cscr & (~CCM_CSCR_SSI2)) |
+ (pll_num << CCM_CSCR_SSI2_OFFSET);
+ break;
+ default:
+ pr_info("Can't choose its clock source: %d\n", clk);
+ break;
+ }
+ __raw_writel(cscr, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ spin_unlock_irqrestore(&mxc_crm_lock, flags);
+ return;
+}
+
+/*!
+ * This function sets the divider value for a clock.
+ *
+ * @param clk as defined in enum mxc_clocks
+ * @param div the division factor to be used for the clock (For SSI & CSI, pass
+ * in 2 times the expected division value to account for FP vals on certain
+ * platforms)
+ */
+void mxc_set_clocks_div(enum mxc_clocks clk, unsigned int div)
+{
+ volatile unsigned long reg;
+ unsigned long flags;
+
+ spin_lock_irqsave(&mxc_crm_lock, flags);
+
+ switch (clk) {
+ case SSI2_BAUD:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ reg = (reg & (~CCM_PCDR0_SSI2BAUDDIV_MASK)) |
+ ((div - 1) << CCM_PCDR0_SSI2BAUDDIV_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ break;
+ case SSI1_BAUD:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ reg = (reg & (~CCM_PCDR0_SSI1BAUDDIV_MASK)) |
+ ((div - 1) << CCM_PCDR0_SSI1BAUDDIV_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ break;
+ case NFC_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ reg = (reg & (~CCM_PCDR0_NFCDIV_MASK)) |
+ ((div - 1) << CCM_PCDR0_NFCDIV_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ break;
+ case PERCLK1:
+ case UART4_BAUD:
+ case UART3_BAUD:
+ case UART2_BAUD:
+ case UART1_BAUD:
+ case GPT3_CLK:
+ case GPT2_CLK:
+ case GPT1_CLK:
+ case PWM_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ reg = (reg & (~CCM_PCDR1_PERDIV1_MASK)) |
+ ((div - 1) << CCM_PCDR1_PERDIV1_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ break;
+ case PERCLK2:
+ case SDHC2_CLK:
+ case SDHC1_CLK:
+ case CSPI3_CLK:
+ case CSPI2_CLK:
+ case CSPI1_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ reg = (reg & (~CCM_PCDR1_PERDIV2_MASK)) |
+ ((div - 1) << CCM_PCDR1_PERDIV2_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ break;
+ case PERCLK3:
+ case LCDC_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ reg = (reg & (~CCM_PCDR1_PERDIV3_MASK)) |
+ ((div - 1) << CCM_PCDR1_PERDIV3_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ break;
+ case PERCLK4:
+ case CSI_BAUD:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ reg = (reg & (~CCM_PCDR1_PERDIV4_MASK)) |
+ ((div - 1) << CCM_PCDR1_PERDIV4_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR1);
+ break;
+ case USB_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ reg = (reg & (~CCM_CSCR_USB_MASK)) |
+ ((div - 1) << CCM_CSCR_USB_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ break;
+ case IPG_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ reg = (reg & (~CCM_CSCR_IPDIV)) |
+ ((div - 1) << CCM_CSCR_IPDIV_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ break;
+ case CPU_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ reg = (reg & (~CCM_CSCR_PRESC_MASK)) |
+ ((div - 1) << CCM_CSCR_PRESC_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ break;
+ case AHB_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ reg = (reg & (~CCM_CSCR_BCLK_MASK)) |
+ ((div - 1) << CCM_CSCR_BCLK_OFFSET);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ break;
+ default:
+ break;
+ }
+
+ spin_unlock_irqrestore(&mxc_crm_lock, flags);
+}
+
+static void __mxc_clks_config(enum mxc_clocks clk, int enable)
+{
+ unsigned long flags, reg_up = 0;
+ volatile unsigned long reg0, reg1;
+
+ spin_lock_irqsave(&mxc_crm_lock, flags);
+
+ reg0 = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ reg1 = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR1);
+
+ switch (clk) {
+ case CSI_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_PERCLK4_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_CSI_OFFSET, enable);
+ break;
+ case DMA_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_DMA_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_DMA_OFFSET, enable);
+ break;
+ case BROM_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_BROM_OFFSET, enable);
+ break;
+ case EMMA_PRP_CLK:
+ __enable_emma_clk(MXC_CLK_EMMA_PRP);
+ goto clk_cfg_out;
+ break;
+ case EMMA_PP_CLK:
+ __enable_emma_clk(MXC_CLK_EMMA_PP);
+ goto clk_cfg_out;
+ break;
+ case LCDC_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_LCDC_OFFSET, enable);
+ break;
+ case SLCDC_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SLCDC_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_SLCDC_OFFSET, enable);
+ break;
+ case USB_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_HCLK_USBOTG_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_USBOTG_OFFSET, enable);
+ break;
+ case SSI1_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SSI1_BAUD_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SSI1_OFFSET, enable);
+ break;
+ case SSI2_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SSI2_BAUD_OFFSET, enable);
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SSI2_OFFSET, enable);
+ break;
+ case NFC_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_NFC_OFFSET, enable);
+ break;
+ case UART1_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_UART1_OFFSET, enable);
+ break;
+ case UART2_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_UART2_OFFSET, enable);
+ break;
+ case UART3_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_UART3_OFFSET, enable);
+ break;
+ case UART4_BAUD:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_UART4_OFFSET, enable);
+ break;
+ case WDOG_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_WDT_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case CSPI3_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_CSPI3_OFFSET, enable);
+ break;
+ case CSPI2_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_CSPI2_OFFSET, enable);
+ break;
+ case CSPI1_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_CSPI1_OFFSET, enable);
+ break;
+ case GPIO_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_GPIO_OFFSET, enable);
+ break;
+ case GPT3_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_GPT3_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case GPT2_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_GPT2_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case GPT1_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_GPT1_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case I2C1_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_I2C_OFFSET, enable);
+ break;
+ case KPP_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_KPP_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case OWIRE_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_OWIRE_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case PWM_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_PWM_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case RTC_CLK:
+ MXC_REG_BIT_MOD(reg1, CCM_PCCR1_RTC_OFFSET, enable);
+ reg_up = 1;
+ break;
+ case SDHC2_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SDHC2_OFFSET, enable);
+ break;
+ case SDHC1_CLK:
+ MXC_REG_BIT_MOD(reg0, CCM_PCCR0_SDHC1_OFFSET, enable);
+ break;
+ default:
+ goto clk_cfg_out;
+ }
+ if (reg_up == 0) {
+ __raw_writel(reg0, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ } else if (reg_up == 1) {
+ __raw_writel(reg1, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR1);
+ } else {
+ __raw_writel(reg0, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR0);
+ __raw_writel(reg1, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCCR1);
+ }
+
+ clk_cfg_out:
+ spin_unlock_irqrestore(&mxc_crm_lock, flags);
+}
+
+/*!
+ * This function is called to enable the individual module clocks
+ *
+ * @param clk as defined in enum mxc_clocks
+ */
+
+void mxc_clks_enable(enum mxc_clocks clk)
+{
+ __mxc_clks_config(clk, 1);
+}
+
+/*!
+ * This function is called to disable the individual module clocks
+ *
+ * @param clk as defined in enum mxc_clocks
+ */
+void mxc_clks_disable(enum mxc_clocks clk)
+{
+ __mxc_clks_config(clk, 0);
+}
+
+/*!
+ * This function is used to modify PLL registers to generate the required
+ * frequency.
+ *
+ * @param pll_num the PLL that you wish to modify
+ * @param mfi multiplication factor integer part
+ * @param pdf pre-division factor
+ * @param mfd multiplication factor denominator
+ * @param mfn multiplication factor numerator
+ */
+void mxc_pll_set(enum plls pll_num, unsigned int mfi, unsigned int pdf,
+ unsigned int mfd, unsigned int mfn)
+{
+ volatile unsigned long cscr;
+ unsigned long flags;
+ unsigned long new_pll = 0;
+
+ spin_lock_irqsave(&mxc_crm_lock, flags);
+
+ if (pll_num == MCUPLL) {
+ /* Change the Pll value */
+ new_pll = (mfi << CCM_MPCTL0_MFI_OFFSET) |
+ (mfn << CCM_MPCTL0_MFN_OFFSET) |
+ (mfd << CCM_MPCTL0_MFD_OFFSET) |
+ (pdf << CCM_MPCTL0_PD_OFFSET);
+
+ __raw_writel(new_pll, IO_ADDRESS(CCM_BASE_ADDR) + CCM_MPCTL0);
+ /* Swap to reference clock and disable PLL */
+ cscr = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ cscr |= CCM_CSCR_MPLLRES;
+ __raw_writel(cscr, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ } else {
+ if (pll_num == SERIALPLL) {
+ /* Change the Pll value */
+ new_pll = (mfi << CCM_SPCTL0_MFI_OFFSET) |
+ (mfn << CCM_SPCTL0_MFN_OFFSET) |
+ (mfd << CCM_SPCTL0_MFD_OFFSET) |
+ (pdf << CCM_SPCTL0_PD_OFFSET);
+
+ __raw_writel(new_pll,
+ IO_ADDRESS(CCM_BASE_ADDR) + CCM_SPCTL0);
+ /* Swap to reference clock and disable PLL */
+ cscr =
+ __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ cscr |= CCM_CSCR_SPLLRES;
+ __raw_writel(cscr,
+ IO_ADDRESS(CCM_BASE_ADDR) + CCM_CSCR);
+ }
+ }
+
+ spin_unlock_irqrestore(&mxc_crm_lock, flags);
+}
+
+/*!
+ * Configure clock output on CKO pins
+ *
+ * @param output clock output pin
+ * @param clk clock source to output
+ * @param div CLKO divider
+ *
+ */
+void mxc_set_clock_output(enum mxc_clk_out output, enum mxc_clocks clk, int div)
+{
+ unsigned long flags;
+ volatile unsigned long reg;
+
+ if (output != CKO) {
+ return;
+ }
+
+ spin_lock_irqsave(&mxc_crm_lock, flags);
+
+ switch (clk) {
+ case CKIH_CLK:
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_CCSR);
+ reg = (reg & (~0x1f)) | 0x2;
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_CCSR);
+
+ reg = __raw_readl(IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+ reg = (reg & (~0x03c00000)) | 0x02000000 | ((div - 1) << 22);
+ __raw_writel(reg, IO_ADDRESS(CCM_BASE_ADDR) + CCM_PCDR0);
+
+ break;
+ default:
+ break;
+ };
+
+ spin_unlock_irqrestore(&mxc_crm_lock, flags);
+ return;
+}
+
+EXPORT_SYMBOL(mxc_pll_set);
+EXPORT_SYMBOL(mxc_pll_clock);
+EXPORT_SYMBOL(mxc_get_clocks);
+EXPORT_SYMBOL(mxc_set_clocks_pll);
+EXPORT_SYMBOL(mxc_set_clocks_div);
+EXPORT_SYMBOL(mxc_clks_disable);
+EXPORT_SYMBOL(mxc_clks_enable);
+EXPORT_SYMBOL(mxc_set_clock_output);
+EXPORT_SYMBOL(mxc_get_clocks_parent);
diff -urN linux-2.6.26/arch/arm/mach-mx21/crm_regs.h linux-2.6.26-lab126/arch/arm/mach-mx21/crm_regs.h
--- linux-2.6.26/arch/arm/mach-mx21/crm_regs.h 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/crm_regs.h 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __ARCH_ARM_MACH_MX21_CRM_REGS_H__
+#define __ARCH_ARM_MACH_MX21_CRM_REGS_H__
+
+#include
+
+/* Register offsets */
+#define CCM_CSCR 0x0
+#define CCM_MPCTL0 0x4
+#define CCM_MPCTL1 0x8
+#define CCM_SPCTL0 0xC
+#define CCM_SPCTL1 0x10
+#define CCM_OSC26MCTL 0x14
+#define CCM_PCDR0 0x18
+#define CCM_PCDR1 0x1C
+#define CCM_PCCR0 0x20
+#define CCM_PCCR1 0x24
+#define CCM_CCSR 0x28
+#define CCM_PMCTL 0x2C
+#define CCM_PMCOUNT 0x30
+#define CCM_WKGDCTL 0x34
+
+#define CCM_CSCR_PRESC_OFFSET 29
+#define CCM_CSCR_PRESC_MASK (0x7 << 29)
+#define CCM_CSCR_USB_OFFSET 26
+#define CCM_CSCR_USB_MASK (0x7 << 26)
+#define CCM_CSCR_SD_OFFSET 24
+#define CCM_CSCR_SD_MASK (0x3 << 24)
+#define CCM_CSCR_SPLLRES (1 << 22)
+#define CCM_CSCR_MPLLRES (1 << 21)
+#define CCM_CSCR_SSI2 (1 << 20)
+#define CCM_CSCR_SSI2_OFFSET 20
+#define CCM_CSCR_SSI1 (1 << 19)
+#define CCM_CSCR_SSI1_OFFSET 19
+#define CCM_CSCR_SP (1 << 17)
+#define CCM_CSCR_MCU (1 << 16)
+#define CCM_CSCR_BCLK_OFFSET 10
+#define CCM_CSCR_BCLK_MASK (0xF << 10)
+#define CCM_CSCR_IPDIV_OFFSET 9
+#define CCM_CSCR_IPDIV (1 << 9)
+#define CCM_CSCR_OSC26MDIV (1 << 4)
+#define CCM_CSCR_OSC26M (1 << 3)
+#define CCM_CSCR_FPM (1 << 2)
+#define CCM_CSCR_SPEN (1 << 1)
+#define CCM_CSCR_MPEN (1 << 0)
+
+#define CCM_MPCTL0_CPLM (1 << 31)
+#define CCM_MPCTL0_PD_OFFSET 26
+#define CCM_MPCTL0_PD_MASK (0xF << 26)
+#define CCM_MPCTL0_MFD_OFFSET 16
+#define CCM_MPCTL0_MFD_MASK (0x3FF << 16)
+#define CCM_MPCTL0_MFI_OFFSET 10
+#define CCM_MPCTL0_MFI_MASK (0xF << 10)
+#define CCM_MPCTL0_MFN_OFFSET 0
+#define CCM_MPCTL0_MFN_MASK 0x3FF
+
+#define CCM_MPCTL1_LF (1 << 15)
+#define CCM_MPCTL1_BRMO (1 << 6)
+
+#define CCM_SPCTL0_CPLM (1 << 31)
+#define CCM_SPCTL0_PD_OFFSET 26
+#define CCM_SPCTL0_PD_MASK (0xF << 26)
+#define CCM_SPCTL0_MFD_OFFSET 16
+#define CCM_SPCTL0_MFD_MASK (0x3FF << 16)
+#define CCM_SPCTL0_MFI_OFFSET 10
+#define CCM_SPCTL0_MFI_MASK (0xF << 10)
+#define CCM_SPCTL0_MFN_OFFSET 0
+#define CCM_SPCTL0_MFN_MASK 0x3FF
+
+#define CCM_SPCTL1_LF (1 << 15)
+#define CCM_SPCTL1_BRMO (1 << 6)
+
+#define CCM_OSC26MCTL_PEAK_OFFSET 16
+#define CCM_OSC26MCTL_PEAK_MASK (0x3 << 16)
+#define CCM_OSC26MCTL_AGC_OFFSET 8
+#define CCM_OSC26MCTL_AGC_MASK (0x3F << 8)
+
+#define CCM_PCDR0_SSI2BAUDDIV_OFFSET 26
+#define CCM_PCDR0_SSI2BAUDDIV_MASK (0x3F << 26)
+#define CCM_PCDR0_SSI1BAUDDIV_OFFSET 16
+#define CCM_PCDR0_SSI1BAUDDIV_MASK (0x3F << 16)
+#define CCM_PCDR0_NFCDIV_OFFSET 12
+#define CCM_PCDR0_NFCDIV_MASK (0xF << 12)
+#define CCM_PCDR0_CLKO48MDIV_OFFSET 5
+#define CCM_PCDR0_CLKO48MDIV_MASK (0x7 << 5)
+#define CCM_PCDR0_FIRIDIV_OFFSET 0
+#define CCM_PCDR0_FIRIDIV_MASK 0x1F
+
+#define CCM_PCDR1_PERDIV4_OFFSET 24
+#define CCM_PCDR1_PERDIV4_MASK (0x3F << 24)
+#define CCM_PCDR1_PERDIV3_OFFSET 16
+#define CCM_PCDR1_PERDIV3_MASK (0x3F << 16)
+#define CCM_PCDR1_PERDIV2_OFFSET 8
+#define CCM_PCDR1_PERDIV2_MASK (0x3F << 8)
+#define CCM_PCDR1_PERDIV1_OFFSET 0
+#define CCM_PCDR1_PERDIV1_MASK 0x3F
+
+#define CCM_PCCR0_HCLK_CSI_OFFSET 31
+#define CCM_PCCR0_HCLK_DMA_OFFSET 30
+#define CCM_PCCR0_HCLK_BROM_OFFSET 28
+#define CCM_PCCR0_HCLK_EMMA_OFFSET 27
+#define CCM_PCCR0_HCLK_LCDC_OFFSET 26
+#define CCM_PCCR0_HCLK_SLCDC_OFFSET 25
+#define CCM_PCCR0_HCLK_USBOTG_OFFSET 24
+#define CCM_PCCR0_HCLK_BMI_OFFSET 23
+#define CCM_PCCR0_PERCLK4_OFFSET 22
+#define CCM_PCCR0_SLCDC_OFFSET 21
+#define CCM_PCCR0_FIRI_BAUD_OFFSET 20
+#define CCM_PCCR0_NFC_OFFSET 19
+#define CCM_PCCR0_PERCLK3_OFFSET 18
+#define CCM_PCCR0_SSI1_BAUD_OFFSET 17
+#define CCM_PCCR0_SSI2_BAUD_OFFSET 16
+#define CCM_PCCR0_EMMA_OFFSET 15
+#define CCM_PCCR0_USBOTG_OFFSET 14
+#define CCM_PCCR0_DMA_OFFSET 13
+#define CCM_PCCR0_I2C_OFFSET 12
+#define CCM_PCCR0_GPIO_OFFSET 11
+#define CCM_PCCR0_SDHC2_OFFSET 10
+#define CCM_PCCR0_SDHC1_OFFSET 9
+#define CCM_PCCR0_FIRI_OFFSET 8
+#define CCM_PCCR0_SSI2_OFFSET 7
+#define CCM_PCCR0_SSI1_OFFSET 6
+#define CCM_PCCR0_CSPI2_OFFSET 5
+#define CCM_PCCR0_CSPI1_OFFSET 4
+#define CCM_PCCR0_UART4_OFFSET 3
+#define CCM_PCCR0_UART3_OFFSET 2
+#define CCM_PCCR0_UART2_OFFSET 1
+#define CCM_PCCR0_UART1_OFFSET 0
+
+#define CCM_PCCR1_OWIRE_OFFSET 31
+#define CCM_PCCR1_KPP_OFFSET 30
+#define CCM_PCCR1_RTC_OFFSET 29
+#define CCM_PCCR1_PWM_OFFSET 28
+#define CCM_PCCR1_GPT3_OFFSET 27
+#define CCM_PCCR1_GPT2_OFFSET 26
+#define CCM_PCCR1_GPT1_OFFSET 25
+#define CCM_PCCR1_WDT_OFFSET 24
+#define CCM_PCCR1_CSPI3_OFFSET 23
+#define CCM_PCCR1_RTIC_OFFSET 22
+#define CCM_PCCR1_RNGA_OFFSET 21
+
+#define CCM_CCSR_32KSR (1 << 15)
+#define CCM_CCSR_CLKOSEL_OFFSET 0
+#define CCM_CCSR_CLKOSEL_MASK 0x1f
+
+#define CKIH_CLK_FREQ 26000000 /* 26M reference clk */
+#define CKIL_CLK_FREQ (32768 * 512) /* 32.768k oscillator in */
+
+#define SYS_FMCR 0x8 /* Functional Muxing Control Reg */
+
+#endif /* __ARCH_ARM_MACH_MX21_CRM_REGS_H__ */
diff -urN linux-2.6.26/arch/arm/mach-mx21/devices.c linux-2.6.26-lab126/arch/arm/mach-mx21/devices.c
--- linux-2.6.26/arch/arm/mach-mx21/devices.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.26-lab126/arch/arm/mach-mx21/devices.c 2010-08-10 04:14:09.000000000 -0400
@@ -0,0 +1,278 @@
+/*
+ * Author: MontaVista Software, Inc.
+ *