aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-04-13 17:41:05 -0400
committerDavid S. Miller <davem@davemloft.net>2009-04-13 17:41:05 -0400
commit83400207a07584539366f6859362db6872809a12 (patch)
treefad187f8b3bebf1b387ec42ef8143e6f4e49a256
parent0d489ffb76de0fe804cf06a9d4d11fa7342d74b9 (diff)
parent80a04d3f2f94fb68b5df05e3ac6697130bc3467a (diff)
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts: MAINTAINERS
-rw-r--r--Documentation/DocBook/Makefile11
-rw-r--r--Documentation/cgroups/cpuacct.txt18
-rw-r--r--Documentation/feature-removal-schedule.txt9
-rw-r--r--Documentation/infiniband/ipoib.txt45
-rw-r--r--Documentation/input/rotary-encoder.txt101
-rw-r--r--Documentation/kbuild/makefiles.txt83
-rw-r--r--Documentation/sparse.txt8
-rw-r--r--Documentation/trace/ftrace.txt (renamed from Documentation/ftrace.txt)0
-rw-r--r--Documentation/trace/kmemtrace.txt (renamed from Documentation/vm/kmemtrace.txt)0
-rw-r--r--Documentation/trace/mmiotrace.txt (renamed from Documentation/tracers/mmiotrace.txt)0
-rw-r--r--Documentation/trace/tracepoints.txt (renamed from Documentation/tracepoints.txt)0
-rw-r--r--MAINTAINERS1585
-rw-r--r--Makefile8
-rw-r--r--arch/Kconfig3
-rw-r--r--arch/arm/configs/magician_defconfig6
-rw-r--r--arch/arm/include/asm/sizes.h1
-rw-r--r--arch/arm/mach-at91/include/mach/board.h2
-rw-r--r--arch/arm/mach-omap1/clock.c21
-rw-r--r--arch/arm/mach-pxa/Kconfig9
-rw-r--r--arch/arm/mach-pxa/Makefile1
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c2
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c11
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c10
-rw-r--r--arch/arm/mach-pxa/colibri-pxa3xx.c35
-rw-r--r--arch/arm/mach-pxa/csb701.c5
-rw-r--r--arch/arm/mach-pxa/e740.c2
-rw-r--r--arch/arm/mach-pxa/e750.c2
-rw-r--r--arch/arm/mach-pxa/e800.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c86
-rw-r--r--arch/arm/mach-pxa/include/mach/colibri.h7
-rw-r--r--arch/arm/mach-pxa/include/mach/magician.h4
-rw-r--r--arch/arm/mach-pxa/include/mach/palmld.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/palmt5.h1
-rw-r--r--arch/arm/mach-pxa/include/mach/palmte2.h68
-rw-r--r--arch/arm/mach-pxa/include/mach/palmtx.h2
-rw-r--r--arch/arm/mach-pxa/magician.c84
-rw-r--r--arch/arm/mach-pxa/mioa701.c6
-rw-r--r--arch/arm/mach-pxa/palmld.c36
-rw-r--r--arch/arm/mach-pxa/palmt5.c35
-rw-r--r--arch/arm/mach-pxa/palmte2.c466
-rw-r--r--arch/arm/mach-pxa/palmtx.c35
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mm/mmu.c11
-rw-r--r--arch/frv/include/asm/Kbuild (renamed from include/asm-frv/Kbuild)0
-rw-r--r--arch/frv/include/asm/atomic.h (renamed from include/asm-frv/atomic.h)0
-rw-r--r--arch/frv/include/asm/auxvec.h (renamed from include/asm-frv/auxvec.h)0
-rw-r--r--arch/frv/include/asm/ax88796.h (renamed from include/asm-frv/ax88796.h)0
-rw-r--r--arch/frv/include/asm/bitops.h (renamed from include/asm-frv/bitops.h)0
-rw-r--r--arch/frv/include/asm/bug.h (renamed from include/asm-frv/bug.h)0
-rw-r--r--arch/frv/include/asm/bugs.h (renamed from include/asm-frv/bugs.h)0
-rw-r--r--arch/frv/include/asm/busctl-regs.h (renamed from include/asm-frv/busctl-regs.h)0
-rw-r--r--arch/frv/include/asm/byteorder.h (renamed from include/asm-frv/byteorder.h)0
-rw-r--r--arch/frv/include/asm/cache.h (renamed from include/asm-frv/cache.h)0
-rw-r--r--arch/frv/include/asm/cacheflush.h (renamed from include/asm-frv/cacheflush.h)0
-rw-r--r--arch/frv/include/asm/checksum.h (renamed from include/asm-frv/checksum.h)0
-rw-r--r--arch/frv/include/asm/cpu-irqs.h (renamed from include/asm-frv/cpu-irqs.h)0
-rw-r--r--arch/frv/include/asm/cpumask.h (renamed from include/asm-frv/cpumask.h)0
-rw-r--r--arch/frv/include/asm/cputime.h (renamed from include/asm-frv/cputime.h)0
-rw-r--r--arch/frv/include/asm/current.h (renamed from include/asm-frv/current.h)0
-rw-r--r--arch/frv/include/asm/delay.h (renamed from include/asm-frv/delay.h)0
-rw-r--r--arch/frv/include/asm/device.h (renamed from include/asm-frv/device.h)0
-rw-r--r--arch/frv/include/asm/div64.h (renamed from include/asm-frv/div64.h)0
-rw-r--r--arch/frv/include/asm/dm9000.h (renamed from include/asm-frv/dm9000.h)0
-rw-r--r--arch/frv/include/asm/dma-mapping.h (renamed from include/asm-frv/dma-mapping.h)0
-rw-r--r--arch/frv/include/asm/dma.h (renamed from include/asm-frv/dma.h)0
-rw-r--r--arch/frv/include/asm/elf.h (renamed from include/asm-frv/elf.h)0
-rw-r--r--arch/frv/include/asm/emergency-restart.h (renamed from include/asm-frv/emergency-restart.h)0
-rw-r--r--arch/frv/include/asm/errno.h (renamed from include/asm-frv/errno.h)0
-rw-r--r--arch/frv/include/asm/fb.h (renamed from include/asm-frv/fb.h)0
-rw-r--r--arch/frv/include/asm/fcntl.h (renamed from include/asm-frv/fcntl.h)0
-rw-r--r--arch/frv/include/asm/fpu.h (renamed from include/asm-frv/fpu.h)0
-rw-r--r--arch/frv/include/asm/ftrace.h (renamed from include/asm-frv/ftrace.h)0
-rw-r--r--arch/frv/include/asm/futex.h (renamed from include/asm-frv/futex.h)0
-rw-r--r--arch/frv/include/asm/gdb-stub.h (renamed from include/asm-frv/gdb-stub.h)0
-rw-r--r--arch/frv/include/asm/gpio-regs.h (renamed from include/asm-frv/gpio-regs.h)0
-rw-r--r--arch/frv/include/asm/hardirq.h (renamed from include/asm-frv/hardirq.h)0
-rw-r--r--arch/frv/include/asm/highmem.h (renamed from include/asm-frv/highmem.h)0
-rw-r--r--arch/frv/include/asm/hw_irq.h (renamed from include/asm-frv/hw_irq.h)0
-rw-r--r--arch/frv/include/asm/init.h (renamed from include/asm-frv/init.h)0
-rw-r--r--arch/frv/include/asm/io.h (renamed from include/asm-frv/io.h)0
-rw-r--r--arch/frv/include/asm/ioctl.h (renamed from include/asm-frv/ioctl.h)0
-rw-r--r--arch/frv/include/asm/ioctls.h (renamed from include/asm-frv/ioctls.h)0
-rw-r--r--arch/frv/include/asm/ipcbuf.h (renamed from include/asm-frv/ipcbuf.h)0
-rw-r--r--arch/frv/include/asm/irc-regs.h (renamed from include/asm-frv/irc-regs.h)0
-rw-r--r--arch/frv/include/asm/irq.h (renamed from include/asm-frv/irq.h)0
-rw-r--r--arch/frv/include/asm/irq_regs.h (renamed from include/asm-frv/irq_regs.h)0
-rw-r--r--arch/frv/include/asm/kdebug.h (renamed from include/asm-frv/kdebug.h)0
-rw-r--r--arch/frv/include/asm/kmap_types.h (renamed from include/asm-frv/kmap_types.h)0
-rw-r--r--arch/frv/include/asm/linkage.h (renamed from include/asm-frv/linkage.h)0
-rw-r--r--arch/frv/include/asm/local.h (renamed from include/asm-frv/local.h)0
-rw-r--r--arch/frv/include/asm/math-emu.h (renamed from include/asm-frv/math-emu.h)0
-rw-r--r--arch/frv/include/asm/mb-regs.h (renamed from include/asm-frv/mb-regs.h)0
-rw-r--r--arch/frv/include/asm/mb86943a.h (renamed from include/asm-frv/mb86943a.h)0
-rw-r--r--arch/frv/include/asm/mb93091-fpga-irqs.h (renamed from include/asm-frv/mb93091-fpga-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93093-fpga-irqs.h (renamed from include/asm-frv/mb93093-fpga-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93493-irqs.h (renamed from include/asm-frv/mb93493-irqs.h)0
-rw-r--r--arch/frv/include/asm/mb93493-regs.h (renamed from include/asm-frv/mb93493-regs.h)0
-rw-r--r--arch/frv/include/asm/mc146818rtc.h (renamed from include/asm-frv/mc146818rtc.h)0
-rw-r--r--arch/frv/include/asm/mem-layout.h (renamed from include/asm-frv/mem-layout.h)0
-rw-r--r--arch/frv/include/asm/mman.h (renamed from include/asm-frv/mman.h)0
-rw-r--r--arch/frv/include/asm/mmu.h (renamed from include/asm-frv/mmu.h)0
-rw-r--r--arch/frv/include/asm/mmu_context.h (renamed from include/asm-frv/mmu_context.h)0
-rw-r--r--arch/frv/include/asm/module.h (renamed from include/asm-frv/module.h)0
-rw-r--r--arch/frv/include/asm/msgbuf.h (renamed from include/asm-frv/msgbuf.h)0
-rw-r--r--arch/frv/include/asm/mutex.h (renamed from include/asm-frv/mutex.h)0
-rw-r--r--arch/frv/include/asm/page.h (renamed from include/asm-frv/page.h)0
-rw-r--r--arch/frv/include/asm/param.h (renamed from include/asm-frv/param.h)0
-rw-r--r--arch/frv/include/asm/pci.h (renamed from include/asm-frv/pci.h)0
-rw-r--r--arch/frv/include/asm/percpu.h (renamed from include/asm-frv/percpu.h)0
-rw-r--r--arch/frv/include/asm/pgalloc.h (renamed from include/asm-frv/pgalloc.h)0
-rw-r--r--arch/frv/include/asm/pgtable.h (renamed from include/asm-frv/pgtable.h)6
-rw-r--r--arch/frv/include/asm/poll.h (renamed from include/asm-frv/poll.h)0
-rw-r--r--arch/frv/include/asm/posix_types.h (renamed from include/asm-frv/posix_types.h)0
-rw-r--r--arch/frv/include/asm/processor.h (renamed from include/asm-frv/processor.h)0
-rw-r--r--arch/frv/include/asm/ptrace.h (renamed from include/asm-frv/ptrace.h)0
-rw-r--r--arch/frv/include/asm/registers.h (renamed from include/asm-frv/registers.h)0
-rw-r--r--arch/frv/include/asm/resource.h (renamed from include/asm-frv/resource.h)0
-rw-r--r--arch/frv/include/asm/scatterlist.h (renamed from include/asm-frv/scatterlist.h)0
-rw-r--r--arch/frv/include/asm/sections.h (renamed from include/asm-frv/sections.h)0
-rw-r--r--arch/frv/include/asm/segment.h (renamed from include/asm-frv/segment.h)0
-rw-r--r--arch/frv/include/asm/sembuf.h (renamed from include/asm-frv/sembuf.h)0
-rw-r--r--arch/frv/include/asm/serial-regs.h (renamed from include/asm-frv/serial-regs.h)0
-rw-r--r--arch/frv/include/asm/serial.h (renamed from include/asm-frv/serial.h)0
-rw-r--r--arch/frv/include/asm/setup.h (renamed from include/asm-frv/setup.h)0
-rw-r--r--arch/frv/include/asm/shmbuf.h (renamed from include/asm-frv/shmbuf.h)0
-rw-r--r--arch/frv/include/asm/shmparam.h (renamed from include/asm-frv/shmparam.h)0
-rw-r--r--arch/frv/include/asm/sigcontext.h (renamed from include/asm-frv/sigcontext.h)0
-rw-r--r--arch/frv/include/asm/siginfo.h (renamed from include/asm-frv/siginfo.h)0
-rw-r--r--arch/frv/include/asm/signal.h (renamed from include/asm-frv/signal.h)0
-rw-r--r--arch/frv/include/asm/smp.h (renamed from include/asm-frv/smp.h)0
-rw-r--r--arch/frv/include/asm/socket.h (renamed from include/asm-frv/socket.h)0
-rw-r--r--arch/frv/include/asm/sockios.h (renamed from include/asm-frv/sockios.h)0
-rw-r--r--arch/frv/include/asm/spinlock.h (renamed from include/asm-frv/spinlock.h)0
-rw-r--r--arch/frv/include/asm/spr-regs.h (renamed from include/asm-frv/spr-regs.h)0
-rw-r--r--arch/frv/include/asm/stat.h (renamed from include/asm-frv/stat.h)0
-rw-r--r--arch/frv/include/asm/statfs.h (renamed from include/asm-frv/statfs.h)0
-rw-r--r--arch/frv/include/asm/string.h (renamed from include/asm-frv/string.h)0
-rw-r--r--arch/frv/include/asm/suspend.h (renamed from include/asm-frv/suspend.h)0
-rw-r--r--arch/frv/include/asm/swab.h (renamed from include/asm-frv/swab.h)0
-rw-r--r--arch/frv/include/asm/system.h (renamed from include/asm-frv/system.h)0
-rw-r--r--arch/frv/include/asm/termbits.h (renamed from include/asm-frv/termbits.h)0
-rw-r--r--arch/frv/include/asm/termios.h (renamed from include/asm-frv/termios.h)0
-rw-r--r--arch/frv/include/asm/thread_info.h (renamed from include/asm-frv/thread_info.h)6
-rw-r--r--arch/frv/include/asm/timer-regs.h (renamed from include/asm-frv/timer-regs.h)0
-rw-r--r--arch/frv/include/asm/timex.h (renamed from include/asm-frv/timex.h)0
-rw-r--r--arch/frv/include/asm/tlb.h (renamed from include/asm-frv/tlb.h)0
-rw-r--r--arch/frv/include/asm/tlbflush.h (renamed from include/asm-frv/tlbflush.h)0
-rw-r--r--arch/frv/include/asm/topology.h (renamed from include/asm-frv/topology.h)0
-rw-r--r--arch/frv/include/asm/types.h (renamed from include/asm-frv/types.h)0
-rw-r--r--arch/frv/include/asm/uaccess.h (renamed from include/asm-frv/uaccess.h)0
-rw-r--r--arch/frv/include/asm/ucontext.h (renamed from include/asm-frv/ucontext.h)0
-rw-r--r--arch/frv/include/asm/unaligned.h (renamed from include/asm-frv/unaligned.h)0
-rw-r--r--arch/frv/include/asm/unistd.h (renamed from include/asm-frv/unistd.h)0
-rw-r--r--arch/frv/include/asm/user.h (renamed from include/asm-frv/user.h)0
-rw-r--r--arch/frv/include/asm/vga.h (renamed from include/asm-frv/vga.h)0
-rw-r--r--arch/frv/include/asm/virtconvert.h (renamed from include/asm-frv/virtconvert.h)0
-rw-r--r--arch/frv/include/asm/xor.h (renamed from include/asm-frv/xor.h)0
-rw-r--r--arch/ia64/include/asm/unistd.h4
-rw-r--r--arch/ia64/kernel/entry.S2
-rw-r--r--arch/microblaze/Kconfig141
-rw-r--r--arch/microblaze/Kconfig.debug26
-rw-r--r--arch/microblaze/Makefile69
-rw-r--r--arch/microblaze/boot/Makefile17
-rw-r--r--arch/microblaze/configs/nommu_defconfig804
-rw-r--r--arch/microblaze/include/asm/Kbuild26
-rw-r--r--arch/microblaze/include/asm/atomic.h123
-rw-r--r--arch/microblaze/include/asm/auxvec.h0
-rw-r--r--arch/microblaze/include/asm/bitops.h27
-rw-r--r--arch/microblaze/include/asm/bug.h15
-rw-r--r--arch/microblaze/include/asm/bugs.h17
-rw-r--r--arch/microblaze/include/asm/byteorder.h6
-rw-r--r--arch/microblaze/include/asm/cache.h45
-rw-r--r--arch/microblaze/include/asm/cacheflush.h85
-rw-r--r--arch/microblaze/include/asm/checksum.h98
-rw-r--r--arch/microblaze/include/asm/clinkage.h1
-rw-r--r--arch/microblaze/include/asm/cpuinfo.h102
-rw-r--r--arch/microblaze/include/asm/cputable.h0
-rw-r--r--arch/microblaze/include/asm/cputime.h (renamed from include/asm-mn10300/cputime.h)0
-rw-r--r--arch/microblaze/include/asm/current.h21
-rw-r--r--arch/microblaze/include/asm/delay.h72
-rw-r--r--arch/microblaze/include/asm/device.h21
-rw-r--r--arch/microblaze/include/asm/div64.h1
-rw-r--r--arch/microblaze/include/asm/dma-mapping.h129
-rw-r--r--arch/microblaze/include/asm/dma.h16
-rw-r--r--arch/microblaze/include/asm/elf.h30
-rw-r--r--arch/microblaze/include/asm/emergency-restart.h (renamed from include/asm-mn10300/emergency-restart.h)0
-rw-r--r--arch/microblaze/include/asm/entry.h35
-rw-r--r--arch/microblaze/include/asm/errno.h (renamed from include/asm-mn10300/errno.h)0
-rw-r--r--arch/microblaze/include/asm/exceptions.h96
-rw-r--r--arch/microblaze/include/asm/fcntl.h (renamed from include/asm-mn10300/fcntl.h)0
-rw-r--r--arch/microblaze/include/asm/flat.h90
-rw-r--r--arch/microblaze/include/asm/futex.h (renamed from include/asm-mn10300/futex.h)0
-rw-r--r--arch/microblaze/include/asm/gpio.h56
-rw-r--r--arch/microblaze/include/asm/hardirq.h29
-rw-r--r--arch/microblaze/include/asm/hw_irq.h0
-rw-r--r--arch/microblaze/include/asm/io.h209
-rw-r--r--arch/microblaze/include/asm/ioctl.h (renamed from include/asm-mn10300/ioctl.h)0
-rw-r--r--arch/microblaze/include/asm/ioctls.h91
-rw-r--r--arch/microblaze/include/asm/ipc.h (renamed from include/asm-mn10300/ipc.h)0
-rw-r--r--arch/microblaze/include/asm/ipcbuf.h36
-rw-r--r--arch/microblaze/include/asm/irq.h47
-rw-r--r--arch/microblaze/include/asm/irq_regs.h1
-rw-r--r--arch/microblaze/include/asm/irqflags.h123
-rw-r--r--arch/microblaze/include/asm/kdebug.h1
-rw-r--r--arch/microblaze/include/asm/kmap_types.h29
-rw-r--r--arch/microblaze/include/asm/linkage.h15
-rw-r--r--arch/microblaze/include/asm/lmb.h17
-rw-r--r--arch/microblaze/include/asm/local.h (renamed from include/asm-mn10300/local.h)0
-rw-r--r--arch/microblaze/include/asm/mman.h25
-rw-r--r--arch/microblaze/include/asm/mmu.h19
-rw-r--r--arch/microblaze/include/asm/mmu_context.h21
-rw-r--r--arch/microblaze/include/asm/module.h37
-rw-r--r--arch/microblaze/include/asm/msgbuf.h31
-rw-r--r--arch/microblaze/include/asm/mutex.h1
-rw-r--r--arch/microblaze/include/asm/namei.h22
-rw-r--r--arch/microblaze/include/asm/of_device.h45
-rw-r--r--arch/microblaze/include/asm/of_platform.h64
-rw-r--r--arch/microblaze/include/asm/page.h140
-rw-r--r--arch/microblaze/include/asm/param.h30
-rw-r--r--arch/microblaze/include/asm/pci-bridge.h1
-rw-r--r--arch/microblaze/include/asm/pci.h1
-rw-r--r--arch/microblaze/include/asm/percpu.h (renamed from include/asm-mn10300/percpu.h)0
-rw-r--r--arch/microblaze/include/asm/pgalloc.h14
-rw-r--r--arch/microblaze/include/asm/pgtable.h54
-rw-r--r--arch/microblaze/include/asm/poll.h (renamed from include/asm-mn10300/poll.h)0
-rw-r--r--arch/microblaze/include/asm/posix_types.h73
-rw-r--r--arch/microblaze/include/asm/processor.h93
-rw-r--r--arch/microblaze/include/asm/prom.h313
-rw-r--r--arch/microblaze/include/asm/ptrace.h68
-rw-r--r--arch/microblaze/include/asm/pvr.h209
-rw-r--r--arch/microblaze/include/asm/registers.h33
-rw-r--r--arch/microblaze/include/asm/resource.h (renamed from include/asm-mn10300/resource.h)0
-rw-r--r--arch/microblaze/include/asm/scatterlist.h28
-rw-r--r--arch/microblaze/include/asm/sections.h25
-rw-r--r--arch/microblaze/include/asm/segment.h43
-rw-r--r--arch/microblaze/include/asm/selfmod.h24
-rw-r--r--arch/microblaze/include/asm/sembuf.h34
-rw-r--r--arch/microblaze/include/asm/serial.h14
-rw-r--r--arch/microblaze/include/asm/setup.h44
-rw-r--r--arch/microblaze/include/asm/shmbuf.h42
-rw-r--r--arch/microblaze/include/asm/shmparam.h6
-rw-r--r--arch/microblaze/include/asm/sigcontext.h20
-rw-r--r--arch/microblaze/include/asm/siginfo.h15
-rw-r--r--arch/microblaze/include/asm/signal.h165
-rw-r--r--arch/microblaze/include/asm/socket.h66
-rw-r--r--arch/microblaze/include/asm/sockios.h23
-rw-r--r--arch/microblaze/include/asm/stat.h73
-rw-r--r--arch/microblaze/include/asm/statfs.h (renamed from include/asm-mn10300/statfs.h)0
-rw-r--r--arch/microblaze/include/asm/string.h24
-rw-r--r--arch/microblaze/include/asm/swab.h8
-rw-r--r--arch/microblaze/include/asm/syscalls.h45
-rw-r--r--arch/microblaze/include/asm/system.h91
-rw-r--r--arch/microblaze/include/asm/termbits.h203
-rw-r--r--arch/microblaze/include/asm/termios.h88
-rw-r--r--arch/microblaze/include/asm/thread_info.h159
-rw-r--r--arch/microblaze/include/asm/timex.h18
-rw-r--r--arch/microblaze/include/asm/tlb.h16
-rw-r--r--arch/microblaze/include/asm/tlbflush.h20
-rw-r--r--arch/microblaze/include/asm/topology.h11
-rw-r--r--arch/microblaze/include/asm/types.h38
-rw-r--r--arch/microblaze/include/asm/uaccess.h134
-rw-r--r--arch/microblaze/include/asm/ucontext.h22
-rw-r--r--arch/microblaze/include/asm/unaligned.h22
-rw-r--r--arch/microblaze/include/asm/unistd.h421
-rw-r--r--arch/microblaze/include/asm/user.h0
-rw-r--r--arch/microblaze/include/asm/vga.h0
-rw-r--r--arch/microblaze/include/asm/xor.h (renamed from include/asm-mn10300/xor.h)0
-rw-r--r--arch/microblaze/kernel/Makefile19
-rw-r--r--arch/microblaze/kernel/asm-offsets.c115
-rw-r--r--arch/microblaze/kernel/cpu/Makefile8
-rw-r--r--arch/microblaze/kernel/cpu/cache.c258
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c101
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo-static.c144
-rw-r--r--arch/microblaze/kernel/cpu/cpuinfo.c86
-rw-r--r--arch/microblaze/kernel/cpu/mb.c148
-rw-r--r--arch/microblaze/kernel/cpu/pvr.c81
-rw-r--r--arch/microblaze/kernel/early_printk.c107
-rw-r--r--arch/microblaze/kernel/entry-nommu.S596
-rw-r--r--arch/microblaze/kernel/exceptions.c124
-rw-r--r--arch/microblaze/kernel/head.S56
-rw-r--r--arch/microblaze/kernel/heartbeat.c67
-rw-r--r--arch/microblaze/kernel/hw_exception_handler.S458
-rw-r--r--arch/microblaze/kernel/init_task.c29
-rw-r--r--arch/microblaze/kernel/intc.c172
-rw-r--r--arch/microblaze/kernel/irq.c104
-rw-r--r--arch/microblaze/kernel/microblaze_ksyms.c47
-rw-r--r--arch/microblaze/kernel/module.c151
-rw-r--r--arch/microblaze/kernel/of_device.c115
-rw-r--r--arch/microblaze/kernel/of_platform.c201
-rw-r--r--arch/microblaze/kernel/process.c187
-rw-r--r--arch/microblaze/kernel/prom.c1147
-rw-r--r--arch/microblaze/kernel/prom_parse.c1025
-rw-r--r--arch/microblaze/kernel/ptrace.c182
-rw-r--r--arch/microblaze/kernel/selfmod.c81
-rw-r--r--arch/microblaze/kernel/setup.c199
-rw-r--r--arch/microblaze/kernel/signal.c538
-rw-r--r--arch/microblaze/kernel/sys_microblaze.c227
-rw-r--r--arch/microblaze/kernel/syscall_table.S365
-rw-r--r--arch/microblaze/kernel/timer.c262
-rw-r--r--arch/microblaze/kernel/traps.c107
-rw-r--r--arch/microblaze/kernel/vmlinux.lds.S163
-rw-r--r--arch/microblaze/lib/Makefile13
-rw-r--r--arch/microblaze/lib/checksum.c163
-rw-r--r--arch/microblaze/lib/fastcopy.S662
-rw-r--r--arch/microblaze/lib/memcpy.c161
-rw-r--r--arch/microblaze/lib/memmove.c175
-rw-r--r--arch/microblaze/lib/memset.c82
-rw-r--r--arch/microblaze/lib/uaccess.c41
-rw-r--r--arch/microblaze/mm/Makefile5
-rw-r--r--arch/microblaze/mm/init.c201
-rw-r--r--arch/microblaze/platform/Kconfig.platform85
-rw-r--r--arch/microblaze/platform/Makefile6
-rw-r--r--arch/microblaze/platform/generic/Kconfig.auto62
-rw-r--r--arch/microblaze/platform/generic/Makefile3
-rw-r--r--arch/microblaze/platform/generic/system.dts332
-rw-r--r--arch/microblaze/platform/platform.c31
-rw-r--r--arch/mips/include/asm/mach-rc32434/gpio.h3
-rw-r--r--arch/mips/rb532/devices.c19
-rw-r--r--arch/mn10300/Kconfig2
-rw-r--r--arch/mn10300/Makefile40
-rw-r--r--arch/mn10300/include/asm/Kbuild (renamed from include/asm-mn10300/Kbuild)0
-rw-r--r--arch/mn10300/include/asm/atomic.h (renamed from include/asm-mn10300/atomic.h)0
-rw-r--r--arch/mn10300/include/asm/auxvec.h (renamed from include/asm-mn10300/auxvec.h)0
-rw-r--r--arch/mn10300/include/asm/bitops.h (renamed from include/asm-mn10300/bitops.h)0
-rw-r--r--arch/mn10300/include/asm/bug.h (renamed from include/asm-mn10300/bug.h)0
-rw-r--r--arch/mn10300/include/asm/bugs.h (renamed from include/asm-mn10300/bugs.h)0
-rw-r--r--arch/mn10300/include/asm/busctl-regs.h (renamed from include/asm-mn10300/busctl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/byteorder.h (renamed from include/asm-mn10300/byteorder.h)0
-rw-r--r--arch/mn10300/include/asm/cache.h (renamed from include/asm-mn10300/cache.h)2
-rw-r--r--arch/mn10300/include/asm/cacheflush.h (renamed from include/asm-mn10300/cacheflush.h)0
-rw-r--r--arch/mn10300/include/asm/checksum.h (renamed from include/asm-mn10300/checksum.h)0
-rw-r--r--arch/mn10300/include/asm/cpu-regs.h (renamed from include/asm-mn10300/cpu-regs.h)0
-rw-r--r--arch/mn10300/include/asm/cputime.h1
-rw-r--r--arch/mn10300/include/asm/current.h (renamed from include/asm-mn10300/current.h)0
-rw-r--r--arch/mn10300/include/asm/delay.h (renamed from include/asm-mn10300/delay.h)0
-rw-r--r--arch/mn10300/include/asm/device.h (renamed from include/asm-mn10300/device.h)0
-rw-r--r--arch/mn10300/include/asm/div64.h (renamed from include/asm-mn10300/div64.h)0
-rw-r--r--arch/mn10300/include/asm/dma-mapping.h (renamed from include/asm-mn10300/dma-mapping.h)0
-rw-r--r--arch/mn10300/include/asm/dma.h (renamed from include/asm-mn10300/dma.h)0
-rw-r--r--arch/mn10300/include/asm/dmactl-regs.h (renamed from include/asm-mn10300/dmactl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/elf.h (renamed from include/asm-mn10300/elf.h)0
-rw-r--r--arch/mn10300/include/asm/emergency-restart.h1
-rw-r--r--arch/mn10300/include/asm/errno.h1
-rw-r--r--arch/mn10300/include/asm/exceptions.h (renamed from include/asm-mn10300/exceptions.h)0
-rw-r--r--arch/mn10300/include/asm/fb.h (renamed from include/asm-mn10300/fb.h)0
-rw-r--r--arch/mn10300/include/asm/fcntl.h1
-rw-r--r--arch/mn10300/include/asm/fpu.h (renamed from include/asm-mn10300/fpu.h)0
-rw-r--r--arch/mn10300/include/asm/frame.inc (renamed from include/asm-mn10300/frame.inc)0
-rw-r--r--arch/mn10300/include/asm/ftrace.h (renamed from include/asm-mn10300/ftrace.h)0
-rw-r--r--arch/mn10300/include/asm/futex.h1
-rw-r--r--arch/mn10300/include/asm/gdb-stub.h (renamed from include/asm-mn10300/gdb-stub.h)0
-rw-r--r--arch/mn10300/include/asm/hardirq.h (renamed from include/asm-mn10300/hardirq.h)0
-rw-r--r--arch/mn10300/include/asm/highmem.h (renamed from include/asm-mn10300/highmem.h)0
-rw-r--r--arch/mn10300/include/asm/hw_irq.h (renamed from include/asm-mn10300/hw_irq.h)0
-rw-r--r--arch/mn10300/include/asm/intctl-regs.h (renamed from include/asm-mn10300/intctl-regs.h)0
-rw-r--r--arch/mn10300/include/asm/io.h (renamed from include/asm-mn10300/io.h)0
-rw-r--r--arch/mn10300/include/asm/ioctl.h1
-rw-r--r--arch/mn10300/include/asm/ioctls.h (renamed from include/asm-mn10300/ioctls.h)0
-rw-r--r--arch/mn10300/include/asm/ipc.h1
-rw-r--r--arch/mn10300/include/asm/ipcbuf.h (renamed from include/asm-mn10300/ipcbuf.h)0
-rw-r--r--arch/mn10300/include/asm/irq.h (renamed from include/asm-mn10300/irq.h)2
-rw-r--r--arch/mn10300/include/asm/irq_regs.h (renamed from include/asm-mn10300/irq_regs.h)0
-rw-r--r--arch/mn10300/include/asm/kdebug.h (renamed from include/asm-mn10300/kdebug.h)0
-rw-r--r--arch/mn10300/include/asm/kmap_types.h (renamed from include/asm-mn10300/kmap_types.h)0
-rw-r--r--arch/mn10300/include/asm/kprobes.h (renamed from include/asm-mn10300/kprobes.h)0
-rw-r--r--arch/mn10300/include/asm/linkage.h (renamed from include/asm-mn10300/linkage.h)0
-rw-r--r--arch/mn10300/include/asm/local.h1
-rw-r--r--arch/mn10300/include/asm/mc146818rtc.h (renamed from include/asm-mn10300/mc146818rtc.h)0
-rw-r--r--arch/mn10300/include/asm/mman.h (renamed from include/asm-mn10300/mman.h)0
-rw-r--r--arch/mn10300/include/asm/mmu.h (renamed from include/asm-mn10300/mmu.h)0
-rw-r--r--arch/mn10300/include/asm/mmu_context.h (renamed from include/asm-mn10300/mmu_context.h)0
-rw-r--r--arch/mn10300/include/asm/module.h (renamed from include/asm-mn10300/module.h)0
-rw-r--r--arch/mn10300/include/asm/msgbuf.h (renamed from include/asm-mn10300/msgbuf.h)0
-rw-r--r--arch/mn10300/include/asm/mutex.h (renamed from include/asm-mn10300/mutex.h)0
-rw-r--r--arch/mn10300/include/asm/nmi.h (renamed from include/asm-mn10300/nmi.h)0
-rw-r--r--arch/mn10300/include/asm/page.h (renamed from include/asm-mn10300/page.h)0
-rw-r--r--arch/mn10300/include/asm/page_offset.h (renamed from include/asm-mn10300/page_offset.h)0
-rw-r--r--arch/mn10300/include/asm/param.h (renamed from include/asm-mn10300/param.h)0
-rw-r--r--arch/mn10300/include/asm/pci.h (renamed from include/asm-mn10300/pci.h)0
-rw-r--r--arch/mn10300/include/asm/percpu.h1
-rw-r--r--arch/mn10300/include/asm/pgalloc.h (renamed from include/asm-mn10300/pgalloc.h)0
-rw-r--r--arch/mn10300/include/asm/pgtable.h (renamed from include/asm-mn10300/pgtable.h)0
-rw-r--r--arch/mn10300/include/asm/pio-regs.h (renamed from include/asm-mn10300/pio-regs.h)0
-rw-r--r--arch/mn10300/include/asm/poll.h1
-rw-r--r--arch/mn10300/include/asm/posix_types.h (renamed from include/asm-mn10300/posix_types.h)0
-rw-r--r--arch/mn10300/include/asm/processor.h (renamed from include/asm-mn10300/processor.h)0
-rw-r--r--arch/mn10300/include/asm/ptrace.h (renamed from include/asm-mn10300/ptrace.h)0
-rw-r--r--arch/mn10300/include/asm/reset-regs.h (renamed from include/asm-mn10300/reset-regs.h)0
-rw-r--r--arch/mn10300/include/asm/resource.h1
-rw-r--r--arch/mn10300/include/asm/rtc-regs.h (renamed from include/asm-mn10300/rtc-regs.h)0
-rw-r--r--arch/mn10300/include/asm/rtc.h (renamed from include/asm-mn10300/rtc.h)0
-rw-r--r--arch/mn10300/include/asm/scatterlist.h (renamed from include/asm-mn10300/scatterlist.h)0
-rw-r--r--arch/mn10300/include/asm/sections.h (renamed from include/asm-mn10300/sections.h)0
-rw-r--r--arch/mn10300/include/asm/sembuf.h (renamed from include/asm-mn10300/sembuf.h)0
-rw-r--r--arch/mn10300/include/asm/serial-regs.h (renamed from include/asm-mn10300/serial-regs.h)0
-rw-r--r--arch/mn10300/include/asm/serial.h (renamed from include/asm-mn10300/serial.h)2
-rw-r--r--arch/mn10300/include/asm/setup.h (renamed from include/asm-mn10300/setup.h)0
-rw-r--r--arch/mn10300/include/asm/shmbuf.h (renamed from include/asm-mn10300/shmbuf.h)0
-rw-r--r--arch/mn10300/include/asm/shmparam.h (renamed from include/asm-mn10300/shmparam.h)0
-rw-r--r--arch/mn10300/include/asm/sigcontext.h (renamed from include/asm-mn10300/sigcontext.h)0
-rw-r--r--arch/mn10300/include/asm/siginfo.h (renamed from include/asm-mn10300/siginfo.h)0
-rw-r--r--arch/mn10300/include/asm/signal.h (renamed from include/asm-mn10300/signal.h)0
-rw-r--r--arch/mn10300/include/asm/smp.h (renamed from include/asm-mn10300/smp.h)0
-rw-r--r--arch/mn10300/include/asm/socket.h (renamed from include/asm-mn10300/socket.h)0
-rw-r--r--arch/mn10300/include/asm/sockios.h (renamed from include/asm-mn10300/sockios.h)0
-rw-r--r--arch/mn10300/include/asm/spinlock.h (renamed from include/asm-mn10300/spinlock.h)0
-rw-r--r--arch/mn10300/include/asm/stat.h (renamed from include/asm-mn10300/stat.h)0
-rw-r--r--arch/mn10300/include/asm/statfs.h1
-rw-r--r--arch/mn10300/include/asm/string.h (renamed from include/asm-mn10300/string.h)0
-rw-r--r--arch/mn10300/include/asm/swab.h (renamed from include/asm-mn10300/swab.h)0
-rw-r--r--arch/mn10300/include/asm/system.h (renamed from include/asm-mn10300/system.h)0
-rw-r--r--arch/mn10300/include/asm/termbits.h (renamed from include/asm-mn10300/termbits.h)0
-rw-r--r--arch/mn10300/include/asm/termios.h (renamed from include/asm-mn10300/termios.h)0
-rw-r--r--arch/mn10300/include/asm/thread_info.h (renamed from include/asm-mn10300/thread_info.h)0
-rw-r--r--arch/mn10300/include/asm/timer-regs.h (renamed from include/asm-mn10300/timer-regs.h)0
-rw-r--r--arch/mn10300/include/asm/timex.h (renamed from include/asm-mn10300/timex.h)2
-rw-r--r--arch/mn10300/include/asm/tlb.h (renamed from include/asm-mn10300/tlb.h)0
-rw-r--r--arch/mn10300/include/asm/tlbflush.h (renamed from include/asm-mn10300/tlbflush.h)0
-rw-r--r--arch/mn10300/include/asm/topology.h (renamed from include/asm-mn10300/topology.h)0
-rw-r--r--arch/mn10300/include/asm/types.h (renamed from include/asm-mn10300/types.h)0
-rw-r--r--arch/mn10300/include/asm/uaccess.h (renamed from include/asm-mn10300/uaccess.h)0
-rw-r--r--arch/mn10300/include/asm/ucontext.h (renamed from include/asm-mn10300/ucontext.h)0
-rw-r--r--arch/mn10300/include/asm/unaligned.h (renamed from include/asm-mn10300/unaligned.h)0
-rw-r--r--arch/mn10300/include/asm/unistd.h (renamed from include/asm-mn10300/unistd.h)0
-rw-r--r--arch/mn10300/include/asm/user.h (renamed from include/asm-mn10300/user.h)0
-rw-r--r--arch/mn10300/include/asm/vga.h (renamed from include/asm-mn10300/vga.h)0
-rw-r--r--arch/mn10300/include/asm/xor.h1
-rw-r--r--arch/mn10300/kernel/entry.S2
-rw-r--r--arch/mn10300/kernel/gdb-io-serial-low.S2
-rw-r--r--arch/mn10300/kernel/gdb-io-serial.c2
-rw-r--r--arch/mn10300/kernel/gdb-io-ttysm-low.S2
-rw-r--r--arch/mn10300/kernel/gdb-io-ttysm.c2
-rw-r--r--arch/mn10300/kernel/gdb-stub.c4
-rw-r--r--arch/mn10300/kernel/head.S2
-rw-r--r--arch/mn10300/kernel/irq.c2
-rw-r--r--arch/mn10300/kernel/mn10300-serial-low.S4
-rw-r--r--arch/mn10300/kernel/mn10300-serial.c2
-rw-r--r--arch/mn10300/kernel/mn10300-watchdog.c2
-rw-r--r--arch/mn10300/kernel/setup.c2
-rw-r--r--arch/mn10300/kernel/traps.c2
-rw-r--r--arch/mn10300/oprofile/Kconfig23
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/cache.h (renamed from include/asm-mn10300/proc-mn103e010/cache.h)0
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/clock.h (renamed from include/asm-mn10300/proc-mn103e010/clock.h)2
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/irq.h (renamed from include/asm-mn10300/proc-mn103e010/irq.h)0
-rw-r--r--arch/mn10300/proc-mn103e010/include/proc/proc.h (renamed from include/asm-mn10300/proc-mn103e010/proc.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/clock.h (renamed from include/asm-mn10300/unit-asb2303/clock.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/leds.h (renamed from include/asm-mn10300/unit-asb2303/leds.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/serial.h (renamed from include/asm-mn10300/unit-asb2303/serial.h)2
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/smc91111.h (renamed from include/asm-mn10300/unit-asb2303/smc91111.h)0
-rw-r--r--arch/mn10300/unit-asb2303/include/unit/timex.h (renamed from include/asm-mn10300/unit-asb2303/timex.h)2
-rw-r--r--arch/mn10300/unit-asb2303/leds.c2
-rw-r--r--arch/mn10300/unit-asb2303/smc91111.c2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/clock.h (renamed from include/asm-mn10300/unit-asb2305/clock.h)0
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/leds.h (renamed from include/asm-mn10300/unit-asb2305/leds.h)0
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/serial.h (renamed from include/asm-mn10300/unit-asb2305/serial.h)2
-rw-r--r--arch/mn10300/unit-asb2305/include/unit/timex.h (renamed from include/asm-mn10300/unit-asb2305/timex.h)2
-rw-r--r--arch/mn10300/unit-asb2305/leds.c2
-rw-r--r--arch/mn10300/unit-asb2305/unit-init.c2
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/sparc/include/asm/unistd.h4
-rw-r--r--arch/sparc/kernel/of_device_64.c3
-rw-r--r--arch/sparc/kernel/pci_fire.c4
-rw-r--r--arch/sparc/kernel/pci_psycho.c8
-rw-r--r--arch/sparc/kernel/pci_sabre.c8
-rw-r--r--arch/sparc/kernel/pci_sun4v.c14
-rw-r--r--arch/sparc/kernel/power.c2
-rw-r--r--arch/sparc/kernel/systbls_32.S2
-rw-r--r--arch/sparc/kernel/systbls_64.S4
-rw-r--r--arch/sparc/mm/init_64.c8
-rw-r--r--arch/x86/Kconfig6
-rw-r--r--arch/x86/boot/video-vga.c33
-rw-r--r--[-rwxr-xr-x]arch/x86/include/asm/cpu_debug.h0
-rw-r--r--arch/x86/include/asm/cpufeature.h1
-rw-r--r--arch/x86/include/asm/fixmap.h4
-rw-r--r--arch/x86/include/asm/io.h6
-rw-r--r--arch/x86/include/asm/paravirt.h4
-rw-r--r--arch/x86/include/asm/processor.h6
-rw-r--r--arch/x86/include/asm/sigcontext.h6
-rw-r--r--arch/x86/include/asm/xsave.h3
-rw-r--r--arch/x86/kernel/apic/apic.c6
-rw-r--r--arch/x86/kernel/apic/apic_flat_64.c4
-rw-r--r--arch/x86/kernel/apic/io_apic.c5
-rw-r--r--arch/x86/kernel/cpu/addon_cpuid_features.c1
-rw-r--r--[-rwxr-xr-x]arch/x86/kernel/cpu/cpu_debug.c0
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c77
-rw-r--r--arch/x86/kernel/cpu/cpufreq/longhaul.c1
-rw-r--r--arch/x86/kernel/ftrace.c2
-rw-r--r--arch/x86/kernel/irq.c2
-rw-r--r--arch/x86/kernel/mpparse.c7
-rw-r--r--arch/x86/kernel/ptrace.c3
-rw-r--r--arch/x86/kernel/reboot.c8
-rw-r--r--arch/x86/kernel/xsave.c2
-rw-r--r--arch/x86/mm/gup.c16
-rw-r--r--arch/x86/mm/ioremap.c23
-rw-r--r--arch/x86/mm/pat.c2
-rw-r--r--arch/x86/mm/pgtable.c3
-rw-r--r--arch/x86/xen/mmu.c2
-rw-r--r--drivers/acpi/acpica/hwvalid.c1
-rw-r--r--drivers/acpi/proc.c13
-rw-r--r--drivers/acpi/processor_idle.c3
-rw-r--r--drivers/acpi/scan.c31
-rw-r--r--drivers/acpi/sleep.h3
-rw-r--r--drivers/acpi/thermal.c68
-rw-r--r--drivers/acpi/video.c30
-rw-r--r--drivers/acpi/wakeup.c30
-rw-r--r--drivers/ata/ahci.c57
-rw-r--r--drivers/ata/libata-core.c4
-rw-r--r--drivers/ata/sata_via.c2
-rw-r--r--drivers/block/xsysace.c12
-rw-r--r--drivers/i2c/algos/i2c-algo-pca.c2
-rw-r--r--drivers/i2c/busses/Kconfig6
-rw-r--r--drivers/i2c/i2c-core.c3
-rw-r--r--drivers/ide/at91_ide.c91
-rw-r--r--drivers/ide/falconide.c13
-rw-r--r--drivers/ide/ide-acpi.c5
-rw-r--r--drivers/ide/ide-atapi.c38
-rw-r--r--drivers/ide/ide-cd.c288
-rw-r--r--drivers/ide/ide-disk.c70
-rw-r--r--drivers/ide/ide-disk_proc.c6
-rw-r--r--drivers/ide/ide-dma-sff.c9
-rw-r--r--drivers/ide/ide-h8300.c101
-rw-r--r--drivers/ide/ide-io-std.c75
-rw-r--r--drivers/ide/ide-io.c13
-rw-r--r--drivers/ide/ide-ioctls.c14
-rw-r--r--drivers/ide/ide-iops.c20
-rw-r--r--drivers/ide/ide-lib.c28
-rw-r--r--drivers/ide/ide-park.c3
-rw-r--r--drivers/ide/ide-pm.c3
-rw-r--r--drivers/ide/ide-probe.c18
-rw-r--r--drivers/ide/ide-proc.c4
-rw-r--r--drivers/ide/ide-taskfile.c97
-rw-r--r--drivers/ide/ns87415.c34
-rw-r--r--drivers/ide/q40ide.c14
-rw-r--r--drivers/ide/scc_pata.c71
-rw-r--r--drivers/ide/tx4938ide.c89
-rw-r--r--drivers/ide/tx4939ide.c110
-rw-r--r--drivers/infiniband/core/cma.c45
-rw-r--r--drivers/infiniband/hw/cxgb3/cxio_hal.c10
-rw-r--r--drivers/infiniband/hw/cxgb3/cxio_hal.h6
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch.c11
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch.h5
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.c116
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.h3
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_qp.c4
-rw-r--r--drivers/infiniband/hw/mlx4/main.c3
-rw-r--r--drivers/infiniband/hw/nes/nes.h4
-rw-r--r--drivers/infiniband/hw/nes/nes_cm.c22
-rw-r--r--drivers/infiniband/hw/nes/nes_cm.h1
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.c389
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.h2
-rw-r--r--drivers/infiniband/hw/nes/nes_nic.c52
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_vlan.c25
-rw-r--r--drivers/input/input.c13
-rw-r--r--drivers/input/keyboard/atkbd.c135
-rw-r--r--drivers/input/keyboard/bf54x-keys.c4
-rw-r--r--drivers/input/keyboard/hilkbd.c140
-rw-r--r--drivers/input/misc/Kconfig23
-rw-r--r--drivers/input/misc/Makefile28
-rw-r--r--drivers/input/misc/ati_remote2.c277
-rw-r--r--drivers/input/misc/rb532_button.c120
-rw-r--r--drivers/input/misc/rotary_encoder.c221
-rw-r--r--drivers/input/mouse/Kconfig11
-rw-r--r--drivers/input/mouse/Makefile9
-rw-r--r--drivers/input/mouse/hgpk.c2
-rw-r--r--drivers/input/mouse/maplemouse.c147
-rw-r--r--drivers/input/mouse/pc110pad.c5
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h8
-rw-r--r--drivers/input/touchscreen/Kconfig58
-rw-r--r--drivers/input/touchscreen/Makefile3
-rw-r--r--drivers/input/touchscreen/ad7877.c844
-rw-r--r--drivers/input/touchscreen/ad7879.c782
-rw-r--r--drivers/input/touchscreen/mainstone-wm97xx.c3
-rw-r--r--drivers/input/touchscreen/ucb1400_ts.c5
-rw-r--r--drivers/input/touchscreen/wm97xx-core.c13
-rw-r--r--drivers/input/touchscreen/zylonite-wm97xx.c240
-rw-r--r--drivers/leds/leds-gpio.c2
-rw-r--r--drivers/md/dm-ioctl.c21
-rw-r--r--drivers/md/dm-kcopyd.c23
-rw-r--r--drivers/md/dm-linear.c1
-rw-r--r--drivers/md/dm-table.c59
-rw-r--r--drivers/md/dm.c199
-rw-r--r--drivers/md/dm.h1
-rw-r--r--drivers/media/dvb/ttpci/Kconfig23
-rw-r--r--drivers/media/dvb/ttpci/Makefile9
-rw-r--r--drivers/media/dvb/ttpci/av7110.c16
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.c35
-rw-r--r--drivers/media/dvb/ttpci/av7110_hw.h3
-rw-r--r--drivers/media/dvb/ttpci/fdump.c44
-rw-r--r--drivers/mmc/core/mmc.c2
-rw-r--r--drivers/mmc/core/sd.c21
-rw-r--r--drivers/mmc/host/imxmmc.c19
-rw-r--r--drivers/mmc/host/mmc_spi.c188
-rw-r--r--drivers/mmc/host/omap_hsmmc.c7
-rw-r--r--drivers/mmc/host/sdhci-pci.c2
-rw-r--r--drivers/mmc/host/sdhci.c2
-rw-r--r--drivers/mmc/host/wbsd.c2
-rw-r--r--drivers/net/mlx4/port.c5
-rw-r--r--drivers/net/smc91x.h2
-rw-r--r--drivers/pci/dmar.c11
-rw-r--r--drivers/pci/intel-iommu.c4
-rw-r--r--drivers/platform/x86/fujitsu-laptop.c60
-rw-r--r--drivers/platform/x86/panasonic-laptop.c28
-rw-r--r--drivers/platform/x86/sony-laptop.c30
-rw-r--r--drivers/platform/x86/wmi.c15
-rw-r--r--drivers/power/pcf50633-charger.c88
-rw-r--r--drivers/power/pda_power.c89
-rw-r--r--drivers/scsi/qla1280.c4
-rw-r--r--drivers/scsi/scsi_priv.h3
-rw-r--r--drivers/scsi/scsi_wait_scan.c2
-rw-r--r--drivers/serial/Kconfig4
-rw-r--r--drivers/serial/max3100.c927
-rw-r--r--drivers/serial/sunsu.c2
-rw-r--r--drivers/usb/host/ohci-at91.c4
-rw-r--r--drivers/watchdog/Kconfig2
-rw-r--r--drivers/watchdog/Makefile2
-rw-r--r--drivers/watchdog/at91rm9200_wdt.c6
-rw-r--r--drivers/watchdog/i6300esb.c155
-rw-r--r--drivers/watchdog/ks8695_wdt.c6
-rw-r--r--drivers/watchdog/omap_wdt.c6
-rw-r--r--drivers/watchdog/orion5x_wdt.c57
-rw-r--r--firmware/.gitignore1
-rw-r--r--firmware/Makefile30
-rw-r--r--firmware/README.AddingFirmware34
-rw-r--r--firmware/WHENCE92
-rw-r--r--firmware/av7110/Boot.S109
-rw-r--r--firmware/av7110/bootcode.bin.ihex15
-rw-r--r--firmware/ihex2fw.c (renamed from scripts/ihex2fw.c)0
-rw-r--r--firmware/slicoss/gbdownload.sys.ihex6148
-rw-r--r--firmware/slicoss/gbrcvucode.sys.ihex162
-rw-r--r--firmware/slicoss/oasisdbgdownload.sys.ihex5124
-rw-r--r--firmware/slicoss/oasisdownload.sys.ihex5124
-rw-r--r--firmware/slicoss/oasisrcvucode.sys.ihex162
-rw-r--r--firmware/sxg/saharadbgdownloadB.sys.ihex3937
-rw-r--r--firmware/sxg/saharadownloadB.sys.ihex3385
-rw-r--r--firmware/yamaha/yss225_registers.bin.ihex998
-rw-r--r--fs/afs/netdevices.c3
-rw-r--r--fs/befs/super.c1
-rw-r--r--fs/buffer.c13
-rw-r--r--fs/ext3/inode.c23
-rw-r--r--fs/ext4/extents.c2
-rw-r--r--fs/ext4/inode.c8
-rw-r--r--fs/ext4/super.c9
-rw-r--r--fs/proc/task_nommu.c2
-rw-r--r--include/acpi/acpi_bus.h1
-rw-r--r--include/asm-generic/percpu.h52
-rw-r--r--include/asm-mn10300/.gitignore2
-rw-r--r--include/linux/capability.h23
-rw-r--r--include/linux/debug_locks.h7
-rw-r--r--include/linux/device-mapper.h1
-rw-r--r--include/linux/ftrace.h31
-rw-r--r--include/linux/i2c.h2
-rw-r--r--include/linux/ide.h151
-rw-r--r--include/linux/irq.h14
-rw-r--r--include/linux/kmod.h2
-rw-r--r--include/linux/mfd/pcf50633/core.h2
-rw-r--r--include/linux/mfd/pcf50633/mbc.h1
-rw-r--r--include/linux/pda_power.h2
-rw-r--r--include/linux/percpu.h52
-rw-r--r--include/linux/rotary_encoder.h13
-rw-r--r--include/linux/sched.h3
-rw-r--r--include/linux/serial_max3100.h52
-rw-r--r--include/linux/spi/ad7879.h35
-rw-r--r--include/linux/stringify.h4
-rw-r--r--include/linux/syscalls.h2
-rw-r--r--include/scsi/scsi_scan.h11
-rw-r--r--include/trace/syscall.h35
-rw-r--r--init/Kconfig8
-rw-r--r--kernel/fork.c13
-rw-r--r--kernel/futex.c7
-rw-r--r--kernel/irq/numa_migrate.c1
-rw-r--r--kernel/kthread.c26
-rw-r--r--kernel/module.c3
-rw-r--r--kernel/mutex.c3
-rw-r--r--kernel/panic.c12
-rw-r--r--kernel/posix-cpu-timers.c9
-rw-r--r--kernel/power/disk.c8
-rw-r--r--kernel/power/user.c9
-rw-r--r--kernel/ptrace.c16
-rw-r--r--kernel/sched.c160
-rw-r--r--kernel/sched_cpupri.c5
-rw-r--r--kernel/sched_rt.c15
-rw-r--r--kernel/timer.c7
-rw-r--r--kernel/trace/Kconfig4
-rw-r--r--kernel/trace/blktrace.c10
-rw-r--r--kernel/trace/trace.c36
-rw-r--r--kernel/trace/trace_events.c12
-rw-r--r--kernel/trace/trace_events_filter.c14
-rw-r--r--kernel/trace/trace_events_stage_2.h4
-rw-r--r--kernel/trace/trace_syscalls.c2
-rw-r--r--kernel/workqueue.c36
-rw-r--r--lib/debug_locks.c2
-rw-r--r--lib/vsprintf.c16
-rw-r--r--scripts/.gitignore1
-rw-r--r--scripts/Makefile3
-rw-r--r--scripts/Makefile.headersinst2
-rw-r--r--scripts/gen_initramfs_list.sh2
-rwxr-xr-xscripts/get_maintainer.pl515
-rwxr-xr-xscripts/headerdep.pl2
-rw-r--r--scripts/kconfig/kxgettext.c4
-rw-r--r--scripts/mod/modpost.c4
-rwxr-xr-xscripts/setlocalversion2
-rw-r--r--security/commoncap.c1
-rw-r--r--security/keys/request_key.c9
-rw-r--r--sound/isa/Kconfig10
-rw-r--r--sound/isa/wavefront/wavefront_fx.c16
-rw-r--r--sound/isa/wavefront/yss225.c2739
-rw-r--r--sound/sparc/cs4231.c28
707 files changed, 26348 insertions, 29751 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index a3a83d38f96f..8918a32c6b3a 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -31,7 +31,7 @@ PS_METHOD = $(prefer-db2x)
31 31
32### 32###
33# The targets that may be used. 33# The targets that may be used.
34PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs 34PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs
35 35
36BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) 36BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
37xmldocs: $(BOOKS) 37xmldocs: $(BOOKS)
@@ -213,11 +213,12 @@ silent_gen_xml = :
213dochelp: 213dochelp:
214 @echo ' Linux kernel internal documentation in different formats:' 214 @echo ' Linux kernel internal documentation in different formats:'
215 @echo ' htmldocs - HTML' 215 @echo ' htmldocs - HTML'
216 @echo ' installmandocs - install man pages generated by mandocs'
217 @echo ' mandocs - man pages'
218 @echo ' pdfdocs - PDF' 216 @echo ' pdfdocs - PDF'
219 @echo ' psdocs - Postscript' 217 @echo ' psdocs - Postscript'
220 @echo ' xmldocs - XML DocBook' 218 @echo ' xmldocs - XML DocBook'
219 @echo ' mandocs - man pages'
220 @echo ' installmandocs - install man pages generated by mandocs'
221 @echo ' cleandocs - clean all generated DocBook files'
221 222
222### 223###
223# Temporary files left by various tools 224# Temporary files left by various tools
@@ -235,6 +236,10 @@ clean-files := $(DOCBOOKS) \
235 236
236clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man 237clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
237 238
239cleandocs:
240 $(Q)rm -f $(call objectify, $(clean-files))
241 $(Q)rm -rf $(call objectify, $(clean-dirs))
242
238# Declare the contents of the .PHONY variable as phony. We keep that 243# Declare the contents of the .PHONY variable as phony. We keep that
239# information in a variable se we can use it in if_changed and friends. 244# information in a variable se we can use it in if_changed and friends.
240 245
diff --git a/Documentation/cgroups/cpuacct.txt b/Documentation/cgroups/cpuacct.txt
index bb775fbe43d7..8b930946c52a 100644
--- a/Documentation/cgroups/cpuacct.txt
+++ b/Documentation/cgroups/cpuacct.txt
@@ -30,3 +30,21 @@ The above steps create a new group g1 and move the current shell
30process (bash) into it. CPU time consumed by this bash and its children 30process (bash) into it. CPU time consumed by this bash and its children
31can be obtained from g1/cpuacct.usage and the same is accumulated in 31can be obtained from g1/cpuacct.usage and the same is accumulated in
32/cgroups/cpuacct.usage also. 32/cgroups/cpuacct.usage also.
33
34cpuacct.stat file lists a few statistics which further divide the
35CPU time obtained by the cgroup into user and system times. Currently
36the following statistics are supported:
37
38user: Time spent by tasks of the cgroup in user mode.
39system: Time spent by tasks of the cgroup in kernel mode.
40
41user and system are in USER_HZ unit.
42
43cpuacct controller uses percpu_counter interface to collect user and
44system times. This has two side effects:
45
46- It is theoretically possible to see wrong values for user and system times.
47 This is because percpu_counter_read() on 32bit systems isn't safe
48 against concurrent writes.
49- It is possible to see slightly outdated values for user and system times
50 due to the batch processing nature of percpu_counter.
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 7e2af10e8264..de491a3e2313 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -428,3 +428,12 @@ Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
428 After a reasonable transition period, we will remove the legacy 428 After a reasonable transition period, we will remove the legacy
429 fakephp interface. 429 fakephp interface.
430Who: Alex Chiang <achiang@hp.com> 430Who: Alex Chiang <achiang@hp.com>
431
432---------------------------
433
434What: i2c-voodoo3 driver
435When: October 2009
436Why: Superseded by tdfxfb. I2C/DDC support used to live in a separate
437 driver but this caused driver conflicts.
438Who: Jean Delvare <khali@linux-fr.org>
439 Krzysztof Helt <krzysztof.h1@wp.pl>
diff --git a/Documentation/infiniband/ipoib.txt b/Documentation/infiniband/ipoib.txt
index 864ff3283780..6d40f00b358c 100644
--- a/Documentation/infiniband/ipoib.txt
+++ b/Documentation/infiniband/ipoib.txt
@@ -24,6 +24,49 @@ Partitions and P_Keys
24 The P_Key for any interface is given by the "pkey" file, and the 24 The P_Key for any interface is given by the "pkey" file, and the
25 main interface for a subinterface is in "parent." 25 main interface for a subinterface is in "parent."
26 26
27Datagram vs Connected modes
28
29 The IPoIB driver supports two modes of operation: datagram and
30 connected. The mode is set and read through an interface's
31 /sys/class/net/<intf name>/mode file.
32
33 In datagram mode, the IB UD (Unreliable Datagram) transport is used
34 and so the interface MTU has is equal to the IB L2 MTU minus the
35 IPoIB encapsulation header (4 bytes). For example, in a typical IB
36 fabric with a 2K MTU, the IPoIB MTU will be 2048 - 4 = 2044 bytes.
37
38 In connected mode, the IB RC (Reliable Connected) transport is used.
39 Connected mode is to takes advantage of the connected nature of the
40 IB transport and allows an MTU up to the maximal IP packet size of
41 64K, which reduces the number of IP packets needed for handling
42 large UDP datagrams, TCP segments, etc and increases the performance
43 for large messages.
44
45 In connected mode, the interface's UD QP is still used for multicast
46 and communication with peers that don't support connected mode. In
47 this case, RX emulation of ICMP PMTU packets is used to cause the
48 networking stack to use the smaller UD MTU for these neighbours.
49
50Stateless offloads
51
52 If the IB HW supports IPoIB stateless offloads, IPoIB advertises
53 TCP/IP checksum and/or Large Send (LSO) offloading capability to the
54 network stack.
55
56 Large Receive (LRO) offloading is also implemented and may be turned
57 on/off using ethtool calls. Currently LRO is supported only for
58 checksum offload capable devices.
59
60 Stateless offloads are supported only in datagram mode.
61
62Interrupt moderation
63
64 If the underlying IB device supports CQ event moderation, one can
65 use ethtool to set interrupt mitigation parameters and thus reduce
66 the overhead incurred by handling interrupts. The main code path of
67 IPoIB doesn't use events for TX completion signaling so only RX
68 moderation is supported.
69
27Debugging Information 70Debugging Information
28 71
29 By compiling the IPoIB driver with CONFIG_INFINIBAND_IPOIB_DEBUG set 72 By compiling the IPoIB driver with CONFIG_INFINIBAND_IPOIB_DEBUG set
@@ -55,3 +98,5 @@ References
55 http://ietf.org/rfc/rfc4391.txt 98 http://ietf.org/rfc/rfc4391.txt
56 IP over InfiniBand (IPoIB) Architecture (RFC 4392) 99 IP over InfiniBand (IPoIB) Architecture (RFC 4392)
57 http://ietf.org/rfc/rfc4392.txt 100 http://ietf.org/rfc/rfc4392.txt
101 IP over InfiniBand: Connected Mode (RFC 4755)
102 http://ietf.org/rfc/rfc4755.txt
diff --git a/Documentation/input/rotary-encoder.txt b/Documentation/input/rotary-encoder.txt
new file mode 100644
index 000000000000..435102a26d96
--- /dev/null
+++ b/Documentation/input/rotary-encoder.txt
@@ -0,0 +1,101 @@
1rotary-encoder - a generic driver for GPIO connected devices
2Daniel Mack <daniel@caiaq.de>, Feb 2009
3
40. Function
5-----------
6
7Rotary encoders are devices which are connected to the CPU or other
8peripherals with two wires. The outputs are phase-shifted by 90 degrees
9and by triggering on falling and rising edges, the turn direction can
10be determined.
11
12The phase diagram of these two outputs look like this:
13
14 _____ _____ _____
15 | | | | | |
16 Channel A ____| |_____| |_____| |____
17
18 : : : : : : : : : : : :
19 __ _____ _____ _____
20 | | | | | | |
21 Channel B |_____| |_____| |_____| |__
22
23 : : : : : : : : : : : :
24 Event a b c d a b c d a b c d
25
26 |<-------->|
27 one step
28
29
30For more information, please see
31 http://en.wikipedia.org/wiki/Rotary_encoder
32
33
341. Events / state machine
35-------------------------
36
37a) Rising edge on channel A, channel B in low state
38 This state is used to recognize a clockwise turn
39
40b) Rising edge on channel B, channel A in high state
41 When entering this state, the encoder is put into 'armed' state,
42 meaning that there it has seen half the way of a one-step transition.
43
44c) Falling edge on channel A, channel B in high state
45 This state is used to recognize a counter-clockwise turn
46
47d) Falling edge on channel B, channel A in low state
48 Parking position. If the encoder enters this state, a full transition
49 should have happend, unless it flipped back on half the way. The
50 'armed' state tells us about that.
51
522. Platform requirements
53------------------------
54
55As there is no hardware dependent call in this driver, the platform it is
56used with must support gpiolib. Another requirement is that IRQs must be
57able to fire on both edges.
58
59
603. Board integration
61--------------------
62
63To use this driver in your system, register a platform_device with the
64name 'rotary-encoder' and associate the IRQs and some specific platform
65data with it.
66
67struct rotary_encoder_platform_data is declared in
68include/linux/rotary-encoder.h and needs to be filled with the number of
69steps the encoder has and can carry information about externally inverted
70signals (because of used invertig buffer or other reasons).
71
72Because GPIO to IRQ mapping is platform specific, this information must
73be given in seperately to the driver. See the example below.
74
75---------<snip>---------
76
77/* board support file example */
78
79#include <linux/input.h>
80#include <linux/rotary_encoder.h>
81
82#define GPIO_ROTARY_A 1
83#define GPIO_ROTARY_B 2
84
85static struct rotary_encoder_platform_data my_rotary_encoder_info = {
86 .steps = 24,
87 .axis = ABS_X,
88 .gpio_a = GPIO_ROTARY_A,
89 .gpio_b = GPIO_ROTARY_B,
90 .inverted_a = 0,
91 .inverted_b = 0,
92};
93
94static struct platform_device rotary_encoder_device = {
95 .name = "rotary-encoder",
96 .id = 0,
97 .dev = {
98 .platform_data = &my_rotary_encoder_info,
99 }
100};
101
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 51104f9194a5..d4b05672f9f7 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -40,10 +40,16 @@ This document describes the Linux kernel Makefiles.
40 --- 6.7 Custom kbuild commands 40 --- 6.7 Custom kbuild commands
41 --- 6.8 Preprocessing linker scripts 41 --- 6.8 Preprocessing linker scripts
42 42
43 === 7 Kbuild Variables 43 === 7 Kbuild syntax for exported headers
44 === 8 Makefile language 44 --- 7.1 header-y
45 === 9 Credits 45 --- 7.2 objhdr-y
46 === 10 TODO 46 --- 7.3 destination-y
47 --- 7.4 unifdef-y (deprecated)
48
49 === 8 Kbuild Variables
50 === 9 Makefile language
51 === 10 Credits
52 === 11 TODO
47 53
48=== 1 Overview 54=== 1 Overview
49 55
@@ -1143,8 +1149,69 @@ When kbuild executes, the following steps are followed (roughly):
1143 The kbuild infrastructure for *lds file are used in several 1149 The kbuild infrastructure for *lds file are used in several
1144 architecture-specific files. 1150 architecture-specific files.
1145 1151
1152=== 7 Kbuild syntax for exported headers
1153
1154The kernel include a set of headers that is exported to userspace.
1155Many headers can be exported as-is but other headers requires a
1156minimal pre-processing before they are ready for user-space.
1157The pre-processing does:
1158- drop kernel specific annotations
1159- drop include of compiler.h
1160- drop all sections that is kernel internat (guarded by ifdef __KERNEL__)
1161
1162Each relevant directory contain a file name "Kbuild" which specify the
1163headers to be exported.
1164See subsequent chapter for the syntax of the Kbuild file.
1165
1166 --- 7.1 header-y
1167
1168 header-y specify header files to be exported.
1169
1170 Example:
1171 #include/linux/Kbuild
1172 header-y += usb/
1173 header-y += aio_abi.h
1174
1175 The convention is to list one file per line and
1176 preferably in alphabetic order.
1177
1178 header-y also specify which subdirectories to visit.
1179 A subdirectory is identified by a trailing '/' which
1180 can be seen in the example above for the usb subdirectory.
1181
1182 Subdirectories are visited before their parent directories.
1183
1184 --- 7.2 objhdr-y
1185
1186 objhdr-y specifies generated files to be exported.
1187 Generated files are special as they need to be looked
1188 up in another directory when doing 'make O=...' builds.
1189
1190 Example:
1191 #include/linux/Kbuild
1192 objhdr-y += version.h
1193
1194 --- 7.3 destination-y
1195
1196 When an architecture have a set of exported headers that needs to be
1197 exported to a different directory destination-y is used.
1198 destination-y specify the destination directory for all exported
1199 headers in the file where it is present.
1200
1201 Example:
1202 #arch/xtensa/platforms/s6105/include/platform/Kbuild
1203 destination-y := include/linux
1204
1205 In the example above all exported headers in the Kbuild file
1206 will be located in the directory "include/linux" when exported.
1207
1208
1209 --- 7.4 unifdef-y (deprecated)
1210
1211 unifdef-y is deprecated. A direct replacement is header-y.
1212
1146 1213
1147=== 7 Kbuild Variables 1214=== 8 Kbuild Variables
1148 1215
1149The top Makefile exports the following variables: 1216The top Makefile exports the following variables:
1150 1217
@@ -1206,7 +1273,7 @@ The top Makefile exports the following variables:
1206 INSTALL_MOD_STRIP will used as the option(s) to the strip command. 1273 INSTALL_MOD_STRIP will used as the option(s) to the strip command.
1207 1274
1208 1275
1209=== 8 Makefile language 1276=== 9 Makefile language
1210 1277
1211The kernel Makefiles are designed to be run with GNU Make. The Makefiles 1278The kernel Makefiles are designed to be run with GNU Make. The Makefiles
1212use only the documented features of GNU Make, but they do use many 1279use only the documented features of GNU Make, but they do use many
@@ -1225,14 +1292,14 @@ time the left-hand side is used.
1225There are some cases where "=" is appropriate. Usually, though, ":=" 1292There are some cases where "=" is appropriate. Usually, though, ":="
1226is the right choice. 1293is the right choice.
1227 1294
1228=== 9 Credits 1295=== 10 Credits
1229 1296
1230Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net> 1297Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1231Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> 1298Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1232Updates by Sam Ravnborg <sam@ravnborg.org> 1299Updates by Sam Ravnborg <sam@ravnborg.org>
1233Language QA by Jan Engelhardt <jengelh@gmx.de> 1300Language QA by Jan Engelhardt <jengelh@gmx.de>
1234 1301
1235=== 10 TODO 1302=== 11 TODO
1236 1303
1237- Describe how kbuild supports shipped files with _shipped. 1304- Describe how kbuild supports shipped files with _shipped.
1238- Generating offset header files. 1305- Generating offset header files.
diff --git a/Documentation/sparse.txt b/Documentation/sparse.txt
index 42f43fa59f24..34c76a55bc04 100644
--- a/Documentation/sparse.txt
+++ b/Documentation/sparse.txt
@@ -42,6 +42,14 @@ sure that bitwise types don't get mixed up (little-endian vs big-endian
42vs cpu-endian vs whatever), and there the constant "0" really _is_ 42vs cpu-endian vs whatever), and there the constant "0" really _is_
43special. 43special.
44 44
45__bitwise__ - to be used for relatively compact stuff (gfp_t, etc.) that
46is mostly warning-free and is supposed to stay that way. Warnings will
47be generated without __CHECK_ENDIAN__.
48
49__bitwise - noisy stuff; in particular, __le*/__be* are that. We really
50don't want to drown in noise unless we'd explicitly asked for it.
51
52
45Getting sparse 53Getting sparse
46~~~~~~~~~~~~~~ 54~~~~~~~~~~~~~~
47 55
diff --git a/Documentation/ftrace.txt b/Documentation/trace/ftrace.txt
index fd9a3e693813..fd9a3e693813 100644
--- a/Documentation/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
diff --git a/Documentation/vm/kmemtrace.txt b/Documentation/trace/kmemtrace.txt
index a956d9b7f943..a956d9b7f943 100644
--- a/Documentation/vm/kmemtrace.txt
+++ b/Documentation/trace/kmemtrace.txt
diff --git a/Documentation/tracers/mmiotrace.txt b/Documentation/trace/mmiotrace.txt
index 5731c67abc55..5731c67abc55 100644
--- a/Documentation/tracers/mmiotrace.txt
+++ b/Documentation/trace/mmiotrace.txt
diff --git a/Documentation/tracepoints.txt b/Documentation/trace/tracepoints.txt
index c0e1ceed75a4..c0e1ceed75a4 100644
--- a/Documentation/tracepoints.txt
+++ b/Documentation/trace/tracepoints.txt
diff --git a/MAINTAINERS b/MAINTAINERS
index 686b3dde9353..abedca58d8bd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -72,7 +72,6 @@ M: Mail patches to
72L: Mailing list that is relevant to this area 72L: Mailing list that is relevant to this area
73W: Web-page with status/info 73W: Web-page with status/info
74T: SCM tree type and location. Type is one of: git, hg, quilt. 74T: SCM tree type and location. Type is one of: git, hg, quilt.
75F: Applicable files and/or directories
76S: Status, one of the following: 75S: Status, one of the following:
77 76
78 Supported: Someone is actually paid to look after this. 77 Supported: Someone is actually paid to look after this.
@@ -85,23 +84,40 @@ S: Status, one of the following:
85 it has been replaced by a better system and you 84 it has been replaced by a better system and you
86 should be using that. 85 should be using that.
87 86
87F: Files and directories with wildcard patterns.
88 A trailing slash includes all files and subdirectory files.
89 F: drivers/net/ all files in and below drivers/net
90 F: drivers/net/* all files in drivers/net, but not below
91 F: */net/* all files in "any top level directory"/net
92 One pattern per line. Multiple F: lines acceptable.
93X: Files and directories that are NOT maintained, same rules as F:
94 Files exclusions are tested before file matches.
95 Can be useful for excluding a specific subdirectory, for instance:
96 F: net/
97 X: net/ipv6/
98 matches all files in and below net excluding net/ipv6/
99
883C505 NETWORK DRIVER 1003C505 NETWORK DRIVER
89P: Philip Blundell 101P: Philip Blundell
90M: philb@gnu.org 102M: philb@gnu.org
91L: netdev@vger.kernel.org 103L: netdev@vger.kernel.org
92S: Maintained 104S: Maintained
105F: drivers/net/3c505*
93 106
943C59X NETWORK DRIVER 1073C59X NETWORK DRIVER
95P: Steffen Klassert 108P: Steffen Klassert
96M: klassert@mathematik.tu-chemnitz.de 109M: klassert@mathematik.tu-chemnitz.de
97L: netdev@vger.kernel.org 110L: netdev@vger.kernel.org
98S: Maintained 111S: Maintained
112F: Documentation/networking/vortex.txt
113F: drivers/net/3c59x.c
99 114
1003CR990 NETWORK DRIVER 1153CR990 NETWORK DRIVER
101P: David Dillow 116P: David Dillow
102M: dave@thedillows.org 117M: dave@thedillows.org
103L: netdev@vger.kernel.org 118L: netdev@vger.kernel.org
104S: Maintained 119S: Maintained
120F: drivers/net/typhoon*
105 121
1063W-9XXX SATA-RAID CONTROLLER DRIVER 1223W-9XXX SATA-RAID CONTROLLER DRIVER
107P: Adam Radford 123P: Adam Radford
@@ -109,6 +125,7 @@ M: linuxraid@amcc.com
109L: linux-scsi@vger.kernel.org 125L: linux-scsi@vger.kernel.org
110W: http://www.amcc.com 126W: http://www.amcc.com
111S: Supported 127S: Supported
128F: drivers/scsi/3w-9xxx*
112 129
1133W-XXXX ATA-RAID CONTROLLER DRIVER 1303W-XXXX ATA-RAID CONTROLLER DRIVER
114P: Adam Radford 131P: Adam Radford
@@ -116,35 +133,43 @@ M: linuxraid@amcc.com
116L: linux-scsi@vger.kernel.org 133L: linux-scsi@vger.kernel.org
117W: http://www.amcc.com 134W: http://www.amcc.com
118S: Supported 135S: Supported
136F: drivers/scsi/3w-xxxx*
119 137
12053C700 AND 53C700-66 SCSI DRIVER 13853C700 AND 53C700-66 SCSI DRIVER
121P: James E.J. Bottomley 139P: James E.J. Bottomley
122M: James.Bottomley@HansenPartnership.com 140M: James.Bottomley@HansenPartnership.com
123L: linux-scsi@vger.kernel.org 141L: linux-scsi@vger.kernel.org
124S: Maintained 142S: Maintained
143F: drivers/scsi/53c700*
125 144
1266PACK NETWORK DRIVER FOR AX.25 1456PACK NETWORK DRIVER FOR AX.25
127P: Andreas Koensgen 146P: Andreas Koensgen
128M: ajk@iehk.rwth-aachen.de 147M: ajk@iehk.rwth-aachen.de
129L: linux-hams@vger.kernel.org 148L: linux-hams@vger.kernel.org
130S: Maintained 149S: Maintained
150F: drivers/net/hamradio/6pack.c
131 151
1328169 10/100/1000 GIGABIT ETHERNET DRIVER 1528169 10/100/1000 GIGABIT ETHERNET DRIVER
133P: Francois Romieu 153P: Francois Romieu
134M: romieu@fr.zoreil.com 154M: romieu@fr.zoreil.com
135L: netdev@vger.kernel.org 155L: netdev@vger.kernel.org
136S: Maintained 156S: Maintained
157F: drivers/net/r8169.c
137 158
1388250/16?50 (AND CLONE UARTS) SERIAL DRIVER 1598250/16?50 (AND CLONE UARTS) SERIAL DRIVER
139L: linux-serial@vger.kernel.org 160L: linux-serial@vger.kernel.org
140W: http://serial.sourceforge.net 161W: http://serial.sourceforge.net
141S: Orphan 162S: Orphan
163F: drivers/serial/8250*
164F: include/linux/serial_8250.h
142 165
1438390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.] 1668390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
144P: Paul Gortmaker 167P: Paul Gortmaker
145M: p_gortmaker@yahoo.com 168M: p_gortmaker@yahoo.com
146L: netdev@vger.kernel.org 169L: netdev@vger.kernel.org
147S: Maintained 170S: Maintained
171F: drivers/net/*8390*
172F: drivers/net/ax88796.c
148 173
1499P FILE SYSTEM 1749P FILE SYSTEM
150P: Eric Van Hensbergen 175P: Eric Van Hensbergen
@@ -155,14 +180,17 @@ P: Latchesar Ionkov
155M: lucho@ionkov.net 180M: lucho@ionkov.net
156L: v9fs-developer@lists.sourceforge.net 181L: v9fs-developer@lists.sourceforge.net
157W: http://swik.net/v9fs 182W: http://swik.net/v9fs
158T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git 183T: git git://git.kernel.org/pub/scm/linux/kernel/ericvh/v9fs.git
159S: Maintained 184S: Maintained
185F: Documentation/filesystems/9p.txt
186F: fs/9p/
160 187
161A2232 SERIAL BOARD DRIVER 188A2232 SERIAL BOARD DRIVER
162P: Enver Haase 189P: Enver Haase
163M: A2232@gmx.net 190M: A2232@gmx.net
164L: linux-m68k@lists.linux-m68k.org 191L: linux-m68k@lists.linux-m68k.org
165S: Maintained 192S: Maintained
193F: drivers/char/ser_a2232*
166 194
167AACRAID SCSI RAID DRIVER 195AACRAID SCSI RAID DRIVER
168P: Adaptec OEM Raid Solutions 196P: Adaptec OEM Raid Solutions
@@ -170,24 +198,29 @@ M: aacraid@adaptec.com
170L: linux-scsi@vger.kernel.org 198L: linux-scsi@vger.kernel.org
171W: http://www.adaptec.com/ 199W: http://www.adaptec.com/
172S: Supported 200S: Supported
201F: Documentation/scsi/aacraid.txt
202F: drivers/scsi/aacraid/
173 203
174ABIT UGURU 1,2 HARDWARE MONITOR DRIVER 204ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
175P: Hans de Goede 205P: Hans de Goede
176M: j.w.r.degoede@hhs.nl 206M: j.w.r.degoede@hhs.nl
177L: lm-sensors@lm-sensors.org 207L: lm-sensors@lm-sensors.org
178S: Maintained 208S: Maintained
209F: drivers/hwmon/abituguru.c
179 210
180ABIT UGURU 3 HARDWARE MONITOR DRIVER 211ABIT UGURU 3 HARDWARE MONITOR DRIVER
181P: Alistair John Strachan 212P: Alistair John Strachan
182M: alistair@devzero.co.uk 213M: alistair@devzero.co.uk
183L: lm-sensors@lm-sensors.org 214L: lm-sensors@lm-sensors.org
184S: Maintained 215S: Maintained
216F: drivers/hwmon/abituguru3.c
185 217
186ACENIC DRIVER 218ACENIC DRIVER
187P: Jes Sorensen 219P: Jes Sorensen
188M: jes@trained-monkey.org 220M: jes@trained-monkey.org
189L: linux-acenic@sunsite.dk 221L: linux-acenic@sunsite.dk
190S: Maintained 222S: Maintained
223F: drivers/net/acenic*
191 224
192ACER WMI LAPTOP EXTRAS 225ACER WMI LAPTOP EXTRAS
193P: Carlos Corbacho 226P: Carlos Corbacho
@@ -195,14 +228,18 @@ M: carlos@strangeworlds.co.uk
195L: aceracpi@googlegroups.com (subscribers-only) 228L: aceracpi@googlegroups.com (subscribers-only)
196W: http://code.google.com/p/aceracpi 229W: http://code.google.com/p/aceracpi
197S: Maintained 230S: Maintained
231F: drivers/platform/x86/acer-wmi.c
198 232
199ACPI 233ACPI
200P: Len Brown 234P: Len Brown
201M: lenb@kernel.org 235M: lenb@kernel.org
202L: linux-acpi@vger.kernel.org 236L: linux-acpi@vger.kernel.org
203W: http://www.lesswatts.org/projects/acpi/ 237W: http://www.lesswatts.org/projects/acpi/
204T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git 238T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
205S: Supported 239S: Supported
240F: drivers/acpi/
241F: drivers/pnp/pnpacpi/
242F: include/linux/acpi.h
206 243
207ACPI BATTERY DRIVERS 244ACPI BATTERY DRIVERS
208P: Alexey Starikovskiy 245P: Alexey Starikovskiy
@@ -210,6 +247,8 @@ M: astarikovskiy@suse.de
210L: linux-acpi@vger.kernel.org 247L: linux-acpi@vger.kernel.org
211W: http://www.lesswatts.org/projects/acpi/ 248W: http://www.lesswatts.org/projects/acpi/
212S: Supported 249S: Supported
250F: drivers/acpi/battery.c
251F: drivers/acpi/*sbs*
213 252
214ACPI EC DRIVER 253ACPI EC DRIVER
215P: Alexey Starikovskiy 254P: Alexey Starikovskiy
@@ -217,6 +256,7 @@ M: astarikovskiy@suse.de
217L: linux-acpi@vger.kernel.org 256L: linux-acpi@vger.kernel.org
218W: http://www.lesswatts.org/projects/acpi/ 257W: http://www.lesswatts.org/projects/acpi/
219S: Supported 258S: Supported
259F: drivers/acpi/ec.c
220 260
221ACPI FAN DRIVER 261ACPI FAN DRIVER
222P: Zhang Rui 262P: Zhang Rui
@@ -224,12 +264,14 @@ M: rui.zhang@intel.com
224L: linux-acpi@vger.kernel.org 264L: linux-acpi@vger.kernel.org
225W: http://www.lesswatts.org/projects/acpi/ 265W: http://www.lesswatts.org/projects/acpi/
226S: Supported 266S: Supported
267F: drivers/acpi/fan.c
227 268
228ACPI PCI HOTPLUG DRIVER 269ACPI PCI HOTPLUG DRIVER
229P: Kristen Carlson Accardi 270P: Kristen Carlson Accardi
230M: kristen.c.accardi@intel.com 271M: kristen.c.accardi@intel.com
231L: linux-pci@vger.kernel.org 272L: linux-pci@vger.kernel.org
232S: Supported 273S: Supported
274F: drivers/pci/hotplug/acpi*
233 275
234ACPI THERMAL DRIVER 276ACPI THERMAL DRIVER
235P: Zhang Rui 277P: Zhang Rui
@@ -237,6 +279,7 @@ M: rui.zhang@intel.com
237L: linux-acpi@vger.kernel.org 279L: linux-acpi@vger.kernel.org
238W: http://www.lesswatts.org/projects/acpi/ 280W: http://www.lesswatts.org/projects/acpi/
239S: Supported 281S: Supported
282F: drivers/acpi/*thermal*
240 283
241ACPI VIDEO DRIVER 284ACPI VIDEO DRIVER
242P: Zhang Rui 285P: Zhang Rui
@@ -244,6 +287,7 @@ M: rui.zhang@intel.com
244L: linux-acpi@vger.kernel.org 287L: linux-acpi@vger.kernel.org
245W: http://www.lesswatts.org/projects/acpi/ 288W: http://www.lesswatts.org/projects/acpi/
246S: Supported 289S: Supported
290F: drivers/acpi/video.c
247 291
248ACPI WMI DRIVER 292ACPI WMI DRIVER
249P: Carlos Corbacho 293P: Carlos Corbacho
@@ -251,6 +295,7 @@ M: carlos@strangeworlds.co.uk
251L: linux-acpi@vger.kernel.org 295L: linux-acpi@vger.kernel.org
252W: http://www.lesswatts.org/projects/acpi/ 296W: http://www.lesswatts.org/projects/acpi/
253S: Maintained 297S: Maintained
298F: drivers/platform/x86/wmi.c
254 299
255AD1889 ALSA SOUND DRIVER 300AD1889 ALSA SOUND DRIVER
256P: Kyle McMartin 301P: Kyle McMartin
@@ -260,77 +305,99 @@ M: T-Bone@parisc-linux.org
260W: http://wiki.parisc-linux.org/AD1889 305W: http://wiki.parisc-linux.org/AD1889
261L: linux-parisc@vger.kernel.org 306L: linux-parisc@vger.kernel.org
262S: Maintained 307S: Maintained
308F: sound/pci/ad1889.*
263 309
264ADM1025 HARDWARE MONITOR DRIVER 310ADM1025 HARDWARE MONITOR DRIVER
265P: Jean Delvare 311P: Jean Delvare
266M: khali@linux-fr.org 312M: khali@linux-fr.org
267L: lm-sensors@lm-sensors.org 313L: lm-sensors@lm-sensors.org
268S: Maintained 314S: Maintained
315F: Documentation/hwmon/adm1025
316F: drivers/hwmon/adm1025.c
269 317
270ADM1029 HARDWARE MONITOR DRIVER 318ADM1029 HARDWARE MONITOR DRIVER
271P: Corentin Labbe 319P: Corentin Labbe
272M: corentin.labbe@geomatys.fr 320M: corentin.labbe@geomatys.fr
273L: lm-sensors@lm-sensors.org 321L: lm-sensors@lm-sensors.org
274S: Maintained 322S: Maintained
323F: drivers/hwmon/adm1029.c
275 324
276ADM8211 WIRELESS DRIVER 325ADM8211 WIRELESS DRIVER
277P: Michael Wu 326P: Michael Wu
278M: flamingice@sourmilk.net 327M: flamingice@sourmilk.net
279L: linux-wireless@vger.kernel.org 328L: linux-wireless@vger.kernel.org
280W: http://linuxwireless.org/ 329W: http://linuxwireless.org/
281T: git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git 330T: git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
282S: Maintained 331S: Maintained
332F: drivers/net/wireless/adm8211.*
283 333
284ADT746X FAN DRIVER 334ADT746X FAN DRIVER
285P: Colin Leroy 335P: Colin Leroy
286M: colin@colino.net 336M: colin@colino.net
287S: Maintained 337S: Maintained
338F: drivers/macintosh/therm_adt746x.c
288 339
289ADVANSYS SCSI DRIVER 340ADVANSYS SCSI DRIVER
290P: Matthew Wilcox 341P: Matthew Wilcox
291M: matthew@wil.cx 342M: matthew@wil.cx
292L: linux-scsi@vger.kernel.org 343L: linux-scsi@vger.kernel.org
293S: Maintained 344S: Maintained
345F: Documentation/scsi/advansys.txt
346F: drivers/scsi/advansys.c
294 347
295AEDSP16 DRIVER 348AEDSP16 DRIVER
296P: Riccardo Facchetti 349P: Riccardo Facchetti
297M: fizban@tin.it 350M: fizban@tin.it
298S: Maintained 351S: Maintained
352F: sound/oss/aedsp16.c
299 353
300AFFS FILE SYSTEM 354AFFS FILE SYSTEM
301P: Roman Zippel 355P: Roman Zippel
302M: zippel@linux-m68k.org 356M: zippel@linux-m68k.org
303S: Maintained 357S: Maintained
358F: Documentation/filesystems/affs.txt
359F: fs/affs/
304 360
305AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN 361AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN
306P: David Howells 362P: David Howells
307M: dhowells@redhat.com 363M: dhowells@redhat.com
308L: linux-afs@lists.infradead.org 364L: linux-afs@lists.infradead.org
309S: Supported 365S: Supported
366F: fs/afs/
367F: include/net/af_rxrpc.h
368F: net/rxrpc/af_rxrpc.c
310 369
311AGPGART DRIVER 370AGPGART DRIVER
312P: David Airlie 371P: David Airlie
313M: airlied@linux.ie 372M: airlied@linux.ie
314T: git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git 373T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
315S: Maintained 374S: Maintained
375F: drivers/char/agp/
376F: include/linux/agp*
316 377
317AHA152X SCSI DRIVER 378AHA152X SCSI DRIVER
318P: Juergen E. Fischer 379P: Juergen E. Fischer
319M: Juergen Fischer <fischer@norbit.de> 380M: fischer@norbit.de
320L: linux-scsi@vger.kernel.org 381L: linux-scsi@vger.kernel.org
321S: Maintained 382S: Maintained
383F: drivers/scsi/aha152x*
384F: drivers/scsi/pcmcia/aha152x*
322 385
323AIC7XXX / AIC79XX SCSI DRIVER 386AIC7XXX / AIC79XX SCSI DRIVER
324P: Hannes Reinecke 387P: Hannes Reinecke
325M: hare@suse.de 388M: hare@suse.de
326L: linux-scsi@vger.kernel.org 389L: linux-scsi@vger.kernel.org
327S: Maintained 390S: Maintained
391F: drivers/scsi/aic7xxx/
392F: drivers/scsi/aic7xxx_old/
328 393
329AIO 394AIO
330P: Benjamin LaHaise 395P: Benjamin LaHaise
331M: bcrl@kvack.org 396M: bcrl@kvack.org
332L: linux-aio@kvack.org 397L: linux-aio@kvack.org
333S: Supported 398S: Supported
399F: fs/aio.c
400F: include/linux/*aio*.h
334 401
335ALCATEL SPEEDTOUCH USB DRIVER 402ALCATEL SPEEDTOUCH USB DRIVER
336P: Duncan Sands 403P: Duncan Sands
@@ -338,17 +405,22 @@ M: duncan.sands@free.fr
338L: linux-usb@vger.kernel.org 405L: linux-usb@vger.kernel.org
339W: http://www.linux-usb.org/SpeedTouch/ 406W: http://www.linux-usb.org/SpeedTouch/
340S: Maintained 407S: Maintained
408F: drivers/usb/atm/speedtch.c
409F: drivers/usb/atm/usbatm.c
341 410
342ALCHEMY AU1XX0 MMC DRIVER 411ALCHEMY AU1XX0 MMC DRIVER
343P: Manuel Lauss 412P: Manuel Lauss
344M: manuel.lauss@gmail.com 413M: manuel.lauss@gmail.com
345S: Maintained 414S: Maintained
415F: drivers/mmc/host/au1xmmc.c
346 416
347ALI1563 I2C DRIVER 417ALI1563 I2C DRIVER
348P: Rudolf Marek 418P: Rudolf Marek
349M: r.marek@assembler.cz 419M: r.marek@assembler.cz
350L: linux-i2c@vger.kernel.org 420L: linux-i2c@vger.kernel.org
351S: Maintained 421S: Maintained
422F: Documentation/i2c/busses/i2c-ali1563
423F: drivers/i2c/busses/i2c-ali1563.c
352 424
353ALPHA PORT 425ALPHA PORT
354P: Richard Henderson 426P: Richard Henderson
@@ -358,31 +430,41 @@ P: Ivan Kokshaysky
358M: ink@jurassic.park.msu.ru 430M: ink@jurassic.park.msu.ru
359S: Maintained for 2.4; PCI support for 2.6. 431S: Maintained for 2.4; PCI support for 2.6.
360L: linux-alpha@vger.kernel.org 432L: linux-alpha@vger.kernel.org
433F: arch/alpha/
361 434
362AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER 435AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
363P: Thomas Dahlmann 436P: Thomas Dahlmann
364M: thomas.dahlmann@amd.com 437M: thomas.dahlmann@amd.com
365L: linux-geode@lists.infradead.org (moderated for non-subscribers) 438L: linux-geode@lists.infradead.org (moderated for non-subscribers)
366S: Supported 439S: Supported
440F: drivers/usb/gadget/amd5536udc.*
367 441
368AMD GEODE PROCESSOR/CHIPSET SUPPORT 442AMD GEODE PROCESSOR/CHIPSET SUPPORT
369P: Jordan Crouse 443P: Jordan Crouse
370L: linux-geode@lists.infradead.org (moderated for non-subscribers) 444L: linux-geode@lists.infradead.org (moderated for non-subscribers)
371W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html 445W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
372S: Supported 446S: Supported
447F: arch/x86/kernel/geode_32.c
448F: drivers/char/hw_random/geode-rng.c
449F: drivers/crypto/geode*
450F: drivers/video/geode/
451F: arch/x86/include/asm/geode.h
373 452
374AMD IOMMU (AMD-VI) 453AMD IOMMU (AMD-VI)
375P: Joerg Roedel 454P: Joerg Roedel
376M: joerg.roedel@amd.com 455M: joerg.roedel@amd.com
377L: iommu@lists.linux-foundation.org 456L: iommu@lists.linux-foundation.org
378T: git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git 457T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
379S: Supported 458S: Supported
459F: arch/x86/kernel/amd_iommu*.c
460F: arch/x86/include/asm/amd_iommu*.h
380 461
381AMD MICROCODE UPDATE SUPPORT 462AMD MICROCODE UPDATE SUPPORT
382P: Andreas Herrmann 463P: Andreas Herrmann
383M: andeas.herrmann3@amd.com 464M: andeas.herrmann3@amd.com
384L: amd64-microcode@amd64.org 465L: amd64-microcode@amd64.org
385S: Supported 466S: Supported
467F: arch/x86/kernel/microcode_amd.c
386 468
387AMS (Apple Motion Sensor) DRIVER 469AMS (Apple Motion Sensor) DRIVER
388P: Stelian Pop 470P: Stelian Pop
@@ -390,6 +472,7 @@ M: stelian@popies.net
390P: Michael Hanselmann 472P: Michael Hanselmann
391M: linux-kernel@hansmi.ch 473M: linux-kernel@hansmi.ch
392S: Supported 474S: Supported
475F: drivers/hwmon/ams/
393 476
394AMSO1100 RNIC DRIVER 477AMSO1100 RNIC DRIVER
395P: Tom Tucker 478P: Tom Tucker
@@ -398,6 +481,7 @@ P: Steve Wise
398M: swise@opengridcomputing.com 481M: swise@opengridcomputing.com
399L: general@lists.openfabrics.org 482L: general@lists.openfabrics.org
400S: Maintained 483S: Maintained
484F: drivers/infiniband/hw/amso1100/
401 485
402AOA (Apple Onboard Audio) ALSA DRIVER 486AOA (Apple Onboard Audio) ALSA DRIVER
403P: Johannes Berg 487P: Johannes Berg
@@ -405,6 +489,7 @@ M: johannes@sipsolutions.net
405L: linuxppc-dev@ozlabs.org 489L: linuxppc-dev@ozlabs.org
406L: alsa-devel@alsa-project.org (subscribers-only) 490L: alsa-devel@alsa-project.org (subscribers-only)
407S: Maintained 491S: Maintained
492F: sound/aoa/
408 493
409APM DRIVER 494APM DRIVER
410P: Stephen Rothwell 495P: Stephen Rothwell
@@ -412,48 +497,63 @@ M: sfr@canb.auug.org.au
412L: linux-laptop@vger.kernel.org 497L: linux-laptop@vger.kernel.org
413W: http://www.canb.auug.org.au/~sfr/ 498W: http://www.canb.auug.org.au/~sfr/
414S: Supported 499S: Supported
500F: arch/x86/kernel/apm_32.c
501F: include/linux/apm_bios.h
415 502
416APPLE BCM5974 MULTITOUCH DRIVER 503APPLE BCM5974 MULTITOUCH DRIVER
417P: Henrik Rydberg 504P: Henrik Rydberg
418M: rydberg@euromail.se 505M: rydberg@euromail.se
419L: linux-input@vger.kernel.org 506L: linux-input@vger.kernel.org
420S: Maintained 507S: Maintained
508F: drivers/input/mouse/bcm5974.c
421 509
422APPLE SMC DRIVER 510APPLE SMC DRIVER
423P: Nicolas Boichat 511P: Nicolas Boichat
424M: nicolas@boichat.ch 512M: nicolas@boichat.ch
425L: mactel-linux-devel@lists.sourceforge.net 513L: mactel-linux-devel@lists.sourceforge.net
426S: Maintained 514S: Maintained
515F: drivers/hwmon/applesmc.c
427 516
428APPLETALK NETWORK LAYER 517APPLETALK NETWORK LAYER
429P: Arnaldo Carvalho de Melo 518P: Arnaldo Carvalho de Melo
430M: acme@ghostprotocols.net 519M: acme@ghostprotocols.net
431S: Maintained 520S: Maintained
521F: drivers/net/appletalk/
522F: net/appletalk/
432 523
433APPLETOUCH TOUCHPAD DRIVER 524APPLETOUCH TOUCHPAD DRIVER
434P: Johannes Berg 525P: Johannes Berg
435M: johannes@sipsolutions.net 526M: johannes@sipsolutions.net
436L: linux-input@vger.kernel.org 527L: linux-input@vger.kernel.org
437S: Maintained 528S: Maintained
529F: Documentation/input/appletouch.txt
530F: drivers/input/mouse/appletouch.c
438 531
439ARC FRAMEBUFFER DRIVER 532ARC FRAMEBUFFER DRIVER
440P: Jaya Kumar 533P: Jaya Kumar
441M: jayalk@intworks.biz 534M: jayalk@intworks.biz
442S: Maintained 535S: Maintained
536F: drivers/video/arcfb.c
537F: drivers/video/fb_defio.c
443 538
444ARM MFM AND FLOPPY DRIVERS 539ARM MFM AND FLOPPY DRIVERS
445P: Ian Molton 540P: Ian Molton
446M: spyro@f2s.com 541M: spyro@f2s.com
447S: Maintained 542S: Maintained
543F: arch/arm/lib/floppydma.S
544F: arch/arm/include/asm/floppy.h
448 545
449ARM PRIMECELL MMCI PL180/1 DRIVER 546ARM PRIMECELL MMCI PL180/1 DRIVER
450S: Orphan 547S: Orphan
548F: drivers/mmc/host/mmci.*
451 549
452ARM/ADI ROADRUNNER MACHINE SUPPORT 550ARM/ADI ROADRUNNER MACHINE SUPPORT
453P: Lennert Buytenhek 551P: Lennert Buytenhek
454M: kernel@wantstofly.org 552M: kernel@wantstofly.org
455L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 553L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
456S: Maintained 554S: Maintained
555F: arch/arm/mach-ixp23xx/
556F: arch/arm/mach-ixp23xx/include/mach/
457 557
458ARM/ADS SPHERE MACHINE SUPPORT 558ARM/ADS SPHERE MACHINE SUPPORT
459P: Lennert Buytenhek 559P: Lennert Buytenhek
@@ -507,7 +607,7 @@ ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
507P: Paulius Zaleckas 607P: Paulius Zaleckas
508M: paulius.zaleckas@teltonika.lt 608M: paulius.zaleckas@teltonika.lt
509L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 609L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
510T: git gitorious.org/linux-gemini/mainline.git 610T: git git://gitorious.org/linux-gemini/mainline.git
511S: Maintained 611S: Maintained
512 612
513ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6) 613ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
@@ -636,17 +736,17 @@ P: Dirk Opfer
636M: dirk@opfer-online.de 736M: dirk@opfer-online.de
637S: Maintained 737S: Maintained
638 738
639ARM/PALMTX,PALMT5,PALMLD SUPPORT 739ARM/PALMTX,PALMT5,PALMLD,PALMTE2 SUPPORT
640P: Marek Vasut 740P: Marek Vasut
641M: marek.vasut@gmail.com 741M: marek.vasut@gmail.com
642W: http://hackndev.com 742W: http://hackndev.com
643S: Maintained 743S: Maintained
644 744
645ARM/PALMZ72 SUPPORT 745ARM/PALMZ72 SUPPORT
646P: Sergey Lapin 746P: Sergey Lapin
647M: slapin@ossfans.org 747M: slapin@ossfans.org
648W: http://hackndev.com 748W: http://hackndev.com
649S: Maintained 749S: Maintained
650 750
651ARM/PLEB SUPPORT 751ARM/PLEB SUPPORT
652P: Peter Chubb 752P: Peter Chubb
@@ -707,16 +807,17 @@ L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
707S: Maintained 807S: Maintained
708 808
709ARM/NUVOTON W90X900 ARM ARCHITECTURE 809ARM/NUVOTON W90X900 ARM ARCHITECTURE
710P: Wan ZongShun 810P: Wan ZongShun
711M: mcuos.com@gmail.com 811M: mcuos.com@gmail.com
712L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 812L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
713W: http://www.mcuos.com 813W: http://www.mcuos.com
714S: Maintained 814S: Maintained
715 815
716ARPD SUPPORT 816ARPD SUPPORT
717P: Jonathan Layes 817P: Jonathan Layes
718L: netdev@vger.kernel.org 818L: netdev@vger.kernel.org
719S: Maintained 819S: Maintained
820F: net/ipv4/arp.c
720 821
721ASUS ACPI EXTRAS DRIVER 822ASUS ACPI EXTRAS DRIVER
722P: Corentin Chary 823P: Corentin Chary
@@ -727,12 +828,15 @@ L: acpi4asus-user@lists.sourceforge.net
727W: http://sourceforge.net/projects/acpi4asus 828W: http://sourceforge.net/projects/acpi4asus
728W: http://xf.iksaif.net/acpi4asus 829W: http://xf.iksaif.net/acpi4asus
729S: Maintained 830S: Maintained
831F: arch/x86/kernel/acpi/boot.c
832F: drivers/platform/x86/asus_acpi.c
730 833
731ASUS ASB100 HARDWARE MONITOR DRIVER 834ASUS ASB100 HARDWARE MONITOR DRIVER
732P: Mark M. Hoffman 835P: Mark M. Hoffman
733M: mhoffman@lightlink.com 836M: mhoffman@lightlink.com
734L: lm-sensors@lm-sensors.org 837L: lm-sensors@lm-sensors.org
735S: Maintained 838S: Maintained
839F: drivers/hwmon/asb100.c
736 840
737ASUS LAPTOP EXTRAS DRIVER 841ASUS LAPTOP EXTRAS DRIVER
738P: Corentin Chary 842P: Corentin Chary
@@ -741,6 +845,7 @@ L: acpi4asus-user@lists.sourceforge.net
741W: http://sourceforge.net/projects/acpi4asus 845W: http://sourceforge.net/projects/acpi4asus
742W: http://xf.iksaif.net/acpi4asus 846W: http://xf.iksaif.net/acpi4asus
743S: Maintained 847S: Maintained
848F: drivers/platform/x86/asus-laptop.c
744 849
745ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API 850ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
746P: Dan Williams 851P: Dan Williams
@@ -750,12 +855,19 @@ M: maciej.sosnowski@intel.com
750L: linux-kernel@vger.kernel.org 855L: linux-kernel@vger.kernel.org
751W: http://sourceforge.net/projects/xscaleiop 856W: http://sourceforge.net/projects/xscaleiop
752S: Supported 857S: Supported
858F: Documentation/crypto/async-tx-api.txt
859F: crypto/async_tx/
860F: drivers/dma/
861F: include/linux/dmaengine.h
862F: include/linux/async_tx.h
753 863
754ATA OVER ETHERNET (AOE) DRIVER 864ATA OVER ETHERNET (AOE) DRIVER
755P: Ed L. Cashin 865P: Ed L. Cashin
756M: ecashin@coraid.com 866M: ecashin@coraid.com
757W: http://www.coraid.com/support/linux 867W: http://www.coraid.com/support/linux
758S: Supported 868S: Supported
869F: Documentation/aoe/
870F: drivers/block/aoe/
759 871
760ATHEROS ATH5K WIRELESS DRIVER 872ATHEROS ATH5K WIRELESS DRIVER
761P: Jiri Slaby 873P: Jiri Slaby
@@ -769,6 +881,7 @@ M: me@bobcopeland.com
769L: linux-wireless@vger.kernel.org 881L: linux-wireless@vger.kernel.org
770L: ath5k-devel@lists.ath5k.org 882L: ath5k-devel@lists.ath5k.org
771S: Maintained 883S: Maintained
884F: drivers/net/wireless/ath5k/
772 885
773ATHEROS ATH9K WIRELESS DRIVER 886ATHEROS ATH9K WIRELESS DRIVER
774P: Luis R. Rodriguez 887P: Luis R. Rodriguez
@@ -778,6 +891,7 @@ M: jmalinen@atheros.com
778L: linux-wireless@vger.kernel.org 891L: linux-wireless@vger.kernel.org
779L: ath9k-devel@lists.ath9k.org 892L: ath9k-devel@lists.ath9k.org
780S: Supported 893S: Supported
894F: drivers/net/wireless/ath9k/
781 895
782ATHEROS AR9170 WIRELESS DRIVER 896ATHEROS AR9170 WIRELESS DRIVER
783P: Christian Lamparter 897P: Christian Lamparter
@@ -791,6 +905,7 @@ ATI_REMOTE2 DRIVER
791P: Ville Syrjala 905P: Ville Syrjala
792M: syrjala@sci.fi 906M: syrjala@sci.fi
793S: Maintained 907S: Maintained
908F: drivers/input/misc/ati_remote2.c
794 909
795ATLX ETHERNET DRIVERS 910ATLX ETHERNET DRIVERS
796P: Jay Cliburn 911P: Jay Cliburn
@@ -803,6 +918,7 @@ L: atl1-devel@lists.sourceforge.net
803W: http://sourceforge.net/projects/atl1 918W: http://sourceforge.net/projects/atl1
804W: http://atl1.sourceforge.net 919W: http://atl1.sourceforge.net
805S: Maintained 920S: Maintained
921F: drivers/net/atlx/
806 922
807ATM 923ATM
808P: Chas Williams 924P: Chas Williams
@@ -811,6 +927,8 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only)
811L: netdev@vger.kernel.org 927L: netdev@vger.kernel.org
812W: http://linux-atm.sourceforge.net 928W: http://linux-atm.sourceforge.net
813S: Maintained 929S: Maintained
930F: drivers/atm/
931F: include/linux/atm*
814 932
815ATMEL AT91 MCI DRIVER 933ATMEL AT91 MCI DRIVER
816P: Nicolas Ferre 934P: Nicolas Ferre
@@ -819,28 +937,34 @@ L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
819W: http://www.atmel.com/products/AT91/ 937W: http://www.atmel.com/products/AT91/
820W: http://www.at91.com/ 938W: http://www.at91.com/
821S: Maintained 939S: Maintained
940F: drivers/mmc/host/at91_mci.c
822 941
823ATMEL AT91 / AT32 SERIAL DRIVER 942ATMEL AT91 / AT32 SERIAL DRIVER
824P: Haavard Skinnemoen 943P: Haavard Skinnemoen
825M: hskinnemoen@atmel.com 944M: hskinnemoen@atmel.com
826L: linux-kernel@vger.kernel.org 945L: linux-kernel@vger.kernel.org
827S: Supported 946S: Supported
947F: drivers/serial/atmel_serial.c
828 948
829ATMEL LCDFB DRIVER 949ATMEL LCDFB DRIVER
830P: Nicolas Ferre 950P: Nicolas Ferre
831M: nicolas.ferre@atmel.com 951M: nicolas.ferre@atmel.com
832L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 952L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
833S: Maintained 953S: Maintained
954F: drivers/video/atmel_lcdfb.c
955F: include/video/atmel_lcdc.h
834 956
835ATMEL MACB ETHERNET DRIVER 957ATMEL MACB ETHERNET DRIVER
836P: Haavard Skinnemoen 958P: Haavard Skinnemoen
837M: hskinnemoen@atmel.com 959M: hskinnemoen@atmel.com
838S: Supported 960S: Supported
961F: drivers/net/macb.*
839 962
840ATMEL SPI DRIVER 963ATMEL SPI DRIVER
841P: Haavard Skinnemoen 964P: Haavard Skinnemoen
842M: hskinnemoen@atmel.com 965M: hskinnemoen@atmel.com
843S: Supported 966S: Supported
967F: drivers/spi/atmel_spi.*
844 968
845ATMEL USBA UDC DRIVER 969ATMEL USBA UDC DRIVER
846P: Haavard Skinnemoen 970P: Haavard Skinnemoen
@@ -848,6 +972,7 @@ M: hskinnemoen@atmel.com
848L: kernel@avr32linux.org 972L: kernel@avr32linux.org
849W: http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver 973W: http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
850S: Supported 974S: Supported
975F: drivers/usb/gadget/atmel_usba_udc.*
851 976
852ATMEL WIRELESS DRIVER 977ATMEL WIRELESS DRIVER
853P: Simon Kelley 978P: Simon Kelley
@@ -856,6 +981,7 @@ L: linux-wireless@vger.kernel.org
856W: http://www.thekelleys.org.uk/atmel 981W: http://www.thekelleys.org.uk/atmel
857W: http://atmelwlandriver.sourceforge.net/ 982W: http://atmelwlandriver.sourceforge.net/
858S: Maintained 983S: Maintained
984F: drivers/net/wireless/atmel*
859 985
860AUDIT SUBSYSTEM 986AUDIT SUBSYSTEM
861P: Al Viro 987P: Al Viro
@@ -864,8 +990,10 @@ P: Eric Paris
864M: eparis@redhat.com 990M: eparis@redhat.com
865L: linux-audit@redhat.com (subscribers-only) 991L: linux-audit@redhat.com (subscribers-only)
866W: http://people.redhat.com/sgrubb/audit/ 992W: http://people.redhat.com/sgrubb/audit/
867T: git git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git 993T: git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
868S: Maintained 994S: Maintained
995F: include/linux/audit.h
996F: kernel/audit*
869 997
870AUXILIARY DISPLAY DRIVERS 998AUXILIARY DISPLAY DRIVERS
871P: Miguel Ojeda Sandonis 999P: Miguel Ojeda Sandonis
@@ -874,6 +1002,8 @@ L: linux-kernel@vger.kernel.org
874W: http://miguelojeda.es/auxdisplay.htm 1002W: http://miguelojeda.es/auxdisplay.htm
875W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1003W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
876S: Maintained 1004S: Maintained
1005F: drivers/auxdisplay/
1006F: include/linux/cfag12864b.h
877 1007
878AVR32 ARCHITECTURE 1008AVR32 ARCHITECTURE
879P: Haavard Skinnemoen 1009P: Haavard Skinnemoen
@@ -882,11 +1012,13 @@ W: http://www.atmel.com/products/AVR32/
882W: http://avr32linux.org/ 1012W: http://avr32linux.org/
883W: http://avrfreaks.net/ 1013W: http://avrfreaks.net/
884S: Supported 1014S: Supported
1015F: arch/avr32/
885 1016
886AVR32/AT32AP MACHINE SUPPORT 1017AVR32/AT32AP MACHINE SUPPORT
887P: Haavard Skinnemoen 1018P: Haavard Skinnemoen
888M: hskinnemoen@atmel.com 1019M: hskinnemoen@atmel.com
889S: Supported 1020S: Supported
1021F: arch/avr32/mach-at32ap/
890 1022
891AX.25 NETWORK LAYER 1023AX.25 NETWORK LAYER
892P: Ralf Baechle 1024P: Ralf Baechle
@@ -894,6 +1026,9 @@ M: ralf@linux-mips.org
894L: linux-hams@vger.kernel.org 1026L: linux-hams@vger.kernel.org
895W: http://www.linux-ax25.org/ 1027W: http://www.linux-ax25.org/
896S: Maintained 1028S: Maintained
1029F: include/linux/ax25.h
1030F: include/net/ax25.h
1031F: net/ax25/
897 1032
898B43 WIRELESS DRIVER 1033B43 WIRELESS DRIVER
899P: Michael Buesch 1034P: Michael Buesch
@@ -903,6 +1038,7 @@ M: stefano.brivio@polimi.it
903L: linux-wireless@vger.kernel.org 1038L: linux-wireless@vger.kernel.org
904W: http://linuxwireless.org/en/users/Drivers/b43 1039W: http://linuxwireless.org/en/users/Drivers/b43
905S: Maintained 1040S: Maintained
1041F: drivers/net/wireless/b43/
906 1042
907B43LEGACY WIRELESS DRIVER 1043B43LEGACY WIRELESS DRIVER
908P: Larry Finger 1044P: Larry Finger
@@ -912,11 +1048,14 @@ M: stefano.brivio@polimi.it
912L: linux-wireless@vger.kernel.org 1048L: linux-wireless@vger.kernel.org
913W: http://linuxwireless.org/en/users/Drivers/b43 1049W: http://linuxwireless.org/en/users/Drivers/b43
914S: Maintained 1050S: Maintained
1051F: drivers/net/wireless/b43legacy/
915 1052
916BACKLIGHT CLASS/SUBSYSTEM 1053BACKLIGHT CLASS/SUBSYSTEM
917P: Richard Purdie 1054P: Richard Purdie
918M: rpurdie@rpsys.net 1055M: rpurdie@rpsys.net
919S: Maintained 1056S: Maintained
1057F: drivers/video/backlight/
1058F: include/linux/backlight.h
920 1059
921BAYCOM/HDLCDRV DRIVERS FOR AX.25 1060BAYCOM/HDLCDRV DRIVERS FOR AX.25
922P: Thomas Sailer 1061P: Thomas Sailer
@@ -924,18 +1063,24 @@ M: t.sailer@alumni.ethz.ch
924L: linux-hams@vger.kernel.org 1063L: linux-hams@vger.kernel.org
925W: http://www.baycom.org/~tom/ham/ham.html 1064W: http://www.baycom.org/~tom/ham/ham.html
926S: Maintained 1065S: Maintained
1066F: drivers/net/hamradio/baycom*
927 1067
928BEFS FILE SYSTEM 1068BEFS FILE SYSTEM
929P: Sergey S. Kostyliov 1069P: Sergey S. Kostyliov
930M: rathamahata@php4.ru 1070M: rathamahata@php4.ru
931L: linux-kernel@vger.kernel.org 1071L: linux-kernel@vger.kernel.org
932S: Maintained 1072S: Maintained
1073F: Documentation/filesystems/befs.txt
1074F: fs/befs/
933 1075
934BFS FILE SYSTEM 1076BFS FILE SYSTEM
935P: Tigran A. Aivazian 1077P: Tigran A. Aivazian
936M: tigran@aivazian.fsnet.co.uk 1078M: tigran@aivazian.fsnet.co.uk
937L: linux-kernel@vger.kernel.org 1079L: linux-kernel@vger.kernel.org
938S: Maintained 1080S: Maintained
1081F: Documentation/filesystems/bfs.txt
1082F: fs/bfs/
1083F: include/linux/bfs_fs.h
939 1084
940BLACKFIN ARCHITECTURE 1085BLACKFIN ARCHITECTURE
941P: Bryan Wu 1086P: Bryan Wu
@@ -943,6 +1088,7 @@ M: cooloney@kernel.org
943L: uclinux-dist-devel@blackfin.uclinux.org 1088L: uclinux-dist-devel@blackfin.uclinux.org
944W: http://blackfin.uclinux.org 1089W: http://blackfin.uclinux.org
945S: Supported 1090S: Supported
1091F: arch/blackfin/
946 1092
947BLACKFIN EMAC DRIVER 1093BLACKFIN EMAC DRIVER
948P: Bryan Wu 1094P: Bryan Wu
@@ -950,6 +1096,7 @@ M: cooloney@kernel.org
950L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1096L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
951W: http://blackfin.uclinux.org 1097W: http://blackfin.uclinux.org
952S: Supported 1098S: Supported
1099F: drivers/net/bfin_mac.*
953 1100
954BLACKFIN RTC DRIVER 1101BLACKFIN RTC DRIVER
955P: Mike Frysinger 1102P: Mike Frysinger
@@ -957,6 +1104,7 @@ M: vapier.adi@gmail.com
957L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1104L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
958W: http://blackfin.uclinux.org 1105W: http://blackfin.uclinux.org
959S: Supported 1106S: Supported
1107F: drivers/rtc/rtc-bfin.c
960 1108
961BLACKFIN SERIAL DRIVER 1109BLACKFIN SERIAL DRIVER
962P: Sonic Zhang 1110P: Sonic Zhang
@@ -964,6 +1112,7 @@ M: sonic.zhang@analog.com
964L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1112L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
965W: http://blackfin.uclinux.org 1113W: http://blackfin.uclinux.org
966S: Supported 1114S: Supported
1115F: drivers/serial/bfin_5xx.c
967 1116
968BLACKFIN WATCHDOG DRIVER 1117BLACKFIN WATCHDOG DRIVER
969P: Mike Frysinger 1118P: Mike Frysinger
@@ -971,6 +1120,7 @@ M: vapier.adi@gmail.com
971L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1120L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
972W: http://blackfin.uclinux.org 1121W: http://blackfin.uclinux.org
973S: Supported 1122S: Supported
1123F: drivers/watchdog/bfin_wdt.c
974 1124
975BLACKFIN I2C TWI DRIVER 1125BLACKFIN I2C TWI DRIVER
976P: Sonic Zhang 1126P: Sonic Zhang
@@ -978,19 +1128,22 @@ M: sonic.zhang@analog.com
978L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) 1128L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
979W: http://blackfin.uclinux.org/ 1129W: http://blackfin.uclinux.org/
980S: Supported 1130S: Supported
1131F: drivers/i2c/busses/i2c-bfin-twi.c
981 1132
982BLOCK LAYER 1133BLOCK LAYER
983P: Jens Axboe 1134P: Jens Axboe
984M: axboe@kernel.dk 1135M: axboe@kernel.dk
985L: linux-kernel@vger.kernel.org 1136L: linux-kernel@vger.kernel.org
986T: git kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git 1137T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
987S: Maintained 1138S: Maintained
1139F: block/
988 1140
989BLOCK2MTD DRIVER 1141BLOCK2MTD DRIVER
990P: Joern Engel 1142P: Joern Engel
991M: joern@lazybastard.org 1143M: joern@lazybastard.org
992L: linux-mtd@lists.infradead.org 1144L: linux-mtd@lists.infradead.org
993S: Maintained 1145S: Maintained
1146F: drivers/mtd/devices/block2mtd.c
994 1147
995BLUETOOTH DRIVERS 1148BLUETOOTH DRIVERS
996P: Marcel Holtmann 1149P: Marcel Holtmann
@@ -998,14 +1151,17 @@ M: marcel@holtmann.org
998L: linux-bluetooth@vger.kernel.org 1151L: linux-bluetooth@vger.kernel.org
999W: http://www.bluez.org/ 1152W: http://www.bluez.org/
1000S: Maintained 1153S: Maintained
1154F: drivers/bluetooth/
1001 1155
1002BLUETOOTH SUBSYSTEM 1156BLUETOOTH SUBSYSTEM
1003P: Marcel Holtmann 1157P: Marcel Holtmann
1004M: marcel@holtmann.org 1158M: marcel@holtmann.org
1005L: linux-bluetooth@vger.kernel.org 1159L: linux-bluetooth@vger.kernel.org
1006W: http://www.bluez.org/ 1160W: http://www.bluez.org/
1007T: git kernel.org:/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git 1161T: git git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
1008S: Maintained 1162S: Maintained
1163F: net/bluetooth/
1164F: include/net/bluetooth/
1009 1165
1010BONDING DRIVER 1166BONDING DRIVER
1011P: Jay Vosburgh 1167P: Jay Vosburgh
@@ -1013,24 +1169,30 @@ M: fubar@us.ibm.com
1013L: bonding-devel@lists.sourceforge.net 1169L: bonding-devel@lists.sourceforge.net
1014W: http://sourceforge.net/projects/bonding/ 1170W: http://sourceforge.net/projects/bonding/
1015S: Supported 1171S: Supported
1172F: drivers/net/bonding/
1173F: include/linux/if_bonding.h
1016 1174
1017BROADCOM B44 10/100 ETHERNET DRIVER 1175BROADCOM B44 10/100 ETHERNET DRIVER
1018P: Gary Zambrano 1176P: Gary Zambrano
1019M: zambrano@broadcom.com 1177M: zambrano@broadcom.com
1020L: netdev@vger.kernel.org 1178L: netdev@vger.kernel.org
1021S: Supported 1179S: Supported
1180F: drivers/net/b44.*
1022 1181
1023BROADCOM BNX2 GIGABIT ETHERNET DRIVER 1182BROADCOM BNX2 GIGABIT ETHERNET DRIVER
1024P: Michael Chan 1183P: Michael Chan
1025M: mchan@broadcom.com 1184M: mchan@broadcom.com
1026L: netdev@vger.kernel.org 1185L: netdev@vger.kernel.org
1027S: Supported 1186S: Supported
1187F: drivers/net/bnx2.*
1188F: drivers/net/bnx2_*
1028 1189
1029BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER 1190BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
1030P: Eilon Greenstein 1191P: Eilon Greenstein
1031M: eilong@broadcom.com 1192M: eilong@broadcom.com
1032L: netdev@vger.kernel.org 1193L: netdev@vger.kernel.org
1033S: Supported 1194S: Supported
1195F: drivers/net/bnx2x*
1034 1196
1035BROADCOM TG3 GIGABIT ETHERNET DRIVER 1197BROADCOM TG3 GIGABIT ETHERNET DRIVER
1036P: Matt Carlson 1198P: Matt Carlson
@@ -1039,41 +1201,51 @@ P: Michael Chan
1039M: mchan@broadcom.com 1201M: mchan@broadcom.com
1040L: netdev@vger.kernel.org 1202L: netdev@vger.kernel.org
1041S: Supported 1203S: Supported
1204F: drivers/net/tg3.*
1042 1205
1043BSG (block layer generic sg v4 driver) 1206BSG (block layer generic sg v4 driver)
1044P: FUJITA Tomonori 1207P: FUJITA Tomonori
1045M: fujita.tomonori@lab.ntt.co.jp 1208M: fujita.tomonori@lab.ntt.co.jp
1046L: linux-scsi@vger.kernel.org 1209L: linux-scsi@vger.kernel.org
1047S: Supported 1210S: Supported
1211F: block/bsg.c
1212F: include/linux/bsg.h
1048 1213
1049BT8XXGPIO DRIVER 1214BT8XXGPIO DRIVER
1050P: Michael Buesch 1215P: Michael Buesch
1051M: mb@bu3sch.de 1216M: mb@bu3sch.de
1052W: http://bu3sch.de/btgpio.php 1217W: http://bu3sch.de/btgpio.php
1053S: Maintained 1218S: Maintained
1219F: drivers/gpio/bt8xxgpio.c
1054 1220
1055BTRFS FILE SYSTEM 1221BTRFS FILE SYSTEM
1056P: Chris Mason 1222P: Chris Mason
1057M: chris.mason@oracle.com 1223M: chris.mason@oracle.com
1058L: linux-btrfs@vger.kernel.org 1224L: linux-btrfs@vger.kernel.org
1059W: http://btrfs.wiki.kernel.org/ 1225W: http://btrfs.wiki.kernel.org/
1060T: git kernel.org:/pub/scm/linux/kernel/git/mason/btrfs-unstable.git 1226T: git git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
1061S: Maintained 1227S: Maintained
1228F: Documentation/filesystems/btrfs.txt
1229F: fs/btrfs/
1062 1230
1063BTTV VIDEO4LINUX DRIVER 1231BTTV VIDEO4LINUX DRIVER
1064P: Mauro Carvalho Chehab 1232P: Mauro Carvalho Chehab
1065M: mchehab@infradead.org 1233M: mchehab@infradead.org
1066L: linux-media@vger.kernel.org 1234L: linux-media@vger.kernel.org
1067W: http://linuxtv.org 1235W: http://linuxtv.org
1068T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1236T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1069S: Maintained 1237S: Maintained
1238F: Documentation/video4linux/bttv/
1239F: drivers/media/video/bt8xx/bttv*
1070 1240
1071CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER 1241CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
1072P: Jonathan Corbet 1242P: Jonathan Corbet
1073M: corbet@lwn.net 1243M: corbet@lwn.net
1074L: linux-media@vger.kernel.org 1244L: linux-media@vger.kernel.org
1075T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1245T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1076S: Maintained 1246S: Maintained
1247F: Documentation/video4linux/cafe_ccic
1248F: drivers/media/video/cafe_ccic*
1077 1249
1078CALGARY x86-64 IOMMU 1250CALGARY x86-64 IOMMU
1079P: Muli Ben-Yehuda 1251P: Muli Ben-Yehuda
@@ -1083,6 +1255,10 @@ M: jdmason@kudzu.us
1083L: linux-kernel@vger.kernel.org 1255L: linux-kernel@vger.kernel.org
1084L: discuss@x86-64.org 1256L: discuss@x86-64.org
1085S: Maintained 1257S: Maintained
1258F: arch/x86/kernel/pci-calgary_64.c
1259F: arch/x86/kernel/tce_64.c
1260F: arch/x86/include/asm/calgary.h
1261F: arch/x86/include/asm/tce.h
1086 1262
1087CAN NETWORK LAYER 1263CAN NETWORK LAYER
1088P: Urs Thuermann 1264P: Urs Thuermann
@@ -1092,6 +1268,9 @@ M: oliver.hartkopp@volkswagen.de
1092L: socketcan-core@lists.berlios.de (subscribers-only) 1268L: socketcan-core@lists.berlios.de (subscribers-only)
1093W: http://developer.berlios.de/projects/socketcan/ 1269W: http://developer.berlios.de/projects/socketcan/
1094S: Maintained 1270S: Maintained
1271F: drivers/net/can/
1272F: include/linux/can/
1273F: include/linux/can.h
1095 1274
1096CELL BROADBAND ENGINE ARCHITECTURE 1275CELL BROADBAND ENGINE ARCHITECTURE
1097P: Arnd Bergmann 1276P: Arnd Bergmann
@@ -1100,12 +1279,23 @@ L: linuxppc-dev@ozlabs.org
1100L: cbe-oss-dev@ozlabs.org 1279L: cbe-oss-dev@ozlabs.org
1101W: http://www.ibm.com/developerworks/power/cell/ 1280W: http://www.ibm.com/developerworks/power/cell/
1102S: Supported 1281S: Supported
1282F: arch/powerpc/include/asm/cell*.h
1283F: arch/powerpc/include/asm/lv1call.h
1284F: arch/powerpc/include/asm/ps3*.h
1285F: arch/powerpc/include/asm/spu*.h
1286F: arch/powerpc/oprofile/*cell*
1287F: arch/powerpc/platforms/cell/
1288F: arch/powerpc/platforms/ps3/
1103 1289
1104CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM: 1290CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
1105P: David Vrabel 1291P: David Vrabel
1106M: david.vrabel@csr.com 1292M: david.vrabel@csr.com
1107L: linux-usb@vger.kernel.org 1293L: linux-usb@vger.kernel.org
1108S: Supported 1294S: Supported
1295F: Documentation/usb/WUSB-Design-overview.txt
1296F: Documentation/usb/wusb-cbaf
1297F: drivers/usb/wusbcore/
1298F: include/linux/usb/wusb*
1109 1299
1110CFAG12864B LCD DRIVER 1300CFAG12864B LCD DRIVER
1111P: Miguel Ojeda Sandonis 1301P: Miguel Ojeda Sandonis
@@ -1114,6 +1304,8 @@ L: linux-kernel@vger.kernel.org
1114W: http://miguelojeda.es/auxdisplay.htm 1304W: http://miguelojeda.es/auxdisplay.htm
1115W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1305W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1116S: Maintained 1306S: Maintained
1307F: drivers/auxdisplay/cfag12864b.c
1308F: include/linux/cfag12864b.h
1117 1309
1118CFAG12864BFB LCD FRAMEBUFFER DRIVER 1310CFAG12864BFB LCD FRAMEBUFFER DRIVER
1119P: Miguel Ojeda Sandonis 1311P: Miguel Ojeda Sandonis
@@ -1122,18 +1314,25 @@ L: linux-kernel@vger.kernel.org
1122W: http://miguelojeda.es/auxdisplay.htm 1314W: http://miguelojeda.es/auxdisplay.htm
1123W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 1315W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
1124S: Maintained 1316S: Maintained
1317F: drivers/auxdisplay/cfag12864bfb.c
1318F: include/linux/cfag12864b.h
1125 1319
1126CFG80211 and NL80211 1320CFG80211 and NL80211
1127P: Johannes Berg 1321P: Johannes Berg
1128M: johannes@sipsolutions.net 1322M: johannes@sipsolutions.net
1129L: linux-wireless@vger.kernel.org 1323L: linux-wireless@vger.kernel.org
1130S: Maintained 1324S: Maintained
1325F: include/linux/nl80211.h
1326F: include/net/cfg80211.h
1327F: net/wireless/*
1328X: net/wireless/wext*
1131 1329
1132CHECKPATCH 1330CHECKPATCH
1133P: Andy Whitcroft 1331P: Andy Whitcroft
1134M: apw@canonical.com 1332M: apw@canonical.com
1135L: linux-kernel@vger.kernel.org 1333L: linux-kernel@vger.kernel.org
1136S: Supported 1334S: Supported
1335F: scripts/checkpatch.pl
1137 1336
1138CISCO 10G ETHERNET DRIVER 1337CISCO 10G ETHERNET DRIVER
1139P: Scott Feldman 1338P: Scott Feldman
@@ -1141,24 +1340,28 @@ M: scofeldm@cisco.com
1141P: Joe Eykholt 1340P: Joe Eykholt
1142M: jeykholt@cisco.com 1341M: jeykholt@cisco.com
1143S: Supported 1342S: Supported
1343F: drivers/net/enic/
1144 1344
1145CIRRUS LOGIC EP93XX ETHERNET DRIVER 1345CIRRUS LOGIC EP93XX ETHERNET DRIVER
1146P: Lennert Buytenhek 1346P: Lennert Buytenhek
1147M: kernel@wantstofly.org 1347M: kernel@wantstofly.org
1148L: netdev@vger.kernel.org 1348L: netdev@vger.kernel.org
1149S: Maintained 1349S: Maintained
1350F: drivers/net/arm/ep93xx_eth.c
1150 1351
1151CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER 1352CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
1152P: Lennert Buytenhek 1353P: Lennert Buytenhek
1153M: kernel@wantstofly.org 1354M: kernel@wantstofly.org
1154L: linux-usb@vger.kernel.org 1355L: linux-usb@vger.kernel.org
1155S: Maintained 1356S: Maintained
1357F: drivers/usb/host/ohci-ep93xx.c
1156 1358
1157CIRRUS LOGIC CS4270 SOUND DRIVER 1359CIRRUS LOGIC CS4270 SOUND DRIVER
1158P: Timur Tabi 1360P: Timur Tabi
1159M: timur@freescale.com 1361M: timur@freescale.com
1160L: alsa-devel@alsa-project.org 1362L: alsa-devel@alsa-project.org
1161S: Supported 1363S: Supported
1364F: sound/soc/codecs/cs4270*
1162 1365
1163CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER 1366CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
1164P: Cirrus Logic Corporation (kernel 2.2 driver) 1367P: Cirrus Logic Corporation (kernel 2.2 driver)
@@ -1166,6 +1369,8 @@ M: Cirrus Logic Corporation, Thomas Woller <twoller@crystal.cirrus.com>
1166P: Nils Faerber (port to kernel 2.4) 1369P: Nils Faerber (port to kernel 2.4)
1167M: Nils Faerber <nils@kernelconcepts.de> 1370M: Nils Faerber <nils@kernelconcepts.de>
1168S: Maintained 1371S: Maintained
1372F: Documentation/input/cs461x.txt
1373F: sound/pci/cs46xx/
1169 1374
1170CODA FILE SYSTEM 1375CODA FILE SYSTEM
1171P: Jan Harkes 1376P: Jan Harkes
@@ -1174,6 +1379,9 @@ M: coda@cs.cmu.edu
1174L: codalist@coda.cs.cmu.edu 1379L: codalist@coda.cs.cmu.edu
1175W: http://www.coda.cs.cmu.edu/ 1380W: http://www.coda.cs.cmu.edu/
1176S: Maintained 1381S: Maintained
1382F: Documentation/filesystems/coda.txt
1383F: fs/coda/
1384F: include/linux/coda*.h
1177 1385
1178COMMON INTERNET FILE SYSTEM (CIFS) 1386COMMON INTERNET FILE SYSTEM (CIFS)
1179P: Steve French 1387P: Steve French
@@ -1181,8 +1389,10 @@ M: sfrench@samba.org
1181L: linux-cifs-client@lists.samba.org 1389L: linux-cifs-client@lists.samba.org
1182L: samba-technical@lists.samba.org 1390L: samba-technical@lists.samba.org
1183W: http://linux-cifs.samba.org/ 1391W: http://linux-cifs.samba.org/
1184T: git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git 1392T: git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
1185S: Supported 1393S: Supported
1394F: Documentation/filesystems/cifs.txt
1395F: fs/cifs/
1186 1396
1187COMPACTPCI HOTPLUG CORE 1397COMPACTPCI HOTPLUG CORE
1188P: Scott Murray 1398P: Scott Murray
@@ -1190,6 +1400,7 @@ M: scottm@somanetworks.com
1190M: scott@spiteful.org 1400M: scott@spiteful.org
1191L: linux-pci@vger.kernel.org 1401L: linux-pci@vger.kernel.org
1192S: Supported 1402S: Supported
1403F: drivers/pci/hotplug/cpci_hotplug*
1193 1404
1194COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER 1405COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER
1195P: Scott Murray 1406P: Scott Murray
@@ -1197,6 +1408,7 @@ M: scottm@somanetworks.com
1197M: scott@spiteful.org 1408M: scott@spiteful.org
1198L: linux-pci@vger.kernel.org 1409L: linux-pci@vger.kernel.org
1199S: Supported 1410S: Supported
1411F: drivers/pci/hotplug/cpcihp_zt5550.*
1200 1412
1201COMPACTPCI HOTPLUG GENERIC DRIVER 1413COMPACTPCI HOTPLUG GENERIC DRIVER
1202P: Scott Murray 1414P: Scott Murray
@@ -1204,17 +1416,21 @@ M: scottm@somanetworks.com
1204M: scott@spiteful.org 1416M: scott@spiteful.org
1205L: linux-pci@vger.kernel.org 1417L: linux-pci@vger.kernel.org
1206S: Supported 1418S: Supported
1419F: drivers/pci/hotplug/cpcihp_generic.c
1207 1420
1208COMPAL LAPTOP SUPPORT 1421COMPAL LAPTOP SUPPORT
1209P: Cezary Jackiewicz 1422P: Cezary Jackiewicz
1210M: cezary.jackiewicz@gmail.com 1423M: cezary.jackiewicz@gmail.com
1211S: Maintained 1424S: Maintained
1425F: drivers/platform/x86/compal-laptop.c
1212 1426
1213COMPUTONE INTELLIPORT MULTIPORT CARD 1427COMPUTONE INTELLIPORT MULTIPORT CARD
1214P: Michael H. Warfield 1428P: Michael H. Warfield
1215M: mhw@wittsend.com 1429M: mhw@wittsend.com
1216W: http://www.wittsend.com/computone.html 1430W: http://www.wittsend.com/computone.html
1217S: Maintained 1431S: Maintained
1432F: Documentation/serial/computone.txt
1433F: drivers/char/ip2/
1218 1434
1219CONEXANT ACCESSRUNNER USB DRIVER 1435CONEXANT ACCESSRUNNER USB DRIVER
1220P: Simon Arlott 1436P: Simon Arlott
@@ -1222,12 +1438,15 @@ M: cxacru@fire.lp0.eu
1222L: accessrunner-general@lists.sourceforge.net 1438L: accessrunner-general@lists.sourceforge.net
1223W: http://accessrunner.sourceforge.net/ 1439W: http://accessrunner.sourceforge.net/
1224S: Maintained 1440S: Maintained
1441F: drivers/usb/atm/cxacru.c
1225 1442
1226CONFIGFS 1443CONFIGFS
1227P: Joel Becker 1444P: Joel Becker
1228M: joel.becker@oracle.com 1445M: joel.becker@oracle.com
1229L: linux-kernel@vger.kernel.org 1446L: linux-kernel@vger.kernel.org
1230S: Supported 1447S: Supported
1448F: fs/configfs/
1449F: include/linux/configfs.h
1231 1450
1232CONTROL GROUPS (CGROUPS) 1451CONTROL GROUPS (CGROUPS)
1233P: Paul Menage 1452P: Paul Menage
@@ -1236,31 +1455,41 @@ P: Li Zefan
1236M: lizf@cn.fujitsu.com 1455M: lizf@cn.fujitsu.com
1237L: containers@lists.linux-foundation.org 1456L: containers@lists.linux-foundation.org
1238S: Maintained 1457S: Maintained
1458F: include/linux/cgroup*
1459F: kernel/cgroup*
1239 1460
1240CORETEMP HARDWARE MONITORING DRIVER 1461CORETEMP HARDWARE MONITORING DRIVER
1241P: Rudolf Marek 1462P: Rudolf Marek
1242M: r.marek@assembler.cz 1463M: r.marek@assembler.cz
1243L: lm-sensors@lm-sensors.org 1464L: lm-sensors@lm-sensors.org
1244S: Maintained 1465S: Maintained
1466F: Documentation/hwmon/coretemp
1467F: drivers/hwmon/coretemp.c
1245 1468
1246COSA/SRP SYNC SERIAL DRIVER 1469COSA/SRP SYNC SERIAL DRIVER
1247P: Jan "Yenya" Kasprzak 1470P: Jan "Yenya" Kasprzak
1248M: kas@fi.muni.cz 1471M: kas@fi.muni.cz
1249W: http://www.fi.muni.cz/~kas/cosa/ 1472W: http://www.fi.muni.cz/~kas/cosa/
1250S: Maintained 1473S: Maintained
1474F: drivers/net/wan/cosa*
1251 1475
1252CPU FREQUENCY DRIVERS 1476CPU FREQUENCY DRIVERS
1253P: Dave Jones 1477P: Dave Jones
1254M: davej@redhat.com 1478M: davej@redhat.com
1255L: cpufreq@vger.kernel.org 1479L: cpufreq@vger.kernel.org
1256W: http://www.codemonkey.org.uk/projects/cpufreq/ 1480W: http://www.codemonkey.org.uk/projects/cpufreq/
1257T: git kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git 1481T: git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
1258S: Maintained 1482S: Maintained
1483F: arch/x86/kernel/cpu/cpufreq/
1484F: drivers/cpufreq/
1485F: include/linux/cpufreq.h
1259 1486
1260CPUID/MSR DRIVER 1487CPUID/MSR DRIVER
1261P: H. Peter Anvin 1488P: H. Peter Anvin
1262M: hpa@zytor.com 1489M: hpa@zytor.com
1263S: Maintained 1490S: Maintained
1491F: arch/x86/kernel/cpuid.c
1492F: arch/x86/kernel/msr.c
1264 1493
1265CPUSETS 1494CPUSETS
1266P: Paul Menage 1495P: Paul Menage
@@ -1269,10 +1498,15 @@ L: linux-kernel@vger.kernel.org
1269W: http://www.bullopensource.org/cpuset/ 1498W: http://www.bullopensource.org/cpuset/
1270W: http://oss.sgi.com/projects/cpusets/ 1499W: http://oss.sgi.com/projects/cpusets/
1271S: Supported 1500S: Supported
1501F: Documentation/cgroups/cpusets.txt
1502F: include/linux/cpuset.h
1503F: kernel/cpuset.c
1272 1504
1273CRAMFS FILESYSTEM 1505CRAMFS FILESYSTEM
1274W: http://sourceforge.net/projects/cramfs/ 1506W: http://sourceforge.net/projects/cramfs/
1275S: Orphan 1507S: Orphan
1508F: Documentation/filesystems/cramfs.txt
1509F: fs/cramfs/
1276 1510
1277CRIS PORT 1511CRIS PORT
1278P: Mikael Starvik 1512P: Mikael Starvik
@@ -1282,6 +1516,7 @@ M: jesper.nilsson@axis.com
1282L: dev-etrax@axis.com 1516L: dev-etrax@axis.com
1283W: http://developer.axis.com 1517W: http://developer.axis.com
1284S: Maintained 1518S: Maintained
1519F: arch/cris/
1285 1520
1286CRYPTO API 1521CRYPTO API
1287P: Herbert Xu 1522P: Herbert Xu
@@ -1289,8 +1524,13 @@ M: herbert@gondor.apana.org.au
1289P: David S. Miller 1524P: David S. Miller
1290M: davem@davemloft.net 1525M: davem@davemloft.net
1291L: linux-crypto@vger.kernel.org 1526L: linux-crypto@vger.kernel.org
1292T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git 1527T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
1293S: Maintained 1528S: Maintained
1529F: Documentation/crypto/
1530F: arch/*/crypto/
1531F: crypto/
1532F: drivers/crypto/
1533F: include/crypto/
1294 1534
1295CRYPTOGRAPHIC RANDOM NUMBER GENERATOR 1535CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
1296P: Neil Horman 1536P: Neil Horman
@@ -1302,16 +1542,21 @@ CS5535 Audio ALSA driver
1302P: Jaya Kumar 1542P: Jaya Kumar
1303M: jayakumar.alsa@gmail.com 1543M: jayakumar.alsa@gmail.com
1304S: Maintained 1544S: Maintained
1545F: sound/pci/cs5535audio/
1305 1546
1306CX18 VIDEO4LINUX DRIVER 1547CX18 VIDEO4LINUX DRIVER
1307P: Hans Verkuil, Andy Walls 1548P: Hans Verkuil
1308M: hverkuil@xs4all.nl, awalls@radix.net 1549M: hverkuil@xs4all.nl
1550P: Andy Walls
1551M: awalls@radix.net
1309L: ivtv-devel@ivtvdriver.org 1552L: ivtv-devel@ivtvdriver.org
1310L: ivtv-users@ivtvdriver.org 1553L: ivtv-users@ivtvdriver.org
1311L: linux-media@vger.kernel.org 1554L: linux-media@vger.kernel.org
1312T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 1555T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1313W: http://linuxtv.org 1556W: http://linuxtv.org
1314S: Maintained 1557S: Maintained
1558F: Documentation/video4linux/cx18.txt
1559F: drivers/media/video/cx18/
1315 1560
1316CXGB3 ETHERNET DRIVER (CXGB3) 1561CXGB3 ETHERNET DRIVER (CXGB3)
1317P: Divy Le Ray 1562P: Divy Le Ray
@@ -1319,6 +1564,7 @@ M: divy@chelsio.com
1319L: netdev@vger.kernel.org 1564L: netdev@vger.kernel.org
1320W: http://www.chelsio.com 1565W: http://www.chelsio.com
1321S: Supported 1566S: Supported
1567F: drivers/net/cxgb3/
1322 1568
1323CXGB3 IWARP RNIC DRIVER (IW_CXGB3) 1569CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
1324P: Steve Wise 1570P: Steve Wise
@@ -1326,32 +1572,32 @@ M: swise@chelsio.com
1326L: general@lists.openfabrics.org 1572L: general@lists.openfabrics.org
1327W: http://www.openfabrics.org 1573W: http://www.openfabrics.org
1328S: Supported 1574S: Supported
1575F: drivers/infiniband/hw/cxgb3/
1329 1576
1330CYBERPRO FB DRIVER 1577CYBERPRO FB DRIVER
1331P: Russell King 1578P: Russell King
1332M: rmk@arm.linux.org.uk 1579M: rmk@arm.linux.org.uk
1333W: http://www.arm.linux.org.uk/ 1580W: http://www.arm.linux.org.uk/
1334S: Maintained 1581S: Maintained
1335 1582F: drivers/video/cyber2000fb.*
1336CYBLAFB FRAMEBUFFER DRIVER
1337P: Knut Petersen
1338M: Knut_Petersen@t-online.de
1339L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1340S: Maintained
1341 1583
1342CYCLADES 2X SYNC CARD DRIVER 1584CYCLADES 2X SYNC CARD DRIVER
1343P: Arnaldo Carvalho de Melo 1585P: Arnaldo Carvalho de Melo
1344M: acme@ghostprotocols.net 1586M: acme@ghostprotocols.net
1345W: http://oops.ghostprotocols.net:81/blog 1587W: http://oops.ghostprotocols.net:81/blog
1346S: Maintained 1588S: Maintained
1589F: drivers/net/wan/cycx*
1347 1590
1348CYCLADES ASYNC MUX DRIVER 1591CYCLADES ASYNC MUX DRIVER
1349W: http://www.cyclades.com/ 1592W: http://www.cyclades.com/
1350S: Orphan 1593S: Orphan
1594F: drivers/char/cyclades.c
1595F: include/linux/cyclades.h
1351 1596
1352CYCLADES PC300 DRIVER 1597CYCLADES PC300 DRIVER
1353W: http://www.cyclades.com/ 1598W: http://www.cyclades.com/
1354S: Orphan 1599S: Orphan
1600F: drivers/net/wan/pc300*
1355 1601
1356DAMA SLAVE for AX.25 1602DAMA SLAVE for AX.25
1357P: Joerg Reuter 1603P: Joerg Reuter
@@ -1360,12 +1606,21 @@ W: http://yaina.de/jreuter/
1360W: http://www.qsl.net/dl1bke/ 1606W: http://www.qsl.net/dl1bke/
1361L: linux-hams@vger.kernel.org 1607L: linux-hams@vger.kernel.org
1362S: Maintained 1608S: Maintained
1609F: net/ax25/af_ax25.c
1610F: net/ax25/ax25_dev.c
1611F: net/ax25/ax25_ds_*
1612F: net/ax25/ax25_in.c
1613F: net/ax25/ax25_out.c
1614F: net/ax25/ax25_timer.c
1615F: net/ax25/sysctl_net_ax25.c
1363 1616
1364DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER 1617DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
1365P: Tobias Ringstrom 1618P: Tobias Ringstrom
1366M: tori@unhappy.mine.nu 1619M: tori@unhappy.mine.nu
1367L: netdev@vger.kernel.org 1620L: netdev@vger.kernel.org
1368S: Maintained 1621S: Maintained
1622F: Documentation/networking/dmfe.txt
1623F: drivers/net/tulip/dmfe.c
1369 1624
1370DC390/AM53C974 SCSI driver 1625DC390/AM53C974 SCSI driver
1371P: Kurt Garloff 1626P: Kurt Garloff
@@ -1374,6 +1629,7 @@ W: http://www.garloff.de/kurt/linux/dc390/
1374P: Guennadi Liakhovetski 1629P: Guennadi Liakhovetski
1375M: g.liakhovetski@gmx.de 1630M: g.liakhovetski@gmx.de
1376S: Maintained 1631S: Maintained
1632F: drivers/scsi/tmscsim.*
1377 1633
1378DC395x SCSI driver 1634DC395x SCSI driver
1379P: Oliver Neukum 1635P: Oliver Neukum
@@ -1386,6 +1642,8 @@ W: http://twibble.org/dist/dc395x/
1386L: dc395x@twibble.org 1642L: dc395x@twibble.org
1387L: http://lists.twibble.org/mailman/listinfo/dc395x/ 1643L: http://lists.twibble.org/mailman/listinfo/dc395x/
1388S: Maintained 1644S: Maintained
1645F: Documentation/scsi/dc395x.txt
1646F: drivers/scsi/dc395x.*
1389 1647
1390DCCP PROTOCOL 1648DCCP PROTOCOL
1391P: Arnaldo Carvalho de Melo 1649P: Arnaldo Carvalho de Melo
@@ -1393,6 +1651,9 @@ M: acme@ghostprotocols.net
1393L: dccp@vger.kernel.org 1651L: dccp@vger.kernel.org
1394W: http://linux-net.osdl.org/index.php/DCCP 1652W: http://linux-net.osdl.org/index.php/DCCP
1395S: Maintained 1653S: Maintained
1654F: include/linux/dccp.h
1655F: include/linux/tfrc.h
1656F: net/dccp/
1396 1657
1397DECnet NETWORK LAYER 1658DECnet NETWORK LAYER
1398P: Christine Caulfield 1659P: Christine Caulfield
@@ -1400,27 +1661,35 @@ M: christine.caulfield@googlemail.com
1400W: http://linux-decnet.sourceforge.net 1661W: http://linux-decnet.sourceforge.net
1401L: linux-decnet-user@lists.sourceforge.net 1662L: linux-decnet-user@lists.sourceforge.net
1402S: Maintained 1663S: Maintained
1664F: Documentation/networking/decnet.txt
1665F: net/decnet/
1403 1666
1404DEFXX FDDI NETWORK DRIVER 1667DEFXX FDDI NETWORK DRIVER
1405P: Maciej W. Rozycki 1668P: Maciej W. Rozycki
1406M: macro@linux-mips.org 1669M: macro@linux-mips.org
1407S: Maintained 1670S: Maintained
1671F: drivers/net/defxx.*
1408 1672
1409DELL LAPTOP DRIVER 1673DELL LAPTOP DRIVER
1410P: Matthew Garrett 1674P: Matthew Garrett
1411M: mjg59@srcf.ucam.org 1675M: mjg59@srcf.ucam.org
1412S: Maintained 1676S: Maintained
1677F: drivers/platform/x86/dell-laptop.c
1413 1678
1414DELL LAPTOP SMM DRIVER 1679DELL LAPTOP SMM DRIVER
1415P: Massimo Dal Zotto 1680P: Massimo Dal Zotto
1416M: dz@debian.org 1681M: dz@debian.org
1417W: http://www.debian.org/~dz/i8k/ 1682W: http://www.debian.org/~dz/i8k/
1418S: Maintained 1683S: Maintained
1684F: drivers/char/i8k.c
1685F: include/linux/i8k.h
1419 1686
1420DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas) 1687DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas)
1421P: Doug Warzecha 1688P: Doug Warzecha
1422M: Douglas_Warzecha@dell.com 1689M: Douglas_Warzecha@dell.com
1423S: Maintained 1690S: Maintained
1691F: Documentation/dcdbas.txt
1692F: drivers/firmware/dcdbas.*
1424 1693
1425DELL WMI EXTRAS DRIVER 1694DELL WMI EXTRAS DRIVER
1426P: Matthew Garrett 1695P: Matthew Garrett
@@ -1439,6 +1708,10 @@ P: Alasdair Kergon
1439L: dm-devel@redhat.com 1708L: dm-devel@redhat.com
1440W: http://sources.redhat.com/dm 1709W: http://sources.redhat.com/dm
1441S: Maintained 1710S: Maintained
1711F: Documentation/device-mapper/
1712F: drivers/md/dm*
1713F: include/linux/device-mapper.h
1714F: include/linux/dm-*.h
1442 1715
1443DIGI INTL. EPCA DRIVER 1716DIGI INTL. EPCA DRIVER
1444P: Digi International, Inc 1717P: Digi International, Inc
@@ -1446,12 +1719,18 @@ M: Eng.Linux@digi.com
1446L: Eng.Linux@digi.com 1719L: Eng.Linux@digi.com
1447W: http://www.digi.com 1720W: http://www.digi.com
1448S: Orphan 1721S: Orphan
1722F: Documentation/serial/digiepca.txt
1723F: drivers/char/epca*
1724F: drivers/char/digi*
1449 1725
1450DIRECTORY NOTIFICATION (DNOTIFY) 1726DIRECTORY NOTIFICATION (DNOTIFY)
1451P: Stephen Rothwell 1727P: Stephen Rothwell
1452M: sfr@canb.auug.org.au 1728M: sfr@canb.auug.org.au
1453L: linux-kernel@vger.kernel.org 1729L: linux-kernel@vger.kernel.org
1454S: Supported 1730S: Supported
1731F: Documentation/filesystems/dnotify.txt
1732F: fs/notify/dnotify/
1733F: include/linux/dnotify.h
1455 1734
1456DISK GEOMETRY AND PARTITION HANDLING 1735DISK GEOMETRY AND PARTITION HANDLING
1457P: Andries Brouwer 1736P: Andries Brouwer
@@ -1466,6 +1745,9 @@ P: Jan Kara
1466M: jack@suse.cz 1745M: jack@suse.cz
1467L: linux-kernel@vger.kernel.org 1746L: linux-kernel@vger.kernel.org
1468S: Maintained 1747S: Maintained
1748F: Documentation/filesystems/quota.txt
1749F: fs/quota/
1750F: include/linux/quota*.h
1469 1751
1470DISTRIBUTED LOCK MANAGER (DLM) 1752DISTRIBUTED LOCK MANAGER (DLM)
1471P: Christine Caulfield 1753P: Christine Caulfield
@@ -1474,8 +1756,9 @@ P: David Teigland
1474M: teigland@redhat.com 1756M: teigland@redhat.com
1475L: cluster-devel@redhat.com 1757L: cluster-devel@redhat.com
1476W: http://sources.redhat.com/cluster/ 1758W: http://sources.redhat.com/cluster/
1477T: git kernel.org:/pub/scm/linux/kernel/git/teigland/dlm.git 1759T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git
1478S: Supported 1760S: Supported
1761F: fs/dlm/
1479 1762
1480DMA GENERIC OFFLOAD ENGINE SUBSYSTEM 1763DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
1481P: Maciej Sosnowski 1764P: Maciej Sosnowski
@@ -1484,12 +1767,16 @@ P: Dan Williams
1484M: dan.j.williams@intel.com 1767M: dan.j.williams@intel.com
1485L: linux-kernel@vger.kernel.org 1768L: linux-kernel@vger.kernel.org
1486S: Supported 1769S: Supported
1770F: drivers/dma/
1771F: include/linux/dma*
1487 1772
1488DME1737 HARDWARE MONITOR DRIVER 1773DME1737 HARDWARE MONITOR DRIVER
1489P: Juerg Haefliger 1774P: Juerg Haefliger
1490M: juergh@gmail.com 1775M: juergh@gmail.com
1491L: lm-sensors@lm-sensors.org 1776L: lm-sensors@lm-sensors.org
1492S: Maintained 1777S: Maintained
1778F: Documentation/hwmon/dme1737
1779F: drivers/hwmon/dme1737.c
1493 1780
1494DOCBOOK FOR DOCUMENTATION 1781DOCBOOK FOR DOCUMENTATION
1495P: Randy Dunlap 1782P: Randy Dunlap
@@ -1501,18 +1788,22 @@ P: Shaohua Li
1501M: shaohua.li@intel.com 1788M: shaohua.li@intel.com
1502L: linux-acpi@vger.kernel.org 1789L: linux-acpi@vger.kernel.org
1503S: Supported 1790S: Supported
1791F: drivers/acpi/dock.c
1504 1792
1505DOCUMENTATION (/Documentation directory) 1793DOCUMENTATION
1506P: Randy Dunlap 1794P: Randy Dunlap
1507M: rdunlap@xenotime.net 1795M: rdunlap@xenotime.net
1508L: linux-doc@vger.kernel.org 1796L: linux-doc@vger.kernel.org
1509S: Maintained 1797S: Maintained
1798F: Documentation/
1510 1799
1511DOUBLETALK DRIVER 1800DOUBLETALK DRIVER
1512P: James R. Van Zandt 1801P: James R. Van Zandt
1513M: jrv@vanzandt.mv.com 1802M: jrv@vanzandt.mv.com
1514L: blinux-list@redhat.com 1803L: blinux-list@redhat.com
1515S: Maintained 1804S: Maintained
1805F: drivers/char/dtlk.c
1806F: include/linux/dtlk.h
1516 1807
1517DPT_I2O SCSI RAID DRIVER 1808DPT_I2O SCSI RAID DRIVER
1518P: Adaptec OEM Raid Solutions 1809P: Adaptec OEM Raid Solutions
@@ -1520,6 +1811,8 @@ M: aacraid@adaptec.com
1520L: linux-scsi@vger.kernel.org 1811L: linux-scsi@vger.kernel.org
1521W: http://www.adaptec.com/ 1812W: http://www.adaptec.com/
1522S: Maintained 1813S: Maintained
1814F: drivers/scsi/dpt*
1815F: drivers/scsi/dpt/
1523 1816
1524DRIVER CORE, KOBJECTS, AND SYSFS 1817DRIVER CORE, KOBJECTS, AND SYSFS
1525P: Greg Kroah-Hartman 1818P: Greg Kroah-Hartman
@@ -1527,48 +1820,55 @@ M: gregkh@suse.de
1527L: linux-kernel@vger.kernel.org 1820L: linux-kernel@vger.kernel.org
1528T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 1821T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
1529S: Supported 1822S: Supported
1823F: Documentation/kobject.txt
1824F: drivers/base/
1825F: fs/sysfs/
1826F: include/linux/kobj*
1827F: lib/kobj*
1530 1828
1531DRM DRIVERS 1829DRM DRIVERS
1532P: David Airlie 1830P: David Airlie
1533M: airlied@linux.ie 1831M: airlied@linux.ie
1534L: dri-devel@lists.sourceforge.net 1832L: dri-devel@lists.sourceforge.net
1535T: git kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git 1833T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
1536S: Maintained 1834S: Maintained
1835F: drivers/gpu/drm/
1537 1836
1538DSCC4 DRIVER 1837DSCC4 DRIVER
1539P: Francois Romieu 1838P: Francois Romieu
1540M: romieu@fr.zoreil.com 1839M: romieu@fr.zoreil.com
1541L: netdev@vger.kernel.org 1840L: netdev@vger.kernel.org
1542S: Maintained 1841S: Maintained
1543 1842F: drivers/net/wan/dscc4.c
1544DVB SUBSYSTEM AND DRIVERS
1545P: LinuxTV.org Project
1546M: linux-media@vger.kernel.org
1547W: http://linuxtv.org/
1548T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1549S: Maintained
1550 1843
1551DZ DECSTATION DZ11 SERIAL DRIVER 1844DZ DECSTATION DZ11 SERIAL DRIVER
1552P: Maciej W. Rozycki 1845P: Maciej W. Rozycki
1553M: macro@linux-mips.org 1846M: macro@linux-mips.org
1554S: Maintained 1847S: Maintained
1848F: drivers/serial/dz.*
1555 1849
1556EATA-DMA SCSI DRIVER 1850EATA-DMA SCSI DRIVER
1557P: Michael Neuffer 1851P: Michael Neuffer
1558L: linux-eata@i-connect.net, linux-scsi@vger.kernel.org 1852M: mike@i-Connect.Net
1853L: linux-eata@i-connect.net
1854L: linux-scsi@vger.kernel.org
1559S: Maintained 1855S: Maintained
1856F: drivers/scsi/eata*
1560 1857
1561EATA ISA/EISA/PCI SCSI DRIVER 1858EATA ISA/EISA/PCI SCSI DRIVER
1562P: Dario Ballabio 1859P: Dario Ballabio
1563M: ballabio_dario@emc.com 1860M: ballabio_dario@emc.com
1564L: linux-scsi@vger.kernel.org 1861L: linux-scsi@vger.kernel.org
1565S: Maintained 1862S: Maintained
1863F: drivers/scsi/eata.c
1566 1864
1567EATA-PIO SCSI DRIVER 1865EATA-PIO SCSI DRIVER
1568P: Michael Neuffer 1866P: Michael Neuffer
1569M: mike@i-Connect.Net 1867M: mike@i-Connect.Net
1570L: linux-eata@i-connect.net, linux-scsi@vger.kernel.org 1868L: linux-eata@i-connect.net
1869L: linux-scsi@vger.kernel.org
1571S: Maintained 1870S: Maintained
1871F: drivers/scsi/eata_pio.*
1572 1872
1573EBTABLES 1873EBTABLES
1574P: Bart De Schuymer 1874P: Bart De Schuymer
@@ -1577,13 +1877,19 @@ L: ebtables-user@lists.sourceforge.net
1577L: ebtables-devel@lists.sourceforge.net 1877L: ebtables-devel@lists.sourceforge.net
1578W: http://ebtables.sourceforge.net/ 1878W: http://ebtables.sourceforge.net/
1579S: Maintained 1879S: Maintained
1880F: include/linux/netfilter_bridge/ebt_*.h
1881F: net/bridge/netfilter/ebt*.c
1580 1882
1581ECRYPT FILE SYSTEM 1883ECRYPT FILE SYSTEM
1582P: Tyler Hicks, Dustin Kirkland 1884P: Tyler Hicks
1583M: tyhicks@linux.vnet.ibm.com, kirkland@canonical.com 1885M: tyhicks@linux.vnet.ibm.com
1886M: Dustin Kirkland
1887P: kirkland@canonical.com
1584L: ecryptfs-devel@lists.launchpad.net 1888L: ecryptfs-devel@lists.launchpad.net
1585W: https://launchpad.net/ecryptfs 1889W: https://launchpad.net/ecryptfs
1586S: Supported 1890S: Supported
1891F: Documentation/filesystems/ecryptfs.txt
1892F: fs/ecryptfs/
1587 1893
1588EDAC-CORE 1894EDAC-CORE
1589P: Doug Thompson 1895P: Doug Thompson
@@ -1591,6 +1897,9 @@ M: dougthompson@xmission.com
1591L: bluesmoke-devel@lists.sourceforge.net 1897L: bluesmoke-devel@lists.sourceforge.net
1592W: bluesmoke.sourceforge.net 1898W: bluesmoke.sourceforge.net
1593S: Supported 1899S: Supported
1900F: Documentation/edac.txt
1901F: drivers/edac/edac_*
1902F: include/linux/edac.h
1594 1903
1595EDAC-E752X 1904EDAC-E752X
1596P: Mark Gross 1905P: Mark Gross
@@ -1600,6 +1909,7 @@ M: dougthompson@xmission.com
1600L: bluesmoke-devel@lists.sourceforge.net 1909L: bluesmoke-devel@lists.sourceforge.net
1601W: bluesmoke.sourceforge.net 1910W: bluesmoke.sourceforge.net
1602S: Maintained 1911S: Maintained
1912F: drivers/edac/e752x_edac.c
1603 1913
1604EDAC-E7XXX 1914EDAC-E7XXX
1605P: Doug Thompson 1915P: Doug Thompson
@@ -1607,6 +1917,7 @@ M: dougthompson@xmission.com
1607L: bluesmoke-devel@lists.sourceforge.net 1917L: bluesmoke-devel@lists.sourceforge.net
1608W: bluesmoke.sourceforge.net 1918W: bluesmoke.sourceforge.net
1609S: Maintained 1919S: Maintained
1920F: drivers/edac/e7xxx_edac.c
1610 1921
1611EDAC-I82443BXGX 1922EDAC-I82443BXGX
1612P: Tim Small 1923P: Tim Small
@@ -1614,6 +1925,7 @@ M: tim@buttersideup.com
1614L: bluesmoke-devel@lists.sourceforge.net 1925L: bluesmoke-devel@lists.sourceforge.net
1615W: bluesmoke.sourceforge.net 1926W: bluesmoke.sourceforge.net
1616S: Maintained 1927S: Maintained
1928F: drivers/edac/i82443bxgx_edac.c
1617 1929
1618EDAC-I3000 1930EDAC-I3000
1619P: Jason Uhlenkott 1931P: Jason Uhlenkott
@@ -1621,6 +1933,7 @@ M: juhlenko@akamai.com
1621L: bluesmoke-devel@lists.sourceforge.net 1933L: bluesmoke-devel@lists.sourceforge.net
1622W: bluesmoke.sourceforge.net 1934W: bluesmoke.sourceforge.net
1623S: Maintained 1935S: Maintained
1936F: drivers/edac/i3000_edac.c
1624 1937
1625EDAC-I5000 1938EDAC-I5000
1626P: Doug Thompson 1939P: Doug Thompson
@@ -1628,6 +1941,7 @@ M: dougthompson@xmission.com
1628L: bluesmoke-devel@lists.sourceforge.net 1941L: bluesmoke-devel@lists.sourceforge.net
1629W: bluesmoke.sourceforge.net 1942W: bluesmoke.sourceforge.net
1630S: Maintained 1943S: Maintained
1944F: drivers/edac/i5000_edac.c
1631 1945
1632EDAC-I5400 1946EDAC-I5400
1633P: Mauro Carvalho Chehab 1947P: Mauro Carvalho Chehab
@@ -1635,6 +1949,7 @@ M: mchehab@redhat.com
1635L: bluesmoke-devel@lists.sourceforge.net 1949L: bluesmoke-devel@lists.sourceforge.net
1636W: bluesmoke.sourceforge.net 1950W: bluesmoke.sourceforge.net
1637S: Maintained 1951S: Maintained
1952F: drivers/edac/i5400_edac.c
1638 1953
1639EDAC-I82975X 1954EDAC-I82975X
1640P: Ranganathan Desikan 1955P: Ranganathan Desikan
@@ -1644,6 +1959,7 @@ M: arvind@acarlab.com
1644L: bluesmoke-devel@lists.sourceforge.net 1959L: bluesmoke-devel@lists.sourceforge.net
1645W: bluesmoke.sourceforge.net 1960W: bluesmoke.sourceforge.net
1646S: Maintained 1961S: Maintained
1962F: drivers/edac/i82975x_edac.c
1647 1963
1648EDAC-PASEMI 1964EDAC-PASEMI
1649P: Egor Martovetsky 1965P: Egor Martovetsky
@@ -1651,6 +1967,7 @@ M: egor@pasemi.com
1651L: bluesmoke-devel@lists.sourceforge.net 1967L: bluesmoke-devel@lists.sourceforge.net
1652W: bluesmoke.sourceforge.net 1968W: bluesmoke.sourceforge.net
1653S: Maintained 1969S: Maintained
1970F: drivers/edac/pasemi_edac.c
1654 1971
1655EDAC-R82600 1972EDAC-R82600
1656P: Tim Small 1973P: Tim Small
@@ -1658,6 +1975,7 @@ M: tim@buttersideup.com
1658L: bluesmoke-devel@lists.sourceforge.net 1975L: bluesmoke-devel@lists.sourceforge.net
1659W: bluesmoke.sourceforge.net 1976W: bluesmoke.sourceforge.net
1660S: Maintained 1977S: Maintained
1978F: drivers/edac/r82600_edac.c
1661 1979
1662EEEPC LAPTOP EXTRAS DRIVER 1980EEEPC LAPTOP EXTRAS DRIVER
1663P: Corentin Chary 1981P: Corentin Chary
@@ -1665,10 +1983,12 @@ M: corentincj@iksaif.net
1665L: acpi4asus-user@lists.sourceforge.net 1983L: acpi4asus-user@lists.sourceforge.net
1666W: http://sourceforge.net/projects/acpi4asus 1984W: http://sourceforge.net/projects/acpi4asus
1667S: Maintained 1985S: Maintained
1986F: drivers/platform/x86/eeepc-laptop.c
1668 1987
1669EFS FILESYSTEM 1988EFS FILESYSTEM
1670W: http://aeschi.ch.eu.org/efs/ 1989W: http://aeschi.ch.eu.org/efs/
1671S: Orphan 1990S: Orphan
1991F: fs/efs/
1672 1992
1673EHCA (IBM GX bus InfiniBand adapter) DRIVER 1993EHCA (IBM GX bus InfiniBand adapter) DRIVER
1674P: Hoang-Nam Nguyen 1994P: Hoang-Nam Nguyen
@@ -1677,6 +1997,7 @@ P: Christoph Raisch
1677M: raisch@de.ibm.com 1997M: raisch@de.ibm.com
1678L: general@lists.openfabrics.org 1998L: general@lists.openfabrics.org
1679S: Supported 1999S: Supported
2000F: drivers/infiniband/hw/ehca/
1680 2001
1681EMBEDDED LINUX 2002EMBEDDED LINUX
1682P: Paul Gortmaker 2003P: Paul Gortmaker
@@ -1692,22 +2013,29 @@ M: james.smart@emulex.com
1692L: linux-scsi@vger.kernel.org 2013L: linux-scsi@vger.kernel.org
1693W: http://sourceforge.net/projects/lpfcxxxx 2014W: http://sourceforge.net/projects/lpfcxxxx
1694S: Supported 2015S: Supported
2016F: drivers/scsi/lpfc/
1695 2017
1696EPSON 1355 FRAMEBUFFER DRIVER 2018EPSON 1355 FRAMEBUFFER DRIVER
1697P: Christopher Hoover 2019P: Christopher Hoover
1698M: ch@murgatroid.com, ch@hpl.hp.com 2020M: ch@murgatroid.com
2021P: Christopher Hoover
2022M: ch@hpl.hp.com
1699S: Maintained 2023S: Maintained
2024F: drivers/video/epson1355fb.c
1700 2025
1701EPSON S1D13XXX FRAMEBUFFER DRIVER 2026EPSON S1D13XXX FRAMEBUFFER DRIVER
1702P: Kristoffer Ericson 2027P: Kristoffer Ericson
1703M: kristoffer.ericson@gmail.com 2028M: kristoffer.ericson@gmail.com
1704S: Maintained 2029S: Maintained
2030F: drivers/video/s1d13xxxfb.c
2031F: include/video/s1d13xxxfb.h
1705 2032
1706ETHEREXPRESS-16 NETWORK DRIVER 2033ETHEREXPRESS-16 NETWORK DRIVER
1707P: Philip Blundell 2034P: Philip Blundell
1708M: philb@gnu.org 2035M: philb@gnu.org
1709L: netdev@vger.kernel.org 2036L: netdev@vger.kernel.org
1710S: Maintained 2037S: Maintained
2038F: drivers/net/eexpress.*
1711 2039
1712ETHERNET BRIDGE 2040ETHERNET BRIDGE
1713P: Stephen Hemminger 2041P: Stephen Hemminger
@@ -1715,87 +2043,126 @@ M: shemminger@linux-foundation.org
1715L: bridge@lists.linux-foundation.org 2043L: bridge@lists.linux-foundation.org
1716W: http://www.linux-foundation.org/en/Net:Bridge 2044W: http://www.linux-foundation.org/en/Net:Bridge
1717S: Maintained 2045S: Maintained
2046F: include/linux/netfilter_bridge/
2047F: net/bridge/
1718 2048
1719ETHERTEAM 16I DRIVER 2049ETHERTEAM 16I DRIVER
1720P: Mika Kuoppala 2050P: Mika Kuoppala
1721M: miku@iki.fi 2051M: miku@iki.fi
1722S: Maintained 2052S: Maintained
2053F: drivers/net/eth16i.c
1723 2054
1724EXT2 FILE SYSTEM 2055EXT2 FILE SYSTEM
1725L: linux-ext4@vger.kernel.org 2056L: linux-ext4@vger.kernel.org
1726S: Maintained 2057S: Maintained
2058F: Documentation/filesystems/ext2.txt
2059F: fs/ext2/
2060F: include/linux/ext2*
1727 2061
1728EXT3 FILE SYSTEM 2062EXT3 FILE SYSTEM
1729P: Stephen Tweedie, Andrew Morton 2063P: Stephen Tweedie
1730M: sct@redhat.com, akpm@linux-foundation.org, adilger@sun.com 2064M: sct@redhat.com
2065P: Andrew Morton
2066M: akpm@linux-foundation.org
2067P: Andreas Dilger
2068M: adilger@sun.com
1731L: linux-ext4@vger.kernel.org 2069L: linux-ext4@vger.kernel.org
1732S: Maintained 2070S: Maintained
2071F: Documentation/filesystems/ext3.txt
2072F: fs/ext3/
2073F: include/linux/ext3*
1733 2074
1734EXT4 FILE SYSTEM 2075EXT4 FILE SYSTEM
1735P: Theodore Ts'o 2076P: Theodore Ts'o
1736M: tytso@mit.edu, adilger@sun.com 2077M: tytso@mit.edu
2078P: Andreas Dilger
2079M: adilger@sun.com
1737L: linux-ext4@vger.kernel.org 2080L: linux-ext4@vger.kernel.org
1738W: http://ext4.wiki.kernel.org 2081W: http://ext4.wiki.kernel.org
1739S: Maintained 2082S: Maintained
2083F: Documentation/filesystems/ext4.txt
2084F: fs/ext4/
1740 2085
1741F71805F HARDWARE MONITORING DRIVER 2086F71805F HARDWARE MONITORING DRIVER
1742P: Jean Delvare 2087P: Jean Delvare
1743M: khali@linux-fr.org 2088M: khali@linux-fr.org
1744L: lm-sensors@lm-sensors.org 2089L: lm-sensors@lm-sensors.org
1745S: Maintained 2090S: Maintained
2091F: Documentation/hwmon/f71805f
2092F: drivers/hwmon/f71805f.c
1746 2093
1747FARSYNC SYNCHRONOUS DRIVER 2094FARSYNC SYNCHRONOUS DRIVER
1748P: Kevin Curtis 2095P: Kevin Curtis
1749M: kevin.curtis@farsite.co.uk 2096M: kevin.curtis@farsite.co.uk
1750W: http://www.farsite.co.uk/ 2097W: http://www.farsite.co.uk/
1751S: Supported 2098S: Supported
2099F: drivers/net/wan/farsync.*
1752 2100
1753FAULT INJECTION SUPPORT 2101FAULT INJECTION SUPPORT
1754P: Akinobu Mita 2102P: Akinobu Mita
1755M: akinobu.mita@gmail.com 2103M: akinobu.mita@gmail.com
1756S: Supported 2104S: Supported
2105F: Documentation/fault-injection/
2106F: lib/fault-inject.c
1757 2107
1758FILE LOCKING (flock() and fcntl()/lockf()) 2108FILE LOCKING (flock() and fcntl()/lockf())
1759P: Matthew Wilcox 2109P: Matthew Wilcox
1760M: matthew@wil.cx 2110M: matthew@wil.cx
1761L: linux-fsdevel@vger.kernel.org 2111L: linux-fsdevel@vger.kernel.org
1762S: Maintained 2112S: Maintained
2113F: include/linux/fcntl.h
2114F: include/linux/fs.h
2115F: fs/fcntl.c
2116F: fs/locks.c
1763 2117
1764FILESYSTEMS (VFS and infrastructure) 2118FILESYSTEMS (VFS and infrastructure)
1765P: Alexander Viro 2119P: Alexander Viro
1766M: viro@zeniv.linux.org.uk 2120M: viro@zeniv.linux.org.uk
1767L: linux-fsdevel@vger.kernel.org 2121L: linux-fsdevel@vger.kernel.org
1768S: Maintained 2122S: Maintained
2123F: fs/*
1769 2124
1770FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER 2125FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
1771P: Riku Voipio 2126P: Riku Voipio
1772M: riku.vipio@iki.fi 2127M: riku.vipio@iki.fi
1773L: lm-sensors@lm-sensors.org 2128L: lm-sensors@lm-sensors.org
1774S: Maintained 2129S: Maintained
2130F: drivers/hwmon/f75375s.c
2131F: include/linux/f75375s.h
1775 2132
1776FIREWIRE SUBSYSTEM (drivers/firewire, <linux/firewire*.h>) 2133FIREWIRE SUBSYSTEM
1777P: Kristian Hoegsberg, Stefan Richter 2134P: Kristian Hoegsberg
1778M: krh@redhat.com, stefanr@s5r6.in-berlin.de 2135M: krh@redhat.com
2136P: Stefan Richter
2137M: stefanr@s5r6.in-berlin.de
1779L: linux1394-devel@lists.sourceforge.net 2138L: linux1394-devel@lists.sourceforge.net
1780W: http://www.linux1394.org/ 2139W: http://www.linux1394.org/
1781T: git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git 2140T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
1782S: Maintained 2141S: Maintained
2142F: drivers/firewire/
2143F: include/linux/firewire*.h
1783 2144
1784FIRMWARE LOADER (request_firmware) 2145FIRMWARE LOADER (request_firmware)
1785L: linux-kernel@vger.kernel.org 2146L: linux-kernel@vger.kernel.org
1786S: Orphan 2147S: Orphan
2148F: Documentation/firmware_class/
2149F: drivers/base/firmware*.c
2150F: include/linux/firmware.h
1787 2151
1788FPU EMULATOR 2152FPU EMULATOR
1789P: Bill Metzenthen 2153P: Bill Metzenthen
1790M: billm@suburbia.net 2154M: billm@melbpc.org.au
1791W: http://suburbia.net/~billm/floating-point/emulator/ 2155W: http://floatingpoint.sourceforge.net/emulator/index.html
1792S: Maintained 2156S: Maintained
2157F: arch/x86/math-emu/
1793 2158
1794FRAME RELAY DLCI/FRAD (Sangoma drivers too) 2159FRAME RELAY DLCI/FRAD (Sangoma drivers too)
1795P: Mike McLagan 2160P: Mike McLagan
1796M: mike.mclagan@linux.org 2161M: mike.mclagan@linux.org
1797L: netdev@vger.kernel.org 2162L: netdev@vger.kernel.org
1798S: Maintained 2163S: Maintained
2164F: drivers/net/wan/dlci.c
2165F: drivers/net/wan/sdla.c
1799 2166
1800FRAMEBUFFER LAYER 2167FRAMEBUFFER LAYER
1801P: Antonino Daplas 2168P: Antonino Daplas
@@ -1803,6 +2170,9 @@ M: adaplas@gmail.com
1803L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2170L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1804W: http://linux-fbdev.sourceforge.net/ 2171W: http://linux-fbdev.sourceforge.net/
1805S: Maintained 2172S: Maintained
2173F: Documentation/fb/
2174F: drivers/video/fb*
2175F: include/linux/fb.h
1806 2176
1807FREESCALE DMA DRIVER 2177FREESCALE DMA DRIVER
1808P: Li Yang 2178P: Li Yang
@@ -1812,6 +2182,7 @@ M: zw@zh-kernel.org
1812L: linuxppc-embedded@ozlabs.org 2182L: linuxppc-embedded@ozlabs.org
1813L: linux-kernel@vger.kernel.org 2183L: linux-kernel@vger.kernel.org
1814S: Maintained 2184S: Maintained
2185F: drivers/dma/fsldma.*
1815 2186
1816FREESCALE I2C CPM DRIVER 2187FREESCALE I2C CPM DRIVER
1817P: Jochen Friedrich 2188P: Jochen Friedrich
@@ -1819,6 +2190,7 @@ M: jochen@scram.de
1819L: linuxppc-dev@ozlabs.org 2190L: linuxppc-dev@ozlabs.org
1820L: linux-i2c@vger.kernel.org 2191L: linux-i2c@vger.kernel.org
1821S: Maintained 2192S: Maintained
2193F: drivers/i2c/busses/i2c-cpm.c
1822 2194
1823FREESCALE IMX / MXC FRAMEBUFFER DRIVER 2195FREESCALE IMX / MXC FRAMEBUFFER DRIVER
1824P: Sascha Hauer 2196P: Sascha Hauer
@@ -1826,6 +2198,8 @@ M: kernel@pengutronix.de
1826L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2198L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
1827L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 2199L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
1828S: Maintained 2200S: Maintained
2201F: arch/arm/plat-mxc/include/mach/imxfb.h
2202F: drivers/video/imxfb.c
1829 2203
1830FREESCALE SOC FS_ENET DRIVER 2204FREESCALE SOC FS_ENET DRIVER
1831P: Pantelis Antoniou 2205P: Pantelis Antoniou
@@ -1835,12 +2209,16 @@ M: vbordug@ru.mvista.com
1835L: linuxppc-dev@ozlabs.org 2209L: linuxppc-dev@ozlabs.org
1836L: netdev@vger.kernel.org 2210L: netdev@vger.kernel.org
1837S: Maintained 2211S: Maintained
2212F: drivers/net/fs_enet/
2213F: include/linux/fs_enet_pd.h
1838 2214
1839FREESCALE QUICC ENGINE LIBRARY 2215FREESCALE QUICC ENGINE LIBRARY
1840P: Timur Tabi 2216P: Timur Tabi
1841M: timur@freescale.com 2217M: timur@freescale.com
1842L: linuxppc-dev@ozlabs.org 2218L: linuxppc-dev@ozlabs.org
1843S: Supported 2219S: Supported
2220F: arch/powerpc/sysdev/qe_lib/
2221F: arch/powerpc/include/asm/*qe.h
1844 2222
1845FREESCALE HIGHSPEED USB DEVICE DRIVER 2223FREESCALE HIGHSPEED USB DEVICE DRIVER
1846P: Li Yang 2224P: Li Yang
@@ -1848,6 +2226,7 @@ M: leoli@freescale.com
1848L: linux-usb@vger.kernel.org 2226L: linux-usb@vger.kernel.org
1849L: linuxppc-dev@ozlabs.org 2227L: linuxppc-dev@ozlabs.org
1850S: Maintained 2228S: Maintained
2229F: drivers/usb/gadget/fsl_usb2_udc.c
1851 2230
1852FREESCALE QUICC ENGINE UCC ETHERNET DRIVER 2231FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
1853P: Li Yang 2232P: Li Yang
@@ -1855,12 +2234,14 @@ M: leoli@freescale.com
1855L: netdev@vger.kernel.org 2234L: netdev@vger.kernel.org
1856L: linuxppc-dev@ozlabs.org 2235L: linuxppc-dev@ozlabs.org
1857S: Maintained 2236S: Maintained
2237F: drivers/net/ucc_geth*
1858 2238
1859FREESCALE QUICC ENGINE UCC UART DRIVER 2239FREESCALE QUICC ENGINE UCC UART DRIVER
1860P: Timur Tabi 2240P: Timur Tabi
1861M: timur@freescale.com 2241M: timur@freescale.com
1862L: linuxppc-dev@ozlabs.org 2242L: linuxppc-dev@ozlabs.org
1863S: Supported 2243S: Supported
2244F: drivers/serial/ucc_uart.c
1864 2245
1865FREESCALE SOC SOUND DRIVERS 2246FREESCALE SOC SOUND DRIVERS
1866P: Timur Tabi 2247P: Timur Tabi
@@ -1868,12 +2249,15 @@ M: timur@freescale.com
1868L: alsa-devel@alsa-project.org 2249L: alsa-devel@alsa-project.org
1869L: linuxppc-dev@ozlabs.org 2250L: linuxppc-dev@ozlabs.org
1870S: Supported 2251S: Supported
2252F: sound/soc/fsl/fsl*
2253F: sound/soc/fsl/mpc8610_hpcd.c
1871 2254
1872FREEVXFS FILESYSTEM 2255FREEVXFS FILESYSTEM
1873P: Christoph Hellwig 2256P: Christoph Hellwig
1874M: hch@infradead.org 2257M: hch@infradead.org
1875W: ftp://ftp.openlinux.org/pub/people/hch/vxfs 2258W: ftp://ftp.openlinux.org/pub/people/hch/vxfs
1876S: Maintained 2259S: Maintained
2260F: fs/freevxfs/
1877 2261
1878FREEZER 2262FREEZER
1879P: Pavel Machek 2263P: Pavel Machek
@@ -1882,22 +2266,32 @@ P: Rafael J. Wysocki
1882M: rjw@sisk.pl 2266M: rjw@sisk.pl
1883L: linux-pm@lists.linux-foundation.org 2267L: linux-pm@lists.linux-foundation.org
1884S: Supported 2268S: Supported
2269F: Documentation/power/freezing-of-tasks.txt
2270F: include/linux/freezer.h
2271F: kernel/freezer.c
1885 2272
1886FTRACE 2273FTRACE
1887P: Steven Rostedt 2274P: Steven Rostedt
1888M: rostedt@goodmis.org 2275M: rostedt@goodmis.org
1889S: Maintained 2276S: Maintained
2277F: Documentation/ftrace.txt
2278F: arch/*/*/*/ftrace.h
2279F: arch/*/kernel/ftrace.c
2280F: include/*/ftrace.h
2281F: kernel/trace/
1890 2282
1891FUJITSU FR-V (FRV) PORT 2283FUJITSU FR-V (FRV) PORT
1892P: David Howells 2284P: David Howells
1893M: dhowells@redhat.com 2285M: dhowells@redhat.com
1894S: Maintained 2286S: Maintained
2287F: arch/frv/
1895 2288
1896FUJITSU LAPTOP EXTRAS 2289FUJITSU LAPTOP EXTRAS
1897P: Jonathan Woithe 2290P: Jonathan Woithe
1898M: jwoithe@physics.adelaide.edu.au 2291M: jwoithe@physics.adelaide.edu.au
1899L: linux-acpi@vger.kernel.org 2292L: linux-acpi@vger.kernel.org
1900S: Maintained 2293S: Maintained
2294F: drivers/platform/x86/fujitsu-laptop.c
1901 2295
1902FUSE: FILESYSTEM IN USERSPACE 2296FUSE: FILESYSTEM IN USERSPACE
1903P: Miklos Szeredi 2297P: Miklos Szeredi
@@ -1905,12 +2299,15 @@ M: miklos@szeredi.hu
1905L: fuse-devel@lists.sourceforge.net 2299L: fuse-devel@lists.sourceforge.net
1906W: http://fuse.sourceforge.net/ 2300W: http://fuse.sourceforge.net/
1907S: Maintained 2301S: Maintained
2302F: fs/fuse/
2303F: include/linux/fuse.h
1908 2304
1909FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit) 2305FUTURE DOMAIN TMC-16x0 SCSI DRIVER (16-bit)
1910P: Rik Faith 2306P: Rik Faith
1911M: faith@cs.unc.edu 2307M: faith@cs.unc.edu
1912L: linux-scsi@vger.kernel.org 2308L: linux-scsi@vger.kernel.org
1913S: Odd Fixes (e.g., new signatures) 2309S: Odd Fixes (e.g., new signatures)
2310F: drivers/scsi/fdomain.*
1914 2311
1915GDT SCSI DISK ARRAY CONTROLLER DRIVER 2312GDT SCSI DISK ARRAY CONTROLLER DRIVER
1916P: Achim Leubner 2313P: Achim Leubner
@@ -1918,26 +2315,39 @@ M: achim_leubner@adaptec.com
1918L: linux-scsi@vger.kernel.org 2315L: linux-scsi@vger.kernel.org
1919W: http://www.icp-vortex.com/ 2316W: http://www.icp-vortex.com/
1920S: Supported 2317S: Supported
2318F: drivers/scsi/gdt*
1921 2319
1922GENERIC GPIO I2C DRIVER 2320GENERIC GPIO I2C DRIVER
1923P: Haavard Skinnemoen 2321P: Haavard Skinnemoen
1924M: hskinnemoen@atmel.com 2322M: hskinnemoen@atmel.com
1925S: Supported 2323S: Supported
2324F: drivers/i2c/busses/i2c-gpio.c
2325F: include/linux/i2c-gpio.h
1926 2326
1927GENERIC HDLC (WAN) DRIVERS 2327GENERIC HDLC (WAN) DRIVERS
1928P: Krzysztof Halasa 2328P: Krzysztof Halasa
1929M: khc@pm.waw.pl 2329M: khc@pm.waw.pl
1930W: http://www.kernel.org/pub/linux/utils/net/hdlc/ 2330W: http://www.kernel.org/pub/linux/utils/net/hdlc/
1931S: Maintained 2331S: Maintained
2332F: drivers/net/wan/c101.c
2333F: drivers/net/wan/hd6457*
2334F: drivers/net/wan/hdlc*
2335F: drivers/net/wan/n2.c
2336F: drivers/net/wan/pc300too.c
2337F: drivers/net/wan/pci200syn.c
2338F: drivers/net/wan/wanxl*
1932 2339
1933GFS2 FILE SYSTEM 2340GFS2 FILE SYSTEM
1934P: Steven Whitehouse 2341P: Steven Whitehouse
1935M: swhiteho@redhat.com 2342M: swhiteho@redhat.com
1936L: cluster-devel@redhat.com 2343L: cluster-devel@redhat.com
1937W: http://sources.redhat.com/cluster/ 2344W: http://sources.redhat.com/cluster/
1938T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git 2345T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
1939T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git 2346T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
1940S: Supported 2347S: Supported
2348F: Documentation/filesystems/gfs2*.txt
2349F: fs/gfs2/
2350F: include/linux/gfs2_ondisk.h
1941 2351
1942GIGASET ISDN DRIVERS 2352GIGASET ISDN DRIVERS
1943P: Hansjoerg Lipp 2353P: Hansjoerg Lipp
@@ -1947,6 +2357,9 @@ M: tilman@imap.cc
1947L: gigaset307x-common@lists.sourceforge.net 2357L: gigaset307x-common@lists.sourceforge.net
1948W: http://gigaset307x.sourceforge.net/ 2358W: http://gigaset307x.sourceforge.net/
1949S: Maintained 2359S: Maintained
2360F: Documentation/isdn/README.gigaset
2361F: drivers/isdn/gigaset/
2362F: include/linux/gigaset_dev.h
1950 2363
1951HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER 2364HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
1952P: Frank Seidel 2365P: Frank Seidel
@@ -1954,6 +2367,7 @@ M: frank@f-seidel.de
1954L: lm-sensors@lm-sensors.org 2367L: lm-sensors@lm-sensors.org
1955W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/ 2368W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
1956S: Maintained 2369S: Maintained
2370F: drivers/hwmon/hdaps.c
1957 2371
1958HYPERVISOR VIRTUAL CONSOLE DRIVER 2372HYPERVISOR VIRTUAL CONSOLE DRIVER
1959L: linuxppc-dev@ozlabs.org 2373L: linuxppc-dev@ozlabs.org
@@ -1965,51 +2379,61 @@ GSPCA FINEPIX SUBDRIVER
1965P: Frank Zago 2379P: Frank Zago
1966M: frank@zago.net 2380M: frank@zago.net
1967L: linux-media@vger.kernel.org 2381L: linux-media@vger.kernel.org
1968T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2382T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1969S: Maintained 2383S: Maintained
2384F: drivers/media/video/gspca/finepix.c
1970 2385
1971GSPCA M5602 SUBDRIVER 2386GSPCA M5602 SUBDRIVER
1972P: Erik Andren 2387P: Erik Andren
1973M: erik.andren@gmail.com 2388M: erik.andren@gmail.com
1974L: linux-media@vger.kernel.org 2389L: linux-media@vger.kernel.org
1975T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2390T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1976S: Maintained 2391S: Maintained
2392F: drivers/media/video/gspca/m5602/
1977 2393
1978GSPCA PAC207 SONIXB SUBDRIVER 2394GSPCA PAC207 SONIXB SUBDRIVER
1979P: Hans de Goede 2395P: Hans de Goede
1980M: hdegoede@redhat.com 2396M: hdegoede@redhat.com
1981L: linux-media@vger.kernel.org 2397L: linux-media@vger.kernel.org
1982T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2398T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1983S: Maintained 2399S: Maintained
2400F: drivers/media/video/gspca/pac207.c
1984 2401
1985GSPCA T613 SUBDRIVER 2402GSPCA T613 SUBDRIVER
1986P: Leandro Costantino 2403P: Leandro Costantino
1987M: lcostantino@gmail.com 2404M: lcostantino@gmail.com
1988L: linux-media@vger.kernel.org 2405L: linux-media@vger.kernel.org
1989T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2406T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1990S: Maintained 2407S: Maintained
2408F: drivers/media/video/gspca/t613.c
1991 2409
1992GSPCA USB WEBCAM DRIVER 2410GSPCA USB WEBCAM DRIVER
1993P: Jean-Francois Moine 2411P: Jean-Francois Moine
1994M: moinejf@free.fr 2412M: moinejf@free.fr
1995W: http://moinejf.free.fr 2413W: http://moinejf.free.fr
1996L: linux-media@vger.kernel.org 2414L: linux-media@vger.kernel.org
1997T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 2415T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
1998S: Maintained 2416S: Maintained
2417F: drivers/media/video/gspca/
1999 2418
2000HARDWARE MONITORING 2419HARDWARE MONITORING
2001L: lm-sensors@lm-sensors.org 2420L: lm-sensors@lm-sensors.org
2002W: http://www.lm-sensors.org/ 2421W: http://www.lm-sensors.org/
2003S: Orphan 2422S: Orphan
2423F: drivers/hwmon/
2004 2424
2005HARDWARE RANDOM NUMBER GENERATOR CORE 2425HARDWARE RANDOM NUMBER GENERATOR CORE
2006S: Orphan 2426S: Orphan
2427F: Documentation/hw_random.txt
2428F: drivers/char/hw_random/
2429F: include/linux/hw_random.h
2007 2430
2008HARMONY SOUND DRIVER 2431HARMONY SOUND DRIVER
2009P: Kyle McMartin 2432P: Kyle McMartin
2010M: kyle@mcmartin.ca 2433M: kyle@mcmartin.ca
2011L: linux-parisc@vger.kernel.org 2434L: linux-parisc@vger.kernel.org
2012S: Maintained 2435S: Maintained
2436F: sound/parisc/harmony.*
2013 2437
2014HAYES ESP SERIAL DRIVER 2438HAYES ESP SERIAL DRIVER
2015P: Andrew J. Robinson 2439P: Andrew J. Robinson
@@ -2017,30 +2441,33 @@ M: arobinso@nyx.net
2017L: linux-kernel@vger.kernel.org 2441L: linux-kernel@vger.kernel.org
2018W: http://www.nyx.net/~arobinso 2442W: http://www.nyx.net/~arobinso
2019S: Maintained 2443S: Maintained
2020 2444F: Documentation/serial/hayes-esp.txt
2021HEWLETT-PACKARD FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA 2445F: drivers/char/esp.c
2022P: Chirag Kantharia
2023M: chirag.kantharia@hp.com
2024L: iss_storagedev@hp.com
2025S: Maintained
2026 2446
2027HEWLETT-PACKARD SMART2 RAID DRIVER 2447HEWLETT-PACKARD SMART2 RAID DRIVER
2028P: Chirag Kantharia 2448P: Chirag Kantharia
2029M: chirag.kantharia@hp.com 2449M: chirag.kantharia@hp.com
2030L: iss_storagedev@hp.com 2450L: iss_storagedev@hp.com
2031S: Maintained 2451S: Maintained
2452F: Documentation/blockdev/cpqarray.txt
2453F: drivers/block/cpqarray.*
2032 2454
2033HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss) 2455HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss)
2034P: Mike Miller 2456P: Mike Miller
2035M: mike.miller@hp.com 2457M: mike.miller@hp.com
2036L: iss_storagedev@hp.com 2458L: iss_storagedev@hp.com
2037S: Supported 2459S: Supported
2460F: Documentation/blockdev/cciss.txt
2461F: drivers/block/cciss*
2462F: include/linux/cciss_ioctl.h
2038 2463
2039HFS FILESYSTEM 2464HFS FILESYSTEM
2040P: Roman Zippel 2465P: Roman Zippel
2041M: zippel@linux-m68k.org 2466M: zippel@linux-m68k.org
2042L: linux-kernel@vger.kernel.org 2467L: linux-kernel@vger.kernel.org
2043S: Maintained 2468S: Maintained
2469F: Documentation/filesystems/hfs.txt
2470F: fs/hfs/
2044 2471
2045HGA FRAMEBUFFER DRIVER 2472HGA FRAMEBUFFER DRIVER
2046P: Ferenc Bakonyi 2473P: Ferenc Bakonyi
@@ -2048,6 +2475,7 @@ M: fero@drama.obuda.kando.hu
2048L: linux-nvidia@lists.surfsouth.com 2475L: linux-nvidia@lists.surfsouth.com
2049W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml 2476W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml
2050S: Maintained 2477S: Maintained
2478F: drivers/video/hgafb.c
2051 2479
2052HIBERNATION (aka Software Suspend, aka swsusp) 2480HIBERNATION (aka Software Suspend, aka swsusp)
2053P: Pavel Machek 2481P: Pavel Machek
@@ -2056,19 +2484,32 @@ P: Rafael J. Wysocki
2056M: rjw@sisk.pl 2484M: rjw@sisk.pl
2057L: linux-pm@lists.linux-foundation.org 2485L: linux-pm@lists.linux-foundation.org
2058S: Supported 2486S: Supported
2487F: arch/x86/power/
2488F: drivers/base/power/
2489F: kernel/power/
2490F: include/linux/suspend.h
2491F: include/linux/freezer.h
2492F: include/linux/pm.h
2493F: include/asm-*/suspend*.h
2494F: arch/*/include/asm/suspend*.h
2059 2495
2060HID CORE LAYER 2496HID CORE LAYER
2061P: Jiri Kosina 2497P: Jiri Kosina
2062M: jkosina@suse.cz 2498M: jkosina@suse.cz
2063L: linux-input@vger.kernel.org 2499L: linux-input@vger.kernel.org
2064T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git 2500T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
2065S: Maintained 2501S: Maintained
2502F: drivers/hid/
2503F: include/linux/hid*
2066 2504
2067HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS 2505HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
2068P: Thomas Gleixner 2506P: Thomas Gleixner
2069M: tglx@linutronix.de 2507M: tglx@linutronix.de
2070L: linux-kernel@vger.kernel.org 2508L: linux-kernel@vger.kernel.org
2071S: Maintained 2509S: Maintained
2510F: Documentation/timers/
2511F: kernel/hrtimer.c
2512F: include/linux/hrtimer.h
2072 2513
2073HIGH-SPEED SCC DRIVER FOR AX.25 2514HIGH-SPEED SCC DRIVER FOR AX.25
2074P: Klaus Kudielka 2515P: Klaus Kudielka
@@ -2076,18 +2517,25 @@ M: klaus.kudielka@ieee.org
2076L: linux-hams@vger.kernel.org 2517L: linux-hams@vger.kernel.org
2077W: http://www.nt.tuwien.ac.at/~kkudielk/Linux/ 2518W: http://www.nt.tuwien.ac.at/~kkudielk/Linux/
2078S: Maintained 2519S: Maintained
2520F: drivers/net/hamradio/dmascc.c
2521F: drivers/net/hamradio/scc.c
2079 2522
2080HIGHPOINT ROCKETRAID 3xxx RAID DRIVER 2523HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
2081P: HighPoint Linux Team 2524P: HighPoint Linux Team
2082M: linux@highpoint-tech.com 2525M: linux@highpoint-tech.com
2083W: http://www.highpoint-tech.com 2526W: http://www.highpoint-tech.com
2084S: Supported 2527S: Supported
2528F: Documentation/scsi/hptiop.txt
2529F: drivers/scsi/hptiop.c
2085 2530
2086HIPPI 2531HIPPI
2087P: Jes Sorensen 2532P: Jes Sorensen
2088M: jes@trained-monkey.org 2533M: jes@trained-monkey.org
2089L: linux-hippi@sunsite.dk 2534L: linux-hippi@sunsite.dk
2090S: Maintained 2535S: Maintained
2536F: include/linux/hippidevice.h
2537F: include/linux/if_hippi.h
2538F: net/802/hippi.c
2091 2539
2092HOST AP DRIVER 2540HOST AP DRIVER
2093P: Jouni Malinen 2541P: Jouni Malinen
@@ -2096,65 +2544,79 @@ L: hostap@shmoo.com (subscribers-only)
2096L: linux-wireless@vger.kernel.org 2544L: linux-wireless@vger.kernel.org
2097W: http://hostap.epitest.fi/ 2545W: http://hostap.epitest.fi/
2098S: Maintained 2546S: Maintained
2547F: drivers/net/wireless/hostap/
2099 2548
2100HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER 2549HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
2101P: Carlos Corbacho 2550P: Carlos Corbacho
2102M: carlos@strangeworlds.co.uk 2551M: carlos@strangeworlds.co.uk
2103S: Odd Fixes 2552S: Odd Fixes
2553F: drivers/platform/x86/tc1100-wmi.c
2104 2554
2105HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series 2555HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
2106P: Jaroslav Kysela 2556P: Jaroslav Kysela
2107M: perex@perex.cz 2557M: perex@perex.cz
2108S: Maintained 2558S: Maintained
2559F: drivers/net/hp100.*
2109 2560
2110HPET: High Precision Event Timers driver (drivers/char/hpet.c) 2561HPET: High Precision Event Timers driver
2111P: Clemens Ladisch 2562P: Clemens Ladisch
2112M: clemens@ladisch.de 2563M: clemens@ladisch.de
2113S: Maintained 2564S: Maintained
2565F: Documentation/timers/hpet.txt
2566F: drivers/char/hpet.c
2567F: include/linux/hpet.h
2114 2568
2115HPET: i386 2569HPET: i386
2116P: Venkatesh Pallipadi (Venki) 2570P: Venkatesh Pallipadi (Venki)
2117M: venkatesh.pallipadi@intel.com 2571M: venkatesh.pallipadi@intel.com
2118S: Maintained 2572S: Maintained
2573F: arch/x86/kernel/hpet.c
2574F: arch/x86/include/asm/hpet.h
2119 2575
2120HPET: x86_64 2576HPET: x86_64
2121P: Vojtech Pavlik 2577P: Vojtech Pavlik
2122M: vojtech@suse.cz 2578M: vojtech@suse.cz
2123S: Maintained 2579S: Maintained
2124 2580
2125HPET: ACPI hpet.c 2581HPET: ACPI
2126P: Bob Picco 2582P: Bob Picco
2127M: bob.picco@hp.com 2583M: bob.picco@hp.com
2128S: Maintained 2584S: Maintained
2585F: drivers/char/hpet.c
2129 2586
2130HPFS FILESYSTEM 2587HPFS FILESYSTEM
2131P: Mikulas Patocka 2588P: Mikulas Patocka
2132M: mikulas@artax.karlin.mff.cuni.cz 2589M: mikulas@artax.karlin.mff.cuni.cz
2133W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi 2590W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
2134S: Maintained 2591S: Maintained
2592F: fs/hpfs/
2135 2593
2136HSO 3G Modem Driver (hso.c) 2594HSO 3G MODEM DRIVER
2137P: Denis Joseph Barrow 2595P: Denis Joseph Barrow
2138M: d.barow@option.com 2596M: d.barow@option.com
2139W: http://www.pharscape.org 2597W: http://www.pharscape.org
2140S: Maintained 2598S: Maintained
2599F: drivers/net/usb/hso.c
2141 2600
2142HTCPEN TOUCHSCREEN DRIVER 2601HTCPEN TOUCHSCREEN DRIVER
2143P: Pau Oliva Fora 2602P: Pau Oliva Fora
2144M: pof@eslack.org 2603M: pof@eslack.org
2145L: linux-input@vger.kernel.org 2604L: linux-input@vger.kernel.org
2146S: Maintained 2605S: Maintained
2606F: drivers/input/touchscreen/htcpen.c
2147 2607
2148HUGETLB FILESYSTEM 2608HUGETLB FILESYSTEM
2149P: William Irwin 2609P: William Irwin
2150M: wli@holomorphy.com 2610M: wli@holomorphy.com
2151S: Maintained 2611S: Maintained
2612F: fs/hugetlbfs/
2152 2613
2153I2C/SMBUS STUB DRIVER 2614I2C/SMBUS STUB DRIVER
2154P: Mark M. Hoffman 2615P: Mark M. Hoffman
2155M: mhoffman@lightlink.com 2616M: mhoffman@lightlink.com
2156L: linux-i2c@vger.kernel.org 2617L: linux-i2c@vger.kernel.org
2157S: Maintained 2618S: Maintained
2619F: drivers/i2c/busses/i2c-stub.c
2158 2620
2159I2C SUBSYSTEM 2621I2C SUBSYSTEM
2160P: Jean Delvare (PC drivers, core) 2622P: Jean Delvare (PC drivers, core)
@@ -2165,24 +2627,31 @@ L: linux-i2c@vger.kernel.org
2165W: http://i2c.wiki.kernel.org/ 2627W: http://i2c.wiki.kernel.org/
2166T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/ 2628T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
2167S: Maintained 2629S: Maintained
2630F: Documentation/i2c/
2631F: drivers/i2c/
2632F: include/linux/i2c.h
2633F: include/linux/i2c-dev.h
2634F: include/linux/i2c-id.h
2168 2635
2169I2C-TINY-USB DRIVER 2636I2C-TINY-USB DRIVER
2170P: Till Harbaum 2637P: Till Harbaum
2171M: till@harbaum.org 2638M: till@harbaum.org
2172L: linux-i2c@vger.kernel.org 2639L: linux-i2c@vger.kernel.org
2173T: http://www.harbaum.org/till/i2c_tiny_usb 2640W: http://www.harbaum.org/till/i2c_tiny_usb
2174S: Maintained 2641S: Maintained
2642F: drivers/i2c/busses/i2c-tiny-usb.c
2175 2643
2176i386 BOOT CODE 2644i386 BOOT CODE
2177P: H. Peter Anvin 2645P: H. Peter Anvin
2178M: hpa@zytor.com 2646M: hpa@zytor.com
2179L: Linux-Kernel@vger.kernel.org 2647L: Linux-Kernel@vger.kernel.org
2180S: Maintained 2648S: Maintained
2649F: arch/x86/boot/
2181 2650
2182i386 SETUP CODE / CPU ERRATA WORKAROUNDS 2651i386 SETUP CODE / CPU ERRATA WORKAROUNDS
2183P: H. Peter Anvin 2652P: H. Peter Anvin
2184M: hpa@zytor.com 2653M: hpa@zytor.com
2185T: git.kernel.org:/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git 2654T: git git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup.git
2186S: Maintained 2655S: Maintained
2187 2656
2188IA64 (Itanium) PLATFORM 2657IA64 (Itanium) PLATFORM
@@ -2190,19 +2659,22 @@ P: Tony Luck
2190M: tony.luck@intel.com 2659M: tony.luck@intel.com
2191L: linux-ia64@vger.kernel.org 2660L: linux-ia64@vger.kernel.org
2192W: http://www.ia64-linux.org/ 2661W: http://www.ia64-linux.org/
2193T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git 2662T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
2194S: Maintained 2663S: Maintained
2664F: arch/ia64/
2195 2665
2196IBM MCA SCSI SUBSYSTEM DRIVER 2666IBM MCA SCSI SUBSYSTEM DRIVER
2197P: Michael Lang 2667P: Michael Lang
2198M: langa2@kph.uni-mainz.de 2668M: langa2@kph.uni-mainz.de
2199W: http://www.uni-mainz.de/~langm000/linux.html 2669W: http://www.uni-mainz.de/~langm000/linux.html
2200S: Maintained 2670S: Maintained
2671F: drivers/scsi/ibmmca.c
2201 2672
2202IBM Power Linux RAID adapter 2673IBM Power Linux RAID adapter
2203P: Brian King 2674P: Brian King
2204M: brking@us.ibm.com 2675M: brking@us.ibm.com
2205S: Supported 2676S: Supported
2677F: drivers/scsi/ipr.*
2206 2678
2207IBM ServeRAID RAID DRIVER 2679IBM ServeRAID RAID DRIVER
2208P: Jack Hammer 2680P: Jack Hammer
@@ -2210,6 +2682,7 @@ P: Dave Jeffery
2210M: ipslinux@adaptec.com 2682M: ipslinux@adaptec.com
2211W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html 2683W: http://www.developer.ibm.com/welcome/netfinity/serveraid.html
2212S: Supported 2684S: Supported
2685F: drivers/scsi/ips.*
2213 2686
2214IDE SUBSYSTEM 2687IDE SUBSYSTEM
2215P: Bartlomiej Zolnierkiewicz 2688P: Bartlomiej Zolnierkiewicz
@@ -2217,45 +2690,55 @@ M: bzolnier@gmail.com
2217L: linux-ide@vger.kernel.org 2690L: linux-ide@vger.kernel.org
2218T: quilt kernel.org/pub/linux/kernel/people/bart/pata-2.6/ 2691T: quilt kernel.org/pub/linux/kernel/people/bart/pata-2.6/
2219S: Maintained 2692S: Maintained
2693F: Documentation/ide/
2694F: drivers/ide/
2695F: include/linux/ide.h
2220 2696
2221IDE/ATAPI DRIVERS 2697IDE/ATAPI DRIVERS
2222P: Borislav Petkov 2698P: Borislav Petkov
2223M: petkovbb@gmail.com 2699M: petkovbb@gmail.com
2224L: linux-ide@vger.kernel.org 2700L: linux-ide@vger.kernel.org
2225S: Maintained 2701S: Maintained
2702F: Documentation/cdrom/ide-cd
2703F: drivers/ide/ide-cd*
2226 2704
2227IDLE-I7300 2705IDLE-I7300
2228P: Andy Henroid 2706P: Andy Henroid
2229M: andrew.d.henroid@intel.com 2707M: andrew.d.henroid@intel.com
2230L: linux-pm@lists.linux-foundation.org 2708L: linux-pm@lists.linux-foundation.org
2231S: Supported 2709S: Supported
2710F: drivers/idle/i7300_idle.c
2232 2711
2233IEEE 1394 SUBSYSTEM (drivers/ieee1394) 2712IEEE 1394 SUBSYSTEM
2234P: Ben Collins 2713P: Ben Collins
2235M: ben.collins@ubuntu.com 2714M: ben.collins@ubuntu.com
2236P: Stefan Richter 2715P: Stefan Richter
2237M: stefanr@s5r6.in-berlin.de 2716M: stefanr@s5r6.in-berlin.de
2238L: linux1394-devel@lists.sourceforge.net 2717L: linux1394-devel@lists.sourceforge.net
2239W: http://www.linux1394.org/ 2718W: http://www.linux1394.org/
2240T: git kernel.org:/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git 2719T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
2241S: Maintained 2720S: Maintained
2721F: drivers/ieee1394/
2242 2722
2243IEEE 1394 RAW I/O DRIVER (raw1394) 2723IEEE 1394 RAW I/O DRIVER
2244P: Dan Dennedy 2724P: Dan Dennedy
2245M: dan@dennedy.org 2725M: dan@dennedy.org
2246P: Stefan Richter 2726P: Stefan Richter
2247M: stefanr@s5r6.in-berlin.de 2727M: stefanr@s5r6.in-berlin.de
2248L: linux1394-devel@lists.sourceforge.net 2728L: linux1394-devel@lists.sourceforge.net
2249S: Maintained 2729S: Maintained
2730F: drivers/ieee1394/raw1394*
2250 2731
2251INTEGRITY MEASUREMENT ARCHITECTURE (IMA) 2732INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
2252P: Mimi Zohar 2733P: Mimi Zohar
2253M: zohar@us.ibm.com 2734M: zohar@us.ibm.com
2254S: Supported 2735S: Supported
2736F: security/integrity/ima/
2255 2737
2256IMS TWINTURBO FRAMEBUFFER DRIVER 2738IMS TWINTURBO FRAMEBUFFER DRIVER
2257L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2739L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2258S: Orphan 2740S: Orphan
2741F: drivers/video/imsttfb.c
2259 2742
2260INFINIBAND SUBSYSTEM 2743INFINIBAND SUBSYSTEM
2261P: Roland Dreier 2744P: Roland Dreier
@@ -2266,8 +2749,11 @@ P: Hal Rosenstock
2266M: hal.rosenstock@gmail.com 2749M: hal.rosenstock@gmail.com
2267L: general@lists.openfabrics.org (moderated for non-subscribers) 2750L: general@lists.openfabrics.org (moderated for non-subscribers)
2268W: http://www.openib.org/ 2751W: http://www.openib.org/
2269T: git kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git 2752T: git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
2270S: Supported 2753S: Supported
2754F: Documentation/infiniband/
2755F: drivers/infiniband/
2756F: include/linux/if_infiniband.h
2271 2757
2272INOTIFY 2758INOTIFY
2273P: John McCutchan 2759P: John McCutchan
@@ -2276,26 +2762,33 @@ P: Robert Love
2276M: rlove@rlove.org 2762M: rlove@rlove.org
2277L: linux-kernel@vger.kernel.org 2763L: linux-kernel@vger.kernel.org
2278S: Maintained 2764S: Maintained
2765F: Documentation/filesystems/inotify.txt
2766F: fs/notify/inotify/
2767F: include/linux/inotify.h
2279 2768
2280INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS 2769INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
2281P: Dmitry Torokhov 2770P: Dmitry Torokhov
2282M: dmitry.torokhov@gmail.com 2771M: dmitry.torokhov@gmail.com
2283M: dtor@mail.ru 2772M: dtor@mail.ru
2284L: linux-input@vger.kernel.org 2773L: linux-input@vger.kernel.org
2285T: git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git 2774T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
2286S: Maintained 2775S: Maintained
2776F: drivers/input/
2287 2777
2288INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) 2778INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
2289P: Sylvain Meyer 2779P: Sylvain Meyer
2290M: sylvain.meyer@worldonline.fr 2780M: sylvain.meyer@worldonline.fr
2291L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2781L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2292S: Maintained 2782S: Maintained
2783F: Documentation/fb/intelfb.txt
2784F: drivers/video/intelfb/
2293 2785
2294INTEL 810/815 FRAMEBUFFER DRIVER 2786INTEL 810/815 FRAMEBUFFER DRIVER
2295P: Antonino Daplas 2787P: Antonino Daplas
2296M: adaplas@gmail.com 2788M: adaplas@gmail.com
2297L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2789L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2298S: Maintained 2790S: Maintained
2791F: drivers/video/i810/
2299 2792
2300INTEL MENLOW THERMAL DRIVER 2793INTEL MENLOW THERMAL DRIVER
2301P: Sujith Thomas 2794P: Sujith Thomas
@@ -2303,46 +2796,61 @@ M: sujith.thomas@intel.com
2303L: linux-acpi@vger.kernel.org 2796L: linux-acpi@vger.kernel.org
2304W: http://www.lesswatts.org/projects/acpi/ 2797W: http://www.lesswatts.org/projects/acpi/
2305S: Supported 2798S: Supported
2799F: drivers/platform/x86/intel_menlow.c
2306 2800
2307INTEL IA32 MICROCODE UPDATE SUPPORT 2801INTEL IA32 MICROCODE UPDATE SUPPORT
2308P: Tigran Aivazian 2802P: Tigran Aivazian
2309M: tigran@aivazian.fsnet.co.uk 2803M: tigran@aivazian.fsnet.co.uk
2310S: Maintained 2804S: Maintained
2805F: arch/x86/kernel/microcode_core.c
2806F: arch/x86/kernel/microcode_intel.c
2311 2807
2312INTEL I/OAT DMA DRIVER 2808INTEL I/OAT DMA DRIVER
2313P: Maciej Sosnowski 2809P: Maciej Sosnowski
2314M: maciej.sosnowski@intel.com 2810M: maciej.sosnowski@intel.com
2315L: linux-kernel@vger.kernel.org 2811L: linux-kernel@vger.kernel.org
2316S: Supported 2812S: Supported
2813F: drivers/dma/ioat*
2317 2814
2318INTEL IOMMU (VT-d) 2815INTEL IOMMU (VT-d)
2319P: David Woodhouse 2816P: David Woodhouse
2320M: dwmw2@infradead.org 2817M: dwmw2@infradead.org
2321L: iommu@lists.linux-foundation.org 2818L: iommu@lists.linux-foundation.org
2322T: git://git.infradead.org/iommu-2.6.git 2819T: git git://git.infradead.org/iommu-2.6.git
2323S: Supported 2820S: Supported
2821F: drivers/pci/intel-iommu.c
2822F: include/linux/intel-iommu.h
2324 2823
2325INTEL IOP-ADMA DMA DRIVER 2824INTEL IOP-ADMA DMA DRIVER
2326P: Dan Williams 2825P: Dan Williams
2327M: dan.j.williams@intel.com 2826M: dan.j.williams@intel.com
2328L: linux-kernel@vger.kernel.org 2827L: linux-kernel@vger.kernel.org
2329S: Supported 2828S: Supported
2829F: drivers/dma/iop-adma.c
2330 2830
2331INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT 2831INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
2332P: Krzysztof Halasa 2832P: Krzysztof Halasa
2333M: khc@pm.waw.pl 2833M: khc@pm.waw.pl
2334S: Maintained 2834S: Maintained
2835F: arch/arm/mach-ixp4xx/include/mach/qmgr.h
2836F: arch/arm/mach-ixp4xx/include/mach/npe.h
2837F: arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
2838F: arch/arm/mach-ixp4xx/ixp4xx_npe.c
2839F: drivers/net/arm/ixp4xx_eth.c
2840F: drivers/net/wan/ixp4xx_hss.c
2335 2841
2336INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT 2842INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
2337P: Deepak Saxena 2843P: Deepak Saxena
2338M: dsaxena@plexity.net 2844M: dsaxena@plexity.net
2339S: Maintained 2845S: Maintained
2846F: drivers/char/hw_random/ixp4xx-rng.c
2340 2847
2341INTEL IXP2000 ETHERNET DRIVER 2848INTEL IXP2000 ETHERNET DRIVER
2342P: Lennert Buytenhek 2849P: Lennert Buytenhek
2343M: kernel@wantstofly.org 2850M: kernel@wantstofly.org
2344L: netdev@vger.kernel.org 2851L: netdev@vger.kernel.org
2345S: Maintained 2852S: Maintained
2853F: drivers/net/ixp2000/
2346 2854
2347INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe) 2855INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
2348P: Jeff Kirsher 2856P: Jeff Kirsher
@@ -2358,6 +2866,12 @@ M: john.ronciak@intel.com
2358L: e1000-devel@lists.sourceforge.net 2866L: e1000-devel@lists.sourceforge.net
2359W: http://e1000.sourceforge.net/ 2867W: http://e1000.sourceforge.net/
2360S: Supported 2868S: Supported
2869F: drivers/net/e100.c
2870F: drivers/net/e1000/
2871F: drivers/net/e1000e/
2872F: drivers/net/igb/
2873F: drivers/net/ixgb/
2874F: drivers/net/ixgbe/
2361 2875
2362INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 2876INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
2363P: Zhu Yi 2877P: Zhu Yi
@@ -2371,6 +2885,8 @@ L: ipw2100-devel@lists.sourceforge.net
2371W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2885W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2372W: http://ipw2100.sourceforge.net 2886W: http://ipw2100.sourceforge.net
2373S: Supported 2887S: Supported
2888F: Documentation/networking/README.ipw2100
2889F: drivers/net/wireless/ipw2x00/ipw2100.*
2374 2890
2375INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT 2891INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
2376P: Zhu Yi 2892P: Zhu Yi
@@ -2384,6 +2900,8 @@ L: ipw2100-devel@lists.sourceforge.net
2384W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel 2900W: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
2385W: http://ipw2200.sourceforge.net 2901W: http://ipw2200.sourceforge.net
2386S: Supported 2902S: Supported
2903F: Documentation/networking/README.ipw2200
2904F: drivers/net/wireless/ipw2x00/ipw2200.*
2387 2905
2388INTEL WIRELESS WIMAX CONNECTION 2400 2906INTEL WIRELESS WIMAX CONNECTION 2400
2389P: Inaky Perez-Gonzalez 2907P: Inaky Perez-Gonzalez
@@ -2392,6 +2910,9 @@ M: linux-wimax@intel.com
2392L: wimax@linuxwimax.org 2910L: wimax@linuxwimax.org
2393S: Supported 2911S: Supported
2394W: http://linuxwimax.org 2912W: http://linuxwimax.org
2913F: Documentation/wimax/README.i2400m
2914F: drivers/net/wimax/i2400m/
2915F: include/linux/wimax/i2400m.h
2395 2916
2396INTEL WIRELESS WIFI LINK (iwlwifi) 2917INTEL WIRELESS WIFI LINK (iwlwifi)
2397P: Zhu Yi 2918P: Zhu Yi
@@ -2401,25 +2922,29 @@ M: reinette.chatre@intel.com
2401L: linux-wireless@vger.kernel.org 2922L: linux-wireless@vger.kernel.org
2402L: ipw3945-devel@lists.sourceforge.net 2923L: ipw3945-devel@lists.sourceforge.net
2403W: http://intellinuxwireless.org 2924W: http://intellinuxwireless.org
2404T: git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git 2925T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
2405S: Supported 2926S: Supported
2927F: drivers/net/wireless/iwlwifi/
2406 2928
2407IOC3 ETHERNET DRIVER 2929IOC3 ETHERNET DRIVER
2408P: Ralf Baechle 2930P: Ralf Baechle
2409M: ralf@linux-mips.org 2931M: ralf@linux-mips.org
2410L: linux-mips@linux-mips.org 2932L: linux-mips@linux-mips.org
2411S: Maintained 2933S: Maintained
2934F: drivers/net/ioc3-eth.c
2412 2935
2413IOC3 SERIAL DRIVER 2936IOC3 SERIAL DRIVER
2414P: Pat Gefre 2937P: Pat Gefre
2415M: pfg@sgi.com 2938M: pfg@sgi.com
2416L: linux-mips@linux-mips.org 2939L: linux-mips@linux-mips.org
2417S: Maintained 2940S: Maintained
2941F: drivers/serial/ioc3_serial.c
2418 2942
2419IP MASQUERADING 2943IP MASQUERADING
2420P: Juanjo Ciarlante 2944P: Juanjo Ciarlante
2421M: jjciarla@raiz.uncu.edu.ar 2945M: jjciarla@raiz.uncu.edu.ar
2422S: Maintained 2946S: Maintained
2947F: net/ipv4/netfilter/ipt_MASQUERADE.c
2423 2948
2424IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER 2949IP1000A 10/100/1000 GIGABIT ETHERNET DRIVER
2425P: Francois Romieu 2950P: Francois Romieu
@@ -2430,6 +2955,7 @@ P: Jesse Huang
2430M: jesse@icplus.com.tw 2955M: jesse@icplus.com.tw
2431L: netdev@vger.kernel.org 2956L: netdev@vger.kernel.org
2432S: Maintained 2957S: Maintained
2958F: drivers/net/ipg.c
2433 2959
2434IPATH DRIVER 2960IPATH DRIVER
2435P: Ralph Campbell 2961P: Ralph Campbell
@@ -2437,6 +2963,7 @@ M: infinipath@qlogic.com
2437L: general@lists.openfabrics.org 2963L: general@lists.openfabrics.org
2438T: git git://git.qlogic.com/ipath-linux-2.6 2964T: git git://git.qlogic.com/ipath-linux-2.6
2439S: Supported 2965S: Supported
2966F: drivers/infiniband/hw/ipath/
2440 2967
2441IPMI SUBSYSTEM 2968IPMI SUBSYSTEM
2442P: Corey Minyard 2969P: Corey Minyard
@@ -2444,6 +2971,9 @@ M: minyard@acm.org
2444L: openipmi-developer@lists.sourceforge.net 2971L: openipmi-developer@lists.sourceforge.net
2445W: http://openipmi.sourceforge.net/ 2972W: http://openipmi.sourceforge.net/
2446S: Supported 2973S: Supported
2974F: Documentation/IPMI.txt
2975F: drivers/char/ipmi/
2976F: include/linux/ipmi*
2447 2977
2448IPS SCSI RAID DRIVER 2978IPS SCSI RAID DRIVER
2449P: Adaptec OEM Raid Solutions 2979P: Adaptec OEM Raid Solutions
@@ -2451,6 +2981,7 @@ M: aacraid@adaptec.com
2451L: linux-scsi@vger.kernel.org 2981L: linux-scsi@vger.kernel.org
2452W: http://www.adaptec.com/ 2982W: http://www.adaptec.com/
2453S: Maintained 2983S: Maintained
2984F: drivers/scsi/ips*
2454 2985
2455IPVS 2986IPVS
2456P: Wensong Zhang 2987P: Wensong Zhang
@@ -2462,6 +2993,8 @@ M: ja@ssi.bg
2462L: netdev@vger.kernel.org 2993L: netdev@vger.kernel.org
2463L: lvs-devel@vger.kernel.org 2994L: lvs-devel@vger.kernel.org
2464S: Maintained 2995S: Maintained
2996F: Documentation/networking/ipvs-sysctl.txt
2997F: net/netfilter/ipvs/
2465 2998
2466IPWIRELESS DRIVER 2999IPWIRELESS DRIVER
2467P: Jiri Kosina 3000P: Jiri Kosina
@@ -2469,13 +3002,17 @@ M: jkosina@suse.cz
2469P: David Sterba 3002P: David Sterba
2470M: dsterba@suse.cz 3003M: dsterba@suse.cz
2471S: Maintained 3004S: Maintained
2472T: git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git 3005T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
3006F: drivers/char/pcmcia/ipwireless/
2473 3007
2474IPX NETWORK LAYER 3008IPX NETWORK LAYER
2475P: Arnaldo Carvalho de Melo 3009P: Arnaldo Carvalho de Melo
2476M: acme@ghostprotocols.net 3010M: acme@ghostprotocols.net
2477L: netdev@vger.kernel.org 3011L: netdev@vger.kernel.org
2478S: Maintained 3012S: Maintained
3013F: include/linux/ipx.h
3014F: include/net/ipx.h
3015F: net/ipx/
2479 3016
2480IRDA SUBSYSTEM 3017IRDA SUBSYSTEM
2481P: Samuel Ortiz 3018P: Samuel Ortiz
@@ -2483,27 +3020,40 @@ M: samuel@sortiz.org
2483L: irda-users@lists.sourceforge.net (subscribers-only) 3020L: irda-users@lists.sourceforge.net (subscribers-only)
2484W: http://irda.sourceforge.net/ 3021W: http://irda.sourceforge.net/
2485S: Maintained 3022S: Maintained
3023F: Documentation/networking/irda.txt
3024F: drivers/net/irda/
3025F: include/net/irda/
3026F: net/irda/
2486 3027
2487ISAPNP 3028ISAPNP
2488P: Jaroslav Kysela 3029P: Jaroslav Kysela
2489M: perex@perex.cz 3030M: perex@perex.cz
2490S: Maintained 3031S: Maintained
3032F: Documentation/isapnp.txt
3033F: drivers/pnp/isapnp/
3034F: include/linux/isapnp.h
2491 3035
2492ISCSI 3036ISCSI
2493P: Mike Christie 3037P: Mike Christie
2494M: michaelc@cs.wisc.edu 3038M: michaelc@cs.wisc.edu
2495L: open-iscsi@googlegroups.com 3039L: open-iscsi@googlegroups.com
2496W: www.open-iscsi.org 3040W: www.open-iscsi.org
2497T: git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git 3041T: git git://git.kernel.org/pub/scm/linux/kernel/git/mnc/linux-2.6-iscsi.git
2498S: Maintained 3042S: Maintained
3043F: drivers/scsi/*iscsi*
3044F: include/scsi/*iscsi*
2499 3045
2500ISDN SUBSYSTEM 3046ISDN SUBSYSTEM
2501P: Karsten Keil 3047P: Karsten Keil
2502M: isdn@linux-pingi.de 3048M: isdn@linux-pingi.de
2503L: isdn4linux@listserv.isdn4linux.de (subscribers-only) 3049L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
2504W: http://www.isdn4linux.de 3050W: http://www.isdn4linux.de
2505T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git 3051T: git git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/isdn-2.6.git
2506S: Maintained 3052S: Maintained
3053F: Documentation/isdn/
3054F: drivers/isdn/
3055F: include/linux/isdn.h
3056F: include/linux/isdn/
2507 3057
2508ISDN SUBSYSTEM (Eicon active card driver) 3058ISDN SUBSYSTEM (Eicon active card driver)
2509P: Armin Schindler 3059P: Armin Schindler
@@ -2511,6 +3061,7 @@ M: mac@melware.de
2511L: isdn4linux@listserv.isdn4linux.de (subscribers-only) 3061L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
2512W: http://www.melware.de 3062W: http://www.melware.de
2513S: Maintained 3063S: Maintained
3064F: drivers/isdn/hardware/eicon/
2514 3065
2515IVTV VIDEO4LINUX DRIVER 3066IVTV VIDEO4LINUX DRIVER
2516P: Hans Verkuil 3067P: Hans Verkuil
@@ -2518,23 +3069,29 @@ M: hverkuil@xs4all.nl
2518L: ivtv-devel@ivtvdriver.org 3069L: ivtv-devel@ivtvdriver.org
2519L: ivtv-users@ivtvdriver.org 3070L: ivtv-users@ivtvdriver.org
2520L: linux-media@vger.kernel.org 3071L: linux-media@vger.kernel.org
2521T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 3072T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
2522W: http://www.ivtvdriver.org 3073W: http://www.ivtvdriver.org
2523S: Maintained 3074S: Maintained
3075F: Documentation/video4linux/*.ivtv
3076F: drivers/media/video/ivtv/
3077F: include/linux/ivtv*
2524 3078
2525JFS FILESYSTEM 3079JFS FILESYSTEM
2526P: Dave Kleikamp 3080P: Dave Kleikamp
2527M: shaggy@austin.ibm.com 3081M: shaggy@austin.ibm.com
2528L: jfs-discussion@lists.sourceforge.net 3082L: jfs-discussion@lists.sourceforge.net
2529W: http://jfs.sourceforge.net/ 3083W: http://jfs.sourceforge.net/
2530T: git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git 3084T: git git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
2531S: Supported 3085S: Supported
3086F: Documentation/filesystems/jfs.txt
3087F: fs/jfs/
2532 3088
2533JME NETWORK DRIVER 3089JME NETWORK DRIVER
2534P: Guo-Fu Tseng 3090P: Guo-Fu Tseng
2535M: cooldavid@cooldavid.org 3091M: cooldavid@cooldavid.org
2536L: netdev@vger.kernel.org 3092L: netdev@vger.kernel.org
2537S: Maintained 3093S: Maintained
3094F: drivers/net/jme.*
2538 3095
2539JOURNALLING FLASH FILE SYSTEM V2 (JFFS2) 3096JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
2540P: David Woodhouse 3097P: David Woodhouse
@@ -2542,24 +3099,36 @@ M: dwmw2@infradead.org
2542L: linux-mtd@lists.infradead.org 3099L: linux-mtd@lists.infradead.org
2543W: http://www.linux-mtd.infradead.org/doc/jffs2.html 3100W: http://www.linux-mtd.infradead.org/doc/jffs2.html
2544S: Maintained 3101S: Maintained
3102F: fs/jffs2/
3103F: include/linux/jffs2.h
3104F: include/mtd/jffs2-user.h
2545 3105
2546JOURNALLING LAYER FOR BLOCK DEVICES (JBD) 3106JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
2547P: Stephen Tweedie, Andrew Morton 3107P: Stephen Tweedie
2548M: sct@redhat.com, akpm@linux-foundation.org 3108M: sct@redhat.com
3109P: Andrew Morton
3110M: akpm@linux-foundation.org
2549L: linux-ext4@vger.kernel.org 3111L: linux-ext4@vger.kernel.org
2550S: Maintained 3112S: Maintained
3113F: fs/jbd*/
3114F: include/linux/ext*jbd*.h
3115F: include/linux/jbd*.h
2551 3116
2552K8TEMP HARDWARE MONITORING DRIVER 3117K8TEMP HARDWARE MONITORING DRIVER
2553P: Rudolf Marek 3118P: Rudolf Marek
2554M: r.marek@assembler.cz 3119M: r.marek@assembler.cz
2555L: lm-sensors@lm-sensors.org 3120L: lm-sensors@lm-sensors.org
2556S: Maintained 3121S: Maintained
3122F: Documentation/hwmon/k8temp
3123F: drivers/hwmon/k8temp.c
2557 3124
2558KCONFIG 3125KCONFIG
2559P: Roman Zippel 3126P: Roman Zippel
2560M: zippel@linux-m68k.org 3127M: zippel@linux-m68k.org
2561L: linux-kbuild@vger.kernel.org 3128L: linux-kbuild@vger.kernel.org
2562S: Maintained 3129S: Maintained
3130F: Documentation/kbuild/kconfig-language.txt
3131F: scripts/kconfig/
2563 3132
2564KDUMP 3133KDUMP
2565P: Vivek Goyal 3134P: Vivek Goyal
@@ -2570,26 +3139,32 @@ L: kexec@lists.infradead.org
2570L: linux-kernel@vger.kernel.org 3139L: linux-kernel@vger.kernel.org
2571W: http://lse.sourceforge.net/kdump/ 3140W: http://lse.sourceforge.net/kdump/
2572S: Maintained 3141S: Maintained
3142F: Documentation/kdump/
2573 3143
2574KERNEL AUTOMOUNTER (AUTOFS) 3144KERNEL AUTOMOUNTER (AUTOFS)
2575P: H. Peter Anvin 3145P: H. Peter Anvin
2576M: hpa@zytor.com 3146M: hpa@zytor.com
2577L: autofs@linux.kernel.org 3147L: autofs@linux.kernel.org
2578S: Odd Fixes 3148S: Odd Fixes
3149F: fs/autofs/
2579 3150
2580KERNEL AUTOMOUNTER v4 (AUTOFS4) 3151KERNEL AUTOMOUNTER v4 (AUTOFS4)
2581P: Ian Kent 3152P: Ian Kent
2582M: raven@themaw.net 3153M: raven@themaw.net
2583L: autofs@linux.kernel.org 3154L: autofs@linux.kernel.org
2584S: Maintained 3155S: Maintained
3156F: fs/autofs4/
2585 3157
2586KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*) 3158KERNEL BUILD
2587P: Sam Ravnborg 3159P: Sam Ravnborg
2588M: sam@ravnborg.org 3160M: sam@ravnborg.org
2589T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-next.git 3161T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git
2590T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-fixes.git 3162T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
2591L: linux-kbuild@vger.kernel.org 3163L: linux-kbuild@vger.kernel.org
2592S: Maintained 3164S: Maintained
3165F: Documentation/kbuild/
3166F: Makefile
3167F: scripts/Makefile.*
2593 3168
2594KERNEL JANITORS 3169KERNEL JANITORS
2595P: Several 3170P: Several
@@ -2605,6 +3180,13 @@ M: neilb@suse.de
2605L: linux-nfs@vger.kernel.org 3180L: linux-nfs@vger.kernel.org
2606W: http://nfs.sourceforge.net/ 3181W: http://nfs.sourceforge.net/
2607S: Supported 3182S: Supported
3183F: fs/nfsd/
3184F: include/linux/nfsd/
3185F: fs/lockd/
3186F: fs/nfs_common/
3187F: net/sunrpc/
3188F: include/linux/lockd/
3189F: include/linux/sunrpc/
2608 3190
2609KERNEL VIRTUAL MACHINE (KVM) 3191KERNEL VIRTUAL MACHINE (KVM)
2610P: Avi Kivity 3192P: Avi Kivity
@@ -2612,6 +3194,11 @@ M: avi@redhat.com
2612L: kvm@vger.kernel.org 3194L: kvm@vger.kernel.org
2613W: http://kvm.qumranet.com 3195W: http://kvm.qumranet.com
2614S: Supported 3196S: Supported
3197F: Documentation/*/kvm.txt
3198F: arch/*/kvm/
3199F: arch/*/include/asm/kvm*
3200F: include/linux/kvm*
3201F: virt/kvm/
2615 3202
2616KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V 3203KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
2617P: Joerg Roedel 3204P: Joerg Roedel
@@ -2619,6 +3206,9 @@ M: joerg.roedel@amd.com
2619L: kvm@vger.kernel.org 3206L: kvm@vger.kernel.org
2620W: http://kvm.qumranet.com 3207W: http://kvm.qumranet.com
2621S: Supported 3208S: Supported
3209F: arch/x86/include/asm/svm.h
3210F: arch/x86/kvm/kvm_svm.h
3211F: arch/x86/kvm/svm.c
2622 3212
2623KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC 3213KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
2624P: Hollis Blanchard 3214P: Hollis Blanchard
@@ -2626,6 +3216,8 @@ M: hollisb@us.ibm.com
2626L: kvm-ppc@vger.kernel.org 3216L: kvm-ppc@vger.kernel.org
2627W: http://kvm.qumranet.com 3217W: http://kvm.qumranet.com
2628S: Supported 3218S: Supported
3219F: arch/powerpc/include/asm/kvm*
3220F: arch/powerpc/kvm/
2629 3221
2630KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64) 3222KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64)
2631P: Xiantao Zhang 3223P: Xiantao Zhang
@@ -2633,6 +3225,9 @@ M: xiantao.zhang@intel.com
2633L: kvm-ia64@vger.kernel.org 3225L: kvm-ia64@vger.kernel.org
2634W: http://kvm.qumranet.com 3226W: http://kvm.qumranet.com
2635S: Supported 3227S: Supported
3228F: Documentation/ia64/kvm.txt
3229F: arch/ia64/include/asm/kvm*
3230F: arch/ia64/kvm/
2636 3231
2637KERNEL VIRTUAL MACHINE for s390 (KVM/s390) 3232KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
2638P: Carsten Otte 3233P: Carsten Otte
@@ -2643,6 +3238,9 @@ M: linux390@de.ibm.com
2643L: linux-s390@vger.kernel.org 3238L: linux-s390@vger.kernel.org
2644W: http://www.ibm.com/developerworks/linux/linux390/ 3239W: http://www.ibm.com/developerworks/linux/linux390/
2645S: Supported 3240S: Supported
3241F: Documentation/s390/kvm.txt
3242F: arch/s390/include/asm/kvm*
3243F: arch/s390/kvm/
2646 3244
2647KEXEC 3245KEXEC
2648P: Eric Biederman 3246P: Eric Biederman
@@ -2651,18 +3249,28 @@ W: http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
2651L: linux-kernel@vger.kernel.org 3249L: linux-kernel@vger.kernel.org
2652L: kexec@lists.infradead.org 3250L: kexec@lists.infradead.org
2653S: Maintained 3251S: Maintained
3252F: include/linux/kexec.h
3253F: kernel/kexec.c
2654 3254
2655KGDB 3255KGDB
2656P: Jason Wessel 3256P: Jason Wessel
2657M: jason.wessel@windriver.com 3257M: jason.wessel@windriver.com
2658L: kgdb-bugreport@lists.sourceforge.net 3258L: kgdb-bugreport@lists.sourceforge.net
2659S: Maintained 3259S: Maintained
3260F: Documentation/DocBook/kgdb.tmpl
3261F: drivers/misc/kgdbts.c
3262F: drivers/serial/kgdboc.c
3263F: include/linux/kgdb.h
3264F: kernel/kgdb.c
2660 3265
2661KMEMTRACE 3266KMEMTRACE
2662P: Eduard - Gabriel Munteanu 3267P: Eduard - Gabriel Munteanu
2663M: eduard.munteanu@linux360.ro 3268M: eduard.munteanu@linux360.ro
2664L: linux-kernel@vger.kernel.org 3269L: linux-kernel@vger.kernel.org
2665S: Maintained 3270S: Maintained
3271F: Documentation/vm/kmemtrace.txt
3272F: include/trace/kmemtrace.h
3273F: kernel/trace/kmemtrace.c
2666 3274
2667KPROBES 3275KPROBES
2668P: Ananth N Mavinakayanahalli 3276P: Ananth N Mavinakayanahalli
@@ -2675,6 +3283,9 @@ P: Masami Hiramatsu
2675M: mhiramat@redhat.com 3283M: mhiramat@redhat.com
2676L: linux-kernel@vger.kernel.org 3284L: linux-kernel@vger.kernel.org
2677S: Maintained 3285S: Maintained
3286F: Documentation/kprobes.txt
3287F: include/linux/kprobes.h
3288F: kernel/kprobes.c
2678 3289
2679KS0108 LCD CONTROLLER DRIVER 3290KS0108 LCD CONTROLLER DRIVER
2680P: Miguel Ojeda Sandonis 3291P: Miguel Ojeda Sandonis
@@ -2683,21 +3294,31 @@ L: linux-kernel@vger.kernel.org
2683W: http://miguelojeda.es/auxdisplay.htm 3294W: http://miguelojeda.es/auxdisplay.htm
2684W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm 3295W: http://jair.lab.fi.uva.es/~migojed/auxdisplay.htm
2685S: Maintained 3296S: Maintained
3297F: Documentation/auxdisplay/ks0108
3298F: drivers/auxdisplay/ks0108.c
3299F: include/linux/ks0108.h
2686 3300
2687LAPB module 3301LAPB module
2688L: linux-x25@vger.kernel.org 3302L: linux-x25@vger.kernel.org
2689S: Orphan 3303S: Orphan
3304F: Documentation/networking/lapb-module.txt
3305F: include/*/lapb.h
3306F: net/lapb/
2690 3307
2691LASI 53c700 driver for PARISC 3308LASI 53c700 driver for PARISC
2692P: James E.J. Bottomley 3309P: James E.J. Bottomley
2693M: James.Bottomley@HansenPartnership.com 3310M: James.Bottomley@HansenPartnership.com
2694L: linux-scsi@vger.kernel.org 3311L: linux-scsi@vger.kernel.org
2695S: Maintained 3312S: Maintained
3313F: Documentation/scsi/53c700.txt
3314F: drivers/scsi/53c700*
2696 3315
2697LED SUBSYSTEM 3316LED SUBSYSTEM
2698P: Richard Purdie 3317P: Richard Purdie
2699M: rpurdie@rpsys.net 3318M: rpurdie@rpsys.net
2700S: Maintained 3319S: Maintained
3320F: drivers/leds/
3321F: include/linux/leds.h
2701 3322
2702LEGO USB Tower driver 3323LEGO USB Tower driver
2703P: Juergen Stuber 3324P: Juergen Stuber
@@ -2705,6 +3326,7 @@ M: starblue@users.sourceforge.net
2705L: legousb-devel@lists.sourceforge.net 3326L: legousb-devel@lists.sourceforge.net
2706W: http://legousb.sourceforge.net/ 3327W: http://legousb.sourceforge.net/
2707S: Maintained 3328S: Maintained
3329F: drivers/usb/misc/legousbtower.c
2708 3330
2709LGUEST 3331LGUEST
2710P: Rusty Russell 3332P: Rusty Russell
@@ -2712,6 +3334,11 @@ M: rusty@rustcorp.com.au
2712L: lguest@ozlabs.org 3334L: lguest@ozlabs.org
2713W: http://lguest.ozlabs.org/ 3335W: http://lguest.ozlabs.org/
2714S: Maintained 3336S: Maintained
3337F: Documentation/lguest/
3338F: arch/x86/lguest/
3339F: drivers/lguest/
3340F: include/linux/lguest*.h
3341F: arch/x86/include/asm/lguest*.h
2715 3342
2716LINUX FOR IBM pSERIES (RS/6000) 3343LINUX FOR IBM pSERIES (RS/6000)
2717P: Paul Mackerras 3344P: Paul Mackerras
@@ -2719,12 +3346,6 @@ M: paulus@au.ibm.com
2719W: http://www.ibm.com/linux/ltc/projects/ppc 3346W: http://www.ibm.com/linux/ltc/projects/ppc
2720S: Supported 3347S: Supported
2721 3348
2722LINUX FOR NCR VOYAGER
2723P: James Bottomley
2724M: James.Bottomley@HansenPartnership.com
2725W: http://www.hansenpartnership.com/voyager
2726S: Maintained
2727
2728LINUX FOR POWERPC (32-BIT AND 64-BIT) 3349LINUX FOR POWERPC (32-BIT AND 64-BIT)
2729P: Benjamin Herrenschmidt 3350P: Benjamin Herrenschmidt
2730M: benh@kernel.crashing.org 3351M: benh@kernel.crashing.org
@@ -2732,7 +3353,7 @@ P: Paul Mackerras
2732M: paulus@samba.org 3353M: paulus@samba.org
2733W: http://www.penguinppc.org/ 3354W: http://www.penguinppc.org/
2734L: linuxppc-dev@ozlabs.org 3355L: linuxppc-dev@ozlabs.org
2735T: git kernel.org:/pub/scm/linux/kernel/git/benh/powerpc.git 3356T: git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
2736S: Supported 3357S: Supported
2737 3358
2738LINUX FOR POWER MACINTOSH 3359LINUX FOR POWER MACINTOSH
@@ -2757,7 +3378,7 @@ P: Matt Porter
2757M: mporter@kernel.crashing.org 3378M: mporter@kernel.crashing.org
2758W: http://www.penguinppc.org/ 3379W: http://www.penguinppc.org/
2759L: linuxppc-dev@ozlabs.org 3380L: linuxppc-dev@ozlabs.org
2760T: git kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc.git 3381T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc.git
2761S: Maintained 3382S: Maintained
2762 3383
2763LINUX FOR POWERPC EMBEDDED XILINX VIRTEX 3384LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
@@ -2794,30 +3415,39 @@ LINUX SECURITY MODULE (LSM) FRAMEWORK
2794P: Chris Wright 3415P: Chris Wright
2795M: chrisw@sous-sol.org 3416M: chrisw@sous-sol.org
2796L: linux-security-module@vger.kernel.org 3417L: linux-security-module@vger.kernel.org
2797T: git kernel.org:/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git 3418T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
2798S: Supported 3419S: Supported
2799 3420
2800LLC (802.2) 3421LLC (802.2)
2801P: Arnaldo Carvalho de Melo 3422P: Arnaldo Carvalho de Melo
2802M: acme@ghostprotocols.net 3423M: acme@ghostprotocols.net
2803S: Maintained 3424S: Maintained
3425F: include/linux/llc.h
3426F: include/net/llc*
3427F: net/llc/
2804 3428
2805LIS3LV02D ACCELEROMETER DRIVER 3429LIS3LV02D ACCELEROMETER DRIVER
2806P: Eric Piel 3430P: Eric Piel
2807M: eric.piel@tremplin-utc.net 3431M: eric.piel@tremplin-utc.net
2808S: Maintained 3432S: Maintained
3433F: Documentation/hwmon/lis3lv02d
3434F: drivers/hwmon/lis3lv02d.*
2809 3435
2810LM83 HARDWARE MONITOR DRIVER 3436LM83 HARDWARE MONITOR DRIVER
2811P: Jean Delvare 3437P: Jean Delvare
2812M: khali@linux-fr.org 3438M: khali@linux-fr.org
2813L: lm-sensors@lm-sensors.org 3439L: lm-sensors@lm-sensors.org
2814S: Maintained 3440S: Maintained
3441F: Documentation/hwmon/lm83
3442F: drivers/hwmon/lm83.c
2815 3443
2816LM90 HARDWARE MONITOR DRIVER 3444LM90 HARDWARE MONITOR DRIVER
2817P: Jean Delvare 3445P: Jean Delvare
2818M: khali@linux-fr.org 3446M: khali@linux-fr.org
2819L: lm-sensors@lm-sensors.org 3447L: lm-sensors@lm-sensors.org
2820S: Maintained 3448S: Maintained
3449F: Documentation/hwmon/lm90
3450F: drivers/hwmon/lm90.c
2821 3451
2822LOCKDEP AND LOCKSTAT 3452LOCKDEP AND LOCKSTAT
2823P: Peter Zijlstra 3453P: Peter Zijlstra
@@ -2825,8 +3455,12 @@ M: peterz@infradead.org
2825P: Ingo Molnar 3455P: Ingo Molnar
2826M: mingo@redhat.com 3456M: mingo@redhat.com
2827L: linux-kernel@vger.kernel.org 3457L: linux-kernel@vger.kernel.org
2828T: git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git 3458T: git git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
2829S: Maintained 3459S: Maintained
3460F: Documentation/lockdep*.txt
3461F: Documentation/lockstat.txt
3462F: include/linux/lockdep.h
3463F: kernel/lockdep*
2830 3464
2831LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks) 3465LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks)
2832P: Richard Russon (FlatCap) 3466P: Richard Russon (FlatCap)
@@ -2834,6 +3468,8 @@ M: ldm@flatcap.org
2834L: linux-ntfs-dev@lists.sourceforge.net 3468L: linux-ntfs-dev@lists.sourceforge.net
2835W: http://www.linux-ntfs.org/content/view/19/37/ 3469W: http://www.linux-ntfs.org/content/view/19/37/
2836S: Maintained 3470S: Maintained
3471F: Documentation/ldm.txt
3472F: fs/partitions/ldm.*
2837 3473
2838LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) 3474LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
2839P: Eric Moore 3475P: Eric Moore
@@ -2843,12 +3479,14 @@ L: DL-MPTFusionLinux@lsi.com
2843L: linux-scsi@vger.kernel.org 3479L: linux-scsi@vger.kernel.org
2844W: http://www.lsilogic.com/support 3480W: http://www.lsilogic.com/support
2845S: Supported 3481S: Supported
3482F: drivers/message/fusion/
2846 3483
2847LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers 3484LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers
2848P: Matthew Wilcox 3485P: Matthew Wilcox
2849M: matthew@wil.cx 3486M: matthew@wil.cx
2850L: linux-scsi@vger.kernel.org 3487L: linux-scsi@vger.kernel.org
2851S: Maintained 3488S: Maintained
3489F: drivers/scsi/sym53c8xx_2/
2852 3490
2853LTP (Linux Test Project) 3491LTP (Linux Test Project)
2854P: Subrata Modak 3492P: Subrata Modak
@@ -2857,7 +3495,7 @@ P: Mike Frysinger
2857M: vapier@gentoo.org 3495M: vapier@gentoo.org
2858L: ltp-list@lists.sourceforge.net (subscribers-only) 3496L: ltp-list@lists.sourceforge.net (subscribers-only)
2859W: http://ltp.sourceforge.net/ 3497W: http://ltp.sourceforge.net/
2860T: git kernel.org/pub/scm/linux/kernel/git/galak/ltp.git 3498T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
2861S: Maintained 3499S: Maintained
2862 3500
2863M32R ARCHITECTURE 3501M32R ARCHITECTURE
@@ -2867,6 +3505,8 @@ L: linux-m32r@ml.linux-m32r.org
2867L: linux-m32r-ja@ml.linux-m32r.org (in Japanese) 3505L: linux-m32r-ja@ml.linux-m32r.org (in Japanese)
2868W: http://www.linux-m32r.org/ 3506W: http://www.linux-m32r.org/
2869S: Maintained 3507S: Maintained
3508F: arch/m32r/
3509F: include/asm-m32r/
2870 3510
2871M68K ARCHITECTURE 3511M68K ARCHITECTURE
2872P: Geert Uytterhoeven 3512P: Geert Uytterhoeven
@@ -2875,8 +3515,10 @@ P: Roman Zippel
2875M: zippel@linux-m68k.org 3515M: zippel@linux-m68k.org
2876L: linux-m68k@lists.linux-m68k.org 3516L: linux-m68k@lists.linux-m68k.org
2877W: http://www.linux-m68k.org/ 3517W: http://www.linux-m68k.org/
2878T: git git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git 3518T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
2879S: Maintained 3519S: Maintained
3520F: arch/m68k/
3521F: drivers/zorro/
2880 3522
2881M68K ON APPLE MACINTOSH 3523M68K ON APPLE MACINTOSH
2882P: Joshua Thompson 3524P: Joshua Thompson
@@ -2884,20 +3526,25 @@ M: funaho@jurai.org
2884W: http://www.mac.linux-m68k.org/ 3526W: http://www.mac.linux-m68k.org/
2885L: linux-m68k@lists.linux-m68k.org 3527L: linux-m68k@lists.linux-m68k.org
2886S: Maintained 3528S: Maintained
3529F: arch/m68k/mac/
2887 3530
2888M68K ON HP9000/300 3531M68K ON HP9000/300
2889P: Philip Blundell 3532P: Philip Blundell
2890M: philb@gnu.org 3533M: philb@gnu.org
2891W: http://www.tazenda.demon.co.uk/phil/linux-hp 3534W: http://www.tazenda.demon.co.uk/phil/linux-hp
2892S: Maintained 3535S: Maintained
3536F: arch/m68k/hp300/
2893 3537
2894MAC80211 3538MAC80211
2895P: Johannes Berg 3539P: Johannes Berg
2896M: johannes@sipsolutions.net 3540M: johannes@sipsolutions.net
2897L: linux-wireless@vger.kernel.org 3541L: linux-wireless@vger.kernel.org
2898W: http://linuxwireless.org/ 3542W: http://linuxwireless.org/
2899T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 3543T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
2900S: Maintained 3544S: Maintained
3545F: Documentation/networking/mac80211-injection.txt
3546F: include/net/mac80211.h
3547F: net/mac80211/
2901 3548
2902MAC80211 PID RATE CONTROL 3549MAC80211 PID RATE CONTROL
2903P: Stefano Brivio 3550P: Stefano Brivio
@@ -2906,14 +3553,17 @@ P: Mattias Nissler
2906M: mattias.nissler@gmx.de 3553M: mattias.nissler@gmx.de
2907L: linux-wireless@vger.kernel.org 3554L: linux-wireless@vger.kernel.org
2908W: http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID 3555W: http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID
2909T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 3556T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
2910S: Maintained 3557S: Maintained
3558F: net/mac80211/rc80211_pid*
2911 3559
2912MACVLAN DRIVER 3560MACVLAN DRIVER
2913P: Patrick McHardy 3561P: Patrick McHardy
2914M: kaber@trash.net 3562M: kaber@trash.net
2915L: netdev@vger.kernel.org 3563L: netdev@vger.kernel.org
2916S: Maintained 3564S: Maintained
3565F: drivers/net/macvlan.c
3566F: include/linux/if_macvlan.h
2917 3567
2918MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 3568MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
2919P: Michael Kerrisk 3569P: Michael Kerrisk
@@ -2927,12 +3577,15 @@ P: Dan Williams
2927M: dcbw@redhat.com 3577M: dcbw@redhat.com
2928L: libertas-dev@lists.infradead.org 3578L: libertas-dev@lists.infradead.org
2929S: Maintained 3579S: Maintained
3580F: drivers/net/wireless/libertas/
2930 3581
2931MARVELL MV643XX ETHERNET DRIVER 3582MARVELL MV643XX ETHERNET DRIVER
2932P: Lennert Buytenhek 3583P: Lennert Buytenhek
2933M: buytenh@marvell.com 3584M: buytenh@marvell.com
2934L: netdev@vger.kernel.org 3585L: netdev@vger.kernel.org
2935S: Supported 3586S: Supported
3587F: drivers/net/mv643xx_eth.*
3588F: include/linux/mv643xx.h
2936 3589
2937MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER 3590MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
2938P: Nicolas Pitre 3591P: Nicolas Pitre
@@ -2953,12 +3606,31 @@ P: Petr Vandrovec
2953M: vandrove@vc.cvut.cz 3606M: vandrove@vc.cvut.cz
2954L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 3607L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
2955S: Maintained 3608S: Maintained
3609F: drivers/video/matrox/matroxfb_*
3610F: include/linux/matroxfb.h
2956 3611
2957MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER 3612MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
2958P: Hans J. Koch 3613P: Hans J. Koch
2959M: hjk@linutronix.de 3614M: hjk@linutronix.de
2960L: lm-sensors@lm-sensors.org 3615L: lm-sensors@lm-sensors.org
2961S: Maintained 3616S: Maintained
3617F: Documentation/hwmon/max6650
3618F: drivers/hwmon/max6650.c
3619
3620MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
3621P: Mauro Carvalho Chehab
3622M: mchehab@infradead.org
3623P: LinuxTV.org Project
3624L: linux-media@vger.kernel.org
3625W: http://linuxtv.org
3626T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3627S: Maintained
3628F: Documentation/dvb/
3629F: Documentation/video4linux/
3630F: drivers/media/
3631F: include/media/
3632F: include/linux/dvb/
3633F: include/linux/videodev*.h
2962 3634
2963MEGARAID SCSI DRIVERS 3635MEGARAID SCSI DRIVERS
2964P: Neela Syam Kolli 3636P: Neela Syam Kolli
@@ -2966,12 +3638,17 @@ M: megaraidlinux@lsi.com
2966L: linux-scsi@vger.kernel.org 3638L: linux-scsi@vger.kernel.org
2967W: http://megaraid.lsilogic.com 3639W: http://megaraid.lsilogic.com
2968S: Maintained 3640S: Maintained
3641F: Documentation/scsi/megaraid.txt
3642F: drivers/scsi/megaraid.*
3643F: drivers/scsi/megaraid/
2969 3644
2970MEMORY MANAGEMENT 3645MEMORY MANAGEMENT
2971L: linux-mm@kvack.org 3646L: linux-mm@kvack.org
2972L: linux-kernel@vger.kernel.org 3647L: linux-kernel@vger.kernel.org
2973W: http://www.linux-mm.org 3648W: http://www.linux-mm.org
2974S: Maintained 3649S: Maintained
3650F: include/linux/mm.h
3651F: mm/
2975 3652
2976MEMORY RESOURCE CONTROLLER 3653MEMORY RESOURCE CONTROLLER
2977P: Balbir Singh 3654P: Balbir Singh
@@ -2983,6 +3660,7 @@ M: kamezawa.hiroyu@jp.fujitsu.com
2983L: linux-mm@kvack.org 3660L: linux-mm@kvack.org
2984L: linux-kernel@vger.kernel.org 3661L: linux-kernel@vger.kernel.org
2985S: Maintained 3662S: Maintained
3663F: mm/memcontrol.c
2986 3664
2987MEMORY TECHNOLOGY DEVICES (MTD) 3665MEMORY TECHNOLOGY DEVICES (MTD)
2988P: David Woodhouse 3666P: David Woodhouse
@@ -2991,55 +3669,83 @@ W: http://www.linux-mtd.infradead.org/
2991L: linux-mtd@lists.infradead.org 3669L: linux-mtd@lists.infradead.org
2992T: git git://git.infradead.org/mtd-2.6.git 3670T: git git://git.infradead.org/mtd-2.6.git
2993S: Maintained 3671S: Maintained
3672F: drivers/mtd/
3673F: include/linux/mtd/
3674F: include/mtd/
3675
3676MICROBLAZE ARCHITECTURE
3677P: Michal Simek
3678M: monstr@monstr.eu
3679L: microblaze-uclinux@itee.uq.edu.au
3680W: http://www.monstr.eu/fdt/
3681T: git git://git.monstr.eu/linux-2.6-microblaze.git
3682S: Supported
2994 3683
2995MICROTEK X6 SCANNER 3684MICROTEK X6 SCANNER
2996P: Oliver Neukum 3685P: Oliver Neukum
2997M: oliver@neukum.name 3686M: oliver@neukum.name
2998S: Maintained 3687S: Maintained
3688F: drivers/usb/image/microtek.*
2999 3689
3000MIPS 3690MIPS
3001P: Ralf Baechle 3691P: Ralf Baechle
3002M: ralf@linux-mips.org 3692M: ralf@linux-mips.org
3003W: http://www.linux-mips.org/ 3693W: http://www.linux-mips.org/
3004L: linux-mips@linux-mips.org 3694L: linux-mips@linux-mips.org
3005T: git www.linux-mips.org:/pub/scm/linux.git 3695T: git git://git.linux-mips.org/pub/scm/linux.git
3006S: Supported 3696S: Supported
3697F: Documentation/mips/
3698F: arch/mips/
3007 3699
3008MISCELLANEOUS MCA-SUPPORT 3700MISCELLANEOUS MCA-SUPPORT
3009P: James Bottomley 3701P: James Bottomley
3010M: James.Bottomley@HansenPartnership.com 3702M: James.Bottomley@HansenPartnership.com
3011L: linux-kernel@vger.kernel.org 3703L: linux-kernel@vger.kernel.org
3012S: Maintained 3704S: Maintained
3705F: Documentation/ia64/mca.txt
3706F: Documentation/mca.txt
3707F: drivers/mca/
3708F: include/linux/mca*
3013 3709
3014MODULE SUPPORT 3710MODULE SUPPORT
3015P: Rusty Russell 3711P: Rusty Russell
3016M: rusty@rustcorp.com.au 3712M: rusty@rustcorp.com.au
3017L: linux-kernel@vger.kernel.org 3713L: linux-kernel@vger.kernel.org
3018S: Maintained 3714S: Maintained
3715F: include/linux/module.h
3716F: kernel/module.c
3019 3717
3020MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER 3718MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER
3021P: Stelian Pop 3719P: Stelian Pop
3022M: stelian@popies.net 3720M: stelian@popies.net
3023W: http://popies.net/meye/ 3721W: http://popies.net/meye/
3024S: Maintained 3722S: Maintained
3723F: Documentation/video4linux/meye.txt
3724F: drivers/media/video/meye.*
3725F: include/linux/meye.h
3025 3726
3026MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER 3727MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
3027P: Pavel Pisa 3728P: Pavel Pisa
3028M: ppisa@pikron.com 3729M: ppisa@pikron.com
3029L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 3730L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3030S: Maintained 3731S: Maintained
3732F: drivers/mmc/host/imxmmc.*
3031 3733
3032MOUSE AND MISC DEVICES [GENERAL] 3734MOUSE AND MISC DEVICES [GENERAL]
3033P: Alessandro Rubini 3735P: Alessandro Rubini
3034M: rubini@ipvvis.unipv.it 3736M: rubini@ipvvis.unipv.it
3035L: linux-kernel@vger.kernel.org 3737L: linux-kernel@vger.kernel.org
3036S: Maintained 3738S: Maintained
3739F: drivers/input/mouse/
3740F: include/linux/gpio_mouse.h
3037 3741
3038MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD 3742MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD
3039P: Jiri Slaby 3743P: Jiri Slaby
3040M: jirislaby@gmail.com 3744M: jirislaby@gmail.com
3041L: linux-kernel@vger.kernel.org 3745L: linux-kernel@vger.kernel.org
3042S: Maintained 3746S: Maintained
3747F: Documentation/serial/moxa-smartio
3748F: drivers/char/mxser.*
3043 3749
3044MSI LAPTOP SUPPORT 3750MSI LAPTOP SUPPORT
3045P: Lennart Poettering 3751P: Lennart Poettering
@@ -3047,43 +3753,54 @@ M: mzxreary@0pointer.de
3047W: https://tango.0pointer.de/mailman/listinfo/s270-linux 3753W: https://tango.0pointer.de/mailman/listinfo/s270-linux
3048W: http://0pointer.de/lennart/tchibo.html 3754W: http://0pointer.de/lennart/tchibo.html
3049S: Maintained 3755S: Maintained
3756F: drivers/platform/x86/msi-laptop.c
3050 3757
3051MULTIFUNCTION DEVICES (MFD) 3758MULTIFUNCTION DEVICES (MFD)
3052P: Samuel Ortiz 3759P: Samuel Ortiz
3053M: sameo@linux.intel.com 3760M: sameo@linux.intel.com
3054L: linux-kernel@vger.kernel.org 3761L: linux-kernel@vger.kernel.org
3055T: git kernel.org:/pub/scm/linux/kernel/git/sameo/mfd-2.6.git 3762T: git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
3056S: Supported 3763S: Supported
3764F: drivers/mfd/
3057 3765
3058MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM 3766MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
3059P: Pierre Ossman 3767P: Pierre Ossman
3060M: drzeus-mmc@drzeus.cx 3768M: pierre@ossman.eu
3061L: linux-kernel@vger.kernel.org 3769L: linux-kernel@vger.kernel.org
3062S: Maintained 3770S: Maintained
3771F: drivers/mmc/
3772F: include/linux/mmc/
3063 3773
3064MULTIMEDIA CARD (MMC) ETC. OVER SPI 3774MULTIMEDIA CARD (MMC) ETC. OVER SPI
3065P: David Brownell 3775P: David Brownell
3066M: dbrownell@users.sourceforge.net 3776M: dbrownell@users.sourceforge.net
3067L: linux-kernel@vger.kernel.org 3777L: linux-kernel@vger.kernel.org
3068S: Odd Fixes 3778S: Odd Fixes
3779F: drivers/mmc/host/mmc_spi.c
3780F: include/linux/spi/mmc_spi.h
3069 3781
3070MULTISOUND SOUND DRIVER 3782MULTISOUND SOUND DRIVER
3071P: Andrew Veliath 3783P: Andrew Veliath
3072M: andrewtv@usa.net 3784M: andrewtv@usa.net
3073S: Maintained 3785S: Maintained
3786F: Documentation/sound/oss/MultiSound
3787F: sound/oss/msnd*
3074 3788
3075MULTITECH MULTIPORT CARD (ISICOM) 3789MULTITECH MULTIPORT CARD (ISICOM)
3076P: Jiri Slaby 3790P: Jiri Slaby
3077M: jirislaby@gmail.com 3791M: jirislaby@gmail.com
3078L: linux-kernel@vger.kernel.org 3792L: linux-kernel@vger.kernel.org
3079S: Maintained 3793S: Maintained
3794F: drivers/char/isicom.c
3795F: include/linux/isicom.h
3080 3796
3081MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER 3797MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
3082P: Felipe Balbi 3798P: Felipe Balbi
3083M: felipe.balbi@nokia.com 3799M: felipe.balbi@nokia.com
3084L: linux-usb@vger.kernel.org 3800L: linux-usb@vger.kernel.org
3085T: git gitorious.org:/musb/mainline.git 3801T: git git://gitorious.org/musb/mainline.git
3086S: Maintained 3802S: Maintained
3803F: drivers/usb/musb/
3087 3804
3088MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) 3805MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
3089P: Andrew Gallatin 3806P: Andrew Gallatin
@@ -3093,23 +3810,27 @@ M: brice@myri.com
3093L: netdev@vger.kernel.org 3810L: netdev@vger.kernel.org
3094W: http://www.myri.com/scs/download-Myri10GE.html 3811W: http://www.myri.com/scs/download-Myri10GE.html
3095S: Supported 3812S: Supported
3813F: drivers/net/myri10ge/
3096 3814
3097NATSEMI ETHERNET DRIVER (DP8381x) 3815NATSEMI ETHERNET DRIVER (DP8381x)
3098P: Tim Hockin 3816P: Tim Hockin
3099M: thockin@hockin.org 3817M: thockin@hockin.org
3100S: Maintained 3818S: Maintained
3819F: drivers/net/natsemi.c
3101 3820
3102NCP FILESYSTEM 3821NCP FILESYSTEM
3103P: Petr Vandrovec 3822P: Petr Vandrovec
3104M: vandrove@vc.cvut.cz 3823M: vandrove@vc.cvut.cz
3105L: linware@sh.cvut.cz 3824L: linware@sh.cvut.cz
3106S: Maintained 3825S: Maintained
3826F: fs/ncpfs/
3107 3827
3108NCR DUAL 700 SCSI DRIVER (MICROCHANNEL) 3828NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
3109P: James E.J. Bottomley 3829P: James E.J. Bottomley
3110M: James.Bottomley@HansenPartnership.com 3830M: James.Bottomley@HansenPartnership.com
3111L: linux-scsi@vger.kernel.org 3831L: linux-scsi@vger.kernel.org
3112S: Maintained 3832S: Maintained
3833F: drivers/scsi/NCR_D700.*
3113 3834
3114NETEFFECT IWARP RNIC DRIVER (IW_NES) 3835NETEFFECT IWARP RNIC DRIVER (IW_NES)
3115P: Faisal Latif 3836P: Faisal Latif
@@ -3126,6 +3847,7 @@ P: Stephen Hemminger
3126M: shemminger@linux-foundation.org 3847M: shemminger@linux-foundation.org
3127L: netem@lists.linux-foundation.org 3848L: netem@lists.linux-foundation.org
3128S: Maintained 3849S: Maintained
3850F: net/sched/sch_netem.c
3129 3851
3130NETERION (S2IO) 10GbE DRIVER (xframe/vxge) 3852NETERION (S2IO) 10GbE DRIVER (xframe/vxge)
3131P: Ramkrishna Vepa 3853P: Ramkrishna Vepa
@@ -3142,6 +3864,8 @@ L: netdev@vger.kernel.org
3142W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous 3864W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous
3143W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous 3865W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous
3144S: Supported 3866S: Supported
3867F: Documentation/networking/s2io.txt
3868F: drivers/net/s2io*
3145 3869
3146NETFILTER/IPTABLES/IPCHAINS 3870NETFILTER/IPTABLES/IPCHAINS
3147P: Rusty Russell 3871P: Rusty Russell
@@ -3157,6 +3881,12 @@ L: coreteam@netfilter.org
3157W: http://www.netfilter.org/ 3881W: http://www.netfilter.org/
3158W: http://www.iptables.org/ 3882W: http://www.iptables.org/
3159S: Supported 3883S: Supported
3884F: include/linux/netfilter*
3885F: include/linux/netfilter/
3886F: include/net/netfilter/
3887F: net/*/netfilter.c
3888F: net/*/netfilter/
3889F: net/netfilter/
3160 3890
3161NETLABEL 3891NETLABEL
3162P: Paul Moore 3892P: Paul Moore
@@ -3164,6 +3894,9 @@ M: paul.moore@hp.com
3164W: http://netlabel.sf.net 3894W: http://netlabel.sf.net
3165L: netdev@vger.kernel.org 3895L: netdev@vger.kernel.org
3166S: Supported 3896S: Supported
3897F: Documentation/netlabel/
3898F: include/net/netlabel.h
3899F: net/netlabel/
3167 3900
3168NETROM NETWORK LAYER 3901NETROM NETWORK LAYER
3169P: Ralf Baechle 3902P: Ralf Baechle
@@ -3171,11 +3904,17 @@ M: ralf@linux-mips.org
3171L: linux-hams@vger.kernel.org 3904L: linux-hams@vger.kernel.org
3172W: http://www.linux-ax25.org/ 3905W: http://www.linux-ax25.org/
3173S: Maintained 3906S: Maintained
3907F: include/linux/netrom.h
3908F: include/net/netrom.h
3909F: net/netrom/
3174 3910
3175NETWORK BLOCK DEVICE (NBD) 3911NETWORK BLOCK DEVICE (NBD)
3176P: Paul Clements 3912P: Paul Clements
3177M: Paul.Clements@steeleye.com 3913M: Paul.Clements@steeleye.com
3178S: Maintained 3914S: Maintained
3915F: Documentation/blockdev/nbd.txt
3916F: drivers/block/nbd.c
3917F: include/linux/nbd.h
3179 3918
3180NETWORKING [GENERAL] 3919NETWORKING [GENERAL]
3181P: David S. Miller 3920P: David S. Miller
@@ -3184,6 +3923,8 @@ L: netdev@vger.kernel.org
3184W: http://linux-net.osdl.org/ 3923W: http://linux-net.osdl.org/
3185T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git 3924T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git
3186S: Maintained 3925S: Maintained
3926F: net/
3927F: include/net/
3187 3928
3188NETWORKING [IPv4/IPv6] 3929NETWORKING [IPv4/IPv6]
3189P: David S. Miller 3930P: David S. Miller
@@ -3199,8 +3940,11 @@ M: yoshfuji@linux-ipv6.org
3199P: Patrick McHardy 3940P: Patrick McHardy
3200M: kaber@trash.net 3941M: kaber@trash.net
3201L: netdev@vger.kernel.org 3942L: netdev@vger.kernel.org
3202T: git kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git 3943T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
3203S: Maintained 3944S: Maintained
3945F: net/ipv4/
3946F: net/ipv6/
3947F: include/net/ip*
3204 3948
3205NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) 3949NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
3206P: Paul Moore 3950P: Paul Moore
@@ -3212,8 +3956,11 @@ NETWORKING [WIRELESS]
3212P: John W. Linville 3956P: John W. Linville
3213M: linville@tuxdriver.com 3957M: linville@tuxdriver.com
3214L: linux-wireless@vger.kernel.org 3958L: linux-wireless@vger.kernel.org
3215T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git 3959T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
3216S: Maintained 3960S: Maintained
3961F: net/wireless/
3962F: include/net/ieee80211*
3963F: include/net/wireless.h
3217 3964
3218NETXEN (1/10) GbE SUPPORT 3965NETXEN (1/10) GbE SUPPORT
3219P: Dhananjay Phadke 3966P: Dhananjay Phadke
@@ -3221,6 +3968,7 @@ M: dhananjay@netxen.com
3221L: netdev@vger.kernel.org 3968L: netdev@vger.kernel.org
3222W: http://www.netxen.com 3969W: http://www.netxen.com
3223S: Supported 3970S: Supported
3971F: drivers/net/netxen/
3224 3972
3225NFS, SUNRPC, AND LOCKD CLIENTS 3973NFS, SUNRPC, AND LOCKD CLIENTS
3226P: Trond Myklebust 3974P: Trond Myklebust
@@ -3229,6 +3977,13 @@ L: linux-nfs@vger.kernel.org
3229W: http://client.linux-nfs.org 3977W: http://client.linux-nfs.org
3230T: git git://git.linux-nfs.org/pub/linux/nfs-2.6.git 3978T: git git://git.linux-nfs.org/pub/linux/nfs-2.6.git
3231S: Maintained 3979S: Maintained
3980F: fs/lockd/
3981F: fs/nfs/
3982F: fs/nfs_common/
3983F: net/sunrpc/
3984F: include/linux/lockd/
3985F: include/linux/nfs*
3986F: include/linux/sunrpc/
3232 3987
3233NI5010 NETWORK DRIVER 3988NI5010 NETWORK DRIVER
3234P: Jan-Pascal van Best 3989P: Jan-Pascal van Best
@@ -3237,6 +3992,7 @@ P: Andreas Mohr
3237M: andi@lisas.de 3992M: andi@lisas.de
3238L: netdev@vger.kernel.org 3993L: netdev@vger.kernel.org
3239S: Maintained 3994S: Maintained
3995F: drivers/net/ni5010.*
3240 3996
3241NILFS2 FILESYSTEM 3997NILFS2 FILESYSTEM
3242P: KONISHI Ryusuke 3998P: KONISHI Ryusuke
@@ -3244,12 +4000,17 @@ M: konishi.ryusuke@lab.ntt.co.jp
3244L: users@nilfs.org 4000L: users@nilfs.org
3245W: http://www.nilfs.org/en/ 4001W: http://www.nilfs.org/en/
3246S: Supported 4002S: Supported
4003F: Documentation/filesystems/nilfs2.txt
4004F: fs/nilfs2/
4005F: include/linux/nilfs2_fs.h
3247 4006
3248NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER 4007NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
3249P: YOKOTA Hiroshi 4008P: YOKOTA Hiroshi
3250M: yokota@netlab.is.tsukuba.ac.jp 4009M: yokota@netlab.is.tsukuba.ac.jp
3251W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 4010W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
3252S: Maintained 4011S: Maintained
4012F: Documentation/scsi/NinjaSCSI.txt
4013F: drivers/scsi/pcmcia/nsp_*
3253 4014
3254NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER 4015NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER
3255P: GOTO Masanori 4016P: GOTO Masanori
@@ -3258,6 +4019,8 @@ P: YOKOTA Hiroshi
3258M: yokota@netlab.is.tsukuba.ac.jp 4019M: yokota@netlab.is.tsukuba.ac.jp
3259W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 4020W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/
3260S: Maintained 4021S: Maintained
4022F: Documentation/scsi/NinjaSCSI.txt
4023F: drivers/scsi/nsp32*
3261 4024
3262NTFS FILESYSTEM 4025NTFS FILESYSTEM
3263P: Anton Altaparmakov 4026P: Anton Altaparmakov
@@ -3265,43 +4028,55 @@ M: aia21@cantab.net
3265L: linux-ntfs-dev@lists.sourceforge.net 4028L: linux-ntfs-dev@lists.sourceforge.net
3266L: linux-kernel@vger.kernel.org 4029L: linux-kernel@vger.kernel.org
3267W: http://www.linux-ntfs.org/ 4030W: http://www.linux-ntfs.org/
3268T: git kernel.org:/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git 4031T: git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
3269S: Maintained 4032S: Maintained
4033F: Documentation/filesystems/ntfs.txt
4034F: fs/ntfs/
3270 4035
3271NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER 4036NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
3272P: Antonino Daplas 4037P: Antonino Daplas
3273M: adaplas@gmail.com 4038M: adaplas@gmail.com
3274L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4039L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3275S: Maintained 4040S: Maintained
4041F: drivers/video/riva/
4042F: drivers/video/nvidia/
3276 4043
3277OMFS FILESYSTEM 4044OMFS FILESYSTEM
3278P: Bob Copeland 4045P: Bob Copeland
3279M: me@bobcopeland.com 4046M: me@bobcopeland.com
3280L: linux-karma-devel@lists.sourceforge.net 4047L: linux-karma-devel@lists.sourceforge.net
3281S: Maintained 4048S: Maintained
4049F: Documentation/filesystems/omfs.txt
4050F: fs/omfs/
3282 4051
3283OMNIKEY CARDMAN 4000 DRIVER 4052OMNIKEY CARDMAN 4000 DRIVER
3284P: Harald Welte 4053P: Harald Welte
3285M: laforge@gnumonks.org 4054M: laforge@gnumonks.org
3286S: Maintained 4055S: Maintained
4056F: drivers/char/pcmcia/cm4000_cs.c
4057F: include/linux/cm4000_cs.h
3287 4058
3288OMNIKEY CARDMAN 4040 DRIVER 4059OMNIKEY CARDMAN 4040 DRIVER
3289P: Harald Welte 4060P: Harald Welte
3290M: laforge@gnumonks.org 4061M: laforge@gnumonks.org
3291S: Maintained 4062S: Maintained
4063F: drivers/char/pcmcia/cm4040_cs.*
3292 4064
3293OMNIVISION OV7670 SENSOR DRIVER 4065OMNIVISION OV7670 SENSOR DRIVER
3294P: Jonathan Corbet 4066P: Jonathan Corbet
3295M: corbet@lwn.net 4067M: corbet@lwn.net
3296L: linux-media@vger.kernel.org 4068L: linux-media@vger.kernel.org
3297T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4069T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3298S: Maintained 4070S: Maintained
4071F: drivers/media/video/ov7670.c
3299 4072
3300ONENAND FLASH DRIVER 4073ONENAND FLASH DRIVER
3301P: Kyungmin Park 4074P: Kyungmin Park
3302M: kyungmin.park@samsung.com 4075M: kyungmin.park@samsung.com
3303L: linux-mtd@lists.infradead.org 4076L: linux-mtd@lists.infradead.org
3304S: Maintained 4077S: Maintained
4078F: drivers/mtd/onenand/
4079F: include/linux/mtd/onenand*.h
3305 4080
3306ONSTREAM SCSI TAPE DRIVER 4081ONSTREAM SCSI TAPE DRIVER
3307P: Willem Riede 4082P: Willem Riede
@@ -3309,18 +4084,25 @@ M: osst@riede.org
3309L: osst-users@lists.sourceforge.net 4084L: osst-users@lists.sourceforge.net
3310L: linux-scsi@vger.kernel.org 4085L: linux-scsi@vger.kernel.org
3311S: Maintained 4086S: Maintained
4087F: drivers/scsi/osst*
4088F: drivers/scsi/st*
3312 4089
3313OPENCORES I2C BUS DRIVER 4090OPENCORES I2C BUS DRIVER
3314P: Peter Korsgaard 4091P: Peter Korsgaard
3315M: jacmet@sunsite.dk 4092M: jacmet@sunsite.dk
3316L: linux-i2c@vger.kernel.org 4093L: linux-i2c@vger.kernel.org
3317S: Maintained 4094S: Maintained
4095F: Documentation/i2c/busses/i2c-ocores
4096F: drivers/i2c/busses/i2c-ocores.c
3318 4097
3319OPROFILE 4098OPROFILE
3320P: Robert Richter 4099P: Robert Richter
3321M: robert.richter@amd.com 4100M: robert.richter@amd.com
3322L: oprofile-list@lists.sf.net 4101L: oprofile-list@lists.sf.net
3323S: Maintained 4102S: Maintained
4103F: arch/*/oprofile/
4104F: drivers/oprofile/
4105F: include/linux/oprofile.h
3324 4106
3325ORACLE CLUSTER FILESYSTEM 2 (OCFS2) 4107ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
3326P: Mark Fasheh 4108P: Mark Fasheh
@@ -3331,6 +4113,9 @@ L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
3331W: http://oss.oracle.com/projects/ocfs2/ 4113W: http://oss.oracle.com/projects/ocfs2/
3332T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git 4114T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
3333S: Supported 4115S: Supported
4116F: Documentation/filesystems/ocfs2.txt
4117F: Documentation/filesystems/dlmfs.txt
4118F: fs/ocfs2/
3334 4119
3335ORINOCO DRIVER 4120ORINOCO DRIVER
3336P: Pavel Roskin 4121P: Pavel Roskin
@@ -3342,6 +4127,7 @@ L: orinoco-users@lists.sourceforge.net
3342L: orinoco-devel@lists.sourceforge.net 4127L: orinoco-devel@lists.sourceforge.net
3343W: http://www.nongnu.org/orinoco/ 4128W: http://www.nongnu.org/orinoco/
3344S: Maintained 4129S: Maintained
4130F: drivers/net/wireless/orinoco/
3345 4131
3346OSD LIBRARY 4132OSD LIBRARY
3347P: Boaz Harrosh 4133P: Boaz Harrosh
@@ -3350,7 +4136,7 @@ P: Benny Halevy
3350M: bhalevy@panasas.com 4136M: bhalevy@panasas.com
3351L: osd-dev@open-osd.org 4137L: osd-dev@open-osd.org
3352W: http://open-osd.org 4138W: http://open-osd.org
3353T: git://git.open-osd.org/open-osd.git 4139T: git git://git.open-osd.org/open-osd.git
3354S: Maintained 4140S: Maintained
3355 4141
3356P54 WIRELESS DRIVER 4142P54 WIRELESS DRIVER
@@ -3358,25 +4144,29 @@ P: Michael Wu
3358M: flamingice@sourmilk.net 4144M: flamingice@sourmilk.net
3359L: linux-wireless@vger.kernel.org 4145L: linux-wireless@vger.kernel.org
3360W: http://prism54.org 4146W: http://prism54.org
3361T: git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git 4147T: git git://git.kernel.org/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
3362S: Maintained 4148S: Maintained
4149F: drivers/net/wireless/p54/
3363 4150
3364PA SEMI ETHERNET DRIVER 4151PA SEMI ETHERNET DRIVER
3365P: Olof Johansson 4152P: Olof Johansson
3366M: olof@lixom.net 4153M: olof@lixom.net
3367L: netdev@vger.kernel.org 4154L: netdev@vger.kernel.org
3368S: Maintained 4155S: Maintained
4156F: drivers/net/pasemi_mac.*
3369 4157
3370PA SEMI SMBUS DRIVER 4158PA SEMI SMBUS DRIVER
3371P: Olof Johansson 4159P: Olof Johansson
3372M: olof@lixom.net 4160M: olof@lixom.net
3373L: linux-i2c@vger.kernel.org 4161L: linux-i2c@vger.kernel.org
3374S: Maintained 4162S: Maintained
4163F: drivers/i2c/busses/i2c-pasemi.c
3375 4164
3376PANASONIC LAPTOP ACPI EXTRAS DRIVER 4165PANASONIC LAPTOP ACPI EXTRAS DRIVER
3377P: Harald Welte 4166P: Harald Welte
3378M: laforge@gnumonks.org 4167M: laforge@gnumonks.org
3379S: Maintained 4168S: Maintained
4169F: drivers/platform/x86/panasonic-laptop.c
3380 4170
3381PANASONIC MN10300/AM33 PORT 4171PANASONIC MN10300/AM33 PORT
3382P: David Howells 4172P: David Howells
@@ -3386,10 +4176,16 @@ M: yasutake.koichi@jp.panasonic.com
3386L: linux-am33-list@redhat.com (moderated for non-subscribers) 4176L: linux-am33-list@redhat.com (moderated for non-subscribers)
3387W: ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/ 4177W: ftp://ftp.redhat.com/pub/redhat/gnupro/AM33/
3388S: Maintained 4178S: Maintained
4179F: Documentation/mn10300/
4180F: arch/mn10300/
3389 4181
3390PARALLEL PORT SUPPORT 4182PARALLEL PORT SUPPORT
3391L: linux-parport@lists.infradead.org (subscribers-only) 4183L: linux-parport@lists.infradead.org (subscribers-only)
3392S: Orphan 4184S: Orphan
4185F: drivers/parport/
4186F: include/linux/parport*.h
4187F: drivers/char/ppdev.c
4188F: include/linux/ppdev.h
3393 4189
3394PARAVIRT_OPS INTERFACE 4190PARAVIRT_OPS INTERFACE
3395P: Jeremy Fitzhardinge 4191P: Jeremy Fitzhardinge
@@ -3403,6 +4199,9 @@ M: rusty@rustcorp.com.au
3403L: virtualization@lists.osdl.org 4199L: virtualization@lists.osdl.org
3404L: linux-kernel@vger.kernel.org 4200L: linux-kernel@vger.kernel.org
3405S: Supported 4201S: Supported
4202F: Documentation/ia64/paravirt_ops.txt
4203F: arch/*/kernel/paravirt*
4204F: arch/*/include/asm/paravirt.h
3406 4205
3407PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES 4206PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
3408P: Tim Waugh 4207P: Tim Waugh
@@ -3410,6 +4209,8 @@ M: tim@cyberelk.net
3410L: linux-parport@lists.infradead.org (subscribers-only) 4209L: linux-parport@lists.infradead.org (subscribers-only)
3411W: http://www.torque.net/linux-pp.html 4210W: http://www.torque.net/linux-pp.html
3412S: Maintained 4211S: Maintained
4212F: Documentation/blockdev/paride.txt
4213F: drivers/block/paride/
3413 4214
3414PARISC ARCHITECTURE 4215PARISC ARCHITECTURE
3415P: Kyle McMartin 4216P: Kyle McMartin
@@ -3418,24 +4219,31 @@ P: Helge Deller
3418M: deller@gmx.de 4219M: deller@gmx.de
3419L: linux-parisc@vger.kernel.org 4220L: linux-parisc@vger.kernel.org
3420W: http://www.parisc-linux.org/ 4221W: http://www.parisc-linux.org/
3421T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git 4222T: git git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
3422S: Maintained 4223S: Maintained
4224F: arch/parisc/
4225F: drivers/parisc/
3423 4226
3424PC87360 HARDWARE MONITORING DRIVER 4227PC87360 HARDWARE MONITORING DRIVER
3425P: Jim Cromie 4228P: Jim Cromie
3426M: jim.cromie@gmail.com 4229M: jim.cromie@gmail.com
3427L: lm-sensors@lm-sensors.org 4230L: lm-sensors@lm-sensors.org
3428S: Maintained 4231S: Maintained
4232F: Documentation/hwmon/pc87360
4233F: drivers/hwmon/pc87360.c
3429 4234
3430PC8736x GPIO DRIVER 4235PC8736x GPIO DRIVER
3431P: Jim Cromie 4236P: Jim Cromie
3432M: jim.cromie@gmail.com 4237M: jim.cromie@gmail.com
3433S: Maintained 4238S: Maintained
4239F: drivers/char/pc8736x_gpio.c
3434 4240
3435PCA9532 LED DRIVER 4241PCA9532 LED DRIVER
3436P: Riku Voipio 4242P: Riku Voipio
3437M: riku.voipio@iki.fi 4243M: riku.voipio@iki.fi
3438S: Maintained 4244S: Maintained
4245F: drivers/leds/leds-pca9532.c
4246F: include/linux/leds-pca9532.h
3439 4247
3440PCI ERROR RECOVERY 4248PCI ERROR RECOVERY
3441P: Linas Vepstas 4249P: Linas Vepstas
@@ -3443,63 +4251,82 @@ M: linas@austin.ibm.com
3443L: linux-kernel@vger.kernel.org 4251L: linux-kernel@vger.kernel.org
3444L: linux-pci@vger.kernel.org 4252L: linux-pci@vger.kernel.org
3445S: Supported 4253S: Supported
4254F: Documentation/PCI/pci-error-recovery.txt
4255F: Documentation/powerpc/eeh-pci-error-recovery.txt
3446 4256
3447PCI SUBSYSTEM 4257PCI SUBSYSTEM
3448P: Jesse Barnes 4258P: Jesse Barnes
3449M: jbarnes@virtuousgeek.org 4259M: jbarnes@virtuousgeek.org
3450L: linux-kernel@vger.kernel.org 4260L: linux-kernel@vger.kernel.org
3451L: linux-pci@vger.kernel.org 4261L: linux-pci@vger.kernel.org
3452T: git kernel.org:/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git 4262T: git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
3453S: Supported 4263S: Supported
4264F: Documentation/PCI/
4265F: drivers/pci/
4266F: include/linux/pci*
3454 4267
3455PCIE HOTPLUG DRIVER 4268PCIE HOTPLUG DRIVER
3456P: Kristen Carlson Accardi 4269P: Kristen Carlson Accardi
3457M: kristen.c.accardi@intel.com 4270M: kristen.c.accardi@intel.com
3458L: linux-pci@vger.kernel.org 4271L: linux-pci@vger.kernel.org
3459S: Supported 4272S: Supported
4273F: drivers/pci/pcie/
3460 4274
3461PCMCIA SUBSYSTEM 4275PCMCIA SUBSYSTEM
3462P: Linux PCMCIA Team 4276P: Linux PCMCIA Team
3463L: linux-pcmcia@lists.infradead.org 4277L: linux-pcmcia@lists.infradead.org
3464W: http://lists.infradead.org/mailman/listinfo/linux-pcmcia 4278W: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
3465T: git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git 4279T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
3466S: Maintained 4280S: Maintained
4281F: Documentation/pcmcia/
4282F: drivers/pcmcia/
4283F: include/pcmcia/
3467 4284
3468PCNET32 NETWORK DRIVER 4285PCNET32 NETWORK DRIVER
3469P: Don Fry 4286P: Don Fry
3470M: pcnet32@verizon.net 4287M: pcnet32@verizon.net
3471L: netdev@vger.kernel.org 4288L: netdev@vger.kernel.org
3472S: Maintained 4289S: Maintained
4290F: drivers/net/pcnet32.c
3473 4291
3474PER-TASK DELAY ACCOUNTING 4292PER-TASK DELAY ACCOUNTING
3475P: Balbir Singh 4293P: Balbir Singh
3476M: balbir@linux.vnet.ibm.com 4294M: balbir@linux.vnet.ibm.com
3477L: linux-kernel@vger.kernel.org 4295L: linux-kernel@vger.kernel.org
3478S: Maintained 4296S: Maintained
4297F: include/linux/delayacct.h
4298F: kernel/delayacct.c
3479 4299
3480PERSONALITY HANDLING 4300PERSONALITY HANDLING
3481P: Christoph Hellwig 4301P: Christoph Hellwig
3482M: hch@infradead.org 4302M: hch@infradead.org
3483L: linux-abi-devel@lists.sourceforge.net 4303L: linux-abi-devel@lists.sourceforge.net
3484S: Maintained 4304S: Maintained
4305F: include/linux/personality.h
3485 4306
3486PHRAM MTD DRIVER 4307PHRAM MTD DRIVER
3487P: Joern Engel 4308P: Joern Engel
3488M: joern@lazybastard.org 4309M: joern@lazybastard.org
3489L: linux-mtd@lists.infradead.org 4310L: linux-mtd@lists.infradead.org
3490S: Maintained 4311S: Maintained
4312F: drivers/mtd/devices/phram.c
3491 4313
3492PKTCDVD DRIVER 4314PKTCDVD DRIVER
3493P: Peter Osterlund 4315P: Peter Osterlund
3494M: petero2@telia.com 4316M: petero2@telia.com
3495L: linux-kernel@vger.kernel.org 4317L: linux-kernel@vger.kernel.org
3496S: Maintained 4318S: Maintained
4319F: drivers/block/pktcdvd.c
4320F: include/linux/pktcdvd.h
3497 4321
3498POSIX CLOCKS and TIMERS 4322POSIX CLOCKS and TIMERS
3499P: Thomas Gleixner 4323P: Thomas Gleixner
3500M: tglx@linutronix.de 4324M: tglx@linutronix.de
3501L: linux-kernel@vger.kernel.org 4325L: linux-kernel@vger.kernel.org
3502S: Supported 4326S: Supported
4327F: fs/timerfd.c
4328F: include/linux/timer*
4329F: kernel/*timer*
3503 4330
3504POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS 4331POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
3505P: Anton Vorontsov 4332P: Anton Vorontsov
@@ -3507,8 +4334,10 @@ M: cbou@mail.ru
3507P: David Woodhouse 4334P: David Woodhouse
3508M: dwmw2@infradead.org 4335M: dwmw2@infradead.org
3509L: linux-kernel@vger.kernel.org 4336L: linux-kernel@vger.kernel.org
3510T: git git.infradead.org/battery-2.6.git 4337T: git git://git.infradead.org/battery-2.6.git
3511S: Maintained 4338S: Maintained
4339F: include/linux/power_supply.h
4340F: drivers/power/power_supply*
3512 4341
3513PNP SUPPORT 4342PNP SUPPORT
3514P: Adam Belay 4343P: Adam Belay
@@ -3516,33 +4345,42 @@ M: abelay@mit.edu
3516P: Bjorn Helgaas 4345P: Bjorn Helgaas
3517M: bjorn.helgaas@hp.com 4346M: bjorn.helgaas@hp.com
3518S: Maintained 4347S: Maintained
4348F: drivers/pnp/
3519 4349
3520PNXxxxx I2C DRIVER 4350PNXxxxx I2C DRIVER
3521P: Vitaly Wool 4351P: Vitaly Wool
3522M: vitalywool@gmail.com 4352M: vitalywool@gmail.com
3523L: linux-i2c@vger.kernel.org 4353L: linux-i2c@vger.kernel.org
3524S: Maintained 4354S: Maintained
4355F: drivers/i2c/busses/i2c-pnx.c
3525 4356
3526PPP PROTOCOL DRIVERS AND COMPRESSORS 4357PPP PROTOCOL DRIVERS AND COMPRESSORS
3527P: Paul Mackerras 4358P: Paul Mackerras
3528M: paulus@samba.org 4359M: paulus@samba.org
3529L: linux-ppp@vger.kernel.org 4360L: linux-ppp@vger.kernel.org
3530S: Maintained 4361S: Maintained
4362F: drivers/net/ppp_*
3531 4363
3532PPP OVER ATM (RFC 2364) 4364PPP OVER ATM (RFC 2364)
3533P: Mitchell Blank Jr 4365P: Mitchell Blank Jr
3534M: mitch@sfgoth.com 4366M: mitch@sfgoth.com
3535S: Maintained 4367S: Maintained
4368F: net/atm/pppoatm.c
4369F: include/linux/atmppp.h
3536 4370
3537PPP OVER ETHERNET 4371PPP OVER ETHERNET
3538P: Michal Ostrowski 4372P: Michal Ostrowski
3539M: mostrows@earthlink.net 4373M: mostrows@earthlink.net
3540S: Maintained 4374S: Maintained
4375F: drivers/net/pppoe.c
4376F: drivers/net/pppox.c
3541 4377
3542PPP OVER L2TP 4378PPP OVER L2TP
3543P: James Chapman 4379P: James Chapman
3544M: jchapman@katalix.com 4380M: jchapman@katalix.com
3545S: Maintained 4381S: Maintained
4382F: drivers/net/pppol2tp.c
4383F: include/linux/if_pppol2tp.h
3546 4384
3547PREEMPTIBLE KERNEL 4385PREEMPTIBLE KERNEL
3548P: Robert Love 4386P: Robert Love
@@ -3551,6 +4389,8 @@ L: linux-kernel@vger.kernel.org
3551L: kpreempt-tech@lists.sourceforge.net 4389L: kpreempt-tech@lists.sourceforge.net
3552W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel 4390W: ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
3553S: Supported 4391S: Supported
4392F: Documentation/preempt-locking.txt
4393F: include/linux/preempt.h
3554 4394
3555PRISM54 WIRELESS DRIVER 4395PRISM54 WIRELESS DRIVER
3556P: Luis R. Rodriguez 4396P: Luis R. Rodriguez
@@ -3558,6 +4398,7 @@ M: mcgrof@gmail.com
3558L: linux-wireless@vger.kernel.org 4398L: linux-wireless@vger.kernel.org
3559W: http://prism54.org 4399W: http://prism54.org
3560S: Maintained 4400S: Maintained
4401F: drivers/net/wireless/prism54/
3561 4402
3562PROMISE DC4030 CACHING DISK CONTROLLER DRIVER 4403PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
3563P: Peter Denison 4404P: Peter Denison
@@ -3570,6 +4411,7 @@ P: Mikael Pettersson
3570M: mikpe@it.uu.se 4411M: mikpe@it.uu.se
3571L: linux-ide@vger.kernel.org 4412L: linux-ide@vger.kernel.org
3572S: Maintained 4413S: Maintained
4414F: drivers/ata/sata_promise.*
3573 4415
3574PS3 NETWORK SUPPORT 4416PS3 NETWORK SUPPORT
3575P: Masakazu Mokuno 4417P: Masakazu Mokuno
@@ -3577,6 +4419,7 @@ M: mokuno@sm.sony.co.jp
3577L: netdev@vger.kernel.org 4419L: netdev@vger.kernel.org
3578L: cbe-oss-dev@ozlabs.org 4420L: cbe-oss-dev@ozlabs.org
3579S: Supported 4421S: Supported
4422F: drivers/net/ps3_gelic_net.*
3580 4423
3581PS3 PLATFORM SUPPORT 4424PS3 PLATFORM SUPPORT
3582P: Geoff Levand 4425P: Geoff Levand
@@ -3584,6 +4427,13 @@ M: geoffrey.levand@am.sony.com
3584L: linuxppc-dev@ozlabs.org 4427L: linuxppc-dev@ozlabs.org
3585L: cbe-oss-dev@ozlabs.org 4428L: cbe-oss-dev@ozlabs.org
3586S: Supported 4429S: Supported
4430F: arch/powerpc/boot/ps3*
4431F: arch/powerpc/include/asm/lv1call.h
4432F: arch/powerpc/include/asm/ps3*.h
4433F: arch/powerpc/platforms/ps3/
4434F: drivers/*/ps3*
4435F: drivers/ps3/
4436F: drivers/usb/host/*ps3.c
3587 4437
3588PS3VRAM DRIVER 4438PS3VRAM DRIVER
3589P: Jim Paris 4439P: Jim Paris
@@ -3597,8 +4447,10 @@ M: isely@pobox.com
3597L: pvrusb2@isely.net (subscribers-only) 4447L: pvrusb2@isely.net (subscribers-only)
3598L: linux-media@vger.kernel.org 4448L: linux-media@vger.kernel.org
3599W: http://www.isely.net/pvrusb2/ 4449W: http://www.isely.net/pvrusb2/
3600T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4450T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3601S: Maintained 4451S: Maintained
4452F: Documentation/video4linux/README.pvrusb2
4453F: drivers/media/video/pvrusb2/
3602 4454
3603PXA2xx/PXA3xx SUPPORT 4455PXA2xx/PXA3xx SUPPORT
3604P: Eric Miao 4456P: Eric Miao
@@ -3607,6 +4459,12 @@ P: Russell King
3607M: linux@arm.linux.org.uk 4459M: linux@arm.linux.org.uk
3608L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4460L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3609S: Maintained 4461S: Maintained
4462F: arch/arm/mach-pxa/
4463F: drivers/pcmcia/pxa2xx*
4464F: drivers/spi/pxa2xx*
4465F: drivers/usb/gadget/pxa2*
4466F: include/sound/pxa2xx-lib.h
4467F: sound/soc/pxa/pxa2xx*
3610 4468
3611PXA168 SUPPORT 4469PXA168 SUPPORT
3612P: Eric Miao 4470P: Eric Miao
@@ -3614,14 +4472,14 @@ M: eric.miao@marvell.com
3614P: Jason Chagas 4472P: Jason Chagas
3615M: jason.chagas@marvell.com 4473M: jason.chagas@marvell.com
3616L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4474L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3617T: git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git 4475T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
3618S: Supported 4476S: Supported
3619 4477
3620PXA910 SUPPORT 4478PXA910 SUPPORT
3621P: Eric Miao 4479P: Eric Miao
3622M: eric.miao@marvell.com 4480M: eric.miao@marvell.com
3623L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4481L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3624T: git kernel.org:/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git 4482T: git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
3625S: Supported 4483S: Supported
3626 4484
3627PXA MMCI DRIVER 4485PXA MMCI DRIVER
@@ -3638,12 +4496,16 @@ P: Andrew Vasquez
3638M: linux-driver@qlogic.com 4496M: linux-driver@qlogic.com
3639L: linux-scsi@vger.kernel.org 4497L: linux-scsi@vger.kernel.org
3640S: Supported 4498S: Supported
4499F: Documentation/scsi/LICENSE.qla2xxx
4500F: drivers/scsi/qla2xxx/
3641 4501
3642QLOGIC QLA3XXX NETWORK DRIVER 4502QLOGIC QLA3XXX NETWORK DRIVER
3643P: Ron Mercer 4503P: Ron Mercer
3644M: linux-driver@qlogic.com 4504M: linux-driver@qlogic.com
3645L: netdev@vger.kernel.org 4505L: netdev@vger.kernel.org
3646S: Supported 4506S: Supported
4507F: Documentation/networking/LICENSE.qla3xxx
4508F: drivers/net/qla3xxx.*
3647 4509
3648QLOGIC QLGE 10Gb ETHERNET DRIVER 4510QLOGIC QLGE 10Gb ETHERNET DRIVER
3649P: Ron Mercer 4511P: Ron Mercer
@@ -3651,6 +4513,7 @@ M: linux-driver@qlogic.com
3651M: ron.mercer@qlogic.com 4513M: ron.mercer@qlogic.com
3652L: netdev@vger.kernel.org 4514L: netdev@vger.kernel.org
3653S: Supported 4515S: Supported
4516F: drivers/net/qlge/
3654 4517
3655QNX4 FILESYSTEM 4518QNX4 FILESYSTEM
3656P: Anders Larsen 4519P: Anders Larsen
@@ -3658,18 +4521,24 @@ M: al@alarsen.net
3658L: linux-kernel@vger.kernel.org 4521L: linux-kernel@vger.kernel.org
3659W: http://www.alarsen.net/linux/qnx4fs/ 4522W: http://www.alarsen.net/linux/qnx4fs/
3660S: Maintained 4523S: Maintained
4524F: fs/qnx4/
4525F: include/linux/qnx4_fs.h
4526F: include/linux/qnxtypes.h
3661 4527
3662RADEON FRAMEBUFFER DISPLAY DRIVER 4528RADEON FRAMEBUFFER DISPLAY DRIVER
3663P: Benjamin Herrenschmidt 4529P: Benjamin Herrenschmidt
3664M: benh@kernel.crashing.org 4530M: benh@kernel.crashing.org
3665L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4531L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3666S: Maintained 4532S: Maintained
4533F: drivers/video/aty/radeon*
4534F: include/linux/radeonfb.h
3667 4535
3668RAGE128 FRAMEBUFFER DISPLAY DRIVER 4536RAGE128 FRAMEBUFFER DISPLAY DRIVER
3669P: Paul Mackerras 4537P: Paul Mackerras
3670M: paulus@samba.org 4538M: paulus@samba.org
3671L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4539L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3672S: Maintained 4540S: Maintained
4541F: drivers/video/aty/aty128fb.c
3673 4542
3674RALINK RT2X00 WIRELESS LAN DRIVER 4543RALINK RT2X00 WIRELESS LAN DRIVER
3675P: rt2x00 project 4544P: rt2x00 project
@@ -3677,36 +4546,43 @@ L: linux-wireless@vger.kernel.org
3677L: users@rt2x00.serialmonkey.com 4546L: users@rt2x00.serialmonkey.com
3678W: http://rt2x00.serialmonkey.com/ 4547W: http://rt2x00.serialmonkey.com/
3679S: Maintained 4548S: Maintained
3680T: git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git 4549T: git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git
3681F: drivers/net/wireless/rt2x00/ 4550F: drivers/net/wireless/rt2x00/
3682 4551
3683RAMDISK RAM BLOCK DEVICE DRIVER 4552RAMDISK RAM BLOCK DEVICE DRIVER
3684P: Nick Piggin 4553P: Nick Piggin
3685M: npiggin@suse.de 4554M: npiggin@suse.de
3686S: Maintained 4555S: Maintained
4556F: Documentation/blockdev/ramdisk.txt
4557F: drivers/block/brd.c
3687 4558
3688RANDOM NUMBER DRIVER 4559RANDOM NUMBER DRIVER
3689P: Matt Mackall 4560P: Matt Mackall
3690M: mpm@selenic.com 4561M: mpm@selenic.com
3691S: Maintained 4562S: Maintained
4563F: drivers/char/random.c
3692 4564
3693RAPIDIO SUBSYSTEM 4565RAPIDIO SUBSYSTEM
3694P: Matt Porter 4566P: Matt Porter
3695M: mporter@kernel.crashing.org 4567M: mporter@kernel.crashing.org
3696L: linux-kernel@vger.kernel.org 4568L: linux-kernel@vger.kernel.org
3697S: Maintained 4569S: Maintained
4570F: drivers/rapidio/
3698 4571
3699RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER 4572RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
3700P: Corey Thomas 4573P: Corey Thomas
3701M: coreythomas@charter.net 4574M: coreythomas@charter.net
3702L: linux-wireless@vger.kernel.org 4575L: linux-wireless@vger.kernel.org
3703S: Maintained 4576S: Maintained
4577F: drivers/net/wireless/ray*
3704 4578
3705RCUTORTURE MODULE 4579RCUTORTURE MODULE
3706P: Josh Triplett 4580P: Josh Triplett
3707M: josh@freedesktop.org 4581M: josh@freedesktop.org
3708L: linux-kernel@vger.kernel.org 4582L: linux-kernel@vger.kernel.org
3709S: Maintained 4583S: Maintained
4584F: Documentation/RCU/torture.txt
4585F: kernel/rcutorture.c
3710 4586
3711RDC R-321X SoC 4587RDC R-321X SoC
3712P: Florian Fainelli 4588P: Florian Fainelli
@@ -3719,12 +4595,14 @@ P: Florian Fainelli
3719M: florian.fainelli@telecomint.eu 4595M: florian.fainelli@telecomint.eu
3720L: netdev@vger.kernel.org 4596L: netdev@vger.kernel.org
3721S: Maintained 4597S: Maintained
4598F: drivers/net/r6040.c
3722 4599
3723RDS - RELIABLE DATAGRAM SOCKETS 4600RDS - RELIABLE DATAGRAM SOCKETS
3724P: Andy Grover 4601P: Andy Grover
3725M: andy.grover@oracle.com 4602M: andy.grover@oracle.com
3726L: rds-devel@oss.oracle.com 4603L: rds-devel@oss.oracle.com
3727S: Supported 4604S: Supported
4605F: net/rds/
3728 4606
3729READ-COPY UPDATE (RCU) 4607READ-COPY UPDATE (RCU)
3730P: Dipankar Sarma 4608P: Dipankar Sarma
@@ -3732,37 +4610,54 @@ M: dipankar@in.ibm.com
3732W: http://www.rdrop.com/users/paulmck/rclock/ 4610W: http://www.rdrop.com/users/paulmck/rclock/
3733L: linux-kernel@vger.kernel.org 4611L: linux-kernel@vger.kernel.org
3734S: Supported 4612S: Supported
4613F: Documentation/RCU/rcu.txt
4614F: Documentation/RCU/rcuref.txt
4615F: include/linux/rcupdate.h
4616F: include/linux/srcu.h
4617F: kernel/rcupdate.c
3735 4618
3736REAL TIME CLOCK DRIVER 4619REAL TIME CLOCK DRIVER
3737P: Paul Gortmaker 4620P: Paul Gortmaker
3738M: p_gortmaker@yahoo.com 4621M: p_gortmaker@yahoo.com
3739L: linux-kernel@vger.kernel.org 4622L: linux-kernel@vger.kernel.org
3740S: Maintained 4623S: Maintained
4624F: Documentation/rtc.txt
4625F: drivers/rtc/
4626F: include/linux/rtc.h
3741 4627
3742REAL TIME CLOCK (RTC) SUBSYSTEM 4628REAL TIME CLOCK (RTC) SUBSYSTEM
3743P: Alessandro Zummo 4629P: Alessandro Zummo
3744M: a.zummo@towertech.it 4630M: a.zummo@towertech.it
3745L: rtc-linux@googlegroups.com 4631L: rtc-linux@googlegroups.com
3746S: Maintained 4632S: Maintained
4633F: Documentation/rtc.txt
4634F: drivers/rtc/
4635F: include/linux/rtc.h
3747 4636
3748REISERFS FILE SYSTEM 4637REISERFS FILE SYSTEM
3749L: reiserfs-devel@vger.kernel.org 4638L: reiserfs-devel@vger.kernel.org
3750S: Supported 4639S: Supported
4640F: fs/reiserfs/
3751 4641
3752RFKILL 4642RFKILL
3753P: Ivo van Doorn 4643P: Ivo van Doorn
3754M: IvDoorn@gmail.com 4644M: IvDoorn@gmail.com
3755L: netdev@vger.kernel.org 4645L: netdev@vger.kernel.org
3756S: Maintained 4646S: Maintained
3757F: net/rfkill 4647F Documentation/rfkill.txt
4648F: net/rfkill/
3758 4649
3759RISCOM8 DRIVER 4650RISCOM8 DRIVER
3760S: Orphan 4651S: Orphan
4652F: Documentation/serial/riscom8.txt
4653F: drivers/char/riscom8*
3761 4654
3762ROCKETPORT DRIVER 4655ROCKETPORT DRIVER
3763P: Comtrol Corp. 4656P: Comtrol Corp.
3764W: http://www.comtrol.com 4657W: http://www.comtrol.com
3765S: Maintained 4658S: Maintained
4659F: Documentation/serial/rocket.txt
4660F: drivers/char/rocket*
3766 4661
3767ROSE NETWORK LAYER 4662ROSE NETWORK LAYER
3768P: Ralf Baechle 4663P: Ralf Baechle
@@ -3770,32 +4665,38 @@ M: ralf@linux-mips.org
3770L: linux-hams@vger.kernel.org 4665L: linux-hams@vger.kernel.org
3771W: http://www.linux-ax25.org/ 4666W: http://www.linux-ax25.org/
3772S: Maintained 4667S: Maintained
4668F: include/linux/rose.h
4669F: include/net/rose.h
4670F: net/rose/
3773 4671
3774RTL8180 WIRELESS DRIVER 4672RTL8180 WIRELESS DRIVER
3775P: John W. Linville 4673P: John W. Linville
3776M: linville@tuxdriver.com 4674M: linville@tuxdriver.com
3777L: linux-wireless@vger.kernel.org 4675L: linux-wireless@vger.kernel.org
3778W: http://linuxwireless.org/ 4676W: http://linuxwireless.org/
3779T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git 4677T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
3780S: Maintained 4678S: Maintained
4679F: drivers/net/wireless/rtl818*
3781 4680
3782RTL8187 WIRELESS DRIVER 4681RTL8187 WIRELESS DRIVER
3783P: Herton Ronaldo Krzesinski 4682P: Herton Ronaldo Krzesinski
3784M: herton@mandriva.com.br 4683M: herton@mandriva.com.br
3785P: Hin-Tak Leung 4684P: Hin-Tak Leung
3786M htl10@users.sourceforge.net 4685M: htl10@users.sourceforge.net
3787P: Larry Finger 4686P: Larry Finger
3788M: Larry.Finger@lwfinger.net 4687M: Larry.Finger@lwfinger.net
3789L: linux-wireless@vger.kernel.org 4688L: linux-wireless@vger.kernel.org
3790W: http://linuxwireless.org/ 4689W: http://linuxwireless.org/
3791T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git 4690T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
3792S: Maintained 4691S: Maintained
4692F: drivers/net/wireless/rtl818x/rtl8187*
3793 4693
3794S3 SAVAGE FRAMEBUFFER DRIVER 4694S3 SAVAGE FRAMEBUFFER DRIVER
3795P: Antonino Daplas 4695P: Antonino Daplas
3796M: adaplas@gmail.com 4696M: adaplas@gmail.com
3797L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4697L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
3798S: Maintained 4698S: Maintained
4699F: drivers/video/savage/
3799 4700
3800S390 4701S390
3801P: Martin Schwidefsky 4702P: Martin Schwidefsky
@@ -3806,6 +4707,7 @@ M: linux390@de.ibm.com
3806L: linux-s390@vger.kernel.org 4707L: linux-s390@vger.kernel.org
3807W: http://www.ibm.com/developerworks/linux/linux390/ 4708W: http://www.ibm.com/developerworks/linux/linux390/
3808S: Supported 4709S: Supported
4710F: arch/s390/
3809 4711
3810S390 NETWORK DRIVERS 4712S390 NETWORK DRIVERS
3811P: Ursula Braun 4713P: Ursula Braun
@@ -3816,6 +4718,7 @@ M: linux390@de.ibm.com
3816L: linux-s390@vger.kernel.org 4718L: linux-s390@vger.kernel.org
3817W: http://www.ibm.com/developerworks/linux/linux390/ 4719W: http://www.ibm.com/developerworks/linux/linux390/
3818S: Supported 4720S: Supported
4721F: drivers/s390/net/
3819 4722
3820S390 ZCRYPT DRIVER 4723S390 ZCRYPT DRIVER
3821P: Felix Beck 4724P: Felix Beck
@@ -3825,6 +4728,7 @@ M: ralph.wuerthner@de.ibm.com
3825M: linux390@de.ibm.com 4728M: linux390@de.ibm.com
3826L: linux-s390@vger.kernel.org 4729L: linux-s390@vger.kernel.org
3827S: Supported 4730S: Supported
4731F: drivers/s390/crypto/
3828 4732
3829S390 ZFCP DRIVER 4733S390 ZFCP DRIVER
3830P: Christof Schmitt 4734P: Christof Schmitt
@@ -3835,6 +4739,8 @@ M: linux390@de.ibm.com
3835L: linux-s390@vger.kernel.org 4739L: linux-s390@vger.kernel.org
3836W: http://www.ibm.com/developerworks/linux/linux390/ 4740W: http://www.ibm.com/developerworks/linux/linux390/
3837S: Supported 4741S: Supported
4742F: Documentation/s390/zfcpdump.txt
4743F: drivers/s390/scsi/zfcp_*
3838 4744
3839S390 IUCV NETWORK LAYER 4745S390 IUCV NETWORK LAYER
3840P: Ursula Braun 4746P: Ursula Braun
@@ -3843,6 +4749,9 @@ M: linux390@de.ibm.com
3843L: linux-s390@vger.kernel.org 4749L: linux-s390@vger.kernel.org
3844W: http://www.ibm.com/developerworks/linux/linux390/ 4750W: http://www.ibm.com/developerworks/linux/linux390/
3845S: Supported 4751S: Supported
4752F: drivers/s390/net/*iucv*
4753F: include/net/iucv/
4754F: net/iucv/
3846 4755
3847S3C24XX SD/MMC Driver 4756S3C24XX SD/MMC Driver
3848P: Ben Dooks 4757P: Ben Dooks
@@ -3850,27 +4759,34 @@ M: ben-linux@fluff.org
3850L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4759L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
3851L: linux-kernel@vger.kernel.org 4760L: linux-kernel@vger.kernel.org
3852S: Supported 4761S: Supported
4762F: drivers/mmc/host/s3cmci.*
3853 4763
3854SAA7146 VIDEO4LINUX-2 DRIVER 4764SAA7146 VIDEO4LINUX-2 DRIVER
3855P: Michael Hunold 4765P: Michael Hunold
3856M: michael@mihu.de 4766M: michael@mihu.de
3857L: linux-media@vger.kernel.org 4767L: linux-media@vger.kernel.org
3858T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 4768T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
3859W: http://www.mihu.de/linux/saa7146 4769W: http://www.mihu.de/linux/saa7146
3860S: Maintained 4770S: Maintained
4771F: drivers/media/common/saa7146*
4772F: drivers/media/video/*7146*
4773F: include/media/*7146*
3861 4774
3862SC1200 WDT DRIVER 4775SC1200 WDT DRIVER
3863P: Zwane Mwaikambo 4776P: Zwane Mwaikambo
3864M: zwane@arm.linux.org.uk 4777M: zwane@arm.linux.org.uk
3865S: Maintained 4778S: Maintained
4779F: drivers/watchdog/sc1200wdt.c
3866 4780
3867SCHEDULER 4781SCHEDULER
3868P: Ingo Molnar 4782P: Ingo Molnar
3869M: mingo@elte.hu 4783M: mingo@elte.hu
3870P: Robert Love [the preemptible kernel bits] 4784P: Peter Zijlstra
3871M: rml@tech9.net 4785M: peterz@infradead.org
3872L: linux-kernel@vger.kernel.org 4786L: linux-kernel@vger.kernel.org
3873S: Maintained 4787S: Maintained
4788F: kernel/sched*
4789F: include/linux/sched.h
3874 4790
3875SCSI CDROM DRIVER 4791SCSI CDROM DRIVER
3876P: Jens Axboe 4792P: Jens Axboe
@@ -3878,6 +4794,7 @@ M: axboe@kernel.dk
3878L: linux-scsi@vger.kernel.org 4794L: linux-scsi@vger.kernel.org
3879W: http://www.kernel.dk 4795W: http://www.kernel.dk
3880S: Maintained 4796S: Maintained
4797F: drivers/scsi/sr*
3881 4798
3882SCSI SG DRIVER 4799SCSI SG DRIVER
3883P: Doug Gilbert 4800P: Doug Gilbert
@@ -3885,21 +4802,27 @@ M: dgilbert@interlog.com
3885L: linux-scsi@vger.kernel.org 4802L: linux-scsi@vger.kernel.org
3886W: http://www.torque.net/sg 4803W: http://www.torque.net/sg
3887S: Maintained 4804S: Maintained
4805F: drivers/scsi/sg.c
4806F: include/scsi/sg.h
3888 4807
3889SCSI SUBSYSTEM 4808SCSI SUBSYSTEM
3890P: James E.J. Bottomley 4809P: James E.J. Bottomley
3891M: James.Bottomley@HansenPartnership.com 4810M: James.Bottomley@HansenPartnership.com
3892L: linux-scsi@vger.kernel.org 4811L: linux-scsi@vger.kernel.org
3893T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git 4812T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
3894T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git 4813T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
3895T: git kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git 4814T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git
3896S: Maintained 4815S: Maintained
4816F: drivers/scsi/
4817F: include/scsi/
3897 4818
3898SCSI TAPE DRIVER 4819SCSI TAPE DRIVER
3899P: Kai Mäkisara 4820P: Kai Mäkisara
3900M: Kai.Makisara@kolumbus.fi 4821M: Kai.Makisara@kolumbus.fi
3901L: linux-scsi@vger.kernel.org 4822L: linux-scsi@vger.kernel.org
3902S: Maintained 4823S: Maintained
4824F: Documentation/scsi/st.txt
4825F: drivers/scsi/st*
3903 4826
3904SCTP PROTOCOL 4827SCTP PROTOCOL
3905P: Vlad Yasevich 4828P: Vlad Yasevich
@@ -3909,31 +4832,45 @@ M: sri@us.ibm.com
3909L: linux-sctp@vger.kernel.org 4832L: linux-sctp@vger.kernel.org
3910W: http://lksctp.sourceforge.net 4833W: http://lksctp.sourceforge.net
3911S: Supported 4834S: Supported
4835F: Documentation/networking/sctp.txt
4836F: include/linux/sctp.h
4837F: include/net/sctp/
4838F: net/sctp/
3912 4839
3913SCx200 CPU SUPPORT 4840SCx200 CPU SUPPORT
3914P: Jim Cromie 4841P: Jim Cromie
3915M: jim.cromie@gmail.com 4842M: jim.cromie@gmail.com
3916S: Odd Fixes 4843S: Odd Fixes
4844F: Documentation/i2c/busses/scx200_acb
4845F: arch/x86/kernel/scx200_32.c
4846F: drivers/watchdog/scx200_wdt.c
4847F: drivers/i2c/busses/scx200*
4848F: drivers/mtd/maps/scx200_docflash.c
4849F: include/linux/scx200.h
3917 4850
3918SCx200 GPIO DRIVER 4851SCx200 GPIO DRIVER
3919P: Jim Cromie 4852P: Jim Cromie
3920M: jim.cromie@gmail.com 4853M: jim.cromie@gmail.com
3921S: Maintained 4854S: Maintained
4855F: drivers/char/scx200_gpio.c
4856F: include/linux/scx200_gpio.h
3922 4857
3923SCx200 HRT CLOCKSOURCE DRIVER 4858SCx200 HRT CLOCKSOURCE DRIVER
3924P: Jim Cromie 4859P: Jim Cromie
3925M: jim.cromie@gmail.com 4860M: jim.cromie@gmail.com
3926S: Maintained 4861S: Maintained
4862F: drivers/clocksource/scx200_hrt.c
3927 4863
3928SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER 4864SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER
3929P: Sascha Sommer 4865P: Sascha Sommer
3930M: saschasommer@freenet.de 4866M: saschasommer@freenet.de
3931L: sdricohcs-devel@lists.sourceforge.net (subscribers-only) 4867L: sdricohcs-devel@lists.sourceforge.net (subscribers-only)
3932S: Maintained 4868S: Maintained
4869F: drivers/mmc/host/sdricoh_cs.c
3933 4870
3934SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER 4871SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
3935P: Pierre Ossman 4872P: Pierre Ossman
3936M: drzeus-sdhci@drzeus.cx 4873M: pierre@ossman.eu
3937L: sdhci-devel@lists.ossman.eu 4874L: sdhci-devel@lists.ossman.eu
3938S: Maintained 4875S: Maintained
3939 4876
@@ -3943,16 +4880,17 @@ M: avorontsov@ru.mvista.com
3943L: linuxppc-dev@ozlabs.org 4880L: linuxppc-dev@ozlabs.org
3944L: sdhci-devel@lists.ossman.eu 4881L: sdhci-devel@lists.ossman.eu
3945S: Maintained 4882S: Maintained
4883F: drivers/mmc/host/sdhci.*
3946 4884
3947SECURITY SUBSYSTEM 4885SECURITY SUBSYSTEM
3948F: security/
3949P: James Morris 4886P: James Morris
3950M: jmorris@namei.org 4887M: jmorris@namei.org
3951L: linux-kernel@vger.kernel.org 4888L: linux-kernel@vger.kernel.org
3952L: linux-security-module@vger.kernel.org (suggested Cc:) 4889L: linux-security-module@vger.kernel.org (suggested Cc:)
3953T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git 4890T: git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
3954W: http://security.wiki.kernel.org/ 4891W: http://security.wiki.kernel.org/
3955S: Supported 4892S: Supported
4893F: security/
3956 4894
3957SECURITY CONTACT 4895SECURITY CONTACT
3958P: Security Officers 4896P: Security Officers
@@ -3967,31 +4905,39 @@ M: jmorris@namei.org
3967P: Eric Paris 4905P: Eric Paris
3968M: eparis@parisplace.org 4906M: eparis@parisplace.org
3969L: linux-kernel@vger.kernel.org (kernel issues) 4907L: linux-kernel@vger.kernel.org (kernel issues)
3970L: selinux@tycho.nsa.gov (subscribers-only, general discussion) 4908L: selinux@tycho.nsa.gov (subscribers-only, general discussion)
3971W: http://selinuxproject.org 4909W: http://selinuxproject.org
3972T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git 4910T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
3973S: Supported 4911S: Supported
4912F: include/linux/selinux*
4913F: security/selinux/
3974 4914
3975SENSABLE PHANTOM 4915SENSABLE PHANTOM
3976P: Jiri Slaby 4916P: Jiri Slaby
3977M: jirislaby@gmail.com 4917M: jirislaby@gmail.com
3978S: Maintained 4918S: Maintained
4919F: drivers/misc/phantom.c
4920F: include/linux/phantom.h
3979 4921
3980SERIAL ATA (SATA) SUBSYSTEM 4922SERIAL ATA (SATA) SUBSYSTEM
3981P: Jeff Garzik 4923P: Jeff Garzik
3982M: jgarzik@pobox.com 4924M: jgarzik@pobox.com
3983L: linux-ide@vger.kernel.org 4925L: linux-ide@vger.kernel.org
3984T: git kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git 4926T: git git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
3985S: Supported 4927S: Supported
4928F: drivers/ata/
4929F: include/linux/ata.h
4930F: include/linux/libata.h
3986 4931
3987SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER 4932SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
3988P: Sathya Perla 4933P: Sathya Perla
3989M: sathyap@serverengines.com 4934M: sathyap@serverengines.com
3990P: Subbu Seetharaman 4935P: Subbu Seetharaman
3991M: subbus@serverengines.com 4936M: subbus@serverengines.com
3992L: netdev@vger.kernel.org 4937L: netdev@vger.kernel.org
3993W: http://www.serverengines.com 4938W: http://www.serverengines.com
3994S: Supported 4939S: Supported
4940F: drivers/net/benet/
3995 4941
3996SFC NETWORK DRIVER 4942SFC NETWORK DRIVER
3997P: Steve Hodgson 4943P: Steve Hodgson
@@ -3999,17 +4945,22 @@ P: Ben Hutchings
3999P: Robert Stonehouse 4945P: Robert Stonehouse
4000M: linux-net-drivers@solarflare.com 4946M: linux-net-drivers@solarflare.com
4001S: Supported 4947S: Supported
4948F: drivers/net/sfc/
4002 4949
4003SGI GRU DRIVER 4950SGI GRU DRIVER
4004P: Jack Steiner 4951P: Jack Steiner
4005M: steiner@sgi.com 4952M: steiner@sgi.com
4006S: Maintained 4953S: Maintained
4954F: drivers/misc/sgi-gru/
4007 4955
4008SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER 4956SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER
4009P: Pat Gefre 4957P: Pat Gefre
4010M: pfg@sgi.com 4958M: pfg@sgi.com
4011L: linux-ia64@vger.kernel.org 4959L: linux-ia64@vger.kernel.org
4012S: Supported 4960S: Supported
4961F: Documentation/ia64/serial.txt
4962F: drivers/serial/ioc?_serial.c
4963F: include/linux/ioc?.h
4013 4964
4014SGI VISUAL WORKSTATION 320 AND 540 4965SGI VISUAL WORKSTATION 320 AND 540
4015P: Andrey Panin 4966P: Andrey Panin
@@ -4017,11 +4968,13 @@ M: pazke@donpac.ru
4017L: linux-visws-devel@lists.sf.net 4968L: linux-visws-devel@lists.sf.net
4018W: http://linux-visws.sf.net 4969W: http://linux-visws.sf.net
4019S: Maintained for 2.6. 4970S: Maintained for 2.6.
4971F: Documentation/sgi-visws.txt
4020 4972
4021SGI XP/XPC/XPNET DRIVER 4973SGI XP/XPC/XPNET DRIVER
4022P: Dean Nelson 4974P: Dean Nelson
4023M: dcn@sgi.com 4975M: dcn@sgi.com
4024S: Maintained 4976S: Maintained
4977F: drivers/misc/sgi-xp/
4025 4978
4026SHARP LH SUPPORT (LH7952X & LH7A40X) 4979SHARP LH SUPPORT (LH7952X & LH7A40X)
4027P: Marc Singer 4980P: Marc Singer
@@ -4029,12 +4982,18 @@ M: elf@buici.com
4029W: http://projects.buici.com/arm 4982W: http://projects.buici.com/arm
4030L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 4983L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
4031S: Maintained 4984S: Maintained
4985F: Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen
4986F: arch/arm/mach-lh7a40x/
4987F: drivers/serial/serial_lh7a40x.c
4988F: drivers/usb/gadget/lh7a40*
4989F: drivers/usb/host/ohci-lh7a40*
4032 4990
4033SHPC HOTPLUG DRIVER 4991SHPC HOTPLUG DRIVER
4034P: Kristen Carlson Accardi 4992P: Kristen Carlson Accardi
4035M: kristen.c.accardi@intel.com 4993M: kristen.c.accardi@intel.com
4036L: linux-pci@vger.kernel.org 4994L: linux-pci@vger.kernel.org
4037S: Supported 4995S: Supported
4996F: drivers/pci/hotplug/shpchp*
4038 4997
4039SIMTEC EB110ATX (Chalice CATS) 4998SIMTEC EB110ATX (Chalice CATS)
4040P: Ben Dooks 4999P: Ben Dooks
@@ -4042,6 +5001,7 @@ P: Vincent Sanders
4042M: support@simtec.co.uk 5001M: support@simtec.co.uk
4043W: http://www.simtec.co.uk/products/EB110ATX/ 5002W: http://www.simtec.co.uk/products/EB110ATX/
4044S: Supported 5003S: Supported
5004F: arch/arm/mach-ebsa110/
4045 5005
4046SIMTEC EB2410ITX (BAST) 5006SIMTEC EB2410ITX (BAST)
4047P: Ben Dooks 5007P: Ben Dooks
@@ -4049,12 +5009,16 @@ P: Vincent Sanders
4049M: support@simtec.co.uk 5009M: support@simtec.co.uk
4050W: http://www.simtec.co.uk/products/EB2410ITX/ 5010W: http://www.simtec.co.uk/products/EB2410ITX/
4051S: Supported 5011S: Supported
5012F: arch/arm/mach-s3c2410/
5013F: drivers/*/*s3c2410*
5014F: drivers/*/*/*s3c2410*
4052 5015
4053SIS 190 ETHERNET DRIVER 5016SIS 190 ETHERNET DRIVER
4054P: Francois Romieu 5017P: Francois Romieu
4055M: romieu@fr.zoreil.com 5018M: romieu@fr.zoreil.com
4056L: netdev@vger.kernel.org 5019L: netdev@vger.kernel.org
4057S: Maintained 5020S: Maintained
5021F: drivers/net/sis190.c
4058 5022
4059SIS 900/7016 FAST ETHERNET DRIVER 5023SIS 900/7016 FAST ETHERNET DRIVER
4060P: Daniele Venzano 5024P: Daniele Venzano
@@ -4062,30 +5026,39 @@ M: venza@brownhat.org
4062W: http://www.brownhat.org/sis900.html 5026W: http://www.brownhat.org/sis900.html
4063L: netdev@vger.kernel.org 5027L: netdev@vger.kernel.org
4064S: Maintained 5028S: Maintained
5029F: drivers/net/sis900.*
4065 5030
4066SIS 96X I2C/SMBUS DRIVER 5031SIS 96X I2C/SMBUS DRIVER
4067P: Mark M. Hoffman 5032P: Mark M. Hoffman
4068M: mhoffman@lightlink.com 5033M: mhoffman@lightlink.com
4069L: linux-i2c@vger.kernel.org 5034L: linux-i2c@vger.kernel.org
4070S: Maintained 5035S: Maintained
5036F: Documentation/i2c/busses/i2c-sis96x
5037F: drivers/i2c/busses/i2c-sis96x.c
4071 5038
4072SIS FRAMEBUFFER DRIVER 5039SIS FRAMEBUFFER DRIVER
4073P: Thomas Winischhofer 5040P: Thomas Winischhofer
4074M: thomas@winischhofer.net 5041M: thomas@winischhofer.net
4075W: http://www.winischhofer.net/linuxsisvga.shtml 5042W: http://www.winischhofer.net/linuxsisvga.shtml
4076S: Maintained 5043S: Maintained
5044F: Documentation/fb/sisfb.txt
5045F: drivers/video/sis/
5046F: include/video/sisfb.h
4077 5047
4078SIS USB2VGA DRIVER 5048SIS USB2VGA DRIVER
4079P: Thomas Winischhofer 5049P: Thomas Winischhofer
4080M: thomas@winischhofer.net 5050M: thomas@winischhofer.net
4081W: http://www.winischhofer.at/linuxsisusbvga.shtml 5051W: http://www.winischhofer.at/linuxsisusbvga.shtml
4082S: Maintained 5052S: Maintained
5053F: drivers/usb/misc/sisusbvga/
4083 5054
4084SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS 5055SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
4085P: Stephen Hemminger 5056P: Stephen Hemminger
4086M: shemminger@linux-foundation.org 5057M: shemminger@linux-foundation.org
4087L: netdev@vger.kernel.org 5058L: netdev@vger.kernel.org
4088S: Maintained 5059S: Maintained
5060F: drivers/net/skge.*
5061F: drivers/net/sky2.*
4089 5062
4090SLAB ALLOCATOR 5063SLAB ALLOCATOR
4091P: Christoph Lameter 5064P: Christoph Lameter
@@ -4096,34 +5069,43 @@ P: Matt Mackall
4096M: mpm@selenic.com 5069M: mpm@selenic.com
4097L: linux-mm@kvack.org 5070L: linux-mm@kvack.org
4098S: Maintained 5071S: Maintained
5072F: include/linux/sl?b*.h
5073F: mm/sl?b.c
4099 5074
4100SMC91x ETHERNET DRIVER 5075SMC91x ETHERNET DRIVER
4101P: Nicolas Pitre 5076P: Nicolas Pitre
4102M: nico@cam.org 5077M: nico@cam.org
4103S: Maintained 5078S: Maintained
5079F: drivers/net/smc91x.*
4104 5080
4105SMSC47B397 HARDWARE MONITOR DRIVER 5081SMSC47B397 HARDWARE MONITOR DRIVER
4106P: Mark M. Hoffman 5082P: Mark M. Hoffman
4107M: mhoffman@lightlink.com 5083M: mhoffman@lightlink.com
4108L: lm-sensors@lm-sensors.org 5084L: lm-sensors@lm-sensors.org
4109S: Maintained 5085S: Maintained
5086F: Documentation/hwmon/smsc47b397
5087F: drivers/hwmon/smsc47b397.c
4110 5088
4111SMSC911x ETHERNET DRIVER 5089SMSC911x ETHERNET DRIVER
4112P: Steve Glendinning 5090P: Steve Glendinning
4113M: steve.glendinning@smsc.com 5091M: steve.glendinning@smsc.com
4114L: netdev@vger.kernel.org 5092L: netdev@vger.kernel.org
4115S: Supported 5093S: Supported
5094F: include/linux/smsc911x.h
5095F: drivers/net/smsc911x.*
4116 5096
4117SMSC9420 PCI ETHERNET DRIVER 5097SMSC9420 PCI ETHERNET DRIVER
4118P: Steve Glendinning 5098P: Steve Glendinning
4119M: steve.glendinning@smsc.com 5099M: steve.glendinning@smsc.com
4120L: netdev@vger.kernel.org 5100L: netdev@vger.kernel.org
4121S: Supported 5101S: Supported
5102F: drivers/net/smsc9420.*
4122 5103
4123SMX UIO Interface 5104SMX UIO Interface
4124P: Ben Nizette 5105P: Ben Nizette
4125M: bn@niasdigital.com 5106M: bn@niasdigital.com
4126S: Maintained 5107S: Maintained
5108F: drivers/uio/uio_smx.c
4127 5109
4128SN-IA64 (Itanium) SUB-PLATFORM 5110SN-IA64 (Itanium) SUB-PLATFORM
4129P: Jes Sorensen 5111P: Jes Sorensen
@@ -4132,36 +5114,45 @@ L: linux-altix@sgi.com
4132L: linux-ia64@vger.kernel.org 5114L: linux-ia64@vger.kernel.org
4133W: http://www.sgi.com/altix 5115W: http://www.sgi.com/altix
4134S: Maintained 5116S: Maintained
5117F: arch/ia64/sn/
4135 5118
4136SOC-CAMERA V4L2 SUBSYSTEM 5119SOC-CAMERA V4L2 SUBSYSTEM
4137P: Guennadi Liakhovetski 5120P: Guennadi Liakhovetski
4138M: g.liakhovetski@gmx.de 5121M: g.liakhovetski@gmx.de
4139L: linux-media@vger.kernel.org 5122L: linux-media@vger.kernel.org
4140T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5123T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4141S: Maintained 5124S: Maintained
5125F: include/media/v4l2*
5126F: drivers/media/video/v4l2*
4142 5127
4143SOEKRIS NET48XX LED SUPPORT 5128SOEKRIS NET48XX LED SUPPORT
4144P: Chris Boot 5129P: Chris Boot
4145M: bootc@bootc.net 5130M: bootc@bootc.net
4146S: Maintained 5131S: Maintained
5132F: drivers/leds/leds-net48xx.c
4147 5133
4148SOFTWARE RAID (Multiple Disks) SUPPORT 5134SOFTWARE RAID (Multiple Disks) SUPPORT
4149P: Neil Brown 5135P: Neil Brown
4150M: neilb@suse.de 5136M: neilb@suse.de
4151L: linux-raid@vger.kernel.org 5137L: linux-raid@vger.kernel.org
4152S: Supported 5138S: Supported
5139F: drivers/md/
5140F: include/linux/raid/
4153 5141
4154SONIC NETWORK DRIVER 5142SONIC NETWORK DRIVER
4155P: Thomas Bogendoerfer 5143P: Thomas Bogendoerfer
4156M: tsbogend@alpha.franken.de 5144M: tsbogend@alpha.franken.de
4157L: netdev@vger.kernel.org 5145L: netdev@vger.kernel.org
4158S: Maintained 5146S: Maintained
5147F: drivers/net/sonic.*
4159 5148
4160SONICS SILICON BACKPLANE DRIVER (SSB) 5149SONICS SILICON BACKPLANE DRIVER (SSB)
4161P: Michael Buesch 5150P: Michael Buesch
4162M: mb@bu3sch.de 5151M: mb@bu3sch.de
4163L: netdev@vger.kernel.org 5152L: netdev@vger.kernel.org
4164S: Maintained 5153S: Maintained
5154F: drivers/ssb/
5155F: include/linux/ssb/
4165 5156
4166SONY VAIO CONTROL DEVICE DRIVER 5157SONY VAIO CONTROL DEVICE DRIVER
4167P: Mattia Dongili 5158P: Mattia Dongili
@@ -4169,6 +5160,10 @@ M: malattia@linux.it
4169L: linux-acpi@vger.kernel.org 5160L: linux-acpi@vger.kernel.org
4170W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers 5161W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
4171S: Maintained 5162S: Maintained
5163F: Documentation/laptops/sony-laptop.txt
5164F: drivers/char/sonypi.c
5165F: drivers/platform/x86/sony-laptop.c
5166F: include/linux/sony-laptop.h
4172 5167
4173SONY MEMORYSTICK CARD SUPPORT 5168SONY MEMORYSTICK CARD SUPPORT
4174P: Alex Dubov 5169P: Alex Dubov
@@ -4176,6 +5171,7 @@ M: oakad@yahoo.com
4176L: linux-kernel@vger.kernel.org 5171L: linux-kernel@vger.kernel.org
4177W: http://tifmxx.berlios.de/ 5172W: http://tifmxx.berlios.de/
4178S: Maintained 5173S: Maintained
5174F: drivers/memstick/host/tifm_ms.c
4179 5175
4180SOUND 5176SOUND
4181P: Jaroslav Kysela 5177P: Jaroslav Kysela
@@ -4184,36 +5180,44 @@ P: Takashi Iwai
4184M: tiwai@suse.de 5180M: tiwai@suse.de
4185L: alsa-devel@alsa-project.org (subscribers-only) 5181L: alsa-devel@alsa-project.org (subscribers-only)
4186S: Maintained 5182S: Maintained
5183F: sound/
4187 5184
4188SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) 5185SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
4189P: Liam Girdwood 5186P: Liam Girdwood
4190M: lrg@slimlogic.co.uk 5187M: lrg@slimlogic.co.uk
4191P: Mark Brown 5188P: Mark Brown
4192M: broonie@opensource.wolfsonmicro.com 5189M: broonie@opensource.wolfsonmicro.com
4193T: git opensource.wolfsonmicro.com/linux-2.6-asoc 5190T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
4194L: alsa-devel@alsa-project.org (subscribers-only) 5191L: alsa-devel@alsa-project.org (subscribers-only)
4195W: http://alsa-project.org/main/index.php/ASoC 5192W: http://alsa-project.org/main/index.php/ASoC
4196S: Supported 5193S: Supported
5194F: sound/soc/
4197 5195
4198SPARC + UltraSPARC (sparc/sparc64) 5196SPARC + UltraSPARC (sparc/sparc64)
4199P: David S. Miller 5197P: David S. Miller
4200M: davem@davemloft.net 5198M: davem@davemloft.net
4201L: sparclinux@vger.kernel.org 5199L: sparclinux@vger.kernel.org
4202T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git 5200T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
4203T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git 5201T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
4204S: Maintained 5202S: Maintained
5203F: arch/sparc/
4205 5204
4206SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER 5205SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
4207P: Roger Wolff 5206P: Roger Wolff
4208M: R.E.Wolff@BitWizard.nl 5207M: R.E.Wolff@BitWizard.nl
4209L: linux-kernel@vger.kernel.org ? 5208L: linux-kernel@vger.kernel.org
4210S: Supported 5209S: Supported
5210F: Documentation/serial/specialix.txt
5211F: drivers/char/specialix*
4211 5212
4212SPI SUBSYSTEM 5213SPI SUBSYSTEM
4213P: David Brownell 5214P: David Brownell
4214M: dbrownell@users.sourceforge.net 5215M: dbrownell@users.sourceforge.net
4215L: spi-devel-general@lists.sourceforge.net 5216L: spi-devel-general@lists.sourceforge.net
4216S: Maintained 5217S: Maintained
5218F: Documentation/spi/
5219F: drivers/spi/
5220F: include/linux/spi/
4217 5221
4218SPIDERNET NETWORK DRIVER for CELL 5222SPIDERNET NETWORK DRIVER for CELL
4219P: Ishizaki Kou 5223P: Ishizaki Kou
@@ -4222,6 +5226,8 @@ P: Jens Osterkamp
4222M: jens@de.ibm.com 5226M: jens@de.ibm.com
4223L: netdev@vger.kernel.org 5227L: netdev@vger.kernel.org
4224S: Supported 5228S: Supported
5229F: Documentation/networking/spider_net.txt
5230F: drivers/net/spider_net*
4225 5231
4226SPU FILE SYSTEM 5232SPU FILE SYSTEM
4227P: Jeremy Kerr 5233P: Jeremy Kerr
@@ -4230,6 +5236,8 @@ L: linuxppc-dev@ozlabs.org
4230L: cbe-oss-dev@ozlabs.org 5236L: cbe-oss-dev@ozlabs.org
4231W: http://www.ibm.com/developerworks/power/cell/ 5237W: http://www.ibm.com/developerworks/power/cell/
4232S: Supported 5238S: Supported
5239F: Documentation/filesystems/spufs.txt
5240F: arch/powerpc/platforms/cell/spufs/
4233 5241
4234SQUASHFS FILE SYSTEM 5242SQUASHFS FILE SYSTEM
4235P: Phillip Lougher 5243P: Phillip Lougher
@@ -4237,12 +5245,15 @@ M: phillip@lougher.demon.co.uk
4237L: squashfs-devel@lists.sourceforge.net (subscribers-only) 5245L: squashfs-devel@lists.sourceforge.net (subscribers-only)
4238W: http://squashfs.org.uk 5246W: http://squashfs.org.uk
4239S: Maintained 5247S: Maintained
5248F: Documentation/filesystems/squashfs.txt
5249F: fs/squashfs/
4240 5250
4241SRM (Alpha) environment access 5251SRM (Alpha) environment access
4242P: Jan-Benedict Glaw 5252P: Jan-Benedict Glaw
4243M: jbglaw@lug-owl.de 5253M: jbglaw@lug-owl.de
4244L: linux-kernel@vger.kernel.org 5254L: linux-kernel@vger.kernel.org
4245S: Maintained 5255S: Maintained
5256F: arch/alpha/kernel/srm_env.c
4246 5257
4247STABLE BRANCH 5258STABLE BRANCH
4248P: Greg Kroah-Hartman 5259P: Greg Kroah-Hartman
@@ -4258,35 +5269,44 @@ M: gregkh@suse.de
4258L: linux-kernel@vger.kernel.org 5269L: linux-kernel@vger.kernel.org
4259T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 5270T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
4260S: Maintained 5271S: Maintained
5272F: drivers/staging/
4261 5273
4262STARFIRE/DURALAN NETWORK DRIVER 5274STARFIRE/DURALAN NETWORK DRIVER
4263P: Ion Badulescu 5275P: Ion Badulescu
4264M: ionut@cs.columbia.edu 5276M: ionut@cs.columbia.edu
4265S: Maintained 5277S: Maintained
5278F: drivers/net/starfire*
4266 5279
4267STARMODE RADIO IP (STRIP) PROTOCOL DRIVER 5280STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
4268W: http://mosquitonet.Stanford.EDU/strip.html 5281W: http://mosquitonet.Stanford.EDU/strip.html
4269S: Orphan 5282S: Orphan
5283F: drivers/net/wireless/strip.c
5284F: include/linux/if_strip.h
4270 5285
4271STRADIS MPEG-2 DECODER DRIVER 5286STRADIS MPEG-2 DECODER DRIVER
4272P: Nathan Laredo 5287P: Nathan Laredo
4273M: laredo@gnu.org 5288M: laredo@gnu.org
4274W: http://www.stradis.com/ 5289W: http://www.stradis.com/
4275S: Maintained 5290S: Maintained
5291F: drivers/media/video/stradis.c
4276 5292
4277SUN3/3X 5293SUN3/3X
4278P: Sam Creasey 5294P: Sam Creasey
4279M: sammy@sammy.net 5295M: sammy@sammy.net
4280W: http://sammy.net/sun3/ 5296W: http://sammy.net/sun3/
4281S: Maintained 5297S: Maintained
5298F: arch/m68k/kernel/*sun3*
5299F: arch/m68k/sun3*/
5300F: arch/m68k/include/asm/sun3*
4282 5301
4283SUPERH 5302SUPERH
4284P: Paul Mundt 5303P: Paul Mundt
4285M: lethal@linux-sh.org 5304M: lethal@linux-sh.org
4286L: linux-sh@vger.kernel.org 5305L: linux-sh@vger.kernel.org
4287W: http://www.linux-sh.org 5306W: http://www.linux-sh.org
4288T: git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git 5307T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git
4289S: Supported 5308S: Supported
5309F: arch/sh/
4290 5310
4291SUSPEND TO RAM 5311SUSPEND TO RAM
4292P: Len Brown 5312P: Len Brown
@@ -4297,29 +5317,48 @@ P: Rafael J. Wysocki
4297M: rjw@sisk.pl 5317M: rjw@sisk.pl
4298L: linux-pm@lists.linux-foundation.org 5318L: linux-pm@lists.linux-foundation.org
4299S: Supported 5319S: Supported
5320F: Documentation/power/
5321F: arch/x86/kernel/acpi/
5322F: drivers/base/power/
5323F: kernel/power/
5324F: include/linux/suspend.h
5325F: include/linux/freezer.h
5326F: include/linux/pm.h
5327F: include/asm-*/suspend.h
4300 5328
4301SVGA HANDLING 5329SVGA HANDLING
4302P: Martin Mares 5330P: Martin Mares
4303M: mj@ucw.cz 5331M: mj@ucw.cz
4304L: linux-video@atrey.karlin.mff.cuni.cz 5332L: linux-video@atrey.karlin.mff.cuni.cz
4305S: Maintained 5333S: Maintained
5334F: Documentation/svga.txt
5335F: arch/x86/boot/video*
4306 5336
4307SYSV FILESYSTEM 5337SYSV FILESYSTEM
4308P: Christoph Hellwig 5338P: Christoph Hellwig
4309M: hch@infradead.org 5339M: hch@infradead.org
4310S: Maintained 5340S: Maintained
5341F: Documentation/filesystems/sysv-fs.txt
5342F: fs/sysv/
5343F: include/linux/sysv_fs.h
4311 5344
4312TASKSTATS STATISTICS INTERFACE 5345TASKSTATS STATISTICS INTERFACE
4313P: Balbir Singh 5346P: Balbir Singh
4314M: balbir@linux.vnet.ibm.com 5347M: balbir@linux.vnet.ibm.com
4315L: linux-kernel@vger.kernel.org 5348L: linux-kernel@vger.kernel.org
4316S: Maintained 5349S: Maintained
5350F: Documentation/accounting/taskstats*
5351F: include/linux/taskstats*
5352F: kernel/taskstats.c
4317 5353
4318TC CLASSIFIER 5354TC CLASSIFIER
4319P: Jamal Hadi Salim 5355P: Jamal Hadi Salim
4320M: hadi@cyberus.ca 5356M: hadi@cyberus.ca
4321L: netdev@vger.kernel.org 5357L: netdev@vger.kernel.org
4322S: Maintained 5358S: Maintained
5359F: include/linux/pkt_cls.h
5360F: include/net/pkt_cls.h
5361F: net/sched/
4323 5362
4324TCP LOW PRIORITY MODULE 5363TCP LOW PRIORITY MODULE
4325P: Wong Hoi Sing, Edison 5364P: Wong Hoi Sing, Edison
@@ -4328,6 +5367,7 @@ P: Hung Hing Lun, Mike
4328M: hlhung3i@gmail.com 5367M: hlhung3i@gmail.com
4329W: http://tcp-lp-mod.sourceforge.net/ 5368W: http://tcp-lp-mod.sourceforge.net/
4330S: Maintained 5369S: Maintained
5370F: net/ipv4/tcp_lp.c
4331 5371
4332TEHUTI ETHERNET DRIVER 5372TEHUTI ETHERNET DRIVER
4333P: Alexander Indenbaum 5373P: Alexander Indenbaum
@@ -4336,16 +5376,19 @@ P: Andy Gospodarek
4336M: andy@greyhouse.net 5376M: andy@greyhouse.net
4337L: netdev@vger.kernel.org 5377L: netdev@vger.kernel.org
4338S: Supported 5378S: Supported
5379F: drivers/net/tehuti*
4339 5380
4340Telecom Clock Driver for MCPL0010 5381Telecom Clock Driver for MCPL0010
4341P: Mark Gross 5382P: Mark Gross
4342M: mark.gross@intel.com 5383M: mark.gross@intel.com
4343S: Supported 5384S: Supported
5385F: drivers/char/tlclk.c
4344 5386
4345TENSILICA XTENSA PORT (xtensa) 5387TENSILICA XTENSA PORT (xtensa)
4346P: Chris Zankel 5388P: Chris Zankel
4347M: chris@zankel.net 5389M: chris@zankel.net
4348S: Maintained 5390S: Maintained
5391F: arch/xtensa/
4349 5392
4350THINKPAD ACPI EXTRAS DRIVER 5393THINKPAD ACPI EXTRAS DRIVER
4351P: Henrique de Moraes Holschuh 5394P: Henrique de Moraes Holschuh
@@ -4353,13 +5396,17 @@ M: ibm-acpi@hmh.eng.br
4353L: ibm-acpi-devel@lists.sourceforge.net 5396L: ibm-acpi-devel@lists.sourceforge.net
4354W: http://ibm-acpi.sourceforge.net 5397W: http://ibm-acpi.sourceforge.net
4355W: http://thinkwiki.org/wiki/Ibm-acpi 5398W: http://thinkwiki.org/wiki/Ibm-acpi
4356T: git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git 5399T: git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
4357S: Maintained 5400S: Maintained
5401F: drivers/platform/x86/thinkpad_acpi.c
4358 5402
4359TI FLASH MEDIA INTERFACE DRIVER 5403TI FLASH MEDIA INTERFACE DRIVER
4360P: Alex Dubov 5404P: Alex Dubov
4361M: oakad@yahoo.com 5405M: oakad@yahoo.com
4362S: Maintained 5406S: Maintained
5407F: drivers/misc/tifm*
5408F: drivers/mmc/host/tifm_sd.c
5409F: include/linux/tifm.h
4363 5410
4364TI OMAP MMC INTERFACE DRIVER 5411TI OMAP MMC INTERFACE DRIVER
4365P: Carlos Aguiar, Anderson Briglia and Syed Khasim 5412P: Carlos Aguiar, Anderson Briglia and Syed Khasim
@@ -4367,11 +5414,13 @@ M: linux-omap@vger.kernel.org
4367W: http://linux.omap.com 5414W: http://linux.omap.com
4368W: http://www.muru.com/linux/omap/ 5415W: http://www.muru.com/linux/omap/
4369S: Maintained 5416S: Maintained
5417F: drivers/mmc/host/omap.c
4370 5418
4371TI OMAP RANDOM NUMBER GENERATOR SUPPORT 5419TI OMAP RANDOM NUMBER GENERATOR SUPPORT
4372P: Deepak Saxena 5420P: Deepak Saxena
4373M: dsaxena@plexity.net 5421M: dsaxena@plexity.net
4374S: Maintained 5422S: Maintained
5423F: drivers/char/hw_random/omap-rng.c
4375 5424
4376TIPC NETWORK LAYER 5425TIPC NETWORK LAYER
4377P: Per Liden 5426P: Per Liden
@@ -4383,8 +5432,11 @@ M: allan.stephens@windriver.com
4383L: tipc-discussion@lists.sourceforge.net 5432L: tipc-discussion@lists.sourceforge.net
4384W: http://tipc.sourceforge.net/ 5433W: http://tipc.sourceforge.net/
4385W: http://tipc.cslab.ericsson.net/ 5434W: http://tipc.cslab.ericsson.net/
4386T: git tipc.cslab.ericsson.net:/pub/git/tipc.git 5435T: git git://tipc.cslab.ericsson.net/pub/git/tipc.git
4387S: Maintained 5436S: Maintained
5437F: include/linux/tipc*.h
5438F: include/net/tipc/
5439F: net/tipc/
4388 5440
4389TLAN NETWORK DRIVER 5441TLAN NETWORK DRIVER
4390P: Samuel Chessman 5442P: Samuel Chessman
@@ -4392,6 +5444,8 @@ M: chessman@tux.org
4392L: tlan-devel@lists.sourceforge.net (subscribers-only) 5444L: tlan-devel@lists.sourceforge.net (subscribers-only)
4393W: http://sourceforge.net/projects/tlan/ 5445W: http://sourceforge.net/projects/tlan/
4394S: Maintained 5446S: Maintained
5447F: Documentation/networking/tlan.txt
5448F: drivers/net/tlan.*
4395 5449
4396TOMOYO SECURITY MODULE 5450TOMOYO SECURITY MODULE
4397P: Kentaro Takeda 5451P: Kentaro Takeda
@@ -4405,9 +5459,11 @@ L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
4405W: http://tomoyo.sourceforge.jp/ 5459W: http://tomoyo.sourceforge.jp/
4406T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/ 5460T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/
4407S: Maintained 5461S: Maintained
5462F: security/tomoyo/
4408 5463
4409TOSHIBA ACPI EXTRAS DRIVER 5464TOSHIBA ACPI EXTRAS DRIVER
4410S: Orphan 5465S: Orphan
5466F: drivers/platform/x86/toshiba_acpi.c
4411 5467
4412TOSHIBA SMM DRIVER 5468TOSHIBA SMM DRIVER
4413P: Jonathan Buzzard 5469P: Jonathan Buzzard
@@ -4415,11 +5471,14 @@ M: jonathan@buzzard.org.uk
4415L: tlinux-users@tce.toshiba-dme.co.jp 5471L: tlinux-users@tce.toshiba-dme.co.jp
4416W: http://www.buzzard.org.uk/toshiba/ 5472W: http://www.buzzard.org.uk/toshiba/
4417S: Maintained 5473S: Maintained
5474F: drivers/char/toshiba.c
5475F: include/linux/toshiba.h
4418 5476
4419TMIO MMC DRIVER 5477TMIO MMC DRIVER
4420P: Ian Molton 5478P: Ian Molton
4421M: ian@mnementh.co.uk 5479M: ian@mnementh.co.uk
4422S: Maintained 5480S: Maintained
5481F: drivers/mmc/host/tmio_mmc.*
4423 5482
4424TPM DEVICE DRIVER 5483TPM DEVICE DRIVER
4425P: Debora Velarde 5484P: Debora Velarde
@@ -4432,12 +5491,13 @@ M: m.selhorst@sirrix.com
4432W: http://www.sirrix.com 5491W: http://www.sirrix.com
4433L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) 5492L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
4434S: Maintained 5493S: Maintained
5494F: drivers/char/tpm/
4435 5495
4436TRIVIAL PATCHES 5496TRIVIAL PATCHES
4437P: Jiri Kosina 5497P: Jiri Kosina
4438M: trivial@kernel.org 5498M: trivial@kernel.org
4439L: linux-kernel@vger.kernel.org 5499L: linux-kernel@vger.kernel.org
4440T: git kernel.org:/pub/scm/linux/kernel/git/jikos/trivial.git 5500T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
4441S: Maintained 5501S: Maintained
4442 5502
4443TTY LAYER 5503TTY LAYER
@@ -4453,6 +5513,7 @@ P: Kyle McMartin
4453M: kyle@mcmartin.ca 5513M: kyle@mcmartin.ca
4454L: netdev@vger.kernel.org 5514L: netdev@vger.kernel.org
4455S: Maintained 5515S: Maintained
5516F: drivers/net/tulip/
4456 5517
4457TUN/TAP driver 5518TUN/TAP driver
4458P: Maxim Krasnyansky 5519P: Maxim Krasnyansky
@@ -4460,17 +5521,22 @@ M: maxk@qualcomm.com
4460L: vtun@office.satix.net 5521L: vtun@office.satix.net
4461W: http://vtun.sourceforge.net/tun 5522W: http://vtun.sourceforge.net/tun
4462S: Maintained 5523S: Maintained
5524F: Documentation/networking/tuntap.txt
5525F: arch/um/os-Linux/drivers/
4463 5526
4464TURBOCHANNEL SUBSYSTEM 5527TURBOCHANNEL SUBSYSTEM
4465P: Maciej W. Rozycki 5528P: Maciej W. Rozycki
4466M: macro@linux-mips.org 5529M: macro@linux-mips.org
4467S: Maintained 5530S: Maintained
5531F: drivers/tc/
5532F: include/linux/tc.h
4468 5533
4469U14-34F SCSI DRIVER 5534U14-34F SCSI DRIVER
4470P: Dario Ballabio 5535P: Dario Ballabio
4471M: ballabio_dario@emc.com 5536M: ballabio_dario@emc.com
4472L: linux-scsi@vger.kernel.org 5537L: linux-scsi@vger.kernel.org
4473S: Maintained 5538S: Maintained
5539F: drivers/scsi/u14-34f.c
4474 5540
4475UBI FILE SYSTEM (UBIFS) 5541UBI FILE SYSTEM (UBIFS)
4476P: Artem Bityutskiy 5542P: Artem Bityutskiy
@@ -4481,6 +5547,8 @@ L: linux-mtd@lists.infradead.org
4481T: git git://git.infradead.org/ubifs-2.6.git 5547T: git git://git.infradead.org/ubifs-2.6.git
4482W: http://www.linux-mtd.infradead.org/doc/ubifs.html 5548W: http://www.linux-mtd.infradead.org/doc/ubifs.html
4483S: Maintained 5549S: Maintained
5550F: Documentation/filesystems/ubifs.txt
5551F: fs/ubifs/
4484 5552
4485UCLINUX (AND M68KNOMMU) 5553UCLINUX (AND M68KNOMMU)
4486P: Greg Ungerer 5554P: Greg Ungerer
@@ -4488,6 +5556,7 @@ M: gerg@uclinux.org
4488W: http://www.uclinux.org/ 5556W: http://www.uclinux.org/
4489L: uclinux-dev@uclinux.org (subscribers-only) 5557L: uclinux-dev@uclinux.org (subscribers-only)
4490S: Maintained 5558S: Maintained
5559F: arch/m68knommu/
4491 5560
4492UCLINUX FOR RENESAS H8/300 5561UCLINUX FOR RENESAS H8/300
4493P: Yoshinori Sato 5562P: Yoshinori Sato
@@ -4500,18 +5569,25 @@ P: Jan Kara
4500M: jack@suse.cz 5569M: jack@suse.cz
4501W: http://linux-udf.sourceforge.net 5570W: http://linux-udf.sourceforge.net
4502S: Maintained 5571S: Maintained
5572F: Documentation/filesystems/udf.txt
5573F: fs/udf/
4503 5574
4504UFS FILESYSTEM 5575UFS FILESYSTEM
4505P: Evgeniy Dushistov 5576P: Evgeniy Dushistov
4506M: dushistov@mail.ru 5577M: dushistov@mail.ru
4507L: linux-kernel@vger.kernel.org 5578L: linux-kernel@vger.kernel.org
4508S: Maintained 5579S: Maintained
5580F: Documentation/filesystems/ufs.txt
5581F: fs/ufs/
4509 5582
4510ULTRA-WIDEBAND (UWB) SUBSYSTEM: 5583ULTRA-WIDEBAND (UWB) SUBSYSTEM:
4511P: David Vrabel 5584P: David Vrabel
4512M: david.vrabel@csr.com 5585M: david.vrabel@csr.com
4513L: linux-usb@vger.kernel.org 5586L: linux-usb@vger.kernel.org
4514S: Supported 5587S: Supported
5588F: drivers/uwb/*
5589F: include/linux/uwb.h
5590F: include/linux/uwb/
4515 5591
4516UNIFORM CDROM DRIVER 5592UNIFORM CDROM DRIVER
4517P: Jens Axboe 5593P: Jens Axboe
@@ -4519,6 +5595,9 @@ M: axboe@kernel.dk
4519L: linux-kernel@vger.kernel.org 5595L: linux-kernel@vger.kernel.org
4520W: http://www.kernel.dk 5596W: http://www.kernel.dk
4521S: Maintained 5597S: Maintained
5598F: Documentation/cdrom/
5599F: drivers/cdrom/cdrom.c
5600F: include/linux/cdrom.h
4522 5601
4523UNSORTED BLOCK IMAGES (UBI) 5602UNSORTED BLOCK IMAGES (UBI)
4524P: Artem Bityutskiy 5603P: Artem Bityutskiy
@@ -4527,12 +5606,17 @@ W: http://www.linux-mtd.infradead.org/
4527L: linux-mtd@lists.infradead.org 5606L: linux-mtd@lists.infradead.org
4528T: git git://git.infradead.org/ubi-2.6.git 5607T: git git://git.infradead.org/ubi-2.6.git
4529S: Maintained 5608S: Maintained
5609F: drivers/mtd/ubi/
5610F: include/linux/mtd/ubi.h
5611F: include/mtd/ubi-user.h
4530 5612
4531USB ACM DRIVER 5613USB ACM DRIVER
4532P: Oliver Neukum 5614P: Oliver Neukum
4533M: oliver@neukum.name 5615M: oliver@neukum.name
4534L: linux-usb@vger.kernel.org 5616L: linux-usb@vger.kernel.org
4535S: Maintained 5617S: Maintained
5618F: Documentation/usb/acm.txt
5619F: drivers/usb/class/cdc-acm.*
4536 5620
4537USB BLOCK DRIVER (UB ub) 5621USB BLOCK DRIVER (UB ub)
4538P: Pete Zaitcev 5622P: Pete Zaitcev
@@ -4540,6 +5624,7 @@ M: zaitcev@redhat.com
4540L: linux-kernel@vger.kernel.org 5624L: linux-kernel@vger.kernel.org
4541L: linux-usb@vger.kernel.org 5625L: linux-usb@vger.kernel.org
4542S: Supported 5626S: Supported
5627F: drivers/block/ub.c
4543 5628
4544USB CDC ETHERNET DRIVER 5629USB CDC ETHERNET DRIVER
4545P: Greg Kroah-Hartman 5630P: Greg Kroah-Hartman
@@ -4547,12 +5632,15 @@ M: greg@kroah.com
4547L: linux-usb@vger.kernel.org 5632L: linux-usb@vger.kernel.org
4548S: Maintained 5633S: Maintained
4549W: http://www.kroah.com/linux-usb/ 5634W: http://www.kroah.com/linux-usb/
5635F: drivers/net/usb/cdc_*.c
5636F: include/linux/usb/cdc.h
4550 5637
4551USB CYPRESS C67X00 DRIVER 5638USB CYPRESS C67X00 DRIVER
4552P: Peter Korsgaard 5639P: Peter Korsgaard
4553M: jacmet@sunsite.dk 5640M: jacmet@sunsite.dk
4554L: linux-usb@vger.kernel.org 5641L: linux-usb@vger.kernel.org
4555S: Maintained 5642S: Maintained
5643F: drivers/usb/c67x00/
4556 5644
4557USB DAVICOM DM9601 DRIVER 5645USB DAVICOM DM9601 DRIVER
4558P: Peter Korsgaard 5646P: Peter Korsgaard
@@ -4560,6 +5648,7 @@ M: jacmet@sunsite.dk
4560L: netdev@vger.kernel.org 5648L: netdev@vger.kernel.org
4561W: http://www.linux-usb.org/usbnet 5649W: http://www.linux-usb.org/usbnet
4562S: Maintained 5650S: Maintained
5651F: drivers/net/usb/dm9601.c
4563 5652
4564USB DIAMOND RIO500 DRIVER 5653USB DIAMOND RIO500 DRIVER
4565P: Cesar Miquel 5654P: Cesar Miquel
@@ -4567,21 +5656,25 @@ M: miquel@df.uba.ar
4567L: rio500-users@lists.sourceforge.net 5656L: rio500-users@lists.sourceforge.net
4568W: http://rio500.sourceforge.net 5657W: http://rio500.sourceforge.net
4569S: Maintained 5658S: Maintained
5659F: drivers/usb/misc/rio500*
4570 5660
4571USB EHCI DRIVER 5661USB EHCI DRIVER
4572P: David Brownell 5662P: David Brownell
4573M: dbrownell@users.sourceforge.net 5663M: dbrownell@users.sourceforge.net
4574L: linux-usb@vger.kernel.org 5664L: linux-usb@vger.kernel.org
4575S: Odd Fixes 5665S: Odd Fixes
5666F: Documentation/usb/ehci.txt
5667F: drivers/usb/host/ehci*
4576 5668
4577USB ET61X[12]51 DRIVER 5669USB ET61X[12]51 DRIVER
4578P: Luca Risolia 5670P: Luca Risolia
4579M: luca.risolia@studio.unibo.it 5671M: luca.risolia@studio.unibo.it
4580L: linux-usb@vger.kernel.org 5672L: linux-usb@vger.kernel.org
4581L: linux-media@vger.kernel.org 5673L: linux-media@vger.kernel.org
4582T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5674T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4583W: http://www.linux-projects.org 5675W: http://www.linux-projects.org
4584S: Maintained 5676S: Maintained
5677F: drivers/media/video/et61x251/
4585 5678
4586USB GADGET/PERIPHERAL SUBSYSTEM 5679USB GADGET/PERIPHERAL SUBSYSTEM
4587P: David Brownell 5680P: David Brownell
@@ -4589,25 +5682,32 @@ M: dbrownell@users.sourceforge.net
4589L: linux-usb@vger.kernel.org 5682L: linux-usb@vger.kernel.org
4590W: http://www.linux-usb.org/gadget 5683W: http://www.linux-usb.org/gadget
4591S: Maintained 5684S: Maintained
5685F: drivers/usb/gadget/
5686F: include/linux/usb/gadget*
4592 5687
4593USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) 5688USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
4594P: Jiri Kosina 5689P: Jiri Kosina
4595M: jkosina@suse.cz 5690M: jkosina@suse.cz
4596L: linux-usb@vger.kernel.org 5691L: linux-usb@vger.kernel.org
4597T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git 5692T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
4598S: Maintained 5693S: Maintained
5694F: Documentation/usb/hiddev.txt
5695F: drivers/hid/usbhid/
4599 5696
4600USB ISP116X DRIVER 5697USB ISP116X DRIVER
4601P: Olav Kongas 5698P: Olav Kongas
4602M: ok@artecdesign.ee 5699M: ok@artecdesign.ee
4603L: linux-usb@vger.kernel.org 5700L: linux-usb@vger.kernel.org
4604S: Maintained 5701S: Maintained
5702F: drivers/usb/host/isp116x*
5703F: include/linux/usb/isp116x.h
4605 5704
4606USB KAWASAKI LSI DRIVER 5705USB KAWASAKI LSI DRIVER
4607P: Oliver Neukum 5706P: Oliver Neukum
4608M: oliver@neukum.name 5707M: oliver@neukum.name
4609L: linux-usb@vger.kernel.org 5708L: linux-usb@vger.kernel.org
4610S: Maintained 5709S: Maintained
5710F: drivers/usb/serial/kl5kusb105.*
4611 5711
4612USB MASS STORAGE DRIVER 5712USB MASS STORAGE DRIVER
4613P: Matthew Dharm 5713P: Matthew Dharm
@@ -4616,18 +5716,22 @@ L: linux-usb@vger.kernel.org
4616L: usb-storage@lists.one-eyed-alien.net 5716L: usb-storage@lists.one-eyed-alien.net
4617S: Maintained 5717S: Maintained
4618W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ 5718W: http://www.one-eyed-alien.net/~mdharm/linux-usb/
5719F: drivers/usb/storage/
4619 5720
4620USB OHCI DRIVER 5721USB OHCI DRIVER
4621P: David Brownell 5722P: David Brownell
4622M: dbrownell@users.sourceforge.net 5723M: dbrownell@users.sourceforge.net
4623L: linux-usb@vger.kernel.org 5724L: linux-usb@vger.kernel.org
4624S: Odd Fixes 5725S: Odd Fixes
5726F: Documentation/usb/ohci.txt
5727F: drivers/usb/host/ohci*
4625 5728
4626USB OPTION-CARD DRIVER 5729USB OPTION-CARD DRIVER
4627P: Matthias Urlichs 5730P: Matthias Urlichs
4628M: smurf@smurf.noris.de 5731M: smurf@smurf.noris.de
4629L: linux-usb@vger.kernel.org 5732L: linux-usb@vger.kernel.org
4630S: Maintained 5733S: Maintained
5734F: drivers/usb/serial/option.c
4631 5735
4632USB OV511 DRIVER 5736USB OV511 DRIVER
4633P: Mark McClelland 5737P: Mark McClelland
@@ -4635,6 +5739,7 @@ M: mmcclell@bigfoot.com
4635L: linux-usb@vger.kernel.org 5739L: linux-usb@vger.kernel.org
4636W: http://alpha.dyndns.org/ov511/ 5740W: http://alpha.dyndns.org/ov511/
4637S: Maintained 5741S: Maintained
5742F: drivers/media/video/ov511.*
4638 5743
4639USB PEGASUS DRIVER 5744USB PEGASUS DRIVER
4640P: Petko Manolov 5745P: Petko Manolov
@@ -4643,12 +5748,14 @@ L: linux-usb@vger.kernel.org
4643L: netdev@vger.kernel.org 5748L: netdev@vger.kernel.org
4644W: http://pegasus2.sourceforge.net/ 5749W: http://pegasus2.sourceforge.net/
4645S: Maintained 5750S: Maintained
5751F: drivers/net/usb/pegasus.*
4646 5752
4647USB PRINTER DRIVER (usblp) 5753USB PRINTER DRIVER (usblp)
4648P: Pete Zaitcev 5754P: Pete Zaitcev
4649M: zaitcev@redhat.com 5755M: zaitcev@redhat.com
4650L: linux-usb@vger.kernel.org 5756L: linux-usb@vger.kernel.org
4651S: Supported 5757S: Supported
5758F: drivers/usb/class/usblp.c
4652 5759
4653USB RTL8150 DRIVER 5760USB RTL8150 DRIVER
4654P: Petko Manolov 5761P: Petko Manolov
@@ -4657,6 +5764,7 @@ L: linux-usb@vger.kernel.org
4657L: netdev@vger.kernel.org 5764L: netdev@vger.kernel.org
4658W: http://pegasus2.sourceforge.net/ 5765W: http://pegasus2.sourceforge.net/
4659S: Maintained 5766S: Maintained
5767F: drivers/net/usb/rtl8150.c
4660 5768
4661USB SE401 DRIVER 5769USB SE401 DRIVER
4662P: Jeroen Vreeken 5770P: Jeroen Vreeken
@@ -4664,12 +5772,15 @@ M: pe1rxq@amsat.org
4664L: linux-usb@vger.kernel.org 5772L: linux-usb@vger.kernel.org
4665W: http://www.chello.nl/~j.vreeken/se401/ 5773W: http://www.chello.nl/~j.vreeken/se401/
4666S: Maintained 5774S: Maintained
5775F: Documentation/video4linux/se401.txt
5776F: drivers/media/video/se401.*
4667 5777
4668USB SERIAL BELKIN F5U103 DRIVER 5778USB SERIAL BELKIN F5U103 DRIVER
4669P: William Greathouse 5779P: William Greathouse
4670M: wgreathouse@smva.com 5780M: wgreathouse@smva.com
4671L: linux-usb@vger.kernel.org 5781L: linux-usb@vger.kernel.org
4672S: Maintained 5782S: Maintained
5783F: drivers/usb/serial/belkin_sa.*
4673 5784
4674USB SERIAL CYPRESS M8 DRIVER 5785USB SERIAL CYPRESS M8 DRIVER
4675P: Lonnie Mendez 5786P: Lonnie Mendez
@@ -4678,12 +5789,14 @@ L: linux-usb@vger.kernel.org
4678S: Maintained 5789S: Maintained
4679W: http://geocities.com/i0xox0i 5790W: http://geocities.com/i0xox0i
4680W: http://firstlight.net/cvs 5791W: http://firstlight.net/cvs
5792F: drivers/usb/serial/cypress_m8.*
4681 5793
4682USB SERIAL CYBERJACK DRIVER 5794USB SERIAL CYBERJACK DRIVER
4683P: Matthias Bruestle and Harald Welte 5795P: Matthias Bruestle and Harald Welte
4684M: support@reiner-sct.com 5796M: support@reiner-sct.com
4685W: http://www.reiner-sct.de/support/treiber_cyberjack.php 5797W: http://www.reiner-sct.de/support/treiber_cyberjack.php
4686S: Maintained 5798S: Maintained
5799F: drivers/usb/serial/cyberjack.c
4687 5800
4688USB SERIAL DIGI ACCELEPORT DRIVER 5801USB SERIAL DIGI ACCELEPORT DRIVER
4689P: Peter Berger and Al Borchers 5802P: Peter Berger and Al Borchers
@@ -4691,18 +5804,24 @@ M: pberger@brimson.com
4691M: alborchers@steinerpoint.com 5804M: alborchers@steinerpoint.com
4692L: linux-usb@vger.kernel.org 5805L: linux-usb@vger.kernel.org
4693S: Maintained 5806S: Maintained
5807F: drivers/usb/serial/digi_acceleport.c
4694 5808
4695USB SERIAL DRIVER 5809USB SERIAL DRIVER
4696P: Greg Kroah-Hartman 5810P: Greg Kroah-Hartman
4697M: gregkh@suse.de 5811M: gregkh@suse.de
4698L: linux-usb@vger.kernel.org 5812L: linux-usb@vger.kernel.org
4699S: Supported 5813S: Supported
5814F: Documentation/usb/usb-serial.txt
5815F: drivers/usb/serial/generic.c
5816F: drivers/usb/serial/usb-serial.c
5817F: include/linux/usb/serial.h
4700 5818
4701USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER 5819USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
4702P: Gary Brubaker 5820P: Gary Brubaker
4703M: xavyer@ix.netcom.com 5821M: xavyer@ix.netcom.com
4704L: linux-usb@vger.kernel.org 5822L: linux-usb@vger.kernel.org
4705S: Maintained 5823S: Maintained
5824F: drivers/usb/serial/empeg.c
4706 5825
4707USB SERIAL KEYSPAN DRIVER 5826USB SERIAL KEYSPAN DRIVER
4708P: Greg Kroah-Hartman 5827P: Greg Kroah-Hartman
@@ -4710,6 +5829,7 @@ M: greg@kroah.com
4710L: linux-usb@vger.kernel.org 5829L: linux-usb@vger.kernel.org
4711W: http://www.kroah.com/linux/ 5830W: http://www.kroah.com/linux/
4712S: Maintained 5831S: Maintained
5832F: drivers/usb/serial/*keyspan*
4713 5833
4714USB SERIAL WHITEHEAT DRIVER 5834USB SERIAL WHITEHEAT DRIVER
4715P: Support Department 5835P: Support Department
@@ -4717,21 +5837,25 @@ M: support@connecttech.com
4717L: linux-usb@vger.kernel.org 5837L: linux-usb@vger.kernel.org
4718W: http://www.connecttech.com 5838W: http://www.connecttech.com
4719S: Supported 5839S: Supported
5840F: drivers/usb/serial/whiteheat*
4720 5841
4721USB SMSC95XX ETHERNET DRIVER 5842USB SMSC95XX ETHERNET DRIVER
4722P: Steve Glendinning 5843P: Steve Glendinning
4723M: steve.glendinning@smsc.com 5844M: steve.glendinning@smsc.com
4724L: netdev@vger.kernel.org 5845L: netdev@vger.kernel.org
4725S: Supported 5846S: Supported
5847F: drivers/net/usb/smsc95xx.*
4726 5848
4727USB SN9C1xx DRIVER 5849USB SN9C1xx DRIVER
4728P: Luca Risolia 5850P: Luca Risolia
4729M: luca.risolia@studio.unibo.it 5851M: luca.risolia@studio.unibo.it
4730L: linux-usb@vger.kernel.org 5852L: linux-usb@vger.kernel.org
4731L: linux-media@vger.kernel.org 5853L: linux-media@vger.kernel.org
4732T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5854T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4733W: http://www.linux-projects.org 5855W: http://www.linux-projects.org
4734S: Maintained 5856S: Maintained
5857F: Documentation/video4linux/sn9c102.txt
5858F: drivers/media/video/sn9c102/
4735 5859
4736USB SUBSYSTEM 5860USB SUBSYSTEM
4737P: Greg Kroah-Hartman 5861P: Greg Kroah-Hartman
@@ -4740,12 +5864,18 @@ L: linux-usb@vger.kernel.org
4740W: http://www.linux-usb.org 5864W: http://www.linux-usb.org
4741T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 5865T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
4742S: Supported 5866S: Supported
5867F: Documentation/usb/
5868F: drivers/net/usb/
5869F: drivers/usb/
5870F: include/linux/usb.h
5871F: include/linux/usb/
4743 5872
4744USB UHCI DRIVER 5873USB UHCI DRIVER
4745P: Alan Stern 5874P: Alan Stern
4746M: stern@rowland.harvard.edu 5875M: stern@rowland.harvard.edu
4747L: linux-usb@vger.kernel.org 5876L: linux-usb@vger.kernel.org
4748S: Maintained 5877S: Maintained
5878F: drivers/usb/host/uhci*
4749 5879
4750USB "USBNET" DRIVER FRAMEWORK 5880USB "USBNET" DRIVER FRAMEWORK
4751P: David Brownell 5881P: David Brownell
@@ -4753,39 +5883,47 @@ M: dbrownell@users.sourceforge.net
4753L: netdev@vger.kernel.org 5883L: netdev@vger.kernel.org
4754W: http://www.linux-usb.org/usbnet 5884W: http://www.linux-usb.org/usbnet
4755S: Maintained 5885S: Maintained
5886F: drivers/net/usb/usbnet.c
5887F: include/linux/usb/usbnet.h
4756 5888
4757USB VIDEO CLASS 5889USB VIDEO CLASS
4758P: Laurent Pinchart 5890P: Laurent Pinchart
4759M: laurent.pinchart@skynet.be 5891M: laurent.pinchart@skynet.be
4760L: linux-uvc-devel@lists.berlios.de (subscribers-only) 5892L: linux-uvc-devel@lists.berlios.de (subscribers-only)
4761L: linux-media@vger.kernel.org 5893L: linux-media@vger.kernel.org
4762T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5894T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4763W: http://linux-uvc.berlios.de 5895W: http://linux-uvc.berlios.de
4764S: Maintained 5896S: Maintained
5897F: drivers/media/video/uvc/
4765 5898
4766USB W996[87]CF DRIVER 5899USB W996[87]CF DRIVER
4767P: Luca Risolia 5900P: Luca Risolia
4768M: luca.risolia@studio.unibo.it 5901M: luca.risolia@studio.unibo.it
4769L: linux-usb@vger.kernel.org 5902L: linux-usb@vger.kernel.org
4770L: linux-media@vger.kernel.org 5903L: linux-media@vger.kernel.org
4771T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5904T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4772W: http://www.linux-projects.org 5905W: http://www.linux-projects.org
4773S: Maintained 5906S: Maintained
5907F: Documentation/video4linux/w9968cf.txt
5908F: drivers/media/video/w996*
4774 5909
4775USB WIRELESS RNDIS DRIVER (rndis_wlan) 5910USB WIRELESS RNDIS DRIVER (rndis_wlan)
4776P: Jussi Kivilinna 5911P: Jussi Kivilinna
4777M: jussi.kivilinna@mbnet.fi 5912M: jussi.kivilinna@mbnet.fi
4778L: linux-wireless@vger.kernel.org 5913L: linux-wireless@vger.kernel.org
4779S: Maintained 5914S: Maintained
5915F: drivers/net/wireless/rndis_wlan.c
4780 5916
4781USB ZC0301 DRIVER 5917USB ZC0301 DRIVER
4782P: Luca Risolia 5918P: Luca Risolia
4783M: luca.risolia@studio.unibo.it 5919M: luca.risolia@studio.unibo.it
4784L: linux-usb@vger.kernel.org 5920L: linux-usb@vger.kernel.org
4785L: linux-media@vger.kernel.org 5921L: linux-media@vger.kernel.org
4786T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5922T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4787W: http://www.linux-projects.org 5923W: http://www.linux-projects.org
4788S: Maintained 5924S: Maintained
5925F: Documentation/video4linux/zc0301.txt
5926F: drivers/media/video/zc0301/
4789 5927
4790USB ZD1201 DRIVER 5928USB ZD1201 DRIVER
4791P: Jeroen Vreeken 5929P: Jeroen Vreeken
@@ -4793,15 +5931,18 @@ M: pe1rxq@amsat.org
4793L: linux-usb@vger.kernel.org 5931L: linux-usb@vger.kernel.org
4794W: http://linux-lc100020.sourceforge.net 5932W: http://linux-lc100020.sourceforge.net
4795S: Maintained 5933S: Maintained
5934F: drivers/net/wireless/zd1201.*
4796 5935
4797USB ZR364XX DRIVER 5936USB ZR364XX DRIVER
4798P: Antoine Jacquet 5937P: Antoine Jacquet
4799M: royale@zerezo.com 5938M: royale@zerezo.com
4800L: linux-usb@vger.kernel.org 5939L: linux-usb@vger.kernel.org
4801L: linux-media@vger.kernel.org 5940L: linux-media@vger.kernel.org
4802T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git 5941T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4803W: http://royale.zerezo.com/zr364xx/ 5942W: http://royale.zerezo.com/zr364xx/
4804S: Maintained 5943S: Maintained
5944F: Documentation/video4linux/zr364xx.txt
5945F: drivers/media/video/zr364xx.c
4805 5946
4806USER-MODE LINUX (UML) 5947USER-MODE LINUX (UML)
4807P: Jeff Dike 5948P: Jeff Dike
@@ -4810,6 +5951,10 @@ L: user-mode-linux-devel@lists.sourceforge.net
4810L: user-mode-linux-user@lists.sourceforge.net 5951L: user-mode-linux-user@lists.sourceforge.net
4811W: http://user-mode-linux.sourceforge.net 5952W: http://user-mode-linux.sourceforge.net
4812S: Maintained 5953S: Maintained
5954F: Documentation/uml/
5955F: arch/um/
5956F: fs/hostfs/
5957F: fs/hppfs/
4813 5958
4814USERSPACE I/O (UIO) 5959USERSPACE I/O (UIO)
4815P: Hans J. Koch 5960P: Hans J. Koch
@@ -4818,13 +5963,16 @@ P: Greg Kroah-Hartman
4818M: gregkh@suse.de 5963M: gregkh@suse.de
4819L: linux-kernel@vger.kernel.org 5964L: linux-kernel@vger.kernel.org
4820S: Maintained 5965S: Maintained
5966F: Documentation/DocBook/uio-howto.tmpl
5967F: drivers/uio/
5968F: include/linux/uio*.h
4821 5969
4822UTIL-LINUX-NG PACKAGE 5970UTIL-LINUX-NG PACKAGE
4823P: Karel Zak 5971P: Karel Zak
4824M: kzak@redhat.com 5972M: kzak@redhat.com
4825L: util-linux-ng@vger.kernel.org 5973L: util-linux-ng@vger.kernel.org
4826W: http://kernel.org/~kzak/util-linux-ng/ 5974W: http://kernel.org/~kzak/util-linux-ng/
4827T: git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git 5975T: git git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
4828S: Maintained 5976S: Maintained
4829 5977
4830UVESAFB DRIVER 5978UVESAFB DRIVER
@@ -4833,23 +5981,30 @@ M: spock@gentoo.org
4833L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 5981L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
4834W: http://dev.gentoo.org/~spock/projects/uvesafb/ 5982W: http://dev.gentoo.org/~spock/projects/uvesafb/
4835S: Maintained 5983S: Maintained
5984F: Documentation/fb/uvesafb.txt
5985F: drivers/video/uvesafb.*
4836 5986
4837VFAT/FAT/MSDOS FILESYSTEM 5987VFAT/FAT/MSDOS FILESYSTEM
4838P: OGAWA Hirofumi 5988P: OGAWA Hirofumi
4839M: hirofumi@mail.parknet.co.jp 5989M: hirofumi@mail.parknet.co.jp
4840L: linux-kernel@vger.kernel.org 5990L: linux-kernel@vger.kernel.org
4841S: Maintained 5991S: Maintained
5992F: Documentation/filesystems/vfat.txt
5993F: fs/fat/
4842 5994
4843VIA RHINE NETWORK DRIVER 5995VIA RHINE NETWORK DRIVER
4844P: Roger Luethi 5996P: Roger Luethi
4845M: rl@hellgate.ch 5997M: rl@hellgate.ch
4846S: Maintained 5998S: Maintained
5999F: drivers/net/via-rhine.c
4847 6000
4848VIAPRO SMBUS DRIVER 6001VIAPRO SMBUS DRIVER
4849P: Jean Delvare 6002P: Jean Delvare
4850M: khali@linux-fr.org 6003M: khali@linux-fr.org
4851L: linux-i2c@vger.kernel.org 6004L: linux-i2c@vger.kernel.org
4852S: Maintained 6005S: Maintained
6006F: Documentation/i2c/busses/i2c-viapro
6007F: drivers/i2c/busses/i2c-viapro.c
4853 6008
4854VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER 6009VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
4855P: Joseph Chan 6010P: Joseph Chan
@@ -4858,26 +6013,23 @@ P: Scott Fang
4858M: ScottFang@viatech.com.cn 6013M: ScottFang@viatech.com.cn
4859L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 6014L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
4860S: Maintained 6015S: Maintained
6016F: drivers/video/via/
4861 6017
4862VIA VELOCITY NETWORK DRIVER 6018VIA VELOCITY NETWORK DRIVER
4863P: Francois Romieu 6019P: Francois Romieu
4864M: romieu@fr.zoreil.com 6020M: romieu@fr.zoreil.com
4865L: netdev@vger.kernel.org 6021L: netdev@vger.kernel.org
4866S: Maintained 6022S: Maintained
4867 6023F: drivers/net/via-velocity.*
4868VIDEO FOR LINUX (V4L)
4869P: Mauro Carvalho Chehab
4870M: mchehab@infradead.org
4871L: linux-media@vger.kernel.org
4872W: http://linuxtv.org
4873T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
4874S: Maintained
4875 6024
4876VLAN (802.1Q) 6025VLAN (802.1Q)
4877P: Patrick McHardy 6026P: Patrick McHardy
4878M: kaber@trash.net 6027M: kaber@trash.net
4879L: netdev@vger.kernel.org 6028L: netdev@vger.kernel.org
4880S: Maintained 6029S: Maintained
6030F: drivers/net/macvlan.c
6031F: include/linux/if_*vlan.h
6032F: net/8021q/
4881 6033
4882VOLTAGE AND CURRENT REGULATOR FRAMEWORK 6034VOLTAGE AND CURRENT REGULATOR FRAMEWORK
4883P: Liam Girdwood 6035P: Liam Girdwood
@@ -4886,49 +6038,64 @@ P: Mark Brown
4886M: broonie@opensource.wolfsonmicro.com 6038M: broonie@opensource.wolfsonmicro.com
4887W: http://opensource.wolfsonmicro.com/node/15 6039W: http://opensource.wolfsonmicro.com/node/15
4888W: http://www.slimlogic.co.uk/?p=48 6040W: http://www.slimlogic.co.uk/?p=48
4889T: git kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git 6041T: git git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6.git
4890S: Supported 6042S: Supported
6043F: drivers/regulator/
6044F: include/linux/regulator/
4891 6045
4892VT1211 HARDWARE MONITOR DRIVER 6046VT1211 HARDWARE MONITOR DRIVER
4893P: Juerg Haefliger 6047P: Juerg Haefliger
4894M: juergh@gmail.com 6048M: juergh@gmail.com
4895L: lm-sensors@lm-sensors.org 6049L: lm-sensors@lm-sensors.org
4896S: Maintained 6050S: Maintained
6051F: Documentation/hwmon/vt1211
6052F: drivers/hwmon/vt1211.c
4897 6053
4898VT8231 HARDWARE MONITOR DRIVER 6054VT8231 HARDWARE MONITOR DRIVER
4899P: Roger Lucas 6055P: Roger Lucas
4900M: vt8231@hiddenengine.co.uk 6056M: vt8231@hiddenengine.co.uk
4901L: lm-sensors@lm-sensors.org 6057L: lm-sensors@lm-sensors.org
4902S: Maintained 6058S: Maintained
6059F: drivers/hwmon/vt8231.c
4903 6060
4904W1 DALLAS'S 1-WIRE BUS 6061W1 DALLAS'S 1-WIRE BUS
4905P: Evgeniy Polyakov 6062P: Evgeniy Polyakov
4906M: johnpol@2ka.mipt.ru 6063M: johnpol@2ka.mipt.ru
4907S: Maintained 6064S: Maintained
6065F: Documentation/w1/
6066F: drivers/w1/
4908 6067
4909W83791D HARDWARE MONITORING DRIVER 6068W83791D HARDWARE MONITORING DRIVER
4910P: Marc Hulsman 6069P: Marc Hulsman
4911M: m.hulsman@tudelft.nl 6070M: m.hulsman@tudelft.nl
4912L: lm-sensors@lm-sensors.org 6071L: lm-sensors@lm-sensors.org
4913S: Maintained 6072S: Maintained
6073F: Documentation/hwmon/w83791d
6074F: drivers/hwmon/w83791d.c
4914 6075
4915W83793 HARDWARE MONITORING DRIVER 6076W83793 HARDWARE MONITORING DRIVER
4916P: Rudolf Marek 6077P: Rudolf Marek
4917M: r.marek@assembler.cz 6078M: r.marek@assembler.cz
4918L: lm-sensors@lm-sensors.org 6079L: lm-sensors@lm-sensors.org
4919S: Maintained 6080S: Maintained
6081F: Documentation/hwmon/w83793
6082F: drivers/hwmon/w83793.c
4920 6083
4921W83L51xD SD/MMC CARD INTERFACE DRIVER 6084W83L51xD SD/MMC CARD INTERFACE DRIVER
4922P: Pierre Ossman 6085P: Pierre Ossman
4923M: drzeus-wbsd@drzeus.cx 6086M: pierre@ossman.eu
4924L: linux-kernel@vger.kernel.org 6087L: linux-kernel@vger.kernel.org
4925S: Maintained 6088S: Maintained
6089F: drivers/mmc/host/wbsd.*
4926 6090
4927WATCHDOG DEVICE DRIVERS 6091WATCHDOG DEVICE DRIVERS
4928P: Wim Van Sebroeck 6092P: Wim Van Sebroeck
4929M: wim@iguana.be 6093M: wim@iguana.be
4930T: git kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git 6094T: git git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git
4931S: Maintained 6095S: Maintained
6096F: Documentation/watchdog/
6097F: drivers/watchdog/
6098F: include/linux/watchdog.h
4932 6099
4933WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS 6100WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS
4934P: Jean Tourrilhes 6101P: Jean Tourrilhes
@@ -4936,12 +6103,15 @@ M: jt@hpl.hp.com
4936L: linux-wireless@vger.kernel.org 6103L: linux-wireless@vger.kernel.org
4937W: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ 6104W: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
4938S: Maintained 6105S: Maintained
6106F: Documentation/networking/wavelan.txt
6107F: drivers/net/wireless/wavelan*
4939 6108
4940WD7000 SCSI DRIVER 6109WD7000 SCSI DRIVER
4941P: Miroslav Zagorac 6110P: Miroslav Zagorac
4942M: zaga@fly.cc.fer.hr 6111M: zaga@fly.cc.fer.hr
4943L: linux-scsi@vger.kernel.org 6112L: linux-scsi@vger.kernel.org
4944S: Maintained 6113S: Maintained
6114F: drivers/scsi/wd7000.c
4945 6115
4946WIMAX STACK 6116WIMAX STACK
4947P: Inaky Perez-Gonzalez 6117P: Inaky Perez-Gonzalez
@@ -4955,11 +6125,14 @@ WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
4955P: David Vrabel 6125P: David Vrabel
4956M: david.vrabel@csr.com 6126M: david.vrabel@csr.com
4957S: Maintained 6127S: Maintained
6128F: include/linux/wlp.h
6129F: drivers/uwb/wlp/
4958 6130
4959WISTRON LAPTOP BUTTON DRIVER 6131WISTRON LAPTOP BUTTON DRIVER
4960P: Miloslav Trmac 6132P: Miloslav Trmac
4961M: mitr@volny.cz 6133M: mitr@volny.cz
4962S: Maintained 6134S: Maintained
6135F: drivers/input/misc/wistron_btns.c
4963 6136
4964WL3501 WIRELESS PCMCIA CARD DRIVER 6137WL3501 WIRELESS PCMCIA CARD DRIVER
4965P: Arnaldo Carvalho de Melo 6138P: Arnaldo Carvalho de Melo
@@ -4967,6 +6140,7 @@ M: acme@ghostprotocols.net
4967L: linux-wireless@vger.kernel.org 6140L: linux-wireless@vger.kernel.org
4968W: http://oops.ghostprotocols.net:81/blog 6141W: http://oops.ghostprotocols.net:81/blog
4969S: Maintained 6142S: Maintained
6143F: drivers/net/wireless/wl3501*
4970 6144
4971WM97XX TOUCHSCREEN DRIVERS 6145WM97XX TOUCHSCREEN DRIVERS
4972P: Mark Brown 6146P: Mark Brown
@@ -4977,12 +6151,17 @@ L: linux-input@vger.kernel.org
4977T: git git://opensource.wolfsonmicro.com/linux-2.6-touch 6151T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
4978W: http://opensource.wolfsonmicro.com/node/7 6152W: http://opensource.wolfsonmicro.com/node/7
4979S: Supported 6153S: Supported
6154F: drivers/input/touchscreen/*wm97*
6155F: include/linux/wm97xx.h
4980 6156
4981X.25 NETWORK LAYER 6157X.25 NETWORK LAYER
4982P: Henner Eisen 6158P: Henner Eisen
4983M: eis@baty.hanse.de 6159M: eis@baty.hanse.de
4984L: linux-x25@vger.kernel.org 6160L: linux-x25@vger.kernel.org
4985S: Maintained 6161S: Maintained
6162F: Documentation/networking/x25*
6163F: include/net/x25*
6164F: net/x25/
4986 6165
4987X86 ARCHITECTURE (32-BIT AND 64-BIT) 6166X86 ARCHITECTURE (32-BIT AND 64-BIT)
4988P: Thomas Gleixner 6167P: Thomas Gleixner
@@ -4993,8 +6172,10 @@ P: H. Peter Anvin
4993M: hpa@zytor.com 6172M: hpa@zytor.com
4994M: x86@kernel.org 6173M: x86@kernel.org
4995L: linux-kernel@vger.kernel.org 6174L: linux-kernel@vger.kernel.org
4996T: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git 6175T: git git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
4997S: Maintained 6176S: Maintained
6177F: Documentation/x86/
6178F: arch/x86/
4998 6179
4999XEN HYPERVISOR INTERFACE 6180XEN HYPERVISOR INTERFACE
5000P: Jeremy Fitzhardinge 6181P: Jeremy Fitzhardinge
@@ -5004,6 +6185,11 @@ M: chrisw@sous-sol.org
5004L: virtualization@lists.osdl.org 6185L: virtualization@lists.osdl.org
5005L: xen-devel@lists.xensource.com 6186L: xen-devel@lists.xensource.com
5006S: Supported 6187S: Supported
6188F: arch/x86/xen/
6189F: drivers/*/xen-*front.c
6190F: drivers/xen/
6191F: arch/x86/include/asm/xen/
6192F: include/xen/
5007 6193
5008XFS FILESYSTEM 6194XFS FILESYSTEM
5009P: Silicon Graphics Inc 6195P: Silicon Graphics Inc
@@ -5012,8 +6198,10 @@ M: felixb@sgi.com
5012M: xfs-masters@oss.sgi.com 6198M: xfs-masters@oss.sgi.com
5013L: xfs@oss.sgi.com 6199L: xfs@oss.sgi.com
5014W: http://oss.sgi.com/projects/xfs 6200W: http://oss.sgi.com/projects/xfs
5015T: git://oss.sgi.com/xfs/xfs.git 6201T: git git://oss.sgi.com/xfs/xfs.git
5016S: Supported 6202S: Supported
6203F: Documentation/filesystems/xfs.txt
6204F: fs/xfs/
5017 6205
5018XILINX SYSTEMACE DRIVER 6206XILINX SYSTEMACE DRIVER
5019P: Grant Likely 6207P: Grant Likely
@@ -5021,24 +6209,30 @@ M: grant.likely@secretlab.ca
5021W: http://www.secretlab.ca/ 6209W: http://www.secretlab.ca/
5022L: linux-kernel@vger.kernel.org 6210L: linux-kernel@vger.kernel.org
5023S: Maintained 6211S: Maintained
6212F: drivers/block/xsysace.c
5024 6213
5025XILINX UARTLITE SERIAL DRIVER 6214XILINX UARTLITE SERIAL DRIVER
5026P: Peter Korsgaard 6215P: Peter Korsgaard
5027M: jacmet@sunsite.dk 6216M: jacmet@sunsite.dk
5028L: linux-serial@vger.kernel.org 6217L: linux-serial@vger.kernel.org
5029S: Maintained 6218S: Maintained
6219F: drivers/serial/uartlite.c
5030 6220
5031YAM DRIVER FOR AX.25 6221YAM DRIVER FOR AX.25
5032P: Jean-Paul Roubelat 6222P: Jean-Paul Roubelat
5033M: jpr@f6fbb.org 6223M: jpr@f6fbb.org
5034L: linux-hams@vger.kernel.org 6224L: linux-hams@vger.kernel.org
5035S: Maintained 6225S: Maintained
6226F: drivers/net/hamradio/yam*
6227F: include/linux/yam.h
5036 6228
5037YEALINK PHONE DRIVER 6229YEALINK PHONE DRIVER
5038P: Henk Vergonet 6230P: Henk Vergonet
5039M: Henk.Vergonet@gmail.com 6231M: Henk.Vergonet@gmail.com
5040L: usbb2k-api-dev@nongnu.org 6232L: usbb2k-api-dev@nongnu.org
5041S: Maintained 6233S: Maintained
6234F: Documentation/input/yealink.txt
6235F: drivers/input/misc/yealink.*
5042 6236
5043Z8530 DRIVER FOR AX.25 6237Z8530 DRIVER FOR AX.25
5044P: Joerg Reuter 6238P: Joerg Reuter
@@ -5047,6 +6241,9 @@ W: http://yaina.de/jreuter/
5047W: http://www.qsl.net/dl1bke/ 6241W: http://www.qsl.net/dl1bke/
5048L: linux-hams@vger.kernel.org 6242L: linux-hams@vger.kernel.org
5049S: Maintained 6243S: Maintained
6244F: Documentation/networking/z8530drv.txt
6245F: drivers/net/hamradio/*scc.c
6246F: drivers/net/hamradio/z8530.h
5050 6247
5051ZD1211RW WIRELESS DRIVER 6248ZD1211RW WIRELESS DRIVER
5052P: Daniel Drake 6249P: Daniel Drake
@@ -5057,6 +6254,7 @@ W: http://zd1211.ath.cx/wiki/DriverRewrite
5057L: linux-wireless@vger.kernel.org 6254L: linux-wireless@vger.kernel.org
5058L: zd1211-devs@lists.sourceforge.net (subscribers-only) 6255L: zd1211-devs@lists.sourceforge.net (subscribers-only)
5059S: Maintained 6256S: Maintained
6257F: drivers/net/wireless/zd1211rw/
5060 6258
5061ZR36067 VIDEO FOR LINUX DRIVER 6259ZR36067 VIDEO FOR LINUX DRIVER
5062L: mjpeg-users@lists.sourceforge.net 6260L: mjpeg-users@lists.sourceforge.net
@@ -5064,12 +6262,15 @@ L: linux-media@vger.kernel.org
5064W: http://mjpeg.sourceforge.net/driver-zoran/ 6262W: http://mjpeg.sourceforge.net/driver-zoran/
5065T: Mercurial http://linuxtv.org/hg/v4l-dvb 6263T: Mercurial http://linuxtv.org/hg/v4l-dvb
5066S: Odd Fixes 6264S: Odd Fixes
6265F: drivers/media/video/zoran/
5067 6266
5068ZS DECSTATION Z85C30 SERIAL DRIVER 6267ZS DECSTATION Z85C30 SERIAL DRIVER
5069P: Maciej W. Rozycki 6268P: Maciej W. Rozycki
5070M: macro@linux-mips.org 6269M: macro@linux-mips.org
5071S: Maintained 6270S: Maintained
6271F: drivers/serial/zs.*
5072 6272
5073THE REST 6273THE REST
5074P: Linus Torvalds 6274P: Linus Torvalds
6275T: git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
5075S: Buried alive in reporters 6276S: Buried alive in reporters
diff --git a/Makefile b/Makefile
index e5ad5fd96177..ad830bd45a4b 100644
--- a/Makefile
+++ b/Makefile
@@ -567,7 +567,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
567# disable pointer signed / unsigned warnings in gcc 4.0 567# disable pointer signed / unsigned warnings in gcc 4.0
568KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) 568KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
569 569
570# disable invalid "can't wrap" optimzations for signed / pointers 570# disable invalid "can't wrap" optimizations for signed / pointers
571KBUILD_CFLAGS += $(call cc-option,-fwrapv) 571KBUILD_CFLAGS += $(call cc-option,-fwrapv)
572 572
573# revert to pre-gcc-4.4 behaviour of .eh_frame 573# revert to pre-gcc-4.4 behaviour of .eh_frame
@@ -597,6 +597,10 @@ LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
597LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) 597LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
598LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) 598LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
599 599
600ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
601LDFLAGS_vmlinux += -X
602endif
603
600# Default kernel image to build when no specific target is given. 604# Default kernel image to build when no specific target is given.
601# KBUILD_IMAGE may be overruled on the command line or 605# KBUILD_IMAGE may be overruled on the command line or
602# set in the environment 606# set in the environment
@@ -1587,5 +1591,5 @@ PHONY += FORCE
1587FORCE: 1591FORCE:
1588 1592
1589# Declare the contents of the .PHONY variable as phony. We keep that 1593# Declare the contents of the .PHONY variable as phony. We keep that
1590# information in a variable se we can use it in if_changed and friends. 1594# information in a variable so we can use it in if_changed and friends.
1591.PHONY: $(PHONY) 1595.PHONY: $(PHONY)
diff --git a/arch/Kconfig b/arch/Kconfig
index dc81b34c5d82..78a35e9dc104 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -109,3 +109,6 @@ config HAVE_CLK
109 109
110config HAVE_DMA_API_DEBUG 110config HAVE_DMA_API_DEBUG
111 bool 111 bool
112
113config HAVE_DEFAULT_NO_SPIN_MUTEXES
114 bool
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig
index 82428c2f234c..f56837f69ca7 100644
--- a/arch/arm/configs/magician_defconfig
+++ b/arch/arm/configs/magician_defconfig
@@ -1183,7 +1183,11 @@ CONFIG_RTC_INTF_DEV=y
1183CONFIG_RTC_DRV_SA1100=y 1183CONFIG_RTC_DRV_SA1100=y
1184# CONFIG_RTC_DRV_PXA is not set 1184# CONFIG_RTC_DRV_PXA is not set
1185# CONFIG_DMADEVICES is not set 1185# CONFIG_DMADEVICES is not set
1186# CONFIG_REGULATOR is not set 1186CONFIG_REGULATOR=y
1187# CONFIG_REGULATOR_DEBUG is not set
1188# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1189# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1190CONFIG_REGULATOR_BQ24022=y
1187# CONFIG_UIO is not set 1191# CONFIG_UIO is not set
1188# CONFIG_STAGING is not set 1192# CONFIG_STAGING is not set
1189 1193
diff --git a/arch/arm/include/asm/sizes.h b/arch/arm/include/asm/sizes.h
index c10d1aa4b487..ada93a8fc2ef 100644
--- a/arch/arm/include/asm/sizes.h
+++ b/arch/arm/include/asm/sizes.h
@@ -32,6 +32,7 @@
32#define SZ_4K 0x00001000 32#define SZ_4K 0x00001000
33#define SZ_8K 0x00002000 33#define SZ_8K 0x00002000
34#define SZ_16K 0x00004000 34#define SZ_16K 0x00004000
35#define SZ_32K 0x00008000
35#define SZ_64K 0x00010000 36#define SZ_64K 0x00010000
36#define SZ_128K 0x00020000 37#define SZ_128K 0x00020000
37#define SZ_256K 0x00040000 38#define SZ_256K 0x00040000
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index 793fe7b25f36..e6afff849b85 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -87,7 +87,7 @@ extern void __init at91_add_device_eth(struct at91_eth_data *data);
87 /* USB Host */ 87 /* USB Host */
88struct at91_usbh_data { 88struct at91_usbh_data {
89 u8 ports; /* number of ports on root hub */ 89 u8 ports; /* number of ports on root hub */
90 u8 vbus_pin[]; /* port power-control pin */ 90 u8 vbus_pin[2]; /* port power-control pin */
91}; 91};
92extern void __init at91_add_device_usbh(struct at91_usbh_data *data); 92extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
93 93
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index dafe4f71d15f..336e51dc6127 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -590,27 +590,28 @@ static void omap1_init_ext_clk(struct clk * clk)
590static int omap1_clk_enable(struct clk *clk) 590static int omap1_clk_enable(struct clk *clk)
591{ 591{
592 int ret = 0; 592 int ret = 0;
593
593 if (clk->usecount++ == 0) { 594 if (clk->usecount++ == 0) {
594 if (likely(clk->parent)) { 595 if (clk->parent) {
595 ret = omap1_clk_enable(clk->parent); 596 ret = omap1_clk_enable(clk->parent);
596 597 if (ret)
597 if (unlikely(ret != 0)) { 598 goto err;
598 clk->usecount--;
599 return ret;
600 }
601 599
602 if (clk->flags & CLOCK_NO_IDLE_PARENT) 600 if (clk->flags & CLOCK_NO_IDLE_PARENT)
603 omap1_clk_deny_idle(clk->parent); 601 omap1_clk_deny_idle(clk->parent);
604 } 602 }
605 603
606 ret = clk->ops->enable(clk); 604 ret = clk->ops->enable(clk);
607 605 if (ret) {
608 if (unlikely(ret != 0) && clk->parent) { 606 if (clk->parent)
609 omap1_clk_disable(clk->parent); 607 omap1_clk_disable(clk->parent);
610 clk->usecount--; 608 goto err;
611 } 609 }
612 } 610 }
611 return ret;
613 612
613err:
614 clk->usecount--;
614 return ret; 615 return ret;
615} 616}
616 617
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 96a2006cb597..3e66d9099eab 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -343,6 +343,15 @@ config ARCH_PXA_PALM
343 bool "PXA based Palm PDAs" 343 bool "PXA based Palm PDAs"
344 select HAVE_PWM 344 select HAVE_PWM
345 345
346config MACH_PALMTE2
347 bool "Palm Tungsten|E2"
348 default y
349 depends on ARCH_PXA_PALM
350 select PXA25x
351 help
352 Say Y here if you intend to run this kernel on a Palm Tungsten|E2
353 handheld computer.
354
346config MACH_PALMT5 355config MACH_PALMT5
347 bool "Palm Tungsten|T5" 356 bool "Palm Tungsten|T5"
348 default y 357 default y
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index c80e1bac4945..682dbf4e14b0 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -57,6 +57,7 @@ obj-$(CONFIG_MACH_E740) += e740.o
57obj-$(CONFIG_MACH_E750) += e750.o 57obj-$(CONFIG_MACH_E750) += e750.o
58obj-$(CONFIG_MACH_E400) += e400.o 58obj-$(CONFIG_MACH_E400) += e400.o
59obj-$(CONFIG_MACH_E800) += e800.o 59obj-$(CONFIG_MACH_E800) += e800.o
60obj-$(CONFIG_MACH_PALMTE2) += palmte2.o
60obj-$(CONFIG_MACH_PALMT5) += palmt5.o 61obj-$(CONFIG_MACH_PALMT5) += palmt5.o
61obj-$(CONFIG_MACH_PALMTX) += palmtx.o 62obj-$(CONFIG_MACH_PALMTX) += palmtx.o
62obj-$(CONFIG_MACH_PALMLD) += palmld.o 63obj-$(CONFIG_MACH_PALMLD) += palmld.o
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index 117b5435f8d5..b50ef39eabfc 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -121,7 +121,7 @@ static inline void cmx2xx_init_dm9000(void) {}
121/* UCB1400 touchscreen controller */ 121/* UCB1400 touchscreen controller */
122#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) 122#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE)
123static struct platform_device cmx2xx_ts_device = { 123static struct platform_device cmx2xx_ts_device = {
124 .name = "ucb1400_ts", 124 .name = "ucb1400_core",
125 .id = -1, 125 .id = -1,
126}; 126};
127 127
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index 10c2eaf93230..7c9c34c19ae2 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -15,7 +15,7 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <net/ax88796.h> 18#include <linux/interrupt.h>
19 19
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/sizes.h> 21#include <asm/sizes.h>
@@ -32,12 +32,13 @@
32 32
33#if defined(CONFIG_AX88796) 33#if defined(CONFIG_AX88796)
34#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO) 34#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO)
35
35/* 36/*
36 * Asix AX88796 Ethernet 37 * Asix AX88796 Ethernet
37 */ 38 */
38static struct ax_plat_data colibri_asix_platdata = { 39static struct ax_plat_data colibri_asix_platdata = {
39 .flags = AXFLG_MAC_FROMDEV, 40 .flags = 0, /* defined later */
40 .wordlength = 2 41 .wordlength = 2,
41}; 42};
42 43
43static struct resource colibri_asix_resource[] = { 44static struct resource colibri_asix_resource[] = {
@@ -49,7 +50,7 @@ static struct resource colibri_asix_resource[] = {
49 [1] = { 50 [1] = {
50 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 51 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
51 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 52 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
52 .flags = IORESOURCE_IRQ 53 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
53 } 54 }
54}; 55};
55 56
@@ -70,8 +71,8 @@ static mfp_cfg_t colibri_pxa300_eth_pin_config[] __initdata = {
70 71
71static void __init colibri_pxa300_init_eth(void) 72static void __init colibri_pxa300_init_eth(void)
72{ 73{
74 colibri_pxa3xx_init_eth(&colibri_asix_platdata);
73 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_eth_pin_config)); 75 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_eth_pin_config));
74 set_irq_type(gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), IRQ_TYPE_EDGE_FALLING);
75 platform_device_register(&asix_device); 76 platform_device_register(&asix_device);
76} 77}
77#else 78#else
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index 55b74a7a6151..a18d37b3c5e6 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -15,7 +15,7 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <net/ax88796.h> 18#include <linux/interrupt.h>
19 19
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/sizes.h> 21#include <asm/sizes.h>
@@ -38,8 +38,8 @@
38 * Asix AX88796 Ethernet 38 * Asix AX88796 Ethernet
39 */ 39 */
40static struct ax_plat_data colibri_asix_platdata = { 40static struct ax_plat_data colibri_asix_platdata = {
41 .flags = AXFLG_MAC_FROMDEV, 41 .flags = 0, /* defined later */
42 .wordlength = 2 42 .wordlength = 2,
43}; 43};
44 44
45static struct resource colibri_asix_resource[] = { 45static struct resource colibri_asix_resource[] = {
@@ -51,7 +51,7 @@ static struct resource colibri_asix_resource[] = {
51 [1] = { 51 [1] = {
52 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 52 .start = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
53 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), 53 .end = gpio_to_irq(COLIBRI_ETH_IRQ_GPIO),
54 .flags = IORESOURCE_IRQ 54 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
55 } 55 }
56}; 56};
57 57
@@ -72,8 +72,8 @@ static mfp_cfg_t colibri_pxa320_eth_pin_config[] __initdata = {
72 72
73static void __init colibri_pxa320_init_eth(void) 73static void __init colibri_pxa320_init_eth(void)
74{ 74{
75 colibri_pxa3xx_init_eth(&colibri_asix_platdata);
75 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_eth_pin_config)); 76 pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_eth_pin_config));
76 set_irq_type(gpio_to_irq(COLIBRI_ETH_IRQ_GPIO), IRQ_TYPE_EDGE_FALLING);
77 platform_device_register(&asix_device); 77 platform_device_register(&asix_device);
78} 78}
79#else 79#else
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c
index 12d0afc54aa5..ea34e34f8cd8 100644
--- a/arch/arm/mach-pxa/colibri-pxa3xx.c
+++ b/arch/arm/mach-pxa/colibri-pxa3xx.c
@@ -14,6 +14,7 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/gpio.h> 16#include <linux/gpio.h>
17#include <linux/etherdevice.h>
17#include <asm/mach-types.h> 18#include <asm/mach-types.h>
18#include <mach/hardware.h> 19#include <mach/hardware.h>
19#include <asm/sizes.h> 20#include <asm/sizes.h>
@@ -28,6 +29,40 @@
28#include "generic.h" 29#include "generic.h"
29#include "devices.h" 30#include "devices.h"
30 31
32#if defined(CONFIG_AX88796)
33#define ETHER_ADDR_LEN 6
34static u8 ether_mac_addr[ETHER_ADDR_LEN];
35
36void __init colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data)
37{
38 int i;
39 u64 serial = ((u64) system_serial_high << 32) | system_serial_low;
40
41 /*
42 * If the bootloader passed in a serial boot tag, which contains a
43 * valid ethernet MAC, pass it to the interface. Toradex ships the
44 * modules with their own bootloader which provides a valid MAC
45 * this way.
46 */
47
48 for (i = 0; i < ETHER_ADDR_LEN; i++) {
49 ether_mac_addr[i] = serial & 0xff;
50 serial >>= 8;
51 }
52
53 if (is_valid_ether_addr(ether_mac_addr)) {
54 plat_data->flags |= AXFLG_MAC_FROMPLATFORM;
55 plat_data->mac_addr = ether_mac_addr;
56 printk(KERN_INFO "%s(): taking MAC from serial boot tag\n",
57 __func__);
58 } else {
59 plat_data->flags |= AXFLG_MAC_FROMDEV;
60 printk(KERN_INFO "%s(): no valid serial boot tag found, "
61 "taking MAC from device\n", __func__);
62 }
63}
64#endif
65
31#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) 66#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
32static int mmc_detect_pin; 67static int mmc_detect_pin;
33 68
diff --git a/arch/arm/mach-pxa/csb701.c b/arch/arm/mach-pxa/csb701.c
index 4a2a2952c374..5a221a49ea4d 100644
--- a/arch/arm/mach-pxa/csb701.c
+++ b/arch/arm/mach-pxa/csb701.c
@@ -5,6 +5,8 @@
5#include <linux/input.h> 5#include <linux/input.h>
6#include <linux/leds.h> 6#include <linux/leds.h>
7 7
8#include <asm/mach-types.h>
9
8static struct gpio_keys_button csb701_buttons[] = { 10static struct gpio_keys_button csb701_buttons[] = {
9 { 11 {
10 .code = 0x7, 12 .code = 0x7,
@@ -54,6 +56,9 @@ static struct platform_device *devices[] __initdata = {
54 56
55static int __init csb701_init(void) 57static int __init csb701_init(void)
56{ 58{
59 if (!machine_is_csb726())
60 return -ENODEV;
61
57 return platform_add_devices(devices, ARRAY_SIZE(devices)); 62 return platform_add_devices(devices, ARRAY_SIZE(devices));
58} 63}
59 64
diff --git a/arch/arm/mach-pxa/e740.c b/arch/arm/mach-pxa/e740.c
index 07500a04fd8c..a36fc17f671d 100644
--- a/arch/arm/mach-pxa/e740.c
+++ b/arch/arm/mach-pxa/e740.c
@@ -29,6 +29,7 @@
29#include <mach/udc.h> 29#include <mach/udc.h>
30#include <mach/irda.h> 30#include <mach/irda.h>
31#include <mach/irqs.h> 31#include <mach/irqs.h>
32#include <mach/audio.h>
32 33
33#include "generic.h" 34#include "generic.h"
34#include "eseries.h" 35#include "eseries.h"
@@ -197,6 +198,7 @@ static void __init e740_init(void)
197 eseries_get_tmio_gpios(); 198 eseries_get_tmio_gpios();
198 platform_add_devices(devices, ARRAY_SIZE(devices)); 199 platform_add_devices(devices, ARRAY_SIZE(devices));
199 pxa_set_udc_info(&e7xx_udc_mach_info); 200 pxa_set_udc_info(&e7xx_udc_mach_info);
201 pxa_set_ac97_info(NULL);
200 e7xx_irda_init(); 202 e7xx_irda_init();
201 pxa_set_ficp_info(&e7xx_ficp_platform_data); 203 pxa_set_ficp_info(&e7xx_ficp_platform_data);
202} 204}
diff --git a/arch/arm/mach-pxa/e750.c b/arch/arm/mach-pxa/e750.c
index 6126c04e02bc..1d00110590e5 100644
--- a/arch/arm/mach-pxa/e750.c
+++ b/arch/arm/mach-pxa/e750.c
@@ -28,6 +28,7 @@
28#include <mach/udc.h> 28#include <mach/udc.h>
29#include <mach/irda.h> 29#include <mach/irda.h>
30#include <mach/irqs.h> 30#include <mach/irqs.h>
31#include <mach/audio.h>
31 32
32#include "generic.h" 33#include "generic.h"
33#include "eseries.h" 34#include "eseries.h"
@@ -198,6 +199,7 @@ static void __init e750_init(void)
198 eseries_get_tmio_gpios(); 199 eseries_get_tmio_gpios();
199 platform_add_devices(devices, ARRAY_SIZE(devices)); 200 platform_add_devices(devices, ARRAY_SIZE(devices));
200 pxa_set_udc_info(&e7xx_udc_mach_info); 201 pxa_set_udc_info(&e7xx_udc_mach_info);
202 pxa_set_ac97_info(NULL);
201 e7xx_irda_init(); 203 e7xx_irda_init();
202 pxa_set_ficp_info(&e7xx_ficp_platform_data); 204 pxa_set_ficp_info(&e7xx_ficp_platform_data);
203} 205}
diff --git a/arch/arm/mach-pxa/e800.c b/arch/arm/mach-pxa/e800.c
index 74ab09812a72..9866c7b9e784 100644
--- a/arch/arm/mach-pxa/e800.c
+++ b/arch/arm/mach-pxa/e800.c
@@ -27,6 +27,7 @@
27#include <mach/eseries-gpio.h> 27#include <mach/eseries-gpio.h>
28#include <mach/udc.h> 28#include <mach/udc.h>
29#include <mach/irqs.h> 29#include <mach/irqs.h>
30#include <mach/audio.h>
30 31
31#include "generic.h" 32#include "generic.h"
32#include "eseries.h" 33#include "eseries.h"
@@ -199,6 +200,7 @@ static void __init e800_init(void)
199 eseries_get_tmio_gpios(); 200 eseries_get_tmio_gpios();
200 platform_add_devices(devices, ARRAY_SIZE(devices)); 201 platform_add_devices(devices, ARRAY_SIZE(devices));
201 pxa_set_udc_info(&e800_udc_mach_info); 202 pxa_set_udc_info(&e800_udc_mach_info);
203 pxa_set_ac97_info(NULL);
202} 204}
203 205
204MACHINE_START(E800, "Toshiba e800") 206MACHINE_START(E800, "Toshiba e800")
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 920dfb8d36da..67611dadb44e 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -25,8 +25,10 @@
25#include <linux/regulator/machine.h> 25#include <linux/regulator/machine.h>
26#include <linux/spi/spi.h> 26#include <linux/spi/spi.h>
27#include <linux/spi/tdo24m.h> 27#include <linux/spi/tdo24m.h>
28#include <linux/spi/libertas_spi.h>
28#include <linux/power_supply.h> 29#include <linux/power_supply.h>
29#include <linux/apm-emulation.h> 30#include <linux/apm-emulation.h>
31#include <linux/delay.h>
30 32
31#include <media/soc_camera.h> 33#include <media/soc_camera.h>
32 34
@@ -62,6 +64,8 @@
62#define GPIO93_CAM_RESET (93) 64#define GPIO93_CAM_RESET (93)
63#define GPIO41_ETHIRQ (41) 65#define GPIO41_ETHIRQ (41)
64#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ) 66#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ)
67#define GPIO115_WLAN_PWEN (115)
68#define GPIO19_WLAN_STRAP (19)
65 69
66static int mmc_cd; 70static int mmc_cd;
67static int nand_rb; 71static int nand_rb;
@@ -159,8 +163,8 @@ static unsigned long common_pin_config[] = {
159 GPIO57_SSP1_TXD, 163 GPIO57_SSP1_TXD,
160 164
161 /* SSP2 */ 165 /* SSP2 */
162 GPIO19_SSP2_SCLK, 166 GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */
163 GPIO14_SSP2_SFRM, 167 GPIO14_GPIO,
164 GPIO89_SSP2_TXD, 168 GPIO89_SSP2_TXD,
165 GPIO88_SSP2_RXD, 169 GPIO88_SSP2_RXD,
166 170
@@ -648,20 +652,86 @@ static struct tdo24m_platform_data em_x270_tdo24m_pdata = {
648 .model = TDO35S, 652 .model = TDO35S,
649}; 653};
650 654
655static struct pxa2xx_spi_master em_x270_spi_2_info = {
656 .num_chipselect = 1,
657 .enable_dma = 1,
658};
659
660static struct pxa2xx_spi_chip em_x270_libertas_chip = {
661 .rx_threshold = 1,
662 .tx_threshold = 1,
663 .timeout = 1000,
664};
665
666static unsigned long em_x270_libertas_pin_config[] = {
667 /* SSP2 */
668 GPIO19_SSP2_SCLK,
669 GPIO14_GPIO,
670 GPIO89_SSP2_TXD,
671 GPIO88_SSP2_RXD,
672};
673
674static int em_x270_libertas_setup(struct spi_device *spi)
675{
676 int err = gpio_request(GPIO115_WLAN_PWEN, "WLAN PWEN");
677 if (err)
678 return err;
679
680 gpio_direction_output(GPIO19_WLAN_STRAP, 1);
681 mdelay(100);
682
683 pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_libertas_pin_config));
684
685 gpio_direction_output(GPIO115_WLAN_PWEN, 0);
686 mdelay(100);
687 gpio_set_value(GPIO115_WLAN_PWEN, 1);
688 mdelay(100);
689
690 spi->bits_per_word = 16;
691 spi_setup(spi);
692
693 return 0;
694}
695
696static int em_x270_libertas_teardown(struct spi_device *spi)
697{
698 gpio_set_value(GPIO115_WLAN_PWEN, 0);
699 gpio_free(GPIO115_WLAN_PWEN);
700
701 return 0;
702}
703
704struct libertas_spi_platform_data em_x270_libertas_pdata = {
705 .use_dummy_writes = 1,
706 .gpio_cs = 14,
707 .setup = em_x270_libertas_setup,
708 .teardown = em_x270_libertas_teardown,
709};
710
651static struct spi_board_info em_x270_spi_devices[] __initdata = { 711static struct spi_board_info em_x270_spi_devices[] __initdata = {
652 { 712 {
653 .modalias = "tdo24m", 713 .modalias = "tdo24m",
654 .max_speed_hz = 1000000, 714 .max_speed_hz = 1000000,
655 .bus_num = 1, 715 .bus_num = 1,
656 .chip_select = 0, 716 .chip_select = 0,
657 .controller_data = &em_x270_tdo24m_chip, 717 .controller_data = &em_x270_tdo24m_chip,
658 .platform_data = &em_x270_tdo24m_pdata, 718 .platform_data = &em_x270_tdo24m_pdata,
719 },
720 {
721 .modalias = "libertas_spi",
722 .max_speed_hz = 13000000,
723 .bus_num = 2,
724 .irq = IRQ_GPIO(116),
725 .chip_select = 0,
726 .controller_data = &em_x270_libertas_chip,
727 .platform_data = &em_x270_libertas_pdata,
659 }, 728 },
660}; 729};
661 730
662static void __init em_x270_init_spi(void) 731static void __init em_x270_init_spi(void)
663{ 732{
664 pxa2xx_set_spi_info(1, &em_x270_spi_info); 733 pxa2xx_set_spi_info(1, &em_x270_spi_info);
734 pxa2xx_set_spi_info(2, &em_x270_spi_2_info);
665 spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices)); 735 spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices));
666} 736}
667#else 737#else
diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h
index 3f2a01d6a03c..90230c6f9925 100644
--- a/arch/arm/mach-pxa/include/mach/colibri.h
+++ b/arch/arm/mach-pxa/include/mach/colibri.h
@@ -1,5 +1,8 @@
1#ifndef _COLIBRI_H_ 1#ifndef _COLIBRI_H_
2#define _COLIBRI_H_ 2#define _COLIBRI_H_
3
4#include <net/ax88796.h>
5
3/* 6/*
4 * common settings for all modules 7 * common settings for all modules
5 */ 8 */
@@ -16,6 +19,10 @@ extern void colibri_pxa3xx_init_lcd(int bl_pin);
16static inline void colibri_pxa3xx_init_lcd(int) {} 19static inline void colibri_pxa3xx_init_lcd(int) {}
17#endif 20#endif
18 21
22#if defined(CONFIG_AX88796)
23extern void colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data);
24#endif
25
19/* physical memory regions */ 26/* physical memory regions */
20#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */ 27#define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */
21 28
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h
index 82a399f3f9f2..20ef37d4a9a7 100644
--- a/arch/arm/mach-pxa/include/mach/magician.h
+++ b/arch/arm/mach-pxa/include/mach/magician.h
@@ -27,7 +27,7 @@
27#define GPIO22_MAGICIAN_VIBRA_EN 22 27#define GPIO22_MAGICIAN_VIBRA_EN 22
28#define GPIO26_MAGICIAN_GSM_POWER 26 28#define GPIO26_MAGICIAN_GSM_POWER 26
29#define GPIO27_MAGICIAN_USBC_PUEN 27 29#define GPIO27_MAGICIAN_USBC_PUEN 27
30#define GPIO30_MAGICIAN_nCHARGE_EN 30 30#define GPIO30_MAGICIAN_BQ24022_nCHARGE_EN 30
31#define GPIO37_MAGICIAN_KEY_HANGUP 37 31#define GPIO37_MAGICIAN_KEY_HANGUP 37
32#define GPIO38_MAGICIAN_KEY_CONTACTS 38 32#define GPIO38_MAGICIAN_KEY_CONTACTS 38
33#define GPIO40_MAGICIAN_GSM_OUT2 40 33#define GPIO40_MAGICIAN_GSM_OUT2 40
@@ -98,7 +98,7 @@
98#define EGPIO_MAGICIAN_UNKNOWN_WAVEDEV_DLL MAGICIAN_EGPIO(2, 2) 98#define EGPIO_MAGICIAN_UNKNOWN_WAVEDEV_DLL MAGICIAN_EGPIO(2, 2)
99#define EGPIO_MAGICIAN_FLASH_VPP MAGICIAN_EGPIO(2, 3) 99#define EGPIO_MAGICIAN_FLASH_VPP MAGICIAN_EGPIO(2, 3)
100#define EGPIO_MAGICIAN_BL_POWER2 MAGICIAN_EGPIO(2, 4) 100#define EGPIO_MAGICIAN_BL_POWER2 MAGICIAN_EGPIO(2, 4)
101#define EGPIO_MAGICIAN_CHARGE_EN MAGICIAN_EGPIO(2, 5) 101#define EGPIO_MAGICIAN_BQ24022_ISET2 MAGICIAN_EGPIO(2, 5)
102#define EGPIO_MAGICIAN_GSM_POWER MAGICIAN_EGPIO(2, 7) 102#define EGPIO_MAGICIAN_GSM_POWER MAGICIAN_EGPIO(2, 7)
103 103
104/* input */ 104/* input */
diff --git a/arch/arm/mach-pxa/include/mach/palmld.h b/arch/arm/mach-pxa/include/mach/palmld.h
index 7c295a48d784..fb13c82ad6dc 100644
--- a/arch/arm/mach-pxa/include/mach/palmld.h
+++ b/arch/arm/mach-pxa/include/mach/palmld.h
@@ -87,6 +87,7 @@
87#define PALMLD_IDE_SIZE 0x00100000 87#define PALMLD_IDE_SIZE 0x00100000
88 88
89#define PALMLD_PHYS_IO_START 0x40000000 89#define PALMLD_PHYS_IO_START 0x40000000
90#define PALMLD_STR_BASE 0xa0200000
90 91
91/* BATTERY */ 92/* BATTERY */
92#define PALMLD_BAT_MAX_VOLTAGE 4000 /* 4.00V maximum voltage */ 93#define PALMLD_BAT_MAX_VOLTAGE 4000 /* 4.00V maximum voltage */
diff --git a/arch/arm/mach-pxa/include/mach/palmt5.h b/arch/arm/mach-pxa/include/mach/palmt5.h
index 94db2881f048..052bfe788ada 100644
--- a/arch/arm/mach-pxa/include/mach/palmt5.h
+++ b/arch/arm/mach-pxa/include/mach/palmt5.h
@@ -59,6 +59,7 @@
59/* Various addresses */ 59/* Various addresses */
60#define PALMT5_PHYS_RAM_START 0xa0000000 60#define PALMT5_PHYS_RAM_START 0xa0000000
61#define PALMT5_PHYS_IO_START 0x40000000 61#define PALMT5_PHYS_IO_START 0x40000000
62#define PALMT5_STR_BASE 0xa0200000
62 63
63/* TOUCHSCREEN */ 64/* TOUCHSCREEN */
64#define AC97_LINK_FRAME 21 65#define AC97_LINK_FRAME 21
diff --git a/arch/arm/mach-pxa/include/mach/palmte2.h b/arch/arm/mach-pxa/include/mach/palmte2.h
new file mode 100644
index 000000000000..12361341f9d8
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/palmte2.h
@@ -0,0 +1,68 @@
1/*
2 * GPIOs and interrupts for Palm Tungsten|E2 Handheld Computer
3 *
4 * Author:
5 * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 */
12
13#ifndef _INCLUDE_PALMTE2_H_
14#define _INCLUDE_PALMTE2_H_
15
16/** HERE ARE GPIOs **/
17
18/* GPIOs */
19#define GPIO_NR_PALMTE2_POWER_DETECT 9
20#define GPIO_NR_PALMTE2_HOTSYNC_BUTTON_N 4
21#define GPIO_NR_PALMTE2_EARPHONE_DETECT 15
22
23/* SD/MMC */
24#define GPIO_NR_PALMTE2_SD_DETECT_N 10
25#define GPIO_NR_PALMTE2_SD_POWER 55
26#define GPIO_NR_PALMTE2_SD_READONLY 51
27
28/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */
29#define GPIO_NR_PALMTE2_IR_DISABLE 48
30
31/* USB */
32#define GPIO_NR_PALMTE2_USB_DETECT_N 35
33#define GPIO_NR_PALMTE2_USB_PULLUP 53
34
35/* LCD/BACKLIGHT */
36#define GPIO_NR_PALMTE2_BL_POWER 56
37#define GPIO_NR_PALMTE2_LCD_POWER 37
38
39/* KEYS */
40#define GPIO_NR_PALMTE2_KEY_NOTES 5
41#define GPIO_NR_PALMTE2_KEY_TASKS 7
42#define GPIO_NR_PALMTE2_KEY_CALENDAR 11
43#define GPIO_NR_PALMTE2_KEY_CONTACTS 13
44#define GPIO_NR_PALMTE2_KEY_CENTER 14
45#define GPIO_NR_PALMTE2_KEY_LEFT 19
46#define GPIO_NR_PALMTE2_KEY_RIGHT 20
47#define GPIO_NR_PALMTE2_KEY_DOWN 21
48#define GPIO_NR_PALMTE2_KEY_UP 22
49
50/** HERE ARE INIT VALUES **/
51
52/* BACKLIGHT */
53#define PALMTE2_MAX_INTENSITY 0xFE
54#define PALMTE2_DEFAULT_INTENSITY 0x7E
55#define PALMTE2_LIMIT_MASK 0x7F
56#define PALMTE2_PRESCALER 0x3F
57#define PALMTE2_PERIOD_NS 3500
58
59/* BATTERY */
60#define PALMTE2_BAT_MAX_VOLTAGE 4000 /* 4.00v current voltage */
61#define PALMTE2_BAT_MIN_VOLTAGE 3550 /* 3.55v critical voltage */
62#define PALMTE2_BAT_MAX_CURRENT 0 /* unknokn */
63#define PALMTE2_BAT_MIN_CURRENT 0 /* unknown */
64#define PALMTE2_BAT_MAX_CHARGE 1 /* unknown */
65#define PALMTE2_BAT_MIN_CHARGE 1 /* unknown */
66#define PALMTE2_MAX_LIFE_MINS 360 /* on-life in minutes */
67
68#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmtx.h b/arch/arm/mach-pxa/include/mach/palmtx.h
index 1e8bccbda510..9f7d62fb4cbb 100644
--- a/arch/arm/mach-pxa/include/mach/palmtx.h
+++ b/arch/arm/mach-pxa/include/mach/palmtx.h
@@ -78,6 +78,8 @@
78#define PALMTX_PHYS_RAM_START 0xa0000000 78#define PALMTX_PHYS_RAM_START 0xa0000000
79#define PALMTX_PHYS_IO_START 0x40000000 79#define PALMTX_PHYS_IO_START 0x40000000
80 80
81#define PALMTX_STR_BASE 0xa0200000
82
81#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */ 83#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS /* ChipSelect 0 */
82#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */ 84#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS /* ChipSelect 1 */
83 85
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index deeea1c2782b..c899bbd94dc0 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -25,6 +25,8 @@
25#include <linux/mtd/physmap.h> 25#include <linux/mtd/physmap.h>
26#include <linux/pda_power.h> 26#include <linux/pda_power.h>
27#include <linux/pwm_backlight.h> 27#include <linux/pwm_backlight.h>
28#include <linux/regulator/bq24022.h>
29#include <linux/regulator/machine.h>
28#include <linux/usb/gpio_vbus.h> 30#include <linux/usb/gpio_vbus.h>
29 31
30#include <mach/hardware.h> 32#include <mach/hardware.h>
@@ -552,33 +554,7 @@ static struct platform_device gpio_vbus = {
552 554
553static int power_supply_init(struct device *dev) 555static int power_supply_init(struct device *dev)
554{ 556{
555 int ret; 557 return gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC");
556
557 ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC");
558 if (ret)
559 goto err_cs_ac;
560 ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_USB, "CABLE_STATE_USB");
561 if (ret)
562 goto err_cs_usb;
563 ret = gpio_request(EGPIO_MAGICIAN_CHARGE_EN, "CHARGE_EN");
564 if (ret)
565 goto err_chg_en;
566 ret = gpio_request(GPIO30_MAGICIAN_nCHARGE_EN, "nCHARGE_EN");
567 if (!ret)
568 ret = gpio_direction_output(GPIO30_MAGICIAN_nCHARGE_EN, 0);
569 if (ret)
570 goto err_nchg_en;
571
572 return 0;
573
574err_nchg_en:
575 gpio_free(EGPIO_MAGICIAN_CHARGE_EN);
576err_chg_en:
577 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB);
578err_cs_usb:
579 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC);
580err_cs_ac:
581 return ret;
582} 558}
583 559
584static int magician_is_ac_online(void) 560static int magician_is_ac_online(void)
@@ -586,22 +562,8 @@ static int magician_is_ac_online(void)
586 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC); 562 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC);
587} 563}
588 564
589static int magician_is_usb_online(void)
590{
591 return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_USB);
592}
593
594static void magician_set_charge(int flags)
595{
596 gpio_set_value(GPIO30_MAGICIAN_nCHARGE_EN, !flags);
597 gpio_set_value(EGPIO_MAGICIAN_CHARGE_EN, flags);
598}
599
600static void power_supply_exit(struct device *dev) 565static void power_supply_exit(struct device *dev)
601{ 566{
602 gpio_free(GPIO30_MAGICIAN_nCHARGE_EN);
603 gpio_free(EGPIO_MAGICIAN_CHARGE_EN);
604 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB);
605 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); 567 gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC);
606} 568}
607 569
@@ -612,8 +574,6 @@ static char *magician_supplicants[] = {
612static struct pda_power_pdata power_supply_info = { 574static struct pda_power_pdata power_supply_info = {
613 .init = power_supply_init, 575 .init = power_supply_init,
614 .is_ac_online = magician_is_ac_online, 576 .is_ac_online = magician_is_ac_online,
615 .is_usb_online = magician_is_usb_online,
616 .set_charge = magician_set_charge,
617 .exit = power_supply_exit, 577 .exit = power_supply_exit,
618 .supplied_to = magician_supplicants, 578 .supplied_to = magician_supplicants,
619 .num_supplicants = ARRAY_SIZE(magician_supplicants), 579 .num_supplicants = ARRAY_SIZE(magician_supplicants),
@@ -646,6 +606,43 @@ static struct platform_device power_supply = {
646 .num_resources = ARRAY_SIZE(power_supply_resources), 606 .num_resources = ARRAY_SIZE(power_supply_resources),
647}; 607};
648 608
609/*
610 * Battery charger
611 */
612
613static struct regulator_consumer_supply bq24022_consumers[] = {
614 {
615 .dev = &gpio_vbus.dev,
616 .supply = "vbus_draw",
617 },
618 {
619 .dev = &power_supply.dev,
620 .supply = "ac_draw",
621 },
622};
623
624static struct regulator_init_data bq24022_init_data = {
625 .constraints = {
626 .max_uA = 500000,
627 .valid_ops_mask = REGULATOR_CHANGE_CURRENT,
628 },
629 .num_consumer_supplies = ARRAY_SIZE(bq24022_consumers),
630 .consumer_supplies = bq24022_consumers,
631};
632
633static struct bq24022_mach_info bq24022_info = {
634 .gpio_nce = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
635 .gpio_iset2 = EGPIO_MAGICIAN_BQ24022_ISET2,
636 .init_data = &bq24022_init_data,
637};
638
639static struct platform_device bq24022 = {
640 .name = "bq24022",
641 .id = -1,
642 .dev = {
643 .platform_data = &bq24022_info,
644 },
645};
649 646
650/* 647/*
651 * MMC/SD 648 * MMC/SD
@@ -756,6 +753,7 @@ static struct platform_device *devices[] __initdata = {
756 &egpio, 753 &egpio,
757 &backlight, 754 &backlight,
758 &pasic3, 755 &pasic3,
756 &bq24022,
759 &gpio_vbus, 757 &gpio_vbus,
760 &power_supply, 758 &power_supply,
761 &strataflash, 759 &strataflash,
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 97c93a7a285c..9203b069b35c 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -50,6 +50,7 @@
50#include <mach/pxa27x-udc.h> 50#include <mach/pxa27x-udc.h>
51#include <mach/i2c.h> 51#include <mach/i2c.h>
52#include <mach/camera.h> 52#include <mach/camera.h>
53#include <mach/audio.h>
53#include <media/soc_camera.h> 54#include <media/soc_camera.h>
54 55
55#include <mach/mioa701.h> 56#include <mach/mioa701.h>
@@ -763,8 +764,6 @@ MIO_PARENT_DEV(mioa701_backlight, "pwm-backlight", &pxa27x_device_pwm0.dev,
763 &mioa701_backlight_data); 764 &mioa701_backlight_data);
764MIO_SIMPLE_DEV(mioa701_led, "leds-gpio", &gpio_led_info) 765MIO_SIMPLE_DEV(mioa701_led, "leds-gpio", &gpio_led_info)
765MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL) 766MIO_SIMPLE_DEV(pxa2xx_pcm, "pxa2xx-pcm", NULL)
766MIO_SIMPLE_DEV(pxa2xx_ac97, "pxa2xx-ac97", NULL)
767MIO_PARENT_DEV(mio_wm9713_codec, "wm9713-codec", &pxa2xx_ac97.dev, NULL)
768MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL) 767MIO_SIMPLE_DEV(mioa701_sound, "mioa701-wm9713", NULL)
769MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL) 768MIO_SIMPLE_DEV(mioa701_board, "mioa701-board", NULL)
770MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data); 769MIO_SIMPLE_DEV(gpio_vbus, "gpio-vbus", &gpio_vbus_data);
@@ -774,8 +773,6 @@ static struct platform_device *devices[] __initdata = {
774 &mioa701_backlight, 773 &mioa701_backlight,
775 &mioa701_led, 774 &mioa701_led,
776 &pxa2xx_pcm, 775 &pxa2xx_pcm,
777 &pxa2xx_ac97,
778 &mio_wm9713_codec,
779 &mioa701_sound, 776 &mioa701_sound,
780 &power_dev, 777 &power_dev,
781 &strataflash, 778 &strataflash,
@@ -818,6 +815,7 @@ static void __init mioa701_machine_init(void)
818 pxa_set_keypad_info(&mioa701_keypad_info); 815 pxa_set_keypad_info(&mioa701_keypad_info);
819 wm97xx_bat_set_pdata(&mioa701_battery_data); 816 wm97xx_bat_set_pdata(&mioa701_battery_data);
820 pxa_set_udc_info(&mioa701_udc_info); 817 pxa_set_udc_info(&mioa701_udc_info);
818 pxa_set_ac97_info(NULL);
821 pm_power_off = mioa701_poweroff; 819 pm_power_off = mioa701_poweroff;
822 arm_pm_restart = mioa701_restart; 820 arm_pm_restart = mioa701_restart;
823 platform_add_devices(devices, ARRAY_SIZE(devices)); 821 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 8587477a9bb7..ecf5910e39d7 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -24,6 +24,7 @@
24#include <linux/gpio.h> 24#include <linux/gpio.h>
25#include <linux/wm97xx_batt.h> 25#include <linux/wm97xx_batt.h>
26#include <linux/power_supply.h> 26#include <linux/power_supply.h>
27#include <linux/sysdev.h>
27 28
28#include <asm/mach-types.h> 29#include <asm/mach-types.h>
29#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
@@ -68,10 +69,10 @@ static unsigned long palmld_pin_config[] __initdata = {
68 GPIO47_FICP_TXD, 69 GPIO47_FICP_TXD,
69 70
70 /* MATRIX KEYPAD */ 71 /* MATRIX KEYPAD */
71 GPIO100_KP_MKIN_0, 72 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
72 GPIO101_KP_MKIN_1, 73 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
73 GPIO102_KP_MKIN_2, 74 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
74 GPIO97_KP_MKIN_3, 75 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
75 GPIO103_KP_MKOUT_0, 76 GPIO103_KP_MKOUT_0,
76 GPIO104_KP_MKOUT_1, 77 GPIO104_KP_MKOUT_1,
77 GPIO105_KP_MKOUT_2, 78 GPIO105_KP_MKOUT_2,
@@ -507,6 +508,33 @@ static struct pxafb_mach_info palmld_lcd_screen = {
507}; 508};
508 509
509/****************************************************************************** 510/******************************************************************************
511 * Power management - standby
512 ******************************************************************************/
513#ifdef CONFIG_PM
514static u32 *addr __initdata;
515static u32 resume[3] __initdata = {
516 0xe3a00101, /* mov r0, #0x40000000 */
517 0xe380060f, /* orr r0, r0, #0x00f00000 */
518 0xe590f008, /* ldr pc, [r0, #0x08] */
519};
520
521static int __init palmld_pm_init(void)
522{
523 int i;
524
525 /* this is where the bootloader jumps */
526 addr = phys_to_virt(PALMLD_STR_BASE);
527
528 for (i = 0; i < 3; i++)
529 addr[i] = resume[i];
530
531 return 0;
532}
533
534device_initcall(palmld_pm_init);
535#endif
536
537/******************************************************************************
510 * Machine init 538 * Machine init
511 ******************************************************************************/ 539 ******************************************************************************/
512static struct platform_device *devices[] __initdata = { 540static struct platform_device *devices[] __initdata = {
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 9521c7b33492..0680f1a575a3 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -75,10 +75,10 @@ static unsigned long palmt5_pin_config[] __initdata = {
75 GPIO95_GPIO, /* usb power */ 75 GPIO95_GPIO, /* usb power */
76 76
77 /* MATRIX KEYPAD */ 77 /* MATRIX KEYPAD */
78 GPIO100_KP_MKIN_0, 78 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
79 GPIO101_KP_MKIN_1, 79 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
80 GPIO102_KP_MKIN_2, 80 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
81 GPIO97_KP_MKIN_3, 81 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
82 GPIO103_KP_MKOUT_0, 82 GPIO103_KP_MKOUT_0,
83 GPIO104_KP_MKOUT_1, 83 GPIO104_KP_MKOUT_1,
84 GPIO105_KP_MKOUT_2, 84 GPIO105_KP_MKOUT_2,
@@ -450,6 +450,33 @@ static struct pxafb_mach_info palmt5_lcd_screen = {
450}; 450};
451 451
452/****************************************************************************** 452/******************************************************************************
453 * Power management - standby
454 ******************************************************************************/
455#ifdef CONFIG_PM
456static u32 *addr __initdata;
457static u32 resume[3] __initdata = {
458 0xe3a00101, /* mov r0, #0x40000000 */
459 0xe380060f, /* orr r0, r0, #0x00f00000 */
460 0xe590f008, /* ldr pc, [r0, #0x08] */
461};
462
463static int __init palmt5_pm_init(void)
464{
465 int i;
466
467 /* this is where the bootloader jumps */
468 addr = phys_to_virt(PALMT5_STR_BASE);
469
470 for (i = 0; i < 3; i++)
471 addr[i] = resume[i];
472
473 return 0;
474}
475
476device_initcall(palmt5_pm_init);
477#endif
478
479/******************************************************************************
453 * Machine init 480 * Machine init
454 ******************************************************************************/ 481 ******************************************************************************/
455static struct platform_device *devices[] __initdata = { 482static struct platform_device *devices[] __initdata = {
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
new file mode 100644
index 000000000000..43fcf2e86887
--- /dev/null
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -0,0 +1,466 @@
1/*
2 * Hardware definitions for Palm Tungsten|E2
3 *
4 * Author:
5 * Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
6 *
7 * Rewrite for mainline:
8 * Marek Vasut <marek.vasut@gmail.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 *
14 * (find more info at www.hackndev.com)
15 *
16 */
17
18#include <linux/platform_device.h>
19#include <linux/delay.h>
20#include <linux/irq.h>
21#include <linux/gpio_keys.h>
22#include <linux/input.h>
23#include <linux/pda_power.h>
24#include <linux/pwm_backlight.h>
25#include <linux/gpio.h>
26#include <linux/wm97xx_batt.h>
27#include <linux/power_supply.h>
28
29#include <asm/mach-types.h>
30#include <asm/mach/arch.h>
31#include <asm/mach/map.h>
32
33#include <mach/audio.h>
34#include <mach/palmte2.h>
35#include <mach/mmc.h>
36#include <mach/pxafb.h>
37#include <mach/mfp-pxa25x.h>
38#include <mach/irda.h>
39#include <mach/udc.h>
40
41#include "generic.h"
42#include "devices.h"
43
44/******************************************************************************
45 * Pin configuration
46 ******************************************************************************/
47static unsigned long palmte2_pin_config[] __initdata = {
48 /* MMC */
49 GPIO6_MMC_CLK,
50 GPIO8_MMC_CS0,
51 GPIO10_GPIO, /* SD detect */
52 GPIO55_GPIO, /* SD power */
53 GPIO51_GPIO, /* SD r/o switch */
54
55 /* AC97 */
56 GPIO28_AC97_BITCLK,
57 GPIO29_AC97_SDATA_IN_0,
58 GPIO30_AC97_SDATA_OUT,
59 GPIO31_AC97_SYNC,
60
61 /* PWM */
62 GPIO16_PWM0_OUT,
63
64 /* USB */
65 GPIO15_GPIO, /* usb detect */
66 GPIO53_GPIO, /* usb power */
67
68 /* IrDA */
69 GPIO48_GPIO, /* ir disable */
70 GPIO46_FICP_RXD,
71 GPIO47_FICP_TXD,
72
73 /* LCD */
74 GPIO58_LCD_LDD_0,
75 GPIO59_LCD_LDD_1,
76 GPIO60_LCD_LDD_2,
77 GPIO61_LCD_LDD_3,
78 GPIO62_LCD_LDD_4,
79 GPIO63_LCD_LDD_5,
80 GPIO64_LCD_LDD_6,
81 GPIO65_LCD_LDD_7,
82 GPIO66_LCD_LDD_8,
83 GPIO67_LCD_LDD_9,
84 GPIO68_LCD_LDD_10,
85 GPIO69_LCD_LDD_11,
86 GPIO70_LCD_LDD_12,
87 GPIO71_LCD_LDD_13,
88 GPIO72_LCD_LDD_14,
89 GPIO73_LCD_LDD_15,
90 GPIO74_LCD_FCLK,
91 GPIO75_LCD_LCLK,
92 GPIO76_LCD_PCLK,
93 GPIO77_LCD_BIAS,
94
95 /* GPIO KEYS */
96 GPIO5_GPIO, /* notes */
97 GPIO7_GPIO, /* tasks */
98 GPIO11_GPIO, /* calendar */
99 GPIO13_GPIO, /* contacts */
100 GPIO14_GPIO, /* center */
101 GPIO19_GPIO, /* left */
102 GPIO20_GPIO, /* right */
103 GPIO21_GPIO, /* down */
104 GPIO22_GPIO, /* up */
105
106 /* MISC */
107 GPIO1_RST, /* reset */
108 GPIO4_GPIO, /* Hotsync button */
109 GPIO9_GPIO, /* power detect */
110 GPIO37_GPIO, /* LCD power */
111 GPIO56_GPIO, /* Backlight power */
112};
113
114/******************************************************************************
115 * SD/MMC card controller
116 ******************************************************************************/
117static int palmte2_mci_init(struct device *dev,
118 irq_handler_t palmte2_detect_int, void *data)
119{
120 int err = 0;
121
122 /* Setup an interrupt for detecting card insert/remove events */
123 err = gpio_request(GPIO_NR_PALMTE2_SD_DETECT_N, "SD IRQ");
124 if (err)
125 goto err;
126 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_DETECT_N);
127 if (err)
128 goto err2;
129 err = request_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N),
130 palmte2_detect_int, IRQF_DISABLED | IRQF_SAMPLE_RANDOM |
131 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
132 "SD/MMC card detect", data);
133 if (err) {
134 printk(KERN_ERR "%s: cannot request SD/MMC card detect IRQ\n",
135 __func__);
136 goto err2;
137 }
138
139 err = gpio_request(GPIO_NR_PALMTE2_SD_POWER, "SD_POWER");
140 if (err)
141 goto err3;
142 err = gpio_direction_output(GPIO_NR_PALMTE2_SD_POWER, 0);
143 if (err)
144 goto err4;
145
146 err = gpio_request(GPIO_NR_PALMTE2_SD_READONLY, "SD_READONLY");
147 if (err)
148 goto err4;
149 err = gpio_direction_input(GPIO_NR_PALMTE2_SD_READONLY);
150 if (err)
151 goto err5;
152
153 printk(KERN_DEBUG "%s: irq registered\n", __func__);
154
155 return 0;
156
157err5:
158 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
159err4:
160 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
161err3:
162 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
163err2:
164 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
165err:
166 return err;
167}
168
169static void palmte2_mci_exit(struct device *dev, void *data)
170{
171 gpio_free(GPIO_NR_PALMTE2_SD_READONLY);
172 gpio_free(GPIO_NR_PALMTE2_SD_POWER);
173 free_irq(gpio_to_irq(GPIO_NR_PALMTE2_SD_DETECT_N), data);
174 gpio_free(GPIO_NR_PALMTE2_SD_DETECT_N);
175}
176
177static void palmte2_mci_power(struct device *dev, unsigned int vdd)
178{
179 struct pxamci_platform_data *p_d = dev->platform_data;
180 gpio_set_value(GPIO_NR_PALMTE2_SD_POWER, p_d->ocr_mask & (1 << vdd));
181}
182
183static int palmte2_mci_get_ro(struct device *dev)
184{
185 return gpio_get_value(GPIO_NR_PALMTE2_SD_READONLY);
186}
187
188static struct pxamci_platform_data palmte2_mci_platform_data = {
189 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
190 .setpower = palmte2_mci_power,
191 .get_ro = palmte2_mci_get_ro,
192 .init = palmte2_mci_init,
193 .exit = palmte2_mci_exit,
194};
195
196/******************************************************************************
197 * GPIO keys
198 ******************************************************************************/
199static struct gpio_keys_button palmte2_pxa_buttons[] = {
200 {KEY_F1, GPIO_NR_PALMTE2_KEY_CONTACTS, 1, "Contacts" },
201 {KEY_F2, GPIO_NR_PALMTE2_KEY_CALENDAR, 1, "Calendar" },
202 {KEY_F3, GPIO_NR_PALMTE2_KEY_TASKS, 1, "Tasks" },
203 {KEY_F4, GPIO_NR_PALMTE2_KEY_NOTES, 1, "Notes" },
204 {KEY_ENTER, GPIO_NR_PALMTE2_KEY_CENTER, 1, "Center" },
205 {KEY_LEFT, GPIO_NR_PALMTE2_KEY_LEFT, 1, "Left" },
206 {KEY_RIGHT, GPIO_NR_PALMTE2_KEY_RIGHT, 1, "Right" },
207 {KEY_DOWN, GPIO_NR_PALMTE2_KEY_DOWN, 1, "Down" },
208 {KEY_UP, GPIO_NR_PALMTE2_KEY_UP, 1, "Up" },
209};
210
211static struct gpio_keys_platform_data palmte2_pxa_keys_data = {
212 .buttons = palmte2_pxa_buttons,
213 .nbuttons = ARRAY_SIZE(palmte2_pxa_buttons),
214};
215
216static struct platform_device palmte2_pxa_keys = {
217 .name = "gpio-keys",
218 .id = -1,
219 .dev = {
220 .platform_data = &palmte2_pxa_keys_data,
221 },
222};
223
224/******************************************************************************
225 * Backlight
226 ******************************************************************************/
227static int palmte2_backlight_init(struct device *dev)
228{
229 int ret;
230
231 ret = gpio_request(GPIO_NR_PALMTE2_BL_POWER, "BL POWER");
232 if (ret)
233 goto err;
234 ret = gpio_direction_output(GPIO_NR_PALMTE2_BL_POWER, 0);
235 if (ret)
236 goto err2;
237 ret = gpio_request(GPIO_NR_PALMTE2_LCD_POWER, "LCD POWER");
238 if (ret)
239 goto err2;
240 ret = gpio_direction_output(GPIO_NR_PALMTE2_LCD_POWER, 0);
241 if (ret)
242 goto err3;
243
244 return 0;
245err3:
246 gpio_free(GPIO_NR_PALMTE2_LCD_POWER);
247err2:
248 gpio_free(GPIO_NR_PALMTE2_BL_POWER);
249err:
250 return ret;
251}
252
253static int palmte2_backlight_notify(int brightness)
254{
255 gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness);
256 gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness);
257 return brightness;
258}
259
260static void palmte2_backlight_exit(struct device *dev)
261{
262 gpio_free(GPIO_NR_PALMTE2_BL_POWER);
263 gpio_free(GPIO_NR_PALMTE2_LCD_POWER);
264}
265
266static struct platform_pwm_backlight_data palmte2_backlight_data = {
267 .pwm_id = 0,
268 .max_brightness = PALMTE2_MAX_INTENSITY,
269 .dft_brightness = PALMTE2_MAX_INTENSITY,
270 .pwm_period_ns = PALMTE2_PERIOD_NS,
271 .init = palmte2_backlight_init,
272 .notify = palmte2_backlight_notify,
273 .exit = palmte2_backlight_exit,
274};
275
276static struct platform_device palmte2_backlight = {
277 .name = "pwm-backlight",
278 .dev = {
279 .parent = &pxa25x_device_pwm0.dev,
280 .platform_data = &palmte2_backlight_data,
281 },
282};
283
284/******************************************************************************
285 * IrDA
286 ******************************************************************************/
287static int palmte2_irda_startup(struct device *dev)
288{
289 int err;
290 err = gpio_request(GPIO_NR_PALMTE2_IR_DISABLE, "IR DISABLE");
291 if (err)
292 goto err;
293 err = gpio_direction_output(GPIO_NR_PALMTE2_IR_DISABLE, 1);
294 if (err)
295 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
296err:
297 return err;
298}
299
300static void palmte2_irda_shutdown(struct device *dev)
301{
302 gpio_free(GPIO_NR_PALMTE2_IR_DISABLE);
303}
304
305static void palmte2_irda_transceiver_mode(struct device *dev, int mode)
306{
307 gpio_set_value(GPIO_NR_PALMTE2_IR_DISABLE, mode & IR_OFF);
308 pxa2xx_transceiver_mode(dev, mode);
309}
310
311static struct pxaficp_platform_data palmte2_ficp_platform_data = {
312 .startup = palmte2_irda_startup,
313 .shutdown = palmte2_irda_shutdown,
314 .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
315 .transceiver_mode = palmte2_irda_transceiver_mode,
316};
317
318/******************************************************************************
319 * UDC
320 ******************************************************************************/
321static struct pxa2xx_udc_mach_info palmte2_udc_info __initdata = {
322 .gpio_vbus = GPIO_NR_PALMTE2_USB_DETECT_N,
323 .gpio_vbus_inverted = 1,
324 .gpio_pullup = GPIO_NR_PALMTE2_USB_PULLUP,
325 .gpio_pullup_inverted = 0,
326};
327
328/******************************************************************************
329 * Power supply
330 ******************************************************************************/
331static int power_supply_init(struct device *dev)
332{
333 int ret;
334
335 ret = gpio_request(GPIO_NR_PALMTE2_POWER_DETECT, "CABLE_STATE_AC");
336 if (ret)
337 goto err1;
338 ret = gpio_direction_input(GPIO_NR_PALMTE2_POWER_DETECT);
339 if (ret)
340 goto err2;
341
342 return 0;
343
344err2:
345 gpio_free(GPIO_NR_PALMTE2_POWER_DETECT);
346err1:
347 return ret;
348}
349
350static int palmte2_is_ac_online(void)
351{
352 return gpio_get_value(GPIO_NR_PALMTE2_POWER_DETECT);
353}
354
355static void power_supply_exit(struct device *dev)
356{
357 gpio_free(GPIO_NR_PALMTE2_POWER_DETECT);
358}
359
360static char *palmte2_supplicants[] = {
361 "main-battery",
362};
363
364static struct pda_power_pdata power_supply_info = {
365 .init = power_supply_init,
366 .is_ac_online = palmte2_is_ac_online,
367 .exit = power_supply_exit,
368 .supplied_to = palmte2_supplicants,
369 .num_supplicants = ARRAY_SIZE(palmte2_supplicants),
370};
371
372static struct platform_device power_supply = {
373 .name = "pda-power",
374 .id = -1,
375 .dev = {
376 .platform_data = &power_supply_info,
377 },
378};
379
380/******************************************************************************
381 * WM97xx battery
382 ******************************************************************************/
383static struct wm97xx_batt_info wm97xx_batt_pdata = {
384 .batt_aux = WM97XX_AUX_ID3,
385 .temp_aux = WM97XX_AUX_ID2,
386 .charge_gpio = -1,
387 .max_voltage = PALMTE2_BAT_MAX_VOLTAGE,
388 .min_voltage = PALMTE2_BAT_MIN_VOLTAGE,
389 .batt_mult = 1000,
390 .batt_div = 414,
391 .temp_mult = 1,
392 .temp_div = 1,
393 .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO,
394 .batt_name = "main-batt",
395};
396
397/******************************************************************************
398 * Framebuffer
399 ******************************************************************************/
400static struct pxafb_mode_info palmte2_lcd_modes[] = {
401{
402 .pixclock = 77757,
403 .xres = 320,
404 .yres = 320,
405 .bpp = 16,
406
407 .left_margin = 28,
408 .right_margin = 7,
409 .upper_margin = 7,
410 .lower_margin = 5,
411
412 .hsync_len = 4,
413 .vsync_len = 1,
414},
415};
416
417static struct pxafb_mach_info palmte2_lcd_screen = {
418 .modes = palmte2_lcd_modes,
419 .num_modes = ARRAY_SIZE(palmte2_lcd_modes),
420 .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
421};
422
423/******************************************************************************
424 * Machine init
425 ******************************************************************************/
426static struct platform_device *devices[] __initdata = {
427#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
428 &palmte2_pxa_keys,
429#endif
430 &palmte2_backlight,
431 &power_supply,
432};
433
434/* setup udc GPIOs initial state */
435static void __init palmte2_udc_init(void)
436{
437 if (!gpio_request(GPIO_NR_PALMTE2_USB_PULLUP, "UDC Vbus")) {
438 gpio_direction_output(GPIO_NR_PALMTE2_USB_PULLUP, 1);
439 gpio_free(GPIO_NR_PALMTE2_USB_PULLUP);
440 }
441}
442
443static void __init palmte2_init(void)
444{
445 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config));
446
447 set_pxa_fb_info(&palmte2_lcd_screen);
448 pxa_set_mci_info(&palmte2_mci_platform_data);
449 palmte2_udc_init();
450 pxa_set_udc_info(&palmte2_udc_info);
451 pxa_set_ac97_info(NULL);
452 pxa_set_ficp_info(&palmte2_ficp_platform_data);
453 wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
454
455 platform_add_devices(devices, ARRAY_SIZE(devices));
456}
457
458MACHINE_START(PALMTE2, "Palm Tungsten|E2")
459 .phys_io = 0x40000000,
460 .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
461 .boot_params = 0xa0000100,
462 .map_io = pxa_map_io,
463 .init_irq = pxa25x_init_irq,
464 .timer = &pxa_timer,
465 .init_machine = palmte2_init
466MACHINE_END
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index b490c0924619..59d0c1cba556 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -93,10 +93,10 @@ static unsigned long palmtx_pin_config[] __initdata = {
93 GPIO116_GPIO, /* wifi ready */ 93 GPIO116_GPIO, /* wifi ready */
94 94
95 /* MATRIX KEYPAD */ 95 /* MATRIX KEYPAD */
96 GPIO100_KP_MKIN_0, 96 GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
97 GPIO101_KP_MKIN_1, 97 GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
98 GPIO102_KP_MKIN_2, 98 GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
99 GPIO97_KP_MKIN_3, 99 GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
100 GPIO103_KP_MKOUT_0, 100 GPIO103_KP_MKOUT_0,
101 GPIO104_KP_MKOUT_1, 101 GPIO104_KP_MKOUT_1,
102 GPIO105_KP_MKOUT_2, 102 GPIO105_KP_MKOUT_2,
@@ -459,6 +459,33 @@ static struct pxafb_mach_info palmtx_lcd_screen = {
459}; 459};
460 460
461/****************************************************************************** 461/******************************************************************************
462 * Power management - standby
463 ******************************************************************************/
464#ifdef CONFIG_PM
465static u32 *addr __initdata;
466static u32 resume[3] __initdata = {
467 0xe3a00101, /* mov r0, #0x40000000 */
468 0xe380060f, /* orr r0, r0, #0x00f00000 */
469 0xe590f008, /* ldr pc, [r0, #0x08] */
470};
471
472static int __init palmtx_pm_init(void)
473{
474 int i;
475
476 /* this is where the bootloader jumps */
477 addr = phys_to_virt(PALMTX_STR_BASE);
478
479 for (i = 0; i < 3; i++)
480 addr[i] = resume[i];
481
482 return 0;
483}
484
485device_initcall(palmtx_pm_init);
486#endif
487
488/******************************************************************************
462 * Machine init 489 * Machine init
463 ******************************************************************************/ 490 ******************************************************************************/
464static struct platform_device *devices[] __initdata = { 491static struct platform_device *devices[] __initdata = {
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 6e8ade6ae339..afac5b6d3d78 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -45,6 +45,7 @@
45#include <mach/udc.h> 45#include <mach/udc.h>
46#include <mach/tosa_bt.h> 46#include <mach/tosa_bt.h>
47#include <mach/pxa2xx_spi.h> 47#include <mach/pxa2xx_spi.h>
48#include <mach/audio.h>
48 49
49#include <asm/mach/arch.h> 50#include <asm/mach/arch.h>
50#include <mach/tosa.h> 51#include <mach/tosa.h>
@@ -914,6 +915,7 @@ static void __init tosa_init(void)
914 pxa_set_udc_info(&udc_info); 915 pxa_set_udc_info(&udc_info);
915 pxa_set_ficp_info(&tosa_ficp_platform_data); 916 pxa_set_ficp_info(&tosa_ficp_platform_data);
916 pxa_set_i2c_info(NULL); 917 pxa_set_i2c_info(NULL);
918 pxa_set_ac97_info(NULL);
917 platform_scoop_config = &tosa_pcmcia_config; 919 platform_scoop_config = &tosa_pcmcia_config;
918 920
919 pxa2xx_set_spi_info(2, &pxa_ssp_master_info); 921 pxa2xx_set_spi_info(2, &pxa_ssp_master_info);
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index b438fc4fb77b..e6344ece00ce 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -828,6 +828,17 @@ void __init reserve_node_zero(pg_data_t *pgdat)
828 BOOTMEM_DEFAULT); 828 BOOTMEM_DEFAULT);
829 } 829 }
830 830
831 if (machine_is_palmld() || machine_is_palmtx()) {
832 reserve_bootmem_node(pgdat, 0xa0000000, 0x1000,
833 BOOTMEM_EXCLUSIVE);
834 reserve_bootmem_node(pgdat, 0xa0200000, 0x1000,
835 BOOTMEM_EXCLUSIVE);
836 }
837
838 if (machine_is_palmt5())
839 reserve_bootmem_node(pgdat, 0xa0200000, 0x1000,
840 BOOTMEM_EXCLUSIVE);
841
831#ifdef CONFIG_SA1111 842#ifdef CONFIG_SA1111
832 /* 843 /*
833 * Because of the SA1111 DMA bug, we want to preserve our 844 * Because of the SA1111 DMA bug, we want to preserve our
diff --git a/include/asm-frv/Kbuild b/arch/frv/include/asm/Kbuild
index 0f8956def738..0f8956def738 100644
--- a/include/asm-frv/Kbuild
+++ b/arch/frv/include/asm/Kbuild
diff --git a/include/asm-frv/atomic.h b/arch/frv/include/asm/atomic.h
index 296c35cfb207..296c35cfb207 100644
--- a/include/asm-frv/atomic.h
+++ b/arch/frv/include/asm/atomic.h
diff --git a/include/asm-frv/auxvec.h b/arch/frv/include/asm/auxvec.h
index 07710778fa10..07710778fa10 100644
--- a/include/asm-frv/auxvec.h
+++ b/arch/frv/include/asm/auxvec.h
diff --git a/include/asm-frv/ax88796.h b/arch/frv/include/asm/ax88796.h
index 637e980393c5..637e980393c5 100644
--- a/include/asm-frv/ax88796.h
+++ b/arch/frv/include/asm/ax88796.h
diff --git a/include/asm-frv/bitops.h b/arch/frv/include/asm/bitops.h
index 287f6f697ce2..287f6f697ce2 100644
--- a/include/asm-frv/bitops.h
+++ b/arch/frv/include/asm/bitops.h
diff --git a/include/asm-frv/bug.h b/arch/frv/include/asm/bug.h
index 6b1b44d71028..6b1b44d71028 100644
--- a/include/asm-frv/bug.h
+++ b/arch/frv/include/asm/bug.h
diff --git a/include/asm-frv/bugs.h b/arch/frv/include/asm/bugs.h
index f2382be2b46c..f2382be2b46c 100644
--- a/include/asm-frv/bugs.h
+++ b/arch/frv/include/asm/bugs.h
diff --git a/include/asm-frv/busctl-regs.h b/arch/frv/include/asm/busctl-regs.h
index bb0ff4816e27..bb0ff4816e27 100644
--- a/include/asm-frv/busctl-regs.h
+++ b/arch/frv/include/asm/busctl-regs.h
diff --git a/include/asm-frv/byteorder.h b/arch/frv/include/asm/byteorder.h
index f29b7593e088..f29b7593e088 100644
--- a/include/asm-frv/byteorder.h
+++ b/arch/frv/include/asm/byteorder.h
diff --git a/include/asm-frv/cache.h b/arch/frv/include/asm/cache.h
index 2797163b8f4f..2797163b8f4f 100644
--- a/include/asm-frv/cache.h
+++ b/arch/frv/include/asm/cache.h
diff --git a/include/asm-frv/cacheflush.h b/arch/frv/include/asm/cacheflush.h
index 432a69e7f3d4..432a69e7f3d4 100644
--- a/include/asm-frv/cacheflush.h
+++ b/arch/frv/include/asm/cacheflush.h
diff --git a/include/asm-frv/checksum.h b/arch/frv/include/asm/checksum.h
index 269da09ff637..269da09ff637 100644
--- a/include/asm-frv/checksum.h
+++ b/arch/frv/include/asm/checksum.h
diff --git a/include/asm-frv/cpu-irqs.h b/arch/frv/include/asm/cpu-irqs.h
index 478f3498fcfe..478f3498fcfe 100644
--- a/include/asm-frv/cpu-irqs.h
+++ b/arch/frv/include/asm/cpu-irqs.h
diff --git a/include/asm-frv/cpumask.h b/arch/frv/include/asm/cpumask.h
index d999c20c84d2..d999c20c84d2 100644
--- a/include/asm-frv/cpumask.h
+++ b/arch/frv/include/asm/cpumask.h
diff --git a/include/asm-frv/cputime.h b/arch/frv/include/asm/cputime.h
index f6c373ad2b80..f6c373ad2b80 100644
--- a/include/asm-frv/cputime.h
+++ b/arch/frv/include/asm/cputime.h
diff --git a/include/asm-frv/current.h b/arch/frv/include/asm/current.h
index 86b027491b08..86b027491b08 100644
--- a/include/asm-frv/current.h
+++ b/arch/frv/include/asm/current.h
diff --git a/include/asm-frv/delay.h b/arch/frv/include/asm/delay.h
index 597b4ebf03b4..597b4ebf03b4 100644
--- a/include/asm-frv/delay.h
+++ b/arch/frv/include/asm/delay.h
diff --git a/include/asm-frv/device.h b/arch/frv/include/asm/device.h
index d8f9872b0e2d..d8f9872b0e2d 100644
--- a/include/asm-frv/device.h
+++ b/arch/frv/include/asm/device.h
diff --git a/include/asm-frv/div64.h b/arch/frv/include/asm/div64.h
index 6cd978cefb28..6cd978cefb28 100644
--- a/include/asm-frv/div64.h
+++ b/arch/frv/include/asm/div64.h
diff --git a/include/asm-frv/dm9000.h b/arch/frv/include/asm/dm9000.h
index f6f48fd9ec6e..f6f48fd9ec6e 100644
--- a/include/asm-frv/dm9000.h
+++ b/arch/frv/include/asm/dm9000.h
diff --git a/include/asm-frv/dma-mapping.h b/arch/frv/include/asm/dma-mapping.h
index b2898877c07b..b2898877c07b 100644
--- a/include/asm-frv/dma-mapping.h
+++ b/arch/frv/include/asm/dma-mapping.h
diff --git a/include/asm-frv/dma.h b/arch/frv/include/asm/dma.h
index 683c47d48a5b..683c47d48a5b 100644
--- a/include/asm-frv/dma.h
+++ b/arch/frv/include/asm/dma.h
diff --git a/include/asm-frv/elf.h b/arch/frv/include/asm/elf.h
index 7279ec07d62e..7279ec07d62e 100644
--- a/include/asm-frv/elf.h
+++ b/arch/frv/include/asm/elf.h
diff --git a/include/asm-frv/emergency-restart.h b/arch/frv/include/asm/emergency-restart.h
index 108d8c48e42e..108d8c48e42e 100644
--- a/include/asm-frv/emergency-restart.h
+++ b/arch/frv/include/asm/emergency-restart.h
diff --git a/include/asm-frv/errno.h b/arch/frv/include/asm/errno.h
index d010795ceefe..d010795ceefe 100644
--- a/include/asm-frv/errno.h
+++ b/arch/frv/include/asm/errno.h
diff --git a/include/asm-frv/fb.h b/arch/frv/include/asm/fb.h
index c7df38030992..c7df38030992 100644
--- a/include/asm-frv/fb.h
+++ b/arch/frv/include/asm/fb.h
diff --git a/include/asm-frv/fcntl.h b/arch/frv/include/asm/fcntl.h
index 46ab12db5739..46ab12db5739 100644
--- a/include/asm-frv/fcntl.h
+++ b/arch/frv/include/asm/fcntl.h
diff --git a/include/asm-frv/fpu.h b/arch/frv/include/asm/fpu.h
index d73c60b56641..d73c60b56641 100644
--- a/include/asm-frv/fpu.h
+++ b/arch/frv/include/asm/fpu.h
diff --git a/include/asm-frv/ftrace.h b/arch/frv/include/asm/ftrace.h
index 40a8c178f10d..40a8c178f10d 100644
--- a/include/asm-frv/ftrace.h
+++ b/arch/frv/include/asm/ftrace.h
diff --git a/include/asm-frv/futex.h b/arch/frv/include/asm/futex.h
index 08b3d1da3583..08b3d1da3583 100644
--- a/include/asm-frv/futex.h
+++ b/arch/frv/include/asm/futex.h
diff --git a/include/asm-frv/gdb-stub.h b/arch/frv/include/asm/gdb-stub.h
index 24f9738670bd..24f9738670bd 100644
--- a/include/asm-frv/gdb-stub.h
+++ b/arch/frv/include/asm/gdb-stub.h
diff --git a/include/asm-frv/gpio-regs.h b/arch/frv/include/asm/gpio-regs.h
index 9edf5d5d4d3f..9edf5d5d4d3f 100644
--- a/include/asm-frv/gpio-regs.h
+++ b/arch/frv/include/asm/gpio-regs.h
diff --git a/include/asm-frv/hardirq.h b/arch/frv/include/asm/hardirq.h
index fc47515822a2..fc47515822a2 100644
--- a/include/asm-frv/hardirq.h
+++ b/arch/frv/include/asm/hardirq.h
diff --git a/include/asm-frv/highmem.h b/arch/frv/include/asm/highmem.h
index 68e4677fb9e7..68e4677fb9e7 100644
--- a/include/asm-frv/highmem.h
+++ b/arch/frv/include/asm/highmem.h
diff --git a/include/asm-frv/hw_irq.h b/arch/frv/include/asm/hw_irq.h
index 522ad37923d8..522ad37923d8 100644
--- a/include/asm-frv/hw_irq.h
+++ b/arch/frv/include/asm/hw_irq.h
diff --git a/include/asm-frv/init.h b/arch/frv/include/asm/init.h
index 8b15838de216..8b15838de216 100644
--- a/include/asm-frv/init.h
+++ b/arch/frv/include/asm/init.h
diff --git a/include/asm-frv/io.h b/arch/frv/include/asm/io.h
index ca7475e73b5e..ca7475e73b5e 100644
--- a/include/asm-frv/io.h
+++ b/arch/frv/include/asm/io.h
diff --git a/include/asm-frv/ioctl.h b/arch/frv/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/include/asm-frv/ioctl.h
+++ b/arch/frv/include/asm/ioctl.h
diff --git a/include/asm-frv/ioctls.h b/arch/frv/include/asm/ioctls.h
index d0c30e31fbda..d0c30e31fbda 100644
--- a/include/asm-frv/ioctls.h
+++ b/arch/frv/include/asm/ioctls.h
diff --git a/include/asm-frv/ipcbuf.h b/arch/frv/include/asm/ipcbuf.h
index b546f67e455f..b546f67e455f 100644
--- a/include/asm-frv/ipcbuf.h
+++ b/arch/frv/include/asm/ipcbuf.h
diff --git a/include/asm-frv/irc-regs.h b/arch/frv/include/asm/irc-regs.h
index afa30aeacc82..afa30aeacc82 100644
--- a/include/asm-frv/irc-regs.h
+++ b/arch/frv/include/asm/irc-regs.h
diff --git a/include/asm-frv/irq.h b/arch/frv/include/asm/irq.h
index 3a66ebd754bd..3a66ebd754bd 100644
--- a/include/asm-frv/irq.h
+++ b/arch/frv/include/asm/irq.h
diff --git a/include/asm-frv/irq_regs.h b/arch/frv/include/asm/irq_regs.h
index d22e83289ad1..d22e83289ad1 100644
--- a/include/asm-frv/irq_regs.h
+++ b/arch/frv/include/asm/irq_regs.h
diff --git a/include/asm-frv/kdebug.h b/arch/frv/include/asm/kdebug.h
index 6ece1b037665..6ece1b037665 100644
--- a/include/asm-frv/kdebug.h
+++ b/arch/frv/include/asm/kdebug.h
diff --git a/include/asm-frv/kmap_types.h b/arch/frv/include/asm/kmap_types.h
index f8e16b2a5804..f8e16b2a5804 100644
--- a/include/asm-frv/kmap_types.h
+++ b/arch/frv/include/asm/kmap_types.h
diff --git a/include/asm-frv/linkage.h b/arch/frv/include/asm/linkage.h
index 636c1bced7d4..636c1bced7d4 100644
--- a/include/asm-frv/linkage.h
+++ b/arch/frv/include/asm/linkage.h
diff --git a/include/asm-frv/local.h b/arch/frv/include/asm/local.h
index c27bdf04630e..c27bdf04630e 100644
--- a/include/asm-frv/local.h
+++ b/arch/frv/include/asm/local.h
diff --git a/include/asm-frv/math-emu.h b/arch/frv/include/asm/math-emu.h
index 0c8f731b2180..0c8f731b2180 100644
--- a/include/asm-frv/math-emu.h
+++ b/arch/frv/include/asm/math-emu.h
diff --git a/include/asm-frv/mb-regs.h b/arch/frv/include/asm/mb-regs.h
index 219e5f926f18..219e5f926f18 100644
--- a/include/asm-frv/mb-regs.h
+++ b/arch/frv/include/asm/mb-regs.h
diff --git a/include/asm-frv/mb86943a.h b/arch/frv/include/asm/mb86943a.h
index e87ef924bfb4..e87ef924bfb4 100644
--- a/include/asm-frv/mb86943a.h
+++ b/arch/frv/include/asm/mb86943a.h
diff --git a/include/asm-frv/mb93091-fpga-irqs.h b/arch/frv/include/asm/mb93091-fpga-irqs.h
index 19778c5ba9d6..19778c5ba9d6 100644
--- a/include/asm-frv/mb93091-fpga-irqs.h
+++ b/arch/frv/include/asm/mb93091-fpga-irqs.h
diff --git a/include/asm-frv/mb93093-fpga-irqs.h b/arch/frv/include/asm/mb93093-fpga-irqs.h
index 590266b1a6d3..590266b1a6d3 100644
--- a/include/asm-frv/mb93093-fpga-irqs.h
+++ b/arch/frv/include/asm/mb93093-fpga-irqs.h
diff --git a/include/asm-frv/mb93493-irqs.h b/arch/frv/include/asm/mb93493-irqs.h
index 82c7aeddd333..82c7aeddd333 100644
--- a/include/asm-frv/mb93493-irqs.h
+++ b/arch/frv/include/asm/mb93493-irqs.h
diff --git a/include/asm-frv/mb93493-regs.h b/arch/frv/include/asm/mb93493-regs.h
index 8a1f6aac8cf1..8a1f6aac8cf1 100644
--- a/include/asm-frv/mb93493-regs.h
+++ b/arch/frv/include/asm/mb93493-regs.h
diff --git a/include/asm-frv/mc146818rtc.h b/arch/frv/include/asm/mc146818rtc.h
index 90dfb7a633d1..90dfb7a633d1 100644
--- a/include/asm-frv/mc146818rtc.h
+++ b/arch/frv/include/asm/mc146818rtc.h
diff --git a/include/asm-frv/mem-layout.h b/arch/frv/include/asm/mem-layout.h
index 2947764fc0e0..2947764fc0e0 100644
--- a/include/asm-frv/mem-layout.h
+++ b/arch/frv/include/asm/mem-layout.h
diff --git a/include/asm-frv/mman.h b/arch/frv/include/asm/mman.h
index b4371e928683..b4371e928683 100644
--- a/include/asm-frv/mman.h
+++ b/arch/frv/include/asm/mman.h
diff --git a/include/asm-frv/mmu.h b/arch/frv/include/asm/mmu.h
index 86ca0e86e7d2..86ca0e86e7d2 100644
--- a/include/asm-frv/mmu.h
+++ b/arch/frv/include/asm/mmu.h
diff --git a/include/asm-frv/mmu_context.h b/arch/frv/include/asm/mmu_context.h
index c7daa395156a..c7daa395156a 100644
--- a/include/asm-frv/mmu_context.h
+++ b/arch/frv/include/asm/mmu_context.h
diff --git a/include/asm-frv/module.h b/arch/frv/include/asm/module.h
index 3d5c6360289a..3d5c6360289a 100644
--- a/include/asm-frv/module.h
+++ b/arch/frv/include/asm/module.h
diff --git a/include/asm-frv/msgbuf.h b/arch/frv/include/asm/msgbuf.h
index 97ceb55a06fb..97ceb55a06fb 100644
--- a/include/asm-frv/msgbuf.h
+++ b/arch/frv/include/asm/msgbuf.h
diff --git a/include/asm-frv/mutex.h b/arch/frv/include/asm/mutex.h
index 458c1f7fbc18..458c1f7fbc18 100644
--- a/include/asm-frv/mutex.h
+++ b/arch/frv/include/asm/mutex.h
diff --git a/include/asm-frv/page.h b/arch/frv/include/asm/page.h
index bd9c220094c7..bd9c220094c7 100644
--- a/include/asm-frv/page.h
+++ b/arch/frv/include/asm/page.h
diff --git a/include/asm-frv/param.h b/arch/frv/include/asm/param.h
index 6859dd503ed3..6859dd503ed3 100644
--- a/include/asm-frv/param.h
+++ b/arch/frv/include/asm/param.h
diff --git a/include/asm-frv/pci.h b/arch/frv/include/asm/pci.h
index 585d9b49949a..585d9b49949a 100644
--- a/include/asm-frv/pci.h
+++ b/arch/frv/include/asm/pci.h
diff --git a/include/asm-frv/percpu.h b/arch/frv/include/asm/percpu.h
index 2cad3f874ded..2cad3f874ded 100644
--- a/include/asm-frv/percpu.h
+++ b/arch/frv/include/asm/percpu.h
diff --git a/include/asm-frv/pgalloc.h b/arch/frv/include/asm/pgalloc.h
index 971e6addb009..971e6addb009 100644
--- a/include/asm-frv/pgalloc.h
+++ b/arch/frv/include/asm/pgalloc.h
diff --git a/include/asm-frv/pgtable.h b/arch/frv/include/asm/pgtable.h
index e16fdb1f4f4f..33233011b1c1 100644
--- a/include/asm-frv/pgtable.h
+++ b/arch/frv/include/asm/pgtable.h
@@ -71,10 +71,8 @@ static inline int pte_file(pte_t pte) { return 0; }
71#define swapper_pg_dir ((pgd_t *) NULL) 71#define swapper_pg_dir ((pgd_t *) NULL)
72 72
73#define pgtable_cache_init() do {} while (0) 73#define pgtable_cache_init() do {} while (0)
74#define arch_enter_lazy_mmu_mode() do {} while (0) 74
75#define arch_leave_lazy_mmu_mode() do {} while (0) 75#include <asm-generic/pgtable.h>
76#define arch_enter_lazy_cpu_mode() do {} while (0)
77#define arch_leave_lazy_cpu_mode() do {} while (0)
78 76
79#else /* !CONFIG_MMU */ 77#else /* !CONFIG_MMU */
80/*****************************************************************************/ 78/*****************************************************************************/
diff --git a/include/asm-frv/poll.h b/arch/frv/include/asm/poll.h
index 0d01479ccc56..0d01479ccc56 100644
--- a/include/asm-frv/poll.h
+++ b/arch/frv/include/asm/poll.h
diff --git a/include/asm-frv/posix_types.h b/arch/frv/include/asm/posix_types.h
index a9f1f5be0632..a9f1f5be0632 100644
--- a/include/asm-frv/posix_types.h
+++ b/arch/frv/include/asm/posix_types.h
diff --git a/include/asm-frv/processor.h b/arch/frv/include/asm/processor.h
index 3744f2e47f48..3744f2e47f48 100644
--- a/include/asm-frv/processor.h
+++ b/arch/frv/include/asm/processor.h
diff --git a/include/asm-frv/ptrace.h b/arch/frv/include/asm/ptrace.h
index cf6934012b64..cf6934012b64 100644
--- a/include/asm-frv/ptrace.h
+++ b/arch/frv/include/asm/ptrace.h
diff --git a/include/asm-frv/registers.h b/arch/frv/include/asm/registers.h
index 9666119fcf6e..9666119fcf6e 100644
--- a/include/asm-frv/registers.h
+++ b/arch/frv/include/asm/registers.h
diff --git a/include/asm-frv/resource.h b/arch/frv/include/asm/resource.h
index 5fc60548fd02..5fc60548fd02 100644
--- a/include/asm-frv/resource.h
+++ b/arch/frv/include/asm/resource.h
diff --git a/include/asm-frv/scatterlist.h b/arch/frv/include/asm/scatterlist.h
index 4bca8a28546c..4bca8a28546c 100644
--- a/include/asm-frv/scatterlist.h
+++ b/arch/frv/include/asm/scatterlist.h
diff --git a/include/asm-frv/sections.h b/arch/frv/include/asm/sections.h
index 17d0fb171bba..17d0fb171bba 100644
--- a/include/asm-frv/sections.h
+++ b/arch/frv/include/asm/sections.h
diff --git a/include/asm-frv/segment.h b/arch/frv/include/asm/segment.h
index e3616a6f941d..e3616a6f941d 100644
--- a/include/asm-frv/segment.h
+++ b/arch/frv/include/asm/segment.h
diff --git a/include/asm-frv/sembuf.h b/arch/frv/include/asm/sembuf.h
index 164b12786d6d..164b12786d6d 100644
--- a/include/asm-frv/sembuf.h
+++ b/arch/frv/include/asm/sembuf.h
diff --git a/include/asm-frv/serial-regs.h b/arch/frv/include/asm/serial-regs.h
index e1286bda00eb..e1286bda00eb 100644
--- a/include/asm-frv/serial-regs.h
+++ b/arch/frv/include/asm/serial-regs.h
diff --git a/include/asm-frv/serial.h b/arch/frv/include/asm/serial.h
index dbb825998689..dbb825998689 100644
--- a/include/asm-frv/serial.h
+++ b/arch/frv/include/asm/serial.h
diff --git a/include/asm-frv/setup.h b/arch/frv/include/asm/setup.h
index afd787ceede6..afd787ceede6 100644
--- a/include/asm-frv/setup.h
+++ b/arch/frv/include/asm/setup.h
diff --git a/include/asm-frv/shmbuf.h b/arch/frv/include/asm/shmbuf.h
index 4c6e711a4779..4c6e711a4779 100644
--- a/include/asm-frv/shmbuf.h
+++ b/arch/frv/include/asm/shmbuf.h
diff --git a/include/asm-frv/shmparam.h b/arch/frv/include/asm/shmparam.h
index ab711009cfaa..ab711009cfaa 100644
--- a/include/asm-frv/shmparam.h
+++ b/arch/frv/include/asm/shmparam.h
diff --git a/include/asm-frv/sigcontext.h b/arch/frv/include/asm/sigcontext.h
index 3b263f3cc96f..3b263f3cc96f 100644
--- a/include/asm-frv/sigcontext.h
+++ b/arch/frv/include/asm/sigcontext.h
diff --git a/include/asm-frv/siginfo.h b/arch/frv/include/asm/siginfo.h
index d3fd1ca45653..d3fd1ca45653 100644
--- a/include/asm-frv/siginfo.h
+++ b/arch/frv/include/asm/siginfo.h
diff --git a/include/asm-frv/signal.h b/arch/frv/include/asm/signal.h
index 2079197d483d..2079197d483d 100644
--- a/include/asm-frv/signal.h
+++ b/arch/frv/include/asm/signal.h
diff --git a/include/asm-frv/smp.h b/arch/frv/include/asm/smp.h
index 38349ec8b61b..38349ec8b61b 100644
--- a/include/asm-frv/smp.h
+++ b/arch/frv/include/asm/smp.h
diff --git a/include/asm-frv/socket.h b/arch/frv/include/asm/socket.h
index 57c3d4054e8b..57c3d4054e8b 100644
--- a/include/asm-frv/socket.h
+++ b/arch/frv/include/asm/socket.h
diff --git a/include/asm-frv/sockios.h b/arch/frv/include/asm/sockios.h
index 5dbdd13e6de3..5dbdd13e6de3 100644
--- a/include/asm-frv/sockios.h
+++ b/arch/frv/include/asm/sockios.h
diff --git a/include/asm-frv/spinlock.h b/arch/frv/include/asm/spinlock.h
index fe385f45d1fd..fe385f45d1fd 100644
--- a/include/asm-frv/spinlock.h
+++ b/arch/frv/include/asm/spinlock.h
diff --git a/include/asm-frv/spr-regs.h b/arch/frv/include/asm/spr-regs.h
index 01e6af5e99b8..01e6af5e99b8 100644
--- a/include/asm-frv/spr-regs.h
+++ b/arch/frv/include/asm/spr-regs.h
diff --git a/include/asm-frv/stat.h b/arch/frv/include/asm/stat.h
index ce56de9b37ba..ce56de9b37ba 100644
--- a/include/asm-frv/stat.h
+++ b/arch/frv/include/asm/stat.h
diff --git a/include/asm-frv/statfs.h b/arch/frv/include/asm/statfs.h
index 741f586045ba..741f586045ba 100644
--- a/include/asm-frv/statfs.h
+++ b/arch/frv/include/asm/statfs.h
diff --git a/include/asm-frv/string.h b/arch/frv/include/asm/string.h
index 5ed310f64b7e..5ed310f64b7e 100644
--- a/include/asm-frv/string.h
+++ b/arch/frv/include/asm/string.h
diff --git a/include/asm-frv/suspend.h b/arch/frv/include/asm/suspend.h
index 5fa7b5a6ee40..5fa7b5a6ee40 100644
--- a/include/asm-frv/suspend.h
+++ b/arch/frv/include/asm/suspend.h
diff --git a/include/asm-frv/swab.h b/arch/frv/include/asm/swab.h
index f305834b4799..f305834b4799 100644
--- a/include/asm-frv/swab.h
+++ b/arch/frv/include/asm/swab.h
diff --git a/include/asm-frv/system.h b/arch/frv/include/asm/system.h
index 7742ec000cc4..7742ec000cc4 100644
--- a/include/asm-frv/system.h
+++ b/arch/frv/include/asm/system.h
diff --git a/include/asm-frv/termbits.h b/arch/frv/include/asm/termbits.h
index 5568492b5086..5568492b5086 100644
--- a/include/asm-frv/termbits.h
+++ b/arch/frv/include/asm/termbits.h
diff --git a/include/asm-frv/termios.h b/arch/frv/include/asm/termios.h
index a62fb5872375..a62fb5872375 100644
--- a/include/asm-frv/termios.h
+++ b/arch/frv/include/asm/termios.h
diff --git a/include/asm-frv/thread_info.h b/arch/frv/include/asm/thread_info.h
index b7ac6bf2844c..bb53ab753ffb 100644
--- a/include/asm-frv/thread_info.h
+++ b/arch/frv/include/asm/thread_info.h
@@ -38,9 +38,9 @@ struct thread_info {
38 int preempt_count; /* 0 => preemptable, <0 => BUG */ 38 int preempt_count; /* 0 => preemptable, <0 => BUG */
39 39
40 mm_segment_t addr_limit; /* thread address space: 40 mm_segment_t addr_limit; /* thread address space:
41 0-0xBFFFFFFF for user-thead 41 * 0-0xBFFFFFFF for user-thead
42 0-0xFFFFFFFF for kernel-thread 42 * 0-0xFFFFFFFF for kernel-thread
43 */ 43 */
44 struct restart_block restart_block; 44 struct restart_block restart_block;
45 45
46 __u8 supervisor_stack[0]; 46 __u8 supervisor_stack[0];
diff --git a/include/asm-frv/timer-regs.h b/arch/frv/include/asm/timer-regs.h
index 6c5a871ce5e9..6c5a871ce5e9 100644
--- a/include/asm-frv/timer-regs.h
+++ b/arch/frv/include/asm/timer-regs.h
diff --git a/include/asm-frv/timex.h b/arch/frv/include/asm/timex.h
index a89bddefdacf..a89bddefdacf 100644
--- a/include/asm-frv/timex.h
+++ b/arch/frv/include/asm/timex.h
diff --git a/include/asm-frv/tlb.h b/arch/frv/include/asm/tlb.h
index cd458eb6d75e..cd458eb6d75e 100644
--- a/include/asm-frv/tlb.h
+++ b/arch/frv/include/asm/tlb.h
diff --git a/include/asm-frv/tlbflush.h b/arch/frv/include/asm/tlbflush.h
index 7ac5eafc5d98..7ac5eafc5d98 100644
--- a/include/asm-frv/tlbflush.h
+++ b/arch/frv/include/asm/tlbflush.h
diff --git a/include/asm-frv/topology.h b/arch/frv/include/asm/topology.h
index 942724352705..942724352705 100644
--- a/include/asm-frv/topology.h
+++ b/arch/frv/include/asm/topology.h
diff --git a/include/asm-frv/types.h b/arch/frv/include/asm/types.h
index 613bf1e962f0..613bf1e962f0 100644
--- a/include/asm-frv/types.h
+++ b/arch/frv/include/asm/types.h
diff --git a/include/asm-frv/uaccess.h b/arch/frv/include/asm/uaccess.h
index 53650c958f41..53650c958f41 100644
--- a/include/asm-frv/uaccess.h
+++ b/arch/frv/include/asm/uaccess.h
diff --git a/include/asm-frv/ucontext.h b/arch/frv/include/asm/ucontext.h
index 8d8c0c948007..8d8c0c948007 100644
--- a/include/asm-frv/ucontext.h
+++ b/arch/frv/include/asm/ucontext.h
diff --git a/include/asm-frv/unaligned.h b/arch/frv/include/asm/unaligned.h
index 6c61c05b2e0c..6c61c05b2e0c 100644
--- a/include/asm-frv/unaligned.h
+++ b/arch/frv/include/asm/unaligned.h
diff --git a/include/asm-frv/unistd.h b/arch/frv/include/asm/unistd.h
index edcfaf5f0414..edcfaf5f0414 100644
--- a/include/asm-frv/unistd.h
+++ b/arch/frv/include/asm/unistd.h
diff --git a/include/asm-frv/user.h b/arch/frv/include/asm/user.h
index 82fa8fab64ae..82fa8fab64ae 100644
--- a/include/asm-frv/user.h
+++ b/arch/frv/include/asm/user.h
diff --git a/include/asm-frv/vga.h b/arch/frv/include/asm/vga.h
index a702c800a229..a702c800a229 100644
--- a/include/asm-frv/vga.h
+++ b/arch/frv/include/asm/vga.h
diff --git a/include/asm-frv/virtconvert.h b/arch/frv/include/asm/virtconvert.h
index 59788fa2a813..59788fa2a813 100644
--- a/include/asm-frv/virtconvert.h
+++ b/arch/frv/include/asm/virtconvert.h
diff --git a/include/asm-frv/xor.h b/arch/frv/include/asm/xor.h
index c82eb12a5b18..c82eb12a5b18 100644
--- a/include/asm-frv/xor.h
+++ b/arch/frv/include/asm/xor.h
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index 9015979ebe0f..10a9eb05f74d 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -308,11 +308,13 @@
308#define __NR_dup3 1316 308#define __NR_dup3 1316
309#define __NR_pipe2 1317 309#define __NR_pipe2 1317
310#define __NR_inotify_init1 1318 310#define __NR_inotify_init1 1318
311#define __NR_preadv 1319
312#define __NR_pwritev 1320
311 313
312#ifdef __KERNEL__ 314#ifdef __KERNEL__
313 315
314 316
315#define NR_syscalls 295 /* length of syscall table */ 317#define NR_syscalls 297 /* length of syscall table */
316 318
317/* 319/*
318 * The following defines stop scripts/checksyscalls.sh from complaining about 320 * The following defines stop scripts/checksyscalls.sh from complaining about
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 8dc69669586a..7bebac0e1d44 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1803,6 +1803,8 @@ sys_call_table:
1803 data8 sys_dup3 1803 data8 sys_dup3
1804 data8 sys_pipe2 1804 data8 sys_pipe2
1805 data8 sys_inotify_init1 1805 data8 sys_inotify_init1
1806 data8 sys_preadv
1807 data8 sys_pwritev // 1320
1806 1808
1807 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 1809 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
1808#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ 1810#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
new file mode 100644
index 000000000000..8cc312b5d4dc
--- /dev/null
+++ b/arch/microblaze/Kconfig
@@ -0,0 +1,141 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3
4mainmenu "Linux/Microblaze Kernel Configuration"
5
6config MICROBLAZE
7 def_bool y
8 select HAVE_LMB
9
10config SWAP
11 def_bool n
12
13config RWSEM_GENERIC_SPINLOCK
14 def_bool y
15
16config RWSEM_XCHGADD_ALGORITHM
17 bool
18
19config ARCH_HAS_ILOG2_U32
20 def_bool n
21
22config ARCH_HAS_ILOG2_U64
23 def_bool n
24
25config GENERIC_FIND_NEXT_BIT
26 def_bool y
27
28config GENERIC_HWEIGHT
29 def_bool y
30
31config GENERIC_HARDIRQS
32 def_bool y
33
34config GENERIC_IRQ_PROBE
35 def_bool y
36
37config GENERIC_CALIBRATE_DELAY
38 def_bool y
39
40config GENERIC_TIME
41 def_bool y
42
43config GENERIC_TIME_VSYSCALL
44 def_bool n
45
46config GENERIC_CLOCKEVENTS
47 def_bool y
48
49config GENERIC_HARDIRQS_NO__DO_IRQ
50 def_bool y
51
52config PCI
53 depends on !MMU
54 def_bool n
55
56config NO_DMA
57 depends on !MMU
58 def_bool n
59
60source "init/Kconfig"
61
62source "kernel/Kconfig.freezer"
63
64source "arch/microblaze/platform/Kconfig.platform"
65
66menu "Processor type and features"
67
68source kernel/time/Kconfig
69
70source "kernel/Kconfig.preempt"
71
72source "kernel/Kconfig.hz"
73
74config MMU
75 def_bool n
76
77config NO_MMU
78 bool
79 depends on !MMU
80 default y
81
82comment "Boot options"
83
84config CMDLINE_BOOL
85 bool "Default bootloader kernel arguments"
86
87config CMDLINE
88 string "Default kernel command string"
89 depends on CMDLINE_BOOL
90 default "console=ttyUL0,115200"
91 help
92 On some architectures there is currently no way for the boot loader
93 to pass arguments to the kernel. For these architectures, you should
94 supply some command-line options at build time by entering them
95 here.
96
97config CMDLINE_FORCE
98 bool "Force default kernel command string"
99 depends on CMDLINE_BOOL
100 default n
101 help
102 Set this to have arguments from the default kernel command string
103 override those passed by the boot loader.
104
105config OF
106 def_bool y
107
108config OF_DEVICE
109 def_bool y
110
111config PROC_DEVICETREE
112 bool "Support for device tree in /proc"
113 depends on PROC_FS
114 help
115 This option adds a device-tree directory under /proc which contains
116 an image of the device tree that the kernel copies from Open
117 Firmware or other boot firmware. If unsure, say Y here.
118
119endmenu
120
121source "mm/Kconfig"
122
123menu "Exectuable file formats"
124
125source "fs/Kconfig.binfmt"
126
127endmenu
128
129source "net/Kconfig"
130
131source "drivers/Kconfig"
132
133source "fs/Kconfig"
134
135source "arch/microblaze/Kconfig.debug"
136
137source "security/Kconfig"
138
139source "crypto/Kconfig"
140
141source "lib/Kconfig"
diff --git a/arch/microblaze/Kconfig.debug b/arch/microblaze/Kconfig.debug
new file mode 100644
index 000000000000..242cd35bdb4b
--- /dev/null
+++ b/arch/microblaze/Kconfig.debug
@@ -0,0 +1,26 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3
4menu "Kernel hacking"
5
6source "lib/Kconfig.debug"
7
8config EARLY_PRINTK
9 bool "Early printk function for kernel"
10 default n
11 help
12 This option turns on/off early printk messages to console.
13 First Uartlite node is taken.
14
15config HEART_BEAT
16 bool "Heart beat function for kernel"
17 default n
18 help
19 This option turns on/off heart beat kernel functionality.
20 First GPIO node is taken.
21
22config DEBUG_BOOTMEM
23 depends on DEBUG_KERNEL
24 bool "Debug BOOTMEM initialization"
25
26endmenu
diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
new file mode 100644
index 000000000000..0dcbb9832974
--- /dev/null
+++ b/arch/microblaze/Makefile
@@ -0,0 +1,69 @@
1UTS_SYSNAME = -DUTS_SYSNAME=\"uClinux\"
2
3# What CPU vesion are we building for, and crack it open
4# as major.minor.rev
5CPU_VER=$(subst ",,$(CONFIG_XILINX_MICROBLAZE0_HW_VER) )
6CPU_MAJOR=$(shell echo $(CPU_VER) | cut -d '.' -f 1)
7CPU_MINOR=$(shell echo $(CPU_VER) | cut -d '.' -f 2)
8CPU_REV=$(shell echo $(CPU_VER) | cut -d '.' -f 3)
9
10export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
11
12# Use cpu-related CONFIG_ vars to set compile options.
13
14# Work out HW multipler support. This is icky.
15# 1. Spartan2 has no HW multiplers.
16# 2. MicroBlaze v3.x always uses them, except in Spartan 2
17# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
18ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
19 ifeq ($(CPU_MAJOR),3)
20 CPUFLAGS-1 += -mno-xl-soft-mul
21 else
22 # USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
23 CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += -mxl-multiply-high
24 CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
25 endif
26endif
27CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
28CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
29CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
30
31CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
32
33# The various CONFIG_XILINX cpu features options are integers 0/1/2...
34# rather than bools y/n
35CFLAGS += $(CPUFLAGS-1)
36CFLAGS += $(CPUFLAGS-2)
37
38# r31 holds current when in kernel mode
39CFLAGS += -ffixed-r31
40
41LDFLAGS_BLOB := --format binary --oformat elf32-microblaze
42
43LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
44
45head-y := arch/microblaze/kernel/head.o
46libs-y += arch/microblaze/lib/ $(LIBGCC)
47core-y += arch/microblaze/kernel/ arch/microblaze/mm/ \
48 arch/microblaze/platform/
49
50boot := arch/$(ARCH)/boot
51
52# defines filename extension depending memory management type
53ifeq ($(CONFIG_MMU),)
54MMUEXT := -nommu
55endif
56export MMUEXT
57
58all: linux.bin
59
60archclean:
61 $(Q)$(MAKE) $(clean)=$(boot)
62
63linux.bin linux.bin.gz: vmlinux
64 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
65
66define archhelp
67 echo '* linux.bin - Create raw binary'
68 echo ' linux.bin.gz - Create compressed raw binary'
69endef
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
new file mode 100644
index 000000000000..844edf406d34
--- /dev/null
+++ b/arch/microblaze/boot/Makefile
@@ -0,0 +1,17 @@
1#
2# arch/microblaze/boot/Makefile
3#
4
5targets := linux.bin linux.bin.gz
6
7OBJCOPYFLAGS_linux.bin := -O binary
8
9$(obj)/linux.bin: vmlinux FORCE
10 $(call if_changed,objcopy)
11 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
12
13$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
14 $(call if_changed,gzip)
15 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
16
17clean-kernel += linux.bin linux.bin.gz
diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig
new file mode 100644
index 000000000000..beb7ecd72793
--- /dev/null
+++ b/arch/microblaze/configs/nommu_defconfig
@@ -0,0 +1,804 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.29
4# Tue Mar 24 10:23:20 2009
5#
6CONFIG_MICROBLAZE=y
7# CONFIG_SWAP is not set
8CONFIG_RWSEM_GENERIC_SPINLOCK=y
9# CONFIG_ARCH_HAS_ILOG2_U32 is not set
10# CONFIG_ARCH_HAS_ILOG2_U64 is not set
11CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_IRQ_PROBE=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
17# CONFIG_GENERIC_TIME_VSYSCALL is not set
18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
20# CONFIG_PCI is not set
21# CONFIG_NO_DMA is not set
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23
24#
25# General setup
26#
27CONFIG_EXPERIMENTAL=y
28CONFIG_BROKEN_ON_SMP=y
29CONFIG_INIT_ENV_ARG_LIMIT=32
30CONFIG_LOCALVERSION=""
31CONFIG_LOCALVERSION_AUTO=y
32CONFIG_SYSVIPC=y
33CONFIG_SYSVIPC_SYSCTL=y
34CONFIG_POSIX_MQUEUE=y
35CONFIG_BSD_PROCESS_ACCT=y
36CONFIG_BSD_PROCESS_ACCT_V3=y
37# CONFIG_TASKSTATS is not set
38# CONFIG_AUDIT is not set
39
40#
41# RCU Subsystem
42#
43CONFIG_CLASSIC_RCU=y
44# CONFIG_TREE_RCU is not set
45# CONFIG_PREEMPT_RCU is not set
46# CONFIG_TREE_RCU_TRACE is not set
47# CONFIG_PREEMPT_RCU_TRACE is not set
48CONFIG_IKCONFIG=y
49CONFIG_IKCONFIG_PROC=y
50CONFIG_LOG_BUF_SHIFT=17
51# CONFIG_GROUP_SCHED is not set
52# CONFIG_CGROUPS is not set
53CONFIG_SYSFS_DEPRECATED=y
54CONFIG_SYSFS_DEPRECATED_V2=y
55# CONFIG_RELAY is not set
56# CONFIG_NAMESPACES is not set
57# CONFIG_BLK_DEV_INITRD is not set
58CONFIG_CC_OPTIMIZE_FOR_SIZE=y
59CONFIG_SYSCTL=y
60CONFIG_ANON_INODES=y
61CONFIG_EMBEDDED=y
62CONFIG_SYSCTL_SYSCALL=y
63CONFIG_KALLSYMS=y
64CONFIG_KALLSYMS_ALL=y
65CONFIG_KALLSYMS_EXTRA_PASS=y
66# CONFIG_HOTPLUG is not set
67CONFIG_PRINTK=y
68CONFIG_BUG=y
69CONFIG_ELF_CORE=y
70# CONFIG_BASE_FULL is not set
71CONFIG_FUTEX=y
72CONFIG_EPOLL=y
73CONFIG_SIGNALFD=y
74CONFIG_TIMERFD=y
75CONFIG_EVENTFD=y
76CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_COMPAT_BRK=y
79CONFIG_SLAB=y
80# CONFIG_SLUB is not set
81# CONFIG_SLOB is not set
82# CONFIG_PROFILING is not set
83# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
84CONFIG_SLABINFO=y
85CONFIG_RT_MUTEXES=y
86CONFIG_BASE_SMALL=1
87CONFIG_MODULES=y
88# CONFIG_MODULE_FORCE_LOAD is not set
89CONFIG_MODULE_UNLOAD=y
90# CONFIG_MODULE_FORCE_UNLOAD is not set
91# CONFIG_MODVERSIONS is not set
92# CONFIG_MODULE_SRCVERSION_ALL is not set
93CONFIG_BLOCK=y
94# CONFIG_LBD is not set
95# CONFIG_BLK_DEV_IO_TRACE is not set
96# CONFIG_BLK_DEV_BSG is not set
97# CONFIG_BLK_DEV_INTEGRITY is not set
98
99#
100# IO Schedulers
101#
102CONFIG_IOSCHED_NOOP=y
103CONFIG_IOSCHED_AS=y
104CONFIG_IOSCHED_DEADLINE=y
105CONFIG_IOSCHED_CFQ=y
106# CONFIG_DEFAULT_AS is not set
107# CONFIG_DEFAULT_DEADLINE is not set
108CONFIG_DEFAULT_CFQ=y
109# CONFIG_DEFAULT_NOOP is not set
110CONFIG_DEFAULT_IOSCHED="cfq"
111# CONFIG_FREEZER is not set
112
113#
114# Platform options
115#
116CONFIG_PLATFORM_GENERIC=y
117# CONFIG_SELFMOD is not set
118# CONFIG_OPT_LIB_FUNCTION is not set
119# CONFIG_ALLOW_EDIT_AUTO is not set
120CONFIG_KERNEL_BASE_ADDR=0x90000000
121CONFIG_XILINX_MICROBLAZE0_FAMILY="virtex5"
122CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1
123CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1
124CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1
125CONFIG_XILINX_MICROBLAZE0_USE_DIV=1
126CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2
127CONFIG_XILINX_MICROBLAZE0_USE_FPU=2
128CONFIG_XILINX_MICROBLAZE0_HW_VER="7.10.d"
129
130#
131# Processor type and features
132#
133CONFIG_TICK_ONESHOT=y
134# CONFIG_NO_HZ is not set
135CONFIG_HIGH_RES_TIMERS=y
136CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
137CONFIG_PREEMPT_NONE=y
138# CONFIG_PREEMPT_VOLUNTARY is not set
139# CONFIG_PREEMPT is not set
140CONFIG_HZ_100=y
141# CONFIG_HZ_250 is not set
142# CONFIG_HZ_300 is not set
143# CONFIG_HZ_1000 is not set
144CONFIG_HZ=100
145CONFIG_SCHED_HRTICK=y
146# CONFIG_MMU is not set
147CONFIG_NO_MMU=y
148
149#
150# Boot options
151#
152CONFIG_CMDLINE_BOOL=y
153CONFIG_CMDLINE="console=ttyUL0,115200"
154# CONFIG_CMDLINE_FORCE is not set
155CONFIG_OF=y
156CONFIG_OF_DEVICE=y
157CONFIG_PROC_DEVICETREE=y
158CONFIG_SELECT_MEMORY_MODEL=y
159CONFIG_FLATMEM_MANUAL=y
160# CONFIG_DISCONTIGMEM_MANUAL is not set
161# CONFIG_SPARSEMEM_MANUAL is not set
162CONFIG_FLATMEM=y
163CONFIG_FLAT_NODE_MEM_MAP=y
164CONFIG_PAGEFLAGS_EXTENDED=y
165CONFIG_SPLIT_PTLOCK_CPUS=4
166# CONFIG_PHYS_ADDR_T_64BIT is not set
167CONFIG_ZONE_DMA_FLAG=0
168CONFIG_VIRT_TO_BUS=y
169
170#
171# Exectuable file formats
172#
173CONFIG_BINFMT_FLAT=y
174# CONFIG_BINFMT_ZFLAT is not set
175# CONFIG_BINFMT_SHARED_FLAT is not set
176# CONFIG_HAVE_AOUT is not set
177# CONFIG_BINFMT_MISC is not set
178CONFIG_NET=y
179
180#
181# Networking options
182#
183CONFIG_COMPAT_NET_DEV_OPS=y
184CONFIG_PACKET=y
185# CONFIG_PACKET_MMAP is not set
186CONFIG_UNIX=y
187CONFIG_XFRM=y
188# CONFIG_XFRM_USER is not set
189# CONFIG_XFRM_SUB_POLICY is not set
190# CONFIG_XFRM_MIGRATE is not set
191# CONFIG_XFRM_STATISTICS is not set
192# CONFIG_NET_KEY is not set
193CONFIG_INET=y
194# CONFIG_IP_MULTICAST is not set
195# CONFIG_IP_ADVANCED_ROUTER is not set
196CONFIG_IP_FIB_HASH=y
197# CONFIG_IP_PNP is not set
198# CONFIG_NET_IPIP is not set
199# CONFIG_NET_IPGRE is not set
200# CONFIG_ARPD is not set
201# CONFIG_SYN_COOKIES is not set
202# CONFIG_INET_AH is not set
203# CONFIG_INET_ESP is not set
204# CONFIG_INET_IPCOMP is not set
205# CONFIG_INET_XFRM_TUNNEL is not set
206# CONFIG_INET_TUNNEL is not set
207CONFIG_INET_XFRM_MODE_TRANSPORT=y
208CONFIG_INET_XFRM_MODE_TUNNEL=y
209CONFIG_INET_XFRM_MODE_BEET=y
210# CONFIG_INET_LRO is not set
211CONFIG_INET_DIAG=y
212CONFIG_INET_TCP_DIAG=y
213# CONFIG_TCP_CONG_ADVANCED is not set
214CONFIG_TCP_CONG_CUBIC=y
215CONFIG_DEFAULT_TCP_CONG="cubic"
216# CONFIG_TCP_MD5SIG is not set
217# CONFIG_IPV6 is not set
218# CONFIG_NETWORK_SECMARK is not set
219# CONFIG_NETFILTER is not set
220# CONFIG_IP_DCCP is not set
221# CONFIG_IP_SCTP is not set
222# CONFIG_TIPC is not set
223# CONFIG_ATM is not set
224# CONFIG_BRIDGE is not set
225# CONFIG_NET_DSA is not set
226# CONFIG_VLAN_8021Q is not set
227# CONFIG_DECNET is not set
228# CONFIG_LLC2 is not set
229# CONFIG_IPX is not set
230# CONFIG_ATALK is not set
231# CONFIG_X25 is not set
232# CONFIG_LAPB is not set
233# CONFIG_ECONET is not set
234# CONFIG_WAN_ROUTER is not set
235# CONFIG_NET_SCHED is not set
236# CONFIG_DCB is not set
237
238#
239# Network testing
240#
241# CONFIG_NET_PKTGEN is not set
242# CONFIG_HAMRADIO is not set
243# CONFIG_CAN is not set
244# CONFIG_IRDA is not set
245# CONFIG_BT is not set
246# CONFIG_AF_RXRPC is not set
247# CONFIG_PHONET is not set
248CONFIG_WIRELESS=y
249# CONFIG_CFG80211 is not set
250CONFIG_WIRELESS_OLD_REGULATORY=y
251# CONFIG_WIRELESS_EXT is not set
252# CONFIG_LIB80211 is not set
253# CONFIG_MAC80211 is not set
254# CONFIG_WIMAX is not set
255# CONFIG_RFKILL is not set
256# CONFIG_NET_9P is not set
257
258#
259# Device Drivers
260#
261
262#
263# Generic Driver Options
264#
265CONFIG_STANDALONE=y
266# CONFIG_PREVENT_FIRMWARE_BUILD is not set
267# CONFIG_DEBUG_DRIVER is not set
268# CONFIG_DEBUG_DEVRES is not set
269# CONFIG_SYS_HYPERVISOR is not set
270# CONFIG_CONNECTOR is not set
271CONFIG_MTD=y
272# CONFIG_MTD_DEBUG is not set
273CONFIG_MTD_CONCAT=y
274CONFIG_MTD_PARTITIONS=y
275# CONFIG_MTD_TESTS is not set
276# CONFIG_MTD_REDBOOT_PARTS is not set
277CONFIG_MTD_CMDLINE_PARTS=y
278# CONFIG_MTD_AR7_PARTS is not set
279
280#
281# User Modules And Translation Layers
282#
283CONFIG_MTD_CHAR=y
284CONFIG_MTD_BLKDEVS=y
285CONFIG_MTD_BLOCK=y
286# CONFIG_FTL is not set
287# CONFIG_NFTL is not set
288# CONFIG_INFTL is not set
289# CONFIG_RFD_FTL is not set
290# CONFIG_SSFDC is not set
291# CONFIG_MTD_OOPS is not set
292
293#
294# RAM/ROM/Flash chip drivers
295#
296CONFIG_MTD_CFI=y
297# CONFIG_MTD_JEDECPROBE is not set
298CONFIG_MTD_GEN_PROBE=y
299# CONFIG_MTD_CFI_ADV_OPTIONS is not set
300CONFIG_MTD_MAP_BANK_WIDTH_1=y
301CONFIG_MTD_MAP_BANK_WIDTH_2=y
302CONFIG_MTD_MAP_BANK_WIDTH_4=y
303# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
304# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
305# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
306CONFIG_MTD_CFI_I1=y
307CONFIG_MTD_CFI_I2=y
308# CONFIG_MTD_CFI_I4 is not set
309# CONFIG_MTD_CFI_I8 is not set
310CONFIG_MTD_CFI_INTELEXT=y
311CONFIG_MTD_CFI_AMDSTD=y
312# CONFIG_MTD_CFI_STAA is not set
313CONFIG_MTD_CFI_UTIL=y
314CONFIG_MTD_RAM=y
315# CONFIG_MTD_ROM is not set
316# CONFIG_MTD_ABSENT is not set
317
318#
319# Mapping drivers for chip access
320#
321# CONFIG_MTD_COMPLEX_MAPPINGS is not set
322# CONFIG_MTD_PHYSMAP is not set
323CONFIG_MTD_UCLINUX=y
324# CONFIG_MTD_PLATRAM is not set
325
326#
327# Self-contained MTD device drivers
328#
329# CONFIG_MTD_SLRAM is not set
330# CONFIG_MTD_PHRAM is not set
331# CONFIG_MTD_MTDRAM is not set
332# CONFIG_MTD_BLOCK2MTD is not set
333
334#
335# Disk-On-Chip Device Drivers
336#
337# CONFIG_MTD_DOC2000 is not set
338# CONFIG_MTD_DOC2001 is not set
339# CONFIG_MTD_DOC2001PLUS is not set
340# CONFIG_MTD_NAND is not set
341# CONFIG_MTD_ONENAND is not set
342
343#
344# LPDDR flash memory drivers
345#
346# CONFIG_MTD_LPDDR is not set
347
348#
349# UBI - Unsorted block images
350#
351# CONFIG_MTD_UBI is not set
352# CONFIG_PARPORT is not set
353CONFIG_BLK_DEV=y
354# CONFIG_BLK_DEV_COW_COMMON is not set
355# CONFIG_BLK_DEV_LOOP is not set
356CONFIG_BLK_DEV_NBD=y
357CONFIG_BLK_DEV_RAM=y
358CONFIG_BLK_DEV_RAM_COUNT=16
359CONFIG_BLK_DEV_RAM_SIZE=4096
360# CONFIG_BLK_DEV_XIP is not set
361# CONFIG_CDROM_PKTCDVD is not set
362# CONFIG_ATA_OVER_ETH is not set
363CONFIG_MISC_DEVICES=y
364# CONFIG_ENCLOSURE_SERVICES is not set
365# CONFIG_C2PORT is not set
366
367#
368# EEPROM support
369#
370# CONFIG_EEPROM_93CX6 is not set
371
372#
373# SCSI device support
374#
375# CONFIG_RAID_ATTRS is not set
376# CONFIG_SCSI is not set
377# CONFIG_SCSI_DMA is not set
378# CONFIG_SCSI_NETLINK is not set
379# CONFIG_ATA is not set
380# CONFIG_MD is not set
381CONFIG_NETDEVICES=y
382# CONFIG_DUMMY is not set
383# CONFIG_BONDING is not set
384# CONFIG_MACVLAN is not set
385# CONFIG_EQUALIZER is not set
386# CONFIG_TUN is not set
387# CONFIG_VETH is not set
388# CONFIG_PHYLIB is not set
389CONFIG_NET_ETHERNET=y
390# CONFIG_MII is not set
391# CONFIG_DNET is not set
392# CONFIG_IBM_NEW_EMAC_ZMII is not set
393# CONFIG_IBM_NEW_EMAC_RGMII is not set
394# CONFIG_IBM_NEW_EMAC_TAH is not set
395# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
396# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
397# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
398# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
399# CONFIG_B44 is not set
400CONFIG_NETDEV_1000=y
401CONFIG_NETDEV_10000=y
402
403#
404# Wireless LAN
405#
406# CONFIG_WLAN_PRE80211 is not set
407# CONFIG_WLAN_80211 is not set
408# CONFIG_IWLWIFI_LEDS is not set
409
410#
411# Enable WiMAX (Networking options) to see the WiMAX drivers
412#
413# CONFIG_WAN is not set
414# CONFIG_PPP is not set
415# CONFIG_SLIP is not set
416# CONFIG_NETCONSOLE is not set
417# CONFIG_NETPOLL is not set
418# CONFIG_NET_POLL_CONTROLLER is not set
419# CONFIG_ISDN is not set
420# CONFIG_PHONE is not set
421
422#
423# Input device support
424#
425# CONFIG_INPUT is not set
426
427#
428# Hardware I/O ports
429#
430# CONFIG_SERIO is not set
431# CONFIG_GAMEPORT is not set
432
433#
434# Character devices
435#
436# CONFIG_VT is not set
437CONFIG_DEVKMEM=y
438# CONFIG_SERIAL_NONSTANDARD is not set
439
440#
441# Serial drivers
442#
443# CONFIG_SERIAL_8250 is not set
444
445#
446# Non-8250 serial port support
447#
448CONFIG_SERIAL_UARTLITE=y
449CONFIG_SERIAL_UARTLITE_CONSOLE=y
450CONFIG_SERIAL_CORE=y
451CONFIG_SERIAL_CORE_CONSOLE=y
452CONFIG_UNIX98_PTYS=y
453# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
454CONFIG_LEGACY_PTYS=y
455CONFIG_LEGACY_PTY_COUNT=256
456# CONFIG_IPMI_HANDLER is not set
457CONFIG_HW_RANDOM=y
458# CONFIG_RTC is not set
459# CONFIG_GEN_RTC is not set
460# CONFIG_R3964 is not set
461# CONFIG_RAW_DRIVER is not set
462# CONFIG_TCG_TPM is not set
463# CONFIG_I2C is not set
464# CONFIG_SPI is not set
465# CONFIG_W1 is not set
466# CONFIG_POWER_SUPPLY is not set
467# CONFIG_HWMON is not set
468# CONFIG_THERMAL is not set
469# CONFIG_THERMAL_HWMON is not set
470# CONFIG_WATCHDOG is not set
471CONFIG_SSB_POSSIBLE=y
472
473#
474# Sonics Silicon Backplane
475#
476# CONFIG_SSB is not set
477
478#
479# Multifunction device drivers
480#
481# CONFIG_MFD_CORE is not set
482# CONFIG_MFD_SM501 is not set
483# CONFIG_HTC_PASIC3 is not set
484# CONFIG_MFD_TMIO is not set
485# CONFIG_REGULATOR is not set
486
487#
488# Multimedia devices
489#
490
491#
492# Multimedia core support
493#
494# CONFIG_VIDEO_DEV is not set
495# CONFIG_DVB_CORE is not set
496# CONFIG_VIDEO_MEDIA is not set
497
498#
499# Multimedia drivers
500#
501CONFIG_DAB=y
502
503#
504# Graphics support
505#
506# CONFIG_VGASTATE is not set
507CONFIG_VIDEO_OUTPUT_CONTROL=y
508# CONFIG_FB is not set
509# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
510
511#
512# Display device support
513#
514# CONFIG_DISPLAY_SUPPORT is not set
515# CONFIG_SOUND is not set
516CONFIG_USB_SUPPORT=y
517# CONFIG_USB_ARCH_HAS_HCD is not set
518# CONFIG_USB_ARCH_HAS_OHCI is not set
519# CONFIG_USB_ARCH_HAS_EHCI is not set
520# CONFIG_USB_OTG_WHITELIST is not set
521# CONFIG_USB_OTG_BLACKLIST_HUB is not set
522
523#
524# Enable Host or Gadget support to see Inventra options
525#
526
527#
528# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
529#
530# CONFIG_USB_GADGET is not set
531
532#
533# OTG and related infrastructure
534#
535# CONFIG_MMC is not set
536# CONFIG_MEMSTICK is not set
537# CONFIG_NEW_LEDS is not set
538# CONFIG_ACCESSIBILITY is not set
539# CONFIG_RTC_CLASS is not set
540# CONFIG_DMADEVICES is not set
541# CONFIG_UIO is not set
542# CONFIG_STAGING is not set
543
544#
545# File systems
546#
547CONFIG_EXT2_FS=y
548# CONFIG_EXT2_FS_XATTR is not set
549# CONFIG_EXT3_FS is not set
550# CONFIG_EXT4_FS is not set
551# CONFIG_REISERFS_FS is not set
552# CONFIG_JFS_FS is not set
553CONFIG_FS_POSIX_ACL=y
554CONFIG_FILE_LOCKING=y
555# CONFIG_XFS_FS is not set
556# CONFIG_OCFS2_FS is not set
557# CONFIG_BTRFS_FS is not set
558# CONFIG_DNOTIFY is not set
559# CONFIG_INOTIFY is not set
560# CONFIG_QUOTA is not set
561# CONFIG_AUTOFS_FS is not set
562# CONFIG_AUTOFS4_FS is not set
563# CONFIG_FUSE_FS is not set
564
565#
566# CD-ROM/DVD Filesystems
567#
568# CONFIG_ISO9660_FS is not set
569# CONFIG_UDF_FS is not set
570
571#
572# DOS/FAT/NT Filesystems
573#
574# CONFIG_MSDOS_FS is not set
575# CONFIG_VFAT_FS is not set
576# CONFIG_NTFS_FS is not set
577
578#
579# Pseudo filesystems
580#
581CONFIG_PROC_FS=y
582CONFIG_PROC_SYSCTL=y
583CONFIG_SYSFS=y
584# CONFIG_TMPFS is not set
585# CONFIG_HUGETLB_PAGE is not set
586# CONFIG_CONFIGFS_FS is not set
587CONFIG_MISC_FILESYSTEMS=y
588# CONFIG_ADFS_FS is not set
589# CONFIG_AFFS_FS is not set
590# CONFIG_HFS_FS is not set
591# CONFIG_HFSPLUS_FS is not set
592# CONFIG_BEFS_FS is not set
593# CONFIG_BFS_FS is not set
594# CONFIG_EFS_FS is not set
595# CONFIG_JFFS2_FS is not set
596CONFIG_CRAMFS=y
597# CONFIG_SQUASHFS is not set
598# CONFIG_VXFS_FS is not set
599# CONFIG_MINIX_FS is not set
600# CONFIG_OMFS_FS is not set
601# CONFIG_HPFS_FS is not set
602# CONFIG_QNX4FS_FS is not set
603CONFIG_ROMFS_FS=y
604# CONFIG_SYSV_FS is not set
605# CONFIG_UFS_FS is not set
606CONFIG_NETWORK_FILESYSTEMS=y
607CONFIG_NFS_FS=y
608CONFIG_NFS_V3=y
609CONFIG_NFS_V3_ACL=y
610# CONFIG_NFS_V4 is not set
611# CONFIG_NFSD is not set
612CONFIG_LOCKD=y
613CONFIG_LOCKD_V4=y
614CONFIG_NFS_ACL_SUPPORT=y
615CONFIG_NFS_COMMON=y
616CONFIG_SUNRPC=y
617# CONFIG_SUNRPC_REGISTER_V4 is not set
618# CONFIG_RPCSEC_GSS_KRB5 is not set
619# CONFIG_RPCSEC_GSS_SPKM3 is not set
620# CONFIG_SMB_FS is not set
621# CONFIG_CIFS is not set
622# CONFIG_NCP_FS is not set
623# CONFIG_CODA_FS is not set
624# CONFIG_AFS_FS is not set
625
626#
627# Partition Types
628#
629# CONFIG_PARTITION_ADVANCED is not set
630CONFIG_MSDOS_PARTITION=y
631# CONFIG_NLS is not set
632# CONFIG_DLM is not set
633
634#
635# Kernel hacking
636#
637# CONFIG_PRINTK_TIME is not set
638CONFIG_ENABLE_WARN_DEPRECATED=y
639CONFIG_ENABLE_MUST_CHECK=y
640CONFIG_FRAME_WARN=1024
641# CONFIG_MAGIC_SYSRQ is not set
642CONFIG_UNUSED_SYMBOLS=y
643CONFIG_DEBUG_FS=y
644# CONFIG_HEADERS_CHECK is not set
645CONFIG_DEBUG_KERNEL=y
646CONFIG_DEBUG_SHIRQ=y
647CONFIG_DETECT_SOFTLOCKUP=y
648CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
649CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1
650CONFIG_SCHED_DEBUG=y
651CONFIG_SCHEDSTATS=y
652CONFIG_TIMER_STATS=y
653CONFIG_DEBUG_OBJECTS=y
654CONFIG_DEBUG_OBJECTS_SELFTEST=y
655CONFIG_DEBUG_OBJECTS_FREE=y
656CONFIG_DEBUG_OBJECTS_TIMERS=y
657CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
658# CONFIG_DEBUG_SLAB is not set
659# CONFIG_DEBUG_RT_MUTEXES is not set
660# CONFIG_RT_MUTEX_TESTER is not set
661# CONFIG_DEBUG_SPINLOCK is not set
662# CONFIG_DEBUG_MUTEXES is not set
663# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
664# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
665# CONFIG_DEBUG_KOBJECT is not set
666CONFIG_DEBUG_INFO=y
667# CONFIG_DEBUG_VM is not set
668# CONFIG_DEBUG_NOMMU_REGIONS is not set
669# CONFIG_DEBUG_WRITECOUNT is not set
670# CONFIG_DEBUG_MEMORY_INIT is not set
671CONFIG_DEBUG_LIST=y
672CONFIG_DEBUG_SG=y
673# CONFIG_DEBUG_NOTIFIERS is not set
674# CONFIG_BOOT_PRINTK_DELAY is not set
675# CONFIG_RCU_TORTURE_TEST is not set
676# CONFIG_RCU_CPU_STALL_DETECTOR is not set
677# CONFIG_BACKTRACE_SELF_TEST is not set
678# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
679# CONFIG_FAULT_INJECTION is not set
680CONFIG_SYSCTL_SYSCALL_CHECK=y
681
682#
683# Tracers
684#
685# CONFIG_SCHED_TRACER is not set
686# CONFIG_CONTEXT_SWITCH_TRACER is not set
687# CONFIG_BOOT_TRACER is not set
688# CONFIG_TRACE_BRANCH_PROFILING is not set
689# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
690# CONFIG_SAMPLES is not set
691CONFIG_EARLY_PRINTK=y
692CONFIG_HEART_BEAT=y
693# CONFIG_DEBUG_BOOTMEM is not set
694
695#
696# Security options
697#
698# CONFIG_KEYS is not set
699# CONFIG_SECURITY is not set
700# CONFIG_SECURITYFS is not set
701# CONFIG_SECURITY_FILE_CAPABILITIES is not set
702CONFIG_CRYPTO=y
703
704#
705# Crypto core or helper
706#
707# CONFIG_CRYPTO_FIPS is not set
708# CONFIG_CRYPTO_MANAGER is not set
709# CONFIG_CRYPTO_MANAGER2 is not set
710# CONFIG_CRYPTO_GF128MUL is not set
711# CONFIG_CRYPTO_NULL is not set
712# CONFIG_CRYPTO_CRYPTD is not set
713# CONFIG_CRYPTO_AUTHENC is not set
714# CONFIG_CRYPTO_TEST is not set
715
716#
717# Authenticated Encryption with Associated Data
718#
719# CONFIG_CRYPTO_CCM is not set
720# CONFIG_CRYPTO_GCM is not set
721# CONFIG_CRYPTO_SEQIV is not set
722
723#
724# Block modes
725#
726# CONFIG_CRYPTO_CBC is not set
727# CONFIG_CRYPTO_CTR is not set
728# CONFIG_CRYPTO_CTS is not set
729# CONFIG_CRYPTO_ECB is not set
730# CONFIG_CRYPTO_LRW is not set
731# CONFIG_CRYPTO_PCBC is not set
732# CONFIG_CRYPTO_XTS is not set
733
734#
735# Hash modes
736#
737# CONFIG_CRYPTO_HMAC is not set
738# CONFIG_CRYPTO_XCBC is not set
739
740#
741# Digest
742#
743# CONFIG_CRYPTO_CRC32C is not set
744# CONFIG_CRYPTO_MD4 is not set
745# CONFIG_CRYPTO_MD5 is not set
746# CONFIG_CRYPTO_MICHAEL_MIC is not set
747# CONFIG_CRYPTO_RMD128 is not set
748# CONFIG_CRYPTO_RMD160 is not set
749# CONFIG_CRYPTO_RMD256 is not set
750# CONFIG_CRYPTO_RMD320 is not set
751# CONFIG_CRYPTO_SHA1 is not set
752# CONFIG_CRYPTO_SHA256 is not set
753# CONFIG_CRYPTO_SHA512 is not set
754# CONFIG_CRYPTO_TGR192 is not set
755# CONFIG_CRYPTO_WP512 is not set
756
757#
758# Ciphers
759#
760# CONFIG_CRYPTO_AES is not set
761# CONFIG_CRYPTO_ANUBIS is not set
762# CONFIG_CRYPTO_ARC4 is not set
763# CONFIG_CRYPTO_BLOWFISH is not set
764# CONFIG_CRYPTO_CAMELLIA is not set
765# CONFIG_CRYPTO_CAST5 is not set
766# CONFIG_CRYPTO_CAST6 is not set
767# CONFIG_CRYPTO_DES is not set
768# CONFIG_CRYPTO_FCRYPT is not set
769# CONFIG_CRYPTO_KHAZAD is not set
770# CONFIG_CRYPTO_SALSA20 is not set
771# CONFIG_CRYPTO_SEED is not set
772# CONFIG_CRYPTO_SERPENT is not set
773# CONFIG_CRYPTO_TEA is not set
774# CONFIG_CRYPTO_TWOFISH is not set
775
776#
777# Compression
778#
779# CONFIG_CRYPTO_DEFLATE is not set
780# CONFIG_CRYPTO_LZO is not set
781
782#
783# Random Number Generation
784#
785# CONFIG_CRYPTO_ANSI_CPRNG is not set
786CONFIG_CRYPTO_HW=y
787
788#
789# Library routines
790#
791CONFIG_GENERIC_FIND_LAST_BIT=y
792# CONFIG_CRC_CCITT is not set
793# CONFIG_CRC16 is not set
794# CONFIG_CRC_T10DIF is not set
795# CONFIG_CRC_ITU_T is not set
796# CONFIG_CRC32 is not set
797# CONFIG_CRC7 is not set
798# CONFIG_LIBCRC32C is not set
799CONFIG_ZLIB_INFLATE=y
800CONFIG_PLIST=y
801CONFIG_HAS_IOMEM=y
802CONFIG_HAS_IOPORT=y
803CONFIG_HAS_DMA=y
804CONFIG_HAVE_LMB=y
diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild
new file mode 100644
index 000000000000..31820dfef56b
--- /dev/null
+++ b/arch/microblaze/include/asm/Kbuild
@@ -0,0 +1,26 @@
1include include/asm-generic/Kbuild.asm
2
3header-y += auxvec.h
4header-y += errno.h
5header-y += fcntl.h
6header-y += ioctl.h
7header-y += ioctls.h
8header-y += ipcbuf.h
9header-y += linkage.h
10header-y += msgbuf.h
11header-y += poll.h
12header-y += resource.h
13header-y += sembuf.h
14header-y += shmbuf.h
15header-y += sigcontext.h
16header-y += siginfo.h
17header-y += socket.h
18header-y += sockios.h
19header-y += statfs.h
20header-y += stat.h
21header-y += termbits.h
22header-y += ucontext.h
23
24unifdef-y += cputable.h
25unifdef-y += elf.h
26unifdef-y += termios.h
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h
new file mode 100644
index 000000000000..a448d94ab721
--- /dev/null
+++ b/arch/microblaze/include/asm/atomic.h
@@ -0,0 +1,123 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_ATOMIC_H
10#define _ASM_MICROBLAZE_ATOMIC_H
11
12#include <linux/types.h>
13#include <linux/compiler.h> /* likely */
14#include <asm/system.h> /* local_irq_XXX and friends */
15
16#define ATOMIC_INIT(i) { (i) }
17#define atomic_read(v) ((v)->counter)
18#define atomic_set(v, i) (((v)->counter) = (i))
19
20#define atomic_inc(v) (atomic_add_return(1, (v)))
21#define atomic_dec(v) (atomic_sub_return(1, (v)))
22
23#define atomic_add(i, v) (atomic_add_return(i, (v)))
24#define atomic_sub(i, v) (atomic_sub_return(i, (v)))
25
26#define atomic_inc_return(v) (atomic_add_return(1, (v)))
27#define atomic_dec_return(v) (atomic_sub_return(1, (v)))
28
29#define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0)
30#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
31
32#define atomic_inc_not_zero(v) (atomic_add_unless((v), 1, 0))
33
34#define atomic_sub_and_test(i, v) (atomic_sub_return((i), (v)) == 0)
35
36static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
37{
38 int ret;
39 unsigned long flags;
40
41 local_irq_save(flags);
42 ret = v->counter;
43 if (likely(ret == old))
44 v->counter = new;
45 local_irq_restore(flags);
46
47 return ret;
48}
49
50static inline int atomic_add_unless(atomic_t *v, int a, int u)
51{
52 int c, old;
53
54 c = atomic_read(v);
55 while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
56 c = old;
57 return c != u;
58}
59
60static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
61{
62 unsigned long flags;
63
64 local_irq_save(flags);
65 *addr &= ~mask;
66 local_irq_restore(flags);
67}
68
69/**
70 * atomic_add_return - add and return
71 * @i: integer value to add
72 * @v: pointer of type atomic_t
73 *
74 * Atomically adds @i to @v and returns @i + @v
75 */
76static inline int atomic_add_return(int i, atomic_t *v)
77{
78 unsigned long flags;
79 int val;
80
81 local_irq_save(flags);
82 val = v->counter;
83 v->counter = val += i;
84 local_irq_restore(flags);
85
86 return val;
87}
88
89static inline int atomic_sub_return(int i, atomic_t *v)
90{
91 return atomic_add_return(-i, v);
92}
93
94/*
95 * Atomically test *v and decrement if it is greater than 0.
96 * The function returns the old value of *v minus 1.
97 */
98static inline int atomic_dec_if_positive(atomic_t *v)
99{
100 unsigned long flags;
101 int res;
102
103 local_irq_save(flags);
104 res = v->counter - 1;
105 if (res >= 0)
106 v->counter = res;
107 local_irq_restore(flags);
108
109 return res;
110}
111
112#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
113#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
114
115/* Atomic operations are already serializing */
116#define smp_mb__before_atomic_dec() barrier()
117#define smp_mb__after_atomic_dec() barrier()
118#define smp_mb__before_atomic_inc() barrier()
119#define smp_mb__after_atomic_inc() barrier()
120
121#include <asm-generic/atomic.h>
122
123#endif /* _ASM_MICROBLAZE_ATOMIC_H */
diff --git a/arch/microblaze/include/asm/auxvec.h b/arch/microblaze/include/asm/auxvec.h
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/arch/microblaze/include/asm/auxvec.h
diff --git a/arch/microblaze/include/asm/bitops.h b/arch/microblaze/include/asm/bitops.h
new file mode 100644
index 000000000000..d6df1fd4e1e8
--- /dev/null
+++ b/arch/microblaze/include/asm/bitops.h
@@ -0,0 +1,27 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BITOPS_H
10#define _ASM_MICROBLAZE_BITOPS_H
11
12/*
13 * Copyright 1992, Linus Torvalds.
14 */
15
16#include <asm/byteorder.h> /* swab32 */
17#include <asm/system.h> /* save_flags */
18
19/*
20 * clear_bit() doesn't provide any barrier for the compiler.
21 */
22#define smp_mb__before_clear_bit() barrier()
23#define smp_mb__after_clear_bit() barrier()
24#include <asm-generic/bitops.h>
25#include <asm-generic/bitops/__fls.h>
26
27#endif /* _ASM_MICROBLAZE_BITOPS_H */
diff --git a/arch/microblaze/include/asm/bug.h b/arch/microblaze/include/asm/bug.h
new file mode 100644
index 000000000000..8eb2cdde11d7
--- /dev/null
+++ b/arch/microblaze/include/asm/bug.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BUG_H
10#define _ASM_MICROBLAZE_BUG_H
11
12#include <linux/kernel.h>
13#include <asm-generic/bug.h>
14
15#endif /* _ASM_MICROBLAZE_BUG_H */
diff --git a/arch/microblaze/include/asm/bugs.h b/arch/microblaze/include/asm/bugs.h
new file mode 100644
index 000000000000..f2c6593653fb
--- /dev/null
+++ b/arch/microblaze/include/asm/bugs.h
@@ -0,0 +1,17 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_BUGS_H
10#define _ASM_MICROBLAZE_BUGS_H
11
12static inline void check_bugs(void)
13{
14 /* nothing to do */
15}
16
17#endif /* _ASM_MICROBLAZE_BUGS_H */
diff --git a/arch/microblaze/include/asm/byteorder.h b/arch/microblaze/include/asm/byteorder.h
new file mode 100644
index 000000000000..ce9c58732ffc
--- /dev/null
+++ b/arch/microblaze/include/asm/byteorder.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_MICROBLAZE_BYTEORDER_H
2#define _ASM_MICROBLAZE_BYTEORDER_H
3
4#include <linux/byteorder/big_endian.h>
5
6#endif /* _ASM_MICROBLAZE_BYTEORDER_H */
diff --git a/arch/microblaze/include/asm/cache.h b/arch/microblaze/include/asm/cache.h
new file mode 100644
index 000000000000..c4c64b43c074
--- /dev/null
+++ b/arch/microblaze/include/asm/cache.h
@@ -0,0 +1,45 @@
1/*
2 * Cache operations
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_CACHE_H
14#define _ASM_MICROBLAZE_CACHE_H
15
16#include <asm/registers.h>
17
18#define L1_CACHE_SHIFT 2
19/* word-granular cache in microblaze */
20#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
21
22#define SMP_CACHE_BYTES L1_CACHE_BYTES
23
24void _enable_icache(void);
25void _disable_icache(void);
26void _invalidate_icache(unsigned int addr);
27
28#define __enable_icache() _enable_icache()
29#define __disable_icache() _disable_icache()
30#define __invalidate_icache(addr) _invalidate_icache(addr)
31
32void _enable_dcache(void);
33void _disable_dcache(void);
34void _invalidate_dcache(unsigned int addr);
35
36#define __enable_dcache() _enable_dcache()
37#define __disable_dcache() _disable_dcache()
38#define __invalidate_dcache(addr) _invalidate_dcache(addr)
39
40/* FIXME - I don't think this is right */
41#ifdef CONFIG_XILINX_UNCACHED_SHADOW
42#define UNCACHED_SHADOW_MASK (CONFIG_XILINX_ERAM_SIZE)
43#endif
44
45#endif /* _ASM_MICROBLAZE_CACHE_H */
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h
new file mode 100644
index 000000000000..3300b785049b
--- /dev/null
+++ b/arch/microblaze/include/asm/cacheflush.h
@@ -0,0 +1,85 @@
1/*
2 * Copyright (C) 2007 PetaLogix
3 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
4 * based on v850 version which was
5 * Copyright (C) 2001,02,03 NEC Electronics Corporation
6 * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 *
12 */
13
14#ifndef _ASM_MICROBLAZE_CACHEFLUSH_H
15#define _ASM_MICROBLAZE_CACHEFLUSH_H
16
17/* Somebody depends on this; sigh... */
18#include <linux/mm.h>
19
20/*
21 * Cache handling functions.
22 * Microblaze has a write-through data cache, meaning that the data cache
23 * never needs to be flushed. The only flushing operations that are
24 * implemented are to invalidate the instruction cache. These are called
25 * after loading a user application into memory, we must invalidate the
26 * instruction cache to make sure we don't fetch old, bad code.
27 */
28
29/* FIXME for LL-temac driver */
30#define invalidate_dcache_range(start, end) \
31 __invalidate_dcache_range(start, end)
32
33#define flush_cache_all() __invalidate_cache_all()
34#define flush_cache_mm(mm) do { } while (0)
35#define flush_cache_range(vma, start, end) __invalidate_cache_all()
36#define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
37
38#define flush_dcache_range(start, end) __invalidate_dcache_range(start, end)
39#define flush_dcache_page(page) do { } while (0)
40#define flush_dcache_mmap_lock(mapping) do { } while (0)
41#define flush_dcache_mmap_unlock(mapping) do { } while (0)
42
43#define flush_icache_range(start, len) __invalidate_icache_range(start, len)
44#define flush_icache_page(vma, pg) do { } while (0)
45
46#define flush_cache_vmap(start, end) do { } while (0)
47#define flush_cache_vunmap(start, end) do { } while (0)
48
49struct page;
50struct mm_struct;
51struct vm_area_struct;
52
53/* see arch/microblaze/kernel/cache.c */
54extern void __invalidate_icache_all(void);
55extern void __invalidate_icache_range(unsigned long start, unsigned long end);
56extern void __invalidate_icache_page(struct vm_area_struct *vma,
57 struct page *page);
58extern void __invalidate_icache_user_range(struct vm_area_struct *vma,
59 struct page *page,
60 unsigned long adr, int len);
61extern void __invalidate_cache_sigtramp(unsigned long addr);
62
63extern void __invalidate_dcache_all(void);
64extern void __invalidate_dcache_range(unsigned long start, unsigned long end);
65extern void __invalidate_dcache_page(struct vm_area_struct *vma,
66 struct page *page);
67extern void __invalidate_dcache_user_range(struct vm_area_struct *vma,
68 struct page *page,
69 unsigned long adr, int len);
70
71extern inline void __invalidate_cache_all(void)
72{
73 __invalidate_icache_all();
74 __invalidate_dcache_all();
75}
76
77#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
78do { memcpy((dst), (src), (len)); \
79 flush_icache_range((unsigned) (dst), (unsigned) (dst) + (len)); \
80} while (0)
81
82#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
83 memcpy((dst), (src), (len))
84
85#endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */
diff --git a/arch/microblaze/include/asm/checksum.h b/arch/microblaze/include/asm/checksum.h
new file mode 100644
index 000000000000..92b30762ce59
--- /dev/null
+++ b/arch/microblaze/include/asm/checksum.h
@@ -0,0 +1,98 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_CHECKSUM_H
11#define _ASM_MICROBLAZE_CHECKSUM_H
12
13#include <linux/in6.h>
14
15/*
16 * computes the checksum of the TCP/UDP pseudo-header
17 * returns a 16-bit checksum, already complemented
18 */
19static inline __wsum
20csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
21 unsigned short proto, __wsum sum)
22{
23 __asm__("add %0, %0, %1\n\t"
24 "addc %0, %0, %2\n\t"
25 "addc %0, %0, %3\n\t"
26 "addc %0, %0, r0\n\t"
27 : "+&d" (sum)
28 : "d" (saddr), "d" (daddr), "d" (len + proto));
29
30 return sum;
31}
32
33/*
34 * computes the checksum of a memory block at buff, length len,
35 * and adds in "sum" (32-bit)
36 *
37 * returns a 32-bit number suitable for feeding into itself
38 * or csum_tcpudp_magic
39 *
40 * this function must be called with even lengths, except
41 * for the last fragment, which may be odd
42 *
43 * it's best to have buff aligned on a 32-bit boundary
44 */
45extern __wsum csum_partial(const void *buff, int len, __wsum sum);
46
47/*
48 * the same as csum_partial, but copies from src while it
49 * checksums
50 *
51 * here even more important to align src and dst on a 32-bit (or even
52 * better 64-bit) boundary
53 */
54extern __wsum csum_partial_copy(const char *src, char *dst, int len, int sum);
55
56/*
57 * the same as csum_partial_copy, but copies from user space.
58 *
59 * here even more important to align src and dst on a 32-bit (or even
60 * better 64-bit) boundary
61 */
62extern __wsum csum_partial_copy_from_user(const char *src, char *dst,
63 int len, int sum, int *csum_err);
64
65#define csum_partial_copy_nocheck(src, dst, len, sum) \
66 csum_partial_copy((src), (dst), (len), (sum))
67
68/*
69 * This is a version of ip_compute_csum() optimized for IP headers,
70 * which always checksum on 4 octet boundaries.
71 *
72 */
73extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
74
75/*
76 * Fold a partial checksum
77 */
78static inline __sum16 csum_fold(unsigned int sum)
79{
80 sum = (sum & 0xffff) + (sum >> 16);
81 sum = (sum & 0xffff) + (sum >> 16);
82 return ~sum;
83}
84
85static inline __sum16
86csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
87 unsigned short proto, __wsum sum)
88{
89 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
90}
91
92/*
93 * this routine is used for miscellaneous IP-like checksums, mainly
94 * in icmp.c
95 */
96extern __sum16 ip_compute_csum(const unsigned char *buff, int len);
97
98#endif /* _ASM_MICROBLAZE_CHECKSUM_H */
diff --git a/arch/microblaze/include/asm/clinkage.h b/arch/microblaze/include/asm/clinkage.h
new file mode 100644
index 000000000000..9e218435a55c
--- /dev/null
+++ b/arch/microblaze/include/asm/clinkage.h
@@ -0,0 +1 @@
#include <linux/linkage.h>
diff --git a/arch/microblaze/include/asm/cpuinfo.h b/arch/microblaze/include/asm/cpuinfo.h
new file mode 100644
index 000000000000..52f28f6dc4eb
--- /dev/null
+++ b/arch/microblaze/include/asm/cpuinfo.h
@@ -0,0 +1,102 @@
1/*
2 * Generic support for queying CPU info
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_CPUINFO_H
14#define _ASM_MICROBLAZE_CPUINFO_H
15
16#include <asm/prom.h>
17
18/* CPU Version and FPGA Family code conversion table type */
19struct cpu_ver_key {
20 const char *s;
21 const unsigned k;
22};
23
24extern const struct cpu_ver_key cpu_ver_lookup[];
25
26struct family_string_key {
27 const char *s;
28 const unsigned k;
29};
30
31extern const struct family_string_key family_string_lookup[];
32
33struct cpuinfo {
34 /* Core CPU configuration */
35 u32 use_instr;
36 u32 use_mult;
37 u32 use_fpu;
38 u32 use_exc;
39 u32 ver_code;
40 u32 mmu;
41
42 /* CPU caches */
43 u32 use_icache;
44 u32 icache_tagbits;
45 u32 icache_write;
46 u32 icache_line;
47 u32 icache_size;
48 unsigned long icache_base;
49 unsigned long icache_high;
50
51 u32 use_dcache;
52 u32 dcache_tagbits;
53 u32 dcache_write;
54 u32 dcache_line;
55 u32 dcache_size;
56 unsigned long dcache_base;
57 unsigned long dcache_high;
58
59 /* Bus connections */
60 u32 use_dopb;
61 u32 use_iopb;
62 u32 use_dlmb;
63 u32 use_ilmb;
64 u32 num_fsl;
65
66 /* CPU interrupt line info */
67 u32 irq_edge;
68 u32 irq_positive;
69
70 u32 area_optimised;
71
72 /* HW debug support */
73 u32 hw_debug;
74 u32 num_pc_brk;
75 u32 num_rd_brk;
76 u32 num_wr_brk;
77 u32 cpu_clock_freq; /* store real freq of cpu */
78 u32 freq_div_hz; /* store freq/HZ */
79
80 /* FPGA family */
81 u32 fpga_family_code;
82
83 /* User define */
84 u32 pvr_user1;
85 u32 pvr_user2;
86};
87
88extern struct cpuinfo cpuinfo;
89
90/* fwd declarations of the various CPUinfo populators */
91void setup_cpuinfo(void);
92
93void set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu);
94void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu);
95
96static inline unsigned int fcpu(struct device_node *cpu, char *n)
97{
98 int *val;
99 return (val = (int *) of_get_property(cpu, n, NULL)) ? *val : 0;
100}
101
102#endif /* _ASM_MICROBLAZE_CPUINFO_H */
diff --git a/arch/microblaze/include/asm/cputable.h b/arch/microblaze/include/asm/cputable.h
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/arch/microblaze/include/asm/cputable.h
diff --git a/include/asm-mn10300/cputime.h b/arch/microblaze/include/asm/cputime.h
index 6d68ad7e0ea3..6d68ad7e0ea3 100644
--- a/include/asm-mn10300/cputime.h
+++ b/arch/microblaze/include/asm/cputime.h
diff --git a/arch/microblaze/include/asm/current.h b/arch/microblaze/include/asm/current.h
new file mode 100644
index 000000000000..8375ea991e26
--- /dev/null
+++ b/arch/microblaze/include/asm/current.h
@@ -0,0 +1,21 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_CURRENT_H
10#define _ASM_MICROBLAZE_CURRENT_H
11
12# ifndef __ASSEMBLY__
13/*
14 * Dedicate r31 to keeping the current task pointer
15 */
16register struct task_struct *current asm("r31");
17
18# define get_current() current
19# endif /* __ASSEMBLY__ */
20
21#endif /* _ASM_MICROBLAZE_CURRENT_H */
diff --git a/arch/microblaze/include/asm/delay.h b/arch/microblaze/include/asm/delay.h
new file mode 100644
index 000000000000..05b7d39e4391
--- /dev/null
+++ b/arch/microblaze/include/asm/delay.h
@@ -0,0 +1,72 @@
1/*
2 * include/asm-microblaze/delay.h
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 2008 Michal Simek
9 * Copyright (C) 2007 John Williams
10 * Copyright (C) 2006 Atmark Techno, Inc.
11 */
12
13#ifndef _ASM_MICROBLAZE_DELAY_H
14#define _ASM_MICROBLAZE_DELAY_H
15
16extern inline void __delay(unsigned long loops)
17{
18 asm volatile ("# __delay \n\t" \
19 "1: addi %0, %0, -1\t\n" \
20 "bneid %0, 1b \t\n" \
21 "nop \t\n"
22 : "=r" (loops)
23 : "0" (loops));
24}
25
26/*
27 * Note that 19 * 226 == 4294 ==~ 2^32 / 10^6, so
28 * loops = (4294 * usecs * loops_per_jiffy * HZ) / 2^32.
29 *
30 * The mul instruction gives us loops = (a * b) / 2^32.
31 * We choose a = usecs * 19 * HZ and b = loops_per_jiffy * 226
32 * because this lets us support a wide range of HZ and
33 * loops_per_jiffy values without either a or b overflowing 2^32.
34 * Thus we need usecs * HZ <= (2^32 - 1) / 19 = 226050910 and
35 * loops_per_jiffy <= (2^32 - 1) / 226 = 19004280
36 * (which corresponds to ~3800 bogomips at HZ = 100).
37 * -- paulus
38 */
39#define __MAX_UDELAY (226050910UL/HZ) /* maximum udelay argument */
40#define __MAX_NDELAY (4294967295UL/HZ) /* maximum ndelay argument */
41
42extern unsigned long loops_per_jiffy;
43
44extern inline void __udelay(unsigned int x)
45{
46
47 unsigned long long tmp =
48 (unsigned long long)x * (unsigned long long)loops_per_jiffy \
49 * 226LL;
50 unsigned loops = tmp >> 32;
51
52/*
53 __asm__("mulxuu %0,%1,%2" : "=r" (loops) :
54 "r" (x), "r" (loops_per_jiffy * 226));
55*/
56 __delay(loops);
57}
58
59extern void __bad_udelay(void); /* deliberately undefined */
60extern void __bad_ndelay(void); /* deliberately undefined */
61
62#define udelay(n) (__builtin_constant_p(n) ? \
63 ((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \
64 __udelay((n) * (19 * HZ)))
65
66#define ndelay(n) (__builtin_constant_p(n) ? \
67 ((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \
68 __udelay((n) * HZ))
69
70#define muldiv(a, b, c) (((a)*(b))/(c))
71
72#endif /* _ASM_MICROBLAZE_DELAY_H */
diff --git a/arch/microblaze/include/asm/device.h b/arch/microblaze/include/asm/device.h
new file mode 100644
index 000000000000..c042830793ed
--- /dev/null
+++ b/arch/microblaze/include/asm/device.h
@@ -0,0 +1,21 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License v2. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DEVICE_H
10#define _ASM_MICROBLAZE_DEVICE_H
11
12struct device_node;
13
14struct dev_archdata {
15 /* Optional pointer to an OF device node */
16 struct device_node *of_node;
17};
18
19#endif /* _ASM_MICROBLAZE_DEVICE_H */
20
21
diff --git a/arch/microblaze/include/asm/div64.h b/arch/microblaze/include/asm/div64.h
new file mode 100644
index 000000000000..6cd978cefb28
--- /dev/null
+++ b/arch/microblaze/include/asm/div64.h
@@ -0,0 +1 @@
#include <asm-generic/div64.h>
diff --git a/arch/microblaze/include/asm/dma-mapping.h b/arch/microblaze/include/asm/dma-mapping.h
new file mode 100644
index 000000000000..17336252a9b8
--- /dev/null
+++ b/arch/microblaze/include/asm/dma-mapping.h
@@ -0,0 +1,129 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DMA_MAPPING_H
10#define _ASM_MICROBLAZE_DMA_MAPPING_H
11
12#include <asm/cacheflush.h>
13#include <linux/io.h>
14#include <linux/bug.h>
15
16struct scatterlist;
17
18#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
19#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
20
21/* FIXME */
22static inline int
23dma_supported(struct device *dev, u64 mask)
24{
25 return 1;
26}
27
28static inline dma_addr_t
29dma_map_page(struct device *dev, struct page *page,
30 unsigned long offset, size_t size,
31 enum dma_data_direction direction)
32{
33 BUG();
34 return 0;
35}
36
37static inline void
38dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
39 enum dma_data_direction direction)
40{
41 BUG();
42}
43
44static inline int
45dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
46 enum dma_data_direction direction)
47{
48 BUG();
49 return 0;
50}
51
52static inline void
53dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
54 enum dma_data_direction direction)
55{
56 BUG();
57}
58
59static inline void
60dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size,
61 enum dma_data_direction direction)
62{
63 BUG();
64}
65
66static inline void
67dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
68 size_t size, enum dma_data_direction direction)
69{
70 BUG();
71}
72
73static inline void
74dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
75 enum dma_data_direction direction)
76{
77 BUG();
78}
79
80static inline void
81dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems,
82 enum dma_data_direction direction)
83{
84 BUG();
85}
86
87static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
88{
89 return 0;
90}
91
92static inline void *dma_alloc_coherent(struct device *dev, size_t size,
93 dma_addr_t *dma_handle, int flag)
94{
95 return NULL; /* consistent_alloc(flag, size, dma_handle); */
96}
97
98static inline void dma_free_coherent(struct device *dev, size_t size,
99 void *vaddr, dma_addr_t dma_handle)
100{
101 BUG();
102}
103
104static inline dma_addr_t
105dma_map_single(struct device *dev, void *ptr, size_t size,
106 enum dma_data_direction direction)
107{
108 BUG_ON(direction == DMA_NONE);
109
110 return virt_to_bus(ptr);
111}
112
113static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
114 size_t size,
115 enum dma_data_direction direction)
116{
117 switch (direction) {
118 case DMA_FROM_DEVICE:
119 flush_dcache_range((unsigned)dma_addr,
120 (unsigned)dma_addr + size);
121 /* Fall through */
122 case DMA_TO_DEVICE:
123 break;
124 default:
125 BUG();
126 }
127}
128
129#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
diff --git a/arch/microblaze/include/asm/dma.h b/arch/microblaze/include/asm/dma.h
new file mode 100644
index 000000000000..0967fa04fc5e
--- /dev/null
+++ b/arch/microblaze/include/asm/dma.h
@@ -0,0 +1,16 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_DMA_H
10#define _ASM_MICROBLAZE_DMA_H
11
12/* we don't have dma address limit. define it as zero to be
13 * unlimited. */
14#define MAX_DMA_ADDRESS (0)
15
16#endif /* _ASM_MICROBLAZE_DMA_H */
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h
new file mode 100644
index 000000000000..81337f241347
--- /dev/null
+++ b/arch/microblaze/include/asm/elf.h
@@ -0,0 +1,30 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_ELF_H
10#define _ASM_MICROBLAZE_ELF_H
11
12/*
13 * Note there is no "official" ELF designation for Microblaze.
14 * I've snaffled the value from the microblaze binutils source code
15 * /binutils/microblaze/include/elf/microblaze.h
16 */
17#define EM_XILINX_MICROBLAZE 0xbaab
18#define ELF_ARCH EM_XILINX_MICROBLAZE
19
20/*
21 * This is used to ensure we don't load something for the wrong architecture.
22 */
23#define elf_check_arch(x) ((x)->e_machine == EM_XILINX_MICROBLAZE)
24
25/*
26 * These are used to set parameters in the core dumps.
27 */
28#define ELF_CLASS ELFCLASS32
29
30#endif /* _ASM_MICROBLAZE_ELF_H */
diff --git a/include/asm-mn10300/emergency-restart.h b/arch/microblaze/include/asm/emergency-restart.h
index 3711bd9d50bd..3711bd9d50bd 100644
--- a/include/asm-mn10300/emergency-restart.h
+++ b/arch/microblaze/include/asm/emergency-restart.h
diff --git a/arch/microblaze/include/asm/entry.h b/arch/microblaze/include/asm/entry.h
new file mode 100644
index 000000000000..7f57e42ee467
--- /dev/null
+++ b/arch/microblaze/include/asm/entry.h
@@ -0,0 +1,35 @@
1/*
2 * Definitions used by low-level trap handlers
3 *
4 * Copyright (C) 2008 Michal Simek
5 * Copyright (C) 2007 - 2008 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_ENTRY_H
14#define _ASM_MICROBLAZE_ENTRY_H
15
16#include <asm/percpu.h>
17#include <asm/ptrace.h>
18
19/*
20 * These are per-cpu variables required in entry.S, among other
21 * places
22 */
23
24#define PER_CPU(var) per_cpu__##var
25
26# ifndef __ASSEMBLY__
27DECLARE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
28DECLARE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
29DECLARE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
30DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
31DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
32DECLARE_PER_CPU(unsigned int, SYSCALL_SAVE); /* Saved syscall number */
33# endif /* __ASSEMBLY__ */
34
35#endif /* _ASM_MICROBLAZE_ENTRY_H */
diff --git a/include/asm-mn10300/errno.h b/arch/microblaze/include/asm/errno.h
index 4c82b503d92f..4c82b503d92f 100644
--- a/include/asm-mn10300/errno.h
+++ b/arch/microblaze/include/asm/errno.h
diff --git a/arch/microblaze/include/asm/exceptions.h b/arch/microblaze/include/asm/exceptions.h
new file mode 100644
index 000000000000..4cdd2159f470
--- /dev/null
+++ b/arch/microblaze/include/asm/exceptions.h
@@ -0,0 +1,96 @@
1/*
2 * Preliminary support for HW exception handing for Microblaze
3 *
4 * Copyright (C) 2008 Michal Simek
5 * Copyright (C) 2008 PetaLogix
6 * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_EXCEPTIONS_H
14#define _ASM_MICROBLAZE_EXCEPTIONS_H
15
16#ifdef __KERNEL__
17#ifndef __ASSEMBLY__
18
19/* Macros to enable and disable HW exceptions in the MSR */
20/* Define MSR enable bit for HW exceptions */
21#define HWEX_MSR_BIT (1 << 8)
22
23#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
24#define __enable_hw_exceptions() \
25 __asm__ __volatile__ (" msrset r0, %0; \
26 nop;" \
27 : \
28 : "i" (HWEX_MSR_BIT) \
29 : "memory")
30
31#define __disable_hw_exceptions() \
32 __asm__ __volatile__ (" msrclr r0, %0; \
33 nop;" \
34 : \
35 : "i" (HWEX_MSR_BIT) \
36 : "memory")
37#else /* !CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
38#define __enable_hw_exceptions() \
39 __asm__ __volatile__ (" \
40 mfs r12, rmsr; \
41 nop; \
42 ori r12, r12, %0; \
43 mts rmsr, r12; \
44 nop;" \
45 : \
46 : "i" (HWEX_MSR_BIT) \
47 : "memory", "r12")
48
49#define __disable_hw_exceptions() \
50 __asm__ __volatile__ (" \
51 mfs r12, rmsr; \
52 nop; \
53 andi r12, r12, ~%0; \
54 mts rmsr, r12; \
55 nop;" \
56 : \
57 : "i" (HWEX_MSR_BIT) \
58 : "memory", "r12")
59#endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
60
61asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
62 int fsr, int addr);
63
64#if defined(CONFIG_XMON)
65extern void xmon(struct pt_regs *regs);
66extern int xmon_bpt(struct pt_regs *regs);
67extern int xmon_sstep(struct pt_regs *regs);
68extern int xmon_iabr_match(struct pt_regs *regs);
69extern int xmon_dabr_match(struct pt_regs *regs);
70extern void (*xmon_fault_handler)(struct pt_regs *regs);
71
72void (*debugger)(struct pt_regs *regs) = xmon;
73int (*debugger_bpt)(struct pt_regs *regs) = xmon_bpt;
74int (*debugger_sstep)(struct pt_regs *regs) = xmon_sstep;
75int (*debugger_iabr_match)(struct pt_regs *regs) = xmon_iabr_match;
76int (*debugger_dabr_match)(struct pt_regs *regs) = xmon_dabr_match;
77void (*debugger_fault_handler)(struct pt_regs *regs);
78#elif defined(CONFIG_KGDB)
79void (*debugger)(struct pt_regs *regs);
80int (*debugger_bpt)(struct pt_regs *regs);
81int (*debugger_sstep)(struct pt_regs *regs);
82int (*debugger_iabr_match)(struct pt_regs *regs);
83int (*debugger_dabr_match)(struct pt_regs *regs);
84void (*debugger_fault_handler)(struct pt_regs *regs);
85#else
86#define debugger(regs) do { } while (0)
87#define debugger_bpt(regs) 0
88#define debugger_sstep(regs) 0
89#define debugger_iabr_match(regs) 0
90#define debugger_dabr_match(regs) 0
91#define debugger_fault_handler ((void (*)(struct pt_regs *))0)
92#endif
93
94#endif /*__ASSEMBLY__ */
95#endif /* __KERNEL__ */
96#endif /* _ASM_MICROBLAZE_EXCEPTIONS_H */
diff --git a/include/asm-mn10300/fcntl.h b/arch/microblaze/include/asm/fcntl.h
index 46ab12db5739..46ab12db5739 100644
--- a/include/asm-mn10300/fcntl.h
+++ b/arch/microblaze/include/asm/fcntl.h
diff --git a/arch/microblaze/include/asm/flat.h b/arch/microblaze/include/asm/flat.h
new file mode 100644
index 000000000000..acf0da543ef1
--- /dev/null
+++ b/arch/microblaze/include/asm/flat.h
@@ -0,0 +1,90 @@
1/*
2 * uClinux flat-format executables
3 *
4 * Copyright (C) 2005 John Williams <jwilliams@itee.uq.edu.au>
5 *
6 * This file is subject to the terms and conditions of the GNU General
7 * Public License. See the file COPYING in the main directory of this
8 * archive for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_FLAT_H
12#define _ASM_MICROBLAZE_FLAT_H
13
14#include <asm/unaligned.h>
15
16#define flat_stack_align(sp) /* nothing needed */
17#define flat_argvp_envp_on_stack() 0
18#define flat_old_ram_flag(flags) (flags)
19#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
20#define flat_set_persistent(relval, p) 0
21
22/*
23 * Microblaze works a little differently from other arches, because
24 * of the MICROBLAZE_64 reloc type. Here, a 32 bit address is split
25 * over two instructions, an 'imm' instruction which provides the top
26 * 16 bits, then the instruction "proper" which provides the low 16
27 * bits.
28 */
29
30/*
31 * Crack open a symbol reference and extract the address to be
32 * relocated. rp is a potentially unaligned pointer to the
33 * reference
34 */
35
36static inline unsigned long
37flat_get_addr_from_rp(unsigned long *rp, unsigned long relval,
38 unsigned long flags, unsigned long *persistent)
39{
40 unsigned long addr;
41 (void)flags;
42
43 /* Is it a split 64/32 reference? */
44 if (relval & 0x80000000) {
45 /* Grab the two halves of the reference */
46 unsigned long val_hi, val_lo;
47
48 val_hi = get_unaligned(rp);
49 val_lo = get_unaligned(rp+1);
50
51 /* Crack the address out */
52 addr = ((val_hi & 0xffff) << 16) + (val_lo & 0xffff);
53 } else {
54 /* Get the address straight out */
55 addr = get_unaligned(rp);
56 }
57
58 return addr;
59}
60
61/*
62 * Insert an address into the symbol reference at rp. rp is potentially
63 * unaligned.
64 */
65
66static inline void
67flat_put_addr_at_rp(unsigned long *rp, unsigned long addr, unsigned long relval)
68{
69 /* Is this a split 64/32 reloc? */
70 if (relval & 0x80000000) {
71 /* Get the two "halves" */
72 unsigned long val_hi = get_unaligned(rp);
73 unsigned long val_lo = get_unaligned(rp + 1);
74
75 /* insert the address */
76 val_hi = (val_hi & 0xffff0000) | addr >> 16;
77 val_lo = (val_lo & 0xffff0000) | (addr & 0xffff);
78
79 /* store the two halves back into memory */
80 put_unaligned(val_hi, rp);
81 put_unaligned(val_lo, rp+1);
82 } else {
83 /* Put it straight in, no messing around */
84 put_unaligned(addr, rp);
85 }
86}
87
88#define flat_get_relocate_addr(rel) (rel & 0x7fffffff)
89
90#endif /* _ASM_MICROBLAZE_FLAT_H */
diff --git a/include/asm-mn10300/futex.h b/arch/microblaze/include/asm/futex.h
index 0b745828f42b..0b745828f42b 100644
--- a/include/asm-mn10300/futex.h
+++ b/arch/microblaze/include/asm/futex.h
diff --git a/arch/microblaze/include/asm/gpio.h b/arch/microblaze/include/asm/gpio.h
new file mode 100644
index 000000000000..ea04632399d8
--- /dev/null
+++ b/arch/microblaze/include/asm/gpio.h
@@ -0,0 +1,56 @@
1/*
2 * Generic GPIO API implementation for PowerPC.
3 *
4 * Copyright (c) 2007-2008 MontaVista Software, Inc.
5 *
6 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 */
13
14#ifndef __ASM_POWERPC_GPIO_H
15#define __ASM_POWERPC_GPIO_H
16
17#include <linux/errno.h>
18#include <asm-generic/gpio.h>
19
20#ifdef CONFIG_GPIOLIB
21
22/*
23 * We don't (yet) implement inlined/rapid versions for on-chip gpios.
24 * Just call gpiolib.
25 */
26static inline int gpio_get_value(unsigned int gpio)
27{
28 return __gpio_get_value(gpio);
29}
30
31static inline void gpio_set_value(unsigned int gpio, int value)
32{
33 __gpio_set_value(gpio, value);
34}
35
36static inline int gpio_cansleep(unsigned int gpio)
37{
38 return __gpio_cansleep(gpio);
39}
40
41/*
42 * Not implemented, yet.
43 */
44static inline int gpio_to_irq(unsigned int gpio)
45{
46 return -ENOSYS;
47}
48
49static inline int irq_to_gpio(unsigned int irq)
50{
51 return -EINVAL;
52}
53
54#endif /* CONFIG_GPIOLIB */
55
56#endif /* __ASM_POWERPC_GPIO_H */
diff --git a/arch/microblaze/include/asm/hardirq.h b/arch/microblaze/include/asm/hardirq.h
new file mode 100644
index 000000000000..0f2d6b013e11
--- /dev/null
+++ b/arch/microblaze/include/asm/hardirq.h
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_HARDIRQ_H
10#define _ASM_MICROBLAZE_HARDIRQ_H
11
12#include <linux/cache.h>
13#include <linux/irq.h>
14#include <asm/irq.h>
15#include <asm/current.h>
16#include <linux/ptrace.h>
17
18/* should be defined in each interrupt controller driver */
19extern unsigned int get_irq(struct pt_regs *regs);
20
21typedef struct {
22 unsigned int __softirq_pending;
23} ____cacheline_aligned irq_cpustat_t;
24
25void ack_bad_irq(unsigned int irq);
26
27#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
28
29#endif /* _ASM_MICROBLAZE_HARDIRQ_H */
diff --git a/arch/microblaze/include/asm/hw_irq.h b/arch/microblaze/include/asm/hw_irq.h
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/arch/microblaze/include/asm/hw_irq.h
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
new file mode 100644
index 000000000000..cfab0342588d
--- /dev/null
+++ b/arch/microblaze/include/asm/io.h
@@ -0,0 +1,209 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IO_H
10#define _ASM_MICROBLAZE_IO_H
11
12#include <asm/byteorder.h>
13#include <asm/page.h>
14#include <linux/types.h>
15#include <asm/page.h>
16
17#define IO_SPACE_LIMIT (0xFFFFFFFF)
18
19static inline unsigned char __raw_readb(const volatile void __iomem *addr)
20{
21 return *(volatile unsigned char __force *)addr;
22}
23static inline unsigned short __raw_readw(const volatile void __iomem *addr)
24{
25 return *(volatile unsigned short __force *)addr;
26}
27static inline unsigned int __raw_readl(const volatile void __iomem *addr)
28{
29 return *(volatile unsigned int __force *)addr;
30}
31static inline unsigned long __raw_readq(const volatile void __iomem *addr)
32{
33 return *(volatile unsigned long __force *)addr;
34}
35static inline void __raw_writeb(unsigned char v, volatile void __iomem *addr)
36{
37 *(volatile unsigned char __force *)addr = v;
38}
39static inline void __raw_writew(unsigned short v, volatile void __iomem *addr)
40{
41 *(volatile unsigned short __force *)addr = v;
42}
43static inline void __raw_writel(unsigned int v, volatile void __iomem *addr)
44{
45 *(volatile unsigned int __force *)addr = v;
46}
47static inline void __raw_writeq(unsigned long v, volatile void __iomem *addr)
48{
49 *(volatile unsigned long __force *)addr = v;
50}
51
52/*
53 * read (readb, readw, readl, readq) and write (writeb, writew,
54 * writel, writeq) accessors are for PCI and thus littel endian.
55 * Linux 2.4 for Microblaze had this wrong.
56 */
57static inline unsigned char readb(const volatile void __iomem *addr)
58{
59 return *(volatile unsigned char __force *)addr;
60}
61static inline unsigned short readw(const volatile void __iomem *addr)
62{
63 return le16_to_cpu(*(volatile unsigned short __force *)addr);
64}
65static inline unsigned int readl(const volatile void __iomem *addr)
66{
67 return le32_to_cpu(*(volatile unsigned int __force *)addr);
68}
69static inline void writeb(unsigned char v, volatile void __iomem *addr)
70{
71 *(volatile unsigned char __force *)addr = v;
72}
73static inline void writew(unsigned short v, volatile void __iomem *addr)
74{
75 *(volatile unsigned short __force *)addr = cpu_to_le16(v);
76}
77static inline void writel(unsigned int v, volatile void __iomem *addr)
78{
79 *(volatile unsigned int __force *)addr = cpu_to_le32(v);
80}
81
82/* ioread and iowrite variants. thease are for now same as __raw_
83 * variants of accessors. we might check for endianess in the feature
84 */
85#define ioread8(addr) __raw_readb((u8 *)(addr))
86#define ioread16(addr) __raw_readw((u16 *)(addr))
87#define ioread32(addr) __raw_readl((u32 *)(addr))
88#define iowrite8(v, addr) __raw_writeb((u8)(v), (u8 *)(addr))
89#define iowrite16(v, addr) __raw_writew((u16)(v), (u16 *)(addr))
90#define iowrite32(v, addr) __raw_writel((u32)(v), (u32 *)(addr))
91
92/* These are the definitions for the x86 IO instructions
93 * inb/inw/inl/outb/outw/outl, the "string" versions
94 * insb/insw/insl/outsb/outsw/outsl, and the "pausing" versions
95 * inb_p/inw_p/...
96 * The macros don't do byte-swapping.
97 */
98#define inb(port) readb((u8 *)((port)))
99#define outb(val, port) writeb((val), (u8 *)((unsigned long)(port)))
100#define inw(port) readw((u16 *)((port)))
101#define outw(val, port) writew((val), (u16 *)((unsigned long)(port)))
102#define inl(port) readl((u32 *)((port)))
103#define outl(val, port) writel((val), (u32 *)((unsigned long)(port)))
104
105#define inb_p(port) inb((port))
106#define outb_p(val, port) outb((val), (port))
107#define inw_p(port) inw((port))
108#define outw_p(val, port) outw((val), (port))
109#define inl_p(port) inl((port))
110#define outl_p(val, port) outl((val), (port))
111
112#define memset_io(a, b, c) memset((void *)(a), (b), (c))
113#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c))
114#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c))
115
116/**
117 * virt_to_phys - map virtual addresses to physical
118 * @address: address to remap
119 *
120 * The returned physical address is the physical (CPU) mapping for
121 * the memory address given. It is only valid to use this function on
122 * addresses directly mapped or allocated via kmalloc.
123 *
124 * This function does not give bus mappings for DMA transfers. In
125 * almost all conceivable cases a device driver should not be using
126 * this function
127 */
128static inline unsigned long __iomem virt_to_phys(volatile void *address)
129{
130 return __pa((unsigned long)address);
131}
132
133#define virt_to_bus virt_to_phys
134
135/**
136 * phys_to_virt - map physical address to virtual
137 * @address: address to remap
138 *
139 * The returned virtual address is a current CPU mapping for
140 * the memory address given. It is only valid to use this function on
141 * addresses that have a kernel mapping
142 *
143 * This function does not handle bus mappings for DMA transfers. In
144 * almost all conceivable cases a device driver should not be using
145 * this function
146 */
147static inline void *phys_to_virt(unsigned long address)
148{
149 return (void *)__va(address);
150}
151
152#define bus_to_virt(a) phys_to_virt(a)
153
154static inline void __iomem *__ioremap(phys_addr_t address, unsigned long size,
155 unsigned long flags)
156{
157 return (void *)address;
158}
159
160#define ioremap(physaddr, size) ((void __iomem *)(unsigned long)(physaddr))
161#define iounmap(addr) ((void)0)
162#define ioremap_nocache(physaddr, size) ioremap(physaddr, size)
163
164/*
165 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
166 * access
167 */
168#define xlate_dev_mem_ptr(p) __va(p)
169
170/*
171 * Convert a virtual cached pointer to an uncached pointer
172 */
173#define xlate_dev_kmem_ptr(p) p
174
175/*
176 * Big Endian
177 */
178#define out_be32(a, v) __raw_writel((v), (void __iomem __force *)(a))
179#define out_be16(a, v) __raw_writew((v), (a))
180
181#define in_be32(a) __raw_readl((const void __iomem __force *)(a))
182#define in_be16(a) __raw_readw(a)
183
184/*
185 * Little endian
186 */
187
188#define out_le32(a, v) __raw_writel(__cpu_to_le32(v), (a));
189#define out_le16(a, v) __raw_writew(__cpu_to_le16(v), (a))
190
191#define in_le32(a) __le32_to_cpu(__raw_readl(a))
192#define in_le16(a) __le16_to_cpu(__raw_readw(a))
193
194/* Byte ops */
195#define out_8(a, v) __raw_writeb((v), (a))
196#define in_8(a) __raw_readb(a)
197
198/* FIXME */
199static inline void __iomem *ioport_map(unsigned long port, unsigned int len)
200{
201 return (void __iomem *) (port);
202}
203
204static inline void ioport_unmap(void __iomem *addr)
205{
206 /* Nothing to do */
207}
208
209#endif /* _ASM_MICROBLAZE_IO_H */
diff --git a/include/asm-mn10300/ioctl.h b/arch/microblaze/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/include/asm-mn10300/ioctl.h
+++ b/arch/microblaze/include/asm/ioctl.h
diff --git a/arch/microblaze/include/asm/ioctls.h b/arch/microblaze/include/asm/ioctls.h
new file mode 100644
index 000000000000..03582b249204
--- /dev/null
+++ b/arch/microblaze/include/asm/ioctls.h
@@ -0,0 +1,91 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IOCTLS_H
10#define _ASM_MICROBLAZE_IOCTLS_H
11
12#include <linux/ioctl.h>
13
14/* 0x54 is just a magic number to make these relatively unique ('T') */
15
16#define TCGETS 0x5401
17#define TCSETS 0x5402
18#define TCSETSW 0x5403
19#define TCSETSF 0x5404
20#define TCGETA 0x5405
21#define TCSETA 0x5406
22#define TCSETAW 0x5407
23#define TCSETAF 0x5408
24#define TCSBRK 0x5409
25#define TCXONC 0x540A
26#define TCFLSH 0x540B
27#define TIOCEXCL 0x540C
28#define TIOCNXCL 0x540D
29#define TIOCSCTTY 0x540E
30#define TIOCGPGRP 0x540F
31#define TIOCSPGRP 0x5410
32#define TIOCOUTQ 0x5411
33#define TIOCSTI 0x5412
34#define TIOCGWINSZ 0x5413
35#define TIOCSWINSZ 0x5414
36#define TIOCMGET 0x5415
37#define TIOCMBIS 0x5416
38#define TIOCMBIC 0x5417
39#define TIOCMSET 0x5418
40#define TIOCGSOFTCAR 0x5419
41#define TIOCSSOFTCAR 0x541A
42#define FIONREAD 0x541B
43#define TIOCINQ FIONREAD
44#define TIOCLINUX 0x541C
45#define TIOCCONS 0x541D
46#define TIOCGSERIAL 0x541E
47#define TIOCSSERIAL 0x541F
48#define TIOCPKT 0x5420
49#define FIONBIO 0x5421
50#define TIOCNOTTY 0x5422
51#define TIOCSETD 0x5423
52#define TIOCGETD 0x5424
53#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
54#define TIOCTTYGSTRUCT 0x5426 /* For debugging only */
55#define TIOCSBRK 0x5427 /* BSD compatibility */
56#define TIOCCBRK 0x5428 /* BSD compatibility */
57#define TIOCGSID 0x5429 /* Return the session ID of FD */
58/* Get Pty Number (of pty-mux device) */
59#define TIOCGPTN _IOR('T', 0x30, unsigned int)
60#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
61
62#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
63#define FIOCLEX 0x5451
64#define FIOASYNC 0x5452
65#define TIOCSERCONFIG 0x5453
66#define TIOCSERGWILD 0x5454
67#define TIOCSERSWILD 0x5455
68#define TIOCGLCKTRMIOS 0x5456
69#define TIOCSLCKTRMIOS 0x5457
70#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
71#define TIOCSERGETLSR 0x5459 /* Get line status register */
72#define TIOCSERGETMULTI 0x545A /* Get multiport config */
73#define TIOCSERSETMULTI 0x545B /* Set multiport config */
74
75#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
76#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
77
78#define FIOQSIZE 0x545E
79
80/* Used for packet mode */
81#define TIOCPKT_DATA 0
82#define TIOCPKT_FLUSHREAD 1
83#define TIOCPKT_FLUSHWRITE 2
84#define TIOCPKT_STOP 4
85#define TIOCPKT_START 8
86#define TIOCPKT_NOSTOP 16
87#define TIOCPKT_DOSTOP 32
88
89#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
90
91#endif /* _ASM_MICROBLAZE_IOCTLS_H */
diff --git a/include/asm-mn10300/ipc.h b/arch/microblaze/include/asm/ipc.h
index a46e3d9c2a3f..a46e3d9c2a3f 100644
--- a/include/asm-mn10300/ipc.h
+++ b/arch/microblaze/include/asm/ipc.h
diff --git a/arch/microblaze/include/asm/ipcbuf.h b/arch/microblaze/include/asm/ipcbuf.h
new file mode 100644
index 000000000000..b056fa420654
--- /dev/null
+++ b/arch/microblaze/include/asm/ipcbuf.h
@@ -0,0 +1,36 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IPCBUF_H
10#define _ASM_MICROBLAZE_IPCBUF_H
11
12/*
13 * The user_ipc_perm structure for microblaze architecture.
14 * Note extra padding because this structure is passed back and forth
15 * between kernel and user space.
16 *
17 * Pad space is left for:
18 * - 32-bit mode_t and seq
19 * - 2 miscellaneous 32-bit values
20 */
21
22struct ipc64_perm {
23 __kernel_key_t key;
24 __kernel_uid32_t uid;
25 __kernel_gid32_t gid;
26 __kernel_uid32_t cuid;
27 __kernel_gid32_t cgid;
28 __kernel_mode_t mode;
29 unsigned short __pad1;
30 unsigned short seq;
31 unsigned short __pad2;
32 unsigned long __unused1;
33 unsigned long __unused2;
34};
35
36#endif /* _ASM_MICROBLAZE_IPCBUF_H */
diff --git a/arch/microblaze/include/asm/irq.h b/arch/microblaze/include/asm/irq.h
new file mode 100644
index 000000000000..db515deaa720
--- /dev/null
+++ b/arch/microblaze/include/asm/irq.h
@@ -0,0 +1,47 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IRQ_H
10#define _ASM_MICROBLAZE_IRQ_H
11
12#define NR_IRQS 32
13
14#include <linux/interrupt.h>
15
16extern unsigned int nr_irq;
17
18#define NO_IRQ (-1)
19
20static inline int irq_canonicalize(int irq)
21{
22 return irq;
23}
24
25struct pt_regs;
26extern void do_IRQ(struct pt_regs *regs);
27
28/* irq_of_parse_and_map - Parse and Map an interrupt into linux virq space
29 * @device: Device node of the device whose interrupt is to be mapped
30 * @index: Index of the interrupt to map
31 *
32 * This function is a wrapper that chains of_irq_map_one() and
33 * irq_create_of_mapping() to make things easier to callers
34 */
35struct device_node;
36extern unsigned int irq_of_parse_and_map(struct device_node *dev, int index);
37
38/** FIXME - not implement
39 * irq_dispose_mapping - Unmap an interrupt
40 * @virq: linux virq number of the interrupt to unmap
41 */
42static inline void irq_dispose_mapping(unsigned int virq)
43{
44 return;
45}
46
47#endif /* _ASM_MICROBLAZE_IRQ_H */
diff --git a/arch/microblaze/include/asm/irq_regs.h b/arch/microblaze/include/asm/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/arch/microblaze/include/asm/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/arch/microblaze/include/asm/irqflags.h b/arch/microblaze/include/asm/irqflags.h
new file mode 100644
index 000000000000..dea65645a4f8
--- /dev/null
+++ b/arch/microblaze/include/asm/irqflags.h
@@ -0,0 +1,123 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_IRQFLAGS_H
10#define _ASM_MICROBLAZE_IRQFLAGS_H
11
12#include <linux/irqflags.h>
13
14# if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
15
16# define local_irq_save(flags) \
17 do { \
18 asm volatile ("# local_irq_save \n\t" \
19 "msrclr %0, %1 \n\t" \
20 "nop \n\t" \
21 : "=r"(flags) \
22 : "i"(MSR_IE) \
23 : "memory"); \
24 } while (0)
25
26# define local_irq_disable() \
27 do { \
28 asm volatile ("# local_irq_disable \n\t" \
29 "msrclr r0, %0 \n\t" \
30 "nop \n\t" \
31 : \
32 : "i"(MSR_IE) \
33 : "memory"); \
34 } while (0)
35
36# define local_irq_enable() \
37 do { \
38 asm volatile ("# local_irq_enable \n\t" \
39 "msrset r0, %0 \n\t" \
40 "nop \n\t" \
41 : \
42 : "i"(MSR_IE) \
43 : "memory"); \
44 } while (0)
45
46# else /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR == 0 */
47
48# define local_irq_save(flags) \
49 do { \
50 register unsigned tmp; \
51 asm volatile ("# local_irq_save \n\t" \
52 "mfs %0, rmsr \n\t" \
53 "nop \n\t" \
54 "andi %1, %0, %2 \n\t" \
55 "mts rmsr, %1 \n\t" \
56 "nop \n\t" \
57 : "=r"(flags), "=r" (tmp) \
58 : "i"(~MSR_IE) \
59 : "memory"); \
60 } while (0)
61
62# define local_irq_disable() \
63 do { \
64 register unsigned tmp; \
65 asm volatile ("# local_irq_disable \n\t" \
66 "mfs %0, rmsr \n\t" \
67 "nop \n\t" \
68 "andi %0, %0, %1 \n\t" \
69 "mts rmsr, %0 \n\t" \
70 "nop \n\t" \
71 : "=r"(tmp) \
72 : "i"(~MSR_IE) \
73 : "memory"); \
74 } while (0)
75
76# define local_irq_enable() \
77 do { \
78 register unsigned tmp; \
79 asm volatile ("# local_irq_enable \n\t" \
80 "mfs %0, rmsr \n\t" \
81 "nop \n\t" \
82 "ori %0, %0, %1 \n\t" \
83 "mts rmsr, %0 \n\t" \
84 "nop \n\t" \
85 : "=r"(tmp) \
86 : "i"(MSR_IE) \
87 : "memory"); \
88 } while (0)
89
90# endif /* CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR */
91
92#define local_save_flags(flags) \
93 do { \
94 asm volatile ("# local_save_flags \n\t" \
95 "mfs %0, rmsr \n\t" \
96 "nop \n\t" \
97 : "=r"(flags) \
98 : \
99 : "memory"); \
100 } while (0)
101
102#define local_irq_restore(flags) \
103 do { \
104 asm volatile ("# local_irq_restore \n\t"\
105 "mts rmsr, %0 \n\t" \
106 "nop \n\t" \
107 : \
108 : "r"(flags) \
109 : "memory"); \
110 } while (0)
111
112static inline int irqs_disabled(void)
113{
114 unsigned long flags;
115
116 local_save_flags(flags);
117 return ((flags & MSR_IE) == 0);
118}
119
120#define raw_irqs_disabled irqs_disabled
121#define raw_irqs_disabled_flags(flags) ((flags) == 0)
122
123#endif /* _ASM_MICROBLAZE_IRQFLAGS_H */
diff --git a/arch/microblaze/include/asm/kdebug.h b/arch/microblaze/include/asm/kdebug.h
new file mode 100644
index 000000000000..6ece1b037665
--- /dev/null
+++ b/arch/microblaze/include/asm/kdebug.h
@@ -0,0 +1 @@
#include <asm-generic/kdebug.h>
diff --git a/arch/microblaze/include/asm/kmap_types.h b/arch/microblaze/include/asm/kmap_types.h
new file mode 100644
index 000000000000..4d7e222f5dd7
--- /dev/null
+++ b/arch/microblaze/include/asm/kmap_types.h
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
10#define _ASM_MICROBLAZE_KMAP_TYPES_H
11
12enum km_type {
13 KM_BOUNCE_READ,
14 KM_SKB_SUNRPC_DATA,
15 KM_SKB_DATA_SOFTIRQ,
16 KM_USER0,
17 KM_USER1,
18 KM_BIO_SRC_IRQ,
19 KM_BIO_DST_IRQ,
20 KM_PTE0,
21 KM_PTE1,
22 KM_IRQ0,
23 KM_IRQ1,
24 KM_SOFTIRQ0,
25 KM_SOFTIRQ1,
26 KM_TYPE_NR,
27};
28
29#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
diff --git a/arch/microblaze/include/asm/linkage.h b/arch/microblaze/include/asm/linkage.h
new file mode 100644
index 000000000000..3a8e36d057eb
--- /dev/null
+++ b/arch/microblaze/include/asm/linkage.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_LINKAGE_H
10#define _ASM_MICROBLAZE_LINKAGE_H
11
12#define __ALIGN .align 4
13#define __ALIGN_STR ".align 4"
14
15#endif /* _ASM_MICROBLAZE_LINKAGE_H */
diff --git a/arch/microblaze/include/asm/lmb.h b/arch/microblaze/include/asm/lmb.h
new file mode 100644
index 000000000000..a0a0a929c293
--- /dev/null
+++ b/arch/microblaze/include/asm/lmb.h
@@ -0,0 +1,17 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_LMB_H
10#define _ASM_MICROBLAZE_LMB_H
11
12/* LMB limit is OFF */
13#define LMB_REAL_LIMIT 0xFFFFFFFF
14
15#endif /* _ASM_MICROBLAZE_LMB_H */
16
17
diff --git a/include/asm-mn10300/local.h b/arch/microblaze/include/asm/local.h
index c11c530f74d0..c11c530f74d0 100644
--- a/include/asm-mn10300/local.h
+++ b/arch/microblaze/include/asm/local.h
diff --git a/arch/microblaze/include/asm/mman.h b/arch/microblaze/include/asm/mman.h
new file mode 100644
index 000000000000..4914b1329445
--- /dev/null
+++ b/arch/microblaze/include/asm/mman.h
@@ -0,0 +1,25 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMAN_H
10#define _ASM_MICROBLAZE_MMAN_H
11
12#include <asm-generic/mman.h>
13
14#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
15#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
16#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
17#define MAP_LOCKED 0x2000 /* pages are locked */
18#define MAP_NORESERVE 0x4000 /* don't check for reservations */
19#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
20#define MAP_NONBLOCK 0x10000 /* do not block on IO */
21
22#define MCL_CURRENT 1 /* lock all current mappings */
23#define MCL_FUTURE 2 /* lock all future mappings */
24
25#endif /* _ASM_MICROBLAZE_MMAN_H */
diff --git a/arch/microblaze/include/asm/mmu.h b/arch/microblaze/include/asm/mmu.h
new file mode 100644
index 000000000000..0e0431d61635
--- /dev/null
+++ b/arch/microblaze/include/asm/mmu.h
@@ -0,0 +1,19 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMU_H
10#define _ASM_MICROBLAZE_MMU_H
11
12#ifndef __ASSEMBLY__
13typedef struct {
14 struct vm_list_struct *vmlist;
15 unsigned long end_brk;
16} mm_context_t;
17#endif /* __ASSEMBLY__ */
18
19#endif /* _ASM_MICROBLAZE_MMU_H */
diff --git a/arch/microblaze/include/asm/mmu_context.h b/arch/microblaze/include/asm/mmu_context.h
new file mode 100644
index 000000000000..150ca01b74ba
--- /dev/null
+++ b/arch/microblaze/include/asm/mmu_context.h
@@ -0,0 +1,21 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MMU_CONTEXT_H
10#define _ASM_MICROBLAZE_MMU_CONTEXT_H
11
12# define init_new_context(tsk, mm) ({ 0; })
13
14# define enter_lazy_tlb(mm, tsk) do {} while (0)
15# define change_mm_context(old, ctx, _pml4) do {} while (0)
16# define destroy_context(mm) do {} while (0)
17# define deactivate_mm(tsk, mm) do {} while (0)
18# define switch_mm(prev, next, tsk) do {} while (0)
19# define activate_mm(prev, next) do {} while (0)
20
21#endif /* _ASM_MICROBLAZE_MMU_CONTEXT_H */
diff --git a/arch/microblaze/include/asm/module.h b/arch/microblaze/include/asm/module.h
new file mode 100644
index 000000000000..914565a90315
--- /dev/null
+++ b/arch/microblaze/include/asm/module.h
@@ -0,0 +1,37 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_MODULE_H
10#define _ASM_MICROBLAZE_MODULE_H
11
12/* Microblaze Relocations */
13#define R_MICROBLAZE_NONE 0
14#define R_MICROBLAZE_32 1
15#define R_MICROBLAZE_32_PCREL 2
16#define R_MICROBLAZE_64_PCREL 3
17#define R_MICROBLAZE_32_PCREL_LO 4
18#define R_MICROBLAZE_64 5
19#define R_MICROBLAZE_32_LO 6
20#define R_MICROBLAZE_SRO32 7
21#define R_MICROBLAZE_SRW32 8
22#define R_MICROBLAZE_64_NONE 9
23#define R_MICROBLAZE_32_SYM_OP_SYM 10
24/* Keep this the last entry. */
25#define R_MICROBLAZE_NUM 11
26
27struct mod_arch_specific {
28 int foo;
29};
30
31#define Elf_Shdr Elf32_Shdr
32#define Elf_Sym Elf32_Sym
33#define Elf_Ehdr Elf32_Ehdr
34
35typedef struct { volatile int counter; } module_t;
36
37#endif /* _ASM_MICROBLAZE_MODULE_H */
diff --git a/arch/microblaze/include/asm/msgbuf.h b/arch/microblaze/include/asm/msgbuf.h
new file mode 100644
index 000000000000..09dd97097211
--- /dev/null
+++ b/arch/microblaze/include/asm/msgbuf.h
@@ -0,0 +1,31 @@
1#ifndef _ASM_MICROBLAZE_MSGBUF_H
2#define _ASM_MICROBLAZE_MSGBUF_H
3
4/*
5 * The msqid64_ds structure for microblaze architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct msqid64_ds {
15 struct ipc64_perm msg_perm;
16 __kernel_time_t msg_stime; /* last msgsnd time */
17 unsigned long __unused1;
18 __kernel_time_t msg_rtime; /* last msgrcv time */
19 unsigned long __unused2;
20 __kernel_time_t msg_ctime; /* last change time */
21 unsigned long __unused3;
22 unsigned long msg_cbytes; /* current number of bytes on queue */
23 unsigned long msg_qnum; /* number of messages in queue */
24 unsigned long msg_qbytes; /* max number of bytes on queue */
25 __kernel_pid_t msg_lspid; /* pid of last msgsnd */
26 __kernel_pid_t msg_lrpid; /* last receive pid */
27 unsigned long __unused4;
28 unsigned long __unused5;
29};
30
31#endif /* _ASM_MICROBLAZE_MSGBUF_H */
diff --git a/arch/microblaze/include/asm/mutex.h b/arch/microblaze/include/asm/mutex.h
new file mode 100644
index 000000000000..ff6101aa2c71
--- /dev/null
+++ b/arch/microblaze/include/asm/mutex.h
@@ -0,0 +1 @@
#include <asm-generic/mutex-dec.h>
diff --git a/arch/microblaze/include/asm/namei.h b/arch/microblaze/include/asm/namei.h
new file mode 100644
index 000000000000..61d60b8a07d5
--- /dev/null
+++ b/arch/microblaze/include/asm/namei.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_NAMEI_H
10#define _ASM_MICROBLAZE_NAMEI_H
11
12#ifdef __KERNEL__
13
14/* This dummy routine maybe changed to something useful
15 * for /usr/gnemul/ emulation stuff.
16 * Look at asm-sparc/namei.h for details.
17 */
18#define __emul_prefix() NULL
19
20#endif /* __KERNEL__ */
21
22#endif /* _ASM_MICROBLAZE_NAMEI_H */
diff --git a/arch/microblaze/include/asm/of_device.h b/arch/microblaze/include/asm/of_device.h
new file mode 100644
index 000000000000..ba917cfaefe6
--- /dev/null
+++ b/arch/microblaze/include/asm/of_device.h
@@ -0,0 +1,45 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 *
4 * based on PowerPC of_device.h
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_OF_DEVICE_H
12#define _ASM_MICROBLAZE_OF_DEVICE_H
13#ifdef __KERNEL__
14
15#include <linux/device.h>
16#include <linux/of.h>
17
18/*
19 * The of_device is a kind of "base class" that is a superset of
20 * struct device for use by devices attached to an OF node and
21 * probed using OF properties.
22 */
23struct of_device {
24 struct device_node *node; /* to be obsoleted */
25 u64 dma_mask; /* DMA mask */
26 struct device dev; /* Generic device interface */
27};
28
29extern ssize_t of_device_get_modalias(struct of_device *ofdev,
30 char *str, ssize_t len);
31
32extern struct of_device *of_device_alloc(struct device_node *np,
33 const char *bus_id,
34 struct device *parent);
35
36extern int of_device_uevent(struct device *dev,
37 struct kobj_uevent_env *env);
38
39extern void of_device_make_bus_id(struct of_device *dev);
40
41/* This is just here during the transition */
42#include <linux/of_device.h>
43
44#endif /* __KERNEL__ */
45#endif /* _ASM_MICROBLAZE_OF_DEVICE_H */
diff --git a/arch/microblaze/include/asm/of_platform.h b/arch/microblaze/include/asm/of_platform.h
new file mode 100644
index 000000000000..187c0eedaece
--- /dev/null
+++ b/arch/microblaze/include/asm/of_platform.h
@@ -0,0 +1,64 @@
1/*
2 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
3 * <benh@kernel.crashing.org>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version
8 * 2 of the License, or (at your option) any later version.
9 */
10
11#ifndef _ASM_MICROBLAZE_OF_PLATFORM_H
12#define _ASM_MICROBLAZE_OF_PLATFORM_H
13
14/* This is just here during the transition */
15#include <linux/of_platform.h>
16
17/*
18 * The list of OF IDs below is used for matching bus types in the
19 * system whose devices are to be exposed as of_platform_devices.
20 *
21 * This is the default list valid for most platforms. This file provides
22 * functions who can take an explicit list if necessary though
23 *
24 * The search is always performed recursively looking for children of
25 * the provided device_node and recursively if such a children matches
26 * a bus type in the list
27 */
28
29static const struct of_device_id of_default_bus_ids[] = {
30 { .type = "soc", },
31 { .compatible = "soc", },
32 { .type = "plb5", },
33 { .type = "plb4", },
34 { .type = "opb", },
35 { .type = "simple", },
36 {},
37};
38
39/* Platform drivers register/unregister */
40static inline int of_register_platform_driver(struct of_platform_driver *drv)
41{
42 return of_register_driver(drv, &of_platform_bus_type);
43}
44static inline void of_unregister_platform_driver(struct of_platform_driver *drv)
45{
46 of_unregister_driver(drv);
47}
48
49/* Platform devices and busses creation */
50extern struct of_device *of_platform_device_create(struct device_node *np,
51 const char *bus_id,
52 struct device *parent);
53/* pseudo "matches" value to not do deep probe */
54#define OF_NO_DEEP_PROBE ((struct of_device_id *)-1)
55
56extern int of_platform_bus_probe(struct device_node *root,
57 const struct of_device_id *matches,
58 struct device *parent);
59
60extern struct of_device *of_find_device_by_phandle(phandle ph);
61
62extern void of_instantiate_rtc(void);
63
64#endif /* _ASM_MICROBLAZE_OF_PLATFORM_H */
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h
new file mode 100644
index 000000000000..7238dcfcc517
--- /dev/null
+++ b/arch/microblaze/include/asm/page.h
@@ -0,0 +1,140 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 * Changes for MMU support:
6 * Copyright (C) 2007 Xilinx, Inc. All rights reserved.
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_PAGE_H
14#define _ASM_MICROBLAZE_PAGE_H
15
16#include <linux/pfn.h>
17#include <asm/setup.h>
18
19/* PAGE_SHIFT determines the page size */
20#define PAGE_SHIFT (12)
21#define PAGE_SIZE (1UL << PAGE_SHIFT)
22#define PAGE_MASK (~(PAGE_SIZE-1))
23
24#ifdef __KERNEL__
25
26#ifndef __ASSEMBLY__
27
28#define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1)))
29#define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1)))
30
31/* align addr on a size boundary - adjust address up/down if needed */
32#define _ALIGN_UP(addr, size) (((addr)+((size)-1))&(~((size)-1)))
33#define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1)))
34
35/* align addr on a size boundary - adjust address up if needed */
36#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
37
38/*
39 * PAGE_OFFSET -- the first address of the first page of memory. When not
40 * using MMU this corresponds to the first free page in physical memory (aligned
41 * on a page boundary).
42 */
43extern unsigned int __page_offset;
44#define PAGE_OFFSET __page_offset
45
46#define copy_page(to, from) memcpy((to), (from), PAGE_SIZE)
47#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
48#define free_user_page(page, addr) free_page(addr)
49
50#define clear_page(pgaddr) memset((pgaddr), 0, PAGE_SIZE)
51
52
53#define clear_user_page(pgaddr, vaddr, page) memset((pgaddr), 0, PAGE_SIZE)
54#define copy_user_page(vto, vfrom, vaddr, topg) \
55 memcpy((vto), (vfrom), PAGE_SIZE)
56
57/*
58 * These are used to make use of C type-checking..
59 */
60typedef struct page *pgtable_t;
61typedef struct { unsigned long pte; } pte_t;
62typedef struct { unsigned long pgprot; } pgprot_t;
63typedef struct { unsigned long ste[64]; } pmd_t;
64typedef struct { pmd_t pue[1]; } pud_t;
65typedef struct { pud_t pge[1]; } pgd_t;
66
67
68#define pte_val(x) ((x).pte)
69#define pgprot_val(x) ((x).pgprot)
70#define pmd_val(x) ((x).ste[0])
71#define pud_val(x) ((x).pue[0])
72#define pgd_val(x) ((x).pge[0])
73
74#define __pte(x) ((pte_t) { (x) })
75#define __pmd(x) ((pmd_t) { (x) })
76#define __pgd(x) ((pgd_t) { (x) })
77#define __pgprot(x) ((pgprot_t) { (x) })
78
79/**
80 * Conversions for virtual address, physical address, pfn, and struct
81 * page are defined in the following files.
82 *
83 * virt -+
84 * | asm-microblaze/page.h
85 * phys -+
86 * | linux/pfn.h
87 * pfn -+
88 * | asm-generic/memory_model.h
89 * page -+
90 *
91 */
92
93extern unsigned long max_low_pfn;
94extern unsigned long min_low_pfn;
95extern unsigned long max_pfn;
96
97#define __pa(vaddr) ((unsigned long) (vaddr))
98#define __va(paddr) ((void *) (paddr))
99
100#define phys_to_pfn(phys) (PFN_DOWN(phys))
101#define pfn_to_phys(pfn) (PFN_PHYS(pfn))
102
103#define virt_to_pfn(vaddr) (phys_to_pfn((__pa(vaddr))))
104#define pfn_to_virt(pfn) __va(pfn_to_phys((pfn)))
105
106#define virt_to_page(vaddr) (pfn_to_page(virt_to_pfn(vaddr)))
107#define page_to_virt(page) (pfn_to_virt(page_to_pfn(page)))
108
109#define page_to_phys(page) (pfn_to_phys(page_to_pfn(page)))
110#define page_to_bus(page) (page_to_phys(page))
111#define phys_to_page(paddr) (pfn_to_page(phys_to_pfn(paddr)))
112
113extern unsigned int memory_start;
114extern unsigned int memory_end;
115extern unsigned int memory_size;
116
117#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_mapnr)
118
119#define ARCH_PFN_OFFSET (PAGE_OFFSET >> PAGE_SHIFT)
120
121#else
122#define tophys(rd, rs) (addik rd, rs, 0)
123#define tovirt(rd, rs) (addik rd, rs, 0)
124#endif /* __ASSEMBLY__ */
125
126#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr)))
127
128/* Convert between virtual and physical address for MMU. */
129/* Handle MicroBlaze processor with virtual memory. */
130#define __virt_to_phys(addr) addr
131#define __phys_to_virt(addr) addr
132
133#define TOPHYS(addr) __virt_to_phys(addr)
134
135#endif /* __KERNEL__ */
136
137#include <asm-generic/memory_model.h>
138#include <asm-generic/page.h>
139
140#endif /* _ASM_MICROBLAZE_PAGE_H */
diff --git a/arch/microblaze/include/asm/param.h b/arch/microblaze/include/asm/param.h
new file mode 100644
index 000000000000..8c538a49616d
--- /dev/null
+++ b/arch/microblaze/include/asm/param.h
@@ -0,0 +1,30 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PARAM_H
10#define _ASM_MICROBLAZE_PARAM_H
11
12#ifdef __KERNEL__
13#define HZ CONFIG_HZ /* internal kernel timer frequency */
14#define USER_HZ 100 /* for user interfaces in "ticks" */
15#define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
16#endif /* __KERNEL__ */
17
18#ifndef HZ
19#define HZ 100
20#endif
21
22#define EXEC_PAGESIZE 4096
23
24#ifndef NOGROUP
25#define NOGROUP (-1)
26#endif
27
28#define MAXHOSTNAMELEN 64 /* max length of hostname */
29
30#endif /* _ASM_MICROBLAZE_PARAM_H */
diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
new file mode 100644
index 000000000000..7ad28f6f5f1a
--- /dev/null
+++ b/arch/microblaze/include/asm/pci-bridge.h
@@ -0,0 +1 @@
#include <linux/pci.h>
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
new file mode 100644
index 000000000000..ca03794cf3f0
--- /dev/null
+++ b/arch/microblaze/include/asm/pci.h
@@ -0,0 +1 @@
#include <linux/io.h>
diff --git a/include/asm-mn10300/percpu.h b/arch/microblaze/include/asm/percpu.h
index 06a959d67234..06a959d67234 100644
--- a/include/asm-mn10300/percpu.h
+++ b/arch/microblaze/include/asm/percpu.h
diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h
new file mode 100644
index 000000000000..2a4b35484010
--- /dev/null
+++ b/arch/microblaze/include/asm/pgalloc.h
@@ -0,0 +1,14 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PGALLOC_H
10#define _ASM_MICROBLAZE_PGALLOC_H
11
12#define check_pgt_cache() do {} while (0)
13
14#endif /* _ASM_MICROBLAZE_PGALLOC_H */
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
new file mode 100644
index 000000000000..4df31e46568e
--- /dev/null
+++ b/arch/microblaze/include/asm/pgtable.h
@@ -0,0 +1,54 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PGTABLE_H
10#define _ASM_MICROBLAZE_PGTABLE_H
11
12#include <asm/setup.h>
13
14#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
15 remap_pfn_range(vma, vaddr, pfn, size, prot)
16
17#define pgd_present(pgd) (1) /* pages are always present on non MMU */
18#define pgd_none(pgd) (0)
19#define pgd_bad(pgd) (0)
20#define pgd_clear(pgdp)
21#define kern_addr_valid(addr) (1)
22#define pmd_offset(a, b) ((void *) 0)
23
24#define PAGE_NONE __pgprot(0) /* these mean nothing to non MMU */
25#define PAGE_SHARED __pgprot(0) /* these mean nothing to non MMU */
26#define PAGE_COPY __pgprot(0) /* these mean nothing to non MMU */
27#define PAGE_READONLY __pgprot(0) /* these mean nothing to non MMU */
28#define PAGE_KERNEL __pgprot(0) /* these mean nothing to non MMU */
29
30#define __swp_type(x) (0)
31#define __swp_offset(x) (0)
32#define __swp_entry(typ, off) ((swp_entry_t) { ((typ) | ((off) << 7)) })
33#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
34#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
35
36#ifndef __ASSEMBLY__
37static inline int pte_file(pte_t pte) { return 0; }
38#endif /* __ASSEMBLY__ */
39
40#define ZERO_PAGE(vaddr) ({ BUG(); NULL; })
41
42#define swapper_pg_dir ((pgd_t *) NULL)
43
44#define pgtable_cache_init() do {} while (0)
45
46#define arch_enter_lazy_cpu_mode() do {} while (0)
47
48#ifndef __ASSEMBLY__
49#include <asm-generic/pgtable.h>
50
51void setup_memory(void);
52#endif /* __ASSEMBLY__ */
53
54#endif /* _ASM_MICROBLAZE_PGTABLE_H */
diff --git a/include/asm-mn10300/poll.h b/arch/microblaze/include/asm/poll.h
index c98509d3149e..c98509d3149e 100644
--- a/include/asm-mn10300/poll.h
+++ b/arch/microblaze/include/asm/poll.h
diff --git a/arch/microblaze/include/asm/posix_types.h b/arch/microblaze/include/asm/posix_types.h
new file mode 100644
index 000000000000..b4df41c5dde2
--- /dev/null
+++ b/arch/microblaze/include/asm/posix_types.h
@@ -0,0 +1,73 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_POSIX_TYPES_H
10#define _ASM_MICROBLAZE_POSIX_TYPES_H
11
12/*
13 * This file is generally used by user-level software, so you need to
14 * be a little careful about namespace pollution etc. Also, we cannot
15 * assume GCC is being used.
16 */
17
18typedef unsigned long __kernel_ino_t;
19typedef unsigned int __kernel_mode_t;
20typedef unsigned int __kernel_nlink_t;
21typedef long __kernel_off_t;
22typedef int __kernel_pid_t;
23typedef unsigned int __kernel_ipc_pid_t;
24typedef unsigned int __kernel_uid_t;
25typedef unsigned int __kernel_gid_t;
26typedef unsigned long __kernel_size_t;
27typedef long __kernel_ssize_t;
28typedef int __kernel_ptrdiff_t;
29typedef long __kernel_time_t;
30typedef long __kernel_suseconds_t;
31typedef long __kernel_clock_t;
32typedef int __kernel_timer_t;
33typedef int __kernel_clockid_t;
34typedef int __kernel_daddr_t;
35typedef char *__kernel_caddr_t;
36typedef unsigned short __kernel_uid16_t;
37typedef unsigned short __kernel_gid16_t;
38typedef unsigned int __kernel_uid32_t;
39typedef unsigned int __kernel_gid32_t;
40
41typedef unsigned int __kernel_old_uid_t;
42typedef unsigned int __kernel_old_gid_t;
43typedef unsigned int __kernel_old_dev_t;
44
45#ifdef __GNUC__
46typedef long long __kernel_loff_t;
47#endif
48
49typedef struct {
50#if defined(__KERNEL__) || defined(__USE_ALL)
51 int val[2];
52#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
53 int __val[2];
54#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
55} __kernel_fsid_t;
56
57#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
58
59#undef __FD_SET
60#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
61
62#undef __FD_CLR
63#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
64
65#undef __FD_ISSET
66#define __FD_ISSET(d, set) (!!((set)->fds_bits[__FDELT(d)] & __FDMASK(d)))
67
68#undef __FD_ZERO
69#define __FD_ZERO(fdsetp) (memset(fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
70
71#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
72
73#endif /* _ASM_MICROBLAZE_POSIX_TYPES_H */
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
new file mode 100644
index 000000000000..d8e15434ba21
--- /dev/null
+++ b/arch/microblaze/include/asm/processor.h
@@ -0,0 +1,93 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_PROCESSOR_H
12#define _ASM_MICROBLAZE_PROCESSOR_H
13
14#include <asm/ptrace.h>
15#include <asm/setup.h>
16#include <asm/registers.h>
17#include <asm/segment.h>
18
19# ifndef __ASSEMBLY__
20/* from kernel/cpu/mb.c */
21extern const struct seq_operations cpuinfo_op;
22
23# define cpu_relax() barrier()
24# define cpu_sleep() do {} while (0)
25# define prepare_to_copy(tsk) do {} while (0)
26
27# endif /* __ASSEMBLY__ */
28
29/*
30 * User space process size: memory size
31 *
32 * TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
33 * user processes and the kernel is on the same memory region. They
34 * both share the memory space and that is limited by the amount of
35 * physical memory. thus, we set TASK_SIZE == amount of total memory.
36 */
37# define TASK_SIZE (0x81000000 - 0x80000000)
38
39/*
40 * Default implementation of macro that returns current
41 * instruction pointer ("program counter").
42 */
43# define current_text_addr() ({ __label__ _l; _l: &&_l; })
44
45/*
46 * This decides where the kernel will search for a free chunk of vm
47 * space during mmap's. We won't be using it
48 */
49# define TASK_UNMAPPED_BASE 0
50
51/* definition in include/linux/sched.h */
52struct task_struct;
53
54/* thread_struct is gone. use thread_info instead. */
55struct thread_struct { };
56# define INIT_THREAD { }
57
58/* Do necessary setup to start up a newly executed thread. */
59static inline void start_thread(struct pt_regs *regs,
60 unsigned long pc,
61 unsigned long usp)
62{
63 regs->pc = pc;
64 regs->r1 = usp;
65 regs->kernel_mode = 0;
66}
67
68/* Free all resources held by a thread. */
69static inline void release_thread(struct task_struct *dead_task)
70{
71}
72
73/* Free all resources held by a thread. */
74static inline void exit_thread(void)
75{
76}
77
78extern unsigned long thread_saved_pc(struct task_struct *t);
79
80extern unsigned long get_wchan(struct task_struct *p);
81
82/*
83 * create a kernel thread without removing it from tasklists
84 */
85extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
86
87# define task_pt_regs(tsk) \
88 (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
89
90# define KSTK_EIP(tsk) (0)
91# define KSTK_ESP(tsk) (0)
92
93#endif /* _ASM_MICROBLAZE_PROCESSOR_H */
diff --git a/arch/microblaze/include/asm/prom.h b/arch/microblaze/include/asm/prom.h
new file mode 100644
index 000000000000..20f7b3a926e8
--- /dev/null
+++ b/arch/microblaze/include/asm/prom.h
@@ -0,0 +1,313 @@
1/*
2 * Definitions for talking to the Open Firmware PROM on
3 * Power Macintosh computers.
4 *
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 */
14
15#ifndef _ASM_MICROBLAZE_PROM_H
16#define _ASM_MICROBLAZE_PROM_H
17#ifdef __KERNEL__
18
19#include <linux/types.h>
20#include <linux/proc_fs.h>
21#include <linux/platform_device.h>
22#include <asm/irq.h>
23#include <asm/atomic.h>
24
25#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
26#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
27
28#define of_compat_cmp(s1, s2, l) strncasecmp((s1), (s2), (l))
29#define of_prop_cmp(s1, s2) strcmp((s1), (s2))
30#define of_node_cmp(s1, s2) strcasecmp((s1), (s2))
31
32/* Definitions used by the flattened device tree */
33#define OF_DT_HEADER 0xd00dfeed /* marker */
34#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
35#define OF_DT_END_NODE 0x2 /* End node */
36#define OF_DT_PROP 0x3 /* Property: name off, size, content */
37#define OF_DT_NOP 0x4 /* nop */
38#define OF_DT_END 0x9
39
40#define OF_DT_VERSION 0x10
41
42/*
43 * This is what gets passed to the kernel by prom_init or kexec
44 *
45 * The dt struct contains the device tree structure, full pathes and
46 * property contents. The dt strings contain a separate block with just
47 * the strings for the property names, and is fully page aligned and
48 * self contained in a page, so that it can be kept around by the kernel,
49 * each property name appears only once in this page (cheap compression)
50 *
51 * the mem_rsvmap contains a map of reserved ranges of physical memory,
52 * passing it here instead of in the device-tree itself greatly simplifies
53 * the job of everybody. It's just a list of u64 pairs (base/size) that
54 * ends when size is 0
55 */
56struct boot_param_header {
57 u32 magic; /* magic word OF_DT_HEADER */
58 u32 totalsize; /* total size of DT block */
59 u32 off_dt_struct; /* offset to structure */
60 u32 off_dt_strings; /* offset to strings */
61 u32 off_mem_rsvmap; /* offset to memory reserve map */
62 u32 version; /* format version */
63 u32 last_comp_version; /* last compatible version */
64 /* version 2 fields below */
65 u32 boot_cpuid_phys; /* Physical CPU id we're booting on */
66 /* version 3 fields below */
67 u32 dt_strings_size; /* size of the DT strings block */
68 /* version 17 fields below */
69 u32 dt_struct_size; /* size of the DT structure block */
70};
71
72typedef u32 phandle;
73typedef u32 ihandle;
74
75struct property {
76 char *name;
77 int length;
78 void *value;
79 struct property *next;
80};
81
82struct device_node {
83 const char *name;
84 const char *type;
85 phandle node;
86 phandle linux_phandle;
87 char *full_name;
88
89 struct property *properties;
90 struct property *deadprops; /* removed properties */
91 struct device_node *parent;
92 struct device_node *child;
93 struct device_node *sibling;
94 struct device_node *next; /* next device of same type */
95 struct device_node *allnext; /* next in list of all nodes */
96 struct proc_dir_entry *pde; /* this node's proc directory */
97 struct kref kref;
98 unsigned long _flags;
99 void *data;
100};
101
102extern struct device_node *of_chosen;
103
104static inline int of_node_check_flag(struct device_node *n, unsigned long flag)
105{
106 return test_bit(flag, &n->_flags);
107}
108
109static inline void of_node_set_flag(struct device_node *n, unsigned long flag)
110{
111 set_bit(flag, &n->_flags);
112}
113
114#define HAVE_ARCH_DEVTREE_FIXUPS
115
116static inline void set_node_proc_entry(struct device_node *dn,
117 struct proc_dir_entry *de)
118{
119 dn->pde = de;
120}
121
122extern struct device_node *allnodes; /* temporary while merging */
123extern rwlock_t devtree_lock; /* temporary while merging */
124
125extern struct device_node *of_find_all_nodes(struct device_node *prev);
126extern struct device_node *of_node_get(struct device_node *node);
127extern void of_node_put(struct device_node *node);
128
129/* For scanning the flat device-tree at boot time */
130extern int __init of_scan_flat_dt(int (*it)(unsigned long node,
131 const char *uname, int depth,
132 void *data),
133 void *data);
134extern void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
135 unsigned long *size);
136extern int __init
137 of_flat_dt_is_compatible(unsigned long node, const char *name);
138extern unsigned long __init of_get_flat_dt_root(void);
139
140/* For updating the device tree at runtime */
141extern void of_attach_node(struct device_node *);
142extern void of_detach_node(struct device_node *);
143
144/* Other Prototypes */
145extern void finish_device_tree(void);
146extern void unflatten_device_tree(void);
147extern int early_uartlite_console(void);
148extern void early_init_devtree(void *);
149extern int machine_is_compatible(const char *compat);
150extern void print_properties(struct device_node *node);
151extern int prom_n_intr_cells(struct device_node *np);
152extern void prom_get_irq_senses(unsigned char *senses, int off, int max);
153extern int prom_add_property(struct device_node *np, struct property *prop);
154extern int prom_remove_property(struct device_node *np, struct property *prop);
155extern int prom_update_property(struct device_node *np,
156 struct property *newprop,
157 struct property *oldprop);
158
159extern struct resource *request_OF_resource(struct device_node *node,
160 int index, const char *name_postfix);
161extern int release_OF_resource(struct device_node *node, int index);
162
163/*
164 * OF address retreival & translation
165 */
166
167/* Helper to read a big number; size is in cells (not bytes) */
168static inline u64 of_read_number(const u32 *cell, int size)
169{
170 u64 r = 0;
171 while (size--)
172 r = (r << 32) | *(cell++);
173 return r;
174}
175
176/* Like of_read_number, but we want an unsigned long result */
177#define of_read_ulong(cell, size) of_read_number(cell, size)
178
179/* Translate an OF address block into a CPU physical address
180 */
181extern u64 of_translate_address(struct device_node *np, const u32 *addr);
182
183/* Extract an address from a device, returns the region size and
184 * the address space flags too. The PCI version uses a BAR number
185 * instead of an absolute index
186 */
187extern const u32 *of_get_address(struct device_node *dev, int index,
188 u64 *size, unsigned int *flags);
189extern const u32 *of_get_pci_address(struct device_node *dev, int bar_no,
190 u64 *size, unsigned int *flags);
191
192/* Get an address as a resource. Note that if your address is
193 * a PIO address, the conversion will fail if the physical address
194 * can't be internally converted to an IO token with
195 * pci_address_to_pio(), that is because it's either called to early
196 * or it can't be matched to any host bridge IO space
197 */
198extern int of_address_to_resource(struct device_node *dev, int index,
199 struct resource *r);
200extern int of_pci_address_to_resource(struct device_node *dev, int bar,
201 struct resource *r);
202
203/* Parse the ibm,dma-window property of an OF node into the busno, phys and
204 * size parameters.
205 */
206void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
207 unsigned long *busno, unsigned long *phys, unsigned long *size);
208
209extern void kdump_move_device_tree(void);
210
211/* CPU OF node matching */
212struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
213
214/* Get the MAC address */
215extern const void *of_get_mac_address(struct device_node *np);
216
217/*
218 * OF interrupt mapping
219 */
220
221/* This structure is returned when an interrupt is mapped. The controller
222 * field needs to be put() after use
223 */
224
225#define OF_MAX_IRQ_SPEC 4 /* We handle specifiers of at most 4 cells */
226
227struct of_irq {
228 struct device_node *controller; /* Interrupt controller node */
229 u32 size; /* Specifier size */
230 u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
231};
232
233/**
234 * of_irq_map_init - Initialize the irq remapper
235 * @flags: flags defining workarounds to enable
236 *
237 * Some machines have bugs in the device-tree which require certain workarounds
238 * to be applied. Call this before any interrupt mapping attempts to enable
239 * those workarounds.
240 */
241#define OF_IMAP_OLDWORLD_MAC 0x00000001
242#define OF_IMAP_NO_PHANDLE 0x00000002
243
244extern void of_irq_map_init(unsigned int flags);
245
246/**
247 * of_irq_map_raw - Low level interrupt tree parsing
248 * @parent: the device interrupt parent
249 * @intspec: interrupt specifier ("interrupts" property of the device)
250 * @ointsize: size of the passed in interrupt specifier
251 * @addr: address specifier (start of "reg" property of the device)
252 * @out_irq: structure of_irq filled by this function
253 *
254 * Returns 0 on success and a negative number on error
255 *
256 * This function is a low-level interrupt tree walking function. It
257 * can be used to do a partial walk with synthetized reg and interrupts
258 * properties, for example when resolving PCI interrupts when no device
259 * node exist for the parent.
260 *
261 */
262
263extern int of_irq_map_raw(struct device_node *parent, const u32 *intspec,
264 u32 ointsize, const u32 *addr,
265 struct of_irq *out_irq);
266
267/**
268 * of_irq_map_one - Resolve an interrupt for a device
269 * @device: the device whose interrupt is to be resolved
270 * @index: index of the interrupt to resolve
271 * @out_irq: structure of_irq filled by this function
272 *
273 * This function resolves an interrupt, walking the tree, for a given
274 * device-tree node. It's the high level pendant to of_irq_map_raw().
275 * It also implements the workarounds for OldWolrd Macs.
276 */
277extern int of_irq_map_one(struct device_node *device, int index,
278 struct of_irq *out_irq);
279
280/**
281 * of_irq_map_pci - Resolve the interrupt for a PCI device
282 * @pdev: the device whose interrupt is to be resolved
283 * @out_irq: structure of_irq filled by this function
284 *
285 * This function resolves the PCI interrupt for a given PCI device. If a
286 * device-node exists for a given pci_dev, it will use normal OF tree
287 * walking. If not, it will implement standard swizzling and walk up the
288 * PCI tree until an device-node is found, at which point it will finish
289 * resolving using the OF tree walking.
290 */
291struct pci_dev;
292extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
293
294extern int of_irq_to_resource(struct device_node *dev, int index,
295 struct resource *r);
296
297/**
298 * of_iomap - Maps the memory mapped IO for a given device_node
299 * @device: the device whose io range will be mapped
300 * @index: index of the io range
301 *
302 * Returns a pointer to the mapped memory
303 */
304extern void __iomem *of_iomap(struct device_node *device, int index);
305
306/*
307 * NB: This is here while we transition from using asm/prom.h
308 * to linux/of.h
309 */
310#include <linux/of.h>
311
312#endif /* __KERNEL__ */
313#endif /* _ASM_MICROBLAZE_PROM_H */
diff --git a/arch/microblaze/include/asm/ptrace.h b/arch/microblaze/include/asm/ptrace.h
new file mode 100644
index 000000000000..f1f03486428a
--- /dev/null
+++ b/arch/microblaze/include/asm/ptrace.h
@@ -0,0 +1,68 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_PTRACE_H
10#define _ASM_MICROBLAZE_PTRACE_H
11
12#ifndef __ASSEMBLY__
13#include <linux/types.h>
14
15typedef unsigned long microblaze_reg_t;
16
17struct pt_regs {
18 microblaze_reg_t r0;
19 microblaze_reg_t r1;
20 microblaze_reg_t r2;
21 microblaze_reg_t r3;
22 microblaze_reg_t r4;
23 microblaze_reg_t r5;
24 microblaze_reg_t r6;
25 microblaze_reg_t r7;
26 microblaze_reg_t r8;
27 microblaze_reg_t r9;
28 microblaze_reg_t r10;
29 microblaze_reg_t r11;
30 microblaze_reg_t r12;
31 microblaze_reg_t r13;
32 microblaze_reg_t r14;
33 microblaze_reg_t r15;
34 microblaze_reg_t r16;
35 microblaze_reg_t r17;
36 microblaze_reg_t r18;
37 microblaze_reg_t r19;
38 microblaze_reg_t r20;
39 microblaze_reg_t r21;
40 microblaze_reg_t r22;
41 microblaze_reg_t r23;
42 microblaze_reg_t r24;
43 microblaze_reg_t r25;
44 microblaze_reg_t r26;
45 microblaze_reg_t r27;
46 microblaze_reg_t r28;
47 microblaze_reg_t r29;
48 microblaze_reg_t r30;
49 microblaze_reg_t r31;
50 microblaze_reg_t pc;
51 microblaze_reg_t msr;
52 microblaze_reg_t ear;
53 microblaze_reg_t esr;
54 microblaze_reg_t fsr;
55 int kernel_mode;
56};
57
58#define kernel_mode(regs) ((regs)->kernel_mode)
59#define user_mode(regs) (!kernel_mode(regs))
60
61#define instruction_pointer(regs) ((regs)->pc)
62#define profile_pc(regs) instruction_pointer(regs)
63
64void show_regs(struct pt_regs *);
65
66#endif /* __ASSEMBLY__ */
67
68#endif /* _ASM_MICROBLAZE_PTRACE_H */
diff --git a/arch/microblaze/include/asm/pvr.h b/arch/microblaze/include/asm/pvr.h
new file mode 100644
index 000000000000..66f1b30dd097
--- /dev/null
+++ b/arch/microblaze/include/asm/pvr.h
@@ -0,0 +1,209 @@
1/*
2 * Support for the MicroBlaze PVR (Processor Version Register)
3 *
4 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
6 * Copyright (C) 2007 - 2009 PetaLogix
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#ifndef _ASM_MICROBLAZE_PVR_H
14#define _ASM_MICROBLAZE_PVR_H
15
16#define PVR_MSR_BIT 0x400
17
18struct pvr_s {
19 unsigned pvr[16];
20};
21
22/* The following taken from Xilinx's standalone BSP pvr.h */
23
24/* Basic PVR mask */
25#define PVR0_PVR_FULL_MASK 0x80000000
26#define PVR0_USE_BARREL_MASK 0x40000000
27#define PVR0_USE_DIV_MASK 0x20000000
28#define PVR0_USE_HW_MUL_MASK 0x10000000
29#define PVR0_USE_FPU_MASK 0x08000000
30#define PVR0_USE_EXC_MASK 0x04000000
31#define PVR0_USE_ICACHE_MASK 0x02000000
32#define PVR0_USE_DCACHE_MASK 0x01000000
33#define PVR0_USE_MMU 0x00800000 /* new */
34#define PVR0_VERSION_MASK 0x0000FF00
35#define PVR0_USER1_MASK 0x000000FF
36
37/* User 2 PVR mask */
38#define PVR1_USER2_MASK 0xFFFFFFFF
39
40/* Configuration PVR masks */
41#define PVR2_D_OPB_MASK 0x80000000
42#define PVR2_D_LMB_MASK 0x40000000
43#define PVR2_I_OPB_MASK 0x20000000
44#define PVR2_I_LMB_MASK 0x10000000
45#define PVR2_INTERRUPT_IS_EDGE_MASK 0x08000000
46#define PVR2_EDGE_IS_POSITIVE_MASK 0x04000000
47#define PVR2_D_PLB_MASK 0x02000000 /* new */
48#define PVR2_I_PLB_MASK 0x01000000 /* new */
49#define PVR2_INTERCONNECT 0x00800000 /* new */
50#define PVR2_USE_EXTEND_FSL 0x00080000 /* new */
51#define PVR2_USE_FSL_EXC 0x00040000 /* new */
52#define PVR2_USE_MSR_INSTR 0x00020000
53#define PVR2_USE_PCMP_INSTR 0x00010000
54#define PVR2_AREA_OPTIMISED 0x00008000
55#define PVR2_USE_BARREL_MASK 0x00004000
56#define PVR2_USE_DIV_MASK 0x00002000
57#define PVR2_USE_HW_MUL_MASK 0x00001000
58#define PVR2_USE_FPU_MASK 0x00000800
59#define PVR2_USE_MUL64_MASK 0x00000400
60#define PVR2_USE_FPU2_MASK 0x00000200 /* new */
61#define PVR2_USE_IPLBEXC 0x00000100
62#define PVR2_USE_DPLBEXC 0x00000080
63#define PVR2_OPCODE_0x0_ILL_MASK 0x00000040
64#define PVR2_UNALIGNED_EXC_MASK 0x00000020
65#define PVR2_ILL_OPCODE_EXC_MASK 0x00000010
66#define PVR2_IOPB_BUS_EXC_MASK 0x00000008
67#define PVR2_DOPB_BUS_EXC_MASK 0x00000004
68#define PVR2_DIV_ZERO_EXC_MASK 0x00000002
69#define PVR2_FPU_EXC_MASK 0x00000001
70
71/* Debug and exception PVR masks */
72#define PVR3_DEBUG_ENABLED_MASK 0x80000000
73#define PVR3_NUMBER_OF_PC_BRK_MASK 0x1E000000
74#define PVR3_NUMBER_OF_RD_ADDR_BRK_MASK 0x00380000
75#define PVR3_NUMBER_OF_WR_ADDR_BRK_MASK 0x0000E000
76#define PVR3_FSL_LINKS_MASK 0x00000380
77
78/* ICache config PVR masks */
79#define PVR4_USE_ICACHE_MASK 0x80000000
80#define PVR4_ICACHE_ADDR_TAG_BITS_MASK 0x7C000000
81#define PVR4_ICACHE_USE_FSL_MASK 0x02000000
82#define PVR4_ICACHE_ALLOW_WR_MASK 0x01000000
83#define PVR4_ICACHE_LINE_LEN_MASK 0x00E00000
84#define PVR4_ICACHE_BYTE_SIZE_MASK 0x001F0000
85
86/* DCache config PVR masks */
87#define PVR5_USE_DCACHE_MASK 0x80000000
88#define PVR5_DCACHE_ADDR_TAG_BITS_MASK 0x7C000000
89#define PVR5_DCACHE_USE_FSL_MASK 0x02000000
90#define PVR5_DCACHE_ALLOW_WR_MASK 0x01000000
91#define PVR5_DCACHE_LINE_LEN_MASK 0x00E00000
92#define PVR5_DCACHE_BYTE_SIZE_MASK 0x001F0000
93
94/* ICache base address PVR mask */
95#define PVR6_ICACHE_BASEADDR_MASK 0xFFFFFFFF
96
97/* ICache high address PVR mask */
98#define PVR7_ICACHE_HIGHADDR_MASK 0xFFFFFFFF
99
100/* DCache base address PVR mask */
101#define PVR8_DCACHE_BASEADDR_MASK 0xFFFFFFFF
102
103/* DCache high address PVR mask */
104#define PVR9_DCACHE_HIGHADDR_MASK 0xFFFFFFFF
105
106/* Target family PVR mask */
107#define PVR10_TARGET_FAMILY_MASK 0xFF000000
108
109/* MMU descrtiption */
110#define PVR11_USE_MMU 0xC0000000
111#define PVR11_MMU_ITLB_SIZE 0x38000000
112#define PVR11_MMU_DTLB_SIZE 0x07000000
113#define PVR11_MMU_TLB_ACCESS 0x00C00000
114#define PVR11_MMU_ZONES 0x003C0000
115/* MSR Reset value PVR mask */
116#define PVR11_MSR_RESET_VALUE_MASK 0x000007FF
117
118
119/* PVR access macros */
120#define PVR_IS_FULL(pvr) (pvr.pvr[0] & PVR0_PVR_FULL_MASK)
121#define PVR_USE_BARREL(pvr) (pvr.pvr[0] & PVR0_USE_BARREL_MASK)
122#define PVR_USE_DIV(pvr) (pvr.pvr[0] & PVR0_USE_DIV_MASK)
123#define PVR_USE_HW_MUL(pvr) (pvr.pvr[0] & PVR0_USE_HW_MUL_MASK)
124#define PVR_USE_FPU(pvr) (pvr.pvr[0] & PVR0_USE_FPU_MASK)
125#define PVR_USE_FPU2(pvr) (pvr.pvr[2] & PVR2_USE_FPU2_MASK)
126#define PVR_USE_ICACHE(pvr) (pvr.pvr[0] & PVR0_USE_ICACHE_MASK)
127#define PVR_USE_DCACHE(pvr) (pvr.pvr[0] & PVR0_USE_DCACHE_MASK)
128#define PVR_VERSION(pvr) ((pvr.pvr[0] & PVR0_VERSION_MASK) >> 8)
129#define PVR_USER1(pvr) (pvr.pvr[0] & PVR0_USER1_MASK)
130#define PVR_USER2(pvr) (pvr.pvr[1] & PVR1_USER2_MASK)
131
132#define PVR_D_OPB(pvr) (pvr.pvr[2] & PVR2_D_OPB_MASK)
133#define PVR_D_LMB(pvr) (pvr.pvr[2] & PVR2_D_LMB_MASK)
134#define PVR_I_OPB(pvr) (pvr.pvr[2] & PVR2_I_OPB_MASK)
135#define PVR_I_LMB(pvr) (pvr.pvr[2] & PVR2_I_LMB_MASK)
136#define PVR_INTERRUPT_IS_EDGE(pvr) \
137 (pvr.pvr[2] & PVR2_INTERRUPT_IS_EDGE_MASK)
138#define PVR_EDGE_IS_POSITIVE(pvr) \
139 (pvr.pvr[2] & PVR2_EDGE_IS_POSITIVE_MASK)
140#define PVR_USE_MSR_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_MSR_INSTR)
141#define PVR_USE_PCMP_INSTR(pvr) (pvr.pvr[2] & PVR2_USE_PCMP_INSTR)
142#define PVR_AREA_OPTIMISED(pvr) (pvr.pvr[2] & PVR2_AREA_OPTIMISED)
143#define PVR_USE_MUL64(pvr) (pvr.pvr[2] & PVR2_USE_MUL64_MASK)
144#define PVR_OPCODE_0x0_ILLEGAL(pvr) \
145 (pvr.pvr[2] & PVR2_OPCODE_0x0_ILL_MASK)
146#define PVR_UNALIGNED_EXCEPTION(pvr) \
147 (pvr.pvr[2] & PVR2_UNALIGNED_EXC_MASK)
148#define PVR_ILL_OPCODE_EXCEPTION(pvr) \
149 (pvr.pvr[2] & PVR2_ILL_OPCODE_EXC_MASK)
150#define PVR_IOPB_BUS_EXCEPTION(pvr) \
151 (pvr.pvr[2] & PVR2_IOPB_BUS_EXC_MASK)
152#define PVR_DOPB_BUS_EXCEPTION(pvr) \
153 (pvr.pvr[2] & PVR2_DOPB_BUS_EXC_MASK)
154#define PVR_DIV_ZERO_EXCEPTION(pvr) \
155 (pvr.pvr[2] & PVR2_DIV_ZERO_EXC_MASK)
156#define PVR_FPU_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_FPU_EXC_MASK)
157#define PVR_FSL_EXCEPTION(pvr) (pvr.pvr[2] & PVR2_USE_EXTEND_FSL)
158
159#define PVR_DEBUG_ENABLED(pvr) (pvr.pvr[3] & PVR3_DEBUG_ENABLED_MASK)
160#define PVR_NUMBER_OF_PC_BRK(pvr) \
161 ((pvr.pvr[3] & PVR3_NUMBER_OF_PC_BRK_MASK) >> 25)
162#define PVR_NUMBER_OF_RD_ADDR_BRK(pvr) \
163 ((pvr.pvr[3] & PVR3_NUMBER_OF_RD_ADDR_BRK_MASK) >> 19)
164#define PVR_NUMBER_OF_WR_ADDR_BRK(pvr) \
165 ((pvr.pvr[3] & PVR3_NUMBER_OF_WR_ADDR_BRK_MASK) >> 13)
166#define PVR_FSL_LINKS(pvr) ((pvr.pvr[3] & PVR3_FSL_LINKS_MASK) >> 7)
167
168#define PVR_ICACHE_ADDR_TAG_BITS(pvr) \
169 ((pvr.pvr[4] & PVR4_ICACHE_ADDR_TAG_BITS_MASK) >> 26)
170#define PVR_ICACHE_USE_FSL(pvr) (pvr.pvr[4] & PVR4_ICACHE_USE_FSL_MASK)
171#define PVR_ICACHE_ALLOW_WR(pvr) (pvr.pvr[4] & PVR4_ICACHE_ALLOW_WR_MASK)
172#define PVR_ICACHE_LINE_LEN(pvr) \
173 (1 << ((pvr.pvr[4] & PVR4_ICACHE_LINE_LEN_MASK) >> 21))
174#define PVR_ICACHE_BYTE_SIZE(pvr) \
175 (1 << ((pvr.pvr[4] & PVR4_ICACHE_BYTE_SIZE_MASK) >> 16))
176
177#define PVR_DCACHE_ADDR_TAG_BITS(pvr) \
178 ((pvr.pvr[5] & PVR5_DCACHE_ADDR_TAG_BITS_MASK) >> 26)
179#define PVR_DCACHE_USE_FSL(pvr) (pvr.pvr[5] & PVR5_DCACHE_USE_FSL_MASK)
180#define PVR_DCACHE_ALLOW_WR(pvr) (pvr.pvr[5] & PVR5_DCACHE_ALLOW_WR_MASK)
181#define PVR_DCACHE_LINE_LEN(pvr) \
182 (1 << ((pvr.pvr[5] & PVR5_DCACHE_LINE_LEN_MASK) >> 21))
183#define PVR_DCACHE_BYTE_SIZE(pvr) \
184 (1 << ((pvr.pvr[5] & PVR5_DCACHE_BYTE_SIZE_MASK) >> 16))
185
186
187#define PVR_ICACHE_BASEADDR(pvr) (pvr.pvr[6] & PVR6_ICACHE_BASEADDR_MASK)
188#define PVR_ICACHE_HIGHADDR(pvr) (pvr.pvr[7] & PVR7_ICACHE_HIGHADDR_MASK)
189
190#define PVR_DCACHE_BASEADDR(pvr) (pvr.pvr[8] & PVR8_DCACHE_BASEADDR_MASK)
191#define PVR_DCACHE_HIGHADDR(pvr) (pvr.pvr[9] & PVR9_DCACHE_HIGHADDR_MASK)
192
193#define PVR_TARGET_FAMILY(pvr) ((pvr.pvr[10] & PVR10_TARGET_FAMILY_MASK) >> 24)
194
195#define PVR_MSR_RESET_VALUE(pvr) \
196 (pvr.pvr[11] & PVR11_MSR_RESET_VALUE_MASK)
197
198/* mmu */
199#define PVR_USE_MMU(pvr) ((pvr.pvr[11] & PVR11_USE_MMU) >> 30)
200#define PVR_MMU_ITLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_ITLB_SIZE)
201#define PVR_MMU_DTLB_SIZE(pvr) (pvr.pvr[11] & PVR11_MMU_DTLB_SIZE)
202#define PVR_MMU_TLB_ACCESS(pvr) (pvr.pvr[11] & PVR11_MMU_TLB_ACCESS)
203#define PVR_MMU_ZONES(pvr) (pvr.pvr[11] & PVR11_MMU_ZONES)
204
205
206int cpu_has_pvr(void);
207void get_pvr(struct pvr_s *pvr);
208
209#endif /* _ASM_MICROBLAZE_PVR_H */
diff --git a/arch/microblaze/include/asm/registers.h b/arch/microblaze/include/asm/registers.h
new file mode 100644
index 000000000000..834142d9356f
--- /dev/null
+++ b/arch/microblaze/include/asm/registers.h
@@ -0,0 +1,33 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_REGISTERS_H
12#define _ASM_MICROBLAZE_REGISTERS_H
13
14#define MSR_BE (1<<0) /* 0x001 */
15#define MSR_IE (1<<1) /* 0x002 */
16#define MSR_C (1<<2) /* 0x004 */
17#define MSR_BIP (1<<3) /* 0x008 */
18#define MSR_FSL (1<<4) /* 0x010 */
19#define MSR_ICE (1<<5) /* 0x020 */
20#define MSR_DZ (1<<6) /* 0x040 */
21#define MSR_DCE (1<<7) /* 0x080 */
22#define MSR_EE (1<<8) /* 0x100 */
23#define MSR_EIP (1<<9) /* 0x200 */
24#define MSR_CC (1<<31)
25
26/* Floating Point Status Register (FSR) Bits */
27#define FSR_IO (1<<4) /* Invalid operation */
28#define FSR_DZ (1<<3) /* Divide-by-zero */
29#define FSR_OF (1<<2) /* Overflow */
30#define FSR_UF (1<<1) /* Underflow */
31#define FSR_DO (1<<0) /* Denormalized operand error */
32
33#endif /* _ASM_MICROBLAZE_REGISTERS_H */
diff --git a/include/asm-mn10300/resource.h b/arch/microblaze/include/asm/resource.h
index 04bc4db8921b..04bc4db8921b 100644
--- a/include/asm-mn10300/resource.h
+++ b/arch/microblaze/include/asm/resource.h
diff --git a/arch/microblaze/include/asm/scatterlist.h b/arch/microblaze/include/asm/scatterlist.h
new file mode 100644
index 000000000000..08ff1d049b42
--- /dev/null
+++ b/arch/microblaze/include/asm/scatterlist.h
@@ -0,0 +1,28 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_SCATTERLIST_H
11#define _ASM_MICROBLAZE_SCATTERLIST_H
12
13struct scatterlist {
14#ifdef CONFIG_DEBUG_SG
15 unsigned long sg_magic;
16#endif
17 unsigned long page_link;
18 dma_addr_t dma_address;
19 unsigned int offset;
20 unsigned int length;
21};
22
23#define sg_dma_address(sg) ((sg)->dma_address)
24#define sg_dma_len(sg) ((sg)->length)
25
26#define ISA_DMA_THRESHOLD (~0UL)
27
28#endif /* _ASM_MICROBLAZE_SCATTERLIST_H */
diff --git a/arch/microblaze/include/asm/sections.h b/arch/microblaze/include/asm/sections.h
new file mode 100644
index 000000000000..8434a43e5421
--- /dev/null
+++ b/arch/microblaze/include/asm/sections.h
@@ -0,0 +1,25 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SECTIONS_H
10#define _ASM_MICROBLAZE_SECTIONS_H
11
12#include <asm-generic/sections.h>
13
14# ifndef __ASSEMBLY__
15extern char _ssbss[], _esbss[];
16extern unsigned long __ivt_start[], __ivt_end[];
17
18# ifdef CONFIG_MTD_UCLINUX
19extern char *_ebss;
20# endif
21
22extern u32 _fdt_start[], _fdt_end[];
23
24# endif /* !__ASSEMBLY__ */
25#endif /* _ASM_MICROBLAZE_SECTIONS_H */
diff --git a/arch/microblaze/include/asm/segment.h b/arch/microblaze/include/asm/segment.h
new file mode 100644
index 000000000000..7f5dcc56eea1
--- /dev/null
+++ b/arch/microblaze/include/asm/segment.h
@@ -0,0 +1,43 @@
1/*
2 * Copyright (C) 2008 Michal Simek
3 * Copyright (C) 2008 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_SEGMENT_H
12#define _ASM_MICROBLAZE_SEGMENT_H
13
14#ifndef __ASSEMBLY__
15
16typedef struct {
17 unsigned long seg;
18} mm_segment_t;
19
20/*
21 * On Microblaze the fs value is actually the top of the corresponding
22 * address space.
23 *
24 * The fs value determines whether argument validity checking should be
25 * performed or not. If get_fs() == USER_DS, checking is performed, with
26 * get_fs() == KERNEL_DS, checking is bypassed.
27 *
28 * For historical reasons, these macros are grossly misnamed.
29 *
30 * For non-MMU arch like Microblaze, KERNEL_DS and USER_DS is equal.
31 */
32# define KERNEL_DS ((mm_segment_t){0})
33# define USER_DS KERNEL_DS
34
35# define get_ds() (KERNEL_DS)
36# define get_fs() (current_thread_info()->addr_limit)
37# define set_fs(x) \
38 do { current_thread_info()->addr_limit = (x); } while (0)
39
40# define segment_eq(a, b) ((a).seg == (b).seg)
41
42# endif /* __ASSEMBLY__ */
43#endif /* _ASM_MICROBLAZE_SEGMENT_H */
diff --git a/arch/microblaze/include/asm/selfmod.h b/arch/microblaze/include/asm/selfmod.h
new file mode 100644
index 000000000000..c42aff2e6cd0
--- /dev/null
+++ b/arch/microblaze/include/asm/selfmod.h
@@ -0,0 +1,24 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SELFMOD_H
10#define _ASM_MICROBLAZE_SELFMOD_H
11
12/*
13 * BARRIER_BASE_ADDR is constant address for selfmod function.
14 * do not change this value - selfmod function is in
15 * arch/microblaze/kernel/selfmod.c: selfmod_function()
16 *
17 * last 16 bits is used for storing register offset
18 */
19
20#define BARRIER_BASE_ADDR 0x1234ff00
21
22void selfmod_function(const int *arr_fce, const unsigned int base);
23
24#endif /* _ASM_MICROBLAZE_SELFMOD_H */
diff --git a/arch/microblaze/include/asm/sembuf.h b/arch/microblaze/include/asm/sembuf.h
new file mode 100644
index 000000000000..b804ed71a57e
--- /dev/null
+++ b/arch/microblaze/include/asm/sembuf.h
@@ -0,0 +1,34 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SEMBUF_H
10#define _ASM_MICROBLAZE_SEMBUF_H
11
12/*
13 * The semid64_ds structure for microblaze architecture.
14 * Note extra padding because this structure is passed back and forth
15 * between kernel and user space.
16 *
17 * Pad space is left for:
18 * - 64-bit time_t to solve y2038 problem
19 * - 2 miscellaneous 32-bit values
20 */
21
22struct semid64_ds {
23 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
24 __kernel_time_t sem_otime; /* last semop time */
25 unsigned long __unused1;
26 __kernel_time_t sem_ctime; /* last change time */
27 unsigned long __unused2;
28 unsigned long sem_nsems; /* no. of semaphores in array */
29 unsigned long __unused3;
30 unsigned long __unused4;
31};
32
33
34#endif /* _ASM_MICROBLAZE_SEMBUF_H */
diff --git a/arch/microblaze/include/asm/serial.h b/arch/microblaze/include/asm/serial.h
new file mode 100644
index 000000000000..39bfc8ce6af5
--- /dev/null
+++ b/arch/microblaze/include/asm/serial.h
@@ -0,0 +1,14 @@
1/*
2 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SERIAL_H
10#define _ASM_MICROBLAZE_SERIAL_H
11
12# define BASE_BAUD (1843200 / 16)
13
14#endif /* _ASM_MICROBLAZE_SERIAL_H */
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h
new file mode 100644
index 000000000000..9b98e8e6abae
--- /dev/null
+++ b/arch/microblaze/include/asm/setup.h
@@ -0,0 +1,44 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_SETUP_H
11#define _ASM_MICROBLAZE_SETUP_H
12
13#define COMMAND_LINE_SIZE 256
14
15# ifndef __ASSEMBLY__
16
17# ifdef __KERNEL__
18extern unsigned int boot_cpuid; /* move to smp.h */
19
20extern char cmd_line[COMMAND_LINE_SIZE];
21# endif/* __KERNEL__ */
22
23void early_printk(const char *fmt, ...);
24
25int setup_early_printk(char *opt);
26void disable_early_printk(void);
27
28void heartbeat(void);
29void setup_heartbeat(void);
30
31unsigned long long sched_clock(void);
32
33void time_init(void);
34void init_IRQ(void);
35void machine_early_init(const char *cmdline, unsigned int ram,
36 unsigned int fdt);
37
38void machine_restart(char *cmd);
39void machine_shutdown(void);
40void machine_halt(void);
41void machine_power_off(void);
42
43# endif /* __ASSEMBLY__ */
44#endif /* _ASM_MICROBLAZE_SETUP_H */
diff --git a/arch/microblaze/include/asm/shmbuf.h b/arch/microblaze/include/asm/shmbuf.h
new file mode 100644
index 000000000000..f829c5843618
--- /dev/null
+++ b/arch/microblaze/include/asm/shmbuf.h
@@ -0,0 +1,42 @@
1#ifndef _ASM_MICROBLAZE_SHMBUF_H
2#define _ASM_MICROBLAZE_SHMBUF_H
3
4/*
5 * The shmid64_ds structure for microblaze architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct shmid64_ds {
15 struct ipc64_perm shm_perm; /* operation perms */
16 size_t shm_segsz; /* size of segment (bytes) */
17 __kernel_time_t shm_atime; /* last attach time */
18 unsigned long __unused1;
19 __kernel_time_t shm_dtime; /* last detach time */
20 unsigned long __unused2;
21 __kernel_time_t shm_ctime; /* last change time */
22 unsigned long __unused3;
23 __kernel_pid_t shm_cpid; /* pid of creator */
24 __kernel_pid_t shm_lpid; /* pid of last operator */
25 unsigned long shm_nattch; /* no. of current attaches */
26 unsigned long __unused4;
27 unsigned long __unused5;
28};
29
30struct shminfo64 {
31 unsigned long shmmax;
32 unsigned long shmmin;
33 unsigned long shmmni;
34 unsigned long shmseg;
35 unsigned long shmall;
36 unsigned long __unused1;
37 unsigned long __unused2;
38 unsigned long __unused3;
39 unsigned long __unused4;
40};
41
42#endif /* _ASM_MICROBLAZE_SHMBUF_H */
diff --git a/arch/microblaze/include/asm/shmparam.h b/arch/microblaze/include/asm/shmparam.h
new file mode 100644
index 000000000000..9f5fc2b3b6a3
--- /dev/null
+++ b/arch/microblaze/include/asm/shmparam.h
@@ -0,0 +1,6 @@
1#ifndef _ASM_MICROBLAZE_SHMPARAM_H
2#define _ASM_MICROBLAZE_SHMPARAM_H
3
4#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
5
6#endif /* _ASM_MICROBLAZE_SHMPARAM_H */
diff --git a/arch/microblaze/include/asm/sigcontext.h b/arch/microblaze/include/asm/sigcontext.h
new file mode 100644
index 000000000000..55873c80c917
--- /dev/null
+++ b/arch/microblaze/include/asm/sigcontext.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SIGCONTEXT_H
10#define _ASM_MICROBLAZE_SIGCONTEXT_H
11
12/* FIXME should be linux/ptrace.h */
13#include <asm/ptrace.h>
14
15struct sigcontext {
16 struct pt_regs regs;
17 unsigned long oldmask;
18};
19
20#endif /* _ASM_MICROBLAZE_SIGCONTEXT_H */
diff --git a/arch/microblaze/include/asm/siginfo.h b/arch/microblaze/include/asm/siginfo.h
new file mode 100644
index 000000000000..f162911a8f50
--- /dev/null
+++ b/arch/microblaze/include/asm/siginfo.h
@@ -0,0 +1,15 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SIGINFO_H
10#define _ASM_MICROBLAZE_SIGINFO_H
11
12#include <linux/types.h>
13#include <asm-generic/siginfo.h>
14
15#endif /* _ASM_MICROBLAZE_SIGINFO_H */
diff --git a/arch/microblaze/include/asm/signal.h b/arch/microblaze/include/asm/signal.h
new file mode 100644
index 000000000000..9676fad3486c
--- /dev/null
+++ b/arch/microblaze/include/asm/signal.h
@@ -0,0 +1,165 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 * Yasushi SHOJI <yashi@atmark-techno.com>
4 * Tetsuya OHKAWA <tetsuya@atmark-techno.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#ifndef _ASM_MICROBLAZE_SIGNAL_H
12#define _ASM_MICROBLAZE_SIGNAL_H
13
14#define SIGHUP 1
15#define SIGINT 2
16#define SIGQUIT 3
17#define SIGILL 4
18#define SIGTRAP 5
19#define SIGABRT 6
20#define SIGIOT 6
21#define SIGBUS 7
22#define SIGFPE 8
23#define SIGKILL 9
24#define SIGUSR1 10
25#define SIGSEGV 11
26#define SIGUSR2 12
27#define SIGPIPE 13
28#define SIGALRM 14
29#define SIGTERM 15
30#define SIGSTKFLT 16
31#define SIGCHLD 17
32#define SIGCONT 18
33#define SIGSTOP 19
34#define SIGTSTP 20
35#define SIGTTIN 21
36#define SIGTTOU 22
37#define SIGURG 23
38#define SIGXCPU 24
39#define SIGXFSZ 25
40#define SIGVTALRM 26
41#define SIGPROF 27
42#define SIGWINCH 28
43#define SIGIO 29
44#define SIGPOLL SIGIO
45/*
46#define SIGLOST 29
47*/
48#define SIGPWR 30
49#define SIGSYS 31
50#define SIGUNUSED 31
51
52/* These should not be considered constants from userland. */
53#define SIGRTMIN 32
54#define SIGRTMAX _NSIG
55
56/*
57 * SA_FLAGS values:
58 *
59 * SA_ONSTACK indicates that a registered stack_t will be used.
60 * SA_RESTART flag to get restarting signals (which were the default long ago)
61 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
62 * SA_RESETHAND clears the handler when the signal is delivered.
63 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
64 * SA_NODEFER prevents the current signal from being masked in the handler.
65 *
66 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
67 * Unix names RESETHAND and NODEFER respectively.
68 */
69#define SA_NOCLDSTOP 0x00000001
70#define SA_NOCLDWAIT 0x00000002
71#define SA_SIGINFO 0x00000004
72#define SA_ONSTACK 0x08000000
73#define SA_RESTART 0x10000000
74#define SA_NODEFER 0x40000000
75#define SA_RESETHAND 0x80000000
76
77#define SA_NOMASK SA_NODEFER
78#define SA_ONESHOT SA_RESETHAND
79
80#define SA_RESTORER 0x04000000
81
82/*
83 * sigaltstack controls
84 */
85#define SS_ONSTACK 1
86#define SS_DISABLE 2
87
88#define MINSIGSTKSZ 2048
89#define SIGSTKSZ 8192
90
91# ifndef __ASSEMBLY__
92# include <linux/types.h>
93# include <asm-generic/signal.h>
94
95/* Avoid too many header ordering problems. */
96struct siginfo;
97
98# ifdef __KERNEL__
99/*
100 * Most things should be clean enough to redefine this at will, if care
101 * is taken to make libc match.
102 */
103# define _NSIG 64
104# define _NSIG_BPW 32
105# define _NSIG_WORDS (_NSIG / _NSIG_BPW)
106
107typedef unsigned long old_sigset_t; /* at least 32 bits */
108
109typedef struct {
110 unsigned long sig[_NSIG_WORDS];
111} sigset_t;
112
113struct old_sigaction {
114 __sighandler_t sa_handler;
115 old_sigset_t sa_mask;
116 unsigned long sa_flags;
117 void (*sa_restorer)(void);
118};
119
120struct sigaction {
121 __sighandler_t sa_handler;
122 unsigned long sa_flags;
123 void (*sa_restorer)(void);
124 sigset_t sa_mask; /* mask last for extensibility */
125};
126
127struct k_sigaction {
128 struct sigaction sa;
129};
130
131# include <asm/sigcontext.h>
132# undef __HAVE_ARCH_SIG_BITOPS
133
134# define ptrace_signal_deliver(regs, cookie) do { } while (0)
135
136# else /* !__KERNEL__ */
137
138/* Here we must cater to libcs that poke about in kernel headers. */
139
140# define NSIG 32
141typedef unsigned long sigset_t;
142
143struct sigaction {
144 union {
145 __sighandler_t _sa_handler;
146 void (*_sa_sigaction)(int, struct siginfo *, void *);
147 } _u;
148 sigset_t sa_mask;
149 unsigned long sa_flags;
150 void (*sa_restorer)(void);
151};
152
153# define sa_handler _u._sa_handler
154# define sa_sigaction _u._sa_sigaction
155
156# endif /* __KERNEL__ */
157
158typedef struct sigaltstack {
159 void *ss_sp;
160 int ss_flags;
161 size_t ss_size;
162} stack_t;
163
164# endif /* __ASSEMBLY__ */
165#endif /* _ASM_MICROBLAZE_SIGNAL_H */
diff --git a/arch/microblaze/include/asm/socket.h b/arch/microblaze/include/asm/socket.h
new file mode 100644
index 000000000000..f919b6b540ac
--- /dev/null
+++ b/arch/microblaze/include/asm/socket.h
@@ -0,0 +1,66 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SOCKET_H
10#define _ASM_MICROBLAZE_SOCKET_H
11
12#include <asm/sockios.h>
13
14/* For setsockoptions(2) */
15#define SOL_SOCKET 1
16
17#define SO_DEBUG 1
18#define SO_REUSEADDR 2
19#define SO_TYPE 3
20#define SO_ERROR 4
21#define SO_DONTROUTE 5
22#define SO_BROADCAST 6
23#define SO_SNDBUF 7
24#define SO_RCVBUF 8
25#define SO_SNDBUFFORCE 32
26#define SO_RCVBUFFORCE 33
27#define SO_KEEPALIVE 9
28#define SO_OOBINLINE 10
29#define SO_NO_CHECK 11
30#define SO_PRIORITY 12
31#define SO_LINGER 13
32#define SO_BSDCOMPAT 14
33/* To add :#define SO_REUSEPORT 15 */
34#define SO_PASSCRED 16
35#define SO_PEERCRED 17
36#define SO_RCVLOWAT 18
37#define SO_SNDLOWAT 19
38#define SO_RCVTIMEO 20
39#define SO_SNDTIMEO 21
40
41/* Security levels - as per NRL IPv6 - don't actually do anything */
42#define SO_SECURITY_AUTHENTICATION 22
43#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
44#define SO_SECURITY_ENCRYPTION_NETWORK 24
45
46#define SO_BINDTODEVICE 25
47
48/* Socket filtering */
49#define SO_ATTACH_FILTER 26
50#define SO_DETACH_FILTER 27
51
52#define SO_PEERNAME 28
53#define SO_TIMESTAMP 29
54#define SCM_TIMESTAMP SO_TIMESTAMP
55
56#define SO_ACCEPTCONN 30
57
58#define SO_PEERSEC 31
59#define SO_PASSSEC 34
60
61#define SO_TIMESTAMPNS 35
62#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
63
64#define SO_MARK 36
65
66#endif /* _ASM_MICROBLAZE_SOCKET_H */
diff --git a/arch/microblaze/include/asm/sockios.h b/arch/microblaze/include/asm/sockios.h
new file mode 100644
index 000000000000..9fff57a701e1
--- /dev/null
+++ b/arch/microblaze/include/asm/sockios.h
@@ -0,0 +1,23 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SOCKIOS_H
10#define _ASM_MICROBLAZE_SOCKIOS_H
11
12#include <linux/ioctl.h>
13
14/* Socket-level I/O control calls. */
15#define FIOSETOWN 0x8901
16#define SIOCSPGRP 0x8902
17#define FIOGETOWN 0x8903
18#define SIOCGPGRP 0x8904
19#define SIOCATMARK 0x8905
20#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
21#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
22
23#endif /* _ASM_MICROBLAZE_SOCKIOS_H */
diff --git a/arch/microblaze/include/asm/stat.h b/arch/microblaze/include/asm/stat.h
new file mode 100644
index 000000000000..5f18b8aed220
--- /dev/null
+++ b/arch/microblaze/include/asm/stat.h
@@ -0,0 +1,73 @@
1/*
2 * Microblaze stat structure
3 *
4 * Copyright (C) 2001,02,03 NEC Electronics Corporation
5 * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
6 *
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
10 *
11 * Written by Miles Bader <miles@gnu.org>
12 */
13
14#ifndef _ASM_MICROBLAZE_STAT_H
15#define _ASM_MICROBLAZE_STAT_H
16
17#include <linux/posix_types.h>
18
19struct stat {
20 unsigned int st_dev;
21 unsigned long st_ino;
22 unsigned int st_mode;
23 unsigned int st_nlink;
24 unsigned int st_uid;
25 unsigned int st_gid;
26 unsigned int st_rdev;
27 unsigned long st_size;
28 unsigned long st_blksize;
29 unsigned long st_blocks;
30 unsigned long st_atime;
31 unsigned long __unused1; /* unsigned long st_atime_nsec */
32 unsigned long st_mtime;
33 unsigned long __unused2; /* unsigned long st_mtime_nsec */
34 unsigned long st_ctime;
35 unsigned long __unused3; /* unsigned long st_ctime_nsec */
36 unsigned long __unused4;
37 unsigned long __unused5;
38};
39
40struct stat64 {
41 unsigned long long st_dev;
42 unsigned long __unused1;
43
44 unsigned long long st_ino;
45
46 unsigned int st_mode;
47 unsigned int st_nlink;
48
49 unsigned int st_uid;
50 unsigned int st_gid;
51
52 unsigned long long st_rdev;
53 unsigned long __unused3;
54
55 long long st_size;
56 unsigned long st_blksize;
57
58 unsigned long st_blocks; /* No. of 512-byte blocks allocated */
59 unsigned long __unused4; /* future possible st_blocks high bits */
60
61 unsigned long st_atime;
62 unsigned long st_atime_nsec;
63
64 unsigned long st_mtime;
65 unsigned long st_mtime_nsec;
66
67 unsigned long st_ctime;
68 unsigned long st_ctime_nsec;
69
70 unsigned long __unused8;
71};
72
73#endif /* _ASM_MICROBLAZE_STAT_H */
diff --git a/include/asm-mn10300/statfs.h b/arch/microblaze/include/asm/statfs.h
index 0b91fe198c20..0b91fe198c20 100644
--- a/include/asm-mn10300/statfs.h
+++ b/arch/microblaze/include/asm/statfs.h
diff --git a/arch/microblaze/include/asm/string.h b/arch/microblaze/include/asm/string.h
new file mode 100644
index 000000000000..f7728c90fc18
--- /dev/null
+++ b/arch/microblaze/include/asm/string.h
@@ -0,0 +1,24 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_STRING_H
10#define _ASM_MICROBLAZE_STRING_H
11
12#ifndef __KERNEL__
13
14#define __HAVE_ARCH_MEMSET
15#define __HAVE_ARCH_MEMCPY
16#define __HAVE_ARCH_MEMMOVE
17
18extern void *memset(void *, int, __kernel_size_t);
19extern void *memcpy(void *, const void *, __kernel_size_t);
20extern void *memmove(void *, const void *, __kernel_size_t);
21
22#endif /* __KERNEL__ */
23
24#endif /* _ASM_MICROBLAZE_STRING_H */
diff --git a/arch/microblaze/include/asm/swab.h b/arch/microblaze/include/asm/swab.h
new file mode 100644
index 000000000000..b375d7b65ad7
--- /dev/null
+++ b/arch/microblaze/include/asm/swab.h
@@ -0,0 +1,8 @@
1#ifndef _ASM_MICROBLAZE_SWAB_H
2#define _ASM_MICROBLAZE_SWAB_H
3
4#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
5#define __SWAB_64_THRU_32__
6#endif
7
8#endif /* _ASM_MICROBLAZE_SWAB_H */
diff --git a/arch/microblaze/include/asm/syscalls.h b/arch/microblaze/include/asm/syscalls.h
new file mode 100644
index 000000000000..9cb4ff0edeb2
--- /dev/null
+++ b/arch/microblaze/include/asm/syscalls.h
@@ -0,0 +1,45 @@
1#ifndef __ASM_MICROBLAZE_SYSCALLS_H
2#define __ASM_MICROBLAZE_SYSCALLS_H
3#ifdef __KERNEL__
4
5#include <linux/compiler.h>
6#include <linux/linkage.h>
7#include <linux/types.h>
8#include <linux/signal.h>
9
10/* FIXME will be removed */
11asmlinkage int sys_ipc(uint call, int first, int second,
12 int third, void *ptr, long fifth);
13
14struct pt_regs;
15asmlinkage int sys_vfork(struct pt_regs *regs);
16asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs);
17asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
18 char __user *__user *envp, struct pt_regs *regs);
19
20asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
21 unsigned long prot, unsigned long flags,
22 unsigned long fd, unsigned long pgoff);
23
24asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
25 unsigned long prot, unsigned long flags,
26 unsigned long fd, off_t offset);
27
28/* from signal.c */
29asmlinkage int sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs);
30
31asmlinkage int sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
32 struct pt_regs *regs);
33
34asmlinkage int sys_sigaction(int sig, const struct old_sigaction *act,
35 struct old_sigaction *oact);
36
37asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
38 struct pt_regs *regs);
39
40asmlinkage int sys_sigreturn(struct pt_regs *regs);
41
42asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
43
44#endif /* __KERNEL__ */
45#endif /* __ASM_MICROBLAZE_SYSCALLS_H */
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
new file mode 100644
index 000000000000..c4e308850b5d
--- /dev/null
+++ b/arch/microblaze/include/asm/system.h
@@ -0,0 +1,91 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_SYSTEM_H
10#define _ASM_MICROBLAZE_SYSTEM_H
11
12#include <asm/registers.h>
13#include <asm/setup.h>
14#include <asm/irqflags.h>
15
16struct task_struct;
17struct thread_info;
18
19extern struct task_struct *_switch_to(struct thread_info *prev,
20 struct thread_info *next);
21
22#define switch_to(prev, next, last) \
23 do { \
24 (last) = _switch_to(task_thread_info(prev), \
25 task_thread_info(next)); \
26 } while (0)
27
28#define smp_read_barrier_depends() do {} while (0)
29#define read_barrier_depends() do {} while (0)
30
31#define nop() asm volatile ("nop")
32#define mb() barrier()
33#define rmb() mb()
34#define wmb() mb()
35#define set_mb(var, value) do { var = value; mb(); } while (0)
36#define set_wmb(var, value) do { var = value; wmb(); } while (0)
37
38#define smp_mb() mb()
39#define smp_rmb() rmb()
40#define smp_wmb() wmb()
41
42void show_trace(struct task_struct *task, unsigned long *stack);
43void __bad_xchg(volatile void *ptr, int size);
44
45static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
46 int size)
47{
48 unsigned long ret;
49 unsigned long flags;
50
51 switch (size) {
52 case 1:
53 local_irq_save(flags);
54 ret = *(volatile unsigned char *)ptr;
55 *(volatile unsigned char *)ptr = x;
56 local_irq_restore(flags);
57 break;
58
59 case 4:
60 local_irq_save(flags);
61 ret = *(volatile unsigned long *)ptr;
62 *(volatile unsigned long *)ptr = x;
63 local_irq_restore(flags);
64 break;
65 default:
66 __bad_xchg(ptr, size), ret = 0;
67 break;
68 }
69
70 return ret;
71}
72
73void disable_hlt(void);
74void enable_hlt(void);
75void default_idle(void);
76
77#define xchg(ptr, x) \
78 ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
79
80void free_init_pages(char *what, unsigned long begin, unsigned long end);
81void free_initmem(void);
82extern char *klimit;
83extern void ret_from_fork(void);
84
85#ifdef CONFIG_DEBUG_FS
86extern struct dentry *of_debugfs_root;
87#endif
88
89#define arch_align_stack(x) (x)
90
91#endif /* _ASM_MICROBLAZE_SYSTEM_H */
diff --git a/arch/microblaze/include/asm/termbits.h b/arch/microblaze/include/asm/termbits.h
new file mode 100644
index 000000000000..a1b64bc4724a
--- /dev/null
+++ b/arch/microblaze/include/asm/termbits.h
@@ -0,0 +1,203 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TERMBITS_H
10#define _ASM_MICROBLAZE_TERMBITS_H
11
12#include <linux/posix_types.h>
13
14typedef unsigned char cc_t;
15typedef unsigned int speed_t;
16typedef unsigned int tcflag_t;
17
18#define NCCS 19
19struct termios {
20 tcflag_t c_iflag; /* input mode flags */
21 tcflag_t c_oflag; /* output mode flags */
22 tcflag_t c_cflag; /* control mode flags */
23 tcflag_t c_lflag; /* local mode flags */
24 cc_t c_line; /* line discipline */
25 cc_t c_cc[NCCS]; /* control characters */
26};
27
28struct ktermios {
29 tcflag_t c_iflag; /* input mode flags */
30 tcflag_t c_oflag; /* output mode flags */
31 tcflag_t c_cflag; /* control mode flags */
32 tcflag_t c_lflag; /* local mode flags */
33 cc_t c_line; /* line discipline */
34 cc_t c_cc[NCCS]; /* control characters */
35 speed_t c_ispeed; /* input speed */
36 speed_t c_ospeed; /* output speed */
37};
38
39/* c_cc characters */
40
41#define VINTR 0
42#define VQUIT 1
43#define VERASE 2
44#define VKILL 3
45#define VEOF 4
46#define VTIME 5
47#define VMIN 6
48#define VSWTC 7
49#define VSTART 8
50#define VSTOP 9
51#define VSUSP 10
52#define VEOL 11
53#define VREPRINT 12
54#define VDISCARD 13
55#define VWERASE 14
56#define VLNEXT 15
57#define VEOL2 16
58
59/* c_iflag bits */
60
61#define IGNBRK 0000001
62#define BRKINT 0000002
63#define IGNPAR 0000004
64#define PARMRK 0000010
65#define INPCK 0000020
66#define ISTRIP 0000040
67#define INLCR 0000100
68#define IGNCR 0000200
69#define ICRNL 0000400
70#define IUCLC 0001000
71#define IXON 0002000
72#define IXANY 0004000
73#define IXOFF 0010000
74#define IMAXBEL 0020000
75#define IUTF8 0040000
76
77/* c_oflag bits */
78
79#define OPOST 0000001
80#define OLCUC 0000002
81#define ONLCR 0000004
82#define OCRNL 0000010
83#define ONOCR 0000020
84#define ONLRET 0000040
85#define OFILL 0000100
86#define OFDEL 0000200
87#define NLDLY 0000400
88#define NL0 0000000
89#define NL1 0000400
90#define CRDLY 0003000
91#define CR0 0000000
92#define CR1 0001000
93#define CR2 0002000
94#define CR3 0003000
95#define TABDLY 0014000
96#define TAB0 0000000
97#define TAB1 0004000
98#define TAB2 0010000
99#define TAB3 0014000
100#define XTABS 0014000
101#define BSDLY 0020000
102#define BS0 0000000
103#define BS1 0020000
104#define VTDLY 0040000
105#define VT0 0000000
106#define VT1 0040000
107#define FFDLY 0100000
108#define FF0 0000000
109#define FF1 0100000
110
111/* c_cflag bit meaning */
112
113#define CBAUD 0010017
114#define B0 0000000 /* hang up */
115#define B50 0000001
116#define B75 0000002
117#define B110 0000003
118#define B134 0000004
119#define B150 0000005
120#define B200 0000006
121#define B300 0000007
122#define B600 0000010
123#define B1200 0000011
124#define B1800 0000012
125#define B2400 0000013
126#define B4800 0000014
127#define B9600 0000015
128#define B19200 0000016
129#define B38400 0000017
130#define EXTA B19200
131#define EXTB B38400
132#define CSIZE 0000060
133#define CS5 0000000
134#define CS6 0000020
135#define CS7 0000040
136#define CS8 0000060
137#define CSTOPB 0000100
138#define CREAD 0000200
139#define PARENB 0000400
140#define PARODD 0001000
141#define HUPCL 0002000
142#define CLOCAL 0004000
143#define CBAUDEX 0010000
144#define B57600 0010001
145#define B115200 0010002
146#define B230400 0010003
147#define B460800 0010004
148#define B500000 0010005
149#define B576000 0010006
150#define B921600 0010007
151#define BOTHER 0010000
152#define B1000000 0010010
153#define B1152000 0010011
154#define B1500000 0010012
155#define B2000000 0010013
156#define B2500000 0010014
157#define B3000000 0010015
158#define B3500000 0010016
159#define B4000000 0010017
160#define CIBAUD 002003600000 /* input baud rate (not used) */
161#define CMSPAR 010000000000 /* mark or space (stick) parity */
162#define CRTSCTS 020000000000 /* flow control */
163
164#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
165
166/* c_lflag bits */
167
168#define ISIG 0000001
169#define ICANON 0000002
170#define XCASE 0000004
171#define ECHO 0000010
172#define ECHOE 0000020
173#define ECHOK 0000040
174#define ECHONL 0000100
175#define NOFLSH 0000200
176#define TOSTOP 0000400
177#define ECHOCTL 0001000
178#define ECHOPRT 0002000
179#define ECHOKE 0004000
180#define FLUSHO 0010000
181#define PENDIN 0040000
182#define IEXTEN 0100000
183
184/* tcflow() and TCXONC use these */
185
186#define TCOOFF 0
187#define TCOON 1
188#define TCIOFF 2
189#define TCION 3
190
191/* tcflush() and TCFLSH use these */
192
193#define TCIFLUSH 0
194#define TCOFLUSH 1
195#define TCIOFLUSH 2
196
197/* tcsetattr uses these */
198
199#define TCSANOW 0
200#define TCSADRAIN 1
201#define TCSAFLUSH 2
202
203#endif /* _ASM_MICROBLAZE_TERMBITS_H */
diff --git a/arch/microblaze/include/asm/termios.h b/arch/microblaze/include/asm/termios.h
new file mode 100644
index 000000000000..102d77258668
--- /dev/null
+++ b/arch/microblaze/include/asm/termios.h
@@ -0,0 +1,88 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TERMIOS_H
10#define _ASM_MICROBLAZE_TERMIOS_H
11
12#include <linux/string.h>
13#include <asm/termbits.h>
14#include <asm/ioctls.h>
15
16struct winsize {
17 unsigned short ws_row;
18 unsigned short ws_col;
19 unsigned short ws_xpixel;
20 unsigned short ws_ypixel;
21};
22
23#define NCC 8
24struct termio {
25 unsigned short c_iflag; /* input mode flags */
26 unsigned short c_oflag; /* output mode flags */
27 unsigned short c_cflag; /* control mode flags */
28 unsigned short c_lflag; /* local mode flags */
29 unsigned char c_line; /* line discipline */
30 unsigned char c_cc[NCC]; /* control characters */
31};
32
33#ifdef __KERNEL__
34/* intr=^C quit=^| erase=del kill=^U
35 eof=^D vtime=\0 vmin=\1 sxtc=\0
36 start=^Q stop=^S susp=^Z eol=\0
37 reprint=^R discard=^U werase=^W lnext=^V
38 eol2=\0
39*/
40#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
41#endif
42
43/* Modem lines */
44
45#define TIOCM_LE 0x001
46#define TIOCM_DTR 0x002
47#define TIOCM_RTS 0x004
48#define TIOCM_ST 0x008
49#define TIOCM_SR 0x010
50#define TIOCM_CTS 0x020
51#define TIOCM_CAR 0x040
52#define TIOCM_RNG 0x080
53#define TIOCM_DSR 0x100
54#define TIOCM_CD TIOCM_CAR
55#define TIOCM_RI TIOCM_RNG
56#define TIOCM_OUT1 0x2000
57#define TIOCM_OUT2 0x4000
58#define TIOCM_LOOP 0x8000
59
60/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
61
62/* Line disciplines */
63
64#define N_TTY 0
65#define N_SLIP 1
66#define N_MOUSE 2
67#define N_PPP 3
68#define N_STRIP 4
69#define N_AX25 5
70#define N_X25 6 /* X.25 async */
71#define N_6PACK 7
72#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */
73#define N_R3964 9 /* Reserved for Simatic R3964 module */
74#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */
75#define N_IRDA 11 /* Linux IR - http://irda.sourceforge.net/ */
76#define N_SMSBLOCK 12 /* SMS block mode - for talking to GSM data cards
77 about SMS messages */
78#define N_HDLC 13 /* synchronous HDLC */
79#define N_SYNC_PPP 14
80#define N_HCI 15 /* Bluetooth HCI UART */
81
82#ifdef __KERNEL__
83
84#include <asm-generic/termios.h>
85
86#endif /* __KERNEL__ */
87
88#endif /* _ASM_MICROBLAZE_TERMIOS_H */
diff --git a/arch/microblaze/include/asm/thread_info.h b/arch/microblaze/include/asm/thread_info.h
new file mode 100644
index 000000000000..4c3943e3f403
--- /dev/null
+++ b/arch/microblaze/include/asm/thread_info.h
@@ -0,0 +1,159 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_THREAD_INFO_H
10#define _ASM_MICROBLAZE_THREAD_INFO_H
11
12#ifdef __KERNEL__
13
14/* we have 8k stack */
15#define THREAD_SHIFT 13
16#define THREAD_SIZE (1 << THREAD_SHIFT)
17#define THREAD_SIZE_ORDER 1
18
19#ifndef __ASSEMBLY__
20# include <linux/types.h>
21# include <asm/processor.h>
22# include <asm/segment.h>
23
24/*
25 * low level task data that entry.S needs immediate access to
26 * - this struct should fit entirely inside of one cache line
27 * - this struct shares the supervisor stack pages
28 * - if the contents of this structure are changed, the assembly constants
29 * must also be changed
30 */
31
32struct cpu_context {
33 __u32 r1; /* stack pointer */
34 __u32 r2;
35 /* dedicated registers */
36 __u32 r13;
37 __u32 r14;
38 __u32 r15;
39 __u32 r16;
40 __u32 r17;
41 __u32 r18;
42 /* non-volatile registers */
43 __u32 r19;
44 __u32 r20;
45 __u32 r21;
46 __u32 r22;
47 __u32 r23;
48 __u32 r24;
49 __u32 r25;
50 __u32 r26;
51 __u32 r27;
52 __u32 r28;
53 __u32 r29;
54 __u32 r30;
55 /* r31 is used as current task pointer */
56 /* special purpose registers */
57 __u32 msr;
58 __u32 ear;
59 __u32 esr;
60 __u32 fsr;
61};
62
63struct thread_info {
64 struct task_struct *task; /* main task structure */
65 struct exec_domain *exec_domain; /* execution domain */
66 unsigned long flags; /* low level flags */
67 unsigned long status; /* thread-synchronous flags */
68 __u32 cpu; /* current CPU */
69 __s32 preempt_count; /* 0 => preemptable,< 0 => BUG*/
70 mm_segment_t addr_limit; /* thread address space */
71 struct restart_block restart_block;
72
73 struct cpu_context cpu_context;
74};
75
76/*
77 * macros/functions for gaining access to the thread information structure
78 *
79 * preempt_count needs to be 1 initially, until the scheduler is functional.
80 */
81#define INIT_THREAD_INFO(tsk) \
82{ \
83 .task = &tsk, \
84 .exec_domain = &default_exec_domain, \
85 .flags = 0, \
86 .cpu = 0, \
87 .preempt_count = 1, \
88 .addr_limit = KERNEL_DS, \
89 .restart_block = { \
90 .fn = do_no_restart_syscall, \
91 }, \
92}
93
94#define init_thread_info (init_thread_union.thread_info)
95#define init_stack (init_thread_union.stack)
96
97/* how to get the thread information struct from C */
98static inline struct thread_info *current_thread_info(void)
99{
100 register unsigned long sp asm("r1");
101
102 return (struct thread_info *)(sp & ~(THREAD_SIZE-1));
103}
104
105/* thread information allocation */
106#endif /* __ASSEMBLY__ */
107
108#define PREEMPT_ACTIVE 0x10000000
109
110/*
111 * thread information flags
112 * - these are process state flags that various assembly files may
113 * need to access
114 * - pending work-to-be-done flags are in LSW
115 * - other flags in MSW
116 */
117#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
118#define TIF_NOTIFY_RESUME 1 /* resumption notification requested */
119#define TIF_SIGPENDING 2 /* signal pending */
120#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
121/* restore singlestep on return to user mode */
122#define TIF_SINGLESTEP 4
123#define TIF_IRET 5 /* return with iret */
124#define TIF_MEMDIE 6
125#define TIF_FREEZE 14 /* Freezing for suspend */
126
127/* FIXME change in entry.S */
128#define TIF_KERNEL_TRACE 8 /* kernel trace active */
129
130/* true if poll_idle() is polling TIF_NEED_RESCHED */
131#define TIF_POLLING_NRFLAG 16
132
133#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
134#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
135#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
136#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
137#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
138#define _TIF_IRET (1<<TIF_IRET)
139#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
140#define _TIF_FREEZE (1<<TIF_FREEZE)
141#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)
142
143/* work to do on interrupt/exception return */
144#define _TIF_WORK_MASK 0x0000FFFE
145/* work to do on any return to u-space */
146#define _TIF_ALLWORK_MASK 0x0000FFFF
147
148/*
149 * Thread-synchronous status.
150 *
151 * This is different from the flags in that nobody else
152 * ever touches our thread-synchronous status, so we don't
153 * have to worry about atomic accesses.
154 */
155/* FPU was used by this task this quantum (SMP) */
156#define TS_USEDFPU 0x0001
157
158#endif /* __KERNEL__ */
159#endif /* _ASM_MICROBLAZE_THREAD_INFO_H */
diff --git a/arch/microblaze/include/asm/timex.h b/arch/microblaze/include/asm/timex.h
new file mode 100644
index 000000000000..678525dc6d0b
--- /dev/null
+++ b/arch/microblaze/include/asm/timex.h
@@ -0,0 +1,18 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TIMEX_H
10#define _ASM_MICROBLAZE_TIMEX_H
11
12#define CLOCK_TICK_RATE 1000 /* Timer input freq. */
13
14typedef unsigned long cycles_t;
15
16#define get_cycles() (0)
17
18#endif /* _ASM_TIMEX_H */
diff --git a/arch/microblaze/include/asm/tlb.h b/arch/microblaze/include/asm/tlb.h
new file mode 100644
index 000000000000..d1dfe3791127
--- /dev/null
+++ b/arch/microblaze/include/asm/tlb.h
@@ -0,0 +1,16 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TLB_H
10#define _ASM_MICROBLAZE_TLB_H
11
12#define tlb_flush(tlb) do {} while (0)
13
14#include <asm-generic/tlb.h>
15
16#endif /* _ASM_MICROBLAZE_TLB_H */
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h
new file mode 100644
index 000000000000..d7fe7629001b
--- /dev/null
+++ b/arch/microblaze/include/asm/tlbflush.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TLBFLUSH_H
10#define _ASM_MICROBLAZE_TLBFLUSH_H
11
12#define flush_tlb() BUG()
13#define flush_tlb_all() BUG()
14#define flush_tlb_mm(mm) BUG()
15#define flush_tlb_page(vma, addr) BUG()
16#define flush_tlb_range(mm, start, end) BUG()
17#define flush_tlb_pgtables(mm, start, end) BUG()
18#define flush_tlb_kernel_range(start, end) BUG()
19
20#endif /* _ASM_MICROBLAZE_TLBFLUSH_H */
diff --git a/arch/microblaze/include/asm/topology.h b/arch/microblaze/include/asm/topology.h
new file mode 100644
index 000000000000..96bcea5a9920
--- /dev/null
+++ b/arch/microblaze/include/asm/topology.h
@@ -0,0 +1,11 @@
1#include <asm-generic/topology.h>
2
3#ifndef _ASM_MICROBLAZE_TOPOLOGY_H
4#define _ASM_MICROBLAZE_TOPOLOGY_H
5
6struct device_node;
7static inline int of_node_to_nid(struct device_node *device)
8{
9 return 0;
10}
11#endif /* _ASM_MICROBLAZE_TOPOLOGY_H */
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
new file mode 100644
index 000000000000..bebc018318f5
--- /dev/null
+++ b/arch/microblaze/include/asm/types.h
@@ -0,0 +1,38 @@
1/*
2 * Copyright (C) Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_TYPES_H
10#define _ASM_MICROBLAZE_TYPES_H
11
12/*
13 * This file is never included by application software unless
14 * explicitly requested (e.g., via linux/types.h) in which case the
15 * application is Linux specific so (user-) name space pollution is
16 * not a major issue. However, for interoperability, libraries still
17 * need to be careful to avoid a name clashes.
18 */
19
20#include <asm-generic/int-ll64.h>
21
22# ifndef __ASSEMBLY__
23
24typedef unsigned short umode_t;
25
26/*
27 * These aren't exported outside the kernel to avoid name space clashes
28 */
29# ifdef __KERNEL__
30# define BITS_PER_LONG 32
31
32/* Dma addresses are 32-bits wide. */
33
34typedef u32 dma_addr_t;
35
36# endif/* __KERNEL__ */
37# endif /* __ASSEMBLY__ */
38#endif /* _ASM_MICROBLAZE_TYPES_H */
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
new file mode 100644
index 000000000000..5a3ffc308e12
--- /dev/null
+++ b/arch/microblaze/include/asm/uaccess.h
@@ -0,0 +1,134 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_UACCESS_H
10#define _ASM_MICROBLAZE_UACCESS_H
11
12#ifdef __KERNEL__
13#ifndef __ASSEMBLY__
14
15#include <linux/kernel.h>
16#include <linux/errno.h>
17#include <linux/sched.h> /* RLIMIT_FSIZE */
18#include <linux/mm.h>
19
20#include <asm/mmu.h>
21#include <asm/page.h>
22#include <asm/pgtable.h>
23#include <asm/segment.h>
24#include <linux/string.h>
25
26#define VERIFY_READ 0
27#define VERIFY_WRITE 1
28
29extern int ___range_ok(unsigned long addr, unsigned long size);
30
31#define __range_ok(addr, size) \
32 ___range_ok((unsigned long)(addr), (unsigned long)(size))
33
34#define access_ok(type, addr, size) (__range_ok((addr), (size)) == 0)
35#define __access_ok(add, size) (__range_ok((addr), (size)) == 0)
36
37extern inline int bad_user_access_length(void)
38{
39 return 0;
40}
41/* FIXME this is function for optimalization -> memcpy */
42#define __get_user(var, ptr) \
43 ({ \
44 int __gu_err = 0; \
45 switch (sizeof(*(ptr))) { \
46 case 1: \
47 case 2: \
48 case 4: \
49 (var) = *(ptr); \
50 break; \
51 case 8: \
52 memcpy((void *) &(var), (ptr), 8); \
53 break; \
54 default: \
55 (var) = 0; \
56 __gu_err = __get_user_bad(); \
57 break; \
58 } \
59 __gu_err; \
60 })
61
62#define __get_user_bad() (bad_user_access_length(), (-EFAULT))
63
64#define __put_user(var, ptr) \
65 ({ \
66 int __pu_err = 0; \
67 switch (sizeof(*(ptr))) { \
68 case 1: \
69 case 2: \
70 case 4: \
71 *(ptr) = (var); \
72 break; \
73 case 8: { \
74 typeof(*(ptr)) __pu_val = var; \
75 memcpy(ptr, &__pu_val, sizeof(__pu_val));\
76 } \
77 break; \
78 default: \
79 __pu_err = __put_user_bad(); \
80 break; \
81 } \
82 __pu_err; \
83 })
84
85#define __put_user_bad() (bad_user_access_length(), (-EFAULT))
86
87#define put_user(x, ptr) __put_user(x, ptr)
88#define get_user(x, ptr) __get_user(x, ptr)
89
90#define copy_to_user(to, from, n) (memcpy(to, from, n), 0)
91#define copy_from_user(to, from, n) (memcpy(to, from, n), 0)
92
93#define __copy_to_user(to, from, n) (copy_to_user(to, from, n))
94#define __copy_from_user(to, from, n) (copy_from_user(to, from, n))
95#define __copy_to_user_inatomic(to, from, n) (__copy_to_user(to, from, n))
96#define __copy_from_user_inatomic(to, from, n) (__copy_from_user(to, from, n))
97
98#define __clear_user(addr, n) (memset((void *)addr, 0, n), 0)
99
100static inline unsigned long clear_user(void *addr, unsigned long size)
101{
102 if (access_ok(VERIFY_WRITE, addr, size))
103 size = __clear_user(addr, size);
104 return size;
105}
106
107/* Returns 0 if exception not found and fixup otherwise. */
108extern unsigned long search_exception_table(unsigned long);
109
110
111extern long strncpy_from_user(char *dst, const char __user *src, long count);
112extern long strnlen_user(const char __user *src, long count);
113extern long __strncpy_from_user(char *dst, const char __user *src, long count);
114
115/*
116 * The exception table consists of pairs of addresses: the first is the
117 * address of an instruction that is allowed to fault, and the second is
118 * the address at which the program should continue. No registers are
119 * modified, so it is entirely up to the continuation code to figure out
120 * what to do.
121 *
122 * All the routines below use bits of fixup code that are out of line
123 * with the main instruction path. This means when everything is well,
124 * we don't even have to jump over them. Further, they do not intrude
125 * on our cache or tlb entries.
126 */
127struct exception_table_entry {
128 unsigned long insn, fixup;
129};
130
131#endif /* __ASSEMBLY__ */
132#endif /* __KERNEL__ */
133
134#endif /* _ASM_MICROBLAZE_UACCESS_H */
diff --git a/arch/microblaze/include/asm/ucontext.h b/arch/microblaze/include/asm/ucontext.h
new file mode 100644
index 000000000000..11f6bb3ae3a4
--- /dev/null
+++ b/arch/microblaze/include/asm/ucontext.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#ifndef _ASM_MICROBLAZE_UCONTEXT_H
10#define _ASM_MICROBLAZE_UCONTEXT_H
11
12#include <asm/sigcontext.h>
13
14struct ucontext {
15 unsigned long uc_flags;
16 struct ucontext *uc_link;
17 stack_t uc_stack;
18 struct sigcontext uc_mcontext;
19 sigset_t uc_sigmask; /* mask last for extensibility */
20};
21
22#endif /* _ASM_MICROBLAZE_UCONTEXT_H */
diff --git a/arch/microblaze/include/asm/unaligned.h b/arch/microblaze/include/asm/unaligned.h
new file mode 100644
index 000000000000..9d66b640c910
--- /dev/null
+++ b/arch/microblaze/include/asm/unaligned.h
@@ -0,0 +1,22 @@
1/*
2 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_UNALIGNED_H
11#define _ASM_MICROBLAZE_UNALIGNED_H
12
13# ifdef __KERNEL__
14
15# include <linux/unaligned/access_ok.h>
16# include <linux/unaligned/generic.h>
17
18# define get_unaligned __get_unaligned_be
19# define put_unaligned __put_unaligned_be
20
21# endif /* __KERNEL__ */
22#endif /* _ASM_MICROBLAZE_UNALIGNED_H */
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h
new file mode 100644
index 000000000000..d9d3903fde3f
--- /dev/null
+++ b/arch/microblaze/include/asm/unistd.h
@@ -0,0 +1,421 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#ifndef _ASM_MICROBLAZE_UNISTD_H
11#define _ASM_MICROBLAZE_UNISTD_H
12
13#define __NR_restart_syscall 0 /* ok */
14#define __NR_exit 1 /* ok */
15#define __NR_fork 2 /* not for no MMU - weird */
16#define __NR_read 3 /* ok */
17#define __NR_write 4 /* ok */
18#define __NR_open 5 /* openat */
19#define __NR_close 6 /* ok */
20#define __NR_waitpid 7 /* waitid */
21#define __NR_creat 8 /* openat */
22#define __NR_link 9 /* linkat */
23#define __NR_unlink 10 /* unlinkat */
24#define __NR_execve 11 /* ok */
25#define __NR_chdir 12 /* ok */
26#define __NR_time 13 /* obsolete -> sys_gettimeofday */
27#define __NR_mknod 14 /* mknodat */
28#define __NR_chmod 15 /* fchmodat */
29#define __NR_lchown 16 /* ok */
30#define __NR_break 17 /* don't know */
31#define __NR_oldstat 18 /* remove */
32#define __NR_lseek 19 /* ok */
33#define __NR_getpid 20 /* ok */
34#define __NR_mount 21 /* ok */
35#define __NR_umount 22 /* ok */ /* use only umount2 */
36#define __NR_setuid 23 /* ok */
37#define __NR_getuid 24 /* ok */
38#define __NR_stime 25 /* obsolete -> sys_settimeofday */
39#define __NR_ptrace 26 /* ok */
40#define __NR_alarm 27 /* obsolete -> sys_setitimer */
41#define __NR_oldfstat 28 /* remove */
42#define __NR_pause 29 /* obsolete -> sys_rt_sigtimedwait */
43#define __NR_utime 30 /* obsolete -> sys_utimesat */
44#define __NR_stty 31 /* remove */
45#define __NR_gtty 32 /* remove */
46#define __NR_access 33 /* faccessat */
47/* can be implemented by sys_setpriority */
48#define __NR_nice 34
49#define __NR_ftime 35 /* remove */
50#define __NR_sync 36 /* ok */
51#define __NR_kill 37 /* ok */
52#define __NR_rename 38 /* renameat */
53#define __NR_mkdir 39 /* mkdirat */
54#define __NR_rmdir 40 /* unlinkat */
55#define __NR_dup 41 /* ok */
56#define __NR_pipe 42 /* ok */
57#define __NR_times 43 /* ok */
58#define __NR_prof 44 /* remove */
59#define __NR_brk 45 /* ok -mmu, nommu specific */
60#define __NR_setgid 46 /* ok */
61#define __NR_getgid 47 /* ok */
62#define __NR_signal 48 /* obsolete -> sys_rt_sigaction */
63#define __NR_geteuid 49 /* ok */
64#define __NR_getegid 50 /* ok */
65#define __NR_acct 51 /* add it and then I can disable it */
66#define __NR_umount2 52 /* remove */
67#define __NR_lock 53 /* remove */
68#define __NR_ioctl 54 /* ok */
69#define __NR_fcntl 55 /* ok -> 64bit version*/
70#define __NR_mpx 56 /* remove */
71#define __NR_setpgid 57 /* ok */
72#define __NR_ulimit 58 /* remove */
73#define __NR_oldolduname 59 /* remove */
74#define __NR_umask 60 /* ok */
75#define __NR_chroot 61 /* ok */
76#define __NR_ustat 62 /* obsolete -> statfs64 */
77#define __NR_dup2 63 /* ok */
78#define __NR_getppid 64 /* ok */
79#define __NR_getpgrp 65 /* obsolete -> sys_getpgid */
80#define __NR_setsid 66 /* ok */
81#define __NR_sigaction 67 /* obsolete -> rt_sigaction */
82#define __NR_sgetmask 68 /* obsolete -> sys_rt_sigprocmask */
83#define __NR_ssetmask 69 /* obsolete ->sys_rt_sigprocmask */
84#define __NR_setreuid 70 /* ok */
85#define __NR_setregid 71 /* ok */
86#define __NR_sigsuspend 72 /* obsolete -> rt_sigsuspend */
87#define __NR_sigpending 73 /* obsolete -> sys_rt_sigpending */
88#define __NR_sethostname 74 /* ok */
89#define __NR_setrlimit 75 /* ok */
90#define __NR_getrlimit 76 /* ok Back compatible 2G limited rlimit */
91#define __NR_getrusage 77 /* ok */
92#define __NR_gettimeofday 78 /* ok */
93#define __NR_settimeofday 79 /* ok */
94#define __NR_getgroups 80 /* ok */
95#define __NR_setgroups 81 /* ok */
96#define __NR_select 82 /* obsolete -> sys_pselect7 */
97#define __NR_symlink 83 /* symlinkat */
98#define __NR_oldlstat 84 /* remove */
99#define __NR_readlink 85 /* obsolete -> sys_readlinkat */
100#define __NR_uselib 86 /* remove */
101#define __NR_swapon 87 /* ok */
102#define __NR_reboot 88 /* ok */
103#define __NR_readdir 89 /* remove ? */
104#define __NR_mmap 90 /* obsolete -> sys_mmap2 */
105#define __NR_munmap 91 /* ok - mmu and nommu */
106#define __NR_truncate 92 /* ok or truncate64 */
107#define __NR_ftruncate 93 /* ok or ftruncate64 */
108#define __NR_fchmod 94 /* ok */
109#define __NR_fchown 95 /* ok */
110#define __NR_getpriority 96 /* ok */
111#define __NR_setpriority 97 /* ok */
112#define __NR_profil 98 /* remove */
113#define __NR_statfs 99 /* ok or statfs64 */
114#define __NR_fstatfs 100 /* ok or fstatfs64 */
115#define __NR_ioperm 101 /* remove */
116#define __NR_socketcall 102 /* remove */
117#define __NR_syslog 103 /* ok */
118#define __NR_setitimer 104 /* ok */
119#define __NR_getitimer 105 /* ok */
120#define __NR_stat 106 /* remove */
121#define __NR_lstat 107 /* remove */
122#define __NR_fstat 108 /* remove */
123#define __NR_olduname 109 /* remove */
124#define __NR_iopl 110 /* remove */
125#define __NR_vhangup 111 /* ok */
126#define __NR_idle 112 /* remove */
127#define __NR_vm86old 113 /* remove */
128#define __NR_wait4 114 /* obsolete -> waitid */
129#define __NR_swapoff 115 /* ok */
130#define __NR_sysinfo 116 /* ok */
131#define __NR_ipc 117 /* remove - direct call */
132#define __NR_fsync 118 /* ok */
133#define __NR_sigreturn 119 /* obsolete -> sys_rt_sigreturn */
134#define __NR_clone 120 /* ok */
135#define __NR_setdomainname 121 /* ok */
136#define __NR_uname 122 /* remove */
137#define __NR_modify_ldt 123 /* remove */
138#define __NR_adjtimex 124 /* ok */
139#define __NR_mprotect 125 /* remove */
140#define __NR_sigprocmask 126 /* obsolete -> sys_rt_sigprocmask */
141#define __NR_create_module 127 /* remove */
142#define __NR_init_module 128 /* ok */
143#define __NR_delete_module 129 /* ok */
144#define __NR_get_kernel_syms 130 /* remove */
145#define __NR_quotactl 131 /* ok */
146#define __NR_getpgid 132 /* ok */
147#define __NR_fchdir 133 /* ok */
148#define __NR_bdflush 134 /* remove */
149#define __NR_sysfs 135 /* needed for busybox */
150#define __NR_personality 136 /* ok */
151#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
152#define __NR_setfsuid 138 /* ok */
153#define __NR_setfsgid 139 /* ok */
154#define __NR__llseek 140 /* remove only lseek */
155#define __NR_getdents 141 /* ok or getdents64 */
156#define __NR__newselect 142 /* remove */
157#define __NR_flock 143 /* ok */
158#define __NR_msync 144 /* remove */
159#define __NR_readv 145 /* ok */
160#define __NR_writev 146 /* ok */
161#define __NR_getsid 147 /* ok */
162#define __NR_fdatasync 148 /* ok */
163#define __NR__sysctl 149 /* remove */
164#define __NR_mlock 150 /* ok - nommu or mmu */
165#define __NR_munlock 151 /* ok - nommu or mmu */
166#define __NR_mlockall 152 /* ok - nommu or mmu */
167#define __NR_munlockall 153 /* ok - nommu or mmu */
168#define __NR_sched_setparam 154 /* ok */
169#define __NR_sched_getparam 155 /* ok */
170#define __NR_sched_setscheduler 156 /* ok */
171#define __NR_sched_getscheduler 157 /* ok */
172#define __NR_sched_yield 158 /* ok */
173#define __NR_sched_get_priority_max 159 /* ok */
174#define __NR_sched_get_priority_min 160 /* ok */
175#define __NR_sched_rr_get_interval 161 /* ok */
176#define __NR_nanosleep 162 /* ok */
177#define __NR_mremap 163 /* ok - nommu or mmu */
178#define __NR_setresuid 164 /* ok */
179#define __NR_getresuid 165 /* ok */
180#define __NR_vm86 166 /* remove */
181#define __NR_query_module 167 /* ok */
182#define __NR_poll 168 /* obsolete -> sys_ppoll */
183#define __NR_nfsservctl 169 /* ok */
184#define __NR_setresgid 170 /* ok */
185#define __NR_getresgid 171 /* ok */
186#define __NR_prctl 172 /* ok */
187#define __NR_rt_sigreturn 173 /* ok */
188#define __NR_rt_sigaction 174 /* ok */
189#define __NR_rt_sigprocmask 175 /* ok */
190#define __NR_rt_sigpending 176 /* ok */
191#define __NR_rt_sigtimedwait 177 /* ok */
192#define __NR_rt_sigqueueinfo 178 /* ok */
193#define __NR_rt_sigsuspend 179 /* ok */
194#define __NR_pread64 180 /* ok */
195#define __NR_pwrite64 181 /* ok */
196#define __NR_chown 182 /* obsolete -> fchownat */
197#define __NR_getcwd 183 /* ok */
198#define __NR_capget 184 /* ok */
199#define __NR_capset 185 /* ok */
200#define __NR_sigaltstack 186 /* remove */
201#define __NR_sendfile 187 /* ok -> exist 64bit version*/
202#define __NR_getpmsg 188 /* remove */
203/* remove - some people actually want streams */
204#define __NR_putpmsg 189
205/* for noMMU - group with clone -> maybe remove */
206#define __NR_vfork 190
207#define __NR_ugetrlimit 191 /* remove - SuS compliant getrlimit */
208#define __NR_mmap2 192 /* ok */
209#define __NR_truncate64 193 /* ok */
210#define __NR_ftruncate64 194 /* ok */
211#define __NR_stat64 195 /* remove _ARCH_WANT_STAT64 */
212#define __NR_lstat64 196 /* remove _ARCH_WANT_STAT64 */
213#define __NR_fstat64 197 /* remove _ARCH_WANT_STAT64 */
214#define __NR_lchown32 198 /* ok - without 32 */
215#define __NR_getuid32 199 /* ok - without 32 */
216#define __NR_getgid32 200 /* ok - without 32 */
217#define __NR_geteuid32 201 /* ok - without 32 */
218#define __NR_getegid32 202 /* ok - without 32 */
219#define __NR_setreuid32 203 /* ok - without 32 */
220#define __NR_setregid32 204 /* ok - without 32 */
221#define __NR_getgroups32 205 /* ok - without 32 */
222#define __NR_setgroups32 206 /* ok - without 32 */
223#define __NR_fchown32 207 /* ok - without 32 */
224#define __NR_setresuid32 208 /* ok - without 32 */
225#define __NR_getresuid32 209 /* ok - without 32 */
226#define __NR_setresgid32 210 /* ok - without 32 */
227#define __NR_getresgid32 211 /* ok - without 32 */
228#define __NR_chown32 212 /* ok - without 32 -obsolete -> fchownat */
229#define __NR_setuid32 213 /* ok - without 32 */
230#define __NR_setgid32 214 /* ok - without 32 */
231#define __NR_setfsuid32 215 /* ok - without 32 */
232#define __NR_setfsgid32 216 /* ok - without 32 */
233#define __NR_pivot_root 217 /* ok */
234#define __NR_mincore 218 /* ok */
235#define __NR_madvise 219 /* ok */
236#define __NR_getdents64 220 /* ok */
237#define __NR_fcntl64 221 /* ok */
238/* 223 is unused */
239#define __NR_gettid 224 /* ok */
240#define __NR_readahead 225 /* ok */
241#define __NR_setxattr 226 /* ok */
242#define __NR_lsetxattr 227 /* ok */
243#define __NR_fsetxattr 228 /* ok */
244#define __NR_getxattr 229 /* ok */
245#define __NR_lgetxattr 230 /* ok */
246#define __NR_fgetxattr 231 /* ok */
247#define __NR_listxattr 232 /* ok */
248#define __NR_llistxattr 233 /* ok */
249#define __NR_flistxattr 234 /* ok */
250#define __NR_removexattr 235 /* ok */
251#define __NR_lremovexattr 236 /* ok */
252#define __NR_fremovexattr 237 /* ok */
253#define __NR_tkill 238 /* ok */
254#define __NR_sendfile64 239 /* ok */
255#define __NR_futex 240 /* ok */
256#define __NR_sched_setaffinity 241 /* ok */
257#define __NR_sched_getaffinity 242 /* ok */
258#define __NR_set_thread_area 243 /* remove */
259#define __NR_get_thread_area 244 /* remove */
260#define __NR_io_setup 245 /* ok */
261#define __NR_io_destroy 246 /* ok */
262#define __NR_io_getevents 247 /* ok */
263#define __NR_io_submit 248 /* ok */
264#define __NR_io_cancel 249 /* ok */
265#define __NR_fadvise64 250 /* remove -> sys_fadvise64_64 */
266/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
267#define __NR_exit_group 252 /* ok */
268#define __NR_lookup_dcookie 253 /* ok */
269#define __NR_epoll_create 254 /* ok */
270#define __NR_epoll_ctl 255 /* ok */
271#define __NR_epoll_wait 256 /* obsolete -> sys_epoll_pwait */
272#define __NR_remap_file_pages 257 /* only for mmu */
273#define __NR_set_tid_address 258 /* ok */
274#define __NR_timer_create 259 /* ok */
275#define __NR_timer_settime (__NR_timer_create+1) /* 260 */ /* ok */
276#define __NR_timer_gettime (__NR_timer_create+2) /* 261 */ /* ok */
277#define __NR_timer_getoverrun (__NR_timer_create+3) /* 262 */ /* ok */
278#define __NR_timer_delete (__NR_timer_create+4) /* 263 */ /* ok */
279#define __NR_clock_settime (__NR_timer_create+5) /* 264 */ /* ok */
280#define __NR_clock_gettime (__NR_timer_create+6) /* 265 */ /* ok */
281#define __NR_clock_getres (__NR_timer_create+7) /* 266 */ /* ok */
282#define __NR_clock_nanosleep (__NR_timer_create+8) /* 267 */ /* ok */
283#define __NR_statfs64 268 /* ok */
284#define __NR_fstatfs64 269 /* ok */
285#define __NR_tgkill 270 /* ok */
286#define __NR_utimes 271 /* obsolete -> sys_futimesat */
287#define __NR_fadvise64_64 272 /* ok */
288#define __NR_vserver 273 /* ok */
289#define __NR_mbind 274 /* only for mmu */
290#define __NR_get_mempolicy 275 /* only for mmu */
291#define __NR_set_mempolicy 276 /* only for mmu */
292#define __NR_mq_open 277 /* ok */
293#define __NR_mq_unlink (__NR_mq_open+1) /* 278 */ /* ok */
294#define __NR_mq_timedsend (__NR_mq_open+2) /* 279 */ /* ok */
295#define __NR_mq_timedreceive (__NR_mq_open+3) /* 280 */ /* ok */
296#define __NR_mq_notify (__NR_mq_open+4) /* 281 */ /* ok */
297#define __NR_mq_getsetattr (__NR_mq_open+5) /* 282 */ /* ok */
298#define __NR_kexec_load 283 /* ok */
299#define __NR_waitid 284 /* ok */
300/* #define __NR_sys_setaltroot 285 */
301#define __NR_add_key 286 /* ok */
302#define __NR_request_key 287 /* ok */
303#define __NR_keyctl 288 /* ok */
304#define __NR_ioprio_set 289 /* ok */
305#define __NR_ioprio_get 290 /* ok */
306#define __NR_inotify_init 291 /* ok */
307#define __NR_inotify_add_watch 292 /* ok */
308#define __NR_inotify_rm_watch 293 /* ok */
309#define __NR_migrate_pages 294 /* mmu */
310#define __NR_openat 295 /* ok */
311#define __NR_mkdirat 296 /* ok */
312#define __NR_mknodat 297 /* ok */
313#define __NR_fchownat 298 /* ok */
314#define __NR_futimesat 299 /* obsolete -> sys_utimesat */
315#define __NR_fstatat64 300 /* stat64 */
316#define __NR_unlinkat 301 /* ok */
317#define __NR_renameat 302 /* ok */
318#define __NR_linkat 303 /* ok */
319#define __NR_symlinkat 304 /* ok */
320#define __NR_readlinkat 305 /* ok */
321#define __NR_fchmodat 306 /* ok */
322#define __NR_faccessat 307 /* ok */
323#define __NR_pselect6 308 /* obsolete -> sys_pselect7 */
324#define __NR_ppoll 309 /* ok */
325#define __NR_unshare 310 /* ok */
326#define __NR_set_robust_list 311 /* ok */
327#define __NR_get_robust_list 312 /* ok */
328#define __NR_splice 313 /* ok */
329#define __NR_sync_file_range 314 /* ok */
330#define __NR_tee 315 /* ok */
331#define __NR_vmsplice 316 /* ok */
332#define __NR_move_pages 317 /* mmu */
333#define __NR_getcpu 318 /* ok */
334#define __NR_epoll_pwait 319 /* ok */
335#define __NR_utimensat 320 /* ok */
336#define __NR_signalfd 321 /* ok */
337#define __NR_timerfd_create 322 /* ok */
338#define __NR_eventfd 323 /* ok */
339#define __NR_fallocate 324 /* ok */
340#define __NR_semtimedop 325 /* ok - semaphore group */
341#define __NR_timerfd_settime 326 /* ok */
342#define __NR_timerfd_gettime 327 /* ok */
343/* sysv ipc syscalls */
344#define __NR_semctl 328 /* ok */
345#define __NR_semget 329 /* ok */
346#define __NR_semop 330 /* ok */
347#define __NR_msgctl 331 /* ok */
348#define __NR_msgget 332 /* ok */
349#define __NR_msgrcv 333 /* ok */
350#define __NR_msgsnd 334 /* ok */
351#define __NR_shmat 335 /* ok */
352#define __NR_shmctl 336 /* ok */
353#define __NR_shmdt 337 /* ok */
354#define __NR_shmget 338 /* ok */
355
356
357#define __NR_signalfd4 339 /* new */
358#define __NR_eventfd2 340 /* new */
359#define __NR_epoll_create1 341 /* new */
360#define __NR_dup3 342 /* new */
361#define __NR_pipe2 343 /* new */
362#define __NR_inotify_init1 344 /* new */
363#define __NR_socket 345 /* new */
364#define __NR_socketpair 346 /* new */
365#define __NR_bind 347 /* new */
366#define __NR_listen 348 /* new */
367#define __NR_accept 349 /* new */
368#define __NR_connect 350 /* new */
369#define __NR_getsockname 351 /* new */
370#define __NR_getpeername 352 /* new */
371#define __NR_sendto 353 /* new */
372#define __NR_send 354 /* new */
373#define __NR_recvfrom 355 /* new */
374#define __NR_recv 356 /* new */
375#define __NR_setsockopt 357 /* new */
376#define __NR_getsockopt 358 /* new */
377#define __NR_shutdown 359 /* new */
378#define __NR_sendmsg 360 /* new */
379#define __NR_recvmsg 361 /* new */
380#define __NR_accept04 362 /* new */
381
382#define __NR_syscalls 363
383
384#ifdef __KERNEL__
385#ifndef __ASSEMBLY__
386
387#define __ARCH_WANT_IPC_PARSE_VERSION
388/* #define __ARCH_WANT_OLD_READDIR */
389/* #define __ARCH_WANT_OLD_STAT */
390#define __ARCH_WANT_STAT64
391#define __ARCH_WANT_SYS_ALARM
392#define __ARCH_WANT_SYS_GETHOSTNAME
393#define __ARCH_WANT_SYS_PAUSE
394#define __ARCH_WANT_SYS_SGETMASK
395#define __ARCH_WANT_SYS_SIGNAL
396#define __ARCH_WANT_SYS_TIME
397#define __ARCH_WANT_SYS_UTIME
398#define __ARCH_WANT_SYS_WAITPID
399#define __ARCH_WANT_SYS_SOCKETCALL
400#define __ARCH_WANT_SYS_FADVISE64
401#define __ARCH_WANT_SYS_GETPGRP
402#define __ARCH_WANT_SYS_LLSEEK
403#define __ARCH_WANT_SYS_NICE
404/* #define __ARCH_WANT_SYS_OLD_GETRLIMIT */
405#define __ARCH_WANT_SYS_OLDUMOUNT
406#define __ARCH_WANT_SYS_SIGPENDING
407#define __ARCH_WANT_SYS_SIGPROCMASK
408#define __ARCH_WANT_SYS_RT_SIGACTION
409/* #define __ARCH_WANT_SYS_RT_SIGSUSPEND */
410
411/*
412 * "Conditional" syscalls
413 *
414 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
415 * but it doesn't work on all toolchains, so we just do it by hand
416 */
417#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
418
419#endif /* __ASSEMBLY__ */
420#endif /* __KERNEL__ */
421#endif /* _ASM_MICROBLAZE_UNISTD_H */
diff --git a/arch/microblaze/include/asm/user.h b/arch/microblaze/include/asm/user.h
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/arch/microblaze/include/asm/user.h
diff --git a/arch/microblaze/include/asm/vga.h b/arch/microblaze/include/asm/vga.h
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/arch/microblaze/include/asm/vga.h
diff --git a/include/asm-mn10300/xor.h b/arch/microblaze/include/asm/xor.h
index c82eb12a5b18..c82eb12a5b18 100644
--- a/include/asm-mn10300/xor.h
+++ b/arch/microblaze/include/asm/xor.h
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
new file mode 100644
index 000000000000..da94bec4ecba
--- /dev/null
+++ b/arch/microblaze/kernel/Makefile
@@ -0,0 +1,19 @@
1#
2# Makefile
3#
4
5extra-y := head.o vmlinux.lds
6
7obj-y += exceptions.o \
8 hw_exception_handler.o init_task.o intc.o irq.o of_device.o \
9 of_platform.o process.o prom.o prom_parse.o ptrace.o \
10 setup.o signal.o sys_microblaze.o timer.o traps.o
11
12obj-y += cpu/
13
14obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
15obj-$(CONFIG_SELFMOD) += selfmod.o
16obj-$(CONFIG_HEART_BEAT) += heartbeat.o
17obj-$(CONFIG_MODULES) += microblaze_ksyms.o module.o
18
19obj-y += entry$(MMUEXT).o
diff --git a/arch/microblaze/kernel/asm-offsets.c b/arch/microblaze/kernel/asm-offsets.c
new file mode 100644
index 000000000000..38e1a2e8ad0c
--- /dev/null
+++ b/arch/microblaze/kernel/asm-offsets.c
@@ -0,0 +1,115 @@
1/*
2 * Copyright (C) 2007-2009 PetaLogix
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/init.h>
11#include <linux/stddef.h>
12#include <linux/sched.h>
13#include <linux/kernel_stat.h>
14#include <linux/ptrace.h>
15#include <linux/hardirq.h>
16#include <linux/thread_info.h>
17#include <linux/kbuild.h>
18
19int main(int argc, char *argv[])
20{
21 /* struct pt_regs */
22 DEFINE(PT_SIZE, sizeof(struct pt_regs));
23 DEFINE(PT_MSR, offsetof(struct pt_regs, msr));
24 DEFINE(PT_EAR, offsetof(struct pt_regs, ear));
25 DEFINE(PT_ESR, offsetof(struct pt_regs, esr));
26 DEFINE(PT_FSR, offsetof(struct pt_regs, fsr));
27 DEFINE(PT_PC, offsetof(struct pt_regs, pc));
28 DEFINE(PT_R0, offsetof(struct pt_regs, r0));
29 DEFINE(PT_R1, offsetof(struct pt_regs, r1));
30 DEFINE(PT_R2, offsetof(struct pt_regs, r2));
31 DEFINE(PT_R3, offsetof(struct pt_regs, r3));
32 DEFINE(PT_R4, offsetof(struct pt_regs, r4));
33 DEFINE(PT_R5, offsetof(struct pt_regs, r5));
34 DEFINE(PT_R6, offsetof(struct pt_regs, r6));
35 DEFINE(PT_R7, offsetof(struct pt_regs, r7));
36 DEFINE(PT_R8, offsetof(struct pt_regs, r8));
37 DEFINE(PT_R9, offsetof(struct pt_regs, r9));
38 DEFINE(PT_R10, offsetof(struct pt_regs, r10));
39 DEFINE(PT_R11, offsetof(struct pt_regs, r11));
40 DEFINE(PT_R12, offsetof(struct pt_regs, r12));
41 DEFINE(PT_R13, offsetof(struct pt_regs, r13));
42 DEFINE(PT_R14, offsetof(struct pt_regs, r14));
43 DEFINE(PT_R15, offsetof(struct pt_regs, r15));
44 DEFINE(PT_R16, offsetof(struct pt_regs, r16));
45 DEFINE(PT_R17, offsetof(struct pt_regs, r17));
46 DEFINE(PT_R18, offsetof(struct pt_regs, r18));
47 DEFINE(PT_R19, offsetof(struct pt_regs, r19));
48 DEFINE(PT_R20, offsetof(struct pt_regs, r20));
49 DEFINE(PT_R21, offsetof(struct pt_regs, r21));
50 DEFINE(PT_R22, offsetof(struct pt_regs, r22));
51 DEFINE(PT_R23, offsetof(struct pt_regs, r23));
52 DEFINE(PT_R24, offsetof(struct pt_regs, r24));
53 DEFINE(PT_R25, offsetof(struct pt_regs, r25));
54 DEFINE(PT_R26, offsetof(struct pt_regs, r26));
55 DEFINE(PT_R27, offsetof(struct pt_regs, r27));
56 DEFINE(PT_R28, offsetof(struct pt_regs, r28));
57 DEFINE(PT_R29, offsetof(struct pt_regs, r29));
58 DEFINE(PT_R30, offsetof(struct pt_regs, r30));
59 DEFINE(PT_R31, offsetof(struct pt_regs, r31));
60 DEFINE(PT_MODE, offsetof(struct pt_regs, kernel_mode));
61 BLANK();
62
63 /* Magic offsets for PTRACE PEEK/POKE etc */
64 DEFINE(PT_TEXT_ADDR, sizeof(struct pt_regs) + 1);
65 DEFINE(PT_TEXT_LEN, sizeof(struct pt_regs) + 2);
66 DEFINE(PT_DATA_ADDR, sizeof(struct pt_regs) + 3);
67 BLANK();
68
69 /* struct task_struct */
70 DEFINE(TS_THREAD_INFO, offsetof(struct task_struct, stack));
71
72 /* struct thread_info */
73 DEFINE(TI_TASK, offsetof(struct thread_info, task));
74 DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
75 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
76 DEFINE(TI_STATUS, offsetof(struct thread_info, status));
77 DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
78 DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
79 DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit));
80 DEFINE(TI_RESTART_BLOCK, offsetof(struct thread_info, restart_block));
81 DEFINE(TI_CPU_CONTEXT, offsetof(struct thread_info, cpu_context));
82 BLANK();
83
84 /* struct cpu_context */
85 DEFINE(CC_R1, offsetof(struct cpu_context, r1)); /* r1 */
86 DEFINE(CC_R2, offsetof(struct cpu_context, r2));
87 /* dedicated registers */
88 DEFINE(CC_R13, offsetof(struct cpu_context, r13));
89 DEFINE(CC_R14, offsetof(struct cpu_context, r14));
90 DEFINE(CC_R15, offsetof(struct cpu_context, r15));
91 DEFINE(CC_R16, offsetof(struct cpu_context, r16));
92 DEFINE(CC_R17, offsetof(struct cpu_context, r17));
93 DEFINE(CC_R18, offsetof(struct cpu_context, r18));
94 /* non-volatile registers */
95 DEFINE(CC_R19, offsetof(struct cpu_context, r19));
96 DEFINE(CC_R20, offsetof(struct cpu_context, r20));
97 DEFINE(CC_R21, offsetof(struct cpu_context, r21));
98 DEFINE(CC_R22, offsetof(struct cpu_context, r22));
99 DEFINE(CC_R23, offsetof(struct cpu_context, r23));
100 DEFINE(CC_R24, offsetof(struct cpu_context, r24));
101 DEFINE(CC_R25, offsetof(struct cpu_context, r25));
102 DEFINE(CC_R26, offsetof(struct cpu_context, r26));
103 DEFINE(CC_R27, offsetof(struct cpu_context, r27));
104 DEFINE(CC_R28, offsetof(struct cpu_context, r28));
105 DEFINE(CC_R29, offsetof(struct cpu_context, r29));
106 DEFINE(CC_R30, offsetof(struct cpu_context, r30));
107 /* special purpose registers */
108 DEFINE(CC_MSR, offsetof(struct cpu_context, msr));
109 DEFINE(CC_EAR, offsetof(struct cpu_context, ear));
110 DEFINE(CC_ESR, offsetof(struct cpu_context, esr));
111 DEFINE(CC_FSR, offsetof(struct cpu_context, fsr));
112 BLANK();
113
114 return 0;
115}
diff --git a/arch/microblaze/kernel/cpu/Makefile b/arch/microblaze/kernel/cpu/Makefile
new file mode 100644
index 000000000000..20646e549271
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/Makefile
@@ -0,0 +1,8 @@
1#
2# Build the appropriate CPU version support
3#
4
5EXTRA_CFLAGS += -DCPU_MAJOR=$(CPU_MAJOR) -DCPU_MINOR=$(CPU_MINOR) \
6 -DCPU_REV=$(CPU_REV)
7
8obj-y += cache.o cpuinfo.o cpuinfo-pvr-full.o cpuinfo-static.o mb.o pvr.o
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c
new file mode 100644
index 000000000000..be9fecca4f91
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cache.c
@@ -0,0 +1,258 @@
1/*
2 * Cache control for MicroBlaze cache memories
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
11 */
12
13#include <asm/cacheflush.h>
14#include <linux/cache.h>
15#include <asm/cpuinfo.h>
16
17/* Exported functions */
18
19void _enable_icache(void)
20{
21 if (cpuinfo.use_icache) {
22#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
23 __asm__ __volatile__ (" \
24 msrset r0, %0; \
25 nop; " \
26 : \
27 : "i" (MSR_ICE) \
28 : "memory");
29#else
30 __asm__ __volatile__ (" \
31 mfs r12, rmsr; \
32 nop; \
33 ori r12, r12, %0; \
34 mts rmsr, r12; \
35 nop; " \
36 : \
37 : "i" (MSR_ICE) \
38 : "memory", "r12");
39#endif
40 }
41}
42
43void _disable_icache(void)
44{
45 if (cpuinfo.use_icache) {
46#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
47 __asm__ __volatile__ (" \
48 msrclr r0, %0; \
49 nop; " \
50 : \
51 : "i" (MSR_ICE) \
52 : "memory");
53#else
54 __asm__ __volatile__ (" \
55 mfs r12, rmsr; \
56 nop; \
57 andi r12, r12, ~%0; \
58 mts rmsr, r12; \
59 nop; " \
60 : \
61 : "i" (MSR_ICE) \
62 : "memory", "r12");
63#endif
64 }
65}
66
67void _invalidate_icache(unsigned int addr)
68{
69 if (cpuinfo.use_icache) {
70 __asm__ __volatile__ (" \
71 wic %0, r0" \
72 : \
73 : "r" (addr));
74 }
75}
76
77void _enable_dcache(void)
78{
79 if (cpuinfo.use_dcache) {
80#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
81 __asm__ __volatile__ (" \
82 msrset r0, %0; \
83 nop; " \
84 : \
85 : "i" (MSR_DCE) \
86 : "memory");
87#else
88 __asm__ __volatile__ (" \
89 mfs r12, rmsr; \
90 nop; \
91 ori r12, r12, %0; \
92 mts rmsr, r12; \
93 nop; " \
94 : \
95 : "i" (MSR_DCE) \
96 : "memory", "r12");
97#endif
98 }
99}
100
101void _disable_dcache(void)
102{
103 if (cpuinfo.use_dcache) {
104#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
105 __asm__ __volatile__ (" \
106 msrclr r0, %0; \
107 nop; " \
108 : \
109 : "i" (MSR_DCE) \
110 : "memory");
111#else
112 __asm__ __volatile__ (" \
113 mfs r12, rmsr; \
114 nop; \
115 andi r12, r12, ~%0; \
116 mts rmsr, r12; \
117 nop; " \
118 : \
119 : "i" (MSR_DCE) \
120 : "memory", "r12");
121#endif
122 }
123}
124
125void _invalidate_dcache(unsigned int addr)
126{
127 if (cpuinfo.use_dcache)
128 __asm__ __volatile__ (" \
129 wdc %0, r0" \
130 : \
131 : "r" (addr));
132}
133
134void __invalidate_icache_all(void)
135{
136 unsigned int i;
137 unsigned flags;
138
139 if (cpuinfo.use_icache) {
140 local_irq_save(flags);
141 __disable_icache();
142
143 /* Just loop through cache size and invalidate, no need to add
144 CACHE_BASE address */
145 for (i = 0; i < cpuinfo.icache_size;
146 i += cpuinfo.icache_line)
147 __invalidate_icache(i);
148
149 __enable_icache();
150 local_irq_restore(flags);
151 }
152}
153
154void __invalidate_icache_range(unsigned long start, unsigned long end)
155{
156 unsigned int i;
157 unsigned flags;
158 unsigned int align;
159
160 if (cpuinfo.use_icache) {
161 /*
162 * No need to cover entire cache range,
163 * just cover cache footprint
164 */
165 end = min(start + cpuinfo.icache_size, end);
166 align = ~(cpuinfo.icache_line - 1);
167 start &= align; /* Make sure we are aligned */
168 /* Push end up to the next cache line */
169 end = ((end & align) + cpuinfo.icache_line);
170
171 local_irq_save(flags);
172 __disable_icache();
173
174 for (i = start; i < end; i += cpuinfo.icache_line)
175 __invalidate_icache(i);
176
177 __enable_icache();
178 local_irq_restore(flags);
179 }
180}
181
182void __invalidate_icache_page(struct vm_area_struct *vma, struct page *page)
183{
184 __invalidate_icache_all();
185}
186
187void __invalidate_icache_user_range(struct vm_area_struct *vma,
188 struct page *page, unsigned long adr,
189 int len)
190{
191 __invalidate_icache_all();
192}
193
194void __invalidate_cache_sigtramp(unsigned long addr)
195{
196 __invalidate_icache_range(addr, addr + 8);
197}
198
199void __invalidate_dcache_all(void)
200{
201 unsigned int i;
202 unsigned flags;
203
204 if (cpuinfo.use_dcache) {
205 local_irq_save(flags);
206 __disable_dcache();
207
208 /*
209 * Just loop through cache size and invalidate,
210 * no need to add CACHE_BASE address
211 */
212 for (i = 0; i < cpuinfo.dcache_size;
213 i += cpuinfo.dcache_line)
214 __invalidate_dcache(i);
215
216 __enable_dcache();
217 local_irq_restore(flags);
218 }
219}
220
221void __invalidate_dcache_range(unsigned long start, unsigned long end)
222{
223 unsigned int i;
224 unsigned flags;
225 unsigned int align;
226
227 if (cpuinfo.use_dcache) {
228 /*
229 * No need to cover entire cache range,
230 * just cover cache footprint
231 */
232 end = min(start + cpuinfo.dcache_size, end);
233 align = ~(cpuinfo.dcache_line - 1);
234 start &= align; /* Make sure we are aligned */
235 /* Push end up to the next cache line */
236 end = ((end & align) + cpuinfo.dcache_line);
237 local_irq_save(flags);
238 __disable_dcache();
239
240 for (i = start; i < end; i += cpuinfo.dcache_line)
241 __invalidate_dcache(i);
242
243 __enable_dcache();
244 local_irq_restore(flags);
245 }
246}
247
248void __invalidate_dcache_page(struct vm_area_struct *vma, struct page *page)
249{
250 __invalidate_dcache_all();
251}
252
253void __invalidate_dcache_user_range(struct vm_area_struct *vma,
254 struct page *page, unsigned long adr,
255 int len)
256{
257 __invalidate_dcache_all();
258}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c b/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c
new file mode 100644
index 000000000000..cf7424a6bb87
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c
@@ -0,0 +1,101 @@
1/*
2 * Support for MicroBlaze PVR (processor version register)
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/string.h>
15#include <asm/pvr.h>
16#include <asm/cpuinfo.h>
17
18/*
19 * Helper macro to map between fields in our struct cpuinfo, and
20 * the PVR macros in pvr.h.
21 */
22
23#define CI(c, p) { ci->c = PVR_##p(pvr); }
24#define err_printk(x) \
25 early_printk("ERROR: Microblaze " x " - different for PVR and DTS\n");
26
27void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu)
28{
29 struct pvr_s pvr;
30 int temp; /* for saving temp value */
31 get_pvr(&pvr);
32
33 temp = PVR_USE_BARREL(pvr) | PVR_USE_MSR_INSTR(pvr) |\
34 PVR_USE_PCMP_INSTR(pvr) | PVR_USE_DIV(pvr);
35 if (ci->use_instr != temp)
36 err_printk("BARREL, MSR, PCMP or DIV");
37 ci->use_instr = temp;
38
39 temp = PVR_USE_HW_MUL(pvr) | PVR_USE_MUL64(pvr);
40 if (ci->use_mult != temp)
41 err_printk("HW_MUL");
42 ci->use_mult = temp;
43
44 temp = PVR_USE_FPU(pvr) | PVR_USE_FPU2(pvr);
45 if (ci->use_fpu != temp)
46 err_printk("HW_FPU");
47 ci->use_fpu = temp;
48
49 ci->use_exc = PVR_OPCODE_0x0_ILLEGAL(pvr) |\
50 PVR_UNALIGNED_EXCEPTION(pvr) |\
51 PVR_ILL_OPCODE_EXCEPTION(pvr) |\
52 PVR_IOPB_BUS_EXCEPTION(pvr) |\
53 PVR_DOPB_BUS_EXCEPTION(pvr) |\
54 PVR_DIV_ZERO_EXCEPTION(pvr) |\
55 PVR_FPU_EXCEPTION(pvr) |\
56 PVR_FSL_EXCEPTION(pvr);
57
58 CI(pvr_user1, USER1);
59 CI(pvr_user2, USER2);
60
61 CI(mmu, USE_MMU);
62
63 CI(ver_code, VERSION);
64
65 CI(use_icache, USE_ICACHE);
66 CI(icache_tagbits, ICACHE_ADDR_TAG_BITS);
67 CI(icache_write, ICACHE_ALLOW_WR);
68 CI(icache_line, ICACHE_LINE_LEN);
69 CI(icache_size, ICACHE_BYTE_SIZE);
70 CI(icache_base, ICACHE_BASEADDR);
71 CI(icache_high, ICACHE_HIGHADDR);
72
73 CI(use_dcache, USE_DCACHE);
74 CI(dcache_tagbits, DCACHE_ADDR_TAG_BITS);
75 CI(dcache_write, DCACHE_ALLOW_WR);
76 CI(dcache_line, DCACHE_LINE_LEN);
77 CI(dcache_size, DCACHE_BYTE_SIZE);
78 CI(dcache_base, DCACHE_BASEADDR);
79 CI(dcache_high, DCACHE_HIGHADDR);
80
81 CI(use_dopb, D_OPB);
82 CI(use_iopb, I_OPB);
83 CI(use_dlmb, D_LMB);
84 CI(use_ilmb, I_LMB);
85 CI(num_fsl, FSL_LINKS);
86
87 CI(irq_edge, INTERRUPT_IS_EDGE);
88 CI(irq_positive, EDGE_IS_POSITIVE);
89
90 CI(area_optimised, AREA_OPTIMISED);
91
92 CI(hw_debug, DEBUG_ENABLED);
93 CI(num_pc_brk, NUMBER_OF_PC_BRK);
94 CI(num_rd_brk, NUMBER_OF_RD_ADDR_BRK);
95 CI(num_wr_brk, NUMBER_OF_WR_ADDR_BRK);
96
97 CI(fpga_family_code, TARGET_FAMILY);
98
99 /* take timebase-frequency from DTS */
100 ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
101}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo-static.c b/arch/microblaze/kernel/cpu/cpuinfo-static.c
new file mode 100644
index 000000000000..cfe44effdb77
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo-static.c
@@ -0,0 +1,144 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/string.h>
14#include <asm/cpuinfo.h>
15#include <asm/pvr.h>
16
17const static char family_string[] = CONFIG_XILINX_MICROBLAZE0_FAMILY;
18const static char cpu_ver_string[] = CONFIG_XILINX_MICROBLAZE0_HW_VER;
19
20#define err_printk(x) \
21 early_printk("ERROR: Microblaze " x "- different for kernel and DTS\n");
22
23void __init set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu)
24{
25 int i = 0;
26
27 ci->use_instr =
28 (fcpu(cpu, "xlnx,use-barrel") ? PVR0_USE_BARREL_MASK : 0) |
29 (fcpu(cpu, "xlnx,use-msr-instr") ? PVR2_USE_MSR_INSTR : 0) |
30 (fcpu(cpu, "xlnx,use-pcmp-instr") ? PVR2_USE_PCMP_INSTR : 0) |
31 (fcpu(cpu, "xlnx,use-div") ? PVR0_USE_DIV_MASK : 0);
32 if (CONFIG_XILINX_MICROBLAZE0_USE_BARREL)
33 i |= PVR0_USE_BARREL_MASK;
34 if (CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR)
35 i |= PVR2_USE_MSR_INSTR;
36 if (CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR)
37 i |= PVR2_USE_PCMP_INSTR;
38 if (CONFIG_XILINX_MICROBLAZE0_USE_DIV)
39 i |= PVR0_USE_DIV_MASK;
40 if (ci->use_instr != i)
41 err_printk("BARREL, MSR, PCMP or DIV");
42
43 ci->use_mult = fcpu(cpu, "xlnx,use-hw-mul");
44 if (ci->use_mult != CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)
45 err_printk("HW_MUL");
46 ci->use_mult =
47 (ci->use_mult > 1 ?
48 (PVR2_USE_MUL64_MASK | PVR0_USE_HW_MUL_MASK) :
49 (ci->use_mult == 1 ? PVR0_USE_HW_MUL_MASK : 0));
50
51 ci->use_fpu = fcpu(cpu, "xlnx,use-fpu");
52 if (ci->use_fpu != CONFIG_XILINX_MICROBLAZE0_USE_FPU)
53 err_printk("HW_FPU");
54 ci->use_fpu = (ci->use_fpu > 1 ?
55 (PVR2_USE_FPU2_MASK | PVR0_USE_FPU_MASK) :
56 (ci->use_fpu == 1 ? PVR0_USE_FPU_MASK : 0));
57
58 ci->use_exc =
59 (fcpu(cpu, "xlnx,unaligned-exceptions") ?
60 PVR2_UNALIGNED_EXC_MASK : 0) |
61 (fcpu(cpu, "xlnx,ill-opcode-exception") ?
62 PVR2_ILL_OPCODE_EXC_MASK : 0) |
63 (fcpu(cpu, "xlnx,iopb-bus-exception") ?
64 PVR2_IOPB_BUS_EXC_MASK : 0) |
65 (fcpu(cpu, "xlnx,dopb-bus-exception") ?
66 PVR2_DOPB_BUS_EXC_MASK : 0) |
67 (fcpu(cpu, "xlnx,div-zero-exception") ?
68 PVR2_DIV_ZERO_EXC_MASK : 0) |
69 (fcpu(cpu, "xlnx,fpu-exception") ? PVR2_FPU_EXC_MASK : 0) |
70 (fcpu(cpu, "xlnx,fsl-exception") ? PVR2_USE_EXTEND_FSL : 0);
71
72 ci->use_icache = fcpu(cpu, "xlnx,use-icache");
73 ci->icache_tagbits = fcpu(cpu, "xlnx,addr-tag-bits");
74 ci->icache_write = fcpu(cpu, "xlnx,allow-icache-wr");
75 ci->icache_line = fcpu(cpu, "xlnx,icache-line-len") << 2;
76 if (!ci->icache_line) {
77 if (fcpu(cpu, "xlnx,icache-use-fsl"))
78 ci->icache_line = 4 << 2;
79 else
80 ci->icache_line = 1 << 2;
81 }
82 ci->icache_size = fcpu(cpu, "i-cache-size");
83 ci->icache_base = fcpu(cpu, "i-cache-baseaddr");
84 ci->icache_high = fcpu(cpu, "i-cache-highaddr");
85
86 ci->use_dcache = fcpu(cpu, "xlnx,use-dcache");
87 ci->dcache_tagbits = fcpu(cpu, "xlnx,dcache-addr-tag");
88 ci->dcache_write = fcpu(cpu, "xlnx,allow-dcache-wr");
89 ci->dcache_line = fcpu(cpu, "xlnx,dcache-line-len") << 2;
90 if (!ci->dcache_line) {
91 if (fcpu(cpu, "xlnx,dcache-use-fsl"))
92 ci->dcache_line = 4 << 2;
93 else
94 ci->dcache_line = 1 << 2;
95 }
96 ci->dcache_size = fcpu(cpu, "d-cache-size");
97 ci->dcache_base = fcpu(cpu, "d-cache-baseaddr");
98 ci->dcache_high = fcpu(cpu, "d-cache-highaddr");
99
100 ci->use_dopb = fcpu(cpu, "xlnx,d-opb");
101 ci->use_iopb = fcpu(cpu, "xlnx,i-opb");
102 ci->use_dlmb = fcpu(cpu, "xlnx,d-lmb");
103 ci->use_ilmb = fcpu(cpu, "xlnx,i-lmb");
104
105 ci->num_fsl = fcpu(cpu, "xlnx,fsl-links");
106 ci->irq_edge = fcpu(cpu, "xlnx,interrupt-is-edge");
107 ci->irq_positive = fcpu(cpu, "xlnx,edge-is-positive");
108 ci->area_optimised = 0;
109
110 ci->hw_debug = fcpu(cpu, "xlnx,debug-enabled");
111 ci->num_pc_brk = fcpu(cpu, "xlnx,number-of-pc-brk");
112 ci->num_rd_brk = fcpu(cpu, "xlnx,number-of-rd-addr-brk");
113 ci->num_wr_brk = fcpu(cpu, "xlnx,number-of-wr-addr-brk");
114
115 ci->cpu_clock_freq = fcpu(cpu, "timebase-frequency");
116
117 ci->pvr_user1 = fcpu(cpu, "xlnx,pvr-user1");
118 ci->pvr_user2 = fcpu(cpu, "xlnx,pvr-user2");
119
120 ci->mmu = fcpu(cpu, "xlnx,use-mmu");
121
122 ci->ver_code = 0;
123 ci->fpga_family_code = 0;
124
125 /* Do various fixups based on CPU version and FPGA family strings */
126
127 /* Resolved the CPU version code */
128 for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
129 if (strcmp(cpu_ver_lookup[i].s, cpu_ver_string) == 0)
130 ci->ver_code = cpu_ver_lookup[i].k;
131 }
132
133 /* Resolved the fpga family code */
134 for (i = 0; family_string_lookup[i].s != NULL; i++) {
135 if (strcmp(family_string_lookup[i].s, family_string) == 0)
136 ci->fpga_family_code = family_string_lookup[i].k;
137 }
138
139 /* FIXME - mb3 and spartan2 do not exist in PVR */
140 /* This is mb3 and on a non Spartan2 */
141 if (ci->ver_code == 0x20 && ci->fpga_family_code != 0xf0)
142 /* Hardware Multiplier in use */
143 ci->use_mult = 1;
144}
diff --git a/arch/microblaze/kernel/cpu/cpuinfo.c b/arch/microblaze/kernel/cpu/cpuinfo.c
new file mode 100644
index 000000000000..4a740dfcf6da
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/cpuinfo.c
@@ -0,0 +1,86 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/slab.h>
13#include <asm/cpuinfo.h>
14#include <asm/pvr.h>
15
16const struct cpu_ver_key cpu_ver_lookup[] = {
17 /* These key value are as per MBV field in PVR0 */
18 {"5.00.a", 0x01},
19 {"5.00.b", 0x02},
20 {"5.00.c", 0x03},
21 {"6.00.a", 0x04},
22 {"6.00.b", 0x06},
23 {"7.00.a", 0x05},
24 {"7.00.b", 0x07},
25 {"7.10.a", 0x08},
26 {"7.10.b", 0x09},
27 {"7.10.c", 0x0a},
28 {"7.10.d", 0x0b},
29 /* FIXME There is no keycode defined in MBV for these versions */
30 {"2.10.a", 0x10},
31 {"3.00.a", 0x20},
32 {"4.00.a", 0x30},
33 {"4.00.b", 0x40},
34 {NULL, 0},
35};
36
37/*
38 * FIXME Not sure if the actual key is defined by Xilinx in the PVR
39 */
40const struct family_string_key family_string_lookup[] = {
41 {"virtex2", 0x4},
42 {"virtex2pro", 0x5},
43 {"spartan3", 0x6},
44 {"virtex4", 0x7},
45 {"virtex5", 0x8},
46 {"spartan3e", 0x9},
47 {"spartan3a", 0xa},
48 {"spartan3an", 0xb},
49 {"spartan3adsp", 0xc},
50 /* FIXME There is no key code defined for spartan2 */
51 {"spartan2", 0xf0},
52 {NULL, 0},
53};
54
55struct cpuinfo cpuinfo;
56
57void __init setup_cpuinfo(void)
58{
59 struct device_node *cpu = NULL;
60
61 cpu = (struct device_node *) of_find_node_by_type(NULL, "cpu");
62 if (!cpu)
63 printk(KERN_ERR "You don't have cpu!!!\n");
64
65 printk(KERN_INFO "%s: initialising\n", __func__);
66
67 switch (cpu_has_pvr()) {
68 case 0:
69 printk(KERN_WARNING
70 "%s: No PVR support. Using static CPU info from FDT\n",
71 __func__);
72 set_cpuinfo_static(&cpuinfo, cpu);
73 break;
74/* FIXME I found weird behavior with MB 7.00.a/b
75 * please do not use FULL PVR with MMU */
76 case 1:
77 printk(KERN_INFO "%s: Using full CPU PVR support\n",
78 __func__);
79 set_cpuinfo_static(&cpuinfo, cpu);
80 set_cpuinfo_pvr_full(&cpuinfo, cpu);
81 break;
82 default:
83 printk(KERN_WARNING "%s: Unsupported PVR setting\n", __func__);
84 set_cpuinfo_static(&cpuinfo, cpu);
85 }
86}
diff --git a/arch/microblaze/kernel/cpu/mb.c b/arch/microblaze/kernel/cpu/mb.c
new file mode 100644
index 000000000000..3b6212bdc8dc
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/mb.c
@@ -0,0 +1,148 @@
1/*
2 * CPU-version specific code
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2006-2009 PetaLogix
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details.
10 */
11
12#include <linux/init.h>
13#include <linux/string.h>
14#include <linux/seq_file.h>
15#include <linux/cpu.h>
16#include <linux/initrd.h>
17
18#include <linux/bug.h>
19#include <asm/cpuinfo.h>
20#include <linux/delay.h>
21#include <linux/io.h>
22#include <asm/page.h>
23#include <linux/param.h>
24#include <asm/pvr.h>
25#include <asm/sections.h>
26#include <asm/setup.h>
27
28static int show_cpuinfo(struct seq_file *m, void *v)
29{
30 int count = 0;
31 char *fpga_family = "Unknown";
32 char *cpu_ver = "Unknown";
33 int i;
34
35 /* Denormalised to get the fpga family string */
36 for (i = 0; family_string_lookup[i].s != NULL; i++) {
37 if (cpuinfo.fpga_family_code == family_string_lookup[i].k) {
38 fpga_family = (char *)family_string_lookup[i].s;
39 break;
40 }
41 }
42
43 /* Denormalised to get the hw version string */
44 for (i = 0; cpu_ver_lookup[i].s != NULL; i++) {
45 if (cpuinfo.ver_code == cpu_ver_lookup[i].k) {
46 cpu_ver = (char *)cpu_ver_lookup[i].s;
47 break;
48 }
49 }
50
51 count = seq_printf(m,
52 "CPU-Family: MicroBlaze\n"
53 "FPGA-Arch: %s\n"
54 "CPU-Ver: %s\n"
55 "CPU-MHz: %d.%02d\n"
56 "BogoMips: %lu.%02lu\n",
57 fpga_family,
58 cpu_ver,
59 cpuinfo.cpu_clock_freq /
60 1000000,
61 cpuinfo.cpu_clock_freq %
62 1000000,
63 loops_per_jiffy / (500000 / HZ),
64 (loops_per_jiffy / (5000 / HZ)) % 100);
65
66 count += seq_printf(m,
67 "HW:\n Shift:\t\t%s\n"
68 " MSR:\t\t%s\n"
69 " PCMP:\t\t%s\n"
70 " DIV:\t\t%s\n",
71 (cpuinfo.use_instr & PVR0_USE_BARREL_MASK) ? "yes" : "no",
72 (cpuinfo.use_instr & PVR2_USE_MSR_INSTR) ? "yes" : "no",
73 (cpuinfo.use_instr & PVR2_USE_PCMP_INSTR) ? "yes" : "no",
74 (cpuinfo.use_instr & PVR0_USE_DIV_MASK) ? "yes" : "no");
75
76 count += seq_printf(m,
77 " MMU:\t\t%x\n",
78 cpuinfo.mmu);
79
80 count += seq_printf(m,
81 " MUL:\t\t%s\n"
82 " FPU:\t\t%s\n",
83 (cpuinfo.use_mult & PVR2_USE_MUL64_MASK) ? "v2" :
84 (cpuinfo.use_mult & PVR0_USE_HW_MUL_MASK) ? "v1" : "no",
85 (cpuinfo.use_fpu & PVR2_USE_FPU2_MASK) ? "v2" :
86 (cpuinfo.use_fpu & PVR0_USE_FPU_MASK) ? "v1" : "no");
87
88 count += seq_printf(m,
89 " Exc:\t\t%s%s%s%s%s%s%s%s\n",
90 (cpuinfo.use_exc & PVR2_OPCODE_0x0_ILL_MASK) ? "op0x0 " : "",
91 (cpuinfo.use_exc & PVR2_UNALIGNED_EXC_MASK) ? "unal " : "",
92 (cpuinfo.use_exc & PVR2_ILL_OPCODE_EXC_MASK) ? "ill " : "",
93 (cpuinfo.use_exc & PVR2_IOPB_BUS_EXC_MASK) ? "iopb " : "",
94 (cpuinfo.use_exc & PVR2_DOPB_BUS_EXC_MASK) ? "dopb " : "",
95 (cpuinfo.use_exc & PVR2_DIV_ZERO_EXC_MASK) ? "zero " : "",
96 (cpuinfo.use_exc & PVR2_FPU_EXC_MASK) ? "fpu " : "",
97 (cpuinfo.use_exc & PVR2_USE_FSL_EXC) ? "fsl " : "");
98
99 if (cpuinfo.use_icache)
100 count += seq_printf(m,
101 "Icache:\t\t%ukB\n",
102 cpuinfo.icache_size >> 10);
103 else
104 count += seq_printf(m, "Icache:\t\tno\n");
105
106 if (cpuinfo.use_dcache)
107 count += seq_printf(m,
108 "Dcache:\t\t%ukB\n",
109 cpuinfo.dcache_size >> 10);
110 else
111 count += seq_printf(m, "Dcache:\t\tno\n");
112
113 count += seq_printf(m,
114 "HW-Debug:\t%s\n",
115 cpuinfo.hw_debug ? "yes" : "no");
116
117 count += seq_printf(m,
118 "PVR-USR1:\t%x\n"
119 "PVR-USR2:\t%x\n",
120 cpuinfo.pvr_user1,
121 cpuinfo.pvr_user2);
122
123 return 0;
124}
125
126static void *c_start(struct seq_file *m, loff_t *pos)
127{
128 int i = *pos;
129
130 return i < NR_CPUS ? (void *) (i + 1) : NULL;
131}
132
133static void *c_next(struct seq_file *m, void *v, loff_t *pos)
134{
135 ++*pos;
136 return c_start(m, pos);
137}
138
139static void c_stop(struct seq_file *m, void *v)
140{
141}
142
143const struct seq_operations cpuinfo_op = {
144 .start = c_start,
145 .next = c_next,
146 .stop = c_stop,
147 .show = show_cpuinfo,
148};
diff --git a/arch/microblaze/kernel/cpu/pvr.c b/arch/microblaze/kernel/cpu/pvr.c
new file mode 100644
index 000000000000..c9a4340ddd53
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/pvr.c
@@ -0,0 +1,81 @@
1/*
2 * Support for MicroBlaze PVR (processor version register)
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/kernel.h>
14#include <linux/compiler.h>
15#include <asm/system.h>
16#include <asm/exceptions.h>
17#include <asm/pvr.h>
18
19/*
20 * Until we get an assembler that knows about the pvr registers,
21 * this horrible cruft will have to do.
22 * That hardcoded opcode is mfs r3, rpvrNN
23 */
24
25#define get_single_pvr(pvrid, val) \
26{ \
27 register unsigned tmp __asm__("r3"); \
28 tmp = 0x0; /* Prevent warning about unused */ \
29 __asm__ __volatile__ ( \
30 ".byte 0x94,0x60,0xa0, " #pvrid "\n\t" \
31 : "=r" (tmp) : : "memory"); \
32 val = tmp; \
33}
34
35/*
36 * Does the CPU support the PVR register?
37 * return value:
38 * 0: no PVR
39 * 1: simple PVR
40 * 2: full PVR
41 *
42 * This must work on all CPU versions, including those before the
43 * PVR was even an option.
44 */
45
46int cpu_has_pvr(void)
47{
48 unsigned flags;
49 unsigned pvr0;
50
51 local_save_flags(flags);
52
53 /* PVR bit in MSR tells us if there is any support */
54 if (!(flags & PVR_MSR_BIT))
55 return 0;
56
57 get_single_pvr(0x00, pvr0);
58 pr_debug("%s: pvr0 is 0x%08x\n", __func__, pvr0);
59
60 if (pvr0 & PVR0_PVR_FULL_MASK)
61 return 1;
62
63 /* for partial PVR use static cpuinfo */
64 return 2;
65}
66
67void get_pvr(struct pvr_s *p)
68{
69 get_single_pvr(0, p->pvr[0]);
70 get_single_pvr(1, p->pvr[1]);
71 get_single_pvr(2, p->pvr[2]);
72 get_single_pvr(3, p->pvr[3]);
73 get_single_pvr(4, p->pvr[4]);
74 get_single_pvr(5, p->pvr[5]);
75 get_single_pvr(6, p->pvr[6]);
76 get_single_pvr(7, p->pvr[7]);
77 get_single_pvr(8, p->pvr[8]);
78 get_single_pvr(9, p->pvr[9]);
79 get_single_pvr(10, p->pvr[10]);
80 get_single_pvr(11, p->pvr[11]);
81}
diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
new file mode 100644
index 000000000000..62cc78993f44
--- /dev/null
+++ b/arch/microblaze/kernel/early_printk.c
@@ -0,0 +1,107 @@
1/*
2 * Early printk support for Microblaze.
3 *
4 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2003-2006 Yasushi SHOJI <yashi@atmark-techno.com>
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12
13#include <linux/console.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/string.h>
17#include <linux/tty.h>
18#include <linux/io.h>
19#include <asm/processor.h>
20#include <linux/fcntl.h>
21#include <asm/setup.h>
22#include <asm/prom.h>
23
24static u32 early_console_initialized;
25static u32 base_addr;
26
27static void early_printk_putc(char c)
28{
29 /*
30 * Limit how many times we'll spin waiting for TX FIFO status.
31 * This will prevent lockups if the base address is incorrectly
32 * set, or any other issue on the UARTLITE.
33 * This limit is pretty arbitrary, unless we are at about 10 baud
34 * we'll never timeout on a working UART.
35 */
36
37 unsigned retries = 10000;
38 /* read status bit - 0x8 offset */
39 while (retries-- && (in_be32(base_addr + 8) & (1 << 3)))
40 ;
41
42 /* Only attempt the iowrite if we didn't timeout */
43 /* write to TX_FIFO - 0x4 offset */
44 if (retries)
45 out_be32(base_addr + 4, c & 0xff);
46}
47
48static void early_printk_write(struct console *unused,
49 const char *s, unsigned n)
50{
51 while (*s && n-- > 0) {
52 early_printk_putc(*s);
53 if (*s == '\n')
54 early_printk_putc('\r');
55 s++;
56 }
57}
58
59static struct console early_serial_console = {
60 .name = "earlyser",
61 .write = early_printk_write,
62 .flags = CON_PRINTBUFFER,
63 .index = -1,
64};
65
66static struct console *early_console = &early_serial_console;
67
68void early_printk(const char *fmt, ...)
69{
70 char buf[512];
71 int n;
72 va_list ap;
73
74 if (early_console_initialized) {
75 va_start(ap, fmt);
76 n = vscnprintf(buf, 512, fmt, ap);
77 early_console->write(early_console, buf, n);
78 va_end(ap);
79 }
80}
81
82int __init setup_early_printk(char *opt)
83{
84 if (early_console_initialized)
85 return 1;
86
87 base_addr = early_uartlite_console();
88 if (base_addr) {
89 early_console_initialized = 1;
90 early_printk("early_printk_console is enabled at 0x%08x\n",
91 base_addr);
92
93 /* register_console(early_console); */
94
95 return 0;
96 } else
97 return 1;
98}
99
100void __init disable_early_printk(void)
101{
102 if (!early_console_initialized || !early_console)
103 return;
104 printk(KERN_WARNING "disabling early console\n");
105 unregister_console(early_console);
106 early_console_initialized = 0;
107}
diff --git a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
new file mode 100644
index 000000000000..f24b1268baaf
--- /dev/null
+++ b/arch/microblaze/kernel/entry-nommu.S
@@ -0,0 +1,596 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/linkage.h>
12#include <asm/thread_info.h>
13#include <asm/errno.h>
14#include <asm/entry.h>
15#include <asm/asm-offsets.h>
16#include <asm/registers.h>
17#include <asm/unistd.h>
18#include <asm/percpu.h>
19#include <asm/signal.h>
20
21#if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR
22 .macro disable_irq
23 msrclr r0, MSR_IE
24 .endm
25
26 .macro enable_irq
27 msrset r0, MSR_IE
28 .endm
29
30 .macro clear_bip
31 msrclr r0, MSR_BIP
32 .endm
33#else
34 .macro disable_irq
35 mfs r11, rmsr
36 andi r11, r11, ~MSR_IE
37 mts rmsr, r11
38 .endm
39
40 .macro enable_irq
41 mfs r11, rmsr
42 ori r11, r11, MSR_IE
43 mts rmsr, r11
44 .endm
45
46 .macro clear_bip
47 mfs r11, rmsr
48 andi r11, r11, ~MSR_BIP
49 mts rmsr, r11
50 .endm
51#endif
52
53ENTRY(_interrupt)
54 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
55 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
56 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
57 beqid r11, 1f
58 nop
59 brid 2f /* jump over */
60 addik r1, r1, (-PT_SIZE) /* room for pt_regs (delay slot) */
611: /* switch to kernel stack */
62 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
63 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
64 /* calculate kernel stack pointer */
65 addik r1, r1, THREAD_SIZE - PT_SIZE
662:
67 swi r11, r1, PT_MODE /* store the mode */
68 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
69 swi r2, r1, PT_R2
70 swi r3, r1, PT_R3
71 swi r4, r1, PT_R4
72 swi r5, r1, PT_R5
73 swi r6, r1, PT_R6
74 swi r7, r1, PT_R7
75 swi r8, r1, PT_R8
76 swi r9, r1, PT_R9
77 swi r10, r1, PT_R10
78 swi r11, r1, PT_R11
79 swi r12, r1, PT_R12
80 swi r13, r1, PT_R13
81 swi r14, r1, PT_R14
82 swi r14, r1, PT_PC
83 swi r15, r1, PT_R15
84 swi r16, r1, PT_R16
85 swi r17, r1, PT_R17
86 swi r18, r1, PT_R18
87 swi r19, r1, PT_R19
88 swi r20, r1, PT_R20
89 swi r21, r1, PT_R21
90 swi r22, r1, PT_R22
91 swi r23, r1, PT_R23
92 swi r24, r1, PT_R24
93 swi r25, r1, PT_R25
94 swi r26, r1, PT_R26
95 swi r27, r1, PT_R27
96 swi r28, r1, PT_R28
97 swi r29, r1, PT_R29
98 swi r30, r1, PT_R30
99 swi r31, r1, PT_R31
100 /* special purpose registers */
101 mfs r11, rmsr
102 swi r11, r1, PT_MSR
103 mfs r11, rear
104 swi r11, r1, PT_EAR
105 mfs r11, resr
106 swi r11, r1, PT_ESR
107 mfs r11, rfsr
108 swi r11, r1, PT_FSR
109 /* reload original stack pointer and save it */
110 lwi r11, r0, PER_CPU(ENTRY_SP)
111 swi r11, r1, PT_R1
112 /* update mode indicator we are in kernel mode */
113 addik r11, r0, 1
114 swi r11, r0, PER_CPU(KM)
115 /* restore r31 */
116 lwi r31, r0, PER_CPU(CURRENT_SAVE)
117 /* prepare the link register, the argument and jump */
118 la r15, r0, ret_from_intr - 8
119 addk r6, r0, r15
120 braid do_IRQ
121 add r5, r0, r1
122
123ret_from_intr:
124 lwi r11, r1, PT_MODE
125 bneid r11, 3f
126
127 lwi r6, r31, TS_THREAD_INFO /* get thread info */
128 lwi r19, r6, TI_FLAGS /* get flags in thread info */
129 /* do an extra work if any bits are set */
130
131 andi r11, r19, _TIF_NEED_RESCHED
132 beqi r11, 1f
133 bralid r15, schedule
134 nop
1351: andi r11, r19, _TIF_SIGPENDING
136 beqid r11, no_intr_reshed
137 addk r5, r1, r0
138 addk r7, r0, r0
139 bralid r15, do_signal
140 addk r6, r0, r0
141
142no_intr_reshed:
143 /* save mode indicator */
144 lwi r11, r1, PT_MODE
1453:
146 swi r11, r0, PER_CPU(KM)
147
148 /* save r31 */
149 swi r31, r0, PER_CPU(CURRENT_SAVE)
150restore_context:
151 /* special purpose registers */
152 lwi r11, r1, PT_FSR
153 mts rfsr, r11
154 lwi r11, r1, PT_ESR
155 mts resr, r11
156 lwi r11, r1, PT_EAR
157 mts rear, r11
158 lwi r11, r1, PT_MSR
159 mts rmsr, r11
160
161 lwi r31, r1, PT_R31
162 lwi r30, r1, PT_R30
163 lwi r29, r1, PT_R29
164 lwi r28, r1, PT_R28
165 lwi r27, r1, PT_R27
166 lwi r26, r1, PT_R26
167 lwi r25, r1, PT_R25
168 lwi r24, r1, PT_R24
169 lwi r23, r1, PT_R23
170 lwi r22, r1, PT_R22
171 lwi r21, r1, PT_R21
172 lwi r20, r1, PT_R20
173 lwi r19, r1, PT_R19
174 lwi r18, r1, PT_R18
175 lwi r17, r1, PT_R17
176 lwi r16, r1, PT_R16
177 lwi r15, r1, PT_R15
178 lwi r14, r1, PT_PC
179 lwi r13, r1, PT_R13
180 lwi r12, r1, PT_R12
181 lwi r11, r1, PT_R11
182 lwi r10, r1, PT_R10
183 lwi r9, r1, PT_R9
184 lwi r8, r1, PT_R8
185 lwi r7, r1, PT_R7
186 lwi r6, r1, PT_R6
187 lwi r5, r1, PT_R5
188 lwi r4, r1, PT_R4
189 lwi r3, r1, PT_R3
190 lwi r2, r1, PT_R2
191 lwi r1, r1, PT_R1
192 rtid r14, 0
193 nop
194
195ENTRY(_reset)
196 brai 0;
197
198ENTRY(_user_exception)
199 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
200 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
201 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
202 beqid r11, 1f /* Already in kernel mode? */
203 nop
204 brid 2f /* jump over */
205 addik r1, r1, (-PT_SIZE) /* Room for pt_regs (delay slot) */
2061: /* Switch to kernel stack */
207 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
208 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
209 /* calculate kernel stack pointer */
210 addik r1, r1, THREAD_SIZE - PT_SIZE
211 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
212 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
2132:
214 swi r11, r1, PT_MODE /* store the mode */
215 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
216 /* save them on stack */
217 swi r2, r1, PT_R2
218 swi r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
219 swi r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
220 swi r5, r1, PT_R5
221 swi r6, r1, PT_R6
222 swi r7, r1, PT_R7
223 swi r8, r1, PT_R8
224 swi r9, r1, PT_R9
225 swi r10, r1, PT_R10
226 swi r11, r1, PT_R11
227 /* r12: _always_ in clobber list; see unistd.h */
228 swi r12, r1, PT_R12
229 swi r13, r1, PT_R13
230 /* r14: _always_ in clobber list; see unistd.h */
231 swi r14, r1, PT_R14
232 /* but we want to return to the next inst. */
233 addik r14, r14, 0x4
234 swi r14, r1, PT_PC /* increment by 4 and store in pc */
235 swi r15, r1, PT_R15
236 swi r16, r1, PT_R16
237 swi r17, r1, PT_R17
238 swi r18, r1, PT_R18
239 swi r19, r1, PT_R19
240 swi r20, r1, PT_R20
241 swi r21, r1, PT_R21
242 swi r22, r1, PT_R22
243 swi r23, r1, PT_R23
244 swi r24, r1, PT_R24
245 swi r25, r1, PT_R25
246 swi r26, r1, PT_R26
247 swi r27, r1, PT_R27
248 swi r28, r1, PT_R28
249 swi r29, r1, PT_R29
250 swi r30, r1, PT_R30
251 swi r31, r1, PT_R31
252
253 disable_irq
254 nop /* make sure IE bit is in effect */
255 clear_bip /* once IE is in effect it is safe to clear BIP */
256 nop
257
258 /* special purpose registers */
259 mfs r11, rmsr
260 swi r11, r1, PT_MSR
261 mfs r11, rear
262 swi r11, r1, PT_EAR
263 mfs r11, resr
264 swi r11, r1, PT_ESR
265 mfs r11, rfsr
266 swi r11, r1, PT_FSR
267 /* reload original stack pointer and save it */
268 lwi r11, r0, PER_CPU(ENTRY_SP)
269 swi r11, r1, PT_R1
270 /* update mode indicator we are in kernel mode */
271 addik r11, r0, 1
272 swi r11, r0, PER_CPU(KM)
273 /* restore r31 */
274 lwi r31, r0, PER_CPU(CURRENT_SAVE)
275 /* re-enable interrupts now we are in kernel mode */
276 enable_irq
277
278 /* See if the system call number is valid. */
279 addi r11, r12, -__NR_syscalls
280 bgei r11, 1f /* return to user if not valid */
281 /* Figure out which function to use for this system call. */
282 /* Note Microblaze barrel shift is optional, so don't rely on it */
283 add r12, r12, r12 /* convert num -> ptr */
284 add r12, r12, r12
285 lwi r12, r12, sys_call_table /* Get function pointer */
286 la r15, r0, ret_to_user-8 /* set return address */
287 bra r12 /* Make the system call. */
288 bri 0 /* won't reach here */
2891:
290 brid ret_to_user /* jump to syscall epilogue */
291 addi r3, r0, -ENOSYS /* set errno in delay slot */
292
293/*
294 * Debug traps are like a system call, but entered via brki r14, 0x60
295 * All we need to do is send the SIGTRAP signal to current, ptrace and do_signal
296 * will handle the rest
297 */
298ENTRY(_debug_exception)
299 swi r1, r0, PER_CPU(ENTRY_SP) /* save the current sp */
300 lwi r1, r0, PER_CPU(CURRENT_SAVE) /* get the saved current */
301 lwi r1, r1, TS_THREAD_INFO /* get the thread info */
302 addik r1, r1, THREAD_SIZE - PT_SIZE /* get the kernel stack */
303 swi r11, r0, PER_CPU(R11_SAVE) /* temporarily save r11 */
304 lwi r11, r0, PER_CPU(KM) /* load mode indicator */
305//save_context:
306 swi r11, r1, PT_MODE /* store the mode */
307 lwi r11, r0, PER_CPU(R11_SAVE) /* reload r11 */
308 /* save them on stack */
309 swi r2, r1, PT_R2
310 swi r3, r1, PT_R3 /* r3: _always_ in clobber list; see unistd.h */
311 swi r4, r1, PT_R4 /* r4: _always_ in clobber list; see unistd.h */
312 swi r5, r1, PT_R5
313 swi r6, r1, PT_R6
314 swi r7, r1, PT_R7
315 swi r8, r1, PT_R8
316 swi r9, r1, PT_R9
317 swi r10, r1, PT_R10
318 swi r11, r1, PT_R11
319 /* r12: _always_ in clobber list; see unistd.h */
320 swi r12, r1, PT_R12
321 swi r13, r1, PT_R13
322 /* r14: _always_ in clobber list; see unistd.h */
323 swi r14, r1, PT_R14
324 swi r14, r1, PT_PC /* Will return to interrupted instruction */
325 swi r15, r1, PT_R15
326 swi r16, r1, PT_R16
327 swi r17, r1, PT_R17
328 swi r18, r1, PT_R18
329 swi r19, r1, PT_R19
330 swi r20, r1, PT_R20
331 swi r21, r1, PT_R21
332 swi r22, r1, PT_R22
333 swi r23, r1, PT_R23
334 swi r24, r1, PT_R24
335 swi r25, r1, PT_R25
336 swi r26, r1, PT_R26
337 swi r27, r1, PT_R27
338 swi r28, r1, PT_R28
339 swi r29, r1, PT_R29
340 swi r30, r1, PT_R30
341 swi r31, r1, PT_R31
342
343 disable_irq
344 nop /* make sure IE bit is in effect */
345 clear_bip /* once IE is in effect it is safe to clear BIP */
346 nop
347
348 /* special purpose registers */
349 mfs r11, rmsr
350 swi r11, r1, PT_MSR
351 mfs r11, rear
352 swi r11, r1, PT_EAR
353 mfs r11, resr
354 swi r11, r1, PT_ESR
355 mfs r11, rfsr
356 swi r11, r1, PT_FSR
357 /* reload original stack pointer and save it */
358 lwi r11, r0, PER_CPU(ENTRY_SP)
359 swi r11, r1, PT_R1
360 /* update mode indicator we are in kernel mode */
361 addik r11, r0, 1
362 swi r11, r0, PER_CPU(KM)
363 /* restore r31 */
364 lwi r31, r0, PER_CPU(CURRENT_SAVE)
365 /* re-enable interrupts now we are in kernel mode */
366 enable_irq
367
368 addi r5, r0, SIGTRAP /* sending the trap signal */
369 add r6, r0, r31 /* to current */
370 bralid r15, send_sig
371 add r7, r0, r0 /* 3rd param zero */
372
373 /* Restore r3/r4 to work around how ret_to_user works */
374 lwi r3, r1, PT_R3
375 lwi r4, r1, PT_R4
376 bri ret_to_user
377
378ENTRY(_break)
379 bri 0
380
381/* struct task_struct *_switch_to(struct thread_info *prev,
382 struct thread_info *next); */
383ENTRY(_switch_to)
384 /* prepare return value */
385 addk r3, r0, r31
386
387 /* save registers in cpu_context */
388 /* use r11 and r12, volatile registers, as temp register */
389 addik r11, r5, TI_CPU_CONTEXT
390 swi r1, r11, CC_R1
391 swi r2, r11, CC_R2
392 /* skip volatile registers.
393 * they are saved on stack when we jumped to _switch_to() */
394 /* dedicated registers */
395 swi r13, r11, CC_R13
396 swi r14, r11, CC_R14
397 swi r15, r11, CC_R15
398 swi r16, r11, CC_R16
399 swi r17, r11, CC_R17
400 swi r18, r11, CC_R18
401 /* save non-volatile registers */
402 swi r19, r11, CC_R19
403 swi r20, r11, CC_R20
404 swi r21, r11, CC_R21
405 swi r22, r11, CC_R22
406 swi r23, r11, CC_R23
407 swi r24, r11, CC_R24
408 swi r25, r11, CC_R25
409 swi r26, r11, CC_R26
410 swi r27, r11, CC_R27
411 swi r28, r11, CC_R28
412 swi r29, r11, CC_R29
413 swi r30, r11, CC_R30
414 /* special purpose registers */
415 mfs r12, rmsr
416 swi r12, r11, CC_MSR
417 mfs r12, rear
418 swi r12, r11, CC_EAR
419 mfs r12, resr
420 swi r12, r11, CC_ESR
421 mfs r12, rfsr
422 swi r12, r11, CC_FSR
423
424 /* update r31, the current */
425 lwi r31, r6, TI_TASK
426 swi r31, r0, PER_CPU(CURRENT_SAVE)
427
428 /* get new process' cpu context and restore */
429 addik r11, r6, TI_CPU_CONTEXT
430
431 /* special purpose registers */
432 lwi r12, r11, CC_FSR
433 mts rfsr, r12
434 lwi r12, r11, CC_ESR
435 mts resr, r12
436 lwi r12, r11, CC_EAR
437 mts rear, r12
438 lwi r12, r11, CC_MSR
439 mts rmsr, r12
440 /* non-volatile registers */
441 lwi r30, r11, CC_R30
442 lwi r29, r11, CC_R29
443 lwi r28, r11, CC_R28
444 lwi r27, r11, CC_R27
445 lwi r26, r11, CC_R26
446 lwi r25, r11, CC_R25
447 lwi r24, r11, CC_R24
448 lwi r23, r11, CC_R23
449 lwi r22, r11, CC_R22
450 lwi r21, r11, CC_R21
451 lwi r20, r11, CC_R20
452 lwi r19, r11, CC_R19
453 /* dedicated registers */
454 lwi r18, r11, CC_R18
455 lwi r17, r11, CC_R17
456 lwi r16, r11, CC_R16
457 lwi r15, r11, CC_R15
458 lwi r14, r11, CC_R14
459 lwi r13, r11, CC_R13
460 /* skip volatile registers */
461 lwi r2, r11, CC_R2
462 lwi r1, r11, CC_R1
463
464 rtsd r15, 8
465 nop
466
467ENTRY(ret_from_fork)
468 addk r5, r0, r3
469 addk r6, r0, r1
470 brlid r15, schedule_tail
471 nop
472 swi r31, r1, PT_R31 /* save r31 in user context. */
473 /* will soon be restored to r31 in ret_to_user */
474 addk r3, r0, r0
475 brid ret_to_user
476 nop
477
478work_pending:
479 andi r11, r19, _TIF_NEED_RESCHED
480 beqi r11, 1f
481 bralid r15, schedule
482 nop
4831: andi r11, r19, _TIF_SIGPENDING
484 beqi r11, no_work_pending
485 addk r5, r1, r0
486 addik r7, r0, 1
487 bralid r15, do_signal
488 addk r6, r0, r0
489 bri no_work_pending
490
491ENTRY(ret_to_user)
492 disable_irq
493
494 swi r4, r1, PT_R4 /* return val */
495 swi r3, r1, PT_R3 /* return val */
496
497 lwi r6, r31, TS_THREAD_INFO /* get thread info */
498 lwi r19, r6, TI_FLAGS /* get flags in thread info */
499 bnei r19, work_pending /* do an extra work if any bits are set */
500no_work_pending:
501 disable_irq
502
503 /* save r31 */
504 swi r31, r0, PER_CPU(CURRENT_SAVE)
505 /* save mode indicator */
506 lwi r18, r1, PT_MODE
507 swi r18, r0, PER_CPU(KM)
508//restore_context:
509 /* special purpose registers */
510 lwi r18, r1, PT_FSR
511 mts rfsr, r18
512 lwi r18, r1, PT_ESR
513 mts resr, r18
514 lwi r18, r1, PT_EAR
515 mts rear, r18
516 lwi r18, r1, PT_MSR
517 mts rmsr, r18
518
519 lwi r31, r1, PT_R31
520 lwi r30, r1, PT_R30
521 lwi r29, r1, PT_R29
522 lwi r28, r1, PT_R28
523 lwi r27, r1, PT_R27
524 lwi r26, r1, PT_R26
525 lwi r25, r1, PT_R25
526 lwi r24, r1, PT_R24
527 lwi r23, r1, PT_R23
528 lwi r22, r1, PT_R22
529 lwi r21, r1, PT_R21
530 lwi r20, r1, PT_R20
531 lwi r19, r1, PT_R19
532 lwi r18, r1, PT_R18
533 lwi r17, r1, PT_R17
534 lwi r16, r1, PT_R16
535 lwi r15, r1, PT_R15
536 lwi r14, r1, PT_PC
537 lwi r13, r1, PT_R13
538 lwi r12, r1, PT_R12
539 lwi r11, r1, PT_R11
540 lwi r10, r1, PT_R10
541 lwi r9, r1, PT_R9
542 lwi r8, r1, PT_R8
543 lwi r7, r1, PT_R7
544 lwi r6, r1, PT_R6
545 lwi r5, r1, PT_R5
546 lwi r4, r1, PT_R4 /* return val */
547 lwi r3, r1, PT_R3 /* return val */
548 lwi r2, r1, PT_R2
549 lwi r1, r1, PT_R1
550
551 rtid r14, 0
552 nop
553
554sys_vfork_wrapper:
555 brid sys_vfork
556 addk r5, r1, r0
557
558sys_clone_wrapper:
559 brid sys_clone
560 addk r7, r1, r0
561
562sys_execve_wrapper:
563 brid sys_execve
564 addk r8, r1, r0
565
566sys_sigreturn_wrapper:
567 brid sys_sigreturn
568 addk r5, r1, r0
569
570sys_rt_sigreturn_wrapper:
571 brid sys_rt_sigreturn
572 addk r5, r1, r0
573
574sys_sigsuspend_wrapper:
575 brid sys_rt_sigsuspend
576 addk r6, r1, r0
577
578sys_rt_sigsuspend_wrapper:
579 brid sys_rt_sigsuspend
580 addk r7, r1, r0
581
582 /* Interrupt vector table */
583 .section .init.ivt, "ax"
584 .org 0x0
585 brai _reset
586 brai _user_exception
587 brai _interrupt
588 brai _break
589 brai _hw_exception_handler
590 .org 0x60
591 brai _debug_exception
592
593.section .rodata,"a"
594#include "syscall_table.S"
595
596syscall_table_size=(.-sys_call_table)
diff --git a/arch/microblaze/kernel/exceptions.c b/arch/microblaze/kernel/exceptions.c
new file mode 100644
index 000000000000..4a8a4064c7ee
--- /dev/null
+++ b/arch/microblaze/kernel/exceptions.c
@@ -0,0 +1,124 @@
1/*
2 * HW exception handling
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2008 PetaLogix
6 *
7 * This file is subject to the terms and conditions of the GNU General
8 * Public License. See the file COPYING in the main directory of this
9 * archive for more details.
10 */
11
12/*
13 * This file handles the architecture-dependent parts of hardware exceptions
14 */
15
16#include <linux/kernel.h>
17#include <linux/signal.h>
18#include <linux/sched.h>
19#include <linux/kallsyms.h>
20#include <linux/module.h>
21
22#include <asm/exceptions.h>
23#include <asm/entry.h> /* For KM CPU var */
24#include <asm/uaccess.h>
25#include <asm/errno.h>
26#include <asm/ptrace.h>
27#include <asm/current.h>
28
29#define MICROBLAZE_ILL_OPCODE_EXCEPTION 0x02
30#define MICROBLAZE_IBUS_EXCEPTION 0x03
31#define MICROBLAZE_DBUS_EXCEPTION 0x04
32#define MICROBLAZE_DIV_ZERO_EXCEPTION 0x05
33#define MICROBLAZE_FPU_EXCEPTION 0x06
34#define MICROBLAZE_PRIVILEG_EXCEPTION 0x07
35
36static DEFINE_SPINLOCK(die_lock);
37
38void die(const char *str, struct pt_regs *fp, long err)
39{
40 console_verbose();
41 spin_lock_irq(&die_lock);
42 printk(KERN_WARNING "Oops: %s, sig: %ld\n", str, err);
43 show_regs(fp);
44 spin_unlock_irq(&die_lock);
45 /* do_exit() should take care of panic'ing from an interrupt
46 * context so we don't handle it here
47 */
48 do_exit(err);
49}
50
51void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
52{
53 siginfo_t info;
54
55 if (kernel_mode(regs)) {
56 debugger(regs);
57 die("Exception in kernel mode", regs, signr);
58 }
59 info.si_signo = signr;
60 info.si_errno = 0;
61 info.si_code = code;
62 info.si_addr = (void __user *) addr;
63 force_sig_info(signr, &info, current);
64}
65
66asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
67 int fsr, int addr)
68{
69#if 0
70 printk(KERN_WARNING "Exception %02x in %s mode, FSR=%08x PC=%08x ESR=%08x\n",
71 type, user_mode(regs) ? "user" : "kernel", fsr,
72 (unsigned int) regs->pc, (unsigned int) regs->esr);
73#endif
74
75 switch (type & 0x1F) {
76 case MICROBLAZE_ILL_OPCODE_EXCEPTION:
77 _exception(SIGILL, regs, ILL_ILLOPC, addr);
78 break;
79 case MICROBLAZE_IBUS_EXCEPTION:
80 if (user_mode(regs)) {
81 printk(KERN_WARNING "Instruction bus error exception in user mode.\n");
82 _exception(SIGBUS, regs, BUS_ADRERR, addr);
83 return;
84 }
85 printk(KERN_WARNING "Instruction bus error exception in kernel mode.\n");
86 die("bus exception", regs, SIGBUS);
87 break;
88 case MICROBLAZE_DBUS_EXCEPTION:
89 if (user_mode(regs)) {
90 printk(KERN_WARNING "Data bus error exception in user mode.\n");
91 _exception(SIGBUS, regs, BUS_ADRERR, addr);
92 return;
93 }
94 printk(KERN_WARNING "Data bus error exception in kernel mode.\n");
95 die("bus exception", regs, SIGBUS);
96 break;
97 case MICROBLAZE_DIV_ZERO_EXCEPTION:
98 printk(KERN_WARNING "Divide by zero exception\n");
99 _exception(SIGILL, regs, ILL_ILLOPC, addr);
100 break;
101
102 case MICROBLAZE_FPU_EXCEPTION:
103 /* IEEE FP exception */
104 /* I removed fsr variable and use code var for storing fsr */
105 if (fsr & FSR_IO)
106 fsr = FPE_FLTINV;
107 else if (fsr & FSR_OF)
108 fsr = FPE_FLTOVF;
109 else if (fsr & FSR_UF)
110 fsr = FPE_FLTUND;
111 else if (fsr & FSR_DZ)
112 fsr = FPE_FLTDIV;
113 else if (fsr & FSR_DO)
114 fsr = FPE_FLTRES;
115 _exception(SIGFPE, regs, fsr, addr);
116 break;
117
118 default:
119 printk(KERN_WARNING "Unexpected exception %02x "
120 "PC=%08x in %s mode\n", type, (unsigned int) addr,
121 kernel_mode(regs) ? "kernel" : "user");
122 }
123 return;
124}
diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
new file mode 100644
index 000000000000..319dc35fc922
--- /dev/null
+++ b/arch/microblaze/kernel/head.S
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/linkage.h>
12#include <asm/thread_info.h>
13#include <asm/page.h>
14
15 .text
16ENTRY(_start)
17 mfs r1, rmsr
18 andi r1, r1, ~2
19 mts rmsr, r1
20
21/* save fdt to kernel location */
22/* r7 stores pointer to fdt blob */
23 beqi r7, no_fdt_arg
24 or r11, r0, r0 /* incremment */
25 ori r4, r0, TOPHYS(_fdt_start) /* save bram context */
26 ori r3, r0, (0x4000 - 4)
27_copy_fdt:
28 lw r12, r7, r11 /* r12 = r7 + r11 */
29 sw r12, r4, r11 /* addr[r4 + r11] = r12 */
30 addik r11, r11, 4 /* increment counting */
31 bgtid r3, _copy_fdt /* loop for all entries */
32 addik r3, r3, -4 /* descrement loop */
33no_fdt_arg:
34
35 /* Initialize small data anchors */
36 la r13, r0, _KERNEL_SDA_BASE_
37 la r2, r0, _KERNEL_SDA2_BASE_
38
39 /* Initialize stack pointer */
40 la r1, r0, init_thread_union + THREAD_SIZE - 4
41
42 /* Initialize r31 with current task address */
43 la r31, r0, init_task
44
45 /*
46 * Call platform dependent initialize function.
47 * Please see $(ARCH)/mach-$(SUBARCH)/setup.c for
48 * the function.
49 */
50 la r8, r0, machine_early_init
51 brald r15, r8
52 nop
53
54 la r15, r0, machine_halt
55 braid start_kernel
56 nop
diff --git a/arch/microblaze/kernel/heartbeat.c b/arch/microblaze/kernel/heartbeat.c
new file mode 100644
index 000000000000..1bdf20222b92
--- /dev/null
+++ b/arch/microblaze/kernel/heartbeat.c
@@ -0,0 +1,67 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/sched.h>
12#include <linux/io.h>
13
14#include <asm/setup.h>
15#include <asm/page.h>
16#include <asm/prom.h>
17
18static unsigned int base_addr;
19
20void heartbeat(void)
21{
22 static unsigned int cnt, period, dist;
23
24 if (base_addr) {
25 if (cnt == 0 || cnt == dist)
26 out_be32(base_addr, 1);
27 else if (cnt == 7 || cnt == dist + 7)
28 out_be32(base_addr, 0);
29
30 if (++cnt > period) {
31 cnt = 0;
32 /*
33 * The hyperbolic function below modifies the heartbeat
34 * period length in dependency of the current (5min)
35 * load. It goes through the points f(0)=126, f(1)=86,
36 * f(5)=51, f(inf)->30.
37 */
38 period = ((672 << FSHIFT) / (5 * avenrun[0] +
39 (7 << FSHIFT))) + 30;
40 dist = period / 4;
41 }
42 }
43}
44
45void setup_heartbeat(void)
46{
47 struct device_node *gpio = NULL;
48 int j;
49 char *gpio_list[] = {
50 "xlnx,xps-gpio-1.00.a",
51 "xlnx,opb-gpio-1.00.a",
52 NULL
53 };
54
55 for (j = 0; gpio_list[j] != NULL; j++) {
56 gpio = of_find_compatible_node(NULL, NULL, gpio_list[j]);
57 if (gpio)
58 break;
59 }
60
61 base_addr = *(int *) of_get_property(gpio, "reg", NULL);
62 base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);
63 printk(KERN_NOTICE "Heartbeat GPIO at 0x%x\n", base_addr);
64
65 if (*(int *) of_get_property(gpio, "xlnx,is-bidir", NULL))
66 out_be32(base_addr + 4, 0); /* GPIO is configured as output */
67}
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S
new file mode 100644
index 000000000000..cf9486d99838
--- /dev/null
+++ b/arch/microblaze/kernel/hw_exception_handler.S
@@ -0,0 +1,458 @@
1/*
2 * Exception handling for Microblaze
3 *
4 * Rewriten interrupt handling
5 *
6 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
7 * Copyright (C) 2008-2009 PetaLogix
8 *
9 * uClinux customisation (C) 2005 John Williams
10 *
11 * MMU code derived from arch/ppc/kernel/head_4xx.S:
12 * Copyright (C) 1995-1996 Gary Thomas <gdt@linuxppc.org>
13 * Initial PowerPC version.
14 * Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
15 * Rewritten for PReP
16 * Copyright (C) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
17 * Low-level exception handers, MMU support, and rewrite.
18 * Copyright (C) 1997 Dan Malek <dmalek@jlc.net>
19 * PowerPC 8xx modifications.
20 * Copyright (C) 1998-1999 TiVo, Inc.
21 * PowerPC 403GCX modifications.
22 * Copyright (C) 1999 Grant Erickson <grant@lcse.umn.edu>
23 * PowerPC 403GCX/405GP modifications.
24 * Copyright 2000 MontaVista Software Inc.
25 * PPC405 modifications
26 * PowerPC 403GCX/405GP modifications.
27 * Author: MontaVista Software, Inc.
28 * frank_rowand@mvista.com or source@mvista.com
29 * debbie_chu@mvista.com
30 *
31 * Original code
32 * Copyright (C) 2004 Xilinx, Inc.
33 *
34 * This program is free software; you can redistribute it and/or modify it
35 * under the terms of the GNU General Public License version 2 as published
36 * by the Free Software Foundation.
37 */
38
39/*
40 * Here are the handlers which don't require enabling translation
41 * and calling other kernel code thus we can keep their design very simple
42 * and do all processing in real mode. All what they need is a valid current
43 * (that is an issue for the CONFIG_REGISTER_TASK_PTR case)
44 * This handlers use r3,r4,r5,r6 and optionally r[current] to work therefore
45 * these registers are saved/restored
46 * The handlers which require translation are in entry.S --KAA
47 *
48 * Microblaze HW Exception Handler
49 * - Non self-modifying exception handler for the following exception conditions
50 * - Unalignment
51 * - Instruction bus error
52 * - Data bus error
53 * - Illegal instruction opcode
54 * - Divide-by-zero
55 *
56 * Note we disable interrupts during exception handling, otherwise we will
57 * possibly get multiple re-entrancy if interrupt handles themselves cause
58 * exceptions. JW
59 */
60
61#include <asm/exceptions.h>
62#include <asm/unistd.h>
63#include <asm/page.h>
64
65#include <asm/entry.h>
66#include <asm/current.h>
67#include <linux/linkage.h>
68
69#include <asm/mmu.h>
70#include <asm/pgtable.h>
71#include <asm/asm-offsets.h>
72
73/* Helpful Macros */
74#define EX_HANDLER_STACK_SIZ (4*19)
75#define NUM_TO_REG(num) r ## num
76
77#define LWREG_NOP \
78 bri ex_handler_unhandled; \
79 nop;
80
81#define SWREG_NOP \
82 bri ex_handler_unhandled; \
83 nop;
84
85/* FIXME this is weird - for noMMU kernel is not possible to use brid
86 * instruction which can shorten executed time
87 */
88
89/* r3 is the source */
90#define R3_TO_LWREG_V(regnum) \
91 swi r3, r1, 4 * regnum; \
92 bri ex_handler_done;
93
94/* r3 is the source */
95#define R3_TO_LWREG(regnum) \
96 or NUM_TO_REG (regnum), r0, r3; \
97 bri ex_handler_done;
98
99/* r3 is the target */
100#define SWREG_TO_R3_V(regnum) \
101 lwi r3, r1, 4 * regnum; \
102 bri ex_sw_tail;
103
104/* r3 is the target */
105#define SWREG_TO_R3(regnum) \
106 or r3, r0, NUM_TO_REG (regnum); \
107 bri ex_sw_tail;
108
109.extern other_exception_handler /* Defined in exception.c */
110
111/*
112 * hw_exception_handler - Handler for exceptions
113 *
114 * Exception handler notes:
115 * - Handles all exceptions
116 * - Does not handle unaligned exceptions during load into r17, r1, r0.
117 * - Does not handle unaligned exceptions during store from r17 (cannot be
118 * done) and r1 (slows down common case)
119 *
120 * Relevant register structures
121 *
122 * EAR - |----|----|----|----|----|----|----|----|
123 * - < ## 32 bit faulting address ## >
124 *
125 * ESR - |----|----|----|----|----| - | - |-----|-----|
126 * - W S REG EXC
127 *
128 *
129 * STACK FRAME STRUCTURE (for NO_MMU)
130 * ---------------------------------
131 *
132 * +-------------+ + 0
133 * | MSR |
134 * +-------------+ + 4
135 * | r1 |
136 * | . |
137 * | . |
138 * | . |
139 * | . |
140 * | r18 |
141 * +-------------+ + 76
142 * | . |
143 * | . |
144 *
145 * NO_MMU kernel use the same r0_ram pointed space - look to vmlinux.lds.S
146 * which is used for storing register values - old style was, that value were
147 * stored in stack but in case of failure you lost information about register.
148 * Currently you can see register value in memory in specific place.
149 * In compare to with previous solution the speed should be the same.
150 *
151 * MMU exception handler has different handling compare to no MMU kernel.
152 * Exception handler use jump table for directing of what happen. For MMU kernel
153 * is this approach better because MMU relate exception are handled by asm code
154 * in this file. In compare to with MMU expect of unaligned exception
155 * is everything handled by C code.
156 */
157
158/*
159 * every of these handlers is entered having R3/4/5/6/11/current saved on stack
160 * and clobbered so care should be taken to restore them if someone is going to
161 * return from exception
162 */
163
164/* wrappers to restore state before coming to entry.S */
165
166.global _hw_exception_handler
167.section .text
168.align 4
169.ent _hw_exception_handler
170_hw_exception_handler:
171 addik r1, r1, -(EX_HANDLER_STACK_SIZ); /* Create stack frame */
172 swi r3, r1, PT_R3
173 swi r4, r1, PT_R4
174 swi r5, r1, PT_R5
175 swi r6, r1, PT_R6
176
177 mfs r5, rmsr;
178 nop
179 swi r5, r1, 0;
180 mfs r4, rbtr /* Save BTR before jumping to handler */
181 nop
182 mfs r3, resr
183 nop
184
185 andi r5, r3, 0x1000; /* Check ESR[DS] */
186 beqi r5, not_in_delay_slot; /* Branch if ESR[DS] not set */
187 mfs r17, rbtr; /* ESR[DS] set - return address in BTR */
188 nop
189not_in_delay_slot:
190 swi r17, r1, PT_R17
191
192 andi r5, r3, 0x1F; /* Extract ESR[EXC] */
193
194 /* Exceptions enabled here. This will allow nested exceptions */
195 mfs r6, rmsr;
196 nop
197 swi r6, r1, 0; /* RMSR_OFFSET */
198 ori r6, r6, 0x100; /* Turn ON the EE bit */
199 andi r6, r6, ~2; /* Disable interrupts */
200 mts rmsr, r6;
201 nop
202
203 xori r6, r5, 1; /* 00001 = Unaligned Exception */
204 /* Jump to unalignment exception handler */
205 beqi r6, handle_unaligned_ex;
206
207handle_other_ex: /* Handle Other exceptions here */
208 /* Save other volatiles before we make procedure calls below */
209 swi r7, r1, PT_R7
210 swi r8, r1, PT_R8
211 swi r9, r1, PT_R9
212 swi r10, r1, PT_R10
213 swi r11, r1, PT_R11
214 swi r12, r1, PT_R12
215 swi r14, r1, PT_R14
216 swi r15, r1, PT_R15
217 swi r18, r1, PT_R18
218
219 or r5, r1, r0
220 andi r6, r3, 0x1F; /* Load ESR[EC] */
221 lwi r7, r0, PER_CPU(KM) /* MS: saving current kernel mode to regs */
222 swi r7, r1, PT_MODE
223 mfs r7, rfsr
224 nop
225 addk r8, r17, r0; /* Load exception address */
226 bralid r15, full_exception; /* Branch to the handler */
227 nop;
228
229 /*
230 * Trigger execution of the signal handler by enabling
231 * interrupts and calling an invalid syscall.
232 */
233 mfs r5, rmsr;
234 nop
235 ori r5, r5, 2;
236 mts rmsr, r5; /* enable interrupt */
237 nop
238 addi r12, r0, __NR_syscalls;
239 brki r14, 0x08;
240 mfs r5, rmsr; /* disable interrupt */
241 nop
242 andi r5, r5, ~2;
243 mts rmsr, r5;
244 nop
245
246 lwi r7, r1, PT_R7
247 lwi r8, r1, PT_R8
248 lwi r9, r1, PT_R9
249 lwi r10, r1, PT_R10
250 lwi r11, r1, PT_R11
251 lwi r12, r1, PT_R12
252 lwi r14, r1, PT_R14
253 lwi r15, r1, PT_R15
254 lwi r18, r1, PT_R18
255
256 bri ex_handler_done; /* Complete exception handling */
257
258/* 0x01 - Unaligned data access exception
259 * This occurs when a word access is not aligned on a word boundary,
260 * or when a 16-bit access is not aligned on a 16-bit boundary.
261 * This handler perform the access, and returns, except for MMU when
262 * the unaligned address is last on a 4k page or the physical address is
263 * not found in the page table, in which case unaligned_data_trap is called.
264 */
265handle_unaligned_ex:
266 /* Working registers already saved: R3, R4, R5, R6
267 * R3 = ESR
268 * R4 = BTR
269 */
270 mfs r4, rear;
271 nop
272
273 andi r6, r3, 0x3E0; /* Mask and extract the register operand */
274 srl r6, r6; /* r6 >> 5 */
275 srl r6, r6;
276 srl r6, r6;
277 srl r6, r6;
278 srl r6, r6;
279 /* Store the register operand in a temporary location */
280 sbi r6, r0, TOPHYS(ex_reg_op);
281
282 andi r6, r3, 0x400; /* Extract ESR[S] */
283 bnei r6, ex_sw;
284ex_lw:
285 andi r6, r3, 0x800; /* Extract ESR[W] */
286 beqi r6, ex_lhw;
287 lbui r5, r4, 0; /* Exception address in r4 */
288 /* Load a word, byte-by-byte from destination address
289 and save it in tmp space */
290 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
291 lbui r5, r4, 1;
292 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
293 lbui r5, r4, 2;
294 sbi r5, r0, TOPHYS(ex_tmp_data_loc_2);
295 lbui r5, r4, 3;
296 sbi r5, r0, TOPHYS(ex_tmp_data_loc_3);
297 /* Get the destination register value into r3 */
298 lwi r3, r0, TOPHYS(ex_tmp_data_loc_0);
299 bri ex_lw_tail;
300ex_lhw:
301 lbui r5, r4, 0; /* Exception address in r4 */
302 /* Load a half-word, byte-by-byte from destination
303 address and save it in tmp space */
304 sbi r5, r0, TOPHYS(ex_tmp_data_loc_0);
305 lbui r5, r4, 1;
306 sbi r5, r0, TOPHYS(ex_tmp_data_loc_1);
307 /* Get the destination register value into r3 */
308 lhui r3, r0, TOPHYS(ex_tmp_data_loc_0);
309ex_lw_tail:
310 /* Get the destination register number into r5 */
311 lbui r5, r0, TOPHYS(ex_reg_op);
312 /* Form load_word jump table offset (lw_table + (8 * regnum)) */
313 la r6, r0, TOPHYS(lw_table);
314 addk r5, r5, r5;
315 addk r5, r5, r5;
316 addk r5, r5, r5;
317 addk r5, r5, r6;
318 bra r5;
319ex_lw_end: /* Exception handling of load word, ends */
320ex_sw:
321 /* Get the destination register number into r5 */
322 lbui r5, r0, TOPHYS(ex_reg_op);
323 /* Form store_word jump table offset (sw_table + (8 * regnum)) */
324 la r6, r0, TOPHYS(sw_table);
325 add r5, r5, r5;
326 add r5, r5, r5;
327 add r5, r5, r5;
328 add r5, r5, r6;
329 bra r5;
330ex_sw_tail:
331 mfs r6, resr;
332 nop
333 andi r6, r6, 0x800; /* Extract ESR[W] */
334 beqi r6, ex_shw;
335 /* Get the word - delay slot */
336 swi r3, r0, TOPHYS(ex_tmp_data_loc_0);
337 /* Store the word, byte-by-byte into destination address */
338 lbui r3, r0, TOPHYS(ex_tmp_data_loc_0);
339 sbi r3, r4, 0;
340 lbui r3, r0, TOPHYS(ex_tmp_data_loc_1);
341 sbi r3, r4, 1;
342 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2);
343 sbi r3, r4, 2;
344 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3);
345 sbi r3, r4, 3;
346 bri ex_handler_done;
347
348ex_shw:
349 /* Store the lower half-word, byte-by-byte into destination address */
350 swi r3, r0, TOPHYS(ex_tmp_data_loc_0);
351 lbui r3, r0, TOPHYS(ex_tmp_data_loc_2);
352 sbi r3, r4, 0;
353 lbui r3, r0, TOPHYS(ex_tmp_data_loc_3);
354 sbi r3, r4, 1;
355ex_sw_end: /* Exception handling of store word, ends. */
356
357ex_handler_done:
358 lwi r5, r1, 0 /* RMSR */
359 mts rmsr, r5
360 nop
361 lwi r3, r1, PT_R3
362 lwi r4, r1, PT_R4
363 lwi r5, r1, PT_R5
364 lwi r6, r1, PT_R6
365 lwi r17, r1, PT_R17
366
367 rted r17, 0
368 addik r1, r1, (EX_HANDLER_STACK_SIZ); /* Restore stack frame */
369
370.end _hw_exception_handler
371
372ex_handler_unhandled:
373/* FIXME add handle function for unhandled exception - dump register */
374 bri 0
375
376.section .text
377.align 4
378lw_table:
379lw_r0: R3_TO_LWREG (0);
380lw_r1: LWREG_NOP;
381lw_r2: R3_TO_LWREG (2);
382lw_r3: R3_TO_LWREG_V (3);
383lw_r4: R3_TO_LWREG_V (4);
384lw_r5: R3_TO_LWREG_V (5);
385lw_r6: R3_TO_LWREG_V (6);
386lw_r7: R3_TO_LWREG (7);
387lw_r8: R3_TO_LWREG (8);
388lw_r9: R3_TO_LWREG (9);
389lw_r10: R3_TO_LWREG (10);
390lw_r11: R3_TO_LWREG (11);
391lw_r12: R3_TO_LWREG (12);
392lw_r13: R3_TO_LWREG (13);
393lw_r14: R3_TO_LWREG (14);
394lw_r15: R3_TO_LWREG (15);
395lw_r16: R3_TO_LWREG (16);
396lw_r17: LWREG_NOP;
397lw_r18: R3_TO_LWREG (18);
398lw_r19: R3_TO_LWREG (19);
399lw_r20: R3_TO_LWREG (20);
400lw_r21: R3_TO_LWREG (21);
401lw_r22: R3_TO_LWREG (22);
402lw_r23: R3_TO_LWREG (23);
403lw_r24: R3_TO_LWREG (24);
404lw_r25: R3_TO_LWREG (25);
405lw_r26: R3_TO_LWREG (26);
406lw_r27: R3_TO_LWREG (27);
407lw_r28: R3_TO_LWREG (28);
408lw_r29: R3_TO_LWREG (29);
409lw_r30: R3_TO_LWREG (30);
410lw_r31: R3_TO_LWREG (31);
411
412sw_table:
413sw_r0: SWREG_TO_R3 (0);
414sw_r1: SWREG_NOP;
415sw_r2: SWREG_TO_R3 (2);
416sw_r3: SWREG_TO_R3_V (3);
417sw_r4: SWREG_TO_R3_V (4);
418sw_r5: SWREG_TO_R3_V (5);
419sw_r6: SWREG_TO_R3_V (6);
420sw_r7: SWREG_TO_R3 (7);
421sw_r8: SWREG_TO_R3 (8);
422sw_r9: SWREG_TO_R3 (9);
423sw_r10: SWREG_TO_R3 (10);
424sw_r11: SWREG_TO_R3 (11);
425sw_r12: SWREG_TO_R3 (12);
426sw_r13: SWREG_TO_R3 (13);
427sw_r14: SWREG_TO_R3 (14);
428sw_r15: SWREG_TO_R3 (15);
429sw_r16: SWREG_TO_R3 (16);
430sw_r17: SWREG_NOP;
431sw_r18: SWREG_TO_R3 (18);
432sw_r19: SWREG_TO_R3 (19);
433sw_r20: SWREG_TO_R3 (20);
434sw_r21: SWREG_TO_R3 (21);
435sw_r22: SWREG_TO_R3 (22);
436sw_r23: SWREG_TO_R3 (23);
437sw_r24: SWREG_TO_R3 (24);
438sw_r25: SWREG_TO_R3 (25);
439sw_r26: SWREG_TO_R3 (26);
440sw_r27: SWREG_TO_R3 (27);
441sw_r28: SWREG_TO_R3 (28);
442sw_r29: SWREG_TO_R3 (29);
443sw_r30: SWREG_TO_R3 (30);
444sw_r31: SWREG_TO_R3 (31);
445
446/* Temporary data structures used in the handler */
447.section .data
448.align 4
449ex_tmp_data_loc_0:
450 .byte 0
451ex_tmp_data_loc_1:
452 .byte 0
453ex_tmp_data_loc_2:
454 .byte 0
455ex_tmp_data_loc_3:
456 .byte 0
457ex_reg_op:
458 .byte 0
diff --git a/arch/microblaze/kernel/init_task.c b/arch/microblaze/kernel/init_task.c
new file mode 100644
index 000000000000..48eb9fb255fa
--- /dev/null
+++ b/arch/microblaze/kernel/init_task.c
@@ -0,0 +1,29 @@
1/*
2 * Copyright (C) 2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/module.h>
12#include <linux/sched.h>
13#include <linux/init_task.h>
14#include <linux/fs.h>
15#include <linux/mqueue.h>
16
17#include <asm/pgtable.h>
18
19static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
20static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
21struct mm_struct init_mm = INIT_MM(init_mm);
22EXPORT_SYMBOL(init_mm);
23
24union thread_union init_thread_union
25 __attribute__((__section__(".data.init_task"))) =
26{ INIT_THREAD_INFO(init_task) };
27
28struct task_struct init_task = INIT_TASK(init_task);
29EXPORT_SYMBOL(init_task);
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
new file mode 100644
index 000000000000..a69d3e3c2fd4
--- /dev/null
+++ b/arch/microblaze/kernel/intc.c
@@ -0,0 +1,172 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/irq.h>
13#include <asm/page.h>
14#include <linux/io.h>
15
16#include <asm/prom.h>
17#include <asm/irq.h>
18
19#ifdef CONFIG_SELFMOD_INTC
20#include <asm/selfmod.h>
21#define INTC_BASE BARRIER_BASE_ADDR
22#else
23static unsigned int intc_baseaddr;
24#define INTC_BASE intc_baseaddr
25#endif
26
27unsigned int nr_irq;
28
29/* No one else should require these constants, so define them locally here. */
30#define ISR 0x00 /* Interrupt Status Register */
31#define IPR 0x04 /* Interrupt Pending Register */
32#define IER 0x08 /* Interrupt Enable Register */
33#define IAR 0x0c /* Interrupt Acknowledge Register */
34#define SIE 0x10 /* Set Interrupt Enable bits */
35#define CIE 0x14 /* Clear Interrupt Enable bits */
36#define IVR 0x18 /* Interrupt Vector Register */
37#define MER 0x1c /* Master Enable Register */
38
39#define MER_ME (1<<0)
40#define MER_HIE (1<<1)
41
42static void intc_enable_or_unmask(unsigned int irq)
43{
44 pr_debug("enable_or_unmask: %d\n", irq);
45 out_be32(INTC_BASE + SIE, 1 << irq);
46}
47
48static void intc_disable_or_mask(unsigned int irq)
49{
50 pr_debug("disable: %d\n", irq);
51 out_be32(INTC_BASE + CIE, 1 << irq);
52}
53
54static void intc_ack(unsigned int irq)
55{
56 pr_debug("ack: %d\n", irq);
57 out_be32(INTC_BASE + IAR, 1 << irq);
58}
59
60static void intc_mask_ack(unsigned int irq)
61{
62 unsigned long mask = 1 << irq;
63 pr_debug("disable_and_ack: %d\n", irq);
64 out_be32(INTC_BASE + CIE, mask);
65 out_be32(INTC_BASE + IAR, mask);
66}
67
68static void intc_end(unsigned int irq)
69{
70 unsigned long mask = 1 << irq;
71 pr_debug("end: %d\n", irq);
72 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
73 out_be32(INTC_BASE + SIE, mask);
74 /* ack level sensitive intr */
75 if (irq_desc[irq].status & IRQ_LEVEL)
76 out_be32(INTC_BASE + IAR, mask);
77 }
78}
79
80static struct irq_chip intc_dev = {
81 .name = "Xilinx INTC",
82 .unmask = intc_enable_or_unmask,
83 .mask = intc_disable_or_mask,
84 .ack = intc_ack,
85 .mask_ack = intc_mask_ack,
86 .end = intc_end,
87};
88
89unsigned int get_irq(struct pt_regs *regs)
90{
91 int irq;
92
93 /*
94 * NOTE: This function is the one that needs to be improved in
95 * order to handle multiple interrupt controllers. It currently
96 * is hardcoded to check for interrupts only on the first INTC.
97 */
98 irq = in_be32(INTC_BASE + IVR);
99 pr_debug("get_irq: %d\n", irq);
100
101 return irq;
102}
103
104void __init init_IRQ(void)
105{
106 u32 i, j, intr_type;
107 struct device_node *intc = NULL;
108#ifdef CONFIG_SELFMOD_INTC
109 unsigned int intc_baseaddr = 0;
110 static int arr_func[] = {
111 (int)&get_irq,
112 (int)&intc_enable_or_unmask,
113 (int)&intc_disable_or_mask,
114 (int)&intc_mask_ack,
115 (int)&intc_ack,
116 (int)&intc_end,
117 0
118 };
119#endif
120 static char *intc_list[] = {
121 "xlnx,xps-intc-1.00.a",
122 "xlnx,opb-intc-1.00.c",
123 "xlnx,opb-intc-1.00.b",
124 "xlnx,opb-intc-1.00.a",
125 NULL
126 };
127
128 for (j = 0; intc_list[j] != NULL; j++) {
129 intc = of_find_compatible_node(NULL, NULL, intc_list[j]);
130 if (intc)
131 break;
132 }
133
134 intc_baseaddr = *(int *) of_get_property(intc, "reg", NULL);
135 intc_baseaddr = (unsigned long) ioremap(intc_baseaddr, PAGE_SIZE);
136 nr_irq = *(int *) of_get_property(intc, "xlnx,num-intr-inputs", NULL);
137
138 intr_type =
139 *(int *) of_get_property(intc, "xlnx,kind-of-intr", NULL);
140 if (intr_type >= (1 << nr_irq))
141 printk(KERN_INFO " ERROR: Mishmash in king-of-intr param\n");
142
143#ifdef CONFIG_SELFMOD_INTC
144 selfmod_function((int *) arr_func, intc_baseaddr);
145#endif
146 printk(KERN_INFO "%s #0 at 0x%08x, num_irq=%d, edge=0x%x\n",
147 intc_list[j], intc_baseaddr, nr_irq, intr_type);
148
149 /*
150 * Disable all external interrupts until they are
151 * explicity requested.
152 */
153 out_be32(intc_baseaddr + IER, 0);
154
155 /* Acknowledge any pending interrupts just in case. */
156 out_be32(intc_baseaddr + IAR, 0xffffffff);
157
158 /* Turn on the Master Enable. */
159 out_be32(intc_baseaddr + MER, MER_HIE | MER_ME);
160
161 for (i = 0; i < nr_irq; ++i) {
162 if (intr_type & (0x00000001 << i)) {
163 set_irq_chip_and_handler_name(i, &intc_dev,
164 handle_edge_irq, intc_dev.name);
165 irq_desc[i].status &= ~IRQ_LEVEL;
166 } else {
167 set_irq_chip_and_handler_name(i, &intc_dev,
168 handle_level_irq, intc_dev.name);
169 irq_desc[i].status |= IRQ_LEVEL;
170 }
171 }
172}
diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
new file mode 100644
index 000000000000..f688ee93e3b9
--- /dev/null
+++ b/arch/microblaze/kernel/irq.c
@@ -0,0 +1,104 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/hardirq.h>
14#include <linux/interrupt.h>
15#include <linux/irqflags.h>
16#include <linux/seq_file.h>
17#include <linux/kernel_stat.h>
18#include <linux/irq.h>
19
20#include <asm/prom.h>
21
22unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
23{
24 struct of_irq oirq;
25
26 if (of_irq_map_one(dev, index, &oirq))
27 return NO_IRQ;
28
29 return oirq.specifier[0];
30}
31EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
32
33/*
34 * 'what should we do if we get a hw irq event on an illegal vector'.
35 * each architecture has to answer this themselves.
36 */
37void ack_bad_irq(unsigned int irq)
38{
39 printk(KERN_WARNING "unexpected IRQ trap at vector %02x\n", irq);
40}
41
42static u32 concurrent_irq;
43
44void do_IRQ(struct pt_regs *regs)
45{
46 unsigned int irq;
47 struct pt_regs *old_regs = set_irq_regs(regs);
48
49 irq_enter();
50 irq = get_irq(regs);
51next_irq:
52 BUG_ON(irq == -1U);
53 generic_handle_irq(irq);
54
55 irq = get_irq(regs);
56 if (irq != -1U) {
57 pr_debug("next irq: %d\n", irq);
58 ++concurrent_irq;
59 goto next_irq;
60 }
61
62 irq_exit();
63 set_irq_regs(old_regs);
64}
65
66int show_interrupts(struct seq_file *p, void *v)
67{
68 int i = *(loff_t *) v, j;
69 struct irqaction *action;
70 unsigned long flags;
71
72 if (i == 0) {
73 seq_printf(p, " ");
74 for_each_online_cpu(j)
75 seq_printf(p, "CPU%-8d", j);
76 seq_putc(p, '\n');
77 }
78
79 if (i < nr_irq) {
80 spin_lock_irqsave(&irq_desc[i].lock, flags);
81 action = irq_desc[i].action;
82 if (!action)
83 goto skip;
84 seq_printf(p, "%3d: ", i);
85#ifndef CONFIG_SMP
86 seq_printf(p, "%10u ", kstat_irqs(i));
87#else
88 for_each_online_cpu(j)
89 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
90#endif
91 seq_printf(p, " %8s", irq_desc[i].status &
92 IRQ_LEVEL ? "level" : "edge");
93 seq_printf(p, " %8s", irq_desc[i].chip->name);
94 seq_printf(p, " %s", action->name);
95
96 for (action = action->next; action; action = action->next)
97 seq_printf(p, ", %s", action->name);
98
99 seq_putc(p, '\n');
100skip:
101 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
102 }
103 return 0;
104}
diff --git a/arch/microblaze/kernel/microblaze_ksyms.c b/arch/microblaze/kernel/microblaze_ksyms.c
new file mode 100644
index 000000000000..5f71790e3c3c
--- /dev/null
+++ b/arch/microblaze/kernel/microblaze_ksyms.c
@@ -0,0 +1,47 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#include <linux/module.h>
11#include <linux/string.h>
12#include <linux/cryptohash.h>
13#include <linux/delay.h>
14#include <linux/in6.h>
15#include <linux/syscalls.h>
16
17#include <asm/checksum.h>
18#include <linux/io.h>
19#include <asm/page.h>
20#include <asm/system.h>
21#include <linux/uaccess.h>
22
23/*
24 * libgcc functions - functions that are used internally by the
25 * compiler... (prototypes are not correct though, but that
26 * doesn't really matter since they're not versioned).
27 */
28extern void __ashldi3(void);
29EXPORT_SYMBOL(__ashldi3);
30extern void __ashrdi3(void);
31EXPORT_SYMBOL(__ashrdi3);
32extern void __divsi3(void);
33EXPORT_SYMBOL(__divsi3);
34extern void __lshrdi3(void);
35EXPORT_SYMBOL(__lshrdi3);
36extern void __modsi3(void);
37EXPORT_SYMBOL(__modsi3);
38extern void __mulsi3(void);
39EXPORT_SYMBOL(__mulsi3);
40extern void __muldi3(void);
41EXPORT_SYMBOL(__muldi3);
42extern void __ucmpdi2(void);
43EXPORT_SYMBOL(__ucmpdi2);
44extern void __udivsi3(void);
45EXPORT_SYMBOL(__udivsi3);
46extern void __umodsi3(void);
47EXPORT_SYMBOL(__umodsi3);
diff --git a/arch/microblaze/kernel/module.c b/arch/microblaze/kernel/module.c
new file mode 100644
index 000000000000..51414171326f
--- /dev/null
+++ b/arch/microblaze/kernel/module.c
@@ -0,0 +1,151 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#include <linux/module.h>
11#include <linux/moduleloader.h>
12#include <linux/kernel.h>
13#include <linux/elf.h>
14#include <linux/vmalloc.h>
15#include <linux/slab.h>
16#include <linux/fs.h>
17#include <linux/string.h>
18
19#include <asm/pgtable.h>
20
21void *module_alloc(unsigned long size)
22{
23 void *ret;
24 ret = (size == 0) ? NULL : vmalloc(size);
25 pr_debug("module_alloc (%08lx@%08lx)\n", size, (unsigned long int)ret);
26 return ret;
27}
28
29void module_free(struct module *module, void *region)
30{
31 pr_debug("module_free(%s,%08lx)\n", module->name,
32 (unsigned long)region);
33 vfree(region);
34}
35
36int module_frob_arch_sections(Elf_Ehdr *hdr,
37 Elf_Shdr *sechdrs,
38 char *secstrings,
39 struct module *mod)
40{
41 return 0;
42}
43
44int apply_relocate(Elf32_Shdr *sechdrs, const char *strtab,
45 unsigned int symindex, unsigned int relsec, struct module *module)
46{
47 printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n",
48 module->name);
49 return -ENOEXEC;
50}
51
52int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
53 unsigned int symindex, unsigned int relsec, struct module *module)
54{
55
56 unsigned int i;
57 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr;
58 Elf32_Sym *sym;
59 unsigned long int *location;
60 unsigned long int locoffs;
61 unsigned long int value;
62#if __GNUC__ < 4
63 unsigned long int old_value;
64#endif
65
66 pr_debug("Applying add relocation section %u to %u\n",
67 relsec, sechdrs[relsec].sh_info);
68
69 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) {
70
71 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr +
72 rela[i].r_offset;
73 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr +
74 ELF32_R_SYM(rela[i].r_info);
75 value = sym->st_value + rela[i].r_addend;
76
77 switch (ELF32_R_TYPE(rela[i].r_info)) {
78
79 /*
80 * Be careful! mb-gcc / mb-ld splits the relocs between the
81 * text and the reloc table. In general this means we must
82 * read the current contents of (*location), add any offset
83 * then store the result back in
84 */
85
86 case R_MICROBLAZE_32:
87#if __GNUC__ < 4
88 old_value = *location;
89 *location = value + old_value;
90
91 pr_debug("R_MICROBLAZE_32 (%08lx->%08lx)\n",
92 old_value, value);
93#else
94 *location = value;
95#endif
96 break;
97
98 case R_MICROBLAZE_64:
99#if __GNUC__ < 4
100 /* Split relocs only required/used pre gcc4.1.1 */
101 old_value = ((location[0] & 0x0000FFFF) << 16) |
102 (location[1] & 0x0000FFFF);
103 value += old_value;
104#endif
105 location[0] = (location[0] & 0xFFFF0000) |
106 (value >> 16);
107 location[1] = (location[1] & 0xFFFF0000) |
108 (value & 0xFFFF);
109#if __GNUC__ < 4
110 pr_debug("R_MICROBLAZE_64 (%08lx->%08lx)\n",
111 old_value, value);
112#endif
113 break;
114
115 case R_MICROBLAZE_64_PCREL:
116 locoffs = (location[0] & 0xFFFF) << 16 |
117 (location[1] & 0xFFFF);
118 value -= (unsigned long int)(location) + 4 +
119 locoffs;
120 location[0] = (location[0] & 0xFFFF0000) |
121 (value >> 16);
122 location[1] = (location[1] & 0xFFFF0000) |
123 (value & 0xFFFF);
124 pr_debug("R_MICROBLAZE_64_PCREL (%08lx)\n",
125 value);
126 break;
127
128 case R_MICROBLAZE_NONE:
129 pr_debug("R_MICROBLAZE_NONE\n");
130 break;
131
132 default:
133 printk(KERN_ERR "module %s: "
134 "Unknown relocation: %u\n",
135 module->name,
136 ELF32_R_TYPE(rela->r_info));
137 return -ENOEXEC;
138 }
139 }
140 return 0;
141}
142
143int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
144 struct module *module)
145{
146 return 0;
147}
148
149void module_arch_cleanup(struct module *mod)
150{
151}
diff --git a/arch/microblaze/kernel/of_device.c b/arch/microblaze/kernel/of_device.c
new file mode 100644
index 000000000000..717edf4ad0b4
--- /dev/null
+++ b/arch/microblaze/kernel/of_device.c
@@ -0,0 +1,115 @@
1#include <linux/string.h>
2#include <linux/kernel.h>
3#include <linux/of.h>
4#include <linux/init.h>
5#include <linux/module.h>
6#include <linux/mod_devicetable.h>
7#include <linux/slab.h>
8#include <linux/of_device.h>
9
10#include <linux/errno.h>
11
12void of_device_make_bus_id(struct of_device *dev)
13{
14 static atomic_t bus_no_reg_magic;
15 struct device_node *node = dev->node;
16 char *name = dev->dev.bus_id;
17 const u32 *reg;
18 u64 addr;
19 int magic;
20
21 /*
22 * For MMIO, get the physical address
23 */
24 reg = of_get_property(node, "reg", NULL);
25 if (reg) {
26 addr = of_translate_address(node, reg);
27 if (addr != OF_BAD_ADDR) {
28 snprintf(name, BUS_ID_SIZE,
29 "%llx.%s", (unsigned long long)addr,
30 node->name);
31 return;
32 }
33 }
34
35 /*
36 * No BusID, use the node name and add a globally incremented
37 * counter (and pray...)
38 */
39 magic = atomic_add_return(1, &bus_no_reg_magic);
40 snprintf(name, BUS_ID_SIZE, "%s.%d", node->name, magic - 1);
41}
42EXPORT_SYMBOL(of_device_make_bus_id);
43
44struct of_device *of_device_alloc(struct device_node *np,
45 const char *bus_id,
46 struct device *parent)
47{
48 struct of_device *dev;
49
50 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
51 if (!dev)
52 return NULL;
53
54 dev->node = of_node_get(np);
55 dev->dev.dma_mask = &dev->dma_mask;
56 dev->dev.parent = parent;
57 dev->dev.release = of_release_dev;
58 dev->dev.archdata.of_node = np;
59
60 if (bus_id)
61 strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE);
62 else
63 of_device_make_bus_id(dev);
64
65 return dev;
66}
67EXPORT_SYMBOL(of_device_alloc);
68
69int of_device_uevent(struct device *dev, struct kobj_uevent_env *env)
70{
71 struct of_device *ofdev;
72 const char *compat;
73 int seen = 0, cplen, sl;
74
75 if (!dev)
76 return -ENODEV;
77
78 ofdev = to_of_device(dev);
79
80 if (add_uevent_var(env, "OF_NAME=%s", ofdev->node->name))
81 return -ENOMEM;
82
83 if (add_uevent_var(env, "OF_TYPE=%s", ofdev->node->type))
84 return -ENOMEM;
85
86 /* Since the compatible field can contain pretty much anything
87 * it's not really legal to split it out with commas. We split it
88 * up using a number of environment variables instead. */
89
90 compat = of_get_property(ofdev->node, "compatible", &cplen);
91 while (compat && *compat && cplen > 0) {
92 if (add_uevent_var(env, "OF_COMPATIBLE_%d=%s", seen, compat))
93 return -ENOMEM;
94
95 sl = strlen(compat) + 1;
96 compat += sl;
97 cplen -= sl;
98 seen++;
99 }
100
101 if (add_uevent_var(env, "OF_COMPATIBLE_N=%d", seen))
102 return -ENOMEM;
103
104 /* modalias is trickier, we add it in 2 steps */
105 if (add_uevent_var(env, "MODALIAS="))
106 return -ENOMEM;
107 sl = of_device_get_modalias(ofdev, &env->buf[env->buflen-1],
108 sizeof(env->buf) - env->buflen);
109 if (sl >= (sizeof(env->buf) - env->buflen))
110 return -ENOMEM;
111 env->buflen += sl;
112
113 return 0;
114}
115EXPORT_SYMBOL(of_device_uevent);
diff --git a/arch/microblaze/kernel/of_platform.c b/arch/microblaze/kernel/of_platform.c
new file mode 100644
index 000000000000..acf4574d0f18
--- /dev/null
+++ b/arch/microblaze/kernel/of_platform.c
@@ -0,0 +1,201 @@
1/*
2 * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
3 * <benh@kernel.crashing.org>
4 * and Arnd Bergmann, IBM Corp.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 *
11 */
12
13#undef DEBUG
14
15#include <linux/string.h>
16#include <linux/kernel.h>
17#include <linux/init.h>
18#include <linux/module.h>
19#include <linux/mod_devicetable.h>
20#include <linux/slab.h>
21#include <linux/pci.h>
22#include <linux/of.h>
23#include <linux/of_device.h>
24#include <linux/of_platform.h>
25
26#include <linux/errno.h>
27#include <linux/topology.h>
28#include <asm/atomic.h>
29
30struct bus_type of_platform_bus_type = {
31 .uevent = of_device_uevent,
32};
33EXPORT_SYMBOL(of_platform_bus_type);
34
35static int __init of_bus_driver_init(void)
36{
37 return of_bus_type_init(&of_platform_bus_type, "of_platform");
38}
39postcore_initcall(of_bus_driver_init);
40
41struct of_device *of_platform_device_create(struct device_node *np,
42 const char *bus_id,
43 struct device *parent)
44{
45 struct of_device *dev;
46
47 dev = of_device_alloc(np, bus_id, parent);
48 if (!dev)
49 return NULL;
50
51 dev->dma_mask = 0xffffffffUL;
52 dev->dev.bus = &of_platform_bus_type;
53
54 /* We do not fill the DMA ops for platform devices by default.
55 * This is currently the responsibility of the platform code
56 * to do such, possibly using a device notifier
57 */
58
59 if (of_device_register(dev) != 0) {
60 of_device_free(dev);
61 return NULL;
62 }
63
64 return dev;
65}
66EXPORT_SYMBOL(of_platform_device_create);
67
68/**
69 * of_platform_bus_create - Create an OF device for a bus node and all its
70 * children. Optionally recursively instanciate matching busses.
71 * @bus: device node of the bus to instanciate
72 * @matches: match table, NULL to use the default, OF_NO_DEEP_PROBE to
73 * disallow recursive creation of child busses
74 */
75static int of_platform_bus_create(const struct device_node *bus,
76 const struct of_device_id *matches,
77 struct device *parent)
78{
79 struct device_node *child;
80 struct of_device *dev;
81 int rc = 0;
82
83 for_each_child_of_node(bus, child) {
84 pr_debug(" create child: %s\n", child->full_name);
85 dev = of_platform_device_create(child, NULL, parent);
86 if (dev == NULL)
87 rc = -ENOMEM;
88 else if (!of_match_node(matches, child))
89 continue;
90 if (rc == 0) {
91 pr_debug(" and sub busses\n");
92 rc = of_platform_bus_create(child, matches, &dev->dev);
93 }
94 if (rc) {
95 of_node_put(child);
96 break;
97 }
98 }
99 return rc;
100}
101
102
103/**
104 * of_platform_bus_probe - Probe the device-tree for platform busses
105 * @root: parent of the first level to probe or NULL for the root of the tree
106 * @matches: match table, NULL to use the default
107 * @parent: parent to hook devices from, NULL for toplevel
108 *
109 * Note that children of the provided root are not instanciated as devices
110 * unless the specified root itself matches the bus list and is not NULL.
111 */
112
113int of_platform_bus_probe(struct device_node *root,
114 const struct of_device_id *matches,
115 struct device *parent)
116{
117 struct device_node *child;
118 struct of_device *dev;
119 int rc = 0;
120
121 if (matches == NULL)
122 matches = of_default_bus_ids;
123 if (matches == OF_NO_DEEP_PROBE)
124 return -EINVAL;
125 if (root == NULL)
126 root = of_find_node_by_path("/");
127 else
128 of_node_get(root);
129
130 pr_debug("of_platform_bus_probe()\n");
131 pr_debug(" starting at: %s\n", root->full_name);
132
133 /* Do a self check of bus type, if there's a match, create
134 * children
135 */
136 if (of_match_node(matches, root)) {
137 pr_debug(" root match, create all sub devices\n");
138 dev = of_platform_device_create(root, NULL, parent);
139 if (dev == NULL) {
140 rc = -ENOMEM;
141 goto bail;
142 }
143 pr_debug(" create all sub busses\n");
144 rc = of_platform_bus_create(root, matches, &dev->dev);
145 goto bail;
146 }
147 for_each_child_of_node(root, child) {
148 if (!of_match_node(matches, child))
149 continue;
150
151 pr_debug(" match: %s\n", child->full_name);
152 dev = of_platform_device_create(child, NULL, parent);
153 if (dev == NULL)
154 rc = -ENOMEM;
155 else
156 rc = of_platform_bus_create(child, matches, &dev->dev);
157 if (rc) {
158 of_node_put(child);
159 break;
160 }
161 }
162 bail:
163 of_node_put(root);
164 return rc;
165}
166EXPORT_SYMBOL(of_platform_bus_probe);
167
168static int of_dev_node_match(struct device *dev, void *data)
169{
170 return to_of_device(dev)->node == data;
171}
172
173struct of_device *of_find_device_by_node(struct device_node *np)
174{
175 struct device *dev;
176
177 dev = bus_find_device(&of_platform_bus_type,
178 NULL, np, of_dev_node_match);
179 if (dev)
180 return to_of_device(dev);
181 return NULL;
182}
183EXPORT_SYMBOL(of_find_device_by_node);
184
185static int of_dev_phandle_match(struct device *dev, void *data)
186{
187 phandle *ph = data;
188 return to_of_device(dev)->node->linux_phandle == *ph;
189}
190
191struct of_device *of_find_device_by_phandle(phandle ph)
192{
193 struct device *dev;
194
195 dev = bus_find_device(&of_platform_bus_type,
196 NULL, &ph, of_dev_phandle_match);
197 if (dev)
198 return to_of_device(dev);
199 return NULL;
200}
201EXPORT_SYMBOL(of_find_device_by_phandle);
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
new file mode 100644
index 000000000000..60e9ed7d3132
--- /dev/null
+++ b/arch/microblaze/kernel/process.c
@@ -0,0 +1,187 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/module.h>
12#include <linux/sched.h>
13#include <linux/pm.h>
14#include <linux/tick.h>
15#include <linux/bitops.h>
16#include <asm/system.h>
17#include <asm/pgalloc.h>
18
19void show_regs(struct pt_regs *regs)
20{
21 printk(KERN_INFO " Registers dump: mode=%X\r\n", regs->kernel_mode);
22 printk(KERN_INFO " r1=%08lX, r2=%08lX, r3=%08lX, r4=%08lX\n",
23 regs->r1, regs->r2, regs->r3, regs->r4);
24 printk(KERN_INFO " r5=%08lX, r6=%08lX, r7=%08lX, r8=%08lX\n",
25 regs->r5, regs->r6, regs->r7, regs->r8);
26 printk(KERN_INFO " r9=%08lX, r10=%08lX, r11=%08lX, r12=%08lX\n",
27 regs->r9, regs->r10, regs->r11, regs->r12);
28 printk(KERN_INFO " r13=%08lX, r14=%08lX, r15=%08lX, r16=%08lX\n",
29 regs->r13, regs->r14, regs->r15, regs->r16);
30 printk(KERN_INFO " r17=%08lX, r18=%08lX, r19=%08lX, r20=%08lX\n",
31 regs->r17, regs->r18, regs->r19, regs->r20);
32 printk(KERN_INFO " r21=%08lX, r22=%08lX, r23=%08lX, r24=%08lX\n",
33 regs->r21, regs->r22, regs->r23, regs->r24);
34 printk(KERN_INFO " r25=%08lX, r26=%08lX, r27=%08lX, r28=%08lX\n",
35 regs->r25, regs->r26, regs->r27, regs->r28);
36 printk(KERN_INFO " r29=%08lX, r30=%08lX, r31=%08lX, rPC=%08lX\n",
37 regs->r29, regs->r30, regs->r31, regs->pc);
38 printk(KERN_INFO " msr=%08lX, ear=%08lX, esr=%08lX, fsr=%08lX\n",
39 regs->msr, regs->ear, regs->esr, regs->fsr);
40 while (1)
41 ;
42}
43
44void (*pm_idle)(void);
45void (*pm_power_off)(void) = NULL;
46EXPORT_SYMBOL(pm_power_off);
47
48static int hlt_counter = 1;
49
50void disable_hlt(void)
51{
52 hlt_counter++;
53}
54EXPORT_SYMBOL(disable_hlt);
55
56void enable_hlt(void)
57{
58 hlt_counter--;
59}
60EXPORT_SYMBOL(enable_hlt);
61
62static int __init nohlt_setup(char *__unused)
63{
64 hlt_counter = 1;
65 return 1;
66}
67__setup("nohlt", nohlt_setup);
68
69static int __init hlt_setup(char *__unused)
70{
71 hlt_counter = 0;
72 return 1;
73}
74__setup("hlt", hlt_setup);
75
76void default_idle(void)
77{
78 if (!hlt_counter) {
79 clear_thread_flag(TIF_POLLING_NRFLAG);
80 smp_mb__after_clear_bit();
81 local_irq_disable();
82 while (!need_resched())
83 cpu_sleep();
84 local_irq_enable();
85 set_thread_flag(TIF_POLLING_NRFLAG);
86 } else
87 while (!need_resched())
88 cpu_relax();
89}
90
91void cpu_idle(void)
92{
93 set_thread_flag(TIF_POLLING_NRFLAG);
94
95 /* endless idle loop with no priority at all */
96 while (1) {
97 void (*idle)(void) = pm_idle;
98
99 if (!idle)
100 idle = default_idle;
101
102 tick_nohz_stop_sched_tick(1);
103 while (!need_resched())
104 idle();
105 tick_nohz_restart_sched_tick();
106
107 preempt_enable_no_resched();
108 schedule();
109 preempt_disable();
110 check_pgt_cache();
111 }
112}
113
114void flush_thread(void)
115{
116}
117
118/* FIXME - here will be a proposed change -> remove nr parameter */
119int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
120 unsigned long unused,
121 struct task_struct *p, struct pt_regs *regs)
122{
123 struct pt_regs *childregs = task_pt_regs(p);
124 struct thread_info *ti = task_thread_info(p);
125
126 *childregs = *regs;
127 if (user_mode(regs))
128 childregs->r1 = usp;
129 else
130 childregs->r1 = ((unsigned long) ti) + THREAD_SIZE;
131
132 memset(&ti->cpu_context, 0, sizeof(struct cpu_context));
133 ti->cpu_context.r1 = (unsigned long)childregs;
134 ti->cpu_context.msr = (unsigned long)childregs->msr;
135 ti->cpu_context.r15 = (unsigned long)ret_from_fork - 8;
136
137 if (clone_flags & CLONE_SETTLS)
138 ;
139
140 return 0;
141}
142
143/*
144 * Return saved PC of a blocked thread.
145 */
146unsigned long thread_saved_pc(struct task_struct *tsk)
147{
148 struct cpu_context *ctx =
149 &(((struct thread_info *)(tsk->stack))->cpu_context);
150
151 /* Check whether the thread is blocked in resume() */
152 if (in_sched_functions(ctx->r15))
153 return (unsigned long)ctx->r15;
154 else
155 return ctx->r14;
156}
157
158static void kernel_thread_helper(int (*fn)(void *), void *arg)
159{
160 fn(arg);
161 do_exit(-1);
162}
163
164int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
165{
166 struct pt_regs regs;
167 int ret;
168
169 memset(&regs, 0, sizeof(regs));
170 /* store them in non-volatile registers */
171 regs.r5 = (unsigned long)fn;
172 regs.r6 = (unsigned long)arg;
173 local_save_flags(regs.msr);
174 regs.pc = (unsigned long)kernel_thread_helper;
175 regs.kernel_mode = 1;
176
177 ret = do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
178 &regs, 0, NULL, NULL);
179
180 return ret;
181}
182
183unsigned long get_wchan(struct task_struct *p)
184{
185/* TBD (used by procfs) */
186 return 0;
187}
diff --git a/arch/microblaze/kernel/prom.c b/arch/microblaze/kernel/prom.c
new file mode 100644
index 000000000000..475b1fac5cfd
--- /dev/null
+++ b/arch/microblaze/kernel/prom.c
@@ -0,0 +1,1147 @@
1/*
2 * Procedures for creating, accessing and interpreting the device tree.
3 *
4 * Paul Mackerras August 1996.
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Adapted for 64bit PowerPC by Dave Engebretsen and Peter Bergner.
8 * {engebret|bergner}@us.ibm.com
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License
12 * as published by the Free Software Foundation; either version
13 * 2 of the License, or (at your option) any later version.
14 */
15
16#include <stdarg.h>
17#include <linux/kernel.h>
18#include <linux/string.h>
19#include <linux/init.h>
20#include <linux/threads.h>
21#include <linux/spinlock.h>
22#include <linux/types.h>
23#include <linux/pci.h>
24#include <linux/stringify.h>
25#include <linux/delay.h>
26#include <linux/initrd.h>
27#include <linux/bitops.h>
28#include <linux/module.h>
29#include <linux/kexec.h>
30#include <linux/debugfs.h>
31#include <linux/irq.h>
32#include <linux/lmb.h>
33
34#include <asm/prom.h>
35#include <asm/page.h>
36#include <asm/processor.h>
37#include <asm/irq.h>
38#include <linux/io.h>
39#include <asm/system.h>
40#include <asm/mmu.h>
41#include <asm/pgtable.h>
42#include <linux/pci.h>
43#include <asm/sections.h>
44#include <asm/pci-bridge.h>
45
46static int __initdata dt_root_addr_cells;
47static int __initdata dt_root_size_cells;
48
49typedef u32 cell_t;
50
51static struct boot_param_header *initial_boot_params;
52
53/* export that to outside world */
54struct device_node *of_chosen;
55
56static inline char *find_flat_dt_string(u32 offset)
57{
58 return ((char *)initial_boot_params) +
59 initial_boot_params->off_dt_strings + offset;
60}
61
62/**
63 * This function is used to scan the flattened device-tree, it is
64 * used to extract the memory informations at boot before we can
65 * unflatten the tree
66 */
67int __init of_scan_flat_dt(int (*it)(unsigned long node,
68 const char *uname, int depth,
69 void *data),
70 void *data)
71{
72 unsigned long p = ((unsigned long)initial_boot_params) +
73 initial_boot_params->off_dt_struct;
74 int rc = 0;
75 int depth = -1;
76
77 do {
78 u32 tag = *((u32 *)p);
79 char *pathp;
80
81 p += 4;
82 if (tag == OF_DT_END_NODE) {
83 depth--;
84 continue;
85 }
86 if (tag == OF_DT_NOP)
87 continue;
88 if (tag == OF_DT_END)
89 break;
90 if (tag == OF_DT_PROP) {
91 u32 sz = *((u32 *)p);
92 p += 8;
93 if (initial_boot_params->version < 0x10)
94 p = _ALIGN(p, sz >= 8 ? 8 : 4);
95 p += sz;
96 p = _ALIGN(p, 4);
97 continue;
98 }
99 if (tag != OF_DT_BEGIN_NODE) {
100 printk(KERN_WARNING "Invalid tag %x scanning flattened"
101 " device tree !\n", tag);
102 return -EINVAL;
103 }
104 depth++;
105 pathp = (char *)p;
106 p = _ALIGN(p + strlen(pathp) + 1, 4);
107 if ((*pathp) == '/') {
108 char *lp, *np;
109 for (lp = NULL, np = pathp; *np; np++)
110 if ((*np) == '/')
111 lp = np+1;
112 if (lp != NULL)
113 pathp = lp;
114 }
115 rc = it(p, pathp, depth, data);
116 if (rc != 0)
117 break;
118 } while (1);
119
120 return rc;
121}
122
123unsigned long __init of_get_flat_dt_root(void)
124{
125 unsigned long p = ((unsigned long)initial_boot_params) +
126 initial_boot_params->off_dt_struct;
127
128 while (*((u32 *)p) == OF_DT_NOP)
129 p += 4;
130 BUG_ON(*((u32 *)p) != OF_DT_BEGIN_NODE);
131 p += 4;
132 return _ALIGN(p + strlen((char *)p) + 1, 4);
133}
134
135/**
136 * This function can be used within scan_flattened_dt callback to get
137 * access to properties
138 */
139void *__init of_get_flat_dt_prop(unsigned long node, const char *name,
140 unsigned long *size)
141{
142 unsigned long p = node;
143
144 do {
145 u32 tag = *((u32 *)p);
146 u32 sz, noff;
147 const char *nstr;
148
149 p += 4;
150 if (tag == OF_DT_NOP)
151 continue;
152 if (tag != OF_DT_PROP)
153 return NULL;
154
155 sz = *((u32 *)p);
156 noff = *((u32 *)(p + 4));
157 p += 8;
158 if (initial_boot_params->version < 0x10)
159 p = _ALIGN(p, sz >= 8 ? 8 : 4);
160
161 nstr = find_flat_dt_string(noff);
162 if (nstr == NULL) {
163 printk(KERN_WARNING "Can't find property index"
164 " name !\n");
165 return NULL;
166 }
167 if (strcmp(name, nstr) == 0) {
168 if (size)
169 *size = sz;
170 return (void *)p;
171 }
172 p += sz;
173 p = _ALIGN(p, 4);
174 } while (1);
175}
176
177int __init of_flat_dt_is_compatible(unsigned long node, const char *compat)
178{
179 const char *cp;
180 unsigned long cplen, l;
181
182 cp = of_get_flat_dt_prop(node, "compatible", &cplen);
183 if (cp == NULL)
184 return 0;
185 while (cplen > 0) {
186 if (strncasecmp(cp, compat, strlen(compat)) == 0)
187 return 1;
188 l = strlen(cp) + 1;
189 cp += l;
190 cplen -= l;
191 }
192
193 return 0;
194}
195
196static void *__init unflatten_dt_alloc(unsigned long *mem, unsigned long size,
197 unsigned long align)
198{
199 void *res;
200
201 *mem = _ALIGN(*mem, align);
202 res = (void *)*mem;
203 *mem += size;
204
205 return res;
206}
207
208static unsigned long __init unflatten_dt_node(unsigned long mem,
209 unsigned long *p,
210 struct device_node *dad,
211 struct device_node ***allnextpp,
212 unsigned long fpsize)
213{
214 struct device_node *np;
215 struct property *pp, **prev_pp = NULL;
216 char *pathp;
217 u32 tag;
218 unsigned int l, allocl;
219 int has_name = 0;
220 int new_format = 0;
221
222 tag = *((u32 *)(*p));
223 if (tag != OF_DT_BEGIN_NODE) {
224 printk("Weird tag at start of node: %x\n", tag);
225 return mem;
226 }
227 *p += 4;
228 pathp = (char *)*p;
229 l = allocl = strlen(pathp) + 1;
230 *p = _ALIGN(*p + l, 4);
231
232 /* version 0x10 has a more compact unit name here instead of the full
233 * path. we accumulate the full path size using "fpsize", we'll rebuild
234 * it later. We detect this because the first character of the name is
235 * not '/'.
236 */
237 if ((*pathp) != '/') {
238 new_format = 1;
239 if (fpsize == 0) {
240 /* root node: special case. fpsize accounts for path
241 * plus terminating zero. root node only has '/', so
242 * fpsize should be 2, but we want to avoid the first
243 * level nodes to have two '/' so we use fpsize 1 here
244 */
245 fpsize = 1;
246 allocl = 2;
247 } else {
248 /* account for '/' and path size minus terminal 0
249 * already in 'l'
250 */
251 fpsize += l;
252 allocl = fpsize;
253 }
254 }
255
256 np = unflatten_dt_alloc(&mem, sizeof(struct device_node) + allocl,
257 __alignof__(struct device_node));
258 if (allnextpp) {
259 memset(np, 0, sizeof(*np));
260 np->full_name = ((char *)np) + sizeof(struct device_node);
261 if (new_format) {
262 char *p2 = np->full_name;
263 /* rebuild full path for new format */
264 if (dad && dad->parent) {
265 strcpy(p2, dad->full_name);
266#ifdef DEBUG
267 if ((strlen(p2) + l + 1) != allocl) {
268 pr_debug("%s: p: %d, l: %d, a: %d\n",
269 pathp, (int)strlen(p2),
270 l, allocl);
271 }
272#endif
273 p2 += strlen(p2);
274 }
275 *(p2++) = '/';
276 memcpy(p2, pathp, l);
277 } else
278 memcpy(np->full_name, pathp, l);
279 prev_pp = &np->properties;
280 **allnextpp = np;
281 *allnextpp = &np->allnext;
282 if (dad != NULL) {
283 np->parent = dad;
284 /* we temporarily use the next field as `last_child'*/
285 if (dad->next == NULL)
286 dad->child = np;
287 else
288 dad->next->sibling = np;
289 dad->next = np;
290 }
291 kref_init(&np->kref);
292 }
293 while (1) {
294 u32 sz, noff;
295 char *pname;
296
297 tag = *((u32 *)(*p));
298 if (tag == OF_DT_NOP) {
299 *p += 4;
300 continue;
301 }
302 if (tag != OF_DT_PROP)
303 break;
304 *p += 4;
305 sz = *((u32 *)(*p));
306 noff = *((u32 *)((*p) + 4));
307 *p += 8;
308 if (initial_boot_params->version < 0x10)
309 *p = _ALIGN(*p, sz >= 8 ? 8 : 4);
310
311 pname = find_flat_dt_string(noff);
312 if (pname == NULL) {
313 printk(KERN_INFO
314 "Can't find property name in list !\n");
315 break;
316 }
317 if (strcmp(pname, "name") == 0)
318 has_name = 1;
319 l = strlen(pname) + 1;
320 pp = unflatten_dt_alloc(&mem, sizeof(struct property),
321 __alignof__(struct property));
322 if (allnextpp) {
323 if (strcmp(pname, "linux,phandle") == 0) {
324 np->node = *((u32 *)*p);
325 if (np->linux_phandle == 0)
326 np->linux_phandle = np->node;
327 }
328 if (strcmp(pname, "ibm,phandle") == 0)
329 np->linux_phandle = *((u32 *)*p);
330 pp->name = pname;
331 pp->length = sz;
332 pp->value = (void *)*p;
333 *prev_pp = pp;
334 prev_pp = &pp->next;
335 }
336 *p = _ALIGN((*p) + sz, 4);
337 }
338 /* with version 0x10 we may not have the name property, recreate
339 * it here from the unit name if absent
340 */
341 if (!has_name) {
342 char *p1 = pathp, *ps = pathp, *pa = NULL;
343 int sz;
344
345 while (*p1) {
346 if ((*p1) == '@')
347 pa = p1;
348 if ((*p1) == '/')
349 ps = p1 + 1;
350 p1++;
351 }
352 if (pa < ps)
353 pa = p1;
354 sz = (pa - ps) + 1;
355 pp = unflatten_dt_alloc(&mem, sizeof(struct property) + sz,
356 __alignof__(struct property));
357 if (allnextpp) {
358 pp->name = "name";
359 pp->length = sz;
360 pp->value = pp + 1;
361 *prev_pp = pp;
362 prev_pp = &pp->next;
363 memcpy(pp->value, ps, sz - 1);
364 ((char *)pp->value)[sz - 1] = 0;
365 pr_debug("fixed up name for %s -> %s\n", pathp,
366 (char *)pp->value);
367 }
368 }
369 if (allnextpp) {
370 *prev_pp = NULL;
371 np->name = of_get_property(np, "name", NULL);
372 np->type = of_get_property(np, "device_type", NULL);
373
374 if (!np->name)
375 np->name = "<NULL>";
376 if (!np->type)
377 np->type = "<NULL>";
378 }
379 while (tag == OF_DT_BEGIN_NODE) {
380 mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize);
381 tag = *((u32 *)(*p));
382 }
383 if (tag != OF_DT_END_NODE) {
384 printk(KERN_INFO "Weird tag at end of node: %x\n", tag);
385 return mem;
386 }
387 *p += 4;
388 return mem;
389}
390
391/**
392 * unflattens the device-tree passed by the firmware, creating the
393 * tree of struct device_node. It also fills the "name" and "type"
394 * pointers of the nodes so the normal device-tree walking functions
395 * can be used (this used to be done by finish_device_tree)
396 */
397void __init unflatten_device_tree(void)
398{
399 unsigned long start, mem, size;
400 struct device_node **allnextp = &allnodes;
401
402 pr_debug(" -> unflatten_device_tree()\n");
403
404 /* First pass, scan for size */
405 start = ((unsigned long)initial_boot_params) +
406 initial_boot_params->off_dt_struct;
407 size = unflatten_dt_node(0, &start, NULL, NULL, 0);
408 size = (size | 3) + 1;
409
410 pr_debug(" size is %lx, allocating...\n", size);
411
412 /* Allocate memory for the expanded device tree */
413 mem = lmb_alloc(size + 4, __alignof__(struct device_node));
414 mem = (unsigned long) __va(mem);
415
416 ((u32 *)mem)[size / 4] = 0xdeadbeef;
417
418 pr_debug(" unflattening %lx...\n", mem);
419
420 /* Second pass, do actual unflattening */
421 start = ((unsigned long)initial_boot_params) +
422 initial_boot_params->off_dt_struct;
423 unflatten_dt_node(mem, &start, NULL, &allnextp, 0);
424 if (*((u32 *)start) != OF_DT_END)
425 printk(KERN_WARNING "Weird tag at end of tree: %08x\n",
426 *((u32 *)start));
427 if (((u32 *)mem)[size / 4] != 0xdeadbeef)
428 printk(KERN_WARNING "End of tree marker overwritten: %08x\n",
429 ((u32 *)mem)[size / 4]);
430 *allnextp = NULL;
431
432 /* Get pointer to OF "/chosen" node for use everywhere */
433 of_chosen = of_find_node_by_path("/chosen");
434 if (of_chosen == NULL)
435 of_chosen = of_find_node_by_path("/chosen@0");
436
437 pr_debug(" <- unflatten_device_tree()\n");
438}
439
440#define early_init_dt_scan_drconf_memory(node) 0
441
442static int __init early_init_dt_scan_cpus(unsigned long node,
443 const char *uname, int depth,
444 void *data)
445{
446 static int logical_cpuid;
447 char *type = of_get_flat_dt_prop(node, "device_type", NULL);
448 const u32 *intserv;
449 int i, nthreads;
450 int found = 0;
451
452 /* We are scanning "cpu" nodes only */
453 if (type == NULL || strcmp(type, "cpu") != 0)
454 return 0;
455
456 /* Get physical cpuid */
457 intserv = of_get_flat_dt_prop(node, "reg", NULL);
458 nthreads = 1;
459
460 /*
461 * Now see if any of these threads match our boot cpu.
462 * NOTE: This must match the parsing done in smp_setup_cpu_maps.
463 */
464 for (i = 0; i < nthreads; i++) {
465 /*
466 * version 2 of the kexec param format adds the phys cpuid of
467 * booted proc.
468 */
469 if (initial_boot_params && initial_boot_params->version >= 2) {
470 if (intserv[i] ==
471 initial_boot_params->boot_cpuid_phys) {
472 found = 1;
473 break;
474 }
475 } else {
476 /*
477 * Check if it's the boot-cpu, set it's hw index now,
478 * unfortunately this format did not support booting
479 * off secondary threads.
480 */
481 if (of_get_flat_dt_prop(node,
482 "linux,boot-cpu", NULL) != NULL) {
483 found = 1;
484 break;
485 }
486 }
487
488#ifdef CONFIG_SMP
489 /* logical cpu id is always 0 on UP kernels */
490 logical_cpuid++;
491#endif
492 }
493
494 if (found) {
495 pr_debug("boot cpu: logical %d physical %d\n", logical_cpuid,
496 intserv[i]);
497 boot_cpuid = logical_cpuid;
498 }
499
500 return 0;
501}
502
503#ifdef CONFIG_BLK_DEV_INITRD
504static void __init early_init_dt_check_for_initrd(unsigned long node)
505{
506 unsigned long l;
507 u32 *prop;
508
509 pr_debug("Looking for initrd properties... ");
510
511 prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
512 if (prop) {
513 initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
514
515 prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
516 if (prop) {
517 initrd_end = (unsigned long)
518 __va(of_read_ulong(prop, l/4));
519 initrd_below_start_ok = 1;
520 } else {
521 initrd_start = 0;
522 }
523 }
524
525 pr_debug("initrd_start=0x%lx initrd_end=0x%lx\n",
526 initrd_start, initrd_end);
527}
528#else
529static inline void early_init_dt_check_for_initrd(unsigned long node)
530{
531}
532#endif /* CONFIG_BLK_DEV_INITRD */
533
534static int __init early_init_dt_scan_chosen(unsigned long node,
535 const char *uname, int depth, void *data)
536{
537 unsigned long l;
538 char *p;
539
540 pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
541
542 if (depth != 1 ||
543 (strcmp(uname, "chosen") != 0 &&
544 strcmp(uname, "chosen@0") != 0))
545 return 0;
546
547#ifdef CONFIG_KEXEC
548 lprop = (u64 *)of_get_flat_dt_prop(node,
549 "linux,crashkernel-base", NULL);
550 if (lprop)
551 crashk_res.start = *lprop;
552
553 lprop = (u64 *)of_get_flat_dt_prop(node,
554 "linux,crashkernel-size", NULL);
555 if (lprop)
556 crashk_res.end = crashk_res.start + *lprop - 1;
557#endif
558
559 early_init_dt_check_for_initrd(node);
560
561 /* Retreive command line */
562 p = of_get_flat_dt_prop(node, "bootargs", &l);
563 if (p != NULL && l > 0)
564 strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE));
565
566#ifdef CONFIG_CMDLINE
567 if (p == NULL || l == 0 || (l == 1 && (*p) == 0))
568 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
569#endif /* CONFIG_CMDLINE */
570
571 pr_debug("Command line is: %s\n", cmd_line);
572
573 /* break now */
574 return 1;
575}
576
577static int __init early_init_dt_scan_root(unsigned long node,
578 const char *uname, int depth, void *data)
579{
580 u32 *prop;
581
582 if (depth != 0)
583 return 0;
584
585 prop = of_get_flat_dt_prop(node, "#size-cells", NULL);
586 dt_root_size_cells = (prop == NULL) ? 1 : *prop;
587 pr_debug("dt_root_size_cells = %x\n", dt_root_size_cells);
588
589 prop = of_get_flat_dt_prop(node, "#address-cells", NULL);
590 dt_root_addr_cells = (prop == NULL) ? 2 : *prop;
591 pr_debug("dt_root_addr_cells = %x\n", dt_root_addr_cells);
592
593 /* break now */
594 return 1;
595}
596
597static u64 __init dt_mem_next_cell(int s, cell_t **cellp)
598{
599 cell_t *p = *cellp;
600
601 *cellp = p + s;
602 return of_read_number(p, s);
603}
604
605static int __init early_init_dt_scan_memory(unsigned long node,
606 const char *uname, int depth, void *data)
607{
608 char *type = of_get_flat_dt_prop(node, "device_type", NULL);
609 cell_t *reg, *endp;
610 unsigned long l;
611
612 /* Look for the ibm,dynamic-reconfiguration-memory node */
613/* if (depth == 1 &&
614 strcmp(uname, "ibm,dynamic-reconfiguration-memory") == 0)
615 return early_init_dt_scan_drconf_memory(node);
616*/
617 /* We are scanning "memory" nodes only */
618 if (type == NULL) {
619 /*
620 * The longtrail doesn't have a device_type on the
621 * /memory node, so look for the node called /memory@0.
622 */
623 if (depth != 1 || strcmp(uname, "memory@0") != 0)
624 return 0;
625 } else if (strcmp(type, "memory") != 0)
626 return 0;
627
628 reg = (cell_t *)of_get_flat_dt_prop(node, "linux,usable-memory", &l);
629 if (reg == NULL)
630 reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
631 if (reg == NULL)
632 return 0;
633
634 endp = reg + (l / sizeof(cell_t));
635
636 pr_debug("memory scan node %s, reg size %ld, data: %x %x %x %x,\n",
637 uname, l, reg[0], reg[1], reg[2], reg[3]);
638
639 while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
640 u64 base, size;
641
642 base = dt_mem_next_cell(dt_root_addr_cells, &reg);
643 size = dt_mem_next_cell(dt_root_size_cells, &reg);
644
645 if (size == 0)
646 continue;
647 pr_debug(" - %llx , %llx\n", (unsigned long long)base,
648 (unsigned long long)size);
649
650 lmb_add(base, size);
651 }
652 return 0;
653}
654
655#ifdef CONFIG_PHYP_DUMP
656/**
657 * phyp_dump_calculate_reserve_size() - reserve variable boot area 5% or arg
658 *
659 * Function to find the largest size we need to reserve
660 * during early boot process.
661 *
662 * It either looks for boot param and returns that OR
663 * returns larger of 256 or 5% rounded down to multiples of 256MB.
664 *
665 */
666static inline unsigned long phyp_dump_calculate_reserve_size(void)
667{
668 unsigned long tmp;
669
670 if (phyp_dump_info->reserve_bootvar)
671 return phyp_dump_info->reserve_bootvar;
672
673 /* divide by 20 to get 5% of value */
674 tmp = lmb_end_of_DRAM();
675 do_div(tmp, 20);
676
677 /* round it down in multiples of 256 */
678 tmp = tmp & ~0x0FFFFFFFUL;
679
680 return (tmp > PHYP_DUMP_RMR_END ? tmp : PHYP_DUMP_RMR_END);
681}
682
683/**
684 * phyp_dump_reserve_mem() - reserve all not-yet-dumped mmemory
685 *
686 * This routine may reserve memory regions in the kernel only
687 * if the system is supported and a dump was taken in last
688 * boot instance or if the hardware is supported and the
689 * scratch area needs to be setup. In other instances it returns
690 * without reserving anything. The memory in case of dump being
691 * active is freed when the dump is collected (by userland tools).
692 */
693static void __init phyp_dump_reserve_mem(void)
694{
695 unsigned long base, size;
696 unsigned long variable_reserve_size;
697
698 if (!phyp_dump_info->phyp_dump_configured) {
699 printk(KERN_ERR "Phyp-dump not supported on this hardware\n");
700 return;
701 }
702
703 if (!phyp_dump_info->phyp_dump_at_boot) {
704 printk(KERN_INFO "Phyp-dump disabled at boot time\n");
705 return;
706 }
707
708 variable_reserve_size = phyp_dump_calculate_reserve_size();
709
710 if (phyp_dump_info->phyp_dump_is_active) {
711 /* Reserve *everything* above RMR.Area freed by userland tools*/
712 base = variable_reserve_size;
713 size = lmb_end_of_DRAM() - base;
714
715 /* XXX crashed_ram_end is wrong, since it may be beyond
716 * the memory_limit, it will need to be adjusted. */
717 lmb_reserve(base, size);
718
719 phyp_dump_info->init_reserve_start = base;
720 phyp_dump_info->init_reserve_size = size;
721 } else {
722 size = phyp_dump_info->cpu_state_size +
723 phyp_dump_info->hpte_region_size +
724 variable_reserve_size;
725 base = lmb_end_of_DRAM() - size;
726 lmb_reserve(base, size);
727 phyp_dump_info->init_reserve_start = base;
728 phyp_dump_info->init_reserve_size = size;
729 }
730}
731#else
732static inline void __init phyp_dump_reserve_mem(void) {}
733#endif /* CONFIG_PHYP_DUMP && CONFIG_PPC_RTAS */
734
735#ifdef CONFIG_EARLY_PRINTK
736/* MS this is Microblaze specifig function */
737static int __init early_init_dt_scan_serial(unsigned long node,
738 const char *uname, int depth, void *data)
739{
740 unsigned long l;
741 char *p;
742 int *addr;
743
744 pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
745
746/* find all serial nodes */
747 if (strncmp(uname, "serial", 6) != 0)
748 return 0;
749
750 early_init_dt_check_for_initrd(node);
751
752/* find compatible node with uartlite */
753 p = of_get_flat_dt_prop(node, "compatible", &l);
754 if ((strncmp(p, "xlnx,xps-uartlite", 17) != 0) &&
755 (strncmp(p, "xlnx,opb-uartlite", 17) != 0))
756 return 0;
757
758 addr = of_get_flat_dt_prop(node, "reg", &l);
759 return *addr; /* return address */
760}
761
762/* this function is looking for early uartlite console - Microblaze specific */
763int __init early_uartlite_console(void)
764{
765 return of_scan_flat_dt(early_init_dt_scan_serial, NULL);
766}
767#endif
768
769void __init early_init_devtree(void *params)
770{
771 pr_debug(" -> early_init_devtree(%p)\n", params);
772
773 /* Setup flat device-tree pointer */
774 initial_boot_params = params;
775
776#ifdef CONFIG_PHYP_DUMP
777 /* scan tree to see if dump occured during last boot */
778 of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL);
779#endif
780
781 /* Retrieve various informations from the /chosen node of the
782 * device-tree, including the platform type, initrd location and
783 * size, TCE reserve, and more ...
784 */
785 of_scan_flat_dt(early_init_dt_scan_chosen, NULL);
786
787 /* Scan memory nodes and rebuild LMBs */
788 lmb_init();
789 of_scan_flat_dt(early_init_dt_scan_root, NULL);
790 of_scan_flat_dt(early_init_dt_scan_memory, NULL);
791
792 /* Save command line for /proc/cmdline and then parse parameters */
793 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
794 parse_early_param();
795
796 lmb_analyze();
797
798 pr_debug("Phys. mem: %lx\n", (unsigned long) lmb_phys_mem_size());
799
800 pr_debug("Scanning CPUs ...\n");
801
802 /* Retreive CPU related informations from the flat tree
803 * (altivec support, boot CPU ID, ...)
804 */
805 of_scan_flat_dt(early_init_dt_scan_cpus, NULL);
806
807 pr_debug(" <- early_init_devtree()\n");
808}
809
810/**
811 * Indicates whether the root node has a given value in its
812 * compatible property.
813 */
814int machine_is_compatible(const char *compat)
815{
816 struct device_node *root;
817 int rc = 0;
818
819 root = of_find_node_by_path("/");
820 if (root) {
821 rc = of_device_is_compatible(root, compat);
822 of_node_put(root);
823 }
824 return rc;
825}
826EXPORT_SYMBOL(machine_is_compatible);
827
828/*******
829 *
830 * New implementation of the OF "find" APIs, return a refcounted
831 * object, call of_node_put() when done. The device tree and list
832 * are protected by a rw_lock.
833 *
834 * Note that property management will need some locking as well,
835 * this isn't dealt with yet.
836 *
837 *******/
838
839/**
840 * of_find_node_by_phandle - Find a node given a phandle
841 * @handle: phandle of the node to find
842 *
843 * Returns a node pointer with refcount incremented, use
844 * of_node_put() on it when done.
845 */
846struct device_node *of_find_node_by_phandle(phandle handle)
847{
848 struct device_node *np;
849
850 read_lock(&devtree_lock);
851 for (np = allnodes; np != NULL; np = np->allnext)
852 if (np->linux_phandle == handle)
853 break;
854 of_node_get(np);
855 read_unlock(&devtree_lock);
856 return np;
857}
858EXPORT_SYMBOL(of_find_node_by_phandle);
859
860/**
861 * of_find_all_nodes - Get next node in global list
862 * @prev: Previous node or NULL to start iteration
863 * of_node_put() will be called on it
864 *
865 * Returns a node pointer with refcount incremented, use
866 * of_node_put() on it when done.
867 */
868struct device_node *of_find_all_nodes(struct device_node *prev)
869{
870 struct device_node *np;
871
872 read_lock(&devtree_lock);
873 np = prev ? prev->allnext : allnodes;
874 for (; np != NULL; np = np->allnext)
875 if (of_node_get(np))
876 break;
877 of_node_put(prev);
878 read_unlock(&devtree_lock);
879 return np;
880}
881EXPORT_SYMBOL(of_find_all_nodes);
882
883/**
884 * of_node_get - Increment refcount of a node
885 * @node: Node to inc refcount, NULL is supported to
886 * simplify writing of callers
887 *
888 * Returns node.
889 */
890struct device_node *of_node_get(struct device_node *node)
891{
892 if (node)
893 kref_get(&node->kref);
894 return node;
895}
896EXPORT_SYMBOL(of_node_get);
897
898static inline struct device_node *kref_to_device_node(struct kref *kref)
899{
900 return container_of(kref, struct device_node, kref);
901}
902
903/**
904 * of_node_release - release a dynamically allocated node
905 * @kref: kref element of the node to be released
906 *
907 * In of_node_put() this function is passed to kref_put()
908 * as the destructor.
909 */
910static void of_node_release(struct kref *kref)
911{
912 struct device_node *node = kref_to_device_node(kref);
913 struct property *prop = node->properties;
914
915 /* We should never be releasing nodes that haven't been detached. */
916 if (!of_node_check_flag(node, OF_DETACHED)) {
917 printk(KERN_INFO "WARNING: Bad of_node_put() on %s\n",
918 node->full_name);
919 dump_stack();
920 kref_init(&node->kref);
921 return;
922 }
923
924 if (!of_node_check_flag(node, OF_DYNAMIC))
925 return;
926
927 while (prop) {
928 struct property *next = prop->next;
929 kfree(prop->name);
930 kfree(prop->value);
931 kfree(prop);
932 prop = next;
933
934 if (!prop) {
935 prop = node->deadprops;
936 node->deadprops = NULL;
937 }
938 }
939 kfree(node->full_name);
940 kfree(node->data);
941 kfree(node);
942}
943
944/**
945 * of_node_put - Decrement refcount of a node
946 * @node: Node to dec refcount, NULL is supported to
947 * simplify writing of callers
948 *
949 */
950void of_node_put(struct device_node *node)
951{
952 if (node)
953 kref_put(&node->kref, of_node_release);
954}
955EXPORT_SYMBOL(of_node_put);
956
957/*
958 * Plug a device node into the tree and global list.
959 */
960void of_attach_node(struct device_node *np)
961{
962 unsigned long flags;
963
964 write_lock_irqsave(&devtree_lock, flags);
965 np->sibling = np->parent->child;
966 np->allnext = allnodes;
967 np->parent->child = np;
968 allnodes = np;
969 write_unlock_irqrestore(&devtree_lock, flags);
970}
971
972/*
973 * "Unplug" a node from the device tree. The caller must hold
974 * a reference to the node. The memory associated with the node
975 * is not freed until its refcount goes to zero.
976 */
977void of_detach_node(struct device_node *np)
978{
979 struct device_node *parent;
980 unsigned long flags;
981
982 write_lock_irqsave(&devtree_lock, flags);
983
984 parent = np->parent;
985 if (!parent)
986 goto out_unlock;
987
988 if (allnodes == np)
989 allnodes = np->allnext;
990 else {
991 struct device_node *prev;
992 for (prev = allnodes;
993 prev->allnext != np;
994 prev = prev->allnext)
995 ;
996 prev->allnext = np->allnext;
997 }
998
999 if (parent->child == np)
1000 parent->child = np->sibling;
1001 else {
1002 struct device_node *prevsib;
1003 for (prevsib = np->parent->child;
1004 prevsib->sibling != np;
1005 prevsib = prevsib->sibling)
1006 ;
1007 prevsib->sibling = np->sibling;
1008 }
1009
1010 of_node_set_flag(np, OF_DETACHED);
1011
1012out_unlock:
1013 write_unlock_irqrestore(&devtree_lock, flags);
1014}
1015
1016/*
1017 * Add a property to a node
1018 */
1019int prom_add_property(struct device_node *np, struct property *prop)
1020{
1021 struct property **next;
1022 unsigned long flags;
1023
1024 prop->next = NULL;
1025 write_lock_irqsave(&devtree_lock, flags);
1026 next = &np->properties;
1027 while (*next) {
1028 if (strcmp(prop->name, (*next)->name) == 0) {
1029 /* duplicate ! don't insert it */
1030 write_unlock_irqrestore(&devtree_lock, flags);
1031 return -1;
1032 }
1033 next = &(*next)->next;
1034 }
1035 *next = prop;
1036 write_unlock_irqrestore(&devtree_lock, flags);
1037
1038#ifdef CONFIG_PROC_DEVICETREE
1039 /* try to add to proc as well if it was initialized */
1040 if (np->pde)
1041 proc_device_tree_add_prop(np->pde, prop);
1042#endif /* CONFIG_PROC_DEVICETREE */
1043
1044 return 0;
1045}
1046
1047/*
1048 * Remove a property from a node. Note that we don't actually
1049 * remove it, since we have given out who-knows-how-many pointers
1050 * to the data using get-property. Instead we just move the property
1051 * to the "dead properties" list, so it won't be found any more.
1052 */
1053int prom_remove_property(struct device_node *np, struct property *prop)
1054{
1055 struct property **next;
1056 unsigned long flags;
1057 int found = 0;
1058
1059 write_lock_irqsave(&devtree_lock, flags);
1060 next = &np->properties;
1061 while (*next) {
1062 if (*next == prop) {
1063 /* found the node */
1064 *next = prop->next;
1065 prop->next = np->deadprops;
1066 np->deadprops = prop;
1067 found = 1;
1068 break;
1069 }
1070 next = &(*next)->next;
1071 }
1072 write_unlock_irqrestore(&devtree_lock, flags);
1073
1074 if (!found)
1075 return -ENODEV;
1076
1077#ifdef CONFIG_PROC_DEVICETREE
1078 /* try to remove the proc node as well */
1079 if (np->pde)
1080 proc_device_tree_remove_prop(np->pde, prop);
1081#endif /* CONFIG_PROC_DEVICETREE */
1082
1083 return 0;
1084}
1085
1086/*
1087 * Update a property in a node. Note that we don't actually
1088 * remove it, since we have given out who-knows-how-many pointers
1089 * to the data using get-property. Instead we just move the property
1090 * to the "dead properties" list, and add the new property to the
1091 * property list
1092 */
1093int prom_update_property(struct device_node *np,
1094 struct property *newprop,
1095 struct property *oldprop)
1096{
1097 struct property **next;
1098 unsigned long flags;
1099 int found = 0;
1100
1101 write_lock_irqsave(&devtree_lock, flags);
1102 next = &np->properties;
1103 while (*next) {
1104 if (*next == oldprop) {
1105 /* found the node */
1106 newprop->next = oldprop->next;
1107 *next = newprop;
1108 oldprop->next = np->deadprops;
1109 np->deadprops = oldprop;
1110 found = 1;
1111 break;
1112 }
1113 next = &(*next)->next;
1114 }
1115 write_unlock_irqrestore(&devtree_lock, flags);
1116
1117 if (!found)
1118 return -ENODEV;
1119
1120#ifdef CONFIG_PROC_DEVICETREE
1121 /* try to add to proc as well if it was initialized */
1122 if (np->pde)
1123 proc_device_tree_update_prop(np->pde, newprop, oldprop);
1124#endif /* CONFIG_PROC_DEVICETREE */
1125
1126 return 0;
1127}
1128
1129#if defined(CONFIG_DEBUG_FS) && defined(DEBUG)
1130static struct debugfs_blob_wrapper flat_dt_blob;
1131
1132static int __init export_flat_device_tree(void)
1133{
1134 struct dentry *d;
1135
1136 flat_dt_blob.data = initial_boot_params;
1137 flat_dt_blob.size = initial_boot_params->totalsize;
1138
1139 d = debugfs_create_blob("flat-device-tree", S_IFREG | S_IRUSR,
1140 of_debugfs_root, &flat_dt_blob);
1141 if (!d)
1142 return 1;
1143
1144 return 0;
1145}
1146device_initcall(export_flat_device_tree);
1147#endif
diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c
new file mode 100644
index 000000000000..ae0352ecd5a9
--- /dev/null
+++ b/arch/microblaze/kernel/prom_parse.c
@@ -0,0 +1,1025 @@
1#undef DEBUG
2
3#include <linux/kernel.h>
4#include <linux/string.h>
5#include <linux/pci_regs.h>
6#include <linux/module.h>
7#include <linux/ioport.h>
8#include <linux/etherdevice.h>
9#include <asm/prom.h>
10#include <asm/pci-bridge.h>
11
12#define PRu64 "%llx"
13
14/* Max address size we deal with */
15#define OF_MAX_ADDR_CELLS 4
16#define OF_CHECK_COUNTS(na, ns) ((na) > 0 && (na) <= OF_MAX_ADDR_CELLS && \
17 (ns) > 0)
18
19static struct of_bus *of_match_bus(struct device_node *np);
20static int __of_address_to_resource(struct device_node *dev,
21 const u32 *addrp, u64 size, unsigned int flags,
22 struct resource *r);
23
24/* Debug utility */
25#ifdef DEBUG
26static void of_dump_addr(const char *s, const u32 *addr, int na)
27{
28 printk(KERN_INFO "%s", s);
29 while (na--)
30 printk(KERN_INFO " %08x", *(addr++));
31 printk(KERN_INFO "\n");
32}
33#else
34static void of_dump_addr(const char *s, const u32 *addr, int na) { }
35#endif
36
37/* Callbacks for bus specific translators */
38struct of_bus {
39 const char *name;
40 const char *addresses;
41 int (*match)(struct device_node *parent);
42 void (*count_cells)(struct device_node *child,
43 int *addrc, int *sizec);
44 u64 (*map)(u32 *addr, const u32 *range,
45 int na, int ns, int pna);
46 int (*translate)(u32 *addr, u64 offset, int na);
47 unsigned int (*get_flags)(const u32 *addr);
48};
49
50/*
51 * Default translator (generic bus)
52 */
53
54static void of_bus_default_count_cells(struct device_node *dev,
55 int *addrc, int *sizec)
56{
57 if (addrc)
58 *addrc = of_n_addr_cells(dev);
59 if (sizec)
60 *sizec = of_n_size_cells(dev);
61}
62
63static u64 of_bus_default_map(u32 *addr, const u32 *range,
64 int na, int ns, int pna)
65{
66 u64 cp, s, da;
67
68 cp = of_read_number(range, na);
69 s = of_read_number(range + na + pna, ns);
70 da = of_read_number(addr, na);
71
72 pr_debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n",
73 cp, s, da);
74
75 if (da < cp || da >= (cp + s))
76 return OF_BAD_ADDR;
77 return da - cp;
78}
79
80static int of_bus_default_translate(u32 *addr, u64 offset, int na)
81{
82 u64 a = of_read_number(addr, na);
83 memset(addr, 0, na * 4);
84 a += offset;
85 if (na > 1)
86 addr[na - 2] = a >> 32;
87 addr[na - 1] = a & 0xffffffffu;
88
89 return 0;
90}
91
92static unsigned int of_bus_default_get_flags(const u32 *addr)
93{
94 return IORESOURCE_MEM;
95}
96
97#ifdef CONFIG_PCI
98/*
99 * PCI bus specific translator
100 */
101
102static int of_bus_pci_match(struct device_node *np)
103{
104 /* "vci" is for the /chaos bridge on 1st-gen PCI powermacs */
105 return !strcmp(np->type, "pci") || !strcmp(np->type, "vci");
106}
107
108static void of_bus_pci_count_cells(struct device_node *np,
109 int *addrc, int *sizec)
110{
111 if (addrc)
112 *addrc = 3;
113 if (sizec)
114 *sizec = 2;
115}
116
117static u64 of_bus_pci_map(u32 *addr, const u32 *range, int na, int ns, int pna)
118{
119 u64 cp, s, da;
120
121 /* Check address type match */
122 if ((addr[0] ^ range[0]) & 0x03000000)
123 return OF_BAD_ADDR;
124
125 /* Read address values, skipping high cell */
126 cp = of_read_number(range + 1, na - 1);
127 s = of_read_number(range + na + pna, ns);
128 da = of_read_number(addr + 1, na - 1);
129
130 pr_debug("OF: PCI map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
131
132 if (da < cp || da >= (cp + s))
133 return OF_BAD_ADDR;
134 return da - cp;
135}
136
137static int of_bus_pci_translate(u32 *addr, u64 offset, int na)
138{
139 return of_bus_default_translate(addr + 1, offset, na - 1);
140}
141
142static unsigned int of_bus_pci_get_flags(const u32 *addr)
143{
144 unsigned int flags = 0;
145 u32 w = addr[0];
146
147 switch ((w >> 24) & 0x03) {
148 case 0x01:
149 flags |= IORESOURCE_IO;
150 break;
151 case 0x02: /* 32 bits */
152 case 0x03: /* 64 bits */
153 flags |= IORESOURCE_MEM;
154 break;
155 }
156 if (w & 0x40000000)
157 flags |= IORESOURCE_PREFETCH;
158 return flags;
159}
160
161const u32 *of_get_pci_address(struct device_node *dev, int bar_no, u64 *size,
162 unsigned int *flags)
163{
164 const u32 *prop;
165 unsigned int psize;
166 struct device_node *parent;
167 struct of_bus *bus;
168 int onesize, i, na, ns;
169
170 /* Get parent & match bus type */
171 parent = of_get_parent(dev);
172 if (parent == NULL)
173 return NULL;
174 bus = of_match_bus(parent);
175 if (strcmp(bus->name, "pci")) {
176 of_node_put(parent);
177 return NULL;
178 }
179 bus->count_cells(dev, &na, &ns);
180 of_node_put(parent);
181 if (!OF_CHECK_COUNTS(na, ns))
182 return NULL;
183
184 /* Get "reg" or "assigned-addresses" property */
185 prop = of_get_property(dev, bus->addresses, &psize);
186 if (prop == NULL)
187 return NULL;
188 psize /= 4;
189
190 onesize = na + ns;
191 for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
192 if ((prop[0] & 0xff) == ((bar_no * 4) + PCI_BASE_ADDRESS_0)) {
193 if (size)
194 *size = of_read_number(prop + na, ns);
195 if (flags)
196 *flags = bus->get_flags(prop);
197 return prop;
198 }
199 return NULL;
200}
201EXPORT_SYMBOL(of_get_pci_address);
202
203int of_pci_address_to_resource(struct device_node *dev, int bar,
204 struct resource *r)
205{
206 const u32 *addrp;
207 u64 size;
208 unsigned int flags;
209
210 addrp = of_get_pci_address(dev, bar, &size, &flags);
211 if (addrp == NULL)
212 return -EINVAL;
213 return __of_address_to_resource(dev, addrp, size, flags, r);
214}
215EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
216
217static u8 of_irq_pci_swizzle(u8 slot, u8 pin)
218{
219 return (((pin - 1) + slot) % 4) + 1;
220}
221
222int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
223{
224 struct device_node *dn, *ppnode;
225 struct pci_dev *ppdev;
226 u32 lspec;
227 u32 laddr[3];
228 u8 pin;
229 int rc;
230
231 /* Check if we have a device node, if yes, fallback to standard OF
232 * parsing
233 */
234 dn = pci_device_to_OF_node(pdev);
235 if (dn)
236 return of_irq_map_one(dn, 0, out_irq);
237
238 /* Ok, we don't, time to have fun. Let's start by building up an
239 * interrupt spec. we assume #interrupt-cells is 1, which is standard
240 * for PCI. If you do different, then don't use that routine.
241 */
242 rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
243 if (rc != 0)
244 return rc;
245 /* No pin, exit */
246 if (pin == 0)
247 return -ENODEV;
248
249 /* Now we walk up the PCI tree */
250 lspec = pin;
251 for (;;) {
252 /* Get the pci_dev of our parent */
253 ppdev = pdev->bus->self;
254
255 /* Ouch, it's a host bridge... */
256 if (ppdev == NULL) {
257 struct pci_controller *host;
258 host = pci_bus_to_host(pdev->bus);
259 ppnode = host ? host->arch_data : NULL;
260 /* No node for host bridge ? give up */
261 if (ppnode == NULL)
262 return -EINVAL;
263 } else
264 /* We found a P2P bridge, check if it has a node */
265 ppnode = pci_device_to_OF_node(ppdev);
266
267 /* Ok, we have found a parent with a device-node, hand over to
268 * the OF parsing code.
269 * We build a unit address from the linux device to be used for
270 * resolution. Note that we use the linux bus number which may
271 * not match your firmware bus numbering.
272 * Fortunately, in most cases, interrupt-map-mask doesn't
273 * include the bus number as part of the matching.
274 * You should still be careful about that though if you intend
275 * to rely on this function (you ship a firmware that doesn't
276 * create device nodes for all PCI devices).
277 */
278 if (ppnode)
279 break;
280
281 /* We can only get here if we hit a P2P bridge with no node,
282 * let's do standard swizzling and try again
283 */
284 lspec = of_irq_pci_swizzle(PCI_SLOT(pdev->devfn), lspec);
285 pdev = ppdev;
286 }
287
288 laddr[0] = (pdev->bus->number << 16)
289 | (pdev->devfn << 8);
290 laddr[1] = laddr[2] = 0;
291 return of_irq_map_raw(ppnode, &lspec, 1, laddr, out_irq);
292}
293EXPORT_SYMBOL_GPL(of_irq_map_pci);
294#endif /* CONFIG_PCI */
295
296/*
297 * ISA bus specific translator
298 */
299
300static int of_bus_isa_match(struct device_node *np)
301{
302 return !strcmp(np->name, "isa");
303}
304
305static void of_bus_isa_count_cells(struct device_node *child,
306 int *addrc, int *sizec)
307{
308 if (addrc)
309 *addrc = 2;
310 if (sizec)
311 *sizec = 1;
312}
313
314static u64 of_bus_isa_map(u32 *addr, const u32 *range, int na, int ns, int pna)
315{
316 u64 cp, s, da;
317
318 /* Check address type match */
319 if ((addr[0] ^ range[0]) & 0x00000001)
320 return OF_BAD_ADDR;
321
322 /* Read address values, skipping high cell */
323 cp = of_read_number(range + 1, na - 1);
324 s = of_read_number(range + na + pna, ns);
325 da = of_read_number(addr + 1, na - 1);
326
327 pr_debug("OF: ISA map, cp="PRu64", s="PRu64", da="PRu64"\n", cp, s, da);
328
329 if (da < cp || da >= (cp + s))
330 return OF_BAD_ADDR;
331 return da - cp;
332}
333
334static int of_bus_isa_translate(u32 *addr, u64 offset, int na)
335{
336 return of_bus_default_translate(addr + 1, offset, na - 1);
337}
338
339static unsigned int of_bus_isa_get_flags(const u32 *addr)
340{
341 unsigned int flags = 0;
342 u32 w = addr[0];
343
344 if (w & 1)
345 flags |= IORESOURCE_IO;
346 else
347 flags |= IORESOURCE_MEM;
348 return flags;
349}
350
351/*
352 * Array of bus specific translators
353 */
354
355static struct of_bus of_busses[] = {
356#ifdef CONFIG_PCI
357 /* PCI */
358 {
359 .name = "pci",
360 .addresses = "assigned-addresses",
361 .match = of_bus_pci_match,
362 .count_cells = of_bus_pci_count_cells,
363 .map = of_bus_pci_map,
364 .translate = of_bus_pci_translate,
365 .get_flags = of_bus_pci_get_flags,
366 },
367#endif /* CONFIG_PCI */
368 /* ISA */
369 {
370 .name = "isa",
371 .addresses = "reg",
372 .match = of_bus_isa_match,
373 .count_cells = of_bus_isa_count_cells,
374 .map = of_bus_isa_map,
375 .translate = of_bus_isa_translate,
376 .get_flags = of_bus_isa_get_flags,
377 },
378 /* Default */
379 {
380 .name = "default",
381 .addresses = "reg",
382 .match = NULL,
383 .count_cells = of_bus_default_count_cells,
384 .map = of_bus_default_map,
385 .translate = of_bus_default_translate,
386 .get_flags = of_bus_default_get_flags,
387 },
388};
389
390static struct of_bus *of_match_bus(struct device_node *np)
391{
392 int i;
393
394 for (i = 0; i < ARRAY_SIZE(of_busses); i++)
395 if (!of_busses[i].match || of_busses[i].match(np))
396 return &of_busses[i];
397 BUG();
398 return NULL;
399}
400
401static int of_translate_one(struct device_node *parent, struct of_bus *bus,
402 struct of_bus *pbus, u32 *addr,
403 int na, int ns, int pna)
404{
405 const u32 *ranges;
406 unsigned int rlen;
407 int rone;
408 u64 offset = OF_BAD_ADDR;
409
410 /* Normally, an absence of a "ranges" property means we are
411 * crossing a non-translatable boundary, and thus the addresses
412 * below the current not cannot be converted to CPU physical ones.
413 * Unfortunately, while this is very clear in the spec, it's not
414 * what Apple understood, and they do have things like /uni-n or
415 * /ht nodes with no "ranges" property and a lot of perfectly
416 * useable mapped devices below them. Thus we treat the absence of
417 * "ranges" as equivalent to an empty "ranges" property which means
418 * a 1:1 translation at that level. It's up to the caller not to try
419 * to translate addresses that aren't supposed to be translated in
420 * the first place. --BenH.
421 */
422 ranges = of_get_property(parent, "ranges", (int *) &rlen);
423 if (ranges == NULL || rlen == 0) {
424 offset = of_read_number(addr, na);
425 memset(addr, 0, pna * 4);
426 pr_debug("OF: no ranges, 1:1 translation\n");
427 goto finish;
428 }
429
430 pr_debug("OF: walking ranges...\n");
431
432 /* Now walk through the ranges */
433 rlen /= 4;
434 rone = na + pna + ns;
435 for (; rlen >= rone; rlen -= rone, ranges += rone) {
436 offset = bus->map(addr, ranges, na, ns, pna);
437 if (offset != OF_BAD_ADDR)
438 break;
439 }
440 if (offset == OF_BAD_ADDR) {
441 pr_debug("OF: not found !\n");
442 return 1;
443 }
444 memcpy(addr, ranges + na, 4 * pna);
445
446 finish:
447 of_dump_addr("OF: parent translation for:", addr, pna);
448 pr_debug("OF: with offset: "PRu64"\n", offset);
449
450 /* Translate it into parent bus space */
451 return pbus->translate(addr, offset, pna);
452}
453
454/*
455 * Translate an address from the device-tree into a CPU physical address,
456 * this walks up the tree and applies the various bus mappings on the
457 * way.
458 *
459 * Note: We consider that crossing any level with #size-cells == 0 to mean
460 * that translation is impossible (that is we are not dealing with a value
461 * that can be mapped to a cpu physical address). This is not really specified
462 * that way, but this is traditionally the way IBM at least do things
463 */
464u64 of_translate_address(struct device_node *dev, const u32 *in_addr)
465{
466 struct device_node *parent = NULL;
467 struct of_bus *bus, *pbus;
468 u32 addr[OF_MAX_ADDR_CELLS];
469 int na, ns, pna, pns;
470 u64 result = OF_BAD_ADDR;
471
472 pr_debug("OF: ** translation for device %s **\n", dev->full_name);
473
474 /* Increase refcount at current level */
475 of_node_get(dev);
476
477 /* Get parent & match bus type */
478 parent = of_get_parent(dev);
479 if (parent == NULL)
480 goto bail;
481 bus = of_match_bus(parent);
482
483 /* Cound address cells & copy address locally */
484 bus->count_cells(dev, &na, &ns);
485 if (!OF_CHECK_COUNTS(na, ns)) {
486 printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
487 dev->full_name);
488 goto bail;
489 }
490 memcpy(addr, in_addr, na * 4);
491
492 pr_debug("OF: bus is %s (na=%d, ns=%d) on %s\n",
493 bus->name, na, ns, parent->full_name);
494 of_dump_addr("OF: translating address:", addr, na);
495
496 /* Translate */
497 for (;;) {
498 /* Switch to parent bus */
499 of_node_put(dev);
500 dev = parent;
501 parent = of_get_parent(dev);
502
503 /* If root, we have finished */
504 if (parent == NULL) {
505 pr_debug("OF: reached root node\n");
506 result = of_read_number(addr, na);
507 break;
508 }
509
510 /* Get new parent bus and counts */
511 pbus = of_match_bus(parent);
512 pbus->count_cells(dev, &pna, &pns);
513 if (!OF_CHECK_COUNTS(pna, pns)) {
514 printk(KERN_ERR "prom_parse: Bad cell count for %s\n",
515 dev->full_name);
516 break;
517 }
518
519 pr_debug("OF: parent bus is %s (na=%d, ns=%d) on %s\n",
520 pbus->name, pna, pns, parent->full_name);
521
522 /* Apply bus translation */
523 if (of_translate_one(dev, bus, pbus, addr, na, ns, pna))
524 break;
525
526 /* Complete the move up one level */
527 na = pna;
528 ns = pns;
529 bus = pbus;
530
531 of_dump_addr("OF: one level translation:", addr, na);
532 }
533 bail:
534 of_node_put(parent);
535 of_node_put(dev);
536
537 return result;
538}
539EXPORT_SYMBOL(of_translate_address);
540
541const u32 *of_get_address(struct device_node *dev, int index, u64 *size,
542 unsigned int *flags)
543{
544 const u32 *prop;
545 unsigned int psize;
546 struct device_node *parent;
547 struct of_bus *bus;
548 int onesize, i, na, ns;
549
550 /* Get parent & match bus type */
551 parent = of_get_parent(dev);
552 if (parent == NULL)
553 return NULL;
554 bus = of_match_bus(parent);
555 bus->count_cells(dev, &na, &ns);
556 of_node_put(parent);
557 if (!OF_CHECK_COUNTS(na, ns))
558 return NULL;
559
560 /* Get "reg" or "assigned-addresses" property */
561 prop = of_get_property(dev, bus->addresses, (int *) &psize);
562 if (prop == NULL)
563 return NULL;
564 psize /= 4;
565
566 onesize = na + ns;
567 for (i = 0; psize >= onesize; psize -= onesize, prop += onesize, i++)
568 if (i == index) {
569 if (size)
570 *size = of_read_number(prop + na, ns);
571 if (flags)
572 *flags = bus->get_flags(prop);
573 return prop;
574 }
575 return NULL;
576}
577EXPORT_SYMBOL(of_get_address);
578
579static int __of_address_to_resource(struct device_node *dev, const u32 *addrp,
580 u64 size, unsigned int flags,
581 struct resource *r)
582{
583 u64 taddr;
584
585 if ((flags & (IORESOURCE_IO | IORESOURCE_MEM)) == 0)
586 return -EINVAL;
587 taddr = of_translate_address(dev, addrp);
588 if (taddr == OF_BAD_ADDR)
589 return -EINVAL;
590 memset(r, 0, sizeof(struct resource));
591 if (flags & IORESOURCE_IO) {
592 unsigned long port;
593 port = -1; /* pci_address_to_pio(taddr); */
594 if (port == (unsigned long)-1)
595 return -EINVAL;
596 r->start = port;
597 r->end = port + size - 1;
598 } else {
599 r->start = taddr;
600 r->end = taddr + size - 1;
601 }
602 r->flags = flags;
603 r->name = dev->name;
604 return 0;
605}
606
607int of_address_to_resource(struct device_node *dev, int index,
608 struct resource *r)
609{
610 const u32 *addrp;
611 u64 size;
612 unsigned int flags;
613
614 addrp = of_get_address(dev, index, &size, &flags);
615 if (addrp == NULL)
616 return -EINVAL;
617 return __of_address_to_resource(dev, addrp, size, flags, r);
618}
619EXPORT_SYMBOL_GPL(of_address_to_resource);
620
621void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
622 unsigned long *busno, unsigned long *phys, unsigned long *size)
623{
624 const u32 *dma_window;
625 u32 cells;
626 const unsigned char *prop;
627
628 dma_window = dma_window_prop;
629
630 /* busno is always one cell */
631 *busno = *(dma_window++);
632
633 prop = of_get_property(dn, "ibm,#dma-address-cells", NULL);
634 if (!prop)
635 prop = of_get_property(dn, "#address-cells", NULL);
636
637 cells = prop ? *(u32 *)prop : of_n_addr_cells(dn);
638 *phys = of_read_number(dma_window, cells);
639
640 dma_window += cells;
641
642 prop = of_get_property(dn, "ibm,#dma-size-cells", NULL);
643 cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
644 *size = of_read_number(dma_window, cells);
645}
646
647/*
648 * Interrupt remapper
649 */
650
651static unsigned int of_irq_workarounds;
652static struct device_node *of_irq_dflt_pic;
653
654static struct device_node *of_irq_find_parent(struct device_node *child)
655{
656 struct device_node *p;
657 const phandle *parp;
658
659 if (!of_node_get(child))
660 return NULL;
661
662 do {
663 parp = of_get_property(child, "interrupt-parent", NULL);
664 if (parp == NULL)
665 p = of_get_parent(child);
666 else {
667 if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
668 p = of_node_get(of_irq_dflt_pic);
669 else
670 p = of_find_node_by_phandle(*parp);
671 }
672 of_node_put(child);
673 child = p;
674 } while (p && of_get_property(p, "#interrupt-cells", NULL) == NULL);
675
676 return p;
677}
678
679/* This doesn't need to be called if you don't have any special workaround
680 * flags to pass
681 */
682void of_irq_map_init(unsigned int flags)
683{
684 of_irq_workarounds = flags;
685
686 /* OldWorld, don't bother looking at other things */
687 if (flags & OF_IMAP_OLDWORLD_MAC)
688 return;
689
690 /* If we don't have phandles, let's try to locate a default interrupt
691 * controller (happens when booting with BootX). We do a first match
692 * here, hopefully, that only ever happens on machines with one
693 * controller.
694 */
695 if (flags & OF_IMAP_NO_PHANDLE) {
696 struct device_node *np;
697
698 for (np = NULL; (np = of_find_all_nodes(np)) != NULL;) {
699 if (of_get_property(np, "interrupt-controller", NULL)
700 == NULL)
701 continue;
702 /* Skip /chosen/interrupt-controller */
703 if (strcmp(np->name, "chosen") == 0)
704 continue;
705 /* It seems like at least one person on this planet
706 * wants to use BootX on a machine with an AppleKiwi
707 * controller which happens to pretend to be an
708 * interrupt controller too.
709 */
710 if (strcmp(np->name, "AppleKiwi") == 0)
711 continue;
712 /* I think we found one ! */
713 of_irq_dflt_pic = np;
714 break;
715 }
716 }
717
718}
719
720int of_irq_map_raw(struct device_node *parent, const u32 *intspec, u32 ointsize,
721 const u32 *addr, struct of_irq *out_irq)
722{
723 struct device_node *ipar, *tnode, *old = NULL, *newpar = NULL;
724 const u32 *tmp, *imap, *imask;
725 u32 intsize = 1, addrsize, newintsize = 0, newaddrsize = 0;
726 int imaplen, match, i;
727
728 pr_debug("of_irq_map_raw: par=%s,intspec=[0x%08x 0x%08x...],"
729 "ointsize=%d\n",
730 parent->full_name, intspec[0], intspec[1], ointsize);
731
732 ipar = of_node_get(parent);
733
734 /* First get the #interrupt-cells property of the current cursor
735 * that tells us how to interpret the passed-in intspec. If there
736 * is none, we are nice and just walk up the tree
737 */
738 do {
739 tmp = of_get_property(ipar, "#interrupt-cells", NULL);
740 if (tmp != NULL) {
741 intsize = *tmp;
742 break;
743 }
744 tnode = ipar;
745 ipar = of_irq_find_parent(ipar);
746 of_node_put(tnode);
747 } while (ipar);
748 if (ipar == NULL) {
749 pr_debug(" -> no parent found !\n");
750 goto fail;
751 }
752
753 pr_debug("of_irq_map_raw: ipar=%s, size=%d\n",
754 ipar->full_name, intsize);
755
756 if (ointsize != intsize)
757 return -EINVAL;
758
759 /* Look for this #address-cells. We have to implement the old linux
760 * trick of looking for the parent here as some device-trees rely on it
761 */
762 old = of_node_get(ipar);
763 do {
764 tmp = of_get_property(old, "#address-cells", NULL);
765 tnode = of_get_parent(old);
766 of_node_put(old);
767 old = tnode;
768 } while (old && tmp == NULL);
769 of_node_put(old);
770 old = NULL;
771 addrsize = (tmp == NULL) ? 2 : *tmp;
772
773 pr_debug(" -> addrsize=%d\n", addrsize);
774
775 /* Now start the actual "proper" walk of the interrupt tree */
776 while (ipar != NULL) {
777 /* Now check if cursor is an interrupt-controller and if it is
778 * then we are done
779 */
780 if (of_get_property(ipar, "interrupt-controller", NULL) !=
781 NULL) {
782 pr_debug(" -> got it !\n");
783 memcpy(out_irq->specifier, intspec,
784 intsize * sizeof(u32));
785 out_irq->size = intsize;
786 out_irq->controller = ipar;
787 of_node_put(old);
788 return 0;
789 }
790
791 /* Now look for an interrupt-map */
792 imap = of_get_property(ipar, "interrupt-map", &imaplen);
793 /* No interrupt map, check for an interrupt parent */
794 if (imap == NULL) {
795 pr_debug(" -> no map, getting parent\n");
796 newpar = of_irq_find_parent(ipar);
797 goto skiplevel;
798 }
799 imaplen /= sizeof(u32);
800
801 /* Look for a mask */
802 imask = of_get_property(ipar, "interrupt-map-mask", NULL);
803
804 /* If we were passed no "reg" property and we attempt to parse
805 * an interrupt-map, then #address-cells must be 0.
806 * Fail if it's not.
807 */
808 if (addr == NULL && addrsize != 0) {
809 pr_debug(" -> no reg passed in when needed !\n");
810 goto fail;
811 }
812
813 /* Parse interrupt-map */
814 match = 0;
815 while (imaplen > (addrsize + intsize + 1) && !match) {
816 /* Compare specifiers */
817 match = 1;
818 for (i = 0; i < addrsize && match; ++i) {
819 u32 mask = imask ? imask[i] : 0xffffffffu;
820 match = ((addr[i] ^ imap[i]) & mask) == 0;
821 }
822 for (; i < (addrsize + intsize) && match; ++i) {
823 u32 mask = imask ? imask[i] : 0xffffffffu;
824 match =
825 ((intspec[i-addrsize] ^ imap[i])
826 & mask) == 0;
827 }
828 imap += addrsize + intsize;
829 imaplen -= addrsize + intsize;
830
831 pr_debug(" -> match=%d (imaplen=%d)\n", match, imaplen);
832
833 /* Get the interrupt parent */
834 if (of_irq_workarounds & OF_IMAP_NO_PHANDLE)
835 newpar = of_node_get(of_irq_dflt_pic);
836 else
837 newpar =
838 of_find_node_by_phandle((phandle)*imap);
839 imap++;
840 --imaplen;
841
842 /* Check if not found */
843 if (newpar == NULL) {
844 pr_debug(" -> imap parent not found !\n");
845 goto fail;
846 }
847
848 /* Get #interrupt-cells and #address-cells of new
849 * parent
850 */
851 tmp = of_get_property(newpar, "#interrupt-cells", NULL);
852 if (tmp == NULL) {
853 pr_debug(" -> parent lacks "
854 "#interrupt-cells!\n");
855 goto fail;
856 }
857 newintsize = *tmp;
858 tmp = of_get_property(newpar, "#address-cells", NULL);
859 newaddrsize = (tmp == NULL) ? 0 : *tmp;
860
861 pr_debug(" -> newintsize=%d, newaddrsize=%d\n",
862 newintsize, newaddrsize);
863
864 /* Check for malformed properties */
865 if (imaplen < (newaddrsize + newintsize))
866 goto fail;
867
868 imap += newaddrsize + newintsize;
869 imaplen -= newaddrsize + newintsize;
870
871 pr_debug(" -> imaplen=%d\n", imaplen);
872 }
873 if (!match)
874 goto fail;
875
876 of_node_put(old);
877 old = of_node_get(newpar);
878 addrsize = newaddrsize;
879 intsize = newintsize;
880 intspec = imap - intsize;
881 addr = intspec - addrsize;
882
883skiplevel:
884 /* Iterate again with new parent */
885 pr_debug(" -> new parent: %s\n",
886 newpar ? newpar->full_name : "<>");
887 of_node_put(ipar);
888 ipar = newpar;
889 newpar = NULL;
890 }
891fail:
892 of_node_put(ipar);
893 of_node_put(old);
894 of_node_put(newpar);
895
896 return -EINVAL;
897}
898EXPORT_SYMBOL_GPL(of_irq_map_raw);
899
900int of_irq_map_one(struct device_node *device,
901 int index, struct of_irq *out_irq)
902{
903 struct device_node *p;
904 const u32 *intspec, *tmp, *addr;
905 u32 intsize, intlen;
906 int res;
907
908 pr_debug("of_irq_map_one: dev=%s, index=%d\n",
909 device->full_name, index);
910
911 /* Get the interrupts property */
912 intspec = of_get_property(device, "interrupts", (int *) &intlen);
913 if (intspec == NULL)
914 return -EINVAL;
915 intlen /= sizeof(u32);
916
917 pr_debug(" intspec=%d intlen=%d\n", *intspec, intlen);
918
919 /* Get the reg property (if any) */
920 addr = of_get_property(device, "reg", NULL);
921
922 /* Look for the interrupt parent. */
923 p = of_irq_find_parent(device);
924 if (p == NULL)
925 return -EINVAL;
926
927 /* Get size of interrupt specifier */
928 tmp = of_get_property(p, "#interrupt-cells", NULL);
929 if (tmp == NULL) {
930 of_node_put(p);
931 return -EINVAL;
932 }
933 intsize = *tmp;
934
935 pr_debug(" intsize=%d intlen=%d\n", intsize, intlen);
936
937 /* Check index */
938 if ((index + 1) * intsize > intlen)
939 return -EINVAL;
940
941 /* Get new specifier and map it */
942 res = of_irq_map_raw(p, intspec + index * intsize, intsize,
943 addr, out_irq);
944 of_node_put(p);
945 return res;
946}
947EXPORT_SYMBOL_GPL(of_irq_map_one);
948
949/**
950 * Search the device tree for the best MAC address to use. 'mac-address' is
951 * checked first, because that is supposed to contain to "most recent" MAC
952 * address. If that isn't set, then 'local-mac-address' is checked next,
953 * because that is the default address. If that isn't set, then the obsolete
954 * 'address' is checked, just in case we're using an old device tree.
955 *
956 * Note that the 'address' property is supposed to contain a virtual address of
957 * the register set, but some DTS files have redefined that property to be the
958 * MAC address.
959 *
960 * All-zero MAC addresses are rejected, because those could be properties that
961 * exist in the device tree, but were not set by U-Boot. For example, the
962 * DTS could define 'mac-address' and 'local-mac-address', with zero MAC
963 * addresses. Some older U-Boots only initialized 'local-mac-address'. In
964 * this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
965 * but is all zeros.
966*/
967const void *of_get_mac_address(struct device_node *np)
968{
969 struct property *pp;
970
971 pp = of_find_property(np, "mac-address", NULL);
972 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
973 return pp->value;
974
975 pp = of_find_property(np, "local-mac-address", NULL);
976 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
977 return pp->value;
978
979 pp = of_find_property(np, "address", NULL);
980 if (pp && (pp->length == 6) && is_valid_ether_addr(pp->value))
981 return pp->value;
982
983 return NULL;
984}
985EXPORT_SYMBOL(of_get_mac_address);
986
987int of_irq_to_resource(struct device_node *dev, int index, struct resource *r)
988{
989 struct of_irq out_irq;
990 int irq;
991 int res;
992
993 res = of_irq_map_one(dev, index, &out_irq);
994
995 /* Get irq for the device */
996 if (res) {
997 pr_debug("IRQ not found... code = %d", res);
998 return NO_IRQ;
999 }
1000 /* Assuming single interrupt controller... */
1001 irq = out_irq.specifier[0];
1002
1003 pr_debug("IRQ found = %d", irq);
1004
1005 /* Only dereference the resource if both the
1006 * resource and the irq are valid. */
1007 if (r && irq != NO_IRQ) {
1008 r->start = r->end = irq;
1009 r->flags = IORESOURCE_IRQ;
1010 }
1011
1012 return irq;
1013}
1014EXPORT_SYMBOL_GPL(of_irq_to_resource);
1015
1016void __iomem *of_iomap(struct device_node *np, int index)
1017{
1018 struct resource res;
1019
1020 if (of_address_to_resource(np, index, &res))
1021 return NULL;
1022
1023 return ioremap(res.start, 1 + res.end - res.start);
1024}
1025EXPORT_SYMBOL(of_iomap);
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c
new file mode 100644
index 000000000000..3171e39e3220
--- /dev/null
+++ b/arch/microblaze/kernel/ptrace.c
@@ -0,0 +1,182 @@
1/*
2 * `ptrace' system call
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2007-2009 PetaLogix
6 * Copyright (C) 2004-2007 John Williams <john.williams@petalogix.com>
7 *
8 * derived from arch/v850/kernel/ptrace.c
9 *
10 * Copyright (C) 2002,03 NEC Electronics Corporation
11 * Copyright (C) 2002,03 Miles Bader <miles@gnu.org>
12 *
13 * Derived from arch/mips/kernel/ptrace.c:
14 *
15 * Copyright (C) 1992 Ross Biro
16 * Copyright (C) Linus Torvalds
17 * Copyright (C) 1994, 95, 96, 97, 98, 2000 Ralf Baechle
18 * Copyright (C) 1996 David S. Miller
19 * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
20 * Copyright (C) 1999 MIPS Technologies, Inc.
21 *
22 * This file is subject to the terms and conditions of the GNU General
23 * Public License. See the file COPYING in the main directory of this
24 * archive for more details.
25 */
26
27#include <linux/kernel.h>
28#include <linux/mm.h>
29#include <linux/sched.h>
30#include <linux/smp_lock.h>
31#include <linux/ptrace.h>
32#include <linux/signal.h>
33
34#include <linux/errno.h>
35#include <linux/ptrace.h>
36#include <asm/processor.h>
37#include <linux/uaccess.h>
38#include <asm/asm-offsets.h>
39
40/* Returns the address where the register at REG_OFFS in P is stashed away. */
41static microblaze_reg_t *reg_save_addr(unsigned reg_offs,
42 struct task_struct *t)
43{
44 struct pt_regs *regs;
45
46 /*
47 * Three basic cases:
48 *
49 * (1) A register normally saved before calling the scheduler, is
50 * available in the kernel entry pt_regs structure at the top
51 * of the kernel stack. The kernel trap/irq exit path takes
52 * care to save/restore almost all registers for ptrace'd
53 * processes.
54 *
55 * (2) A call-clobbered register, where the process P entered the
56 * kernel via [syscall] trap, is not stored anywhere; that's
57 * OK, because such registers are not expected to be preserved
58 * when the trap returns anyway (so we don't actually bother to
59 * test for this case).
60 *
61 * (3) A few registers not used at all by the kernel, and so
62 * normally never saved except by context-switches, are in the
63 * context switch state.
64 */
65
66 /* Register saved during kernel entry (or not available). */
67 regs = task_pt_regs(t);
68
69 return (microblaze_reg_t *)((char *)regs + reg_offs);
70}
71
72long arch_ptrace(struct task_struct *child, long request, long addr, long data)
73{
74 int rval;
75 unsigned long val = 0;
76 unsigned long copied;
77
78 switch (request) {
79 case PTRACE_PEEKTEXT: /* read word at location addr. */
80 case PTRACE_PEEKDATA:
81 pr_debug("PEEKTEXT/PEEKDATA at %08lX\n", addr);
82 copied = access_process_vm(child, addr, &val, sizeof(val), 0);
83 rval = -EIO;
84 if (copied != sizeof(val))
85 break;
86 rval = put_user(val, (unsigned long *)data);
87 break;
88
89 case PTRACE_POKETEXT: /* write the word at location addr. */
90 case PTRACE_POKEDATA:
91 pr_debug("POKETEXT/POKEDATA to %08lX\n", addr);
92 rval = 0;
93 if (access_process_vm(child, addr, &data, sizeof(data), 1)
94 == sizeof(data))
95 break;
96 rval = -EIO;
97 break;
98
99 /* Read/write the word at location ADDR in the registers. */
100 case PTRACE_PEEKUSR:
101 case PTRACE_POKEUSR:
102 pr_debug("PEEKUSR/POKEUSR : 0x%08lx\n", addr);
103 rval = 0;
104 if (addr >= PT_SIZE && request == PTRACE_PEEKUSR) {
105 /*
106 * Special requests that don't actually correspond
107 * to offsets in struct pt_regs.
108 */
109 if (addr == PT_TEXT_ADDR) {
110 val = child->mm->start_code;
111 } else if (addr == PT_DATA_ADDR) {
112 val = child->mm->start_data;
113 } else if (addr == PT_TEXT_LEN) {
114 val = child->mm->end_code
115 - child->mm->start_code;
116 } else {
117 rval = -EIO;
118 }
119 } else if (addr >= 0 && addr < PT_SIZE && (addr & 0x3) == 0) {
120 microblaze_reg_t *reg_addr = reg_save_addr(addr, child);
121 if (request == PTRACE_PEEKUSR)
122 val = *reg_addr;
123 else
124 *reg_addr = data;
125 } else
126 rval = -EIO;
127
128 if (rval == 0 && request == PTRACE_PEEKUSR)
129 rval = put_user(val, (unsigned long *)data);
130 break;
131 /* Continue and stop at next (return from) syscall */
132 case PTRACE_SYSCALL:
133 pr_debug("PTRACE_SYSCALL\n");
134 case PTRACE_SINGLESTEP:
135 pr_debug("PTRACE_SINGLESTEP\n");
136 /* Restart after a signal. */
137 case PTRACE_CONT:
138 pr_debug("PTRACE_CONT\n");
139 rval = -EIO;
140 if (!valid_signal(data))
141 break;
142
143 if (request == PTRACE_SYSCALL)
144 set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
145 else
146 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
147
148 child->exit_code = data;
149 pr_debug("wakeup_process\n");
150 wake_up_process(child);
151 rval = 0;
152 break;
153
154 /*
155 * make the child exit. Best I can do is send it a sigkill.
156 * perhaps it should be put in the status that it wants to
157 * exit.
158 */
159 case PTRACE_KILL:
160 pr_debug("PTRACE_KILL\n");
161 rval = 0;
162 if (child->exit_state == EXIT_ZOMBIE) /* already dead */
163 break;
164 child->exit_code = SIGKILL;
165 wake_up_process(child);
166 break;
167
168 case PTRACE_DETACH: /* detach a process that was attached. */
169 pr_debug("PTRACE_DETACH\n");
170 rval = ptrace_detach(child, data);
171 break;
172 default:
173 /* rval = ptrace_request(child, request, addr, data); noMMU */
174 rval = -EIO;
175 }
176 return rval;
177}
178
179void ptrace_disable(struct task_struct *child)
180{
181 /* nothing to do */
182}
diff --git a/arch/microblaze/kernel/selfmod.c b/arch/microblaze/kernel/selfmod.c
new file mode 100644
index 000000000000..89508bdc9f3c
--- /dev/null
+++ b/arch/microblaze/kernel/selfmod.c
@@ -0,0 +1,81 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2009 PetaLogix
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/interrupt.h>
11#include <asm/selfmod.h>
12
13#undef DEBUG
14
15#if __GNUC__ > 3
16#error GCC 4 unsupported SELFMOD. Please disable SELFMOD from menuconfig.
17#endif
18
19#define OPCODE_IMM 0xB0000000
20#define OPCODE_LWI 0xE8000000
21#define OPCODE_LWI_MASK 0xEC000000
22#define OPCODE_RTSD 0xB60F0008 /* return from func: rtsd r15, 8 */
23#define OPCODE_ADDIK 0x30000000
24#define OPCODE_ADDIK_MASK 0xFC000000
25
26#define IMM_BASE (OPCODE_IMM | (BARRIER_BASE_ADDR >> 16))
27#define LWI_BASE (OPCODE_LWI | (BARRIER_BASE_ADDR & 0x0000ff00))
28#define LWI_BASE_MASK (OPCODE_LWI_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
29#define ADDIK_BASE (OPCODE_ADDIK | (BARRIER_BASE_ADDR & 0x0000ff00))
30#define ADDIK_BASE_MASK (OPCODE_ADDIK_MASK | (BARRIER_BASE_ADDR & 0x0000ff00))
31
32#define MODIFY_INSTR { \
33 pr_debug("%s: curr instr, (%d):0x%x, next(%d):0x%x\n", \
34 __func__, i, addr[i], i + 1, addr[i + 1]); \
35 addr[i] = OPCODE_IMM + (base >> 16); \
36 /* keep instruction opcode and add only last 16bits */ \
37 addr[i + 1] = (addr[i + 1] & 0xffff00ff) + (base & 0xffff); \
38 __invalidate_icache(addr[i]); \
39 __invalidate_icache(addr[i + 1]); \
40 pr_debug("%s: hack instr, (%d):0x%x, next(%d):0x%x\n", \
41 __func__, i, addr[i], i + 1, addr[i + 1]); }
42
43/* NOTE
44 * self-modified part of code for improvement of interrupt controller
45 * save instruction in interrupt rutine
46 */
47void selfmod_function(const int *arr_fce, const unsigned int base)
48{
49 unsigned int flags, i, j, *addr = NULL;
50
51 local_irq_save(flags);
52 __disable_icache();
53
54 /* zero terminated array */
55 for (j = 0; arr_fce[j] != 0; j++) {
56 /* get start address of function */
57 addr = (unsigned int *) arr_fce[j];
58 pr_debug("%s: func(%d) at 0x%x\n",
59 __func__, j, (unsigned int) addr);
60 for (i = 0; ; i++) {
61 pr_debug("%s: instruction code at %d: 0x%x\n",
62 __func__, i, addr[i]);
63 if (addr[i] == IMM_BASE) {
64 /* detecting of lwi (0xE8) or swi (0xF8) instr
65 * I can detect both opcode with one mask */
66 if ((addr[i + 1] & LWI_BASE_MASK) == LWI_BASE) {
67 MODIFY_INSTR;
68 } else /* detection addik for ack */
69 if ((addr[i + 1] & ADDIK_BASE_MASK) ==
70 ADDIK_BASE) {
71 MODIFY_INSTR;
72 }
73 } else if (addr[i] == OPCODE_RTSD) {
74 /* return from function means end of function */
75 pr_debug("%s: end of array %d\n", __func__, i);
76 break;
77 }
78 }
79 }
80 local_irq_restore(flags);
81} /* end of self-modified code */
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c
new file mode 100644
index 000000000000..eb6b41758e23
--- /dev/null
+++ b/arch/microblaze/kernel/setup.c
@@ -0,0 +1,199 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/string.h>
13#include <linux/seq_file.h>
14#include <linux/cpu.h>
15#include <linux/initrd.h>
16#include <linux/console.h>
17#include <linux/debugfs.h>
18
19#include <asm/setup.h>
20#include <asm/sections.h>
21#include <asm/page.h>
22#include <linux/io.h>
23#include <linux/bug.h>
24#include <linux/param.h>
25#include <linux/cache.h>
26#include <asm/cacheflush.h>
27#include <asm/entry.h>
28#include <asm/cpuinfo.h>
29
30#include <asm/system.h>
31#include <asm/prom.h>
32#include <asm/pgtable.h>
33
34DEFINE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
35DEFINE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
36DEFINE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
37DEFINE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
38DEFINE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
39
40unsigned int boot_cpuid;
41char cmd_line[COMMAND_LINE_SIZE];
42
43void __init setup_arch(char **cmdline_p)
44{
45#ifdef CONFIG_CMDLINE_FORCE
46 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
47 strlcpy(boot_command_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
48#endif
49 *cmdline_p = cmd_line;
50
51 console_verbose();
52
53 unflatten_device_tree();
54
55 /* NOTE I think that this function is not necessary to call */
56 /* irq_early_init(); */
57 setup_cpuinfo();
58
59 __invalidate_icache_all();
60 __enable_icache();
61
62 __invalidate_dcache_all();
63 __enable_dcache();
64
65 panic_timeout = 120;
66
67 setup_memory();
68
69#if defined(CONFIG_SELFMOD_INTC) || defined(CONFIG_SELFMOD_TIMER)
70 printk(KERN_NOTICE "Self modified code enable\n");
71#endif
72
73#ifdef CONFIG_VT
74#if defined(CONFIG_XILINX_CONSOLE)
75 conswitchp = &xil_con;
76#elif defined(CONFIG_DUMMY_CONSOLE)
77 conswitchp = &dummy_con;
78#endif
79#endif
80}
81
82#ifdef CONFIG_MTD_UCLINUX
83/* Handle both romfs and cramfs types, without generating unnecessary
84 code (ie no point checking for CRAMFS if it's not even enabled) */
85inline unsigned get_romfs_len(unsigned *addr)
86{
87#ifdef CONFIG_ROMFS_FS
88 if (memcmp(&addr[0], "-rom1fs-", 8) == 0) /* romfs */
89 return be32_to_cpu(addr[2]);
90#endif
91
92#ifdef CONFIG_CRAMFS
93 if (addr[0] == le32_to_cpu(0x28cd3d45)) /* cramfs */
94 return le32_to_cpu(addr[1]);
95#endif
96 return 0;
97}
98#endif /* CONFIG_MTD_UCLINUX_EBSS */
99
100void __init machine_early_init(const char *cmdline, unsigned int ram,
101 unsigned int fdt)
102{
103 unsigned long *src, *dst = (unsigned long *)0x0;
104
105/* clearing bss section */
106 memset(__bss_start, 0, __bss_stop-__bss_start);
107 memset(_ssbss, 0, _esbss-_ssbss);
108
109 /*
110 * Copy command line passed from bootloader, or use default
111 * if none provided, or forced
112 */
113#ifndef CONFIG_CMDLINE_BOOL
114 if (cmdline && cmdline[0] != '\0')
115 strlcpy(cmd_line, cmdline, COMMAND_LINE_SIZE);
116#endif
117
118/* initialize device tree for usage in early_printk */
119 early_init_devtree((void *)_fdt_start);
120
121#ifdef CONFIG_EARLY_PRINTK
122 setup_early_printk(NULL);
123#endif
124
125 early_printk("Ramdisk addr 0x%08x, FDT 0x%08x\n", ram, fdt);
126 printk(KERN_NOTICE "Found FDT at 0x%08x\n", fdt);
127
128#ifdef CONFIG_MTD_UCLINUX
129 {
130 int size;
131 unsigned int romfs_base;
132 romfs_base = (ram ? ram : (unsigned int)&__init_end);
133 /* if CONFIG_MTD_UCLINUX_EBSS is defined, assume ROMFS is at the
134 * end of kernel, which is ROMFS_LOCATION defined above. */
135 size = PAGE_ALIGN(get_romfs_len((unsigned *)romfs_base));
136 early_printk("Found romfs @ 0x%08x (0x%08x)\n",
137 romfs_base, size);
138 early_printk("#### klimit %p ####\n", klimit);
139 BUG_ON(size < 0); /* What else can we do? */
140
141 /* Use memmove to handle likely case of memory overlap */
142 early_printk("Moving 0x%08x bytes from 0x%08x to 0x%08x\n",
143 size, romfs_base, (unsigned)&_ebss);
144 memmove(&_ebss, (int *)romfs_base, size);
145
146 /* update klimit */
147 klimit += PAGE_ALIGN(size);
148 early_printk("New klimit: 0x%08x\n", (unsigned)klimit);
149 }
150#endif
151
152 for (src = __ivt_start; src < __ivt_end; src++, dst++)
153 *dst = *src;
154
155 /* Initialize global data */
156 per_cpu(KM, 0) = 0x1; /* We start in kernel mode */
157 per_cpu(CURRENT_SAVE, 0) = (unsigned long)current;
158}
159
160#ifdef CONFIG_DEBUG_FS
161struct dentry *of_debugfs_root;
162
163static int microblaze_debugfs_init(void)
164{
165 of_debugfs_root = debugfs_create_dir("microblaze", NULL);
166
167 return of_debugfs_root == NULL;
168}
169arch_initcall(microblaze_debugfs_init);
170#endif
171
172void machine_restart(char *cmd)
173{
174 printk(KERN_NOTICE "Machine restart...\n");
175 dump_stack();
176 while (1)
177 ;
178}
179
180void machine_shutdown(void)
181{
182 printk(KERN_NOTICE "Machine shutdown...\n");
183 while (1)
184 ;
185}
186
187void machine_halt(void)
188{
189 printk(KERN_NOTICE "Machine halt...\n");
190 while (1)
191 ;
192}
193
194void machine_power_off(void)
195{
196 printk(KERN_NOTICE "Machine power off...\n");
197 while (1)
198 ;
199}
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
new file mode 100644
index 000000000000..ff347b98863a
--- /dev/null
+++ b/arch/microblaze/kernel/signal.c
@@ -0,0 +1,538 @@
1/*
2 * Signal handling
3 *
4 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
5 * Copyright (C) 2008-2009 PetaLogix
6 * Copyright (C) 2003,2004 John Williams <jwilliams@itee.uq.edu.au>
7 * Copyright (C) 2001 NEC Corporation
8 * Copyright (C) 2001 Miles Bader <miles@gnu.org>
9 * Copyright (C) 1999,2000 Niibe Yutaka & Kaz Kojima
10 * Copyright (C) 1991,1992 Linus Torvalds
11 *
12 * 1997-11-28 Modified for POSIX.1b signals by Richard Henderson
13 *
14 * This file was was derived from the sh version, arch/sh/kernel/signal.c
15 *
16 * This file is subject to the terms and conditions of the GNU General
17 * Public License. See the file COPYING in the main directory of this
18 * archive for more details.
19 */
20
21#include <linux/sched.h>
22#include <linux/mm.h>
23#include <linux/smp.h>
24#include <linux/smp_lock.h>
25#include <linux/kernel.h>
26#include <linux/signal.h>
27#include <linux/errno.h>
28#include <linux/wait.h>
29#include <linux/ptrace.h>
30#include <linux/unistd.h>
31#include <linux/stddef.h>
32#include <linux/personality.h>
33#include <linux/percpu.h>
34#include <linux/linkage.h>
35#include <asm/entry.h>
36#include <asm/ucontext.h>
37#include <linux/uaccess.h>
38#include <asm/pgtable.h>
39#include <asm/pgalloc.h>
40#include <linux/signal.h>
41#include <linux/syscalls.h>
42#include <asm/cacheflush.h>
43#include <asm/syscalls.h>
44
45#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
46
47asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_sycall);
48
49/*
50 * Atomically swap in the new signal mask, and wait for a signal.
51 */
52asmlinkage int
53sys_sigsuspend(old_sigset_t mask, struct pt_regs *regs)
54{
55 sigset_t saveset;
56
57 mask &= _BLOCKABLE;
58 spin_lock_irq(&current->sighand->siglock);
59 saveset = current->blocked;
60 siginitset(&current->blocked, mask);
61 recalc_sigpending();
62 spin_unlock_irq(&current->sighand->siglock);
63
64 regs->r3 = -EINTR;
65 while (1) {
66 current->state = TASK_INTERRUPTIBLE;
67 schedule();
68 if (do_signal(regs, &saveset, 1))
69 return -EINTR;
70 }
71}
72
73asmlinkage int
74sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
75 struct pt_regs *regs)
76{
77 sigset_t saveset, newset;
78
79 /* XXX: Don't preclude handling different sized sigset_t's. */
80 if (sigsetsize != sizeof(sigset_t))
81 return -EINVAL;
82
83 if (copy_from_user(&newset, unewset, sizeof(newset)))
84 return -EFAULT;
85 sigdelsetmask(&newset, ~_BLOCKABLE);
86 spin_lock_irq(&current->sighand->siglock);
87 saveset = current->blocked;
88 current->blocked = newset;
89 recalc_sigpending();
90 spin_unlock_irq(&current->sighand->siglock);
91
92 regs->r3 = -EINTR;
93 while (1) {
94 current->state = TASK_INTERRUPTIBLE;
95 schedule();
96 if (do_signal(regs, &saveset, 1))
97 return -EINTR;
98 }
99}
100
101asmlinkage int
102sys_sigaction(int sig, const struct old_sigaction *act,
103 struct old_sigaction *oact)
104{
105 struct k_sigaction new_ka, old_ka;
106 int ret;
107
108 if (act) {
109 old_sigset_t mask;
110 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
111 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
112 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer))
113 return -EFAULT;
114 __get_user(new_ka.sa.sa_flags, &act->sa_flags);
115 __get_user(mask, &act->sa_mask);
116 siginitset(&new_ka.sa.sa_mask, mask);
117 }
118
119 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
120
121 if (!ret && oact) {
122 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
123 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
124 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer))
125 return -EFAULT;
126 __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
127 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask);
128 }
129
130 return ret;
131}
132
133asmlinkage int
134sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
135 struct pt_regs *regs)
136{
137 return do_sigaltstack(uss, uoss, regs->r1);
138}
139
140/*
141 * Do a signal return; undo the signal stack.
142 */
143
144struct sigframe {
145 struct sigcontext sc;
146 unsigned long extramask[_NSIG_WORDS-1];
147 unsigned long tramp[2]; /* signal trampoline */
148};
149
150struct rt_sigframe {
151 struct siginfo info;
152 struct ucontext uc;
153 unsigned long tramp[2]; /* signal trampoline */
154};
155
156static int
157restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *rval_p)
158{
159 unsigned int err = 0;
160
161#define COPY(x) {err |= __get_user(regs->x, &sc->regs.x); }
162 COPY(r0);
163 COPY(r1);
164 COPY(r2); COPY(r3); COPY(r4); COPY(r5);
165 COPY(r6); COPY(r7); COPY(r8); COPY(r9);
166 COPY(r10); COPY(r11); COPY(r12); COPY(r13);
167 COPY(r14); COPY(r15); COPY(r16); COPY(r17);
168 COPY(r18); COPY(r19); COPY(r20); COPY(r21);
169 COPY(r22); COPY(r23); COPY(r24); COPY(r25);
170 COPY(r26); COPY(r27); COPY(r28); COPY(r29);
171 COPY(r30); COPY(r31);
172 COPY(pc); COPY(ear); COPY(esr); COPY(fsr);
173#undef COPY
174
175 *rval_p = regs->r3;
176
177 return err;
178}
179
180asmlinkage int sys_sigreturn(struct pt_regs *regs)
181{
182 struct sigframe *frame = (struct sigframe *)regs->r1;
183 sigset_t set;
184 int rval;
185
186 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
187 goto badframe;
188
189 if (__get_user(set.sig[0], &frame->sc.oldmask)
190 || (_NSIG_WORDS > 1
191 && __copy_from_user(&set.sig[1], &frame->extramask,
192 sizeof(frame->extramask))))
193 goto badframe;
194
195 sigdelsetmask(&set, ~_BLOCKABLE);
196
197 spin_lock_irq(&current->sighand->siglock);
198 current->blocked = set;
199 recalc_sigpending();
200 spin_unlock_irq(&current->sighand->siglock);
201
202 if (restore_sigcontext(regs, &frame->sc, &rval))
203 goto badframe;
204 return rval;
205
206badframe:
207 force_sig(SIGSEGV, current);
208 return 0;
209}
210
211asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
212{
213 struct rt_sigframe *frame = (struct rt_sigframe *)regs->r1;
214 sigset_t set;
215 stack_t st;
216 int rval;
217
218 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
219 goto badframe;
220
221 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
222 goto badframe;
223
224 sigdelsetmask(&set, ~_BLOCKABLE);
225 spin_lock_irq(&current->sighand->siglock);
226 current->blocked = set;
227 recalc_sigpending();
228 spin_unlock_irq(&current->sighand->siglock);
229
230 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &rval))
231 goto badframe;
232
233 if (__copy_from_user((void *)&st, &frame->uc.uc_stack, sizeof(st)))
234 goto badframe;
235 /* It is more difficult to avoid calling this function than to
236 call it and ignore errors. */
237 do_sigaltstack(&st, NULL, regs->r1);
238
239 return rval;
240
241badframe:
242 force_sig(SIGSEGV, current);
243 return 0;
244}
245
246/*
247 * Set up a signal frame.
248 */
249
250static int
251setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
252 unsigned long mask)
253{
254 int err = 0;
255
256#define COPY(x) {err |= __put_user(regs->x, &sc->regs.x); }
257 COPY(r0);
258 COPY(r1);
259 COPY(r2); COPY(r3); COPY(r4); COPY(r5);
260 COPY(r6); COPY(r7); COPY(r8); COPY(r9);
261 COPY(r10); COPY(r11); COPY(r12); COPY(r13);
262 COPY(r14); COPY(r15); COPY(r16); COPY(r17);
263 COPY(r18); COPY(r19); COPY(r20); COPY(r21);
264 COPY(r22); COPY(r23); COPY(r24); COPY(r25);
265 COPY(r26); COPY(r27); COPY(r28); COPY(r29);
266 COPY(r30); COPY(r31);
267 COPY(pc); COPY(ear); COPY(esr); COPY(fsr);
268#undef COPY
269
270 err |= __put_user(mask, &sc->oldmask);
271
272 return err;
273}
274
275/*
276 * Determine which stack to use..
277 */
278static inline void *
279get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size)
280{
281 /* Default to using normal stack */
282 unsigned long sp = regs->r1;
283
284 if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && !on_sig_stack(sp))
285 sp = current->sas_ss_sp + current->sas_ss_size;
286
287 return (void *)((sp - frame_size) & -8UL);
288}
289
290static void setup_frame(int sig, struct k_sigaction *ka,
291 sigset_t *set, struct pt_regs *regs)
292{
293 struct sigframe *frame;
294 int err = 0;
295 int signal;
296
297 frame = get_sigframe(ka, regs, sizeof(*frame));
298
299 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
300 goto give_sigsegv;
301
302 signal = current_thread_info()->exec_domain
303 && current_thread_info()->exec_domain->signal_invmap
304 && sig < 32
305 ? current_thread_info()->exec_domain->signal_invmap[sig]
306 : sig;
307
308 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]);
309
310 if (_NSIG_WORDS > 1) {
311 err |= __copy_to_user(frame->extramask, &set->sig[1],
312 sizeof(frame->extramask));
313 }
314
315 /* Set up to return from userspace. If provided, use a stub
316 already in userspace. */
317 /* minus 8 is offset to cater for "rtsd r15,8" offset */
318 if (ka->sa.sa_flags & SA_RESTORER) {
319 regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
320 } else {
321 /* Note, these encodings are _big endian_! */
322
323 /* addi r12, r0, __NR_sigreturn */
324 err |= __put_user(0x31800000 | __NR_sigreturn ,
325 frame->tramp + 0);
326 /* brki r14, 0x8 */
327 err |= __put_user(0xb9cc0008, frame->tramp + 1);
328
329 /* Return from sighandler will jump to the tramp.
330 Negative 8 offset because return is rtsd r15, 8 */
331 regs->r15 = ((unsigned long)frame->tramp)-8;
332
333 __invalidate_cache_sigtramp((unsigned long)frame->tramp);
334 }
335
336 if (err)
337 goto give_sigsegv;
338
339 /* Set up registers for signal handler */
340 regs->r1 = (unsigned long) frame;
341 /* Signal handler args: */
342 regs->r5 = signal; /* Arg 0: signum */
343 regs->r6 = (unsigned long) &frame->sc; /* arg 1: sigcontext */
344
345 /* Offset of 4 to handle microblaze rtid r14, 0 */
346 regs->pc = (unsigned long)ka->sa.sa_handler;
347
348 set_fs(USER_DS);
349
350#ifdef DEBUG_SIG
351 printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
352 current->comm, current->pid, frame, regs->pc);
353#endif
354
355 return;
356
357give_sigsegv:
358 if (sig == SIGSEGV)
359 ka->sa.sa_handler = SIG_DFL;
360 force_sig(SIGSEGV, current);
361}
362
363static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
364 sigset_t *set, struct pt_regs *regs)
365{
366 struct rt_sigframe *frame;
367 int err = 0;
368 int signal;
369
370 frame = get_sigframe(ka, regs, sizeof(*frame));
371
372 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
373 goto give_sigsegv;
374
375 signal = current_thread_info()->exec_domain
376 && current_thread_info()->exec_domain->signal_invmap
377 && sig < 32
378 ? current_thread_info()->exec_domain->signal_invmap[sig]
379 : sig;
380
381 err |= copy_siginfo_to_user(&frame->info, info);
382
383 /* Create the ucontext. */
384 err |= __put_user(0, &frame->uc.uc_flags);
385 err |= __put_user(0, &frame->uc.uc_link);
386 err |= __put_user((void *)current->sas_ss_sp,
387 &frame->uc.uc_stack.ss_sp);
388 err |= __put_user(sas_ss_flags(regs->r1),
389 &frame->uc.uc_stack.ss_flags);
390 err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
391 err |= setup_sigcontext(&frame->uc.uc_mcontext,
392 regs, set->sig[0]);
393 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
394
395 /* Set up to return from userspace. If provided, use a stub
396 already in userspace. */
397 /* minus 8 is offset to cater for "rtsd r15,8" */
398 if (ka->sa.sa_flags & SA_RESTORER) {
399 regs->r15 = ((unsigned long)ka->sa.sa_restorer)-8;
400 } else {
401 /* addi r12, r0, __NR_sigreturn */
402 err |= __put_user(0x31800000 | __NR_rt_sigreturn ,
403 frame->tramp + 0);
404 /* brki r14, 0x8 */
405 err |= __put_user(0xb9cc0008, frame->tramp + 1);
406
407 /* Return from sighandler will jump to the tramp.
408 Negative 8 offset because return is rtsd r15, 8 */
409 regs->r15 = ((unsigned long)frame->tramp)-8;
410
411 __invalidate_cache_sigtramp((unsigned long)frame->tramp);
412 }
413
414 if (err)
415 goto give_sigsegv;
416
417 /* Set up registers for signal handler */
418 regs->r1 = (unsigned long) frame;
419 /* Signal handler args: */
420 regs->r5 = signal; /* arg 0: signum */
421 regs->r6 = (unsigned long) &frame->info; /* arg 1: siginfo */
422 regs->r7 = (unsigned long) &frame->uc; /* arg2: ucontext */
423 /* Offset to handle microblaze rtid r14, 0 */
424 regs->pc = (unsigned long)ka->sa.sa_handler;
425
426 set_fs(USER_DS);
427
428#ifdef DEBUG_SIG
429 printk(KERN_INFO "SIG deliver (%s:%d): sp=%p pc=%08lx\n",
430 current->comm, current->pid, frame, regs->pc);
431#endif
432
433 return;
434
435give_sigsegv:
436 if (sig == SIGSEGV)
437 ka->sa.sa_handler = SIG_DFL;
438 force_sig(SIGSEGV, current);
439}
440
441/* Handle restarting system calls */
442static inline void
443handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
444{
445 switch (regs->r3) {
446 case -ERESTART_RESTARTBLOCK:
447 case -ERESTARTNOHAND:
448 if (!has_handler)
449 goto do_restart;
450 regs->r3 = -EINTR;
451 break;
452 case -ERESTARTSYS:
453 if (has_handler && !(ka->sa.sa_flags & SA_RESTART)) {
454 regs->r3 = -EINTR;
455 break;
456 }
457 /* fallthrough */
458 case -ERESTARTNOINTR:
459do_restart:
460 /* offset of 4 bytes to re-execute trap (brki) instruction */
461 regs->pc -= 4;
462 break;
463 }
464}
465
466/*
467 * OK, we're invoking a handler
468 */
469
470static void
471handle_signal(unsigned long sig, struct k_sigaction *ka,
472 siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)
473{
474 /* Set up the stack frame */
475 if (ka->sa.sa_flags & SA_SIGINFO)
476 setup_rt_frame(sig, ka, info, oldset, regs);
477 else
478 setup_frame(sig, ka, oldset, regs);
479
480 if (ka->sa.sa_flags & SA_ONESHOT)
481 ka->sa.sa_handler = SIG_DFL;
482
483 if (!(ka->sa.sa_flags & SA_NODEFER)) {
484 spin_lock_irq(&current->sighand->siglock);
485 sigorsets(&current->blocked,
486 &current->blocked, &ka->sa.sa_mask);
487 sigaddset(&current->blocked, sig);
488 recalc_sigpending();
489 spin_unlock_irq(&current->sighand->siglock);
490 }
491}
492
493/*
494 * Note that 'init' is a special process: it doesn't get signals it doesn't
495 * want to handle. Thus you cannot kill init even with a SIGKILL even by
496 * mistake.
497 *
498 * Note that we go through the signals twice: once to check the signals that
499 * the kernel can handle, and then we build all the user-level signal handling
500 * stack-frames in one go after that.
501 */
502int do_signal(struct pt_regs *regs, sigset_t *oldset, int in_syscall)
503{
504 siginfo_t info;
505 int signr;
506 struct k_sigaction ka;
507#ifdef DEBUG_SIG
508 printk(KERN_INFO "do signal: %p %p %d\n", regs, oldset, in_syscall);
509 printk(KERN_INFO "do signal2: %lx %lx %ld [%lx]\n", regs->pc, regs->r1,
510 regs->r12, current_thread_info()->flags);
511#endif
512 /*
513 * We want the common case to go fast, which
514 * is why we may in certain cases get here from
515 * kernel mode. Just return without doing anything
516 * if so.
517 */
518 if (kernel_mode(regs))
519 return 1;
520
521 if (!oldset)
522 oldset = &current->blocked;
523
524 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
525 if (signr > 0) {
526 /* Whee! Actually deliver the signal. */
527 if (in_syscall)
528 handle_restart(regs, &ka, 1);
529 handle_signal(signr, &ka, &info, oldset, regs);
530 return 1;
531 }
532
533 if (in_syscall)
534 handle_restart(regs, NULL, 0);
535
536 /* Did we come from a system call? */
537 return 0;
538}
diff --git a/arch/microblaze/kernel/sys_microblaze.c b/arch/microblaze/kernel/sys_microblaze.c
new file mode 100644
index 000000000000..d90b548fb1bb
--- /dev/null
+++ b/arch/microblaze/kernel/sys_microblaze.c
@@ -0,0 +1,227 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
5 *
6 * Copyright (C) 2006 Atmark Techno, Inc.
7 * Yasushi SHOJI <yashi@atmark-techno.com>
8 * Tetsuya OHKAWA <tetsuya@atmark-techno.com>
9 *
10 * This file is subject to the terms and conditions of the GNU General Public
11 * License. See the file "COPYING" in the main directory of this archive
12 * for more details.
13 */
14
15#include <linux/errno.h>
16#include <linux/mm.h>
17#include <linux/smp.h>
18#include <linux/smp_lock.h>
19#include <linux/syscalls.h>
20#include <linux/sem.h>
21#include <linux/msg.h>
22#include <linux/shm.h>
23#include <linux/stat.h>
24#include <linux/mman.h>
25#include <linux/sys.h>
26#include <linux/ipc.h>
27#include <linux/utsname.h>
28#include <linux/file.h>
29#include <linux/module.h>
30#include <linux/err.h>
31#include <linux/fs.h>
32#include <linux/ipc.h>
33#include <linux/semaphore.h>
34#include <linux/syscalls.h>
35#include <linux/uaccess.h>
36#include <linux/unistd.h>
37
38#include <asm/syscalls.h>
39/*
40 * sys_ipc() is the de-multiplexer for the SysV IPC calls..
41 *
42 * This is really horribly ugly. This will be remove with new toolchain.
43 */
44asmlinkage int
45sys_ipc(uint call, int first, int second, int third, void *ptr, long fifth)
46{
47 int version, ret;
48
49 version = call >> 16; /* hack for backward compatibility */
50 call &= 0xffff;
51
52 ret = -EINVAL;
53 switch (call) {
54 case SEMOP:
55 ret = sys_semop(first, (struct sembuf *)ptr, second);
56 break;
57 case SEMGET:
58 ret = sys_semget(first, second, third);
59 break;
60 case SEMCTL:
61 {
62 union semun fourth;
63
64 if (!ptr)
65 break;
66 ret = (access_ok(VERIFY_READ, ptr, sizeof(long)) ? 0 : -EFAULT)
67 || (get_user(fourth.__pad, (void **)ptr)) ;
68 if (ret)
69 break;
70 ret = sys_semctl(first, second, third, fourth);
71 break;
72 }
73 case MSGSND:
74 ret = sys_msgsnd(first, (struct msgbuf *) ptr, second, third);
75 break;
76 case MSGRCV:
77 switch (version) {
78 case 0: {
79 struct ipc_kludge tmp;
80
81 if (!ptr)
82 break;
83 ret = (access_ok(VERIFY_READ, ptr, sizeof(tmp))
84 ? 0 : -EFAULT) || copy_from_user(&tmp,
85 (struct ipc_kludge *) ptr, sizeof(tmp));
86 if (ret)
87 break;
88 ret = sys_msgrcv(first, tmp.msgp, second, tmp.msgtyp,
89 third);
90 break;
91 }
92 default:
93 ret = sys_msgrcv(first, (struct msgbuf *) ptr,
94 second, fifth, third);
95 break;
96 }
97 break;
98 case MSGGET:
99 ret = sys_msgget((key_t) first, second);
100 break;
101 case MSGCTL:
102 ret = sys_msgctl(first, second, (struct msqid_ds *) ptr);
103 break;
104 case SHMAT:
105 switch (version) {
106 default: {
107 ulong raddr;
108 ret = access_ok(VERIFY_WRITE, (ulong *) third,
109 sizeof(ulong)) ? 0 : -EFAULT;
110 if (ret)
111 break;
112 ret = do_shmat(first, (char *) ptr, second, &raddr);
113 if (ret)
114 break;
115 ret = put_user(raddr, (ulong *) third);
116 break;
117 }
118 case 1: /* iBCS2 emulator entry point */
119 if (!segment_eq(get_fs(), get_ds()))
120 break;
121 ret = do_shmat(first, (char *) ptr, second,
122 (ulong *) third);
123 break;
124 }
125 break;
126 case SHMDT:
127 ret = sys_shmdt((char *)ptr);
128 break;
129 case SHMGET:
130 ret = sys_shmget(first, second, third);
131 break;
132 case SHMCTL:
133 ret = sys_shmctl(first, second, (struct shmid_ds *) ptr);
134 break;
135 }
136 return -EINVAL;
137}
138
139asmlinkage int sys_vfork(struct pt_regs *regs)
140{
141 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->r1,
142 regs, 0, NULL, NULL);
143}
144
145asmlinkage int sys_clone(int flags, unsigned long stack, struct pt_regs *regs)
146{
147 if (!stack)
148 stack = regs->r1;
149 return do_fork(flags, stack, regs, 0, NULL, NULL);
150}
151
152asmlinkage int sys_execve(char __user *filenamei, char __user *__user *argv,
153 char __user *__user *envp, struct pt_regs *regs)
154{
155 int error;
156 char *filename;
157
158 filename = getname(filenamei);
159 error = PTR_ERR(filename);
160 if (IS_ERR(filename))
161 goto out;
162 error = do_execve(filename, argv, envp, regs);
163 putname(filename);
164out:
165 return error;
166}
167
168asmlinkage unsigned long
169sys_mmap2(unsigned long addr, size_t len,
170 unsigned long prot, unsigned long flags,
171 unsigned long fd, unsigned long pgoff)
172{
173 struct file *file = NULL;
174 int ret = -EBADF;
175
176 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
177 if (!(flags & MAP_ANONYMOUS)) {
178 file = fget(fd);
179 if (!file) {
180 printk(KERN_INFO "no fd in mmap\r\n");
181 goto out;
182 }
183 }
184
185 down_write(&current->mm->mmap_sem);
186 ret = do_mmap_pgoff(file, addr, len, prot, flags, pgoff);
187 up_write(&current->mm->mmap_sem);
188 if (file)
189 fput(file);
190out:
191 return ret;
192}
193
194asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
195 unsigned long prot, unsigned long flags,
196 unsigned long fd, off_t offset)
197{
198 int err = -EINVAL;
199
200 if (offset & ~PAGE_MASK) {
201 printk(KERN_INFO "no pagemask in mmap\r\n");
202 goto out;
203 }
204
205 err = sys_mmap2(addr, len, prot, flags, fd, offset >> PAGE_SHIFT);
206out:
207 return err;
208}
209
210/*
211 * Do a system call from kernel instead of calling sys_execve so we
212 * end up with proper pt_regs.
213 */
214int kernel_execve(const char *filename, char *const argv[], char *const envp[])
215{
216 register const char *__a __asm__("r5") = filename;
217 register const void *__b __asm__("r6") = argv;
218 register const void *__c __asm__("r7") = envp;
219 register unsigned long __syscall __asm__("r12") = __NR_execve;
220 register unsigned long __ret __asm__("r3");
221 __asm__ __volatile__ ("brki r14, 0x8"
222 : "=r" (__ret), "=r" (__syscall)
223 : "1" (__syscall), "r" (__a), "r" (__b), "r" (__c)
224 : "r4", "r8", "r9",
225 "r10", "r11", "r14", "cc", "memory");
226 return __ret;
227}
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S
new file mode 100644
index 000000000000..529b0dbf4fe9
--- /dev/null
+++ b/arch/microblaze/kernel/syscall_table.S
@@ -0,0 +1,365 @@
1ENTRY(sys_call_table)
2 .long sys_restart_syscall /* 0 - old "setup()" system call,
3 * used for restarting */
4 .long sys_exit
5 .long sys_ni_syscall /* was fork */
6 .long sys_read
7 .long sys_write
8 .long sys_open /* 5 */
9 .long sys_close
10 .long sys_waitpid
11 .long sys_creat
12 .long sys_link
13 .long sys_unlink /* 10 */
14 .long sys_execve_wrapper
15 .long sys_chdir
16 .long sys_time
17 .long sys_mknod
18 .long sys_chmod /* 15 */
19 .long sys_lchown
20 .long sys_ni_syscall /* old break syscall holder */
21 .long sys_ni_syscall /* old stat */
22 .long sys_lseek
23 .long sys_getpid /* 20 */
24 .long sys_mount
25 .long sys_oldumount
26 .long sys_setuid
27 .long sys_getuid
28 .long sys_stime /* 25 */
29 .long sys_ptrace
30 .long sys_alarm
31 .long sys_ni_syscall /* oldfstat */
32 .long sys_pause
33 .long sys_utime /* 30 */
34 .long sys_ni_syscall /* old stty syscall holder */
35 .long sys_ni_syscall /* old gtty syscall holder */
36 .long sys_access
37 .long sys_nice
38 .long sys_ni_syscall /* 35 - old ftime syscall holder */
39 .long sys_sync
40 .long sys_kill
41 .long sys_rename
42 .long sys_mkdir
43 .long sys_rmdir /* 40 */
44 .long sys_dup
45 .long sys_pipe
46 .long sys_times
47 .long sys_ni_syscall /* old prof syscall holder */
48 .long sys_brk /* 45 */
49 .long sys_setgid
50 .long sys_getgid
51 .long sys_signal
52 .long sys_geteuid
53 .long sys_getegid /* 50 */
54 .long sys_acct
55 .long sys_umount /* recycled never used phys() */
56 .long sys_ni_syscall /* old lock syscall holder */
57 .long sys_ioctl
58 .long sys_fcntl /* 55 */
59 .long sys_ni_syscall /* old mpx syscall holder */
60 .long sys_setpgid
61 .long sys_ni_syscall /* old ulimit syscall holder */
62 .long sys_ni_syscall /* olduname */
63 .long sys_umask /* 60 */
64 .long sys_chroot
65 .long sys_ustat
66 .long sys_dup2
67 .long sys_getppid
68 .long sys_getpgrp /* 65 */
69 .long sys_setsid
70 .long sys_sigaction
71 .long sys_sgetmask
72 .long sys_ssetmask
73 .long sys_setreuid /* 70 */
74 .long sys_setregid
75 .long sys_sigsuspend_wrapper
76 .long sys_sigpending
77 .long sys_sethostname
78 .long sys_setrlimit /* 75 */
79 .long sys_ni_syscall /* old_getrlimit */
80 .long sys_getrusage
81 .long sys_gettimeofday
82 .long sys_settimeofday
83 .long sys_getgroups /* 80 */
84 .long sys_setgroups
85 .long sys_ni_syscall /* old_select */
86 .long sys_symlink
87 .long sys_ni_syscall /* oldlstat */
88 .long sys_readlink /* 85 */
89 .long sys_uselib
90 .long sys_swapon
91 .long sys_reboot
92 .long sys_ni_syscall /* old_readdir */
93 .long sys_mmap /* 90 */ /* old_mmap */
94 .long sys_munmap
95 .long sys_truncate
96 .long sys_ftruncate
97 .long sys_fchmod
98 .long sys_fchown /* 95 */
99 .long sys_getpriority
100 .long sys_setpriority
101 .long sys_ni_syscall /* old profil syscall holder */
102 .long sys_statfs
103 .long sys_fstatfs /* 100 */
104 .long sys_ni_syscall /* ioperm */
105 .long sys_socketcall
106 .long sys_syslog /* operation with system console */
107 .long sys_setitimer
108 .long sys_getitimer /* 105 */
109 .long sys_newstat
110 .long sys_newlstat
111 .long sys_newfstat
112 .long sys_ni_syscall /* uname */
113 .long sys_ni_syscall /* 110 */ /* iopl */
114 .long sys_vhangup
115 .long sys_ni_syscall /* old "idle" system call */
116 .long sys_ni_syscall /* old sys_vm86old */
117 .long sys_wait4
118 .long sys_swapoff /* 115 */
119 .long sys_sysinfo
120 .long sys_ipc
121 .long sys_fsync
122 .long sys_sigreturn_wrapper
123 .long sys_clone_wrapper /* 120 */
124 .long sys_setdomainname
125 .long sys_newuname
126 .long sys_ni_syscall /* modify_ldt */
127 .long sys_adjtimex
128 .long sys_mprotect /* 125: sys_mprotect */
129 .long sys_sigprocmask
130 .long sys_ni_syscall /* old "create_module" */
131 .long sys_init_module
132 .long sys_delete_module
133 .long sys_ni_syscall /* 130: old "get_kernel_syms" */
134 .long sys_quotactl
135 .long sys_getpgid
136 .long sys_fchdir
137 .long sys_bdflush
138 .long sys_sysfs /* 135 */
139 .long sys_personality
140 .long sys_ni_syscall /* reserved for afs_syscall */
141 .long sys_setfsuid
142 .long sys_setfsgid
143 .long sys_llseek /* 140 */
144 .long sys_getdents
145 .long sys_select
146 .long sys_flock
147 .long sys_msync
148 .long sys_readv /* 145 */
149 .long sys_writev
150 .long sys_getsid
151 .long sys_fdatasync
152 .long sys_sysctl
153 .long sys_mlock /* 150: sys_mlock */
154 .long sys_munlock
155 .long sys_mlockall
156 .long sys_munlockall
157 .long sys_sched_setparam
158 .long sys_sched_getparam /* 155 */
159 .long sys_sched_setscheduler
160 .long sys_sched_getscheduler
161 .long sys_sched_yield
162 .long sys_sched_get_priority_max
163 .long sys_sched_get_priority_min /* 160 */
164 .long sys_sched_rr_get_interval
165 .long sys_nanosleep
166 .long sys_mremap
167 .long sys_setresuid
168 .long sys_getresuid /* 165 */
169 .long sys_ni_syscall /* sys_vm86 */
170 .long sys_ni_syscall /* Old sys_query_module */
171 .long sys_poll
172 .long sys_nfsservctl
173 .long sys_setresgid /* 170 */
174 .long sys_getresgid
175 .long sys_prctl
176 .long sys_rt_sigreturn_wrapper
177 .long sys_rt_sigaction
178 .long sys_rt_sigprocmask /* 175 */
179 .long sys_rt_sigpending
180 .long sys_rt_sigtimedwait
181 .long sys_rt_sigqueueinfo
182 .long sys_rt_sigsuspend_wrapper
183 .long sys_pread64 /* 180 */
184 .long sys_pwrite64
185 .long sys_chown
186 .long sys_getcwd
187 .long sys_capget
188 .long sys_capset /* 185 */
189 .long sys_ni_syscall /* sigaltstack */
190 .long sys_sendfile
191 .long sys_ni_syscall /* reserved for streams1 */
192 .long sys_ni_syscall /* reserved for streams2 */
193 .long sys_vfork_wrapper /* 190 */
194 .long sys_getrlimit
195 .long sys_mmap2 /* mmap2 */
196 .long sys_truncate64
197 .long sys_ftruncate64
198 .long sys_stat64 /* 195 */
199 .long sys_lstat64
200 .long sys_fstat64
201 .long sys_lchown
202 .long sys_getuid
203 .long sys_getgid /* 200 */
204 .long sys_geteuid
205 .long sys_getegid
206 .long sys_setreuid
207 .long sys_setregid
208 .long sys_getgroups /* 205 */
209 .long sys_setgroups
210 .long sys_fchown
211 .long sys_setresuid
212 .long sys_getresuid
213 .long sys_setresgid /* 210 */
214 .long sys_getresgid
215 .long sys_chown
216 .long sys_setuid
217 .long sys_setgid
218 .long sys_setfsuid /* 215 */
219 .long sys_setfsgid
220 .long sys_pivot_root
221 .long sys_mincore
222 .long sys_madvise
223 .long sys_getdents64 /* 220 */
224 .long sys_fcntl64
225 .long sys_ni_syscall /* reserved for TUX */
226 .long sys_ni_syscall
227 .long sys_gettid
228 .long sys_readahead /* 225 */
229 .long sys_setxattr
230 .long sys_lsetxattr
231 .long sys_fsetxattr
232 .long sys_getxattr
233 .long sys_lgetxattr /* 230 */
234 .long sys_fgetxattr
235 .long sys_listxattr
236 .long sys_llistxattr
237 .long sys_flistxattr
238 .long sys_removexattr /* 235 */
239 .long sys_lremovexattr
240 .long sys_fremovexattr
241 .long sys_tkill
242 .long sys_sendfile64
243 .long sys_futex /* 240 */
244 .long sys_sched_setaffinity
245 .long sys_sched_getaffinity
246 .long sys_ni_syscall /* set_thread_area */
247 .long sys_ni_syscall /* get_thread_area */
248 .long sys_io_setup /* 245 */
249 .long sys_io_destroy
250 .long sys_io_getevents
251 .long sys_io_submit
252 .long sys_io_cancel
253 .long sys_fadvise64 /* 250 */
254 .long sys_ni_syscall
255 .long sys_exit_group
256 .long sys_lookup_dcookie
257 .long sys_epoll_create
258 .long sys_epoll_ctl /* 255 */
259 .long sys_epoll_wait
260 .long sys_remap_file_pages
261 .long sys_set_tid_address
262 .long sys_timer_create
263 .long sys_timer_settime /* 260 */
264 .long sys_timer_gettime
265 .long sys_timer_getoverrun
266 .long sys_timer_delete
267 .long sys_clock_settime
268 .long sys_clock_gettime /* 265 */
269 .long sys_clock_getres
270 .long sys_clock_nanosleep
271 .long sys_statfs64
272 .long sys_fstatfs64
273 .long sys_tgkill /* 270 */
274 .long sys_utimes
275 .long sys_fadvise64_64
276 .long sys_ni_syscall /* sys_vserver */
277 .long sys_mbind
278 .long sys_get_mempolicy
279 .long sys_set_mempolicy
280 .long sys_mq_open
281 .long sys_mq_unlink
282 .long sys_mq_timedsend
283 .long sys_mq_timedreceive /* 280 */
284 .long sys_mq_notify
285 .long sys_mq_getsetattr
286 .long sys_kexec_load
287 .long sys_waitid
288 .long sys_ni_syscall /* 285 */ /* available */
289 .long sys_add_key
290 .long sys_request_key
291 .long sys_keyctl
292 .long sys_ioprio_set
293 .long sys_ioprio_get /* 290 */
294 .long sys_inotify_init
295 .long sys_inotify_add_watch
296 .long sys_inotify_rm_watch
297 .long sys_ni_syscall /* sys_migrate_pages */
298 .long sys_openat /* 295 */
299 .long sys_mkdirat
300 .long sys_mknodat
301 .long sys_fchownat
302 .long sys_ni_syscall
303 .long sys_fstatat64 /* 300 */
304 .long sys_unlinkat
305 .long sys_renameat
306 .long sys_linkat
307 .long sys_symlinkat
308 .long sys_readlinkat /* 305 */
309 .long sys_fchmodat
310 .long sys_faccessat
311 .long sys_ni_syscall /* pselect6 */
312 .long sys_ni_syscall /* sys_ppoll */
313 .long sys_unshare /* 310 */
314 .long sys_set_robust_list
315 .long sys_get_robust_list
316 .long sys_splice
317 .long sys_sync_file_range
318 .long sys_tee /* 315 */
319 .long sys_vmsplice
320 .long sys_move_pages
321 .long sys_getcpu
322 .long sys_epoll_pwait
323 .long sys_utimensat /* 320 */
324 .long sys_signalfd
325 .long sys_timerfd_create
326 .long sys_eventfd
327 .long sys_fallocate
328 .long sys_semtimedop /* 325 */
329 .long sys_timerfd_settime
330 .long sys_timerfd_gettime
331 .long sys_semctl
332 .long sys_semget
333 .long sys_semop /* 330 */
334 .long sys_msgctl
335 .long sys_msgget
336 .long sys_msgrcv
337 .long sys_msgsnd
338 .long sys_shmat /* 335 */
339 .long sys_shmctl
340 .long sys_shmdt
341 .long sys_shmget
342 .long sys_signalfd4 /* new syscall */
343 .long sys_eventfd2 /* 340 */
344 .long sys_epoll_create1
345 .long sys_dup3
346 .long sys_pipe2
347 .long sys_inotify_init1
348 .long sys_socket /* 345 */
349 .long sys_socketpair
350 .long sys_bind
351 .long sys_listen
352 .long sys_accept
353 .long sys_connect /* 350 */
354 .long sys_getsockname
355 .long sys_getpeername
356 .long sys_sendto
357 .long sys_send
358 .long sys_recvfrom /* 355 */
359 .long sys_recv
360 .long sys_setsockopt
361 .long sys_getsockopt
362 .long sys_shutdown
363 .long sys_sendmsg /* 360 */
364 .long sys_recvmsg
365 .long sys_ni_syscall
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
new file mode 100644
index 000000000000..05a497eefd78
--- /dev/null
+++ b/arch/microblaze/kernel/timer.c
@@ -0,0 +1,262 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/param.h>
14#include <linux/interrupt.h>
15#include <linux/profile.h>
16#include <linux/irq.h>
17#include <linux/delay.h>
18#include <linux/sched.h>
19#include <linux/spinlock.h>
20#include <linux/err.h>
21#include <linux/clk.h>
22#include <linux/clocksource.h>
23#include <linux/clockchips.h>
24#include <linux/io.h>
25#include <asm/cpuinfo.h>
26#include <asm/setup.h>
27#include <asm/prom.h>
28#include <asm/irq.h>
29#include <asm/system.h>
30
31#ifdef CONFIG_SELFMOD_TIMER
32#include <asm/selfmod.h>
33#define TIMER_BASE BARRIER_BASE_ADDR
34#else
35static unsigned int timer_baseaddr;
36#define TIMER_BASE timer_baseaddr
37#endif
38
39#define TCSR0 (0x00)
40#define TLR0 (0x04)
41#define TCR0 (0x08)
42#define TCSR1 (0x10)
43#define TLR1 (0x14)
44#define TCR1 (0x18)
45
46#define TCSR_MDT (1<<0)
47#define TCSR_UDT (1<<1)
48#define TCSR_GENT (1<<2)
49#define TCSR_CAPT (1<<3)
50#define TCSR_ARHT (1<<4)
51#define TCSR_LOAD (1<<5)
52#define TCSR_ENIT (1<<6)
53#define TCSR_ENT (1<<7)
54#define TCSR_TINT (1<<8)
55#define TCSR_PWMA (1<<9)
56#define TCSR_ENALL (1<<10)
57
58static inline void microblaze_timer0_stop(void)
59{
60 out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0) & ~TCSR_ENT);
61}
62
63static inline void microblaze_timer0_start_periodic(unsigned long load_val)
64{
65 if (!load_val)
66 load_val = 1;
67 out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
68
69 /* load the initial value */
70 out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
71
72 /* see timer data sheet for detail
73 * !ENALL - don't enable 'em all
74 * !PWMA - disable pwm
75 * TINT - clear interrupt status
76 * ENT- enable timer itself
77 * EINT - enable interrupt
78 * !LOAD - clear the bit to let go
79 * ARHT - auto reload
80 * !CAPT - no external trigger
81 * !GENT - no external signal
82 * UDT - set the timer as down counter
83 * !MDT0 - generate mode
84 */
85 out_be32(TIMER_BASE + TCSR0,
86 TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
87}
88
89static inline void microblaze_timer0_start_oneshot(unsigned long load_val)
90{
91 if (!load_val)
92 load_val = 1;
93 out_be32(TIMER_BASE + TLR0, load_val); /* loading value to timer reg */
94
95 /* load the initial value */
96 out_be32(TIMER_BASE + TCSR0, TCSR_LOAD);
97
98 out_be32(TIMER_BASE + TCSR0,
99 TCSR_TINT|TCSR_ENIT|TCSR_ENT|TCSR_ARHT|TCSR_UDT);
100}
101
102static int microblaze_timer_set_next_event(unsigned long delta,
103 struct clock_event_device *dev)
104{
105 pr_debug("%s: next event, delta %x\n", __func__, (u32)delta);
106 microblaze_timer0_start_oneshot(delta);
107 return 0;
108}
109
110static void microblaze_timer_set_mode(enum clock_event_mode mode,
111 struct clock_event_device *evt)
112{
113 switch (mode) {
114 case CLOCK_EVT_MODE_PERIODIC:
115 printk(KERN_INFO "%s: periodic\n", __func__);
116 microblaze_timer0_start_periodic(cpuinfo.freq_div_hz);
117 break;
118 case CLOCK_EVT_MODE_ONESHOT:
119 printk(KERN_INFO "%s: oneshot\n", __func__);
120 break;
121 case CLOCK_EVT_MODE_UNUSED:
122 printk(KERN_INFO "%s: unused\n", __func__);
123 break;
124 case CLOCK_EVT_MODE_SHUTDOWN:
125 printk(KERN_INFO "%s: shutdown\n", __func__);
126 microblaze_timer0_stop();
127 break;
128 case CLOCK_EVT_MODE_RESUME:
129 printk(KERN_INFO "%s: resume\n", __func__);
130 break;
131 }
132}
133
134static struct clock_event_device clockevent_microblaze_timer = {
135 .name = "microblaze_clockevent",
136 .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
137 .shift = 24,
138 .rating = 300,
139 .set_next_event = microblaze_timer_set_next_event,
140 .set_mode = microblaze_timer_set_mode,
141};
142
143static inline void timer_ack(void)
144{
145 out_be32(TIMER_BASE + TCSR0, in_be32(TIMER_BASE + TCSR0));
146}
147
148static irqreturn_t timer_interrupt(int irq, void *dev_id)
149{
150 struct clock_event_device *evt = &clockevent_microblaze_timer;
151#ifdef CONFIG_HEART_BEAT
152 heartbeat();
153#endif
154 timer_ack();
155 evt->event_handler(evt);
156 return IRQ_HANDLED;
157}
158
159static struct irqaction timer_irqaction = {
160 .handler = timer_interrupt,
161 .flags = IRQF_DISABLED | IRQF_TIMER,
162 .name = "timer",
163 .dev_id = &clockevent_microblaze_timer,
164};
165
166static __init void microblaze_clockevent_init(void)
167{
168 clockevent_microblaze_timer.mult =
169 div_sc(cpuinfo.cpu_clock_freq, NSEC_PER_SEC,
170 clockevent_microblaze_timer.shift);
171 clockevent_microblaze_timer.max_delta_ns =
172 clockevent_delta2ns((u32)~0, &clockevent_microblaze_timer);
173 clockevent_microblaze_timer.min_delta_ns =
174 clockevent_delta2ns(1, &clockevent_microblaze_timer);
175 clockevent_microblaze_timer.cpumask = cpumask_of(0);
176 clockevents_register_device(&clockevent_microblaze_timer);
177}
178
179static cycle_t microblaze_read(void)
180{
181 /* reading actual value of timer 1 */
182 return (cycle_t) (in_be32(TIMER_BASE + TCR1));
183}
184
185static struct clocksource clocksource_microblaze = {
186 .name = "microblaze_clocksource",
187 .rating = 300,
188 .read = microblaze_read,
189 .mask = CLOCKSOURCE_MASK(32),
190 .shift = 24, /* I can shift it */
191 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
192};
193
194static int __init microblaze_clocksource_init(void)
195{
196 clocksource_microblaze.mult =
197 clocksource_hz2mult(cpuinfo.cpu_clock_freq,
198 clocksource_microblaze.shift);
199 if (clocksource_register(&clocksource_microblaze))
200 panic("failed to register clocksource");
201
202 /* stop timer1 */
203 out_be32(TIMER_BASE + TCSR1, in_be32(TIMER_BASE + TCSR1) & ~TCSR_ENT);
204 /* start timer1 - up counting without interrupt */
205 out_be32(TIMER_BASE + TCSR1, TCSR_TINT|TCSR_ENT|TCSR_ARHT);
206 return 0;
207}
208
209void __init time_init(void)
210{
211 u32 irq, i = 0;
212 u32 timer_num = 1;
213 struct device_node *timer = NULL;
214#ifdef CONFIG_SELFMOD_TIMER
215 unsigned int timer_baseaddr = 0;
216 int arr_func[] = {
217 (int)&microblaze_read,
218 (int)&timer_interrupt,
219 (int)&microblaze_clocksource_init,
220 (int)&microblaze_timer_set_mode,
221 (int)&microblaze_timer_set_next_event,
222 0
223 };
224#endif
225 char *timer_list[] = {
226 "xlnx,xps-timer-1.00.a",
227 "xlnx,opb-timer-1.00.b",
228 "xlnx,opb-timer-1.00.a",
229 NULL
230 };
231
232 for (i = 0; timer_list[i] != NULL; i++) {
233 timer = of_find_compatible_node(NULL, NULL, timer_list[i]);
234 if (timer)
235 break;
236 }
237
238 timer_baseaddr = *(int *) of_get_property(timer, "reg", NULL);
239 timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
240 irq = *(int *) of_get_property(timer, "interrupts", NULL);
241 timer_num =
242 *(int *) of_get_property(timer, "xlnx,one-timer-only", NULL);
243 if (timer_num) {
244 printk(KERN_EMERG "Please enable two timers in HW\n");
245 BUG();
246 }
247
248#ifdef CONFIG_SELFMOD_TIMER
249 selfmod_function((int *) arr_func, timer_baseaddr);
250#endif
251 printk(KERN_INFO "%s #0 at 0x%08x, irq=%d\n",
252 timer_list[i], timer_baseaddr, irq);
253
254 cpuinfo.freq_div_hz = cpuinfo.cpu_clock_freq / HZ;
255
256 setup_irq(irq, &timer_irqaction);
257#ifdef CONFIG_HEART_BEAT
258 setup_heartbeat();
259#endif
260 microblaze_clocksource_init();
261 microblaze_clockevent_init();
262}
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c
new file mode 100644
index 000000000000..fbdc533c61e3
--- /dev/null
+++ b/arch/microblaze/kernel/traps.c
@@ -0,0 +1,107 @@
1/*
2 * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2007-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/kernel.h>
12#include <linux/kallsyms.h>
13#include <linux/module.h>
14#include <linux/sched.h>
15#include <linux/debug_locks.h>
16
17#include <asm/exceptions.h>
18#include <asm/system.h>
19
20void trap_init(void)
21{
22 __enable_hw_exceptions();
23}
24
25void __bad_xchg(volatile void *ptr, int size)
26{
27 printk(KERN_INFO "xchg: bad data size: pc 0x%p, ptr 0x%p, size %d\n",
28 __builtin_return_address(0), ptr, size);
29 BUG();
30}
31EXPORT_SYMBOL(__bad_xchg);
32
33static int kstack_depth_to_print = 24;
34
35static int __init kstack_setup(char *s)
36{
37 kstack_depth_to_print = strict_strtoul(s, 0, 0);
38
39 return 1;
40}
41__setup("kstack=", kstack_setup);
42
43void show_trace(struct task_struct *task, unsigned long *stack)
44{
45 unsigned long addr;
46
47 if (!stack)
48 stack = (unsigned long *)&stack;
49
50 printk(KERN_NOTICE "Call Trace: ");
51#ifdef CONFIG_KALLSYMS
52 printk(KERN_NOTICE "\n");
53#endif
54 while (!kstack_end(stack)) {
55 addr = *stack++;
56 /*
57 * If the address is either in the text segment of the
58 * kernel, or in the region which contains vmalloc'ed
59 * memory, it *may* be the address of a calling
60 * routine; if so, print it so that someone tracing
61 * down the cause of the crash will be able to figure
62 * out the call path that was taken.
63 */
64 if (kernel_text_address(addr))
65 print_ip_sym(addr);
66 }
67 printk(KERN_NOTICE "\n");
68
69 if (!task)
70 task = current;
71
72 debug_show_held_locks(task);
73}
74
75void show_stack(struct task_struct *task, unsigned long *sp)
76{
77 unsigned long *stack;
78 int i;
79
80 if (sp == NULL) {
81 if (task)
82 sp = (unsigned long *) ((struct thread_info *)
83 (task->stack))->cpu_context.r1;
84 else
85 sp = (unsigned long *)&sp;
86 }
87
88 stack = sp;
89
90 printk(KERN_INFO "\nStack:\n ");
91
92 for (i = 0; i < kstack_depth_to_print; i++) {
93 if (kstack_end(sp))
94 break;
95 if (i && ((i % 8) == 0))
96 printk("\n ");
97 printk("%08lx ", *sp++);
98 }
99 printk("\n");
100 show_trace(task, stack);
101}
102
103void dump_stack(void)
104{
105 show_stack(NULL, NULL);
106}
107EXPORT_SYMBOL(dump_stack);
diff --git a/arch/microblaze/kernel/vmlinux.lds.S b/arch/microblaze/kernel/vmlinux.lds.S
new file mode 100644
index 000000000000..840385e51291
--- /dev/null
+++ b/arch/microblaze/kernel/vmlinux.lds.S
@@ -0,0 +1,163 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2006 Atmark Techno, Inc.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11OUTPUT_FORMAT("elf32-microblaze", "elf32-microblaze", "elf32-microblaze")
12OUTPUT_ARCH(microblaze)
13ENTRY(_start)
14
15#include <asm-generic/vmlinux.lds.h>
16
17jiffies = jiffies_64 + 4;
18
19SECTIONS {
20 . = CONFIG_KERNEL_BASE_ADDR;
21
22 .text : {
23 _text = . ;
24 _stext = . ;
25 *(.text .text.*)
26 *(.fixup)
27
28 *(.exitcall.exit)
29 SCHED_TEXT
30 LOCK_TEXT
31 KPROBES_TEXT
32 . = ALIGN (4) ;
33 _etext = . ;
34 }
35
36 . = ALIGN (4) ;
37 _fdt_start = . ; /* place for fdt blob */
38 . = . + 0x4000;
39 _fdt_end = . ;
40
41 . = ALIGN(16);
42 RODATA
43 . = ALIGN(16);
44 __ex_table : {
45 __start___ex_table = .;
46 *(__ex_table)
47 __stop___ex_table = .;
48 }
49
50 /*
51 * sdata2 section can go anywhere, but must be word aligned
52 * and SDA2_BASE must point to the middle of it
53 */
54 .sdata2 : {
55 _ssrw = .;
56 . = ALIGN(4096); /* page aligned when MMU used - origin 0x8 */
57 *(.sdata2)
58 . = ALIGN(8);
59 _essrw = .;
60 _ssrw_size = _essrw - _ssrw;
61 _KERNEL_SDA2_BASE_ = _ssrw + (_ssrw_size / 2);
62 }
63
64 _sdata = . ;
65 .data ALIGN (4096) : { /* page aligned when MMU used - origin 0x4 */
66 *(.data)
67 }
68 . = ALIGN(32);
69 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
70 _edata = . ;
71
72 /* Reserve some low RAM for r0 based memory references */
73 . = ALIGN(0x4) ;
74 r0_ram = . ;
75 . = . + 4096; /* a page should be enough */
76
77 /* The initial task */
78 . = ALIGN(8192);
79 .data.init_task : { *(.data.init_task) }
80
81 /* Under the microblaze ABI, .sdata and .sbss must be contiguous */
82 . = ALIGN(8);
83 .sdata : {
84 _ssro = .;
85 *(.sdata)
86 }
87
88 .sbss : {
89 _ssbss = .;
90 *(.sbss)
91 _esbss = .;
92 _essro = .;
93 _ssro_size = _essro - _ssro ;
94 _KERNEL_SDA_BASE_ = _ssro + (_ssro_size / 2) ;
95 }
96
97 __init_begin = .;
98
99 . = ALIGN(4096);
100 .init.text : {
101 _sinittext = . ;
102 *(.init.text)
103 *(.exit.text)
104 *(.exit.data)
105 _einittext = .;
106 }
107
108 .init.data : { *(.init.data) }
109
110 . = ALIGN(4);
111 .init.ivt : {
112 __ivt_start = .;
113 *(.init.ivt)
114 __ivt_end = .;
115 }
116
117 .init.setup : {
118 __setup_start = .;
119 *(.init.setup)
120 __setup_end = .;
121 }
122
123 .initcall.init : {
124 __initcall_start = .;
125 INITCALLS
126 __initcall_end = .;
127 }
128
129 .con_initcall.init : {
130 __con_initcall_start = .;
131 *(.con_initcall.init)
132 __con_initcall_end = .;
133 }
134
135 __init_end_before_initramfs = .;
136
137 .init.ramfs ALIGN(4096) : {
138 __initramfs_start = .;
139 *(.init.ramfs)
140 __initramfs_end = .;
141 . = ALIGN(4);
142 LONG(0);
143/*
144 * FIXME this can break initramfs for MMU.
145 * Pad init.ramfs up to page boundary,
146 * so that __init_end == __bss_start. This will make image.elf
147 * consistent with the image.bin
148 */
149 /* . = ALIGN(4096); */
150 }
151 __init_end = .;
152
153 .bss ALIGN (4096) : { /* page aligned when MMU used */
154 __bss_start = . ;
155 *(.bss*)
156 *(COMMON)
157 . = ALIGN (4) ;
158 __bss_stop = . ;
159 _ebss = . ;
160 }
161 . = ALIGN(4096);
162 _end = .;
163}
diff --git a/arch/microblaze/lib/Makefile b/arch/microblaze/lib/Makefile
new file mode 100644
index 000000000000..d27126bf306a
--- /dev/null
+++ b/arch/microblaze/lib/Makefile
@@ -0,0 +1,13 @@
1#
2# Makefile
3#
4
5lib-y := memset.o checksum.o
6
7ifeq ($(CONFIG_OPT_LIB_ASM),y)
8lib-y += fastcopy.o
9else
10lib-y += memcpy.o memmove.o
11endif
12
13lib-y += uaccess.o
diff --git a/arch/microblaze/lib/checksum.c b/arch/microblaze/lib/checksum.c
new file mode 100644
index 000000000000..809340070a13
--- /dev/null
+++ b/arch/microblaze/lib/checksum.c
@@ -0,0 +1,163 @@
1/*
2 *
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * IP/TCP/UDP checksumming routines
8 *
9 * Authors: Jorge Cwik, <jorge@laser.satlink.net>
10 * Arnt Gulbrandsen, <agulbra@nvg.unit.no>
11 * Tom May, <ftom@netcom.com>
12 * Andreas Schwab, <schwab@issan.informatik.uni-dortmund.de>
13 * Lots of code moved from tcp.c and ip.c; see those files
14 * for more names.
15 *
16 * 03/02/96 Jes Sorensen, Andreas Schwab, Roman Hodek:
17 * Fixed some nasty bugs, causing some horrible crashes.
18 * A: At some points, the sum (%0) was used as
19 * length-counter instead of the length counter
20 * (%1). Thanks to Roman Hodek for pointing this out.
21 * B: GCC seems to mess up if one uses too many
22 * data-registers to hold input values and one tries to
23 * specify d0 and d1 as scratch registers. Letting gcc
24 * choose these registers itself solves the problem.
25 *
26 * This program is free software; you can redistribute it and/or
27 * modify it under the terms of the GNU General Public License
28 * as published by the Free Software Foundation; either version
29 * 2 of the License, or (at your option) any later version.
30 */
31
32/* Revised by Kenneth Albanowski for m68knommu. Basic problem: unaligned access
33 kills, so most of the assembly has to go. */
34
35#include <net/checksum.h>
36#include <asm/checksum.h>
37#include <linux/module.h>
38
39static inline unsigned short from32to16(unsigned long x)
40{
41 /* add up 16-bit and 16-bit for 16+c bit */
42 x = (x & 0xffff) + (x >> 16);
43 /* add up carry.. */
44 x = (x & 0xffff) + (x >> 16);
45 return x;
46}
47
48static unsigned int do_csum(const unsigned char *buff, int len)
49{
50 int odd, count;
51 unsigned long result = 0;
52
53 if (len <= 0)
54 goto out;
55 odd = 1 & (unsigned long) buff;
56 if (odd) {
57 result = *buff;
58 len--;
59 buff++;
60 }
61 count = len >> 1; /* nr of 16-bit words.. */
62 if (count) {
63 if (2 & (unsigned long) buff) {
64 result += *(unsigned short *) buff;
65 count--;
66 len -= 2;
67 buff += 2;
68 }
69 count >>= 1; /* nr of 32-bit words.. */
70 if (count) {
71 unsigned long carry = 0;
72 do {
73 unsigned long w = *(unsigned long *) buff;
74 count--;
75 buff += 4;
76 result += carry;
77 result += w;
78 carry = (w > result);
79 } while (count);
80 result += carry;
81 result = (result & 0xffff) + (result >> 16);
82 }
83 if (len & 2) {
84 result += *(unsigned short *) buff;
85 buff += 2;
86 }
87 }
88 if (len & 1)
89 result += (*buff << 8);
90 result = from32to16(result);
91 if (odd)
92 result = ((result >> 8) & 0xff) | ((result & 0xff) << 8);
93out:
94 return result;
95}
96
97/*
98 * This is a version of ip_compute_csum() optimized for IP headers,
99 * which always checksum on 4 octet boundaries.
100 */
101__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
102{
103 return (__force __sum16)~do_csum(iph, ihl*4);
104}
105
106/*
107 * computes the checksum of a memory block at buff, length len,
108 * and adds in "sum" (32-bit)
109 *
110 * returns a 32-bit number suitable for feeding into itself
111 * or csum_tcpudp_magic
112 *
113 * this function must be called with even lengths, except
114 * for the last fragment, which may be odd
115 *
116 * it's best to have buff aligned on a 32-bit boundary
117 */
118__wsum csum_partial(const void *buff, int len, __wsum sum)
119{
120 unsigned int result = do_csum(buff, len);
121
122 /* add in old sum, and carry.. */
123 result += sum;
124 if (sum > result)
125 result += 1;
126 return result;
127}
128EXPORT_SYMBOL(csum_partial);
129
130/*
131 * this routine is used for miscellaneous IP-like checksums, mainly
132 * in icmp.c
133 */
134__sum16 ip_compute_csum(const unsigned char *buff, int len)
135{
136 return ~do_csum(buff, len);
137}
138EXPORT_SYMBOL(ip_compute_csum);
139
140/*
141 * copy from fs while checksumming, otherwise like csum_partial
142 */
143__wsum
144csum_partial_copy_from_user(const char __user *src, char *dst, int len,
145 int sum, int *csum_err)
146{
147 if (csum_err)
148 *csum_err = 0;
149 memcpy(dst, src, len);
150 return csum_partial(dst, len, sum);
151}
152EXPORT_SYMBOL(csum_partial_copy_from_user);
153
154/*
155 * copy from ds while checksumming, otherwise like csum_partial
156 */
157__wsum
158csum_partial_copy(const char *src, char *dst, int len, int sum)
159{
160 memcpy(dst, src, len);
161 return csum_partial(dst, len, sum);
162}
163EXPORT_SYMBOL(csum_partial_copy);
diff --git a/arch/microblaze/lib/fastcopy.S b/arch/microblaze/lib/fastcopy.S
new file mode 100644
index 000000000000..02e3ab4eddf3
--- /dev/null
+++ b/arch/microblaze/lib/fastcopy.S
@@ -0,0 +1,662 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2008 Jim Law - Iris LP All rights reserved.
5 *
6 * This file is subject to the terms and conditions of the GNU General
7 * Public License. See the file COPYING in the main directory of this
8 * archive for more details.
9 *
10 * Written by Jim Law <jlaw@irispower.com>
11 *
12 * intended to replace:
13 * memcpy in memcpy.c and
14 * memmove in memmove.c
15 * ... in arch/microblaze/lib
16 *
17 *
18 * assly_fastcopy.S
19 *
20 * Attempt at quicker memcpy and memmove for MicroBlaze
21 * Input : Operand1 in Reg r5 - destination address
22 * Operand2 in Reg r6 - source address
23 * Operand3 in Reg r7 - number of bytes to transfer
24 * Output: Result in Reg r3 - starting destinaition address
25 *
26 *
27 * Explanation:
28 * Perform (possibly unaligned) copy of a block of memory
29 * between mem locations with size of xfer spec'd in bytes
30 */
31
32#include <linux/linkage.h>
33
34 .globl memcpy
35 .ent memcpy
36
37memcpy:
38fast_memcpy_ascending:
39 /* move d to return register as value of function */
40 addi r3, r5, 0
41
42 addi r4, r0, 4 /* n = 4 */
43 cmpu r4, r4, r7 /* n = c - n (unsigned) */
44 blti r4, a_xfer_end /* if n < 0, less than one word to transfer */
45
46 /* transfer first 0~3 bytes to get aligned dest address */
47 andi r4, r5, 3 /* n = d & 3 */
48 /* if zero, destination already aligned */
49 beqi r4, a_dalign_done
50 /* n = 4 - n (yields 3, 2, 1 transfers for 1, 2, 3 addr offset) */
51 rsubi r4, r4, 4
52 rsub r7, r4, r7 /* c = c - n adjust c */
53
54a_xfer_first_loop:
55 /* if no bytes left to transfer, transfer the bulk */
56 beqi r4, a_dalign_done
57 lbui r11, r6, 0 /* h = *s */
58 sbi r11, r5, 0 /* *d = h */
59 addi r6, r6, 1 /* s++ */
60 addi r5, r5, 1 /* d++ */
61 brid a_xfer_first_loop /* loop */
62 addi r4, r4, -1 /* n-- (IN DELAY SLOT) */
63
64a_dalign_done:
65 addi r4, r0, 32 /* n = 32 */
66 cmpu r4, r4, r7 /* n = c - n (unsigned) */
67 /* if n < 0, less than one block to transfer */
68 blti r4, a_block_done
69
70a_block_xfer:
71 andi r4, r7, 0xffffffe0 /* n = c & ~31 */
72 rsub r7, r4, r7 /* c = c - n */
73
74 andi r9, r6, 3 /* t1 = s & 3 */
75 /* if temp != 0, unaligned transfers needed */
76 bnei r9, a_block_unaligned
77
78a_block_aligned:
79 lwi r9, r6, 0 /* t1 = *(s + 0) */
80 lwi r10, r6, 4 /* t2 = *(s + 4) */
81 lwi r11, r6, 8 /* t3 = *(s + 8) */
82 lwi r12, r6, 12 /* t4 = *(s + 12) */
83 swi r9, r5, 0 /* *(d + 0) = t1 */
84 swi r10, r5, 4 /* *(d + 4) = t2 */
85 swi r11, r5, 8 /* *(d + 8) = t3 */
86 swi r12, r5, 12 /* *(d + 12) = t4 */
87 lwi r9, r6, 16 /* t1 = *(s + 16) */
88 lwi r10, r6, 20 /* t2 = *(s + 20) */
89 lwi r11, r6, 24 /* t3 = *(s + 24) */
90 lwi r12, r6, 28 /* t4 = *(s + 28) */
91 swi r9, r5, 16 /* *(d + 16) = t1 */
92 swi r10, r5, 20 /* *(d + 20) = t2 */
93 swi r11, r5, 24 /* *(d + 24) = t3 */
94 swi r12, r5, 28 /* *(d + 28) = t4 */
95 addi r6, r6, 32 /* s = s + 32 */
96 addi r4, r4, -32 /* n = n - 32 */
97 bneid r4, a_block_aligned /* while (n) loop */
98 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
99 bri a_block_done
100
101a_block_unaligned:
102 andi r8, r6, 0xfffffffc /* as = s & ~3 */
103 add r6, r6, r4 /* s = s + n */
104 lwi r11, r8, 0 /* h = *(as + 0) */
105
106 addi r9, r9, -1
107 beqi r9, a_block_u1 /* t1 was 1 => 1 byte offset */
108 addi r9, r9, -1
109 beqi r9, a_block_u2 /* t1 was 2 => 2 byte offset */
110
111a_block_u3:
112 bslli r11, r11, 24 /* h = h << 24 */
113a_bu3_loop:
114 lwi r12, r8, 4 /* v = *(as + 4) */
115 bsrli r9, r12, 8 /* t1 = v >> 8 */
116 or r9, r11, r9 /* t1 = h | t1 */
117 swi r9, r5, 0 /* *(d + 0) = t1 */
118 bslli r11, r12, 24 /* h = v << 24 */
119 lwi r12, r8, 8 /* v = *(as + 8) */
120 bsrli r9, r12, 8 /* t1 = v >> 8 */
121 or r9, r11, r9 /* t1 = h | t1 */
122 swi r9, r5, 4 /* *(d + 4) = t1 */
123 bslli r11, r12, 24 /* h = v << 24 */
124 lwi r12, r8, 12 /* v = *(as + 12) */
125 bsrli r9, r12, 8 /* t1 = v >> 8 */
126 or r9, r11, r9 /* t1 = h | t1 */
127 swi r9, r5, 8 /* *(d + 8) = t1 */
128 bslli r11, r12, 24 /* h = v << 24 */
129 lwi r12, r8, 16 /* v = *(as + 16) */
130 bsrli r9, r12, 8 /* t1 = v >> 8 */
131 or r9, r11, r9 /* t1 = h | t1 */
132 swi r9, r5, 12 /* *(d + 12) = t1 */
133 bslli r11, r12, 24 /* h = v << 24 */
134 lwi r12, r8, 20 /* v = *(as + 20) */
135 bsrli r9, r12, 8 /* t1 = v >> 8 */
136 or r9, r11, r9 /* t1 = h | t1 */
137 swi r9, r5, 16 /* *(d + 16) = t1 */
138 bslli r11, r12, 24 /* h = v << 24 */
139 lwi r12, r8, 24 /* v = *(as + 24) */
140 bsrli r9, r12, 8 /* t1 = v >> 8 */
141 or r9, r11, r9 /* t1 = h | t1 */
142 swi r9, r5, 20 /* *(d + 20) = t1 */
143 bslli r11, r12, 24 /* h = v << 24 */
144 lwi r12, r8, 28 /* v = *(as + 28) */
145 bsrli r9, r12, 8 /* t1 = v >> 8 */
146 or r9, r11, r9 /* t1 = h | t1 */
147 swi r9, r5, 24 /* *(d + 24) = t1 */
148 bslli r11, r12, 24 /* h = v << 24 */
149 lwi r12, r8, 32 /* v = *(as + 32) */
150 bsrli r9, r12, 8 /* t1 = v >> 8 */
151 or r9, r11, r9 /* t1 = h | t1 */
152 swi r9, r5, 28 /* *(d + 28) = t1 */
153 bslli r11, r12, 24 /* h = v << 24 */
154 addi r8, r8, 32 /* as = as + 32 */
155 addi r4, r4, -32 /* n = n - 32 */
156 bneid r4, a_bu3_loop /* while (n) loop */
157 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
158 bri a_block_done
159
160a_block_u1:
161 bslli r11, r11, 8 /* h = h << 8 */
162a_bu1_loop:
163 lwi r12, r8, 4 /* v = *(as + 4) */
164 bsrli r9, r12, 24 /* t1 = v >> 24 */
165 or r9, r11, r9 /* t1 = h | t1 */
166 swi r9, r5, 0 /* *(d + 0) = t1 */
167 bslli r11, r12, 8 /* h = v << 8 */
168 lwi r12, r8, 8 /* v = *(as + 8) */
169 bsrli r9, r12, 24 /* t1 = v >> 24 */
170 or r9, r11, r9 /* t1 = h | t1 */
171 swi r9, r5, 4 /* *(d + 4) = t1 */
172 bslli r11, r12, 8 /* h = v << 8 */
173 lwi r12, r8, 12 /* v = *(as + 12) */
174 bsrli r9, r12, 24 /* t1 = v >> 24 */
175 or r9, r11, r9 /* t1 = h | t1 */
176 swi r9, r5, 8 /* *(d + 8) = t1 */
177 bslli r11, r12, 8 /* h = v << 8 */
178 lwi r12, r8, 16 /* v = *(as + 16) */
179 bsrli r9, r12, 24 /* t1 = v >> 24 */
180 or r9, r11, r9 /* t1 = h | t1 */
181 swi r9, r5, 12 /* *(d + 12) = t1 */
182 bslli r11, r12, 8 /* h = v << 8 */
183 lwi r12, r8, 20 /* v = *(as + 20) */
184 bsrli r9, r12, 24 /* t1 = v >> 24 */
185 or r9, r11, r9 /* t1 = h | t1 */
186 swi r9, r5, 16 /* *(d + 16) = t1 */
187 bslli r11, r12, 8 /* h = v << 8 */
188 lwi r12, r8, 24 /* v = *(as + 24) */
189 bsrli r9, r12, 24 /* t1 = v >> 24 */
190 or r9, r11, r9 /* t1 = h | t1 */
191 swi r9, r5, 20 /* *(d + 20) = t1 */
192 bslli r11, r12, 8 /* h = v << 8 */
193 lwi r12, r8, 28 /* v = *(as + 28) */
194 bsrli r9, r12, 24 /* t1 = v >> 24 */
195 or r9, r11, r9 /* t1 = h | t1 */
196 swi r9, r5, 24 /* *(d + 24) = t1 */
197 bslli r11, r12, 8 /* h = v << 8 */
198 lwi r12, r8, 32 /* v = *(as + 32) */
199 bsrli r9, r12, 24 /* t1 = v >> 24 */
200 or r9, r11, r9 /* t1 = h | t1 */
201 swi r9, r5, 28 /* *(d + 28) = t1 */
202 bslli r11, r12, 8 /* h = v << 8 */
203 addi r8, r8, 32 /* as = as + 32 */
204 addi r4, r4, -32 /* n = n - 32 */
205 bneid r4, a_bu1_loop /* while (n) loop */
206 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
207 bri a_block_done
208
209a_block_u2:
210 bslli r11, r11, 16 /* h = h << 16 */
211a_bu2_loop:
212 lwi r12, r8, 4 /* v = *(as + 4) */
213 bsrli r9, r12, 16 /* t1 = v >> 16 */
214 or r9, r11, r9 /* t1 = h | t1 */
215 swi r9, r5, 0 /* *(d + 0) = t1 */
216 bslli r11, r12, 16 /* h = v << 16 */
217 lwi r12, r8, 8 /* v = *(as + 8) */
218 bsrli r9, r12, 16 /* t1 = v >> 16 */
219 or r9, r11, r9 /* t1 = h | t1 */
220 swi r9, r5, 4 /* *(d + 4) = t1 */
221 bslli r11, r12, 16 /* h = v << 16 */
222 lwi r12, r8, 12 /* v = *(as + 12) */
223 bsrli r9, r12, 16 /* t1 = v >> 16 */
224 or r9, r11, r9 /* t1 = h | t1 */
225 swi r9, r5, 8 /* *(d + 8) = t1 */
226 bslli r11, r12, 16 /* h = v << 16 */
227 lwi r12, r8, 16 /* v = *(as + 16) */
228 bsrli r9, r12, 16 /* t1 = v >> 16 */
229 or r9, r11, r9 /* t1 = h | t1 */
230 swi r9, r5, 12 /* *(d + 12) = t1 */
231 bslli r11, r12, 16 /* h = v << 16 */
232 lwi r12, r8, 20 /* v = *(as + 20) */
233 bsrli r9, r12, 16 /* t1 = v >> 16 */
234 or r9, r11, r9 /* t1 = h | t1 */
235 swi r9, r5, 16 /* *(d + 16) = t1 */
236 bslli r11, r12, 16 /* h = v << 16 */
237 lwi r12, r8, 24 /* v = *(as + 24) */
238 bsrli r9, r12, 16 /* t1 = v >> 16 */
239 or r9, r11, r9 /* t1 = h | t1 */
240 swi r9, r5, 20 /* *(d + 20) = t1 */
241 bslli r11, r12, 16 /* h = v << 16 */
242 lwi r12, r8, 28 /* v = *(as + 28) */
243 bsrli r9, r12, 16 /* t1 = v >> 16 */
244 or r9, r11, r9 /* t1 = h | t1 */
245 swi r9, r5, 24 /* *(d + 24) = t1 */
246 bslli r11, r12, 16 /* h = v << 16 */
247 lwi r12, r8, 32 /* v = *(as + 32) */
248 bsrli r9, r12, 16 /* t1 = v >> 16 */
249 or r9, r11, r9 /* t1 = h | t1 */
250 swi r9, r5, 28 /* *(d + 28) = t1 */
251 bslli r11, r12, 16 /* h = v << 16 */
252 addi r8, r8, 32 /* as = as + 32 */
253 addi r4, r4, -32 /* n = n - 32 */
254 bneid r4, a_bu2_loop /* while (n) loop */
255 addi r5, r5, 32 /* d = d + 32 (IN DELAY SLOT) */
256
257a_block_done:
258 addi r4, r0, 4 /* n = 4 */
259 cmpu r4, r4, r7 /* n = c - n (unsigned) */
260 blti r4, a_xfer_end /* if n < 0, less than one word to transfer */
261
262a_word_xfer:
263 andi r4, r7, 0xfffffffc /* n = c & ~3 */
264 addi r10, r0, 0 /* offset = 0 */
265
266 andi r9, r6, 3 /* t1 = s & 3 */
267 /* if temp != 0, unaligned transfers needed */
268 bnei r9, a_word_unaligned
269
270a_word_aligned:
271 lw r9, r6, r10 /* t1 = *(s+offset) */
272 sw r9, r5, r10 /* *(d+offset) = t1 */
273 addi r4, r4,-4 /* n-- */
274 bneid r4, a_word_aligned /* loop */
275 addi r10, r10, 4 /* offset++ (IN DELAY SLOT) */
276
277 bri a_word_done
278
279a_word_unaligned:
280 andi r8, r6, 0xfffffffc /* as = s & ~3 */
281 lwi r11, r8, 0 /* h = *(as + 0) */
282 addi r8, r8, 4 /* as = as + 4 */
283
284 addi r9, r9, -1
285 beqi r9, a_word_u1 /* t1 was 1 => 1 byte offset */
286 addi r9, r9, -1
287 beqi r9, a_word_u2 /* t1 was 2 => 2 byte offset */
288
289a_word_u3:
290 bslli r11, r11, 24 /* h = h << 24 */
291a_wu3_loop:
292 lw r12, r8, r10 /* v = *(as + offset) */
293 bsrli r9, r12, 8 /* t1 = v >> 8 */
294 or r9, r11, r9 /* t1 = h | t1 */
295 sw r9, r5, r10 /* *(d + offset) = t1 */
296 bslli r11, r12, 24 /* h = v << 24 */
297 addi r4, r4,-4 /* n = n - 4 */
298 bneid r4, a_wu3_loop /* while (n) loop */
299 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
300
301 bri a_word_done
302
303a_word_u1:
304 bslli r11, r11, 8 /* h = h << 8 */
305a_wu1_loop:
306 lw r12, r8, r10 /* v = *(as + offset) */
307 bsrli r9, r12, 24 /* t1 = v >> 24 */
308 or r9, r11, r9 /* t1 = h | t1 */
309 sw r9, r5, r10 /* *(d + offset) = t1 */
310 bslli r11, r12, 8 /* h = v << 8 */
311 addi r4, r4,-4 /* n = n - 4 */
312 bneid r4, a_wu1_loop /* while (n) loop */
313 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
314
315 bri a_word_done
316
317a_word_u2:
318 bslli r11, r11, 16 /* h = h << 16 */
319a_wu2_loop:
320 lw r12, r8, r10 /* v = *(as + offset) */
321 bsrli r9, r12, 16 /* t1 = v >> 16 */
322 or r9, r11, r9 /* t1 = h | t1 */
323 sw r9, r5, r10 /* *(d + offset) = t1 */
324 bslli r11, r12, 16 /* h = v << 16 */
325 addi r4, r4,-4 /* n = n - 4 */
326 bneid r4, a_wu2_loop /* while (n) loop */
327 addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
328
329a_word_done:
330 add r5, r5, r10 /* d = d + offset */
331 add r6, r6, r10 /* s = s + offset */
332 rsub r7, r10, r7 /* c = c - offset */
333
334a_xfer_end:
335a_xfer_end_loop:
336 beqi r7, a_done /* while (c) */
337 lbui r9, r6, 0 /* t1 = *s */
338 addi r6, r6, 1 /* s++ */
339 sbi r9, r5, 0 /* *d = t1 */
340 addi r7, r7, -1 /* c-- */
341 brid a_xfer_end_loop /* loop */
342 addi r5, r5, 1 /* d++ (IN DELAY SLOT) */
343
344a_done:
345 rtsd r15, 8
346 nop
347
348.end memcpy
349/*----------------------------------------------------------------------------*/
350 .globl memmove
351 .ent memmove
352
353memmove:
354 cmpu r4, r5, r6 /* n = s - d */
355 bgei r4,fast_memcpy_ascending
356
357fast_memcpy_descending:
358 /* move d to return register as value of function */
359 addi r3, r5, 0
360
361 add r5, r5, r7 /* d = d + c */
362 add r6, r6, r7 /* s = s + c */
363
364 addi r4, r0, 4 /* n = 4 */
365 cmpu r4, r4, r7 /* n = c - n (unsigned) */
366 blti r4,d_xfer_end /* if n < 0, less than one word to transfer */
367
368 /* transfer first 0~3 bytes to get aligned dest address */
369 andi r4, r5, 3 /* n = d & 3 */
370 /* if zero, destination already aligned */
371 beqi r4,d_dalign_done
372 rsub r7, r4, r7 /* c = c - n adjust c */
373
374d_xfer_first_loop:
375 /* if no bytes left to transfer, transfer the bulk */
376 beqi r4,d_dalign_done
377 addi r6, r6, -1 /* s-- */
378 addi r5, r5, -1 /* d-- */
379 lbui r11, r6, 0 /* h = *s */
380 sbi r11, r5, 0 /* *d = h */
381 brid d_xfer_first_loop /* loop */
382 addi r4, r4, -1 /* n-- (IN DELAY SLOT) */
383
384d_dalign_done:
385 addi r4, r0, 32 /* n = 32 */
386 cmpu r4, r4, r7 /* n = c - n (unsigned) */
387 /* if n < 0, less than one block to transfer */
388 blti r4, d_block_done
389
390d_block_xfer:
391 andi r4, r7, 0xffffffe0 /* n = c & ~31 */
392 rsub r7, r4, r7 /* c = c - n */
393
394 andi r9, r6, 3 /* t1 = s & 3 */
395 /* if temp != 0, unaligned transfers needed */
396 bnei r9, d_block_unaligned
397
398d_block_aligned:
399 addi r6, r6, -32 /* s = s - 32 */
400 addi r5, r5, -32 /* d = d - 32 */
401 lwi r9, r6, 28 /* t1 = *(s + 28) */
402 lwi r10, r6, 24 /* t2 = *(s + 24) */
403 lwi r11, r6, 20 /* t3 = *(s + 20) */
404 lwi r12, r6, 16 /* t4 = *(s + 16) */
405 swi r9, r5, 28 /* *(d + 28) = t1 */
406 swi r10, r5, 24 /* *(d + 24) = t2 */
407 swi r11, r5, 20 /* *(d + 20) = t3 */
408 swi r12, r5, 16 /* *(d + 16) = t4 */
409 lwi r9, r6, 12 /* t1 = *(s + 12) */
410 lwi r10, r6, 8 /* t2 = *(s + 8) */
411 lwi r11, r6, 4 /* t3 = *(s + 4) */
412 lwi r12, r6, 0 /* t4 = *(s + 0) */
413 swi r9, r5, 12 /* *(d + 12) = t1 */
414 swi r10, r5, 8 /* *(d + 8) = t2 */
415 swi r11, r5, 4 /* *(d + 4) = t3 */
416 addi r4, r4, -32 /* n = n - 32 */
417 bneid r4, d_block_aligned /* while (n) loop */
418 swi r12, r5, 0 /* *(d + 0) = t4 (IN DELAY SLOT) */
419 bri d_block_done
420
421d_block_unaligned:
422 andi r8, r6, 0xfffffffc /* as = s & ~3 */
423 rsub r6, r4, r6 /* s = s - n */
424 lwi r11, r8, 0 /* h = *(as + 0) */
425
426 addi r9, r9, -1
427 beqi r9,d_block_u1 /* t1 was 1 => 1 byte offset */
428 addi r9, r9, -1
429 beqi r9,d_block_u2 /* t1 was 2 => 2 byte offset */
430
431d_block_u3:
432 bsrli r11, r11, 8 /* h = h >> 8 */
433d_bu3_loop:
434 addi r8, r8, -32 /* as = as - 32 */
435 addi r5, r5, -32 /* d = d - 32 */
436 lwi r12, r8, 28 /* v = *(as + 28) */
437 bslli r9, r12, 24 /* t1 = v << 24 */
438 or r9, r11, r9 /* t1 = h | t1 */
439 swi r9, r5, 28 /* *(d + 28) = t1 */
440 bsrli r11, r12, 8 /* h = v >> 8 */
441 lwi r12, r8, 24 /* v = *(as + 24) */
442 bslli r9, r12, 24 /* t1 = v << 24 */
443 or r9, r11, r9 /* t1 = h | t1 */
444 swi r9, r5, 24 /* *(d + 24) = t1 */
445 bsrli r11, r12, 8 /* h = v >> 8 */
446 lwi r12, r8, 20 /* v = *(as + 20) */
447 bslli r9, r12, 24 /* t1 = v << 24 */
448 or r9, r11, r9 /* t1 = h | t1 */
449 swi r9, r5, 20 /* *(d + 20) = t1 */
450 bsrli r11, r12, 8 /* h = v >> 8 */
451 lwi r12, r8, 16 /* v = *(as + 16) */
452 bslli r9, r12, 24 /* t1 = v << 24 */
453 or r9, r11, r9 /* t1 = h | t1 */
454 swi r9, r5, 16 /* *(d + 16) = t1 */
455 bsrli r11, r12, 8 /* h = v >> 8 */
456 lwi r12, r8, 12 /* v = *(as + 12) */
457 bslli r9, r12, 24 /* t1 = v << 24 */
458 or r9, r11, r9 /* t1 = h | t1 */
459 swi r9, r5, 12 /* *(d + 112) = t1 */
460 bsrli r11, r12, 8 /* h = v >> 8 */
461 lwi r12, r8, 8 /* v = *(as + 8) */
462 bslli r9, r12, 24 /* t1 = v << 24 */
463 or r9, r11, r9 /* t1 = h | t1 */
464 swi r9, r5, 8 /* *(d + 8) = t1 */
465 bsrli r11, r12, 8 /* h = v >> 8 */
466 lwi r12, r8, 4 /* v = *(as + 4) */
467 bslli r9, r12, 24 /* t1 = v << 24 */
468 or r9, r11, r9 /* t1 = h | t1 */
469 swi r9, r5, 4 /* *(d + 4) = t1 */
470 bsrli r11, r12, 8 /* h = v >> 8 */
471 lwi r12, r8, 0 /* v = *(as + 0) */
472 bslli r9, r12, 24 /* t1 = v << 24 */
473 or r9, r11, r9 /* t1 = h | t1 */
474 swi r9, r5, 0 /* *(d + 0) = t1 */
475 addi r4, r4, -32 /* n = n - 32 */
476 bneid r4, d_bu3_loop /* while (n) loop */
477 bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
478 bri d_block_done
479
480d_block_u1:
481 bsrli r11, r11, 24 /* h = h >> 24 */
482d_bu1_loop:
483 addi r8, r8, -32 /* as = as - 32 */
484 addi r5, r5, -32 /* d = d - 32 */
485 lwi r12, r8, 28 /* v = *(as + 28) */
486 bslli r9, r12, 8 /* t1 = v << 8 */
487 or r9, r11, r9 /* t1 = h | t1 */
488 swi r9, r5, 28 /* *(d + 28) = t1 */
489 bsrli r11, r12, 24 /* h = v >> 24 */
490 lwi r12, r8, 24 /* v = *(as + 24) */
491 bslli r9, r12, 8 /* t1 = v << 8 */
492 or r9, r11, r9 /* t1 = h | t1 */
493 swi r9, r5, 24 /* *(d + 24) = t1 */
494 bsrli r11, r12, 24 /* h = v >> 24 */
495 lwi r12, r8, 20 /* v = *(as + 20) */
496 bslli r9, r12, 8 /* t1 = v << 8 */
497 or r9, r11, r9 /* t1 = h | t1 */
498 swi r9, r5, 20 /* *(d + 20) = t1 */
499 bsrli r11, r12, 24 /* h = v >> 24 */
500 lwi r12, r8, 16 /* v = *(as + 16) */
501 bslli r9, r12, 8 /* t1 = v << 8 */
502 or r9, r11, r9 /* t1 = h | t1 */
503 swi r9, r5, 16 /* *(d + 16) = t1 */
504 bsrli r11, r12, 24 /* h = v >> 24 */
505 lwi r12, r8, 12 /* v = *(as + 12) */
506 bslli r9, r12, 8 /* t1 = v << 8 */
507 or r9, r11, r9 /* t1 = h | t1 */
508 swi r9, r5, 12 /* *(d + 112) = t1 */
509 bsrli r11, r12, 24 /* h = v >> 24 */
510 lwi r12, r8, 8 /* v = *(as + 8) */
511 bslli r9, r12, 8 /* t1 = v << 8 */
512 or r9, r11, r9 /* t1 = h | t1 */
513 swi r9, r5, 8 /* *(d + 8) = t1 */
514 bsrli r11, r12, 24 /* h = v >> 24 */
515 lwi r12, r8, 4 /* v = *(as + 4) */
516 bslli r9, r12, 8 /* t1 = v << 8 */
517 or r9, r11, r9 /* t1 = h | t1 */
518 swi r9, r5, 4 /* *(d + 4) = t1 */
519 bsrli r11, r12, 24 /* h = v >> 24 */
520 lwi r12, r8, 0 /* v = *(as + 0) */
521 bslli r9, r12, 8 /* t1 = v << 8 */
522 or r9, r11, r9 /* t1 = h | t1 */
523 swi r9, r5, 0 /* *(d + 0) = t1 */
524 addi r4, r4, -32 /* n = n - 32 */
525 bneid r4, d_bu1_loop /* while (n) loop */
526 bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
527 bri d_block_done
528
529d_block_u2:
530 bsrli r11, r11, 16 /* h = h >> 16 */
531d_bu2_loop:
532 addi r8, r8, -32 /* as = as - 32 */
533 addi r5, r5, -32 /* d = d - 32 */
534 lwi r12, r8, 28 /* v = *(as + 28) */
535 bslli r9, r12, 16 /* t1 = v << 16 */
536 or r9, r11, r9 /* t1 = h | t1 */
537 swi r9, r5, 28 /* *(d + 28) = t1 */
538 bsrli r11, r12, 16 /* h = v >> 16 */
539 lwi r12, r8, 24 /* v = *(as + 24) */
540 bslli r9, r12, 16 /* t1 = v << 16 */
541 or r9, r11, r9 /* t1 = h | t1 */
542 swi r9, r5, 24 /* *(d + 24) = t1 */
543 bsrli r11, r12, 16 /* h = v >> 16 */
544 lwi r12, r8, 20 /* v = *(as + 20) */
545 bslli r9, r12, 16 /* t1 = v << 16 */
546 or r9, r11, r9 /* t1 = h | t1 */
547 swi r9, r5, 20 /* *(d + 20) = t1 */
548 bsrli r11, r12, 16 /* h = v >> 16 */
549 lwi r12, r8, 16 /* v = *(as + 16) */
550 bslli r9, r12, 16 /* t1 = v << 16 */
551 or r9, r11, r9 /* t1 = h | t1 */
552 swi r9, r5, 16 /* *(d + 16) = t1 */
553 bsrli r11, r12, 16 /* h = v >> 16 */
554 lwi r12, r8, 12 /* v = *(as + 12) */
555 bslli r9, r12, 16 /* t1 = v << 16 */
556 or r9, r11, r9 /* t1 = h | t1 */
557 swi r9, r5, 12 /* *(d + 112) = t1 */
558 bsrli r11, r12, 16 /* h = v >> 16 */
559 lwi r12, r8, 8 /* v = *(as + 8) */
560 bslli r9, r12, 16 /* t1 = v << 16 */
561 or r9, r11, r9 /* t1 = h | t1 */
562 swi r9, r5, 8 /* *(d + 8) = t1 */
563 bsrli r11, r12, 16 /* h = v >> 16 */
564 lwi r12, r8, 4 /* v = *(as + 4) */
565 bslli r9, r12, 16 /* t1 = v << 16 */
566 or r9, r11, r9 /* t1 = h | t1 */
567 swi r9, r5, 4 /* *(d + 4) = t1 */
568 bsrli r11, r12, 16 /* h = v >> 16 */
569 lwi r12, r8, 0 /* v = *(as + 0) */
570 bslli r9, r12, 16 /* t1 = v << 16 */
571 or r9, r11, r9 /* t1 = h | t1 */
572 swi r9, r5, 0 /* *(d + 0) = t1 */
573 addi r4, r4, -32 /* n = n - 32 */
574 bneid r4, d_bu2_loop /* while (n) loop */
575 bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
576
577d_block_done:
578 addi r4, r0, 4 /* n = 4 */
579 cmpu r4, r4, r7 /* n = c - n (unsigned) */
580 blti r4,d_xfer_end /* if n < 0, less than one word to transfer */
581
582d_word_xfer:
583 andi r4, r7, 0xfffffffc /* n = c & ~3 */
584 rsub r5, r4, r5 /* d = d - n */
585 rsub r6, r4, r6 /* s = s - n */
586 rsub r7, r4, r7 /* c = c - n */
587
588 andi r9, r6, 3 /* t1 = s & 3 */
589 /* if temp != 0, unaligned transfers needed */
590 bnei r9, d_word_unaligned
591
592d_word_aligned:
593 addi r4, r4,-4 /* n-- */
594 lw r9, r6, r4 /* t1 = *(s+n) */
595 bneid r4, d_word_aligned /* loop */
596 sw r9, r5, r4 /* *(d+n) = t1 (IN DELAY SLOT) */
597
598 bri d_word_done
599
600d_word_unaligned:
601 andi r8, r6, 0xfffffffc /* as = s & ~3 */
602 lw r11, r8, r4 /* h = *(as + n) */
603
604 addi r9, r9, -1
605 beqi r9,d_word_u1 /* t1 was 1 => 1 byte offset */
606 addi r9, r9, -1
607 beqi r9,d_word_u2 /* t1 was 2 => 2 byte offset */
608
609d_word_u3:
610 bsrli r11, r11, 8 /* h = h >> 8 */
611d_wu3_loop:
612 addi r4, r4,-4 /* n = n - 4 */
613 lw r12, r8, r4 /* v = *(as + n) */
614 bslli r9, r12, 24 /* t1 = v << 24 */
615 or r9, r11, r9 /* t1 = h | t1 */
616 sw r9, r5, r4 /* *(d + n) = t1 */
617 bneid r4, d_wu3_loop /* while (n) loop */
618 bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
619
620 bri d_word_done
621
622d_word_u1:
623 bsrli r11, r11, 24 /* h = h >> 24 */
624d_wu1_loop:
625 addi r4, r4,-4 /* n = n - 4 */
626 lw r12, r8, r4 /* v = *(as + n) */
627 bslli r9, r12, 8 /* t1 = v << 8 */
628 or r9, r11, r9 /* t1 = h | t1 */
629 sw r9, r5, r4 /* *(d + n) = t1 */
630 bneid r4, d_wu1_loop /* while (n) loop */
631 bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
632
633 bri d_word_done
634
635d_word_u2:
636 bsrli r11, r11, 16 /* h = h >> 16 */
637d_wu2_loop:
638 addi r4, r4,-4 /* n = n - 4 */
639 lw r12, r8, r4 /* v = *(as + n) */
640 bslli r9, r12, 16 /* t1 = v << 16 */
641 or r9, r11, r9 /* t1 = h | t1 */
642 sw r9, r5, r4 /* *(d + n) = t1 */
643 bneid r4, d_wu2_loop /* while (n) loop */
644 bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
645
646d_word_done:
647
648d_xfer_end:
649d_xfer_end_loop:
650 beqi r7, a_done /* while (c) */
651 addi r6, r6, -1 /* s-- */
652 lbui r9, r6, 0 /* t1 = *s */
653 addi r5, r5, -1 /* d-- */
654 sbi r9, r5, 0 /* *d = t1 */
655 brid d_xfer_end_loop /* loop */
656 addi r7, r7, -1 /* c-- (IN DELAY SLOT) */
657
658d_done:
659 rtsd r15, 8
660 nop
661
662.end memmove
diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c
new file mode 100644
index 000000000000..5880119c4487
--- /dev/null
+++ b/arch/microblaze/lib/memcpy.c
@@ -0,0 +1,161 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memcpy on Microblaze
7 * This is generic C code to do efficient, alignment-aware memcpy.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31
32#include <linux/string.h>
33#include <asm/system.h>
34
35#ifdef __HAVE_ARCH_MEMCPY
36void *memcpy(void *v_dst, const void *v_src, __kernel_size_t c)
37{
38 const char *src = v_src;
39 char *dst = v_dst;
40#ifndef CONFIG_OPT_LIB_FUNCTION
41 /* Simple, byte oriented memcpy. */
42 while (c--)
43 *dst++ = *src++;
44
45 return v_dst;
46#else
47 /* The following code tries to optimize the copy by using unsigned
48 * alignment. This will work fine if both source and destination are
49 * aligned on the same boundary. However, if they are aligned on
50 * different boundaries shifts will be necessary. This might result in
51 * bad performance on MicroBlaze systems without a barrel shifter.
52 */
53 const uint32_t *i_src;
54 uint32_t *i_dst;
55
56 if (c >= 4) {
57 unsigned value, buf_hold;
58
59 /* Align the dstination to a word boundry. */
60 /* This is done in an endian independant manner. */
61 switch ((unsigned long)dst & 3) {
62 case 1:
63 *dst++ = *src++;
64 --c;
65 case 2:
66 *dst++ = *src++;
67 --c;
68 case 3:
69 *dst++ = *src++;
70 --c;
71 }
72
73 i_dst = (void *)dst;
74
75 /* Choose a copy scheme based on the source */
76 /* alignment relative to dstination. */
77 switch ((unsigned long)src & 3) {
78 case 0x0: /* Both byte offsets are aligned */
79 i_src = (const void *)src;
80
81 for (; c >= 4; c -= 4)
82 *i_dst++ = *i_src++;
83
84 src = (const void *)i_src;
85 break;
86 case 0x1: /* Unaligned - Off by 1 */
87 /* Word align the source */
88 i_src = (const void *) ((unsigned)src & ~3);
89
90 /* Load the holding buffer */
91 buf_hold = *i_src++ << 8;
92
93 for (; c >= 4; c -= 4) {
94 value = *i_src++;
95 *i_dst++ = buf_hold | value >> 24;
96 buf_hold = value << 8;
97 }
98
99 /* Realign the source */
100 src = (const void *)i_src;
101 src -= 3;
102 break;
103 case 0x2: /* Unaligned - Off by 2 */
104 /* Word align the source */
105 i_src = (const void *) ((unsigned)src & ~3);
106
107 /* Load the holding buffer */
108 buf_hold = *i_src++ << 16;
109
110 for (; c >= 4; c -= 4) {
111 value = *i_src++;
112 *i_dst++ = buf_hold | value >> 16;
113 buf_hold = value << 16;
114 }
115
116 /* Realign the source */
117 src = (const void *)i_src;
118 src -= 2;
119 break;
120 case 0x3: /* Unaligned - Off by 3 */
121 /* Word align the source */
122 i_src = (const void *) ((unsigned)src & ~3);
123
124 /* Load the holding buffer */
125 buf_hold = *i_src++ << 24;
126
127 for (; c >= 4; c -= 4) {
128 value = *i_src++;
129 *i_dst++ = buf_hold | value >> 8;
130 buf_hold = value << 24;
131 }
132
133 /* Realign the source */
134 src = (const void *)i_src;
135 src -= 1;
136 break;
137 }
138 dst = (void *)i_dst;
139 }
140
141 /* Finish off any remaining bytes */
142 /* simple fast copy, ... unless a cache boundry is crossed */
143 switch (c) {
144 case 3:
145 *dst++ = *src++;
146 case 2:
147 *dst++ = *src++;
148 case 1:
149 *dst++ = *src++;
150 }
151
152 return v_dst;
153#endif
154}
155EXPORT_SYMBOL(memcpy);
156#endif /* __HAVE_ARCH_MEMCPY */
157
158void *cacheable_memcpy(void *d, const void *s, __kernel_size_t c)
159{
160 return memcpy(d, s, c);
161}
diff --git a/arch/microblaze/lib/memmove.c b/arch/microblaze/lib/memmove.c
new file mode 100644
index 000000000000..d4e9f49a71f7
--- /dev/null
+++ b/arch/microblaze/lib/memmove.c
@@ -0,0 +1,175 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memcpy on Microblaze
7 * This is generic C code to do efficient, alignment-aware memmove.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31#include <linux/string.h>
32
33#ifdef __HAVE_ARCH_MEMMOVE
34void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
35{
36 const char *src = v_src;
37 char *dst = v_dst;
38
39#ifdef CONFIG_OPT_LIB_FUNCTION
40 const uint32_t *i_src;
41 uint32_t *i_dst;
42#endif
43
44 if (!c)
45 return v_dst;
46
47 /* Use memcpy when source is higher than dest */
48 if (v_dst <= v_src)
49 return memcpy(v_dst, v_src, c);
50
51#ifndef CONFIG_OPT_LIB_FUNCTION
52 /* copy backwards, from end to beginning */
53 src += c;
54 dst += c;
55
56 /* Simple, byte oriented memmove. */
57 while (c--)
58 *--dst = *--src;
59
60 return v_dst;
61#else
62 /* The following code tries to optimize the copy by using unsigned
63 * alignment. This will work fine if both source and destination are
64 * aligned on the same boundary. However, if they are aligned on
65 * different boundaries shifts will be necessary. This might result in
66 * bad performance on MicroBlaze systems without a barrel shifter.
67 */
68 /* FIXME this part needs more test */
69 /* Do a descending copy - this is a bit trickier! */
70 dst += c;
71 src += c;
72
73 if (c >= 4) {
74 unsigned value, buf_hold;
75
76 /* Align the destination to a word boundry. */
77 /* This is done in an endian independant manner. */
78
79 switch ((unsigned long)dst & 3) {
80 case 3:
81 *--dst = *--src;
82 --c;
83 case 2:
84 *--dst = *--src;
85 --c;
86 case 1:
87 *--dst = *--src;
88 --c;
89 }
90
91 i_dst = (void *)dst;
92 /* Choose a copy scheme based on the source */
93 /* alignment relative to dstination. */
94 switch ((unsigned long)src & 3) {
95 case 0x0: /* Both byte offsets are aligned */
96
97 i_src = (const void *)src;
98
99 for (; c >= 4; c -= 4)
100 *--i_dst = *--i_src;
101
102 src = (const void *)i_src;
103 break;
104 case 0x1: /* Unaligned - Off by 1 */
105 /* Word align the source */
106 i_src = (const void *) (((unsigned)src + 4) & ~3);
107
108 /* Load the holding buffer */
109 buf_hold = *--i_src >> 24;
110
111 for (; c >= 4; c -= 4) {
112 value = *--i_src;
113 *--i_dst = buf_hold << 8 | value;
114 buf_hold = value >> 24;
115 }
116
117 /* Realign the source */
118 src = (const void *)i_src;
119 src += 1;
120 break;
121 case 0x2: /* Unaligned - Off by 2 */
122 /* Word align the source */
123 i_src = (const void *) (((unsigned)src + 4) & ~3);
124
125 /* Load the holding buffer */
126 buf_hold = *--i_src >> 16;
127
128 for (; c >= 4; c -= 4) {
129 value = *--i_src;
130 *--i_dst = buf_hold << 16 | value;
131 buf_hold = value >> 16;
132 }
133
134 /* Realign the source */
135 src = (const void *)i_src;
136 src += 2;
137 break;
138 case 0x3: /* Unaligned - Off by 3 */
139 /* Word align the source */
140 i_src = (const void *) (((unsigned)src + 4) & ~3);
141
142 /* Load the holding buffer */
143 buf_hold = *--i_src >> 8;
144
145 for (; c >= 4; c -= 4) {
146 value = *--i_src;
147 *--i_dst = buf_hold << 24 | value;
148 buf_hold = value >> 8;
149 }
150
151 /* Realign the source */
152 src = (const void *)i_src;
153 src += 3;
154 break;
155 }
156 dst = (void *)i_dst;
157 }
158
159 /* simple fast copy, ... unless a cache boundry is crossed */
160 /* Finish off any remaining bytes */
161 switch (c) {
162 case 4:
163 *--dst = *--src;
164 case 3:
165 *--dst = *--src;
166 case 2:
167 *--dst = *--src;
168 case 1:
169 *--dst = *--src;
170 }
171 return v_dst;
172#endif
173}
174EXPORT_SYMBOL(memmove);
175#endif /* __HAVE_ARCH_MEMMOVE */
diff --git a/arch/microblaze/lib/memset.c b/arch/microblaze/lib/memset.c
new file mode 100644
index 000000000000..941dc8f94b03
--- /dev/null
+++ b/arch/microblaze/lib/memset.c
@@ -0,0 +1,82 @@
1/*
2 * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2008-2009 PetaLogix
4 * Copyright (C) 2007 John Williams
5 *
6 * Reasonably optimised generic C-code for memset on Microblaze
7 * This is generic C code to do efficient, alignment-aware memcpy.
8 *
9 * It is based on demo code originally Copyright 2001 by Intel Corp, taken from
10 * http://www.embedded.com/showArticle.jhtml?articleID=19205567
11 *
12 * Attempts were made, unsuccesfully, to contact the original
13 * author of this code (Michael Morrow, Intel). Below is the original
14 * copyright notice.
15 *
16 * This software has been developed by Intel Corporation.
17 * Intel specifically disclaims all warranties, express or
18 * implied, and all liability, including consequential and
19 * other indirect damages, for the use of this program, including
20 * liability for infringement of any proprietary rights,
21 * and including the warranties of merchantability and fitness
22 * for a particular purpose. Intel does not assume any
23 * responsibility for and errors which may appear in this program
24 * not any responsibility to update it.
25 */
26
27#include <linux/types.h>
28#include <linux/stddef.h>
29#include <linux/compiler.h>
30#include <linux/module.h>
31#include <linux/string.h>
32
33#ifdef __HAVE_ARCH_MEMSET
34void *memset(void *v_src, int c, __kernel_size_t n)
35{
36
37 char *src = v_src;
38#ifdef CONFIG_OPT_LIB_FUNCTION
39 uint32_t *i_src;
40 uint32_t w32;
41#endif
42 /* Truncate c to 8 bits */
43 c = (c & 0xFF);
44
45#ifdef CONFIG_OPT_LIB_FUNCTION
46 /* Make a repeating word out of it */
47 w32 = c;
48 w32 |= w32 << 8;
49 w32 |= w32 << 16;
50
51 if (n >= 4) {
52 /* Align the destination to a word boundary */
53 /* This is done in an endian independant manner */
54 switch ((unsigned) src & 3) {
55 case 1:
56 *src++ = c;
57 --n;
58 case 2:
59 *src++ = c;
60 --n;
61 case 3:
62 *src++ = c;
63 --n;
64 }
65
66 i_src = (void *)src;
67
68 /* Do as many full-word copies as we can */
69 for (; n >= 4; n -= 4)
70 *i_src++ = w32;
71
72 src = (void *)i_src;
73 }
74#endif
75 /* Simple, byte oriented memset or the rest of count. */
76 while (n--)
77 *src++ = c;
78
79 return v_src;
80}
81EXPORT_SYMBOL(memset);
82#endif /* __HAVE_ARCH_MEMSET */
diff --git a/arch/microblaze/lib/uaccess.c b/arch/microblaze/lib/uaccess.c
new file mode 100644
index 000000000000..8eb9df5a26c9
--- /dev/null
+++ b/arch/microblaze/lib/uaccess.c
@@ -0,0 +1,41 @@
1/*
2 * Copyright (C) 2006 Atmark Techno, Inc.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8
9#include <linux/string.h>
10#include <asm/uaccess.h>
11
12#include <asm/bug.h>
13
14long strnlen_user(const char __user *src, long count)
15{
16 return strlen(src) + 1;
17}
18
19#define __do_strncpy_from_user(dst, src, count, res) \
20 do { \
21 char *tmp; \
22 strncpy(dst, src, count); \
23 for (tmp = dst; *tmp && count > 0; tmp++, count--) \
24 ; \
25 res = (tmp - dst); \
26 } while (0)
27
28long __strncpy_from_user(char *dst, const char __user *src, long count)
29{
30 long res;
31 __do_strncpy_from_user(dst, src, count, res);
32 return res;
33}
34
35long strncpy_from_user(char *dst, const char __user *src, long count)
36{
37 long res = -EFAULT;
38 if (access_ok(VERIFY_READ, src, 1))
39 __do_strncpy_from_user(dst, src, count, res);
40 return res;
41}
diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile
new file mode 100644
index 000000000000..bf9e4479a1fd
--- /dev/null
+++ b/arch/microblaze/mm/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile
3#
4
5obj-y := init.o
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
new file mode 100644
index 000000000000..b0c8213cd6cf
--- /dev/null
+++ b/arch/microblaze/mm/init.c
@@ -0,0 +1,201 @@
1/*
2 * Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu>
3 * Copyright (C) 2006 Atmark Techno, Inc.
4 *
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 */
9
10#include <linux/bootmem.h>
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/lmb.h>
14#include <linux/mm.h> /* mem_init */
15#include <linux/initrd.h>
16#include <linux/pagemap.h>
17#include <linux/pfn.h>
18#include <linux/swap.h>
19
20#include <asm/page.h>
21#include <asm/mmu_context.h>
22#include <asm/pgalloc.h>
23#include <asm/sections.h>
24#include <asm/tlb.h>
25
26unsigned int __page_offset;
27/* EXPORT_SYMBOL(__page_offset); */
28
29char *klimit = _end;
30
31/*
32 * Initialize the bootmem system and give it all the memory we
33 * have available.
34 */
35unsigned int memory_start;
36unsigned int memory_end; /* due to mm/nommu.c */
37unsigned int memory_size;
38
39/*
40 * paging_init() sets up the page tables - in fact we've already done this.
41 */
42static void __init paging_init(void)
43{
44 int i;
45 unsigned long zones_size[MAX_NR_ZONES];
46
47 /*
48 * old: we can DMA to/from any address.put all page into ZONE_DMA
49 * We use only ZONE_NORMAL
50 */
51 zones_size[ZONE_NORMAL] = max_mapnr;
52
53 /* every other zones are empty */
54 for (i = 1; i < MAX_NR_ZONES; i++)
55 zones_size[i] = 0;
56
57 free_area_init(zones_size);
58}
59
60void __init setup_memory(void)
61{
62 int i;
63 unsigned long map_size;
64 u32 kernel_align_start, kernel_align_size;
65
66 /* Find main memory where is the kernel */
67 for (i = 0; i < lmb.memory.cnt; i++) {
68 memory_start = (u32) lmb.memory.region[i].base;
69 memory_end = (u32) lmb.memory.region[i].base
70 + (u32) lmb.memory.region[i].size;
71 if ((memory_start <= (u32)_text) &&
72 ((u32)_text <= memory_end)) {
73 memory_size = memory_end - memory_start;
74 PAGE_OFFSET = memory_start;
75 printk(KERN_INFO "%s: Main mem: 0x%x-0x%x, "
76 "size 0x%08x\n", __func__, memory_start,
77 memory_end, memory_size);
78 break;
79 }
80 }
81
82 if (!memory_start || !memory_end) {
83 panic("%s: Missing memory setting 0x%08x-0x%08x\n",
84 __func__, memory_start, memory_end);
85 }
86
87 /* reservation of region where is the kernel */
88 kernel_align_start = PAGE_DOWN((u32)_text);
89 /* ALIGN can be remove because _end in vmlinux.lds.S is align */
90 kernel_align_size = PAGE_UP((u32)klimit) - kernel_align_start;
91 lmb_reserve(kernel_align_start, kernel_align_size);
92 printk(KERN_INFO "%s: kernel addr=0x%08x-0x%08x size=0x%08x\n",
93 __func__, kernel_align_start, kernel_align_start
94 + kernel_align_size, kernel_align_size);
95
96 /*
97 * Kernel:
98 * start: base phys address of kernel - page align
99 * end: base phys address of kernel - page align
100 *
101 * min_low_pfn - the first page (mm/bootmem.c - node_boot_start)
102 * max_low_pfn
103 * max_mapnr - the first unused page (mm/bootmem.c - node_low_pfn)
104 * num_physpages - number of all pages
105 */
106
107 /* memory start is from the kernel end (aligned) to higher addr */
108 min_low_pfn = memory_start >> PAGE_SHIFT; /* minimum for allocation */
109 /* RAM is assumed contiguous */
110 num_physpages = max_mapnr = memory_size >> PAGE_SHIFT;
111 max_pfn = max_low_pfn = memory_end >> PAGE_SHIFT;
112
113 printk(KERN_INFO "%s: max_mapnr: %#lx\n", __func__, max_mapnr);
114 printk(KERN_INFO "%s: min_low_pfn: %#lx\n", __func__, min_low_pfn);
115 printk(KERN_INFO "%s: max_low_pfn: %#lx\n", __func__, max_low_pfn);
116
117 /*
118 * Find an area to use for the bootmem bitmap.
119 * We look for the first area which is at least
120 * 128kB in length (128kB is enough for a bitmap
121 * for 4GB of memory, using 4kB pages), plus 1 page
122 * (in case the address isn't page-aligned).
123 */
124 map_size = init_bootmem_node(NODE_DATA(0), PFN_UP(TOPHYS((u32)_end)),
125 min_low_pfn, max_low_pfn);
126
127 lmb_reserve(PFN_UP(TOPHYS((u32)_end)) << PAGE_SHIFT, map_size);
128
129 /* free bootmem is whole main memory */
130 free_bootmem(memory_start, memory_size);
131
132 /* reserve allocate blocks */
133 for (i = 0; i < lmb.reserved.cnt; i++) {
134 pr_debug("reserved %d - 0x%08x-0x%08x\n", i,
135 (u32) lmb.reserved.region[i].base,
136 (u32) lmb_size_bytes(&lmb.reserved, i));
137 reserve_bootmem(lmb.reserved.region[i].base,
138 lmb_size_bytes(&lmb.reserved, i) - 1, BOOTMEM_DEFAULT);
139 }
140 paging_init();
141}
142
143void free_init_pages(char *what, unsigned long begin, unsigned long end)
144{
145 unsigned long addr;
146
147 for (addr = begin; addr < end; addr += PAGE_SIZE) {
148 ClearPageReserved(virt_to_page(addr));
149 init_page_count(virt_to_page(addr));
150 memset((void *)addr, 0xcc, PAGE_SIZE);
151 free_page(addr);
152 totalram_pages++;
153 }
154 printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
155}
156
157#ifdef CONFIG_BLK_DEV_INITRD
158void free_initrd_mem(unsigned long start, unsigned long end)
159{
160 int pages = 0;
161 for (; start < end; start += PAGE_SIZE) {
162 ClearPageReserved(virt_to_page(start));
163 init_page_count(virt_to_page(start));
164 free_page(start);
165 totalram_pages++;
166 pages++;
167 }
168 printk(KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages);
169}
170#endif
171
172void free_initmem(void)
173{
174 free_init_pages("unused kernel memory",
175 (unsigned long)(&__init_begin),
176 (unsigned long)(&__init_end));
177}
178
179/* FIXME from arch/powerpc/mm/mem.c*/
180void show_mem(void)
181{
182 printk(KERN_NOTICE "%s\n", __func__);
183}
184
185void __init mem_init(void)
186{
187 high_memory = (void *)__va(memory_end);
188 /* this will put all memory onto the freelists */
189 totalram_pages += free_all_bootmem();
190
191 printk(KERN_INFO "Memory: %luk/%luk available\n",
192 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
193 num_physpages << (PAGE_SHIFT-10));
194}
195
196/* Check against bounds of physical memory */
197int ___range_ok(unsigned long addr, unsigned long size)
198{
199 return ((addr < memory_start) ||
200 ((addr + size) > memory_end));
201}
diff --git a/arch/microblaze/platform/Kconfig.platform b/arch/microblaze/platform/Kconfig.platform
new file mode 100644
index 000000000000..8e9b4752d3ff
--- /dev/null
+++ b/arch/microblaze/platform/Kconfig.platform
@@ -0,0 +1,85 @@
1# For a description of the syntax of this configuration file,
2# see Documentation/kbuild/kconfig-language.txt.
3#
4# Platform selection Kconfig menu for MicroBlaze targets
5#
6
7menu "Platform options"
8choice
9 prompt "Platform"
10 default PLATFORM_MICROBLAZE_AUTO
11 help
12 Choose which hardware board/platform you are targeting.
13
14config PLATFORM_GENERIC
15 bool "Generic"
16 help
17 Choose this option for the Generic platform.
18
19endchoice
20
21config SELFMOD
22 bool "Use self modified code for intc/timer"
23 depends on EXPERIMENTAL && NO_MMU
24 default n
25 help
26 This choice enables self-modified code for interrupt controller
27 and timer.
28
29config SELFMOD_INTC
30 bool "Use self modified code for intc"
31 depends on SELFMOD
32 default y
33 help
34 This choice enables self-modified code for interrupt controller.
35
36config SELFMOD_TIMER
37 bool "Use self modified code for timer"
38 depends on SELFMOD
39 default y
40 help
41 This choice enables self-modified code for timer.
42
43config OPT_LIB_FUNCTION
44 bool "Optimalized lib function"
45 default y
46 help
47 Allows turn on optimalized library function (memcpy and memmove).
48 They are optimized by using word alignment. This will work
49 fine if both source and destination are aligned on the same
50 boundary. However, if they are aligned on different boundaries
51 shifts will be necessary. This might result in bad performance
52 on MicroBlaze systems without a barrel shifter.
53
54config OPT_LIB_ASM
55 bool "Optimalized lib function ASM"
56 depends on OPT_LIB_FUNCTION
57 default n
58 help
59 Allows turn on optimalized library function (memcpy and memmove).
60 Function are written in asm code.
61
62# This is still a bit broken - disabling for now JW 20070504
63config ALLOW_EDIT_AUTO
64 bool "Permit Display/edit of Kconfig.auto platform settings"
65 default n
66 help
67 Allows the editing of auto-generated platform settings from
68 the Kconfig.auto file. Obviously this does not change the
69 underlying hardware, so be very careful if you go editing
70 these settings.
71
72 Also, if you enable this, and edit various Kconfig.auto
73 settings, YOUR CHANGES WILL BE LOST if you then disable it
74 again. You have been warned!
75
76 If unsure, say no.
77
78comment "Automatic platform settings from Kconfig.auto"
79 depends on ALLOW_EDIT_AUTO
80
81if PLATFORM_GENERIC=y
82 source "arch/microblaze/platform/generic/Kconfig.auto"
83endif
84
85endmenu
diff --git a/arch/microblaze/platform/Makefile b/arch/microblaze/platform/Makefile
new file mode 100644
index 000000000000..ea1b75cc5775
--- /dev/null
+++ b/arch/microblaze/platform/Makefile
@@ -0,0 +1,6 @@
1#
2# Makefile for arch/microblaze/platform directory
3#
4#obj-$(CONFIG_PLATFORM_GENERIC) += generic/
5
6obj-y += platform.o
diff --git a/arch/microblaze/platform/generic/Kconfig.auto b/arch/microblaze/platform/generic/Kconfig.auto
new file mode 100644
index 000000000000..fbca22d9c8b9
--- /dev/null
+++ b/arch/microblaze/platform/generic/Kconfig.auto
@@ -0,0 +1,62 @@
1#
2# (C) Copyright 2007 Michal Simek
3#
4# Michal SIMEK <monstr@monstr.eu>
5#
6# This program is free software; you can redistribute it and/or
7# modify it under the terms of the GNU General Public License as
8# published by the Free Software Foundation; either version 2 of
9# the License, or (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
19# MA 02111-1307 USA
20#
21
22# Definitions for MICROBLAZE0
23comment "Definitions for MICROBLAZE0"
24 depends on ALLOW_EDIT_AUTO
25
26config KERNEL_BASE_ADDR
27 hex "Physical address where Linux Kernel is"
28 default "0x90000000"
29 help
30 BASE Address for kernel
31
32config XILINX_MICROBLAZE0_FAMILY
33 string "Targetted FPGA family" if ALLOW_EDIT_AUTO
34 default "virtex5"
35
36config XILINX_MICROBLAZE0_USE_MSR_INSTR
37 int "USE_MSR_INSTR range (0:1)" if ALLOW_EDIT_AUTO
38 default 1
39
40config XILINX_MICROBLAZE0_USE_PCMP_INSTR
41 int "USE_PCMP_INSTR range (0:1)" if ALLOW_EDIT_AUTO
42 default 1
43
44config XILINX_MICROBLAZE0_USE_BARREL
45 int "USE_BARREL range (0:1)" if ALLOW_EDIT_AUTO
46 default 1
47
48config XILINX_MICROBLAZE0_USE_DIV
49 int "USE_DIV range (0:1)" if ALLOW_EDIT_AUTO
50 default 1
51
52config XILINX_MICROBLAZE0_USE_HW_MUL
53 int "USE_HW_MUL values (0=NONE, 1=MUL32, 2=MUL64)" if ALLOW_EDIT_AUTO
54 default 2
55
56config XILINX_MICROBLAZE0_USE_FPU
57 int "USE_FPU values (0=NONE, 1=BASIC, 2=EXTENDED)" if ALLOW_EDIT_AUTO
58 default 2
59
60config XILINX_MICROBLAZE0_HW_VER
61 string "Core version number" if ALLOW_EDIT_AUTO
62 default 7.10.d
diff --git a/arch/microblaze/platform/generic/Makefile b/arch/microblaze/platform/generic/Makefile
new file mode 100644
index 000000000000..9a8b1bd3fa6d
--- /dev/null
+++ b/arch/microblaze/platform/generic/Makefile
@@ -0,0 +1,3 @@
1#
2# Empty Makefile to keep make clean happy
3#
diff --git a/arch/microblaze/platform/generic/system.dts b/arch/microblaze/platform/generic/system.dts
new file mode 100644
index 000000000000..29993f62b30a
--- /dev/null
+++ b/arch/microblaze/platform/generic/system.dts
@@ -0,0 +1,332 @@
1/*
2 * Device Tree Generator version: 1.1
3 *
4 * (C) Copyright 2007-2008 Xilinx, Inc.
5 * (C) Copyright 2007-2009 Michal Simek
6 *
7 * Michal SIMEK <monstr@monstr.eu>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
22 * MA 02111-1307 USA
23 *
24 * CAUTION: This file is automatically generated by libgen.
25 * Version: Xilinx EDK 10.1.03 EDK_K_SP3.6
26 *
27 * XPS project directory: Xilinx-ML505-ll_temac-sgdma-MMU-FDT-edk101
28 */
29
30/dts-v1/;
31/ {
32 #address-cells = <1>;
33 #size-cells = <1>;
34 compatible = "xlnx,microblaze";
35 model = "testing";
36 DDR2_SDRAM: memory@90000000 {
37 device_type = "memory";
38 reg = < 0x90000000 0x10000000 >;
39 } ;
40 chosen {
41 bootargs = "console=ttyUL0,115200 highres=on";
42 linux,stdout-path = "/plb@0/serial@84000000";
43 } ;
44 cpus {
45 #address-cells = <1>;
46 #cpus = <0x1>;
47 #size-cells = <0>;
48 microblaze_0: cpu@0 {
49 clock-frequency = <125000000>;
50 compatible = "xlnx,microblaze-7.10.d";
51 d-cache-baseaddr = <0x90000000>;
52 d-cache-highaddr = <0x9fffffff>;
53 d-cache-line-size = <0x10>;
54 d-cache-size = <0x2000>;
55 device_type = "cpu";
56 i-cache-baseaddr = <0x90000000>;
57 i-cache-highaddr = <0x9fffffff>;
58 i-cache-line-size = <0x10>;
59 i-cache-size = <0x2000>;
60 model = "microblaze,7.10.d";
61 reg = <0>;
62 timebase-frequency = <125000000>;
63 xlnx,addr-tag-bits = <0xf>;
64 xlnx,allow-dcache-wr = <0x1>;
65 xlnx,allow-icache-wr = <0x1>;
66 xlnx,area-optimized = <0x0>;
67 xlnx,cache-byte-size = <0x2000>;
68 xlnx,d-lmb = <0x1>;
69 xlnx,d-opb = <0x0>;
70 xlnx,d-plb = <0x1>;
71 xlnx,data-size = <0x20>;
72 xlnx,dcache-addr-tag = <0xf>;
73 xlnx,dcache-always-used = <0x1>;
74 xlnx,dcache-byte-size = <0x2000>;
75 xlnx,dcache-line-len = <0x4>;
76 xlnx,dcache-use-fsl = <0x1>;
77 xlnx,debug-enabled = <0x1>;
78 xlnx,div-zero-exception = <0x1>;
79 xlnx,dopb-bus-exception = <0x0>;
80 xlnx,dynamic-bus-sizing = <0x1>;
81 xlnx,edge-is-positive = <0x1>;
82 xlnx,family = "virtex5";
83 xlnx,fpu-exception = <0x1>;
84 xlnx,fsl-data-size = <0x20>;
85 xlnx,fsl-exception = <0x0>;
86 xlnx,fsl-links = <0x0>;
87 xlnx,i-lmb = <0x1>;
88 xlnx,i-opb = <0x0>;
89 xlnx,i-plb = <0x1>;
90 xlnx,icache-always-used = <0x1>;
91 xlnx,icache-line-len = <0x4>;
92 xlnx,icache-use-fsl = <0x1>;
93 xlnx,ill-opcode-exception = <0x1>;
94 xlnx,instance = "microblaze_0";
95 xlnx,interconnect = <0x1>;
96 xlnx,interrupt-is-edge = <0x0>;
97 xlnx,iopb-bus-exception = <0x0>;
98 xlnx,mmu-dtlb-size = <0x4>;
99 xlnx,mmu-itlb-size = <0x2>;
100 xlnx,mmu-tlb-access = <0x3>;
101 xlnx,mmu-zones = <0x10>;
102 xlnx,number-of-pc-brk = <0x1>;
103 xlnx,number-of-rd-addr-brk = <0x0>;
104 xlnx,number-of-wr-addr-brk = <0x0>;
105 xlnx,opcode-0x0-illegal = <0x1>;
106 xlnx,pvr = <0x2>;
107 xlnx,pvr-user1 = <0x0>;
108 xlnx,pvr-user2 = <0x0>;
109 xlnx,reset-msr = <0x0>;
110 xlnx,sco = <0x0>;
111 xlnx,unaligned-exceptions = <0x1>;
112 xlnx,use-barrel = <0x1>;
113 xlnx,use-dcache = <0x1>;
114 xlnx,use-div = <0x1>;
115 xlnx,use-ext-brk = <0x1>;
116 xlnx,use-ext-nm-brk = <0x1>;
117 xlnx,use-extended-fsl-instr = <0x0>;
118 xlnx,use-fpu = <0x2>;
119 xlnx,use-hw-mul = <0x2>;
120 xlnx,use-icache = <0x1>;
121 xlnx,use-interrupt = <0x1>;
122 xlnx,use-mmu = <0x3>;
123 xlnx,use-msr-instr = <0x1>;
124 xlnx,use-pcmp-instr = <0x1>;
125 } ;
126 } ;
127 mb_plb: plb@0 {
128 #address-cells = <1>;
129 #size-cells = <1>;
130 compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
131 ranges ;
132 FLASH: flash@a0000000 {
133 bank-width = <2>;
134 compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
135 reg = < 0xa0000000 0x2000000 >;
136 xlnx,family = "virtex5";
137 xlnx,include-datawidth-matching-0 = <0x1>;
138 xlnx,include-datawidth-matching-1 = <0x0>;
139 xlnx,include-datawidth-matching-2 = <0x0>;
140 xlnx,include-datawidth-matching-3 = <0x0>;
141 xlnx,include-negedge-ioregs = <0x0>;
142 xlnx,include-plb-ipif = <0x1>;
143 xlnx,include-wrbuf = <0x1>;
144 xlnx,max-mem-width = <0x10>;
145 xlnx,mch-native-dwidth = <0x20>;
146 xlnx,mch-plb-clk-period-ps = <0x1f40>;
147 xlnx,mch-splb-awidth = <0x20>;
148 xlnx,mch0-accessbuf-depth = <0x10>;
149 xlnx,mch0-protocol = <0x0>;
150 xlnx,mch0-rddatabuf-depth = <0x10>;
151 xlnx,mch1-accessbuf-depth = <0x10>;
152 xlnx,mch1-protocol = <0x0>;
153 xlnx,mch1-rddatabuf-depth = <0x10>;
154 xlnx,mch2-accessbuf-depth = <0x10>;
155 xlnx,mch2-protocol = <0x0>;
156 xlnx,mch2-rddatabuf-depth = <0x10>;
157 xlnx,mch3-accessbuf-depth = <0x10>;
158 xlnx,mch3-protocol = <0x0>;
159 xlnx,mch3-rddatabuf-depth = <0x10>;
160 xlnx,mem0-width = <0x10>;
161 xlnx,mem1-width = <0x20>;
162 xlnx,mem2-width = <0x20>;
163 xlnx,mem3-width = <0x20>;
164 xlnx,num-banks-mem = <0x1>;
165 xlnx,num-channels = <0x0>;
166 xlnx,priority-mode = <0x0>;
167 xlnx,synch-mem-0 = <0x0>;
168 xlnx,synch-mem-1 = <0x0>;
169 xlnx,synch-mem-2 = <0x0>;
170 xlnx,synch-mem-3 = <0x0>;
171 xlnx,synch-pipedelay-0 = <0x2>;
172 xlnx,synch-pipedelay-1 = <0x2>;
173 xlnx,synch-pipedelay-2 = <0x2>;
174 xlnx,synch-pipedelay-3 = <0x2>;
175 xlnx,tavdv-ps-mem-0 = <0x1adb0>;
176 xlnx,tavdv-ps-mem-1 = <0x3a98>;
177 xlnx,tavdv-ps-mem-2 = <0x3a98>;
178 xlnx,tavdv-ps-mem-3 = <0x3a98>;
179 xlnx,tcedv-ps-mem-0 = <0x1adb0>;
180 xlnx,tcedv-ps-mem-1 = <0x3a98>;
181 xlnx,tcedv-ps-mem-2 = <0x3a98>;
182 xlnx,tcedv-ps-mem-3 = <0x3a98>;
183 xlnx,thzce-ps-mem-0 = <0x88b8>;
184 xlnx,thzce-ps-mem-1 = <0x1b58>;
185 xlnx,thzce-ps-mem-2 = <0x1b58>;
186 xlnx,thzce-ps-mem-3 = <0x1b58>;
187 xlnx,thzoe-ps-mem-0 = <0x1b58>;
188 xlnx,thzoe-ps-mem-1 = <0x1b58>;
189 xlnx,thzoe-ps-mem-2 = <0x1b58>;
190 xlnx,thzoe-ps-mem-3 = <0x1b58>;
191 xlnx,tlzwe-ps-mem-0 = <0x88b8>;
192 xlnx,tlzwe-ps-mem-1 = <0x0>;
193 xlnx,tlzwe-ps-mem-2 = <0x0>;
194 xlnx,tlzwe-ps-mem-3 = <0x0>;
195 xlnx,twc-ps-mem-0 = <0x2af8>;
196 xlnx,twc-ps-mem-1 = <0x3a98>;
197 xlnx,twc-ps-mem-2 = <0x3a98>;
198 xlnx,twc-ps-mem-3 = <0x3a98>;
199 xlnx,twp-ps-mem-0 = <0x11170>;
200 xlnx,twp-ps-mem-1 = <0x2ee0>;
201 xlnx,twp-ps-mem-2 = <0x2ee0>;
202 xlnx,twp-ps-mem-3 = <0x2ee0>;
203 xlnx,xcl0-linesize = <0x4>;
204 xlnx,xcl0-writexfer = <0x1>;
205 xlnx,xcl1-linesize = <0x4>;
206 xlnx,xcl1-writexfer = <0x1>;
207 xlnx,xcl2-linesize = <0x4>;
208 xlnx,xcl2-writexfer = <0x1>;
209 xlnx,xcl3-linesize = <0x4>;
210 xlnx,xcl3-writexfer = <0x1>;
211 } ;
212 Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
213 #address-cells = <1>;
214 #size-cells = <1>;
215 compatible = "xlnx,compound";
216 ethernet@81c00000 {
217 compatible = "xlnx,xps-ll-temac-1.01.b";
218 device_type = "network";
219 interrupt-parent = <&xps_intc_0>;
220 interrupts = < 5 2 >;
221 llink-connected = <&PIM3>;
222 local-mac-address = [ 02 00 00 00 00 00 ];
223 reg = < 0x81c00000 0x40 >;
224 xlnx,bus2core-clk-ratio = <0x1>;
225 xlnx,phy-type = <0x1>;
226 xlnx,phyaddr = <0x1>;
227 xlnx,rxcsum = <0x0>;
228 xlnx,rxfifo = <0x1000>;
229 xlnx,temac-type = <0x0>;
230 xlnx,txcsum = <0x0>;
231 xlnx,txfifo = <0x1000>;
232 } ;
233 } ;
234 IIC_EEPROM: i2c@81600000 {
235 compatible = "xlnx,xps-iic-2.00.a";
236 interrupt-parent = <&xps_intc_0>;
237 interrupts = < 6 2 >;
238 reg = < 0x81600000 0x10000 >;
239 xlnx,clk-freq = <0x7735940>;
240 xlnx,family = "virtex5";
241 xlnx,gpo-width = <0x1>;
242 xlnx,iic-freq = <0x186a0>;
243 xlnx,scl-inertial-delay = <0x0>;
244 xlnx,sda-inertial-delay = <0x0>;
245 xlnx,ten-bit-adr = <0x0>;
246 } ;
247 LEDs_8Bit: gpio@81400000 {
248 compatible = "xlnx,xps-gpio-1.00.a";
249 interrupt-parent = <&xps_intc_0>;
250 interrupts = < 7 2 >;
251 reg = < 0x81400000 0x10000 >;
252 xlnx,all-inputs = <0x0>;
253 xlnx,all-inputs-2 = <0x0>;
254 xlnx,dout-default = <0x0>;
255 xlnx,dout-default-2 = <0x0>;
256 xlnx,family = "virtex5";
257 xlnx,gpio-width = <0x8>;
258 xlnx,interrupt-present = <0x1>;
259 xlnx,is-bidir = <0x1>;
260 xlnx,is-bidir-2 = <0x1>;
261 xlnx,is-dual = <0x0>;
262 xlnx,tri-default = <0xffffffff>;
263 xlnx,tri-default-2 = <0xffffffff>;
264 } ;
265 RS232_Uart_1: serial@84000000 {
266 clock-frequency = <125000000>;
267 compatible = "xlnx,xps-uartlite-1.00.a";
268 current-speed = <115200>;
269 device_type = "serial";
270 interrupt-parent = <&xps_intc_0>;
271 interrupts = < 8 0 >;
272 port-number = <0>;
273 reg = < 0x84000000 0x10000 >;
274 xlnx,baudrate = <0x1c200>;
275 xlnx,data-bits = <0x8>;
276 xlnx,family = "virtex5";
277 xlnx,odd-parity = <0x0>;
278 xlnx,use-parity = <0x0>;
279 } ;
280 SysACE_CompactFlash: sysace@83600000 {
281 compatible = "xlnx,xps-sysace-1.00.a";
282 interrupt-parent = <&xps_intc_0>;
283 interrupts = < 4 2 >;
284 reg = < 0x83600000 0x10000 >;
285 xlnx,family = "virtex5";
286 xlnx,mem-width = <0x10>;
287 } ;
288 debug_module: debug@84400000 {
289 compatible = "xlnx,mdm-1.00.d";
290 reg = < 0x84400000 0x10000 >;
291 xlnx,family = "virtex5";
292 xlnx,interconnect = <0x1>;
293 xlnx,jtag-chain = <0x2>;
294 xlnx,mb-dbg-ports = <0x1>;
295 xlnx,uart-width = <0x8>;
296 xlnx,use-uart = <0x1>;
297 xlnx,write-fsl-ports = <0x0>;
298 } ;
299 mpmc@90000000 {
300 #address-cells = <1>;
301 #size-cells = <1>;
302 compatible = "xlnx,mpmc-4.02.a";
303 PIM3: sdma@84600180 {
304 compatible = "xlnx,ll-dma-1.00.a";
305 interrupt-parent = <&xps_intc_0>;
306 interrupts = < 2 2 1 2 >;
307 reg = < 0x84600180 0x80 >;
308 } ;
309 } ;
310 xps_intc_0: interrupt-controller@81800000 {
311 #interrupt-cells = <0x2>;
312 compatible = "xlnx,xps-intc-1.00.a";
313 interrupt-controller ;
314 reg = < 0x81800000 0x10000 >;
315 xlnx,kind-of-intr = <0x100>;
316 xlnx,num-intr-inputs = <0x9>;
317 } ;
318 xps_timer_1: timer@83c00000 {
319 compatible = "xlnx,xps-timer-1.00.a";
320 interrupt-parent = <&xps_intc_0>;
321 interrupts = < 3 2 >;
322 reg = < 0x83c00000 0x10000 >;
323 xlnx,count-width = <0x20>;
324 xlnx,family = "virtex5";
325 xlnx,gen0-assert = <0x1>;
326 xlnx,gen1-assert = <0x1>;
327 xlnx,one-timer-only = <0x0>;
328 xlnx,trig0-assert = <0x1>;
329 xlnx,trig1-assert = <0x1>;
330 } ;
331 } ;
332} ;
diff --git a/arch/microblaze/platform/platform.c b/arch/microblaze/platform/platform.c
new file mode 100644
index 000000000000..56e0234fa34b
--- /dev/null
+++ b/arch/microblaze/platform/platform.c
@@ -0,0 +1,31 @@
1/*
2 * Copyright 2008 Michal Simek <monstr@monstr.eu>
3 *
4 * based on virtex.c file
5 *
6 * Copyright 2007 Secret Lab Technologies Ltd.
7 *
8 * This file is licensed under the terms of the GNU General Public License
9 * version 2. This program is licensed "as is" without any warranty of any
10 * kind, whether express or implied.
11 */
12
13#include <linux/init.h>
14#include <linux/of_platform.h>
15#include <asm/prom.h>
16
17static struct of_device_id xilinx_of_bus_ids[] __initdata = {
18 { .compatible = "simple-bus", },
19 { .compatible = "xlnx,plb-v46-1.00.a", },
20 { .compatible = "xlnx,opb-v20-1.10.c", },
21 { .compatible = "xlnx,opb-v20-1.10.b", },
22 { .compatible = "xlnx,compound", },
23 {}
24};
25
26static int __init microblaze_device_probe(void)
27{
28 of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
29 return 0;
30}
31device_initcall(microblaze_device_probe);
diff --git a/arch/mips/include/asm/mach-rc32434/gpio.h b/arch/mips/include/asm/mach-rc32434/gpio.h
index 3cb50d17b62d..12ee8d510160 100644
--- a/arch/mips/include/asm/mach-rc32434/gpio.h
+++ b/arch/mips/include/asm/mach-rc32434/gpio.h
@@ -80,6 +80,9 @@ struct rb532_gpio_reg {
80/* Compact Flash GPIO pin */ 80/* Compact Flash GPIO pin */
81#define CF_GPIO_NUM 13 81#define CF_GPIO_NUM 13
82 82
83/* S1 button GPIO (shared with UART0_SIN) */
84#define GPIO_BTN_S1 1
85
83extern void rb532_gpio_set_ilevel(int bit, unsigned gpio); 86extern void rb532_gpio_set_ilevel(int bit, unsigned gpio);
84extern void rb532_gpio_set_istat(int bit, unsigned gpio); 87extern void rb532_gpio_set_istat(int bit, unsigned gpio);
85extern void rb532_gpio_set_func(unsigned gpio); 88extern void rb532_gpio_set_func(unsigned gpio);
diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
index 4a5f05b662ae..9f40e1ff9b4f 100644
--- a/arch/mips/rb532/devices.c
+++ b/arch/mips/rb532/devices.c
@@ -200,26 +200,9 @@ static struct platform_device rb532_led = {
200 .id = -1, 200 .id = -1,
201}; 201};
202 202
203static struct gpio_keys_button rb532_gpio_btn[] = {
204 {
205 .gpio = 1,
206 .code = BTN_0,
207 .desc = "S1",
208 .active_low = 1,
209 }
210};
211
212static struct gpio_keys_platform_data rb532_gpio_btn_data = {
213 .buttons = rb532_gpio_btn,
214 .nbuttons = ARRAY_SIZE(rb532_gpio_btn),
215};
216
217static struct platform_device rb532_button = { 203static struct platform_device rb532_button = {
218 .name = "gpio-keys", 204 .name = "rb532-button",
219 .id = -1, 205 .id = -1,
220 .dev = {
221 .platform_data = &rb532_gpio_btn_data,
222 }
223}; 206};
224 207
225static struct resource rb532_wdt_res[] = { 208static struct resource rb532_wdt_res[] = {
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index 41d16822e616..355926730e8d 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -370,5 +370,3 @@ source "security/Kconfig"
370source "crypto/Kconfig" 370source "crypto/Kconfig"
371 371
372source "lib/Kconfig" 372source "lib/Kconfig"
373
374source "arch/mn10300/oprofile/Kconfig"
diff --git a/arch/mn10300/Makefile b/arch/mn10300/Makefile
index 6673a28ec07a..dd0c8ff52a68 100644
--- a/arch/mn10300/Makefile
+++ b/arch/mn10300/Makefile
@@ -94,42 +94,8 @@ ifdef CONFIG_DEBUG_INFO
94KBUILD_AFLAGS += -Wa,--gdwarf2 94KBUILD_AFLAGS += -Wa,--gdwarf2
95endif 95endif
96 96
97###################################################################################################
98# 97#
99# juggle some symlinks in the MN10300 asm include dir 98# include the appropriate processor- and unit-specific headers
100# 99#
101# Update machine proc and unit symlinks if something which affects 100KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/proc-$(PROCESSOR)/include
102# them changed. We use .proc / .unit to indicate when they were 101KBUILD_CPPFLAGS += -I$(srctree)/arch/mn10300/unit-$(UNIT)/include
103# updated last, otherwise make uses the target directory mtime.
104#
105###################################################################################################
106
107# processor specific definitions
108include/asm-mn10300/.proc: $(wildcard include/config/proc/*.h) include/config/auto.conf
109 @echo ' SYMLINK include/asm-mn10300/proc -> include/asm-mn10300/proc-$(PROCESSOR)'
110ifneq ($(KBUILD_SRC),)
111 $(Q)mkdir -p include/asm-mn10300
112 $(Q)ln -fsn $(srctree)/include/asm-mn10300/proc-$(PROCESSOR) include/asm-mn10300/proc
113else
114 $(Q)ln -fsn proc-$(PROCESSOR) include/asm-mn10300/proc
115endif
116 @touch $@
117
118CLEAN_FILES += include/asm-mn10300/proc include/asm-mn10300/.proc
119
120prepare: include/asm-mn10300/.proc
121
122# unit specific definitions
123include/asm-mn10300/.unit: $(wildcard include/config/unit/*.h) include/config/auto.conf
124 @echo ' SYMLINK include/asm-mn10300/unit -> include/asm-mn10300/unit-$(UNIT)'
125ifneq ($(KBUILD_SRC),)
126 $(Q)mkdir -p include/asm-mn10300
127 $(Q)ln -fsn $(srctree)/include/asm-mn10300/unit-$(UNIT) include/asm-mn10300/unit
128else
129 $(Q)ln -fsn unit-$(UNIT) include/asm-mn10300/unit
130endif
131 @touch $@
132
133CLEAN_FILES += include/asm-mn10300/unit include/asm-mn10300/.unit
134
135prepare: include/asm-mn10300/.unit
diff --git a/include/asm-mn10300/Kbuild b/arch/mn10300/include/asm/Kbuild
index c68e1680da01..c68e1680da01 100644
--- a/include/asm-mn10300/Kbuild
+++ b/arch/mn10300/include/asm/Kbuild
diff --git a/include/asm-mn10300/atomic.h b/arch/mn10300/include/asm/atomic.h
index bc064825f9b1..bc064825f9b1 100644
--- a/include/asm-mn10300/atomic.h
+++ b/arch/mn10300/include/asm/atomic.h
diff --git a/include/asm-mn10300/auxvec.h b/arch/mn10300/include/asm/auxvec.h
index 4fdb60b2ae39..4fdb60b2ae39 100644
--- a/include/asm-mn10300/auxvec.h
+++ b/arch/mn10300/include/asm/auxvec.h
diff --git a/include/asm-mn10300/bitops.h b/arch/mn10300/include/asm/bitops.h
index 0b610f482abb..0b610f482abb 100644
--- a/include/asm-mn10300/bitops.h
+++ b/arch/mn10300/include/asm/bitops.h
diff --git a/include/asm-mn10300/bug.h b/arch/mn10300/include/asm/bug.h
index 4fcf3384e259..4fcf3384e259 100644
--- a/include/asm-mn10300/bug.h
+++ b/arch/mn10300/include/asm/bug.h
diff --git a/include/asm-mn10300/bugs.h b/arch/mn10300/include/asm/bugs.h
index 31c8bc592b47..31c8bc592b47 100644
--- a/include/asm-mn10300/bugs.h
+++ b/arch/mn10300/include/asm/bugs.h
diff --git a/include/asm-mn10300/busctl-regs.h b/arch/mn10300/include/asm/busctl-regs.h
index 1632aef73401..1632aef73401 100644
--- a/include/asm-mn10300/busctl-regs.h
+++ b/arch/mn10300/include/asm/busctl-regs.h
diff --git a/include/asm-mn10300/byteorder.h b/arch/mn10300/include/asm/byteorder.h
index 5dd0bdd9feee..5dd0bdd9feee 100644
--- a/include/asm-mn10300/byteorder.h
+++ b/arch/mn10300/include/asm/byteorder.h
diff --git a/include/asm-mn10300/cache.h b/arch/mn10300/include/asm/cache.h
index 9e01122208a9..e03cfa2e997e 100644
--- a/include/asm-mn10300/cache.h
+++ b/arch/mn10300/include/asm/cache.h
@@ -13,7 +13,7 @@
13#define _ASM_CACHE_H 13#define _ASM_CACHE_H
14 14
15#include <asm/cpu-regs.h> 15#include <asm/cpu-regs.h>
16#include <asm/proc/cache.h> 16#include <proc/cache.h>
17 17
18#ifndef __ASSEMBLY__ 18#ifndef __ASSEMBLY__
19#define L1_CACHE_DISPARITY (L1_CACHE_NENTRIES * L1_CACHE_BYTES) 19#define L1_CACHE_DISPARITY (L1_CACHE_NENTRIES * L1_CACHE_BYTES)
diff --git a/include/asm-mn10300/cacheflush.h b/arch/mn10300/include/asm/cacheflush.h
index 2db746a251f8..2db746a251f8 100644
--- a/include/asm-mn10300/cacheflush.h
+++ b/arch/mn10300/include/asm/cacheflush.h
diff --git a/include/asm-mn10300/checksum.h b/arch/mn10300/include/asm/checksum.h
index 9fb2a8d8826a..9fb2a8d8826a 100644
--- a/include/asm-mn10300/checksum.h
+++ b/arch/mn10300/include/asm/checksum.h
diff --git a/include/asm-mn10300/cpu-regs.h b/arch/mn10300/include/asm/cpu-regs.h
index 757e9b5388ea..757e9b5388ea 100644
--- a/include/asm-mn10300/cpu-regs.h
+++ b/arch/mn10300/include/asm/cpu-regs.h
diff --git a/arch/mn10300/include/asm/cputime.h b/arch/mn10300/include/asm/cputime.h
new file mode 100644
index 000000000000..6d68ad7e0ea3
--- /dev/null
+++ b/arch/mn10300/include/asm/cputime.h
@@ -0,0 +1 @@
#include <asm-generic/cputime.h>
diff --git a/include/asm-mn10300/current.h b/arch/mn10300/include/asm/current.h
index ca6027d83743..ca6027d83743 100644
--- a/include/asm-mn10300/current.h
+++ b/arch/mn10300/include/asm/current.h
diff --git a/include/asm-mn10300/delay.h b/arch/mn10300/include/asm/delay.h
index 34517b359399..34517b359399 100644
--- a/include/asm-mn10300/delay.h
+++ b/arch/mn10300/include/asm/delay.h
diff --git a/include/asm-mn10300/device.h b/arch/mn10300/include/asm/device.h
index f0a4c256403b..f0a4c256403b 100644
--- a/include/asm-mn10300/device.h
+++ b/arch/mn10300/include/asm/device.h
diff --git a/include/asm-mn10300/div64.h b/arch/mn10300/include/asm/div64.h
index 3a8329b3e869..3a8329b3e869 100644
--- a/include/asm-mn10300/div64.h
+++ b/arch/mn10300/include/asm/div64.h
diff --git a/include/asm-mn10300/dma-mapping.h b/arch/mn10300/include/asm/dma-mapping.h
index ccae8f6c6326..ccae8f6c6326 100644
--- a/include/asm-mn10300/dma-mapping.h
+++ b/arch/mn10300/include/asm/dma-mapping.h
diff --git a/include/asm-mn10300/dma.h b/arch/mn10300/include/asm/dma.h
index 098df2e617ab..098df2e617ab 100644
--- a/include/asm-mn10300/dma.h
+++ b/arch/mn10300/include/asm/dma.h
diff --git a/include/asm-mn10300/dmactl-regs.h b/arch/mn10300/include/asm/dmactl-regs.h
index 58a199da0f4a..58a199da0f4a 100644
--- a/include/asm-mn10300/dmactl-regs.h
+++ b/arch/mn10300/include/asm/dmactl-regs.h
diff --git a/include/asm-mn10300/elf.h b/arch/mn10300/include/asm/elf.h
index bf09f8bb392e..bf09f8bb392e 100644
--- a/include/asm-mn10300/elf.h
+++ b/arch/mn10300/include/asm/elf.h
diff --git a/arch/mn10300/include/asm/emergency-restart.h b/arch/mn10300/include/asm/emergency-restart.h
new file mode 100644
index 000000000000..3711bd9d50bd
--- /dev/null
+++ b/arch/mn10300/include/asm/emergency-restart.h
@@ -0,0 +1 @@
#include <asm-generic/emergency-restart.h>
diff --git a/arch/mn10300/include/asm/errno.h b/arch/mn10300/include/asm/errno.h
new file mode 100644
index 000000000000..4c82b503d92f
--- /dev/null
+++ b/arch/mn10300/include/asm/errno.h
@@ -0,0 +1 @@
#include <asm-generic/errno.h>
diff --git a/include/asm-mn10300/exceptions.h b/arch/mn10300/include/asm/exceptions.h
index fa16466ef3f9..fa16466ef3f9 100644
--- a/include/asm-mn10300/exceptions.h
+++ b/arch/mn10300/include/asm/exceptions.h
diff --git a/include/asm-mn10300/fb.h b/arch/mn10300/include/asm/fb.h
index 697b24a91e1a..697b24a91e1a 100644
--- a/include/asm-mn10300/fb.h
+++ b/arch/mn10300/include/asm/fb.h
diff --git a/arch/mn10300/include/asm/fcntl.h b/arch/mn10300/include/asm/fcntl.h
new file mode 100644
index 000000000000..46ab12db5739
--- /dev/null
+++ b/arch/mn10300/include/asm/fcntl.h
@@ -0,0 +1 @@
#include <asm-generic/fcntl.h>
diff --git a/include/asm-mn10300/fpu.h b/arch/mn10300/include/asm/fpu.h
index 64a2b83a7a6a..64a2b83a7a6a 100644
--- a/include/asm-mn10300/fpu.h
+++ b/arch/mn10300/include/asm/fpu.h
diff --git a/include/asm-mn10300/frame.inc b/arch/mn10300/include/asm/frame.inc
index 5b1949bdf039..5b1949bdf039 100644
--- a/include/asm-mn10300/frame.inc
+++ b/arch/mn10300/include/asm/frame.inc
diff --git a/include/asm-mn10300/ftrace.h b/arch/mn10300/include/asm/ftrace.h
index 40a8c178f10d..40a8c178f10d 100644
--- a/include/asm-mn10300/ftrace.h
+++ b/arch/mn10300/include/asm/ftrace.h
diff --git a/arch/mn10300/include/asm/futex.h b/arch/mn10300/include/asm/futex.h
new file mode 100644
index 000000000000..0b745828f42b
--- /dev/null
+++ b/arch/mn10300/include/asm/futex.h
@@ -0,0 +1 @@
#include <asm-generic/futex.h>
diff --git a/include/asm-mn10300/gdb-stub.h b/arch/mn10300/include/asm/gdb-stub.h
index e5a6368559af..e5a6368559af 100644
--- a/include/asm-mn10300/gdb-stub.h
+++ b/arch/mn10300/include/asm/gdb-stub.h
diff --git a/include/asm-mn10300/hardirq.h b/arch/mn10300/include/asm/hardirq.h
index 54d950117674..54d950117674 100644
--- a/include/asm-mn10300/hardirq.h
+++ b/arch/mn10300/include/asm/hardirq.h
diff --git a/include/asm-mn10300/highmem.h b/arch/mn10300/include/asm/highmem.h
index 90f2abb04bfd..90f2abb04bfd 100644
--- a/include/asm-mn10300/highmem.h
+++ b/arch/mn10300/include/asm/highmem.h
diff --git a/include/asm-mn10300/hw_irq.h b/arch/mn10300/include/asm/hw_irq.h
index 70619901098e..70619901098e 100644
--- a/include/asm-mn10300/hw_irq.h
+++ b/arch/mn10300/include/asm/hw_irq.h
diff --git a/include/asm-mn10300/intctl-regs.h b/arch/mn10300/include/asm/intctl-regs.h
index ba544c796c5a..ba544c796c5a 100644
--- a/include/asm-mn10300/intctl-regs.h
+++ b/arch/mn10300/include/asm/intctl-regs.h
diff --git a/include/asm-mn10300/io.h b/arch/mn10300/include/asm/io.h
index c1a4119e6497..c1a4119e6497 100644
--- a/include/asm-mn10300/io.h
+++ b/arch/mn10300/include/asm/io.h
diff --git a/arch/mn10300/include/asm/ioctl.h b/arch/mn10300/include/asm/ioctl.h
new file mode 100644
index 000000000000..b279fe06dfe5
--- /dev/null
+++ b/arch/mn10300/include/asm/ioctl.h
@@ -0,0 +1 @@
#include <asm-generic/ioctl.h>
diff --git a/include/asm-mn10300/ioctls.h b/arch/mn10300/include/asm/ioctls.h
index dcbfb452974f..dcbfb452974f 100644
--- a/include/asm-mn10300/ioctls.h
+++ b/arch/mn10300/include/asm/ioctls.h
diff --git a/arch/mn10300/include/asm/ipc.h b/arch/mn10300/include/asm/ipc.h
new file mode 100644
index 000000000000..a46e3d9c2a3f
--- /dev/null
+++ b/arch/mn10300/include/asm/ipc.h
@@ -0,0 +1 @@
#include <asm-generic/ipc.h>
diff --git a/include/asm-mn10300/ipcbuf.h b/arch/mn10300/include/asm/ipcbuf.h
index f6f63d448272..f6f63d448272 100644
--- a/include/asm-mn10300/ipcbuf.h
+++ b/arch/mn10300/include/asm/ipcbuf.h
diff --git a/include/asm-mn10300/irq.h b/arch/mn10300/include/asm/irq.h
index 53b380116901..25c045d16d1c 100644
--- a/include/asm-mn10300/irq.h
+++ b/arch/mn10300/include/asm/irq.h
@@ -16,7 +16,7 @@
16 16
17#include <asm/intctl-regs.h> 17#include <asm/intctl-regs.h>
18#include <asm/reset-regs.h> 18#include <asm/reset-regs.h>
19#include <asm/proc/irq.h> 19#include <proc/irq.h>
20 20
21/* this number is used when no interrupt has been assigned */ 21/* this number is used when no interrupt has been assigned */
22#define NO_IRQ INT_MAX 22#define NO_IRQ INT_MAX
diff --git a/include/asm-mn10300/irq_regs.h b/arch/mn10300/include/asm/irq_regs.h
index a848cd232eb4..a848cd232eb4 100644
--- a/include/asm-mn10300/irq_regs.h
+++ b/arch/mn10300/include/asm/irq_regs.h
diff --git a/include/asm-mn10300/kdebug.h b/arch/mn10300/include/asm/kdebug.h
index 0f47e112190c..0f47e112190c 100644
--- a/include/asm-mn10300/kdebug.h
+++ b/arch/mn10300/include/asm/kdebug.h
diff --git a/include/asm-mn10300/kmap_types.h b/arch/mn10300/include/asm/kmap_types.h
index 3398f9f35603..3398f9f35603 100644
--- a/include/asm-mn10300/kmap_types.h
+++ b/arch/mn10300/include/asm/kmap_types.h
diff --git a/include/asm-mn10300/kprobes.h b/arch/mn10300/include/asm/kprobes.h
index c800b590183a..c800b590183a 100644
--- a/include/asm-mn10300/kprobes.h
+++ b/arch/mn10300/include/asm/kprobes.h
diff --git a/include/asm-mn10300/linkage.h b/arch/mn10300/include/asm/linkage.h
index dda3002a5dfa..dda3002a5dfa 100644
--- a/include/asm-mn10300/linkage.h
+++ b/arch/mn10300/include/asm/linkage.h
diff --git a/arch/mn10300/include/asm/local.h b/arch/mn10300/include/asm/local.h
new file mode 100644
index 000000000000..c11c530f74d0
--- /dev/null
+++ b/arch/mn10300/include/asm/local.h
@@ -0,0 +1 @@
#include <asm-generic/local.h>
diff --git a/include/asm-mn10300/mc146818rtc.h b/arch/mn10300/include/asm/mc146818rtc.h
index df6bc6e0e8c6..df6bc6e0e8c6 100644
--- a/include/asm-mn10300/mc146818rtc.h
+++ b/arch/mn10300/include/asm/mc146818rtc.h
diff --git a/include/asm-mn10300/mman.h b/arch/mn10300/include/asm/mman.h
index b7986b65addf..b7986b65addf 100644
--- a/include/asm-mn10300/mman.h
+++ b/arch/mn10300/include/asm/mman.h
diff --git a/include/asm-mn10300/mmu.h b/arch/mn10300/include/asm/mmu.h
index 2d2d097e7309..2d2d097e7309 100644
--- a/include/asm-mn10300/mmu.h
+++ b/arch/mn10300/include/asm/mmu.h
diff --git a/include/asm-mn10300/mmu_context.h b/arch/mn10300/include/asm/mmu_context.h
index a9e2e34f69b0..a9e2e34f69b0 100644
--- a/include/asm-mn10300/mmu_context.h
+++ b/arch/mn10300/include/asm/mmu_context.h
diff --git a/include/asm-mn10300/module.h b/arch/mn10300/include/asm/module.h
index 5d7057d01494..5d7057d01494 100644
--- a/include/asm-mn10300/module.h
+++ b/arch/mn10300/include/asm/module.h
diff --git a/include/asm-mn10300/msgbuf.h b/arch/mn10300/include/asm/msgbuf.h
index 8b602450cc4a..8b602450cc4a 100644
--- a/include/asm-mn10300/msgbuf.h
+++ b/arch/mn10300/include/asm/msgbuf.h
diff --git a/include/asm-mn10300/mutex.h b/arch/mn10300/include/asm/mutex.h
index 84f5490c6fb4..84f5490c6fb4 100644
--- a/include/asm-mn10300/mutex.h
+++ b/arch/mn10300/include/asm/mutex.h
diff --git a/include/asm-mn10300/nmi.h b/arch/mn10300/include/asm/nmi.h
index f3671cbbc117..f3671cbbc117 100644
--- a/include/asm-mn10300/nmi.h
+++ b/arch/mn10300/include/asm/nmi.h
diff --git a/include/asm-mn10300/page.h b/arch/mn10300/include/asm/page.h
index 8288e124165b..8288e124165b 100644
--- a/include/asm-mn10300/page.h
+++ b/arch/mn10300/include/asm/page.h
diff --git a/include/asm-mn10300/page_offset.h b/arch/mn10300/include/asm/page_offset.h
index 8eb5b16ad86b..8eb5b16ad86b 100644
--- a/include/asm-mn10300/page_offset.h
+++ b/arch/mn10300/include/asm/page_offset.h
diff --git a/include/asm-mn10300/param.h b/arch/mn10300/include/asm/param.h
index 789b1df41fcb..789b1df41fcb 100644
--- a/include/asm-mn10300/param.h
+++ b/arch/mn10300/include/asm/param.h
diff --git a/include/asm-mn10300/pci.h b/arch/mn10300/include/asm/pci.h
index 0517b45313d8..0517b45313d8 100644
--- a/include/asm-mn10300/pci.h
+++ b/arch/mn10300/include/asm/pci.h
diff --git a/arch/mn10300/include/asm/percpu.h b/arch/mn10300/include/asm/percpu.h
new file mode 100644
index 000000000000..06a959d67234
--- /dev/null
+++ b/arch/mn10300/include/asm/percpu.h
@@ -0,0 +1 @@
#include <asm-generic/percpu.h>
diff --git a/include/asm-mn10300/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h
index ec057e1bd4cf..ec057e1bd4cf 100644
--- a/include/asm-mn10300/pgalloc.h
+++ b/arch/mn10300/include/asm/pgalloc.h
diff --git a/include/asm-mn10300/pgtable.h b/arch/mn10300/include/asm/pgtable.h
index 6dc30fc827c4..6dc30fc827c4 100644
--- a/include/asm-mn10300/pgtable.h
+++ b/arch/mn10300/include/asm/pgtable.h
diff --git a/include/asm-mn10300/pio-regs.h b/arch/mn10300/include/asm/pio-regs.h
index 96bc8182d0ba..96bc8182d0ba 100644
--- a/include/asm-mn10300/pio-regs.h
+++ b/arch/mn10300/include/asm/pio-regs.h
diff --git a/arch/mn10300/include/asm/poll.h b/arch/mn10300/include/asm/poll.h
new file mode 100644
index 000000000000..c98509d3149e
--- /dev/null
+++ b/arch/mn10300/include/asm/poll.h
@@ -0,0 +1 @@
#include <asm-generic/poll.h>
diff --git a/include/asm-mn10300/posix_types.h b/arch/mn10300/include/asm/posix_types.h
index 077567c37798..077567c37798 100644
--- a/include/asm-mn10300/posix_types.h
+++ b/arch/mn10300/include/asm/posix_types.h
diff --git a/include/asm-mn10300/processor.h b/arch/mn10300/include/asm/processor.h
index 73239271873d..73239271873d 100644
--- a/include/asm-mn10300/processor.h
+++ b/arch/mn10300/include/asm/processor.h
diff --git a/include/asm-mn10300/ptrace.h b/arch/mn10300/include/asm/ptrace.h
index 7b06cc623d8b..7b06cc623d8b 100644
--- a/include/asm-mn10300/ptrace.h
+++ b/arch/mn10300/include/asm/ptrace.h
diff --git a/include/asm-mn10300/reset-regs.h b/arch/mn10300/include/asm/reset-regs.h
index 174523d50132..174523d50132 100644
--- a/include/asm-mn10300/reset-regs.h
+++ b/arch/mn10300/include/asm/reset-regs.h
diff --git a/arch/mn10300/include/asm/resource.h b/arch/mn10300/include/asm/resource.h
new file mode 100644
index 000000000000..04bc4db8921b
--- /dev/null
+++ b/arch/mn10300/include/asm/resource.h
@@ -0,0 +1 @@
#include <asm-generic/resource.h>
diff --git a/include/asm-mn10300/rtc-regs.h b/arch/mn10300/include/asm/rtc-regs.h
index c42deefaec11..c42deefaec11 100644
--- a/include/asm-mn10300/rtc-regs.h
+++ b/arch/mn10300/include/asm/rtc-regs.h
diff --git a/include/asm-mn10300/rtc.h b/arch/mn10300/include/asm/rtc.h
index c295194cc703..c295194cc703 100644
--- a/include/asm-mn10300/rtc.h
+++ b/arch/mn10300/include/asm/rtc.h
diff --git a/include/asm-mn10300/scatterlist.h b/arch/mn10300/include/asm/scatterlist.h
index 67535901b9ff..67535901b9ff 100644
--- a/include/asm-mn10300/scatterlist.h
+++ b/arch/mn10300/include/asm/scatterlist.h
diff --git a/include/asm-mn10300/sections.h b/arch/mn10300/include/asm/sections.h
index 2b8c5160388f..2b8c5160388f 100644
--- a/include/asm-mn10300/sections.h
+++ b/arch/mn10300/include/asm/sections.h
diff --git a/include/asm-mn10300/sembuf.h b/arch/mn10300/include/asm/sembuf.h
index 301f3f9d8aa9..301f3f9d8aa9 100644
--- a/include/asm-mn10300/sembuf.h
+++ b/arch/mn10300/include/asm/sembuf.h
diff --git a/include/asm-mn10300/serial-regs.h b/arch/mn10300/include/asm/serial-regs.h
index 6498469e93ac..6498469e93ac 100644
--- a/include/asm-mn10300/serial-regs.h
+++ b/arch/mn10300/include/asm/serial-regs.h
diff --git a/include/asm-mn10300/serial.h b/arch/mn10300/include/asm/serial.h
index 99785a9deadb..a29445cddd6f 100644
--- a/include/asm-mn10300/serial.h
+++ b/arch/mn10300/include/asm/serial.h
@@ -33,4 +33,4 @@
33#define RS_TABLE_SIZE 33#define RS_TABLE_SIZE
34#endif 34#endif
35 35
36#include <asm/unit/serial.h> 36#include <unit/serial.h>
diff --git a/include/asm-mn10300/setup.h b/arch/mn10300/include/asm/setup.h
index 08356c832283..08356c832283 100644
--- a/include/asm-mn10300/setup.h
+++ b/arch/mn10300/include/asm/setup.h
diff --git a/include/asm-mn10300/shmbuf.h b/arch/mn10300/include/asm/shmbuf.h
index 8f300cc35d6c..8f300cc35d6c 100644
--- a/include/asm-mn10300/shmbuf.h
+++ b/arch/mn10300/include/asm/shmbuf.h
diff --git a/include/asm-mn10300/shmparam.h b/arch/mn10300/include/asm/shmparam.h
index ab666ed1a070..ab666ed1a070 100644
--- a/include/asm-mn10300/shmparam.h
+++ b/arch/mn10300/include/asm/shmparam.h
diff --git a/include/asm-mn10300/sigcontext.h b/arch/mn10300/include/asm/sigcontext.h
index 4de3afff4ad7..4de3afff4ad7 100644
--- a/include/asm-mn10300/sigcontext.h
+++ b/arch/mn10300/include/asm/sigcontext.h
diff --git a/include/asm-mn10300/siginfo.h b/arch/mn10300/include/asm/siginfo.h
index 0815d29d82e5..0815d29d82e5 100644
--- a/include/asm-mn10300/siginfo.h
+++ b/arch/mn10300/include/asm/siginfo.h
diff --git a/include/asm-mn10300/signal.h b/arch/mn10300/include/asm/signal.h
index e98817cec5f7..e98817cec5f7 100644
--- a/include/asm-mn10300/signal.h
+++ b/arch/mn10300/include/asm/signal.h
diff --git a/include/asm-mn10300/smp.h b/arch/mn10300/include/asm/smp.h
index 4eb8c61b7dab..4eb8c61b7dab 100644
--- a/include/asm-mn10300/smp.h
+++ b/arch/mn10300/include/asm/smp.h
diff --git a/include/asm-mn10300/socket.h b/arch/mn10300/include/asm/socket.h
index fb5daf438ec9..fb5daf438ec9 100644
--- a/include/asm-mn10300/socket.h
+++ b/arch/mn10300/include/asm/socket.h
diff --git a/include/asm-mn10300/sockios.h b/arch/mn10300/include/asm/sockios.h
index b03043a1c564..b03043a1c564 100644
--- a/include/asm-mn10300/sockios.h
+++ b/arch/mn10300/include/asm/sockios.h
diff --git a/include/asm-mn10300/spinlock.h b/arch/mn10300/include/asm/spinlock.h
index 4bf9c8b169e0..4bf9c8b169e0 100644
--- a/include/asm-mn10300/spinlock.h
+++ b/arch/mn10300/include/asm/spinlock.h
diff --git a/include/asm-mn10300/stat.h b/arch/mn10300/include/asm/stat.h
index 63ff8371cf2c..63ff8371cf2c 100644
--- a/include/asm-mn10300/stat.h
+++ b/arch/mn10300/include/asm/stat.h
diff --git a/arch/mn10300/include/asm/statfs.h b/arch/mn10300/include/asm/statfs.h
new file mode 100644
index 000000000000..0b91fe198c20
--- /dev/null
+++ b/arch/mn10300/include/asm/statfs.h
@@ -0,0 +1 @@
#include <asm-generic/statfs.h>
diff --git a/include/asm-mn10300/string.h b/arch/mn10300/include/asm/string.h
index 47dbd4346c32..47dbd4346c32 100644
--- a/include/asm-mn10300/string.h
+++ b/arch/mn10300/include/asm/string.h
diff --git a/include/asm-mn10300/swab.h b/arch/mn10300/include/asm/swab.h
index bd818a820ca8..bd818a820ca8 100644
--- a/include/asm-mn10300/swab.h
+++ b/arch/mn10300/include/asm/swab.h
diff --git a/include/asm-mn10300/system.h b/arch/mn10300/include/asm/system.h
index 8214fb7e7fe4..8214fb7e7fe4 100644
--- a/include/asm-mn10300/system.h
+++ b/arch/mn10300/include/asm/system.h
diff --git a/include/asm-mn10300/termbits.h b/arch/mn10300/include/asm/termbits.h
index eb2b0dc1f696..eb2b0dc1f696 100644
--- a/include/asm-mn10300/termbits.h
+++ b/arch/mn10300/include/asm/termbits.h
diff --git a/include/asm-mn10300/termios.h b/arch/mn10300/include/asm/termios.h
index dd7cf617e118..dd7cf617e118 100644
--- a/include/asm-mn10300/termios.h
+++ b/arch/mn10300/include/asm/termios.h
diff --git a/include/asm-mn10300/thread_info.h b/arch/mn10300/include/asm/thread_info.h
index 78a3881f3c12..78a3881f3c12 100644
--- a/include/asm-mn10300/thread_info.h
+++ b/arch/mn10300/include/asm/thread_info.h
diff --git a/include/asm-mn10300/timer-regs.h b/arch/mn10300/include/asm/timer-regs.h
index 1d883b7f94ab..1d883b7f94ab 100644
--- a/include/asm-mn10300/timer-regs.h
+++ b/arch/mn10300/include/asm/timer-regs.h
diff --git a/include/asm-mn10300/timex.h b/arch/mn10300/include/asm/timex.h
index 3944277dab67..8d031f9e117d 100644
--- a/include/asm-mn10300/timex.h
+++ b/arch/mn10300/include/asm/timex.h
@@ -12,7 +12,7 @@
12#define _ASM_TIMEX_H 12#define _ASM_TIMEX_H
13 13
14#include <asm/hardirq.h> 14#include <asm/hardirq.h>
15#include <asm/unit/timex.h> 15#include <unit/timex.h>
16 16
17#define TICK_SIZE (tick_nsec / 1000) 17#define TICK_SIZE (tick_nsec / 1000)
18 18
diff --git a/include/asm-mn10300/tlb.h b/arch/mn10300/include/asm/tlb.h
index 65d232b96613..65d232b96613 100644
--- a/include/asm-mn10300/tlb.h
+++ b/arch/mn10300/include/asm/tlb.h
diff --git a/include/asm-mn10300/tlbflush.h b/arch/mn10300/include/asm/tlbflush.h
index e0239865abcb..e0239865abcb 100644
--- a/include/asm-mn10300/tlbflush.h
+++ b/arch/mn10300/include/asm/tlbflush.h
diff --git a/include/asm-mn10300/topology.h b/arch/mn10300/include/asm/topology.h
index 5428f333a02c..5428f333a02c 100644
--- a/include/asm-mn10300/topology.h
+++ b/arch/mn10300/include/asm/topology.h
diff --git a/include/asm-mn10300/types.h b/arch/mn10300/include/asm/types.h
index 7b9f01042fd4..7b9f01042fd4 100644
--- a/include/asm-mn10300/types.h
+++ b/arch/mn10300/include/asm/types.h
diff --git a/include/asm-mn10300/uaccess.h b/arch/mn10300/include/asm/uaccess.h
index 8a3a4dd55763..8a3a4dd55763 100644
--- a/include/asm-mn10300/uaccess.h
+++ b/arch/mn10300/include/asm/uaccess.h
diff --git a/include/asm-mn10300/ucontext.h b/arch/mn10300/include/asm/ucontext.h
index fcab5c1d8e18..fcab5c1d8e18 100644
--- a/include/asm-mn10300/ucontext.h
+++ b/arch/mn10300/include/asm/ucontext.h
diff --git a/include/asm-mn10300/unaligned.h b/arch/mn10300/include/asm/unaligned.h
index 0df671318ae4..0df671318ae4 100644
--- a/include/asm-mn10300/unaligned.h
+++ b/arch/mn10300/include/asm/unaligned.h
diff --git a/include/asm-mn10300/unistd.h b/arch/mn10300/include/asm/unistd.h
index 543a4f98695d..543a4f98695d 100644
--- a/include/asm-mn10300/unistd.h
+++ b/arch/mn10300/include/asm/unistd.h
diff --git a/include/asm-mn10300/user.h b/arch/mn10300/include/asm/user.h
index e1193908b78c..e1193908b78c 100644
--- a/include/asm-mn10300/user.h
+++ b/arch/mn10300/include/asm/user.h
diff --git a/include/asm-mn10300/vga.h b/arch/mn10300/include/asm/vga.h
index 0163e50a3459..0163e50a3459 100644
--- a/include/asm-mn10300/vga.h
+++ b/arch/mn10300/include/asm/vga.h
diff --git a/arch/mn10300/include/asm/xor.h b/arch/mn10300/include/asm/xor.h
new file mode 100644
index 000000000000..c82eb12a5b18
--- /dev/null
+++ b/arch/mn10300/include/asm/xor.h
@@ -0,0 +1 @@
#include <asm-generic/xor.h>
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index ceeaaaa359e2..34ab5a293153 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -20,7 +20,7 @@
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/busctl-regs.h> 21#include <asm/busctl-regs.h>
22#include <asm/timer-regs.h> 22#include <asm/timer-regs.h>
23#include <asm/unit/leds.h> 23#include <unit/leds.h>
24#include <asm/page.h> 24#include <asm/page.h>
25#include <asm/pgtable.h> 25#include <asm/pgtable.h>
26#include <asm/errno.h> 26#include <asm/errno.h>
diff --git a/arch/mn10300/kernel/gdb-io-serial-low.S b/arch/mn10300/kernel/gdb-io-serial-low.S
index c68dcd052201..4998b24f5d3a 100644
--- a/arch/mn10300/kernel/gdb-io-serial-low.S
+++ b/arch/mn10300/kernel/gdb-io-serial-low.S
@@ -18,7 +18,7 @@
18#include <asm/thread_info.h> 18#include <asm/thread_info.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22 22
23 .text 23 .text
24 24
diff --git a/arch/mn10300/kernel/gdb-io-serial.c b/arch/mn10300/kernel/gdb-io-serial.c
index 11584c51acd9..ae663dc717e9 100644
--- a/arch/mn10300/kernel/gdb-io-serial.c
+++ b/arch/mn10300/kernel/gdb-io-serial.c
@@ -22,7 +22,7 @@
22#include <asm/gdb-stub.h> 22#include <asm/gdb-stub.h>
23#include <asm/exceptions.h> 23#include <asm/exceptions.h>
24#include <asm/serial-regs.h> 24#include <asm/serial-regs.h>
25#include <asm/unit/serial.h> 25#include <unit/serial.h>
26 26
27/* 27/*
28 * initialise the GDB stub 28 * initialise the GDB stub
diff --git a/arch/mn10300/kernel/gdb-io-ttysm-low.S b/arch/mn10300/kernel/gdb-io-ttysm-low.S
index 677c7876307c..060b7cca735d 100644
--- a/arch/mn10300/kernel/gdb-io-ttysm-low.S
+++ b/arch/mn10300/kernel/gdb-io-ttysm-low.S
@@ -18,7 +18,7 @@
18#include <asm/cpu-regs.h> 18#include <asm/cpu-regs.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22#include "mn10300-serial.h" 22#include "mn10300-serial.h"
23 23
24 .text 24 .text
diff --git a/arch/mn10300/kernel/gdb-io-ttysm.c b/arch/mn10300/kernel/gdb-io-ttysm.c
index e94c25e8ca05..a560bbc3137d 100644
--- a/arch/mn10300/kernel/gdb-io-ttysm.c
+++ b/arch/mn10300/kernel/gdb-io-ttysm.c
@@ -20,7 +20,7 @@
20#include <asm/system.h> 20#include <asm/system.h>
21#include <asm/gdb-stub.h> 21#include <asm/gdb-stub.h>
22#include <asm/exceptions.h> 22#include <asm/exceptions.h>
23#include <asm/unit/clock.h> 23#include <unit/clock.h>
24#include "mn10300-serial.h" 24#include "mn10300-serial.h"
25 25
26#if defined(CONFIG_GDBSTUB_ON_TTYSM0) 26#if defined(CONFIG_GDBSTUB_ON_TTYSM0)
diff --git a/arch/mn10300/kernel/gdb-stub.c b/arch/mn10300/kernel/gdb-stub.c
index 0ea7482c1522..41b11706c8ed 100644
--- a/arch/mn10300/kernel/gdb-stub.c
+++ b/arch/mn10300/kernel/gdb-stub.c
@@ -136,8 +136,8 @@
136#include <asm/cacheflush.h> 136#include <asm/cacheflush.h>
137#include <asm/serial-regs.h> 137#include <asm/serial-regs.h>
138#include <asm/busctl-regs.h> 138#include <asm/busctl-regs.h>
139#include <asm/unit/leds.h> 139#include <unit/leds.h>
140#include <asm/unit/serial.h> 140#include <unit/serial.h>
141 141
142/* define to use F7F7 rather than FF which is subverted by JTAG debugger */ 142/* define to use F7F7 rather than FF which is subverted by JTAG debugger */
143#undef GDBSTUB_USE_F7F7_AS_BREAKPOINT 143#undef GDBSTUB_USE_F7F7_AS_BREAKPOINT
diff --git a/arch/mn10300/kernel/head.S b/arch/mn10300/kernel/head.S
index 606bd8c6758d..8a8309fbe3c4 100644
--- a/arch/mn10300/kernel/head.S
+++ b/arch/mn10300/kernel/head.S
@@ -17,7 +17,7 @@
17#include <asm/pgtable.h> 17#include <asm/pgtable.h>
18#include <asm/frame.inc> 18#include <asm/frame.inc>
19#include <asm/param.h> 19#include <asm/param.h>
20#include <asm/unit/serial.h> 20#include <unit/serial.h>
21 21
22 .section .text.head,"ax" 22 .section .text.head,"ax"
23 23
diff --git a/arch/mn10300/kernel/irq.c b/arch/mn10300/kernel/irq.c
index 50fdb5c16e0c..4c3c58ef5cda 100644
--- a/arch/mn10300/kernel/irq.c
+++ b/arch/mn10300/kernel/irq.c
@@ -140,7 +140,7 @@ void __init init_IRQ(void)
140 int irq; 140 int irq;
141 141
142 for (irq = 0; irq < NR_IRQS; irq++) 142 for (irq = 0; irq < NR_IRQS; irq++)
143 if (irq_desc[irq].chip == &no_irq_type) 143 if (irq_desc[irq].chip == &no_irq_chip)
144 /* due to the PIC latching interrupt requests, even 144 /* due to the PIC latching interrupt requests, even
145 * when the IRQ is disabled, IRQ_PENDING is superfluous 145 * when the IRQ is disabled, IRQ_PENDING is superfluous
146 * and we can use handle_level_irq() for edge-triggered 146 * and we can use handle_level_irq() for edge-triggered
diff --git a/arch/mn10300/kernel/mn10300-serial-low.S b/arch/mn10300/kernel/mn10300-serial-low.S
index ef3f4c1df2a4..224485388228 100644
--- a/arch/mn10300/kernel/mn10300-serial-low.S
+++ b/arch/mn10300/kernel/mn10300-serial-low.S
@@ -18,8 +18,8 @@
18#include <asm/cpu-regs.h> 18#include <asm/cpu-regs.h>
19#include <asm/frame.inc> 19#include <asm/frame.inc>
20#include <asm/timer-regs.h> 20#include <asm/timer-regs.h>
21#include <asm/proc/cache.h> 21#include <proc/cache.h>
22#include <asm/unit/timex.h> 22#include <unit/timex.h>
23#include "mn10300-serial.h" 23#include "mn10300-serial.h"
24 24
25#define SCxCTR 0x00 25#define SCxCTR 0x00
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c
index 59b9c4bf9583..2fd59664d00a 100644
--- a/arch/mn10300/kernel/mn10300-serial.c
+++ b/arch/mn10300/kernel/mn10300-serial.c
@@ -41,7 +41,7 @@ static const char serial_revdate[] = "2007-11-06";
41#include <asm/irq.h> 41#include <asm/irq.h>
42#include <asm/bitops.h> 42#include <asm/bitops.h>
43#include <asm/serial-regs.h> 43#include <asm/serial-regs.h>
44#include <asm/unit/timex.h> 44#include <unit/timex.h>
45#include "mn10300-serial.h" 45#include "mn10300-serial.h"
46 46
47static inline __attribute__((format(printf, 1, 2))) 47static inline __attribute__((format(printf, 1, 2)))
diff --git a/arch/mn10300/kernel/mn10300-watchdog.c b/arch/mn10300/kernel/mn10300-watchdog.c
index 2e370d88a87a..f362d9d138f1 100644
--- a/arch/mn10300/kernel/mn10300-watchdog.c
+++ b/arch/mn10300/kernel/mn10300-watchdog.c
@@ -25,7 +25,7 @@
25#include <asm/div64.h> 25#include <asm/div64.h>
26#include <asm/smp.h> 26#include <asm/smp.h>
27#include <asm/gdb-stub.h> 27#include <asm/gdb-stub.h>
28#include <asm/proc/clock.h> 28#include <proc/clock.h>
29 29
30static DEFINE_SPINLOCK(watchdog_print_lock); 30static DEFINE_SPINLOCK(watchdog_print_lock);
31static unsigned int watchdog; 31static unsigned int watchdog;
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c
index e1d88ab51008..71414e19fd16 100644
--- a/arch/mn10300/kernel/setup.c
+++ b/arch/mn10300/kernel/setup.c
@@ -30,7 +30,7 @@
30#include <asm/setup.h> 30#include <asm/setup.h>
31#include <asm/io.h> 31#include <asm/io.h>
32#include <asm/smp.h> 32#include <asm/smp.h>
33#include <asm/proc/proc.h> 33#include <proc/proc.h>
34#include <asm/busctl-regs.h> 34#include <asm/busctl-regs.h>
35#include <asm/fpu.h> 35#include <asm/fpu.h>
36#include <asm/sections.h> 36#include <asm/sections.h>
diff --git a/arch/mn10300/kernel/traps.c b/arch/mn10300/kernel/traps.c
index fcb9a03d46a8..681ad8c9e4fb 100644
--- a/arch/mn10300/kernel/traps.c
+++ b/arch/mn10300/kernel/traps.c
@@ -37,7 +37,7 @@
37#include <asm/cacheflush.h> 37#include <asm/cacheflush.h>
38#include <asm/cpu-regs.h> 38#include <asm/cpu-regs.h>
39#include <asm/busctl-regs.h> 39#include <asm/busctl-regs.h>
40#include <asm/unit/leds.h> 40#include <unit/leds.h>
41#include <asm/fpu.h> 41#include <asm/fpu.h>
42#include <asm/gdb-stub.h> 42#include <asm/gdb-stub.h>
43#include <asm/sections.h> 43#include <asm/sections.h>
diff --git a/arch/mn10300/oprofile/Kconfig b/arch/mn10300/oprofile/Kconfig
deleted file mode 100644
index 19d37730b664..000000000000
--- a/arch/mn10300/oprofile/Kconfig
+++ /dev/null
@@ -1,23 +0,0 @@
1
2menu "Profiling support"
3 depends on EXPERIMENTAL
4
5config PROFILING
6 bool "Profiling support (EXPERIMENTAL)"
7 help
8 Say Y here to enable the extended profiling support mechanisms used
9 by profilers such as OProfile.
10
11
12config OPROFILE
13 tristate "OProfile system profiling (EXPERIMENTAL)"
14 depends on PROFILING
15 help
16 OProfile is a profiling system capable of profiling the
17 whole system, include the kernel, kernel modules, libraries,
18 and applications.
19
20 If unsure, say N.
21
22endmenu
23
diff --git a/include/asm-mn10300/proc-mn103e010/cache.h b/arch/mn10300/proc-mn103e010/include/proc/cache.h
index bdc1f9a59b4c..bdc1f9a59b4c 100644
--- a/include/asm-mn10300/proc-mn103e010/cache.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/cache.h
diff --git a/include/asm-mn10300/proc-mn103e010/clock.h b/arch/mn10300/proc-mn103e010/include/proc/clock.h
index caf998350633..aa23e147d620 100644
--- a/include/asm-mn10300/proc-mn103e010/clock.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/clock.h
@@ -11,7 +11,7 @@
11#ifndef _ASM_PROC_CLOCK_H 11#ifndef _ASM_PROC_CLOCK_H
12#define _ASM_PROC_CLOCK_H 12#define _ASM_PROC_CLOCK_H
13 13
14#include <asm/unit/clock.h> 14#include <unit/clock.h>
15 15
16#define MN10300_WDCLK MN10300_IOCLK 16#define MN10300_WDCLK MN10300_IOCLK
17 17
diff --git a/include/asm-mn10300/proc-mn103e010/irq.h b/arch/mn10300/proc-mn103e010/include/proc/irq.h
index aa6ee8f98b1b..aa6ee8f98b1b 100644
--- a/include/asm-mn10300/proc-mn103e010/irq.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/irq.h
diff --git a/include/asm-mn10300/proc-mn103e010/proc.h b/arch/mn10300/proc-mn103e010/include/proc/proc.h
index 22a2b93f70b7..22a2b93f70b7 100644
--- a/include/asm-mn10300/proc-mn103e010/proc.h
+++ b/arch/mn10300/proc-mn103e010/include/proc/proc.h
diff --git a/include/asm-mn10300/unit-asb2303/clock.h b/arch/mn10300/unit-asb2303/include/unit/clock.h
index 8b450e920af1..8b450e920af1 100644
--- a/include/asm-mn10300/unit-asb2303/clock.h
+++ b/arch/mn10300/unit-asb2303/include/unit/clock.h
diff --git a/include/asm-mn10300/unit-asb2303/leds.h b/arch/mn10300/unit-asb2303/include/unit/leds.h
index 3a7543ea7b5c..3a7543ea7b5c 100644
--- a/include/asm-mn10300/unit-asb2303/leds.h
+++ b/arch/mn10300/unit-asb2303/include/unit/leds.h
diff --git a/include/asm-mn10300/unit-asb2303/serial.h b/arch/mn10300/unit-asb2303/include/unit/serial.h
index 0d55cf5896ac..047566cd2e36 100644
--- a/include/asm-mn10300/unit-asb2303/serial.h
+++ b/arch/mn10300/unit-asb2303/include/unit/serial.h
@@ -13,7 +13,7 @@
13#define _ASM_UNIT_SERIAL_H 13#define _ASM_UNIT_SERIAL_H
14 14
15#include <asm/cpu-regs.h> 15#include <asm/cpu-regs.h>
16#include <asm/proc/irq.h> 16#include <proc/irq.h>
17#include <linux/serial_reg.h> 17#include <linux/serial_reg.h>
18 18
19#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000 19#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000
diff --git a/include/asm-mn10300/unit-asb2303/smc91111.h b/arch/mn10300/unit-asb2303/include/unit/smc91111.h
index dd456e9c513f..dd456e9c513f 100644
--- a/include/asm-mn10300/unit-asb2303/smc91111.h
+++ b/arch/mn10300/unit-asb2303/include/unit/smc91111.h
diff --git a/include/asm-mn10300/unit-asb2303/timex.h b/arch/mn10300/unit-asb2303/include/unit/timex.h
index 7e54b0cfdd03..f206b63c95b4 100644
--- a/include/asm-mn10300/unit-asb2303/timex.h
+++ b/arch/mn10300/unit-asb2303/include/unit/timex.h
@@ -16,7 +16,7 @@
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/timer-regs.h> 18#include <asm/timer-regs.h>
19#include <asm/unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
22 * jiffies counter specifications 22 * jiffies counter specifications
diff --git a/arch/mn10300/unit-asb2303/leds.c b/arch/mn10300/unit-asb2303/leds.c
index cd4bc78ccfc8..c03839357a14 100644
--- a/arch/mn10300/unit-asb2303/leds.c
+++ b/arch/mn10300/unit-asb2303/leds.c
@@ -16,7 +16,7 @@
16#include <asm/processor.h> 16#include <asm/processor.h>
17#include <asm/intctl-regs.h> 17#include <asm/intctl-regs.h>
18#include <asm/rtc-regs.h> 18#include <asm/rtc-regs.h>
19#include <asm/unit/leds.h> 19#include <unit/leds.h>
20 20
21#if 0 21#if 0
22static const u8 asb2303_led_hex_tbl[16] = { 22static const u8 asb2303_led_hex_tbl[16] = {
diff --git a/arch/mn10300/unit-asb2303/smc91111.c b/arch/mn10300/unit-asb2303/smc91111.c
index 30875dd65631..43c246439413 100644
--- a/arch/mn10300/unit-asb2303/smc91111.c
+++ b/arch/mn10300/unit-asb2303/smc91111.c
@@ -18,7 +18,7 @@
18#include <asm/timex.h> 18#include <asm/timex.h>
19#include <asm/processor.h> 19#include <asm/processor.h>
20#include <asm/intctl-regs.h> 20#include <asm/intctl-regs.h>
21#include <asm/unit/smc91111.h> 21#include <unit/smc91111.h>
22 22
23static struct resource smc91c111_resources[] = { 23static struct resource smc91c111_resources[] = {
24 [0] = { 24 [0] = {
diff --git a/include/asm-mn10300/unit-asb2305/clock.h b/arch/mn10300/unit-asb2305/include/unit/clock.h
index 7d514841ffda..7d514841ffda 100644
--- a/include/asm-mn10300/unit-asb2305/clock.h
+++ b/arch/mn10300/unit-asb2305/include/unit/clock.h
diff --git a/include/asm-mn10300/unit-asb2305/leds.h b/arch/mn10300/unit-asb2305/include/unit/leds.h
index bc471f617fd1..bc471f617fd1 100644
--- a/include/asm-mn10300/unit-asb2305/leds.h
+++ b/arch/mn10300/unit-asb2305/include/unit/leds.h
diff --git a/include/asm-mn10300/unit-asb2305/serial.h b/arch/mn10300/unit-asb2305/include/unit/serial.h
index 73d31d67bb71..3bfc90938787 100644
--- a/include/asm-mn10300/unit-asb2305/serial.h
+++ b/arch/mn10300/unit-asb2305/include/unit/serial.h
@@ -12,7 +12,7 @@
12#define _ASM_UNIT_SERIAL_H 12#define _ASM_UNIT_SERIAL_H
13 13
14#include <asm/cpu/cpu-regs.h> 14#include <asm/cpu/cpu-regs.h>
15#include <asm/proc/irq.h> 15#include <proc/irq.h>
16#include <linux/serial_reg.h> 16#include <linux/serial_reg.h>
17 17
18#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000 18#define SERIAL_PORT0_BASE_ADDRESS 0xA6FB0000
diff --git a/include/asm-mn10300/unit-asb2305/timex.h b/arch/mn10300/unit-asb2305/include/unit/timex.h
index 10e1bfe34463..a71c49aa85eb 100644
--- a/include/asm-mn10300/unit-asb2305/timex.h
+++ b/arch/mn10300/unit-asb2305/include/unit/timex.h
@@ -16,7 +16,7 @@
16#endif /* __ASSEMBLY__ */ 16#endif /* __ASSEMBLY__ */
17 17
18#include <asm/cpu/timer-regs.h> 18#include <asm/cpu/timer-regs.h>
19#include <asm/unit/clock.h> 19#include <unit/clock.h>
20 20
21/* 21/*
22 * jiffies counter specifications 22 * jiffies counter specifications
diff --git a/arch/mn10300/unit-asb2305/leds.c b/arch/mn10300/unit-asb2305/leds.c
index e99dcc9cee1a..d345ff9042d5 100644
--- a/arch/mn10300/unit-asb2305/leds.c
+++ b/arch/mn10300/unit-asb2305/leds.c
@@ -15,7 +15,7 @@
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/cpu/intctl-regs.h> 16#include <asm/cpu/intctl-regs.h>
17#include <asm/cpu/rtc-regs.h> 17#include <asm/cpu/rtc-regs.h>
18#include <asm/unit/leds.h> 18#include <unit/leds.h>
19 19
20static const u8 asb2305_led_hex_tbl[16] = { 20static const u8 asb2305_led_hex_tbl[16] = {
21 0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0, 21 0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0,
diff --git a/arch/mn10300/unit-asb2305/unit-init.c b/arch/mn10300/unit-asb2305/unit-init.c
index 72812a9439ac..1c452cc3f6e9 100644
--- a/arch/mn10300/unit-asb2305/unit-init.c
+++ b/arch/mn10300/unit-asb2305/unit-init.c
@@ -18,7 +18,7 @@
18#include <asm/cpu/intctl-regs.h> 18#include <asm/cpu/intctl-regs.h>
19#include <asm/cpu/rtc-regs.h> 19#include <asm/cpu/rtc-regs.h>
20#include <asm/cpu/serial-regs.h> 20#include <asm/cpu/serial-regs.h>
21#include <asm/unit/serial.h> 21#include <unit/serial.h>
22 22
23/* 23/*
24 * initialise some of the unit hardware before gdbstub is set up 24 * initialise some of the unit hardware before gdbstub is set up
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index dcb667c4375a..2eca5fe0e75b 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -82,6 +82,7 @@ config S390
82 select USE_GENERIC_SMP_HELPERS if SMP 82 select USE_GENERIC_SMP_HELPERS if SMP
83 select HAVE_SYSCALL_WRAPPERS 83 select HAVE_SYSCALL_WRAPPERS
84 select HAVE_FUNCTION_TRACER 84 select HAVE_FUNCTION_TRACER
85 select HAVE_DEFAULT_NO_SPIN_MUTEXES
85 select HAVE_OPROFILE 86 select HAVE_OPROFILE
86 select HAVE_KPROBES 87 select HAVE_KPROBES
87 select HAVE_KRETPROBES 88 select HAVE_KRETPROBES
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h
index 031f038b19f7..b8eb71ef3163 100644
--- a/arch/sparc/include/asm/unistd.h
+++ b/arch/sparc/include/asm/unistd.h
@@ -392,8 +392,10 @@
392#define __NR_pipe2 321 392#define __NR_pipe2 321
393#define __NR_inotify_init1 322 393#define __NR_inotify_init1 322
394#define __NR_accept4 323 394#define __NR_accept4 323
395#define __NR_preadv 324
396#define __NR_pwritev 325
395 397
396#define NR_SYSCALLS 324 398#define NR_SYSCALLS 326
397 399
398#ifdef __32bit_syscall_numbers__ 400#ifdef __32bit_syscall_numbers__
399/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, 401/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c
index b4a12c9aa5f8..27381f1baffc 100644
--- a/arch/sparc/kernel/of_device_64.c
+++ b/arch/sparc/kernel/of_device_64.c
@@ -99,8 +99,7 @@ static inline u64 of_read_addr(const u32 *cell, int size)
99 return r; 99 return r;
100} 100}
101 101
102static void __init get_cells(struct device_node *dp, 102static void get_cells(struct device_node *dp, int *addrc, int *sizec)
103 int *addrc, int *sizec)
104{ 103{
105 if (addrc) 104 if (addrc)
106 *addrc = of_n_addr_cells(dp); 105 *addrc = of_n_addr_cells(dp);
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index 9462b68f4894..d53f45bc7dda 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -409,8 +409,8 @@ static void pci_fire_hw_init(struct pci_pbm_info *pbm)
409 upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB); 409 upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB);
410} 410}
411 411
412static int __init pci_fire_pbm_init(struct pci_pbm_info *pbm, 412static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm,
413 struct of_device *op, u32 portid) 413 struct of_device *op, u32 portid)
414{ 414{
415 const struct linux_prom64_registers *regs; 415 const struct linux_prom64_registers *regs;
416 struct device_node *dp = op->node; 416 struct device_node *dp = op->node;
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c
index 3b34344082ef..142b9d6984a8 100644
--- a/arch/sparc/kernel/pci_psycho.c
+++ b/arch/sparc/kernel/pci_psycho.c
@@ -365,8 +365,8 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm)
365 pci_config_write8(addr, 64); 365 pci_config_write8(addr, 64);
366} 366}
367 367
368static void __init psycho_scan_bus(struct pci_pbm_info *pbm, 368static void __devinit psycho_scan_bus(struct pci_pbm_info *pbm,
369 struct device *parent) 369 struct device *parent)
370{ 370{
371 pbm_config_busmastering(pbm); 371 pbm_config_busmastering(pbm);
372 pbm->is_66mhz_capable = 0; 372 pbm->is_66mhz_capable = 0;
@@ -482,8 +482,8 @@ static void psycho_pbm_strbuf_init(struct pci_pbm_info *pbm,
482#define PSYCHO_MEMSPACE_B 0x180000000UL 482#define PSYCHO_MEMSPACE_B 0x180000000UL
483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL 483#define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL
484 484
485static void __init psycho_pbm_init(struct pci_pbm_info *pbm, 485static void __devinit psycho_pbm_init(struct pci_pbm_info *pbm,
486 struct of_device *op, int is_pbm_a) 486 struct of_device *op, int is_pbm_a)
487{ 487{
488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO); 488 psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO);
489 psycho_pbm_strbuf_init(pbm, is_pbm_a); 489 psycho_pbm_strbuf_init(pbm, is_pbm_a);
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c
index 713257b6963c..ba6fbeba3e2c 100644
--- a/arch/sparc/kernel/pci_sabre.c
+++ b/arch/sparc/kernel/pci_sabre.c
@@ -402,8 +402,8 @@ static void apb_init(struct pci_bus *sabre_bus)
402 } 402 }
403} 403}
404 404
405static void __init sabre_scan_bus(struct pci_pbm_info *pbm, 405static void __devinit sabre_scan_bus(struct pci_pbm_info *pbm,
406 struct device *parent) 406 struct device *parent)
407{ 407{
408 static int once; 408 static int once;
409 409
@@ -442,8 +442,8 @@ static void __init sabre_scan_bus(struct pci_pbm_info *pbm,
442 sabre_register_error_handlers(pbm); 442 sabre_register_error_handlers(pbm);
443} 443}
444 444
445static void __init sabre_pbm_init(struct pci_pbm_info *pbm, 445static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm,
446 struct of_device *op) 446 struct of_device *op)
447{ 447{
448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE); 448 psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE);
449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR; 449 pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR;
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index 0ef0ab3d4763..5db5ebed35da 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -545,8 +545,8 @@ static const struct dma_ops sun4v_dma_ops = {
545 .sync_sg_for_cpu = dma_4v_sync_sg_for_cpu, 545 .sync_sg_for_cpu = dma_4v_sync_sg_for_cpu,
546}; 546};
547 547
548static void __init pci_sun4v_scan_bus(struct pci_pbm_info *pbm, 548static void __devinit pci_sun4v_scan_bus(struct pci_pbm_info *pbm,
549 struct device *parent) 549 struct device *parent)
550{ 550{
551 struct property *prop; 551 struct property *prop;
552 struct device_node *dp; 552 struct device_node *dp;
@@ -559,8 +559,8 @@ static void __init pci_sun4v_scan_bus(struct pci_pbm_info *pbm,
559 /* XXX register error interrupt handlers XXX */ 559 /* XXX register error interrupt handlers XXX */
560} 560}
561 561
562static unsigned long __init probe_existing_entries(struct pci_pbm_info *pbm, 562static unsigned long __devinit probe_existing_entries(struct pci_pbm_info *pbm,
563 struct iommu *iommu) 563 struct iommu *iommu)
564{ 564{
565 struct iommu_arena *arena = &iommu->arena; 565 struct iommu_arena *arena = &iommu->arena;
566 unsigned long i, cnt = 0; 566 unsigned long i, cnt = 0;
@@ -587,7 +587,7 @@ static unsigned long __init probe_existing_entries(struct pci_pbm_info *pbm,
587 return cnt; 587 return cnt;
588} 588}
589 589
590static int __init pci_sun4v_iommu_init(struct pci_pbm_info *pbm) 590static int __devinit pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
591{ 591{
592 static const u32 vdma_default[] = { 0x80000000, 0x80000000 }; 592 static const u32 vdma_default[] = { 0x80000000, 0x80000000 };
593 struct iommu *iommu = pbm->iommu; 593 struct iommu *iommu = pbm->iommu;
@@ -889,8 +889,8 @@ static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
889} 889}
890#endif /* !(CONFIG_PCI_MSI) */ 890#endif /* !(CONFIG_PCI_MSI) */
891 891
892static int __init pci_sun4v_pbm_init(struct pci_pbm_info *pbm, 892static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm,
893 struct of_device *op, u32 devhandle) 893 struct of_device *op, u32 devhandle)
894{ 894{
895 struct device_node *dp = op->node; 895 struct device_node *dp = op->node;
896 int err; 896 int err;
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c
index ae88f06a7ec4..e2a045c235a1 100644
--- a/arch/sparc/kernel/power.c
+++ b/arch/sparc/kernel/power.c
@@ -23,7 +23,7 @@ static irqreturn_t power_handler(int irq, void *dev_id)
23 return IRQ_HANDLED; 23 return IRQ_HANDLED;
24} 24}
25 25
26static int __init has_button_interrupt(unsigned int irq, struct device_node *dp) 26static int __devinit has_button_interrupt(unsigned int irq, struct device_node *dp)
27{ 27{
28 if (irq == 0xffffffff) 28 if (irq == 0xffffffff)
29 return 0; 29 return 0;
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S
index dccc95df0c7f..00ec3b15f38c 100644
--- a/arch/sparc/kernel/systbls_32.S
+++ b/arch/sparc/kernel/systbls_32.S
@@ -81,4 +81,4 @@ sys_call_table:
81/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait 81/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 82/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 83/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 84/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv, sys_pwritev
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index a8000b1cda74..82b5bf85b9d2 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -82,7 +82,7 @@ sys_call_table32:
82 .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait 82 .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate 83/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 84 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 85/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv, compat_sys_pwritev
86 86
87#endif /* CONFIG_COMPAT */ 87#endif /* CONFIG_COMPAT */
88 88
@@ -156,4 +156,4 @@ sys_call_table:
156 .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait 156 .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
157/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate 157/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
158 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 158 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
159/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 159/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv, sys_pwritev
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 2c8dfeb7ab04..f26a352c08a0 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -70,8 +70,8 @@ extern struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES];
70 70
71#define MAX_BANKS 32 71#define MAX_BANKS 32
72 72
73static struct linux_prom64_registers pavail[MAX_BANKS] __initdata; 73static struct linux_prom64_registers pavail[MAX_BANKS] __devinitdata;
74static int pavail_ents __initdata; 74static int pavail_ents __devinitdata;
75 75
76static int cmp_p64(const void *a, const void *b) 76static int cmp_p64(const void *a, const void *b)
77{ 77{
@@ -968,7 +968,7 @@ int of_node_to_nid(struct device_node *dp)
968 return nid; 968 return nid;
969} 969}
970 970
971static void add_node_ranges(void) 971static void __init add_node_ranges(void)
972{ 972{
973 int i; 973 int i;
974 974
@@ -1841,7 +1841,7 @@ void __init paging_init(void)
1841 printk("Booting Linux...\n"); 1841 printk("Booting Linux...\n");
1842} 1842}
1843 1843
1844int __init page_in_phys_avail(unsigned long paddr) 1844int __devinit page_in_phys_avail(unsigned long paddr)
1845{ 1845{
1846 int i; 1846 int i;
1847 1847
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 4b3408206091..bc25b9f5e4cd 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -252,17 +252,13 @@ config SMP
252 252
253config X86_X2APIC 253config X86_X2APIC
254 bool "Support x2apic" 254 bool "Support x2apic"
255 depends on X86_LOCAL_APIC && X86_64 255 depends on X86_LOCAL_APIC && X86_64 && INTR_REMAP
256 select INTR_REMAP
257 ---help--- 256 ---help---
258 This enables x2apic support on CPUs that have this feature. 257 This enables x2apic support on CPUs that have this feature.
259 258
260 This allows 32-bit apic IDs (so it can support very large systems), 259 This allows 32-bit apic IDs (so it can support very large systems),
261 and accesses the local apic via MSRs not via mmio. 260 and accesses the local apic via MSRs not via mmio.
262 261
263 ( On certain CPU models you may need to enable INTR_REMAP too,
264 to get functional x2apic mode. )
265
266 If you don't know what to do here, say N. 262 If you don't know what to do here, say N.
267 263
268config SPARSE_IRQ 264config SPARSE_IRQ
diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c
index 95d86ce0421c..9e0587a37768 100644
--- a/arch/x86/boot/video-vga.c
+++ b/arch/x86/boot/video-vga.c
@@ -129,22 +129,18 @@ u16 vga_crtc(void)
129 return (inb(0x3cc) & 1) ? 0x3d4 : 0x3b4; 129 return (inb(0x3cc) & 1) ? 0x3d4 : 0x3b4;
130} 130}
131 131
132static void vga_set_480_scanlines(int lines) 132static void vga_set_480_scanlines(void)
133{ 133{
134 u16 crtc; /* CRTC base address */ 134 u16 crtc; /* CRTC base address */
135 u8 csel; /* CRTC miscellaneous output register */ 135 u8 csel; /* CRTC miscellaneous output register */
136 u8 ovfw; /* CRTC overflow register */
137 int end = lines-1;
138 136
139 crtc = vga_crtc(); 137 crtc = vga_crtc();
140 138
141 ovfw = 0x3c | ((end >> (8-1)) & 0x02) | ((end >> (9-6)) & 0x40);
142
143 out_idx(0x0c, crtc, 0x11); /* Vertical sync end, unlock CR0-7 */ 139 out_idx(0x0c, crtc, 0x11); /* Vertical sync end, unlock CR0-7 */
144 out_idx(0x0b, crtc, 0x06); /* Vertical total */ 140 out_idx(0x0b, crtc, 0x06); /* Vertical total */
145 out_idx(ovfw, crtc, 0x07); /* Vertical overflow */ 141 out_idx(0x3e, crtc, 0x07); /* Vertical overflow */
146 out_idx(0xea, crtc, 0x10); /* Vertical sync start */ 142 out_idx(0xea, crtc, 0x10); /* Vertical sync start */
147 out_idx(end, crtc, 0x12); /* Vertical display end */ 143 out_idx(0xdf, crtc, 0x12); /* Vertical display end */
148 out_idx(0xe7, crtc, 0x15); /* Vertical blank start */ 144 out_idx(0xe7, crtc, 0x15); /* Vertical blank start */
149 out_idx(0x04, crtc, 0x16); /* Vertical blank end */ 145 out_idx(0x04, crtc, 0x16); /* Vertical blank end */
150 csel = inb(0x3cc); 146 csel = inb(0x3cc);
@@ -153,21 +149,38 @@ static void vga_set_480_scanlines(int lines)
153 outb(csel, 0x3c2); 149 outb(csel, 0x3c2);
154} 150}
155 151
152static void vga_set_vertical_end(int lines)
153{
154 u16 crtc; /* CRTC base address */
155 u8 ovfw; /* CRTC overflow register */
156 int end = lines-1;
157
158 crtc = vga_crtc();
159
160 ovfw = 0x3c | ((end >> (8-1)) & 0x02) | ((end >> (9-6)) & 0x40);
161
162 out_idx(ovfw, crtc, 0x07); /* Vertical overflow */
163 out_idx(end, crtc, 0x12); /* Vertical display end */
164}
165
156static void vga_set_80x30(void) 166static void vga_set_80x30(void)
157{ 167{
158 vga_set_480_scanlines(30*16); 168 vga_set_480_scanlines();
169 vga_set_vertical_end(30*16);
159} 170}
160 171
161static void vga_set_80x34(void) 172static void vga_set_80x34(void)
162{ 173{
174 vga_set_480_scanlines();
163 vga_set_14font(); 175 vga_set_14font();
164 vga_set_480_scanlines(34*14); 176 vga_set_vertical_end(34*14);
165} 177}
166 178
167static void vga_set_80x60(void) 179static void vga_set_80x60(void)
168{ 180{
181 vga_set_480_scanlines();
169 vga_set_8font(); 182 vga_set_8font();
170 vga_set_480_scanlines(60*8); 183 vga_set_vertical_end(60*8);
171} 184}
172 185
173static int vga_set_mode(struct mode_info *mode) 186static int vga_set_mode(struct mode_info *mode)
diff --git a/arch/x86/include/asm/cpu_debug.h b/arch/x86/include/asm/cpu_debug.h
index 222802029fa6..222802029fa6 100755..100644
--- a/arch/x86/include/asm/cpu_debug.h
+++ b/arch/x86/include/asm/cpu_debug.h
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 0beba0d1468d..bb83b1c397aa 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -154,6 +154,7 @@
154 * CPUID levels like 0x6, 0xA etc 154 * CPUID levels like 0x6, 0xA etc
155 */ 155 */
156#define X86_FEATURE_IDA (7*32+ 0) /* Intel Dynamic Acceleration */ 156#define X86_FEATURE_IDA (7*32+ 0) /* Intel Dynamic Acceleration */
157#define X86_FEATURE_ARAT (7*32+ 1) /* Always Running APIC Timer */
157 158
158/* Virtualization flags: Linux defined */ 159/* Virtualization flags: Linux defined */
159#define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */ 160#define X86_FEATURE_TPR_SHADOW (8*32+ 0) /* Intel TPR Shadow */
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 81937a5dc77c..2d81af3974a0 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -151,11 +151,11 @@ extern pte_t *pkmap_page_table;
151 151
152void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); 152void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
153void native_set_fixmap(enum fixed_addresses idx, 153void native_set_fixmap(enum fixed_addresses idx,
154 unsigned long phys, pgprot_t flags); 154 phys_addr_t phys, pgprot_t flags);
155 155
156#ifndef CONFIG_PARAVIRT 156#ifndef CONFIG_PARAVIRT
157static inline void __set_fixmap(enum fixed_addresses idx, 157static inline void __set_fixmap(enum fixed_addresses idx,
158 unsigned long phys, pgprot_t flags) 158 phys_addr_t phys, pgprot_t flags)
159{ 159{
160 native_set_fixmap(idx, phys, flags); 160 native_set_fixmap(idx, phys, flags);
161} 161}
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index e5383e3d2f8c..73739322b6d0 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -193,8 +193,10 @@ extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
193 */ 193 */
194extern void early_ioremap_init(void); 194extern void early_ioremap_init(void);
195extern void early_ioremap_reset(void); 195extern void early_ioremap_reset(void);
196extern void __iomem *early_ioremap(unsigned long offset, unsigned long size); 196extern void __iomem *early_ioremap(resource_size_t phys_addr,
197extern void __iomem *early_memremap(unsigned long offset, unsigned long size); 197 unsigned long size);
198extern void __iomem *early_memremap(resource_size_t phys_addr,
199 unsigned long size);
198extern void early_iounmap(void __iomem *addr, unsigned long size); 200extern void early_iounmap(void __iomem *addr, unsigned long size);
199 201
200#define IO_SPACE_LIMIT 0xffff 202#define IO_SPACE_LIMIT 0xffff
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 7727aa8b7dda..378e3691c08c 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -347,7 +347,7 @@ struct pv_mmu_ops {
347 /* Sometimes the physical address is a pfn, and sometimes its 347 /* Sometimes the physical address is a pfn, and sometimes its
348 an mfn. We can tell which is which from the index. */ 348 an mfn. We can tell which is which from the index. */
349 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx, 349 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
350 unsigned long phys, pgprot_t flags); 350 phys_addr_t phys, pgprot_t flags);
351}; 351};
352 352
353struct raw_spinlock; 353struct raw_spinlock;
@@ -1432,7 +1432,7 @@ static inline void arch_leave_lazy_mmu_mode(void)
1432void arch_flush_lazy_mmu_mode(void); 1432void arch_flush_lazy_mmu_mode(void);
1433 1433
1434static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, 1434static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
1435 unsigned long phys, pgprot_t flags) 1435 phys_addr_t phys, pgprot_t flags)
1436{ 1436{
1437 pv_mmu_ops.set_fixmap(idx, phys, flags); 1437 pv_mmu_ops.set_fixmap(idx, phys, flags);
1438} 1438}
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 34c52370f2fe..fcf4d92e7e04 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -352,6 +352,11 @@ struct i387_soft_struct {
352 u32 entry_eip; 352 u32 entry_eip;
353}; 353};
354 354
355struct ymmh_struct {
356 /* 16 * 16 bytes for each YMMH-reg = 256 bytes */
357 u32 ymmh_space[64];
358};
359
355struct xsave_hdr_struct { 360struct xsave_hdr_struct {
356 u64 xstate_bv; 361 u64 xstate_bv;
357 u64 reserved1[2]; 362 u64 reserved1[2];
@@ -361,6 +366,7 @@ struct xsave_hdr_struct {
361struct xsave_struct { 366struct xsave_struct {
362 struct i387_fxsave_struct i387; 367 struct i387_fxsave_struct i387;
363 struct xsave_hdr_struct xsave_hdr; 368 struct xsave_hdr_struct xsave_hdr;
369 struct ymmh_struct ymmh;
364 /* new processor state extensions will go here */ 370 /* new processor state extensions will go here */
365} __attribute__ ((packed, aligned (64))); 371} __attribute__ ((packed, aligned (64)));
366 372
diff --git a/arch/x86/include/asm/sigcontext.h b/arch/x86/include/asm/sigcontext.h
index ec666491aaa4..72e5a4491661 100644
--- a/arch/x86/include/asm/sigcontext.h
+++ b/arch/x86/include/asm/sigcontext.h
@@ -269,6 +269,11 @@ struct _xsave_hdr {
269 __u64 reserved2[5]; 269 __u64 reserved2[5];
270}; 270};
271 271
272struct _ymmh_state {
273 /* 16 * 16 bytes for each YMMH-reg */
274 __u32 ymmh_space[64];
275};
276
272/* 277/*
273 * Extended state pointed by the fpstate pointer in the sigcontext. 278 * Extended state pointed by the fpstate pointer in the sigcontext.
274 * In addition to the fpstate, information encoded in the xstate_hdr 279 * In addition to the fpstate, information encoded in the xstate_hdr
@@ -278,6 +283,7 @@ struct _xsave_hdr {
278struct _xstate { 283struct _xstate {
279 struct _fpstate fpstate; 284 struct _fpstate fpstate;
280 struct _xsave_hdr xstate_hdr; 285 struct _xsave_hdr xstate_hdr;
286 struct _ymmh_state ymmh;
281 /* new processor state extensions go here */ 287 /* new processor state extensions go here */
282}; 288};
283 289
diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h
index 08e9a1ac07a9..727acc152344 100644
--- a/arch/x86/include/asm/xsave.h
+++ b/arch/x86/include/asm/xsave.h
@@ -7,6 +7,7 @@
7 7
8#define XSTATE_FP 0x1 8#define XSTATE_FP 0x1
9#define XSTATE_SSE 0x2 9#define XSTATE_SSE 0x2
10#define XSTATE_YMM 0x4
10 11
11#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE) 12#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE)
12 13
@@ -15,7 +16,7 @@
15/* 16/*
16 * These are the features that the OS can handle currently. 17 * These are the features that the OS can handle currently.
17 */ 18 */
18#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE) 19#define XCNTXT_MASK (XSTATE_FP | XSTATE_SSE | XSTATE_YMM)
19 20
20#ifdef CONFIG_X86_64 21#ifdef CONFIG_X86_64
21#define REX_PREFIX "0x48, " 22#define REX_PREFIX "0x48, "
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 098ec84b8c00..f2870920f246 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -431,6 +431,12 @@ static void __cpuinit setup_APIC_timer(void)
431{ 431{
432 struct clock_event_device *levt = &__get_cpu_var(lapic_events); 432 struct clock_event_device *levt = &__get_cpu_var(lapic_events);
433 433
434 if (cpu_has(&current_cpu_data, X86_FEATURE_ARAT)) {
435 lapic_clockevent.features &= ~CLOCK_EVT_FEAT_C3STOP;
436 /* Make LAPIC timer preferrable over percpu HPET */
437 lapic_clockevent.rating = 150;
438 }
439
434 memcpy(levt, &lapic_clockevent, sizeof(*levt)); 440 memcpy(levt, &lapic_clockevent, sizeof(*levt));
435 levt->cpumask = cpumask_of(smp_processor_id()); 441 levt->cpumask = cpumask_of(smp_processor_id());
436 442
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
index 0014714ea97b..306e5e88fb6f 100644
--- a/arch/x86/kernel/apic/apic_flat_64.c
+++ b/arch/x86/kernel/apic/apic_flat_64.c
@@ -212,7 +212,7 @@ struct apic apic_flat = {
212 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, 212 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH,
213 .wait_for_init_deassert = NULL, 213 .wait_for_init_deassert = NULL,
214 .smp_callin_clear_local_apic = NULL, 214 .smp_callin_clear_local_apic = NULL,
215 .inquire_remote_apic = NULL, 215 .inquire_remote_apic = default_inquire_remote_apic,
216 216
217 .read = native_apic_mem_read, 217 .read = native_apic_mem_read,
218 .write = native_apic_mem_write, 218 .write = native_apic_mem_write,
@@ -362,7 +362,7 @@ struct apic apic_physflat = {
362 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, 362 .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH,
363 .wait_for_init_deassert = NULL, 363 .wait_for_init_deassert = NULL,
364 .smp_callin_clear_local_apic = NULL, 364 .smp_callin_clear_local_apic = NULL,
365 .inquire_remote_apic = NULL, 365 .inquire_remote_apic = default_inquire_remote_apic,
366 366
367 .read = native_apic_mem_read, 367 .read = native_apic_mem_read,
368 .write = native_apic_mem_write, 368 .write = native_apic_mem_write,
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 767fe7e46d68..a2789e42e162 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2524,7 +2524,6 @@ static void irq_complete_move(struct irq_desc **descp)
2524static inline void irq_complete_move(struct irq_desc **descp) {} 2524static inline void irq_complete_move(struct irq_desc **descp) {}
2525#endif 2525#endif
2526 2526
2527#ifdef CONFIG_X86_X2APIC
2528static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg) 2527static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg)
2529{ 2528{
2530 int apic, pin; 2529 int apic, pin;
@@ -2558,6 +2557,7 @@ eoi_ioapic_irq(struct irq_desc *desc)
2558 spin_unlock_irqrestore(&ioapic_lock, flags); 2557 spin_unlock_irqrestore(&ioapic_lock, flags);
2559} 2558}
2560 2559
2560#ifdef CONFIG_X86_X2APIC
2561static void ack_x2apic_level(unsigned int irq) 2561static void ack_x2apic_level(unsigned int irq)
2562{ 2562{
2563 struct irq_desc *desc = irq_to_desc(irq); 2563 struct irq_desc *desc = irq_to_desc(irq);
@@ -2634,6 +2634,9 @@ static void ack_apic_level(unsigned int irq)
2634 */ 2634 */
2635 ack_APIC_irq(); 2635 ack_APIC_irq();
2636 2636
2637 if (irq_remapped(irq))
2638 eoi_ioapic_irq(desc);
2639
2637 /* Now we can move and renable the irq */ 2640 /* Now we can move and renable the irq */
2638 if (unlikely(do_unmask_irq)) { 2641 if (unlikely(do_unmask_irq)) {
2639 /* Only migrate the irq if the ack has been received. 2642 /* Only migrate the irq if the ack has been received.
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c
index 8220ae69849d..c965e5212714 100644
--- a/arch/x86/kernel/cpu/addon_cpuid_features.c
+++ b/arch/x86/kernel/cpu/addon_cpuid_features.c
@@ -31,6 +31,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
31 31
32 static const struct cpuid_bit __cpuinitconst cpuid_bits[] = { 32 static const struct cpuid_bit __cpuinitconst cpuid_bits[] = {
33 { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 }, 33 { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 },
34 { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006 },
34 { 0, 0, 0, 0 } 35 { 0, 0, 0, 0 }
35 }; 36 };
36 37
diff --git a/arch/x86/kernel/cpu/cpu_debug.c b/arch/x86/kernel/cpu/cpu_debug.c
index 46e29ab96c6a..46e29ab96c6a 100755..100644
--- a/arch/x86/kernel/cpu/cpu_debug.c
+++ b/arch/x86/kernel/cpu/cpu_debug.c
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 19f6b9d27e83..3e3cd3db7a0c 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -68,6 +68,7 @@ struct acpi_cpufreq_data {
68 unsigned int max_freq; 68 unsigned int max_freq;
69 unsigned int resume; 69 unsigned int resume;
70 unsigned int cpu_feature; 70 unsigned int cpu_feature;
71 u64 saved_aperf, saved_mperf;
71}; 72};
72 73
73static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data); 74static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data);
@@ -152,7 +153,8 @@ struct drv_cmd {
152 u32 val; 153 u32 val;
153}; 154};
154 155
155static long do_drv_read(void *_cmd) 156/* Called via smp_call_function_single(), on the target CPU */
157static void do_drv_read(void *_cmd)
156{ 158{
157 struct drv_cmd *cmd = _cmd; 159 struct drv_cmd *cmd = _cmd;
158 u32 h; 160 u32 h;
@@ -169,10 +171,10 @@ static long do_drv_read(void *_cmd)
169 default: 171 default:
170 break; 172 break;
171 } 173 }
172 return 0;
173} 174}
174 175
175static long do_drv_write(void *_cmd) 176/* Called via smp_call_function_many(), on the target CPUs */
177static void do_drv_write(void *_cmd)
176{ 178{
177 struct drv_cmd *cmd = _cmd; 179 struct drv_cmd *cmd = _cmd;
178 u32 lo, hi; 180 u32 lo, hi;
@@ -191,23 +193,18 @@ static long do_drv_write(void *_cmd)
191 default: 193 default:
192 break; 194 break;
193 } 195 }
194 return 0;
195} 196}
196 197
197static void drv_read(struct drv_cmd *cmd) 198static void drv_read(struct drv_cmd *cmd)
198{ 199{
199 cmd->val = 0; 200 cmd->val = 0;
200 201
201 work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd); 202 smp_call_function_single(cpumask_any(cmd->mask), do_drv_read, cmd, 1);
202} 203}
203 204
204static void drv_write(struct drv_cmd *cmd) 205static void drv_write(struct drv_cmd *cmd)
205{ 206{
206 unsigned int i; 207 smp_call_function_many(cmd->mask, do_drv_write, cmd, 1);
207
208 for_each_cpu(i, cmd->mask) {
209 work_on_cpu(i, do_drv_write, cmd);
210 }
211} 208}
212 209
213static u32 get_cur_val(const struct cpumask *mask) 210static u32 get_cur_val(const struct cpumask *mask)
@@ -241,28 +238,23 @@ static u32 get_cur_val(const struct cpumask *mask)
241 return cmd.val; 238 return cmd.val;
242} 239}
243 240
244struct perf_cur { 241struct perf_pair {
245 union { 242 union {
246 struct { 243 struct {
247 u32 lo; 244 u32 lo;
248 u32 hi; 245 u32 hi;
249 } split; 246 } split;
250 u64 whole; 247 u64 whole;
251 } aperf_cur, mperf_cur; 248 } aperf, mperf;
252}; 249};
253 250
254 251/* Called via smp_call_function_single(), on the target CPU */
255static long read_measured_perf_ctrs(void *_cur) 252static void read_measured_perf_ctrs(void *_cur)
256{ 253{
257 struct perf_cur *cur = _cur; 254 struct perf_pair *cur = _cur;
258
259 rdmsr(MSR_IA32_APERF, cur->aperf_cur.split.lo, cur->aperf_cur.split.hi);
260 rdmsr(MSR_IA32_MPERF, cur->mperf_cur.split.lo, cur->mperf_cur.split.hi);
261
262 wrmsr(MSR_IA32_APERF, 0, 0);
263 wrmsr(MSR_IA32_MPERF, 0, 0);
264 255
265 return 0; 256 rdmsr(MSR_IA32_APERF, cur->aperf.split.lo, cur->aperf.split.hi);
257 rdmsr(MSR_IA32_MPERF, cur->mperf.split.lo, cur->mperf.split.hi);
266} 258}
267 259
268/* 260/*
@@ -281,52 +273,57 @@ static long read_measured_perf_ctrs(void *_cur)
281static unsigned int get_measured_perf(struct cpufreq_policy *policy, 273static unsigned int get_measured_perf(struct cpufreq_policy *policy,
282 unsigned int cpu) 274 unsigned int cpu)
283{ 275{
284 struct perf_cur cur; 276 struct perf_pair readin, cur;
285 unsigned int perf_percent; 277 unsigned int perf_percent;
286 unsigned int retval; 278 unsigned int retval;
287 279
288 if (!work_on_cpu(cpu, read_measured_perf_ctrs, &cur)) 280 if (smp_call_function_single(cpu, read_measured_perf_ctrs, &cur, 1))
289 return 0; 281 return 0;
290 282
283 cur.aperf.whole = readin.aperf.whole -
284 per_cpu(drv_data, cpu)->saved_aperf;
285 cur.mperf.whole = readin.mperf.whole -
286 per_cpu(drv_data, cpu)->saved_mperf;
287 per_cpu(drv_data, cpu)->saved_aperf = readin.aperf.whole;
288 per_cpu(drv_data, cpu)->saved_mperf = readin.mperf.whole;
289
291#ifdef __i386__ 290#ifdef __i386__
292 /* 291 /*
293 * We dont want to do 64 bit divide with 32 bit kernel 292 * We dont want to do 64 bit divide with 32 bit kernel
294 * Get an approximate value. Return failure in case we cannot get 293 * Get an approximate value. Return failure in case we cannot get
295 * an approximate value. 294 * an approximate value.
296 */ 295 */
297 if (unlikely(cur.aperf_cur.split.hi || cur.mperf_cur.split.hi)) { 296 if (unlikely(cur.aperf.split.hi || cur.mperf.split.hi)) {
298 int shift_count; 297 int shift_count;
299 u32 h; 298 u32 h;
300 299
301 h = max_t(u32, cur.aperf_cur.split.hi, cur.mperf_cur.split.hi); 300 h = max_t(u32, cur.aperf.split.hi, cur.mperf.split.hi);
302 shift_count = fls(h); 301 shift_count = fls(h);
303 302
304 cur.aperf_cur.whole >>= shift_count; 303 cur.aperf.whole >>= shift_count;
305 cur.mperf_cur.whole >>= shift_count; 304 cur.mperf.whole >>= shift_count;
306 } 305 }
307 306
308 if (((unsigned long)(-1) / 100) < cur.aperf_cur.split.lo) { 307 if (((unsigned long)(-1) / 100) < cur.aperf.split.lo) {
309 int shift_count = 7; 308 int shift_count = 7;
310 cur.aperf_cur.split.lo >>= shift_count; 309 cur.aperf.split.lo >>= shift_count;
311 cur.mperf_cur.split.lo >>= shift_count; 310 cur.mperf.split.lo >>= shift_count;
312 } 311 }
313 312
314 if (cur.aperf_cur.split.lo && cur.mperf_cur.split.lo) 313 if (cur.aperf.split.lo && cur.mperf.split.lo)
315 perf_percent = (cur.aperf_cur.split.lo * 100) / 314 perf_percent = (cur.aperf.split.lo * 100) / cur.mperf.split.lo;
316 cur.mperf_cur.split.lo;
317 else 315 else
318 perf_percent = 0; 316 perf_percent = 0;
319 317
320#else 318#else
321 if (unlikely(((unsigned long)(-1) / 100) < cur.aperf_cur.whole)) { 319 if (unlikely(((unsigned long)(-1) / 100) < cur.aperf.whole)) {
322 int shift_count = 7; 320 int shift_count = 7;
323 cur.aperf_cur.whole >>= shift_count; 321 cur.aperf.whole >>= shift_count;
324 cur.mperf_cur.whole >>= shift_count; 322 cur.mperf.whole >>= shift_count;
325 } 323 }
326 324
327 if (cur.aperf_cur.whole && cur.mperf_cur.whole) 325 if (cur.aperf.whole && cur.mperf.whole)
328 perf_percent = (cur.aperf_cur.whole * 100) / 326 perf_percent = (cur.aperf.whole * 100) / cur.mperf.whole;
329 cur.mperf_cur.whole;
330 else 327 else
331 perf_percent = 0; 328 perf_percent = 0;
332 329
diff --git a/arch/x86/kernel/cpu/cpufreq/longhaul.c b/arch/x86/kernel/cpu/cpufreq/longhaul.c
index 0bd48e65a0ca..ce2ed3e4aad9 100644
--- a/arch/x86/kernel/cpu/cpufreq/longhaul.c
+++ b/arch/x86/kernel/cpu/cpufreq/longhaul.c
@@ -33,7 +33,6 @@
33#include <linux/timex.h> 33#include <linux/timex.h>
34#include <linux/io.h> 34#include <linux/io.h>
35#include <linux/acpi.h> 35#include <linux/acpi.h>
36#include <linux/kernel.h>
37 36
38#include <asm/msr.h> 37#include <asm/msr.h>
39#include <acpi/processor.h> 38#include <acpi/processor.h>
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 70a10ca100f6..18dfa30795c9 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -18,6 +18,8 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/list.h> 19#include <linux/list.h>
20 20
21#include <trace/syscall.h>
22
21#include <asm/cacheflush.h> 23#include <asm/cacheflush.h>
22#include <asm/ftrace.h> 24#include <asm/ftrace.h>
23#include <asm/nops.h> 25#include <asm/nops.h>
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 3aaf7b9e3a8b..c3fe010d74c8 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -65,7 +65,7 @@ static int show_other_interrupts(struct seq_file *p, int prec)
65 seq_printf(p, " Spurious interrupts\n"); 65 seq_printf(p, " Spurious interrupts\n");
66#endif 66#endif
67 if (generic_interrupt_extension) { 67 if (generic_interrupt_extension) {
68 seq_printf(p, "PLT: "); 68 seq_printf(p, "%*s: ", prec, "PLT");
69 for_each_online_cpu(j) 69 for_each_online_cpu(j)
70 seq_printf(p, "%10u ", irq_stats(j)->generic_irqs); 70 seq_printf(p, "%10u ", irq_stats(j)->generic_irqs);
71 seq_printf(p, " Platform interrupts\n"); 71 seq_printf(p, " Platform interrupts\n");
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index dce99dca6cf8..70fd7e414c15 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -679,7 +679,7 @@ void __init get_smp_config(void)
679 __get_smp_config(0); 679 __get_smp_config(0);
680} 680}
681 681
682static void smp_reserve_bootmem(struct mpf_intel *mpf) 682static void __init smp_reserve_bootmem(struct mpf_intel *mpf)
683{ 683{
684 unsigned long size = get_mpc_size(mpf->physptr); 684 unsigned long size = get_mpc_size(mpf->physptr);
685#ifdef CONFIG_X86_32 685#ifdef CONFIG_X86_32
@@ -838,7 +838,7 @@ static int __init get_MP_intsrc_index(struct mpc_intsrc *m)
838 838
839static struct mpc_intsrc __initdata *m_spare[SPARE_SLOT_NUM]; 839static struct mpc_intsrc __initdata *m_spare[SPARE_SLOT_NUM];
840 840
841static void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) 841static void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare)
842{ 842{
843 int i; 843 int i;
844 844
@@ -866,7 +866,8 @@ static void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare)
866 } 866 }
867} 867}
868#else /* CONFIG_X86_IO_APIC */ 868#else /* CONFIG_X86_IO_APIC */
869static inline void check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {} 869static
870inline void __init check_irq_src(struct mpc_intsrc *m, int *nr_m_spare) {}
870#endif /* CONFIG_X86_IO_APIC */ 871#endif /* CONFIG_X86_IO_APIC */
871 872
872static int check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length, 873static int check_slot(unsigned long mpc_new_phys, unsigned long mpc_new_length,
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index fe9345c967de..23b7c8f017e2 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -21,7 +21,6 @@
21#include <linux/audit.h> 21#include <linux/audit.h>
22#include <linux/seccomp.h> 22#include <linux/seccomp.h>
23#include <linux/signal.h> 23#include <linux/signal.h>
24#include <linux/ftrace.h>
25 24
26#include <asm/uaccess.h> 25#include <asm/uaccess.h>
27#include <asm/pgtable.h> 26#include <asm/pgtable.h>
@@ -35,6 +34,8 @@
35#include <asm/proto.h> 34#include <asm/proto.h>
36#include <asm/ds.h> 35#include <asm/ds.h>
37 36
37#include <trace/syscall.h>
38
38#include "tls.h" 39#include "tls.h"
39 40
40enum x86_regset { 41enum x86_regset {
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 2aef36d8aca2..1340dad417f4 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -224,6 +224,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
224 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"), 224 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
225 }, 225 },
226 }, 226 },
227 { /* Handle problems with rebooting on Dell DXP061 */
228 .callback = set_bios_reboot,
229 .ident = "Dell DXP061",
230 .matches = {
231 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
232 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
233 },
234 },
227 { } 235 { }
228}; 236};
229 237
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
index 2b54fe002e94..0a5b04aa98f1 100644
--- a/arch/x86/kernel/xsave.c
+++ b/arch/x86/kernel/xsave.c
@@ -324,7 +324,7 @@ void __ref xsave_cntxt_init(void)
324 } 324 }
325 325
326 /* 326 /*
327 * for now OS knows only about FP/SSE 327 * Support only the state known to OS.
328 */ 328 */
329 pcntxt_mask = pcntxt_mask & XCNTXT_MASK; 329 pcntxt_mask = pcntxt_mask & XCNTXT_MASK;
330 xsave_init(); 330 xsave_init();
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
index be54176e9eb2..6340cef6798a 100644
--- a/arch/x86/mm/gup.c
+++ b/arch/x86/mm/gup.c
@@ -219,6 +219,22 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end,
219 return 1; 219 return 1;
220} 220}
221 221
222/**
223 * get_user_pages_fast() - pin user pages in memory
224 * @start: starting user address
225 * @nr_pages: number of pages from start to pin
226 * @write: whether pages will be written to
227 * @pages: array that receives pointers to the pages pinned.
228 * Should be at least nr_pages long.
229 *
230 * Attempt to pin user pages in memory without taking mm->mmap_sem.
231 * If not successful, it will fall back to taking the lock and
232 * calling get_user_pages().
233 *
234 * Returns number of pages pinned. This may be fewer than the number
235 * requested. If nr_pages is 0 or negative, returns 0. If no pages
236 * were pinned, returns -errno.
237 */
222int get_user_pages_fast(unsigned long start, int nr_pages, int write, 238int get_user_pages_fast(unsigned long start, int nr_pages, int write,
223 struct page **pages) 239 struct page **pages)
224{ 240{
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 0dfa09d69e80..09daebfdb11c 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -547,7 +547,7 @@ void __init early_ioremap_reset(void)
547} 547}
548 548
549static void __init __early_set_fixmap(enum fixed_addresses idx, 549static void __init __early_set_fixmap(enum fixed_addresses idx,
550 unsigned long phys, pgprot_t flags) 550 phys_addr_t phys, pgprot_t flags)
551{ 551{
552 unsigned long addr = __fix_to_virt(idx); 552 unsigned long addr = __fix_to_virt(idx);
553 pte_t *pte; 553 pte_t *pte;
@@ -566,7 +566,7 @@ static void __init __early_set_fixmap(enum fixed_addresses idx,
566} 566}
567 567
568static inline void __init early_set_fixmap(enum fixed_addresses idx, 568static inline void __init early_set_fixmap(enum fixed_addresses idx,
569 unsigned long phys, pgprot_t prot) 569 phys_addr_t phys, pgprot_t prot)
570{ 570{
571 if (after_paging_init) 571 if (after_paging_init)
572 __set_fixmap(idx, phys, prot); 572 __set_fixmap(idx, phys, prot);
@@ -607,9 +607,10 @@ static int __init check_early_ioremap_leak(void)
607late_initcall(check_early_ioremap_leak); 607late_initcall(check_early_ioremap_leak);
608 608
609static void __init __iomem * 609static void __init __iomem *
610__early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot) 610__early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
611{ 611{
612 unsigned long offset, last_addr; 612 unsigned long offset;
613 resource_size_t last_addr;
613 unsigned int nrpages; 614 unsigned int nrpages;
614 enum fixed_addresses idx0, idx; 615 enum fixed_addresses idx0, idx;
615 int i, slot; 616 int i, slot;
@@ -625,15 +626,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
625 } 626 }
626 627
627 if (slot < 0) { 628 if (slot < 0) {
628 printk(KERN_INFO "early_iomap(%08lx, %08lx) not found slot\n", 629 printk(KERN_INFO "early_iomap(%08llx, %08lx) not found slot\n",
629 phys_addr, size); 630 (u64)phys_addr, size);
630 WARN_ON(1); 631 WARN_ON(1);
631 return NULL; 632 return NULL;
632 } 633 }
633 634
634 if (early_ioremap_debug) { 635 if (early_ioremap_debug) {
635 printk(KERN_INFO "early_ioremap(%08lx, %08lx) [%d] => ", 636 printk(KERN_INFO "early_ioremap(%08llx, %08lx) [%d] => ",
636 phys_addr, size, slot); 637 (u64)phys_addr, size, slot);
637 dump_stack(); 638 dump_stack();
638 } 639 }
639 640
@@ -680,13 +681,15 @@ __early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
680} 681}
681 682
682/* Remap an IO device */ 683/* Remap an IO device */
683void __init __iomem *early_ioremap(unsigned long phys_addr, unsigned long size) 684void __init __iomem *
685early_ioremap(resource_size_t phys_addr, unsigned long size)
684{ 686{
685 return __early_ioremap(phys_addr, size, PAGE_KERNEL_IO); 687 return __early_ioremap(phys_addr, size, PAGE_KERNEL_IO);
686} 688}
687 689
688/* Remap memory */ 690/* Remap memory */
689void __init __iomem *early_memremap(unsigned long phys_addr, unsigned long size) 691void __init __iomem *
692early_memremap(resource_size_t phys_addr, unsigned long size)
690{ 693{
691 return __early_ioremap(phys_addr, size, PAGE_KERNEL); 694 return __early_ioremap(phys_addr, size, PAGE_KERNEL);
692} 695}
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 640339ee4fb2..c009a241d562 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -31,7 +31,7 @@
31#ifdef CONFIG_X86_PAT 31#ifdef CONFIG_X86_PAT
32int __read_mostly pat_enabled = 1; 32int __read_mostly pat_enabled = 1;
33 33
34void __cpuinit pat_disable(const char *reason) 34static inline void pat_disable(const char *reason)
35{ 35{
36 pat_enabled = 0; 36 pat_enabled = 0;
37 printk(KERN_INFO "%s\n", reason); 37 printk(KERN_INFO "%s\n", reason);
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index 5b7c7c8464fe..7aa03a5389f5 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -345,7 +345,8 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
345 fixmaps_set++; 345 fixmaps_set++;
346} 346}
347 347
348void native_set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t flags) 348void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
349 pgprot_t flags)
349{ 350{
350 __native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags)); 351 __native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
351} 352}
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index db3802fb7b84..2a81838a9ab7 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1750,7 +1750,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1750} 1750}
1751#endif /* CONFIG_X86_64 */ 1751#endif /* CONFIG_X86_64 */
1752 1752
1753static void xen_set_fixmap(unsigned idx, unsigned long phys, pgprot_t prot) 1753static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
1754{ 1754{
1755 pte_t pte; 1755 pte_t pte;
1756 1756
diff --git a/drivers/acpi/acpica/hwvalid.c b/drivers/acpi/acpica/hwvalid.c
index bd3c937b0ac0..7737afb157c3 100644
--- a/drivers/acpi/acpica/hwvalid.c
+++ b/drivers/acpi/acpica/hwvalid.c
@@ -90,7 +90,6 @@ static const struct acpi_port_info acpi_protected_ports[] = {
90 {"PIT2", 0x0048, 0x004B, ACPI_OSI_WIN_XP}, 90 {"PIT2", 0x0048, 0x004B, ACPI_OSI_WIN_XP},
91 {"RTC", 0x0070, 0x0071, ACPI_OSI_WIN_XP}, 91 {"RTC", 0x0070, 0x0071, ACPI_OSI_WIN_XP},
92 {"CMOS", 0x0074, 0x0076, ACPI_OSI_WIN_XP}, 92 {"CMOS", 0x0074, 0x0076, ACPI_OSI_WIN_XP},
93 {"DMA1", 0x0081, 0x0083, ACPI_OSI_WIN_XP},
94 {"DMA1L", 0x0087, 0x0087, ACPI_OSI_WIN_XP}, 93 {"DMA1L", 0x0087, 0x0087, ACPI_OSI_WIN_XP},
95 {"DMA2", 0x0089, 0x008B, ACPI_OSI_WIN_XP}, 94 {"DMA2", 0x0089, 0x008B, ACPI_OSI_WIN_XP},
96 {"DMA2L", 0x008F, 0x008F, ACPI_OSI_WIN_XP}, 95 {"DMA2L", 0x008F, 0x008F, ACPI_OSI_WIN_XP},
diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
index 05dfdc96802e..d0d550d22a6d 100644
--- a/drivers/acpi/proc.c
+++ b/drivers/acpi/proc.c
@@ -343,9 +343,6 @@ acpi_system_write_alarm(struct file *file,
343} 343}
344#endif /* HAVE_ACPI_LEGACY_ALARM */ 344#endif /* HAVE_ACPI_LEGACY_ALARM */
345 345
346extern struct list_head acpi_wakeup_device_list;
347extern spinlock_t acpi_device_lock;
348
349static int 346static int
350acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset) 347acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
351{ 348{
@@ -353,7 +350,7 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
353 350
354 seq_printf(seq, "Device\tS-state\t Status Sysfs node\n"); 351 seq_printf(seq, "Device\tS-state\t Status Sysfs node\n");
355 352
356 spin_lock(&acpi_device_lock); 353 mutex_lock(&acpi_device_lock);
357 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 354 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
358 struct acpi_device *dev = 355 struct acpi_device *dev =
359 container_of(node, struct acpi_device, wakeup_list); 356 container_of(node, struct acpi_device, wakeup_list);
@@ -361,7 +358,6 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
361 358
362 if (!dev->wakeup.flags.valid) 359 if (!dev->wakeup.flags.valid)
363 continue; 360 continue;
364 spin_unlock(&acpi_device_lock);
365 361
366 ldev = acpi_get_physical_device(dev->handle); 362 ldev = acpi_get_physical_device(dev->handle);
367 seq_printf(seq, "%s\t S%d\t%c%-8s ", 363 seq_printf(seq, "%s\t S%d\t%c%-8s ",
@@ -376,9 +372,8 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
376 seq_printf(seq, "\n"); 372 seq_printf(seq, "\n");
377 put_device(ldev); 373 put_device(ldev);
378 374
379 spin_lock(&acpi_device_lock);
380 } 375 }
381 spin_unlock(&acpi_device_lock); 376 mutex_unlock(&acpi_device_lock);
382 return 0; 377 return 0;
383} 378}
384 379
@@ -409,7 +404,7 @@ acpi_system_write_wakeup_device(struct file *file,
409 strbuf[len] = '\0'; 404 strbuf[len] = '\0';
410 sscanf(strbuf, "%s", str); 405 sscanf(strbuf, "%s", str);
411 406
412 spin_lock(&acpi_device_lock); 407 mutex_lock(&acpi_device_lock);
413 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 408 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
414 struct acpi_device *dev = 409 struct acpi_device *dev =
415 container_of(node, struct acpi_device, wakeup_list); 410 container_of(node, struct acpi_device, wakeup_list);
@@ -446,7 +441,7 @@ acpi_system_write_wakeup_device(struct file *file,
446 } 441 }
447 } 442 }
448 } 443 }
449 spin_unlock(&acpi_device_lock); 444 mutex_unlock(&acpi_device_lock);
450 return count; 445 return count;
451} 446}
452 447
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 4e6e758bd397..6fe121434ffb 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -145,6 +145,9 @@ static void acpi_timer_check_state(int state, struct acpi_processor *pr,
145 struct acpi_processor_power *pwr = &pr->power; 145 struct acpi_processor_power *pwr = &pr->power;
146 u8 type = local_apic_timer_c2_ok ? ACPI_STATE_C3 : ACPI_STATE_C2; 146 u8 type = local_apic_timer_c2_ok ? ACPI_STATE_C3 : ACPI_STATE_C2;
147 147
148 if (cpu_has(&cpu_data(pr->id), X86_FEATURE_ARAT))
149 return;
150
148 /* 151 /*
149 * Check, if one of the previous states already marked the lapic 152 * Check, if one of the previous states already marked the lapic
150 * unstable 153 * unstable
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 20c23c049207..8ff510b91d88 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -24,7 +24,7 @@ extern struct acpi_device *acpi_root;
24 24
25static LIST_HEAD(acpi_device_list); 25static LIST_HEAD(acpi_device_list);
26static LIST_HEAD(acpi_bus_id_list); 26static LIST_HEAD(acpi_bus_id_list);
27DEFINE_SPINLOCK(acpi_device_lock); 27DEFINE_MUTEX(acpi_device_lock);
28LIST_HEAD(acpi_wakeup_device_list); 28LIST_HEAD(acpi_wakeup_device_list);
29 29
30struct acpi_device_bus_id{ 30struct acpi_device_bus_id{
@@ -491,7 +491,6 @@ static int acpi_device_register(struct acpi_device *device,
491 */ 491 */
492 INIT_LIST_HEAD(&device->children); 492 INIT_LIST_HEAD(&device->children);
493 INIT_LIST_HEAD(&device->node); 493 INIT_LIST_HEAD(&device->node);
494 INIT_LIST_HEAD(&device->g_list);
495 INIT_LIST_HEAD(&device->wakeup_list); 494 INIT_LIST_HEAD(&device->wakeup_list);
496 495
497 new_bus_id = kzalloc(sizeof(struct acpi_device_bus_id), GFP_KERNEL); 496 new_bus_id = kzalloc(sizeof(struct acpi_device_bus_id), GFP_KERNEL);
@@ -500,7 +499,7 @@ static int acpi_device_register(struct acpi_device *device,
500 return -ENOMEM; 499 return -ENOMEM;
501 } 500 }
502 501
503 spin_lock(&acpi_device_lock); 502 mutex_lock(&acpi_device_lock);
504 /* 503 /*
505 * Find suitable bus_id and instance number in acpi_bus_id_list 504 * Find suitable bus_id and instance number in acpi_bus_id_list
506 * If failed, create one and link it into acpi_bus_id_list 505 * If failed, create one and link it into acpi_bus_id_list
@@ -521,14 +520,12 @@ static int acpi_device_register(struct acpi_device *device,
521 } 520 }
522 dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, acpi_device_bus_id->instance_no); 521 dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, acpi_device_bus_id->instance_no);
523 522
524 if (device->parent) { 523 if (device->parent)
525 list_add_tail(&device->node, &device->parent->children); 524 list_add_tail(&device->node, &device->parent->children);
526 list_add_tail(&device->g_list, &device->parent->g_list); 525
527 } else
528 list_add_tail(&device->g_list, &acpi_device_list);
529 if (device->wakeup.flags.valid) 526 if (device->wakeup.flags.valid)
530 list_add_tail(&device->wakeup_list, &acpi_wakeup_device_list); 527 list_add_tail(&device->wakeup_list, &acpi_wakeup_device_list);
531 spin_unlock(&acpi_device_lock); 528 mutex_unlock(&acpi_device_lock);
532 529
533 if (device->parent) 530 if (device->parent)
534 device->dev.parent = &parent->dev; 531 device->dev.parent = &parent->dev;
@@ -549,28 +546,22 @@ static int acpi_device_register(struct acpi_device *device,
549 device->removal_type = ACPI_BUS_REMOVAL_NORMAL; 546 device->removal_type = ACPI_BUS_REMOVAL_NORMAL;
550 return 0; 547 return 0;
551 end: 548 end:
552 spin_lock(&acpi_device_lock); 549 mutex_lock(&acpi_device_lock);
553 if (device->parent) { 550 if (device->parent)
554 list_del(&device->node); 551 list_del(&device->node);
555 list_del(&device->g_list);
556 } else
557 list_del(&device->g_list);
558 list_del(&device->wakeup_list); 552 list_del(&device->wakeup_list);
559 spin_unlock(&acpi_device_lock); 553 mutex_unlock(&acpi_device_lock);
560 return result; 554 return result;
561} 555}
562 556
563static void acpi_device_unregister(struct acpi_device *device, int type) 557static void acpi_device_unregister(struct acpi_device *device, int type)
564{ 558{
565 spin_lock(&acpi_device_lock); 559 mutex_lock(&acpi_device_lock);
566 if (device->parent) { 560 if (device->parent)
567 list_del(&device->node); 561 list_del(&device->node);
568 list_del(&device->g_list);
569 } else
570 list_del(&device->g_list);
571 562
572 list_del(&device->wakeup_list); 563 list_del(&device->wakeup_list);
573 spin_unlock(&acpi_device_lock); 564 mutex_unlock(&acpi_device_lock);
574 565
575 acpi_detach_data(device->handle, acpi_bus_data_handler); 566 acpi_detach_data(device->handle, acpi_bus_data_handler);
576 567
diff --git a/drivers/acpi/sleep.h b/drivers/acpi/sleep.h
index cfaf8f5b0a14..8a8f3b3382a6 100644
--- a/drivers/acpi/sleep.h
+++ b/drivers/acpi/sleep.h
@@ -5,3 +5,6 @@ extern int acpi_suspend (u32 state);
5extern void acpi_enable_wakeup_device_prep(u8 sleep_state); 5extern void acpi_enable_wakeup_device_prep(u8 sleep_state);
6extern void acpi_enable_wakeup_device(u8 sleep_state); 6extern void acpi_enable_wakeup_device(u8 sleep_state);
7extern void acpi_disable_wakeup_device(u8 sleep_state); 7extern void acpi_disable_wakeup_device(u8 sleep_state);
8
9extern struct list_head acpi_wakeup_device_list;
10extern struct mutex acpi_device_lock;
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index e8c143caf0fd..9cd15e8c8932 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -98,6 +98,7 @@ MODULE_PARM_DESC(psv, "Disable or override all passive trip points.");
98static int acpi_thermal_add(struct acpi_device *device); 98static int acpi_thermal_add(struct acpi_device *device);
99static int acpi_thermal_remove(struct acpi_device *device, int type); 99static int acpi_thermal_remove(struct acpi_device *device, int type);
100static int acpi_thermal_resume(struct acpi_device *device); 100static int acpi_thermal_resume(struct acpi_device *device);
101static void acpi_thermal_notify(struct acpi_device *device, u32 event);
101static int acpi_thermal_state_open_fs(struct inode *inode, struct file *file); 102static int acpi_thermal_state_open_fs(struct inode *inode, struct file *file);
102static int acpi_thermal_temp_open_fs(struct inode *inode, struct file *file); 103static int acpi_thermal_temp_open_fs(struct inode *inode, struct file *file);
103static int acpi_thermal_trip_open_fs(struct inode *inode, struct file *file); 104static int acpi_thermal_trip_open_fs(struct inode *inode, struct file *file);
@@ -123,6 +124,7 @@ static struct acpi_driver acpi_thermal_driver = {
123 .add = acpi_thermal_add, 124 .add = acpi_thermal_add,
124 .remove = acpi_thermal_remove, 125 .remove = acpi_thermal_remove,
125 .resume = acpi_thermal_resume, 126 .resume = acpi_thermal_resume,
127 .notify = acpi_thermal_notify,
126 }, 128 },
127}; 129};
128 130
@@ -192,6 +194,7 @@ struct acpi_thermal {
192 struct acpi_handle_list devices; 194 struct acpi_handle_list devices;
193 struct thermal_zone_device *thermal_zone; 195 struct thermal_zone_device *thermal_zone;
194 int tz_enabled; 196 int tz_enabled;
197 int kelvin_offset;
195 struct mutex lock; 198 struct mutex lock;
196}; 199};
197 200
@@ -581,7 +584,7 @@ static void acpi_thermal_check(void *data)
581} 584}
582 585
583/* sys I/F for generic thermal sysfs support */ 586/* sys I/F for generic thermal sysfs support */
584#define KELVIN_TO_MILLICELSIUS(t) (t * 100 - 273200) 587#define KELVIN_TO_MILLICELSIUS(t, off) (((t) - (off)) * 100)
585 588
586static int thermal_get_temp(struct thermal_zone_device *thermal, 589static int thermal_get_temp(struct thermal_zone_device *thermal,
587 unsigned long *temp) 590 unsigned long *temp)
@@ -596,7 +599,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal,
596 if (result) 599 if (result)
597 return result; 600 return result;
598 601
599 *temp = KELVIN_TO_MILLICELSIUS(tz->temperature); 602 *temp = KELVIN_TO_MILLICELSIUS(tz->temperature, tz->kelvin_offset);
600 return 0; 603 return 0;
601} 604}
602 605
@@ -702,7 +705,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
702 if (tz->trips.critical.flags.valid) { 705 if (tz->trips.critical.flags.valid) {
703 if (!trip) { 706 if (!trip) {
704 *temp = KELVIN_TO_MILLICELSIUS( 707 *temp = KELVIN_TO_MILLICELSIUS(
705 tz->trips.critical.temperature); 708 tz->trips.critical.temperature,
709 tz->kelvin_offset);
706 return 0; 710 return 0;
707 } 711 }
708 trip--; 712 trip--;
@@ -711,7 +715,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
711 if (tz->trips.hot.flags.valid) { 715 if (tz->trips.hot.flags.valid) {
712 if (!trip) { 716 if (!trip) {
713 *temp = KELVIN_TO_MILLICELSIUS( 717 *temp = KELVIN_TO_MILLICELSIUS(
714 tz->trips.hot.temperature); 718 tz->trips.hot.temperature,
719 tz->kelvin_offset);
715 return 0; 720 return 0;
716 } 721 }
717 trip--; 722 trip--;
@@ -720,7 +725,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
720 if (tz->trips.passive.flags.valid) { 725 if (tz->trips.passive.flags.valid) {
721 if (!trip) { 726 if (!trip) {
722 *temp = KELVIN_TO_MILLICELSIUS( 727 *temp = KELVIN_TO_MILLICELSIUS(
723 tz->trips.passive.temperature); 728 tz->trips.passive.temperature,
729 tz->kelvin_offset);
724 return 0; 730 return 0;
725 } 731 }
726 trip--; 732 trip--;
@@ -730,7 +736,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
730 tz->trips.active[i].flags.valid; i++) { 736 tz->trips.active[i].flags.valid; i++) {
731 if (!trip) { 737 if (!trip) {
732 *temp = KELVIN_TO_MILLICELSIUS( 738 *temp = KELVIN_TO_MILLICELSIUS(
733 tz->trips.active[i].temperature); 739 tz->trips.active[i].temperature,
740 tz->kelvin_offset);
734 return 0; 741 return 0;
735 } 742 }
736 trip--; 743 trip--;
@@ -745,7 +752,8 @@ static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
745 752
746 if (tz->trips.critical.flags.valid) { 753 if (tz->trips.critical.flags.valid) {
747 *temperature = KELVIN_TO_MILLICELSIUS( 754 *temperature = KELVIN_TO_MILLICELSIUS(
748 tz->trips.critical.temperature); 755 tz->trips.critical.temperature,
756 tz->kelvin_offset);
749 return 0; 757 return 0;
750 } else 758 } else
751 return -EINVAL; 759 return -EINVAL;
@@ -1264,17 +1272,14 @@ static int acpi_thermal_remove_fs(struct acpi_device *device)
1264 Driver Interface 1272 Driver Interface
1265 -------------------------------------------------------------------------- */ 1273 -------------------------------------------------------------------------- */
1266 1274
1267static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data) 1275static void acpi_thermal_notify(struct acpi_device *device, u32 event)
1268{ 1276{
1269 struct acpi_thermal *tz = data; 1277 struct acpi_thermal *tz = acpi_driver_data(device);
1270 struct acpi_device *device = NULL;
1271 1278
1272 1279
1273 if (!tz) 1280 if (!tz)
1274 return; 1281 return;
1275 1282
1276 device = tz->device;
1277
1278 switch (event) { 1283 switch (event) {
1279 case ACPI_THERMAL_NOTIFY_TEMPERATURE: 1284 case ACPI_THERMAL_NOTIFY_TEMPERATURE:
1280 acpi_thermal_check(tz); 1285 acpi_thermal_check(tz);
@@ -1298,8 +1303,6 @@ static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data)
1298 "Unsupported event [0x%x]\n", event)); 1303 "Unsupported event [0x%x]\n", event));
1299 break; 1304 break;
1300 } 1305 }
1301
1302 return;
1303} 1306}
1304 1307
1305static int acpi_thermal_get_info(struct acpi_thermal *tz) 1308static int acpi_thermal_get_info(struct acpi_thermal *tz)
@@ -1334,10 +1337,28 @@ static int acpi_thermal_get_info(struct acpi_thermal *tz)
1334 return 0; 1337 return 0;
1335} 1338}
1336 1339
1340/*
1341 * The exact offset between Kelvin and degree Celsius is 273.15. However ACPI
1342 * handles temperature values with a single decimal place. As a consequence,
1343 * some implementations use an offset of 273.1 and others use an offset of
1344 * 273.2. Try to find out which one is being used, to present the most
1345 * accurate and visually appealing number.
1346 *
1347 * The heuristic below should work for all ACPI thermal zones which have a
1348 * critical trip point with a value being a multiple of 0.5 degree Celsius.
1349 */
1350static void acpi_thermal_guess_offset(struct acpi_thermal *tz)
1351{
1352 if (tz->trips.critical.flags.valid &&
1353 (tz->trips.critical.temperature % 5) == 1)
1354 tz->kelvin_offset = 2731;
1355 else
1356 tz->kelvin_offset = 2732;
1357}
1358
1337static int acpi_thermal_add(struct acpi_device *device) 1359static int acpi_thermal_add(struct acpi_device *device)
1338{ 1360{
1339 int result = 0; 1361 int result = 0;
1340 acpi_status status = AE_OK;
1341 struct acpi_thermal *tz = NULL; 1362 struct acpi_thermal *tz = NULL;
1342 1363
1343 1364
@@ -1360,6 +1381,8 @@ static int acpi_thermal_add(struct acpi_device *device)
1360 if (result) 1381 if (result)
1361 goto free_memory; 1382 goto free_memory;
1362 1383
1384 acpi_thermal_guess_offset(tz);
1385
1363 result = acpi_thermal_register_thermal_zone(tz); 1386 result = acpi_thermal_register_thermal_zone(tz);
1364 if (result) 1387 if (result)
1365 goto free_memory; 1388 goto free_memory;
@@ -1368,21 +1391,11 @@ static int acpi_thermal_add(struct acpi_device *device)
1368 if (result) 1391 if (result)
1369 goto unregister_thermal_zone; 1392 goto unregister_thermal_zone;
1370 1393
1371 status = acpi_install_notify_handler(device->handle,
1372 ACPI_DEVICE_NOTIFY,
1373 acpi_thermal_notify, tz);
1374 if (ACPI_FAILURE(status)) {
1375 result = -ENODEV;
1376 goto remove_fs;
1377 }
1378
1379 printk(KERN_INFO PREFIX "%s [%s] (%ld C)\n", 1394 printk(KERN_INFO PREFIX "%s [%s] (%ld C)\n",
1380 acpi_device_name(device), acpi_device_bid(device), 1395 acpi_device_name(device), acpi_device_bid(device),
1381 KELVIN_TO_CELSIUS(tz->temperature)); 1396 KELVIN_TO_CELSIUS(tz->temperature));
1382 goto end; 1397 goto end;
1383 1398
1384remove_fs:
1385 acpi_thermal_remove_fs(device);
1386unregister_thermal_zone: 1399unregister_thermal_zone:
1387 thermal_zone_device_unregister(tz->thermal_zone); 1400 thermal_zone_device_unregister(tz->thermal_zone);
1388free_memory: 1401free_memory:
@@ -1393,7 +1406,6 @@ end:
1393 1406
1394static int acpi_thermal_remove(struct acpi_device *device, int type) 1407static int acpi_thermal_remove(struct acpi_device *device, int type)
1395{ 1408{
1396 acpi_status status = AE_OK;
1397 struct acpi_thermal *tz = NULL; 1409 struct acpi_thermal *tz = NULL;
1398 1410
1399 if (!device || !acpi_driver_data(device)) 1411 if (!device || !acpi_driver_data(device))
@@ -1401,10 +1413,6 @@ static int acpi_thermal_remove(struct acpi_device *device, int type)
1401 1413
1402 tz = acpi_driver_data(device); 1414 tz = acpi_driver_data(device);
1403 1415
1404 status = acpi_remove_notify_handler(device->handle,
1405 ACPI_DEVICE_NOTIFY,
1406 acpi_thermal_notify);
1407
1408 acpi_thermal_remove_fs(device); 1416 acpi_thermal_remove_fs(device);
1409 acpi_thermal_unregister_thermal_zone(tz); 1417 acpi_thermal_unregister_thermal_zone(tz);
1410 mutex_destroy(&tz->lock); 1418 mutex_destroy(&tz->lock);
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index ab06143672bc..cd4fb7543a90 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -79,6 +79,7 @@ module_param(brightness_switch_enabled, bool, 0644);
79static int acpi_video_bus_add(struct acpi_device *device); 79static int acpi_video_bus_add(struct acpi_device *device);
80static int acpi_video_bus_remove(struct acpi_device *device, int type); 80static int acpi_video_bus_remove(struct acpi_device *device, int type);
81static int acpi_video_resume(struct acpi_device *device); 81static int acpi_video_resume(struct acpi_device *device);
82static void acpi_video_bus_notify(struct acpi_device *device, u32 event);
82 83
83static const struct acpi_device_id video_device_ids[] = { 84static const struct acpi_device_id video_device_ids[] = {
84 {ACPI_VIDEO_HID, 0}, 85 {ACPI_VIDEO_HID, 0},
@@ -94,6 +95,7 @@ static struct acpi_driver acpi_video_bus = {
94 .add = acpi_video_bus_add, 95 .add = acpi_video_bus_add,
95 .remove = acpi_video_bus_remove, 96 .remove = acpi_video_bus_remove,
96 .resume = acpi_video_resume, 97 .resume = acpi_video_resume,
98 .notify = acpi_video_bus_notify,
97 }, 99 },
98}; 100};
99 101
@@ -1986,17 +1988,15 @@ static int acpi_video_bus_stop_devices(struct acpi_video_bus *video)
1986 return acpi_video_bus_DOS(video, 0, 1); 1988 return acpi_video_bus_DOS(video, 0, 1);
1987} 1989}
1988 1990
1989static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data) 1991static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
1990{ 1992{
1991 struct acpi_video_bus *video = data; 1993 struct acpi_video_bus *video = acpi_driver_data(device);
1992 struct acpi_device *device = NULL;
1993 struct input_dev *input; 1994 struct input_dev *input;
1994 int keycode; 1995 int keycode;
1995 1996
1996 if (!video) 1997 if (!video)
1997 return; 1998 return;
1998 1999
1999 device = video->device;
2000 input = video->input; 2000 input = video->input;
2001 2001
2002 switch (event) { 2002 switch (event) {
@@ -2127,7 +2127,6 @@ static int acpi_video_resume(struct acpi_device *device)
2127 2127
2128static int acpi_video_bus_add(struct acpi_device *device) 2128static int acpi_video_bus_add(struct acpi_device *device)
2129{ 2129{
2130 acpi_status status;
2131 struct acpi_video_bus *video; 2130 struct acpi_video_bus *video;
2132 struct input_dev *input; 2131 struct input_dev *input;
2133 int error; 2132 int error;
@@ -2169,20 +2168,10 @@ static int acpi_video_bus_add(struct acpi_device *device)
2169 acpi_video_bus_get_devices(video, device); 2168 acpi_video_bus_get_devices(video, device);
2170 acpi_video_bus_start_devices(video); 2169 acpi_video_bus_start_devices(video);
2171 2170
2172 status = acpi_install_notify_handler(device->handle,
2173 ACPI_DEVICE_NOTIFY,
2174 acpi_video_bus_notify, video);
2175 if (ACPI_FAILURE(status)) {
2176 printk(KERN_ERR PREFIX
2177 "Error installing notify handler\n");
2178 error = -ENODEV;
2179 goto err_stop_video;
2180 }
2181
2182 video->input = input = input_allocate_device(); 2171 video->input = input = input_allocate_device();
2183 if (!input) { 2172 if (!input) {
2184 error = -ENOMEM; 2173 error = -ENOMEM;
2185 goto err_uninstall_notify; 2174 goto err_stop_video;
2186 } 2175 }
2187 2176
2188 snprintf(video->phys, sizeof(video->phys), 2177 snprintf(video->phys, sizeof(video->phys),
@@ -2218,9 +2207,6 @@ static int acpi_video_bus_add(struct acpi_device *device)
2218 2207
2219 err_free_input_dev: 2208 err_free_input_dev:
2220 input_free_device(input); 2209 input_free_device(input);
2221 err_uninstall_notify:
2222 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
2223 acpi_video_bus_notify);
2224 err_stop_video: 2210 err_stop_video:
2225 acpi_video_bus_stop_devices(video); 2211 acpi_video_bus_stop_devices(video);
2226 acpi_video_bus_put_devices(video); 2212 acpi_video_bus_put_devices(video);
@@ -2235,7 +2221,6 @@ static int acpi_video_bus_add(struct acpi_device *device)
2235 2221
2236static int acpi_video_bus_remove(struct acpi_device *device, int type) 2222static int acpi_video_bus_remove(struct acpi_device *device, int type)
2237{ 2223{
2238 acpi_status status = 0;
2239 struct acpi_video_bus *video = NULL; 2224 struct acpi_video_bus *video = NULL;
2240 2225
2241 2226
@@ -2245,11 +2230,6 @@ static int acpi_video_bus_remove(struct acpi_device *device, int type)
2245 video = acpi_driver_data(device); 2230 video = acpi_driver_data(device);
2246 2231
2247 acpi_video_bus_stop_devices(video); 2232 acpi_video_bus_stop_devices(video);
2248
2249 status = acpi_remove_notify_handler(video->device->handle,
2250 ACPI_DEVICE_NOTIFY,
2251 acpi_video_bus_notify);
2252
2253 acpi_video_bus_put_devices(video); 2233 acpi_video_bus_put_devices(video);
2254 acpi_video_bus_remove_fs(device); 2234 acpi_video_bus_remove_fs(device);
2255 2235
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c
index 5aee8c26cc9f..88725dcdf8bc 100644
--- a/drivers/acpi/wakeup.c
+++ b/drivers/acpi/wakeup.c
@@ -12,12 +12,14 @@
12#include "internal.h" 12#include "internal.h"
13#include "sleep.h" 13#include "sleep.h"
14 14
15/*
16 * We didn't lock acpi_device_lock in the file, because it invokes oops in
17 * suspend/resume and isn't really required as this is called in S-state. At
18 * that time, there is no device hotplug
19 **/
15#define _COMPONENT ACPI_SYSTEM_COMPONENT 20#define _COMPONENT ACPI_SYSTEM_COMPONENT
16ACPI_MODULE_NAME("wakeup_devices") 21ACPI_MODULE_NAME("wakeup_devices")
17 22
18extern struct list_head acpi_wakeup_device_list;
19extern spinlock_t acpi_device_lock;
20
21/** 23/**
22 * acpi_enable_wakeup_device_prep - prepare wakeup devices 24 * acpi_enable_wakeup_device_prep - prepare wakeup devices
23 * @sleep_state: ACPI state 25 * @sleep_state: ACPI state
@@ -29,7 +31,6 @@ void acpi_enable_wakeup_device_prep(u8 sleep_state)
29{ 31{
30 struct list_head *node, *next; 32 struct list_head *node, *next;
31 33
32 spin_lock(&acpi_device_lock);
33 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 34 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
34 struct acpi_device *dev = container_of(node, 35 struct acpi_device *dev = container_of(node,
35 struct acpi_device, 36 struct acpi_device,
@@ -40,11 +41,8 @@ void acpi_enable_wakeup_device_prep(u8 sleep_state)
40 (sleep_state > (u32) dev->wakeup.sleep_state)) 41 (sleep_state > (u32) dev->wakeup.sleep_state))
41 continue; 42 continue;
42 43
43 spin_unlock(&acpi_device_lock);
44 acpi_enable_wakeup_device_power(dev, sleep_state); 44 acpi_enable_wakeup_device_power(dev, sleep_state);
45 spin_lock(&acpi_device_lock);
46 } 45 }
47 spin_unlock(&acpi_device_lock);
48} 46}
49 47
50/** 48/**
@@ -60,7 +58,6 @@ void acpi_enable_wakeup_device(u8 sleep_state)
60 * Caution: this routine must be invoked when interrupt is disabled 58 * Caution: this routine must be invoked when interrupt is disabled
61 * Refer ACPI2.0: P212 59 * Refer ACPI2.0: P212
62 */ 60 */
63 spin_lock(&acpi_device_lock);
64 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 61 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
65 struct acpi_device *dev = 62 struct acpi_device *dev =
66 container_of(node, struct acpi_device, wakeup_list); 63 container_of(node, struct acpi_device, wakeup_list);
@@ -74,22 +71,17 @@ void acpi_enable_wakeup_device(u8 sleep_state)
74 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) 71 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared)
75 || sleep_state > (u32) dev->wakeup.sleep_state) { 72 || sleep_state > (u32) dev->wakeup.sleep_state) {
76 if (dev->wakeup.flags.run_wake) { 73 if (dev->wakeup.flags.run_wake) {
77 spin_unlock(&acpi_device_lock);
78 /* set_gpe_type will disable GPE, leave it like that */ 74 /* set_gpe_type will disable GPE, leave it like that */
79 acpi_set_gpe_type(dev->wakeup.gpe_device, 75 acpi_set_gpe_type(dev->wakeup.gpe_device,
80 dev->wakeup.gpe_number, 76 dev->wakeup.gpe_number,
81 ACPI_GPE_TYPE_RUNTIME); 77 ACPI_GPE_TYPE_RUNTIME);
82 spin_lock(&acpi_device_lock);
83 } 78 }
84 continue; 79 continue;
85 } 80 }
86 spin_unlock(&acpi_device_lock);
87 if (!dev->wakeup.flags.run_wake) 81 if (!dev->wakeup.flags.run_wake)
88 acpi_enable_gpe(dev->wakeup.gpe_device, 82 acpi_enable_gpe(dev->wakeup.gpe_device,
89 dev->wakeup.gpe_number); 83 dev->wakeup.gpe_number);
90 spin_lock(&acpi_device_lock);
91 } 84 }
92 spin_unlock(&acpi_device_lock);
93} 85}
94 86
95/** 87/**
@@ -101,7 +93,6 @@ void acpi_disable_wakeup_device(u8 sleep_state)
101{ 93{
102 struct list_head *node, *next; 94 struct list_head *node, *next;
103 95
104 spin_lock(&acpi_device_lock);
105 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 96 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
106 struct acpi_device *dev = 97 struct acpi_device *dev =
107 container_of(node, struct acpi_device, wakeup_list); 98 container_of(node, struct acpi_device, wakeup_list);
@@ -112,19 +103,16 @@ void acpi_disable_wakeup_device(u8 sleep_state)
112 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared) 103 if ((!dev->wakeup.state.enabled && !dev->wakeup.flags.prepared)
113 || sleep_state > (u32) dev->wakeup.sleep_state) { 104 || sleep_state > (u32) dev->wakeup.sleep_state) {
114 if (dev->wakeup.flags.run_wake) { 105 if (dev->wakeup.flags.run_wake) {
115 spin_unlock(&acpi_device_lock);
116 acpi_set_gpe_type(dev->wakeup.gpe_device, 106 acpi_set_gpe_type(dev->wakeup.gpe_device,
117 dev->wakeup.gpe_number, 107 dev->wakeup.gpe_number,
118 ACPI_GPE_TYPE_WAKE_RUN); 108 ACPI_GPE_TYPE_WAKE_RUN);
119 /* Re-enable it, since set_gpe_type will disable it */ 109 /* Re-enable it, since set_gpe_type will disable it */
120 acpi_enable_gpe(dev->wakeup.gpe_device, 110 acpi_enable_gpe(dev->wakeup.gpe_device,
121 dev->wakeup.gpe_number); 111 dev->wakeup.gpe_number);
122 spin_lock(&acpi_device_lock);
123 } 112 }
124 continue; 113 continue;
125 } 114 }
126 115
127 spin_unlock(&acpi_device_lock);
128 acpi_disable_wakeup_device_power(dev); 116 acpi_disable_wakeup_device_power(dev);
129 /* Never disable run-wake GPE */ 117 /* Never disable run-wake GPE */
130 if (!dev->wakeup.flags.run_wake) { 118 if (!dev->wakeup.flags.run_wake) {
@@ -133,16 +121,14 @@ void acpi_disable_wakeup_device(u8 sleep_state)
133 acpi_clear_gpe(dev->wakeup.gpe_device, 121 acpi_clear_gpe(dev->wakeup.gpe_device,
134 dev->wakeup.gpe_number, ACPI_NOT_ISR); 122 dev->wakeup.gpe_number, ACPI_NOT_ISR);
135 } 123 }
136 spin_lock(&acpi_device_lock);
137 } 124 }
138 spin_unlock(&acpi_device_lock);
139} 125}
140 126
141int __init acpi_wakeup_device_init(void) 127int __init acpi_wakeup_device_init(void)
142{ 128{
143 struct list_head *node, *next; 129 struct list_head *node, *next;
144 130
145 spin_lock(&acpi_device_lock); 131 mutex_lock(&acpi_device_lock);
146 list_for_each_safe(node, next, &acpi_wakeup_device_list) { 132 list_for_each_safe(node, next, &acpi_wakeup_device_list) {
147 struct acpi_device *dev = container_of(node, 133 struct acpi_device *dev = container_of(node,
148 struct acpi_device, 134 struct acpi_device,
@@ -150,15 +136,13 @@ int __init acpi_wakeup_device_init(void)
150 /* In case user doesn't load button driver */ 136 /* In case user doesn't load button driver */
151 if (!dev->wakeup.flags.run_wake || dev->wakeup.state.enabled) 137 if (!dev->wakeup.flags.run_wake || dev->wakeup.state.enabled)
152 continue; 138 continue;
153 spin_unlock(&acpi_device_lock);
154 acpi_set_gpe_type(dev->wakeup.gpe_device, 139 acpi_set_gpe_type(dev->wakeup.gpe_device,
155 dev->wakeup.gpe_number, 140 dev->wakeup.gpe_number,
156 ACPI_GPE_TYPE_WAKE_RUN); 141 ACPI_GPE_TYPE_WAKE_RUN);
157 acpi_enable_gpe(dev->wakeup.gpe_device, 142 acpi_enable_gpe(dev->wakeup.gpe_device,
158 dev->wakeup.gpe_number); 143 dev->wakeup.gpe_number);
159 dev->wakeup.state.enabled = 1; 144 dev->wakeup.state.enabled = 1;
160 spin_lock(&acpi_device_lock);
161 } 145 }
162 spin_unlock(&acpi_device_lock); 146 mutex_unlock(&acpi_device_lock);
163 return 0; 147 return 0;
164} 148}
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 57be6bea48eb..08186ecbaf8d 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -114,6 +114,7 @@ enum {
114 board_ahci_sb700 = 5, /* for SB700 and SB800 */ 114 board_ahci_sb700 = 5, /* for SB700 and SB800 */
115 board_ahci_mcp65 = 6, 115 board_ahci_mcp65 = 6,
116 board_ahci_nopmp = 7, 116 board_ahci_nopmp = 7,
117 board_ahci_yesncq = 8,
117 118
118 /* global controller registers */ 119 /* global controller registers */
119 HOST_CAP = 0x00, /* host capabilities */ 120 HOST_CAP = 0x00, /* host capabilities */
@@ -469,6 +470,14 @@ static const struct ata_port_info ahci_port_info[] = {
469 .udma_mask = ATA_UDMA6, 470 .udma_mask = ATA_UDMA6,
470 .port_ops = &ahci_ops, 471 .port_ops = &ahci_ops,
471 }, 472 },
473 /* board_ahci_yesncq */
474 {
475 AHCI_HFLAGS (AHCI_HFLAG_YES_NCQ),
476 .flags = AHCI_FLAG_COMMON,
477 .pio_mask = ATA_PIO4,
478 .udma_mask = ATA_UDMA6,
479 .port_ops = &ahci_ops,
480 },
472}; 481};
473 482
474static const struct pci_device_id ahci_pci_tbl[] = { 483static const struct pci_device_id ahci_pci_tbl[] = {
@@ -535,30 +544,30 @@ static const struct pci_device_id ahci_pci_tbl[] = {
535 { PCI_VDEVICE(NVIDIA, 0x045d), board_ahci_mcp65 }, /* MCP65 */ 544 { PCI_VDEVICE(NVIDIA, 0x045d), board_ahci_mcp65 }, /* MCP65 */
536 { PCI_VDEVICE(NVIDIA, 0x045e), board_ahci_mcp65 }, /* MCP65 */ 545 { PCI_VDEVICE(NVIDIA, 0x045e), board_ahci_mcp65 }, /* MCP65 */
537 { PCI_VDEVICE(NVIDIA, 0x045f), board_ahci_mcp65 }, /* MCP65 */ 546 { PCI_VDEVICE(NVIDIA, 0x045f), board_ahci_mcp65 }, /* MCP65 */
538 { PCI_VDEVICE(NVIDIA, 0x0550), board_ahci }, /* MCP67 */ 547 { PCI_VDEVICE(NVIDIA, 0x0550), board_ahci_yesncq }, /* MCP67 */
539 { PCI_VDEVICE(NVIDIA, 0x0551), board_ahci }, /* MCP67 */ 548 { PCI_VDEVICE(NVIDIA, 0x0551), board_ahci_yesncq }, /* MCP67 */
540 { PCI_VDEVICE(NVIDIA, 0x0552), board_ahci }, /* MCP67 */ 549 { PCI_VDEVICE(NVIDIA, 0x0552), board_ahci_yesncq }, /* MCP67 */
541 { PCI_VDEVICE(NVIDIA, 0x0553), board_ahci }, /* MCP67 */ 550 { PCI_VDEVICE(NVIDIA, 0x0553), board_ahci_yesncq }, /* MCP67 */
542 { PCI_VDEVICE(NVIDIA, 0x0554), board_ahci }, /* MCP67 */ 551 { PCI_VDEVICE(NVIDIA, 0x0554), board_ahci_yesncq }, /* MCP67 */
543 { PCI_VDEVICE(NVIDIA, 0x0555), board_ahci }, /* MCP67 */ 552 { PCI_VDEVICE(NVIDIA, 0x0555), board_ahci_yesncq }, /* MCP67 */
544 { PCI_VDEVICE(NVIDIA, 0x0556), board_ahci }, /* MCP67 */ 553 { PCI_VDEVICE(NVIDIA, 0x0556), board_ahci_yesncq }, /* MCP67 */
545 { PCI_VDEVICE(NVIDIA, 0x0557), board_ahci }, /* MCP67 */ 554 { PCI_VDEVICE(NVIDIA, 0x0557), board_ahci_yesncq }, /* MCP67 */
546 { PCI_VDEVICE(NVIDIA, 0x0558), board_ahci }, /* MCP67 */ 555 { PCI_VDEVICE(NVIDIA, 0x0558), board_ahci_yesncq }, /* MCP67 */
547 { PCI_VDEVICE(NVIDIA, 0x0559), board_ahci }, /* MCP67 */ 556 { PCI_VDEVICE(NVIDIA, 0x0559), board_ahci_yesncq }, /* MCP67 */
548 { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci }, /* MCP67 */ 557 { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci_yesncq }, /* MCP67 */
549 { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci }, /* MCP67 */ 558 { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci_yesncq }, /* MCP67 */
550 { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci }, /* MCP73 */ 559 { PCI_VDEVICE(NVIDIA, 0x07f0), board_ahci_yesncq }, /* MCP73 */
551 { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci }, /* MCP73 */ 560 { PCI_VDEVICE(NVIDIA, 0x07f1), board_ahci_yesncq }, /* MCP73 */
552 { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci }, /* MCP73 */ 561 { PCI_VDEVICE(NVIDIA, 0x07f2), board_ahci_yesncq }, /* MCP73 */
553 { PCI_VDEVICE(NVIDIA, 0x07f3), board_ahci }, /* MCP73 */ 562 { PCI_VDEVICE(NVIDIA, 0x07f3), board_ahci_yesncq }, /* MCP73 */
554 { PCI_VDEVICE(NVIDIA, 0x07f4), board_ahci }, /* MCP73 */ 563 { PCI_VDEVICE(NVIDIA, 0x07f4), board_ahci_yesncq }, /* MCP73 */
555 { PCI_VDEVICE(NVIDIA, 0x07f5), board_ahci }, /* MCP73 */ 564 { PCI_VDEVICE(NVIDIA, 0x07f5), board_ahci_yesncq }, /* MCP73 */
556 { PCI_VDEVICE(NVIDIA, 0x07f6), board_ahci }, /* MCP73 */ 565 { PCI_VDEVICE(NVIDIA, 0x07f6), board_ahci_yesncq }, /* MCP73 */
557 { PCI_VDEVICE(NVIDIA, 0x07f7), board_ahci }, /* MCP73 */ 566 { PCI_VDEVICE(NVIDIA, 0x07f7), board_ahci_yesncq }, /* MCP73 */
558 { PCI_VDEVICE(NVIDIA, 0x07f8), board_ahci }, /* MCP73 */ 567 { PCI_VDEVICE(NVIDIA, 0x07f8), board_ahci_yesncq }, /* MCP73 */
559 { PCI_VDEVICE(NVIDIA, 0x07f9), board_ahci }, /* MCP73 */ 568 { PCI_VDEVICE(NVIDIA, 0x07f9), board_ahci_yesncq }, /* MCP73 */
560 { PCI_VDEVICE(NVIDIA, 0x07fa), board_ahci }, /* MCP73 */ 569 { PCI_VDEVICE(NVIDIA, 0x07fa), board_ahci_yesncq }, /* MCP73 */
561 { PCI_VDEVICE(NVIDIA, 0x07fb), board_ahci }, /* MCP73 */ 570 { PCI_VDEVICE(NVIDIA, 0x07fb), board_ahci_yesncq }, /* MCP73 */
562 { PCI_VDEVICE(NVIDIA, 0x0ad0), board_ahci }, /* MCP77 */ 571 { PCI_VDEVICE(NVIDIA, 0x0ad0), board_ahci }, /* MCP77 */
563 { PCI_VDEVICE(NVIDIA, 0x0ad1), board_ahci }, /* MCP77 */ 572 { PCI_VDEVICE(NVIDIA, 0x0ad1), board_ahci }, /* MCP77 */
564 { PCI_VDEVICE(NVIDIA, 0x0ad2), board_ahci }, /* MCP77 */ 573 { PCI_VDEVICE(NVIDIA, 0x0ad2), board_ahci }, /* MCP77 */
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index e7ea77cf6069..065507c46644 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6110,13 +6110,11 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
6110 ata_port_printk(ap, KERN_INFO, "DUMMY\n"); 6110 ata_port_printk(ap, KERN_INFO, "DUMMY\n");
6111 } 6111 }
6112 6112
6113 /* perform each probe synchronously */ 6113 /* perform each probe asynchronously */
6114 DPRINTK("probe begin\n");
6115 for (i = 0; i < host->n_ports; i++) { 6114 for (i = 0; i < host->n_ports; i++) {
6116 struct ata_port *ap = host->ports[i]; 6115 struct ata_port *ap = host->ports[i];
6117 async_schedule(async_port_probe, ap); 6116 async_schedule(async_port_probe, ap);
6118 } 6117 }
6119 DPRINTK("probe end\n");
6120 6118
6121 return 0; 6119 return 0;
6122} 6120}
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 98e8c50703b3..bdd43c7f432e 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -566,7 +566,7 @@ static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
566 static int printed_version; 566 static int printed_version;
567 unsigned int i; 567 unsigned int i;
568 int rc; 568 int rc;
569 struct ata_host *host; 569 struct ata_host *host = NULL;
570 int board_id = (int) ent->driver_data; 570 int board_id = (int) ent->driver_data;
571 const unsigned *bar_sizes; 571 const unsigned *bar_sizes;
572 572
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 6cccdc3f5220..4aecf5dc6a93 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -563,7 +563,7 @@ static void ace_fsm_dostate(struct ace_device *ace)
563 case ACE_FSM_STATE_IDENTIFY_PREPARE: 563 case ACE_FSM_STATE_IDENTIFY_PREPARE:
564 /* Send identify command */ 564 /* Send identify command */
565 ace->fsm_task = ACE_TASK_IDENTIFY; 565 ace->fsm_task = ACE_TASK_IDENTIFY;
566 ace->data_ptr = &ace->cf_id; 566 ace->data_ptr = ace->cf_id;
567 ace->data_count = ACE_BUF_PER_SECTOR; 567 ace->data_count = ACE_BUF_PER_SECTOR;
568 ace_out(ace, ACE_SECCNTCMD, ACE_SECCNTCMD_IDENTIFY); 568 ace_out(ace, ACE_SECCNTCMD, ACE_SECCNTCMD_IDENTIFY);
569 569
@@ -608,8 +608,8 @@ static void ace_fsm_dostate(struct ace_device *ace)
608 break; 608 break;
609 609
610 case ACE_FSM_STATE_IDENTIFY_COMPLETE: 610 case ACE_FSM_STATE_IDENTIFY_COMPLETE:
611 ace_fix_driveid(&ace->cf_id[0]); 611 ace_fix_driveid(ace->cf_id);
612 ace_dump_mem(&ace->cf_id, 512); /* Debug: Dump out disk ID */ 612 ace_dump_mem(ace->cf_id, 512); /* Debug: Dump out disk ID */
613 613
614 if (ace->data_result) { 614 if (ace->data_result) {
615 /* Error occured, disable the disk */ 615 /* Error occured, disable the disk */
@@ -622,9 +622,9 @@ static void ace_fsm_dostate(struct ace_device *ace)
622 622
623 /* Record disk parameters */ 623 /* Record disk parameters */
624 set_capacity(ace->gd, 624 set_capacity(ace->gd,
625 ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY)); 625 ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
626 dev_info(ace->dev, "capacity: %i sectors\n", 626 dev_info(ace->dev, "capacity: %i sectors\n",
627 ata_id_u32(&ace->cf_id, ATA_ID_LBA_CAPACITY)); 627 ata_id_u32(ace->cf_id, ATA_ID_LBA_CAPACITY));
628 } 628 }
629 629
630 /* We're done, drop to IDLE state and notify waiters */ 630 /* We're done, drop to IDLE state and notify waiters */
@@ -923,7 +923,7 @@ static int ace_release(struct gendisk *disk, fmode_t mode)
923static int ace_getgeo(struct block_device *bdev, struct hd_geometry *geo) 923static int ace_getgeo(struct block_device *bdev, struct hd_geometry *geo)
924{ 924{
925 struct ace_device *ace = bdev->bd_disk->private_data; 925 struct ace_device *ace = bdev->bd_disk->private_data;
926 u16 *cf_id = &ace->cf_id[0]; 926 u16 *cf_id = ace->cf_id;
927 927
928 dev_dbg(ace->dev, "ace_getgeo()\n"); 928 dev_dbg(ace->dev, "ace_getgeo()\n");
929 929
diff --git a/drivers/i2c/algos/i2c-algo-pca.c b/drivers/i2c/algos/i2c-algo-pca.c
index f68e5f8e23ee..6318f7ddc1d4 100644
--- a/drivers/i2c/algos/i2c-algo-pca.c
+++ b/drivers/i2c/algos/i2c-algo-pca.c
@@ -190,7 +190,7 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
190 int completed = 1; 190 int completed = 1;
191 unsigned long timeout = jiffies + i2c_adap->timeout; 191 unsigned long timeout = jiffies + i2c_adap->timeout;
192 192
193 while (pca_status(adap) != 0xf8) { 193 while ((state = pca_status(adap)) != 0xf8) {
194 if (time_before(jiffies, timeout)) { 194 if (time_before(jiffies, timeout)) {
195 msleep(10); 195 msleep(10);
196 } else { 196 } else {
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 94eae5c3cbc7..a48c8aee0218 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -604,12 +604,14 @@ comment "Graphics adapter I2C/DDC channel drivers"
604 depends on PCI 604 depends on PCI
605 605
606config I2C_VOODOO3 606config I2C_VOODOO3
607 tristate "Voodoo 3" 607 tristate "Voodoo 3 (DEPRECATED)"
608 depends on PCI 608 depends on PCI
609 select I2C_ALGOBIT 609 select I2C_ALGOBIT
610 help 610 help
611 If you say yes to this option, support will be included for the 611 If you say yes to this option, support will be included for the
612 Voodoo 3 I2C interface. 612 Voodoo 3 I2C interface. This driver is deprecated and you should
613 use the tdfxfb driver instead, which additionally provides
614 framebuffer support.
613 615
614 This driver can also be built as a module. If so, the module 616 This driver can also be built as a module. If so, the module
615 will be called i2c-voodoo3. 617 will be called i2c-voodoo3.
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index b6f3a0de6ca2..85e2e919d1cd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -716,8 +716,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
716 716
717 /* new style driver methods can't mix with legacy ones */ 717 /* new style driver methods can't mix with legacy ones */
718 if (is_newstyle_driver(driver)) { 718 if (is_newstyle_driver(driver)) {
719 if (driver->attach_adapter || driver->detach_adapter 719 if (driver->detach_adapter || driver->detach_client) {
720 || driver->detach_client) {
721 printk(KERN_WARNING 720 printk(KERN_WARNING
722 "i2c-core: driver [%s] is confused\n", 721 "i2c-core: driver [%s] is confused\n",
723 driver->driver.name); 722 driver->driver.name);
diff --git a/drivers/ide/at91_ide.c b/drivers/ide/at91_ide.c
index 8eda552326e9..403d0e4265db 100644
--- a/drivers/ide/at91_ide.c
+++ b/drivers/ide/at91_ide.c
@@ -20,7 +20,6 @@
20 * 20 *
21 */ 21 */
22 22
23#include <linux/version.h>
24#include <linux/kernel.h> 23#include <linux/kernel.h>
25#include <linux/module.h> 24#include <linux/module.h>
26#include <linux/clk.h> 25#include <linux/clk.h>
@@ -175,90 +174,6 @@ static void at91_ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
175 leave_16bit(chipselect, mode); 174 leave_16bit(chipselect, mode);
176} 175}
177 176
178static u8 ide_mm_inb(unsigned long port)
179{
180 return readb((void __iomem *) port);
181}
182
183static void ide_mm_outb(u8 value, unsigned long port)
184{
185 writeb(value, (void __iomem *) port);
186}
187
188static void at91_ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
189{
190 ide_hwif_t *hwif = drive->hwif;
191 struct ide_io_ports *io_ports = &hwif->io_ports;
192 struct ide_taskfile *tf = &cmd->tf;
193 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
194
195 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
196 HIHI = 0xFF;
197
198 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
199 ide_mm_outb(tf->hob_feature, io_ports->feature_addr);
200 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
201 ide_mm_outb(tf->hob_nsect, io_ports->nsect_addr);
202 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
203 ide_mm_outb(tf->hob_lbal, io_ports->lbal_addr);
204 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
205 ide_mm_outb(tf->hob_lbam, io_ports->lbam_addr);
206 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
207 ide_mm_outb(tf->hob_lbah, io_ports->lbah_addr);
208
209 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
210 ide_mm_outb(tf->feature, io_ports->feature_addr);
211 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
212 ide_mm_outb(tf->nsect, io_ports->nsect_addr);
213 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
214 ide_mm_outb(tf->lbal, io_ports->lbal_addr);
215 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
216 ide_mm_outb(tf->lbam, io_ports->lbam_addr);
217 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
218 ide_mm_outb(tf->lbah, io_ports->lbah_addr);
219
220 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
221 ide_mm_outb((tf->device & HIHI) | drive->select, io_ports->device_addr);
222}
223
224static void at91_ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
225{
226 ide_hwif_t *hwif = drive->hwif;
227 struct ide_io_ports *io_ports = &hwif->io_ports;
228 struct ide_taskfile *tf = &cmd->tf;
229
230 /* be sure we're looking at the low order bits */
231 ide_mm_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
232
233 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
234 tf->error = ide_mm_inb(io_ports->feature_addr);
235 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
236 tf->nsect = ide_mm_inb(io_ports->nsect_addr);
237 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
238 tf->lbal = ide_mm_inb(io_ports->lbal_addr);
239 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
240 tf->lbam = ide_mm_inb(io_ports->lbam_addr);
241 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
242 tf->lbah = ide_mm_inb(io_ports->lbah_addr);
243 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
244 tf->device = ide_mm_inb(io_ports->device_addr);
245
246 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
247 ide_mm_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
248
249 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
250 tf->hob_error = ide_mm_inb(io_ports->feature_addr);
251 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
252 tf->hob_nsect = ide_mm_inb(io_ports->nsect_addr);
253 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
254 tf->hob_lbal = ide_mm_inb(io_ports->lbal_addr);
255 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
256 tf->hob_lbam = ide_mm_inb(io_ports->lbam_addr);
257 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
258 tf->hob_lbah = ide_mm_inb(io_ports->lbah_addr);
259 }
260}
261
262static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio) 177static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
263{ 178{
264 struct ide_timing *timing; 179 struct ide_timing *timing;
@@ -284,8 +199,8 @@ static const struct ide_tp_ops at91_ide_tp_ops = {
284 .write_devctl = ide_write_devctl, 199 .write_devctl = ide_write_devctl,
285 200
286 .dev_select = ide_dev_select, 201 .dev_select = ide_dev_select,
287 .tf_load = at91_ide_tf_load, 202 .tf_load = ide_tf_load,
288 .tf_read = at91_ide_tf_read, 203 .tf_read = ide_tf_read,
289 204
290 .input_data = at91_ide_input_data, 205 .input_data = at91_ide_input_data,
291 .output_data = at91_ide_output_data, 206 .output_data = at91_ide_output_data,
@@ -300,7 +215,7 @@ static const struct ide_port_info at91_ide_port_info __initdata = {
300 .tp_ops = &at91_ide_tp_ops, 215 .tp_ops = &at91_ide_tp_ops,
301 .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE | 216 .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE |
302 IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS, 217 IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS,
303 .pio_mask = ATA_PIO5, 218 .pio_mask = ATA_PIO6,
304}; 219};
305 220
306/* 221/*
diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c
index afa2af9a362b..0e2df6755ec9 100644
--- a/drivers/ide/falconide.c
+++ b/drivers/ide/falconide.c
@@ -20,6 +20,7 @@
20#include <asm/atarihw.h> 20#include <asm/atarihw.h>
21#include <asm/atariints.h> 21#include <asm/atariints.h>
22#include <asm/atari_stdma.h> 22#include <asm/atari_stdma.h>
23#include <asm/ide.h>
23 24
24#define DRV_NAME "falconide" 25#define DRV_NAME "falconide"
25 26
@@ -67,8 +68,10 @@ static void falconide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
67{ 68{
68 unsigned long data_addr = drive->hwif->io_ports.data_addr; 69 unsigned long data_addr = drive->hwif->io_ports.data_addr;
69 70
70 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 71 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
71 return insw(data_addr, buf, (len + 1) / 2); 72 __ide_mm_insw(data_addr, buf, (len + 1) / 2);
73 return;
74 }
72 75
73 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 76 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
74} 77}
@@ -78,8 +81,10 @@ static void falconide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
78{ 81{
79 unsigned long data_addr = drive->hwif->io_ports.data_addr; 82 unsigned long data_addr = drive->hwif->io_ports.data_addr;
80 83
81 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 84 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
82 return outsw(data_addr, buf, (len + 1) / 2); 85 __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
86 return;
87 }
83 88
84 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 89 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
85} 90}
diff --git a/drivers/ide/ide-acpi.c b/drivers/ide/ide-acpi.c
index 12f436951bff..77f79d26b264 100644
--- a/drivers/ide/ide-acpi.c
+++ b/drivers/ide/ide-acpi.c
@@ -318,8 +318,9 @@ static int do_drive_set_taskfiles(ide_drive_t *drive,
318 318
319 /* convert GTF to taskfile */ 319 /* convert GTF to taskfile */
320 memset(&cmd, 0, sizeof(cmd)); 320 memset(&cmd, 0, sizeof(cmd));
321 memcpy(&cmd.tf_array[7], gtf, REGS_PER_GTF); 321 memcpy(&cmd.tf.feature, gtf, REGS_PER_GTF);
322 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 322 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
323 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
323 324
324 err = ide_no_data_taskfile(drive, &cmd); 325 err = ide_no_data_taskfile(drive, &cmd);
325 if (err) { 326 if (err) {
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 3e43b889dd64..7201b176d75b 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -254,16 +254,13 @@ EXPORT_SYMBOL_GPL(ide_cd_get_xferlen);
254 254
255void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason) 255void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason)
256{ 256{
257 struct ide_cmd cmd; 257 struct ide_taskfile tf;
258 258
259 memset(&cmd, 0, sizeof(cmd)); 259 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT |
260 cmd.tf_flags = IDE_TFLAG_IN_LBAH | IDE_TFLAG_IN_LBAM | 260 IDE_VALID_LBAM | IDE_VALID_LBAH);
261 IDE_TFLAG_IN_NSECT;
262 261
263 drive->hwif->tp_ops->tf_read(drive, &cmd); 262 *bcount = (tf.lbah << 8) | tf.lbam;
264 263 *ireason = tf.nsect & 3;
265 *bcount = (cmd.tf.lbah << 8) | cmd.tf.lbam;
266 *ireason = cmd.tf.nsect & 3;
267} 264}
268EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason); 265EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason);
269 266
@@ -439,12 +436,12 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
439 return ide_started; 436 return ide_started;
440} 437}
441 438
442static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags, 439static void ide_init_packet_cmd(struct ide_cmd *cmd, u8 valid_tf,
443 u16 bcount, u8 dma) 440 u16 bcount, u8 dma)
444{ 441{
445 cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO; 442 cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO;
446 cmd->tf_flags |= IDE_TFLAG_OUT_LBAH | IDE_TFLAG_OUT_LBAM | 443 cmd->valid.out.tf = IDE_VALID_LBAH | IDE_VALID_LBAM |
447 IDE_TFLAG_OUT_FEATURE | tf_flags; 444 IDE_VALID_FEATURE | valid_tf;
448 cmd->tf.command = ATA_CMD_PACKET; 445 cmd->tf.command = ATA_CMD_PACKET;
449 cmd->tf.feature = dma; /* Use PIO/DMA */ 446 cmd->tf.feature = dma; /* Use PIO/DMA */
450 cmd->tf.lbam = bcount & 0xff; 447 cmd->tf.lbam = bcount & 0xff;
@@ -453,14 +450,11 @@ static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags,
453 450
454static u8 ide_read_ireason(ide_drive_t *drive) 451static u8 ide_read_ireason(ide_drive_t *drive)
455{ 452{
456 struct ide_cmd cmd; 453 struct ide_taskfile tf;
457
458 memset(&cmd, 0, sizeof(cmd));
459 cmd.tf_flags = IDE_TFLAG_IN_NSECT;
460 454
461 drive->hwif->tp_ops->tf_read(drive, &cmd); 455 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT);
462 456
463 return cmd.tf.nsect & 3; 457 return tf.nsect & 3;
464} 458}
465 459
466static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason) 460static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason)
@@ -588,12 +582,12 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
588 ide_expiry_t *expiry = NULL; 582 ide_expiry_t *expiry = NULL;
589 struct request *rq = hwif->rq; 583 struct request *rq = hwif->rq;
590 unsigned int timeout; 584 unsigned int timeout;
591 u32 tf_flags;
592 u16 bcount; 585 u16 bcount;
586 u8 valid_tf;
593 u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT); 587 u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT);
594 588
595 if (dev_is_idecd(drive)) { 589 if (dev_is_idecd(drive)) {
596 tf_flags = IDE_TFLAG_OUT_NSECT | IDE_TFLAG_OUT_LBAL; 590 valid_tf = IDE_VALID_NSECT | IDE_VALID_LBAL;
597 bcount = ide_cd_get_xferlen(rq); 591 bcount = ide_cd_get_xferlen(rq);
598 expiry = ide_cd_expiry; 592 expiry = ide_cd_expiry;
599 timeout = ATAPI_WAIT_PC; 593 timeout = ATAPI_WAIT_PC;
@@ -607,7 +601,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
607 pc->xferred = 0; 601 pc->xferred = 0;
608 pc->cur_pos = pc->buf; 602 pc->cur_pos = pc->buf;
609 603
610 tf_flags = IDE_TFLAG_OUT_DEVICE; 604 valid_tf = IDE_VALID_DEVICE;
611 bcount = ((drive->media == ide_tape) ? 605 bcount = ((drive->media == ide_tape) ?
612 pc->req_xfer : 606 pc->req_xfer :
613 min(pc->req_xfer, 63 * 1024)); 607 min(pc->req_xfer, 63 * 1024));
@@ -627,7 +621,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)
627 : WAIT_TAPE_CMD; 621 : WAIT_TAPE_CMD;
628 } 622 }
629 623
630 ide_init_packet_cmd(cmd, tf_flags, bcount, drive->dma); 624 ide_init_packet_cmd(cmd, valid_tf, bcount, drive->dma);
631 625
632 (void)do_rw_taskfile(drive, cmd); 626 (void)do_rw_taskfile(drive, cmd);
633 627
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 35729a47f797..3aec19d1fdfc 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -265,35 +265,62 @@ static void ide_cd_complete_failed_rq(ide_drive_t *drive, struct request *rq)
265 cdrom_analyze_sense_data(drive, NULL, sense); 265 cdrom_analyze_sense_data(drive, NULL, sense);
266} 266}
267 267
268
268/* 269/*
270 * Allow the drive 5 seconds to recover; some devices will return NOT_READY
271 * while flushing data from cache.
272 *
273 * returns: 0 failed (write timeout expired)
274 * 1 success
275 */
276static int ide_cd_breathe(ide_drive_t *drive, struct request *rq)
277{
278
279 struct cdrom_info *info = drive->driver_data;
280
281 if (!rq->errors)
282 info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
283
284 rq->errors = 1;
285
286 if (time_after(jiffies, info->write_timeout))
287 return 0;
288 else {
289 struct request_queue *q = drive->queue;
290 unsigned long flags;
291
292 /*
293 * take a breather relying on the unplug timer to kick us again
294 */
295
296 spin_lock_irqsave(q->queue_lock, flags);
297 blk_plug_device(q);
298 spin_unlock_irqrestore(q->queue_lock, flags);
299
300 return 1;
301 }
302}
303
304/**
269 * Returns: 305 * Returns:
270 * 0: if the request should be continued. 306 * 0: if the request should be continued.
271 * 1: if the request will be going through error recovery. 307 * 1: if the request will be going through error recovery.
272 * 2: if the request should be ended. 308 * 2: if the request should be ended.
273 */ 309 */
274static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret) 310static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
275{ 311{
276 ide_hwif_t *hwif = drive->hwif; 312 ide_hwif_t *hwif = drive->hwif;
277 struct request *rq = hwif->rq; 313 struct request *rq = hwif->rq;
278 int stat, err, sense_key; 314 int err, sense_key, do_end_request = 0;
279 315 u8 quiet = rq->cmd_flags & REQ_QUIET;
280 /* check for errors */
281 stat = hwif->tp_ops->read_status(hwif);
282
283 if (stat_ret)
284 *stat_ret = stat;
285
286 if (OK_STAT(stat, good_stat, BAD_R_STAT))
287 return 0;
288 316
289 /* get the IDE error register */ 317 /* get the IDE error register */
290 err = ide_read_error(drive); 318 err = ide_read_error(drive);
291 sense_key = err >> 4; 319 sense_key = err >> 4;
292 320
293 ide_debug_log(IDE_DBG_RQ, "stat: 0x%x, good_stat: 0x%x, cmd[0]: 0x%x, " 321 ide_debug_log(IDE_DBG_RQ, "cmd: 0x%x, rq->cmd_type: 0x%x, err: 0x%x, "
294 "rq->cmd_type: 0x%x, err: 0x%x", 322 "stat 0x%x",
295 stat, good_stat, rq->cmd[0], rq->cmd_type, 323 rq->cmd[0], rq->cmd_type, err, stat);
296 err);
297 324
298 if (blk_sense_request(rq)) { 325 if (blk_sense_request(rq)) {
299 /* 326 /*
@@ -303,151 +330,108 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
303 */ 330 */
304 rq->cmd_flags |= REQ_FAILED; 331 rq->cmd_flags |= REQ_FAILED;
305 return 2; 332 return 2;
306 } else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) { 333 }
307 /* All other functions, except for READ. */
308 334
309 /* 335 /* if we have an error, pass CHECK_CONDITION as the SCSI status byte */
310 * if we have an error, pass back CHECK_CONDITION as the 336 if (blk_pc_request(rq) && !rq->errors)
311 * scsi status byte 337 rq->errors = SAM_STAT_CHECK_CONDITION;
312 */
313 if (blk_pc_request(rq) && !rq->errors)
314 rq->errors = SAM_STAT_CHECK_CONDITION;
315 338
316 /* check for tray open */ 339 if (blk_noretry_request(rq))
317 if (sense_key == NOT_READY) { 340 do_end_request = 1;
318 cdrom_saw_media_change(drive); 341
319 } else if (sense_key == UNIT_ATTENTION) { 342 switch (sense_key) {
320 /* check for media change */ 343 case NOT_READY:
344 if (blk_fs_request(rq) && rq_data_dir(rq) == WRITE) {
345 if (ide_cd_breathe(drive, rq))
346 return 1;
347 } else {
321 cdrom_saw_media_change(drive); 348 cdrom_saw_media_change(drive);
322 return 0; 349
323 } else if (sense_key == ILLEGAL_REQUEST && 350 if (blk_fs_request(rq) && !quiet)
324 rq->cmd[0] == GPCMD_START_STOP_UNIT) { 351 printk(KERN_ERR PFX "%s: tray open\n",
325 /* 352 drive->name);
326 * Don't print error message for this condition--
327 * SFF8090i indicates that 5/24/00 is the correct
328 * response to a request to close the tray if the
329 * drive doesn't have that capability.
330 * cdrom_log_sense() knows this!
331 */
332 } else if (!(rq->cmd_flags & REQ_QUIET)) {
333 /* otherwise, print an error */
334 ide_dump_status(drive, "packet command error", stat);
335 } 353 }
354 do_end_request = 1;
355 break;
356 case UNIT_ATTENTION:
357 cdrom_saw_media_change(drive);
336 358
337 rq->cmd_flags |= REQ_FAILED; 359 if (blk_fs_request(rq) == 0)
360 return 0;
338 361
339 /* 362 /*
340 * instead of playing games with moving completions around, 363 * Arrange to retry the request but be sure to give up if we've
341 * remove failed request completely and end it when the 364 * retried too many times.
342 * request sense has completed
343 */ 365 */
344 goto end_request; 366 if (++rq->errors > ERROR_MAX)
345
346 } else if (blk_fs_request(rq)) {
347 int do_end_request = 0;
348
349 /* handle errors from READ and WRITE requests */
350
351 if (blk_noretry_request(rq))
352 do_end_request = 1; 367 do_end_request = 1;
353 368 break;
354 if (sense_key == NOT_READY) { 369 case ILLEGAL_REQUEST:
355 /* tray open */ 370 /*
356 if (rq_data_dir(rq) == READ) { 371 * Don't print error message for this condition -- SFF8090i
357 cdrom_saw_media_change(drive); 372 * indicates that 5/24/00 is the correct response to a request
358 373 * to close the tray if the drive doesn't have that capability.
359 /* fail the request */ 374 *
360 printk(KERN_ERR PFX "%s: tray open\n", 375 * cdrom_log_sense() knows this!
361 drive->name); 376 */
362 do_end_request = 1; 377 if (rq->cmd[0] == GPCMD_START_STOP_UNIT)
363 } else { 378 break;
364 struct cdrom_info *info = drive->driver_data; 379 /* fall-through */
365 380 case DATA_PROTECT:
366 /* 381 /*
367 * Allow the drive 5 seconds to recover, some 382 * No point in retrying after an illegal request or data
368 * devices will return this error while flushing 383 * protect error.
369 * data from cache. 384 */
370 */ 385 if (!quiet)
371 if (!rq->errors)
372 info->write_timeout = jiffies +
373 ATAPI_WAIT_WRITE_BUSY;
374 rq->errors = 1;
375 if (time_after(jiffies, info->write_timeout))
376 do_end_request = 1;
377 else {
378 struct request_queue *q = drive->queue;
379 unsigned long flags;
380
381 /*
382 * take a breather relying on the unplug
383 * timer to kick us again
384 */
385 spin_lock_irqsave(q->queue_lock, flags);
386 blk_plug_device(q);
387 spin_unlock_irqrestore(q->queue_lock, flags);
388
389 return 1;
390 }
391 }
392 } else if (sense_key == UNIT_ATTENTION) {
393 /* media change */
394 cdrom_saw_media_change(drive);
395
396 /*
397 * Arrange to retry the request but be sure to give up
398 * if we've retried too many times.
399 */
400 if (++rq->errors > ERROR_MAX)
401 do_end_request = 1;
402 } else if (sense_key == ILLEGAL_REQUEST ||
403 sense_key == DATA_PROTECT) {
404 /*
405 * No point in retrying after an illegal request or data
406 * protect error.
407 */
408 ide_dump_status(drive, "command error", stat); 386 ide_dump_status(drive, "command error", stat);
409 do_end_request = 1; 387 do_end_request = 1;
410 } else if (sense_key == MEDIUM_ERROR) { 388 break;
411 /* 389 case MEDIUM_ERROR:
412 * No point in re-trying a zillion times on a bad 390 /*
413 * sector. If we got here the error is not correctable. 391 * No point in re-trying a zillion times on a bad sector.
414 */ 392 * If we got here the error is not correctable.
415 ide_dump_status(drive, "media error (bad sector)", 393 */
394 if (!quiet)
395 ide_dump_status(drive, "media error "
396 "(bad sector)", stat);
397 do_end_request = 1;
398 break;
399 case BLANK_CHECK:
400 /* disk appears blank? */
401 if (!quiet)
402 ide_dump_status(drive, "media error (blank)",
416 stat); 403 stat);
417 do_end_request = 1; 404 do_end_request = 1;
418 } else if (sense_key == BLANK_CHECK) { 405 break;
419 /* disk appears blank ?? */ 406 default:
420 ide_dump_status(drive, "media error (blank)", stat); 407 if (blk_fs_request(rq) == 0)
421 do_end_request = 1; 408 break;
422 } else if ((err & ~ATA_ABORTED) != 0) { 409 if (err & ~ATA_ABORTED) {
423 /* go to the default handler for other errors */ 410 /* go to the default handler for other errors */
424 ide_error(drive, "cdrom_decode_status", stat); 411 ide_error(drive, "cdrom_decode_status", stat);
425 return 1; 412 return 1;
426 } else if ((++rq->errors > ERROR_MAX)) { 413 } else if (++rq->errors > ERROR_MAX)
427 /* we've racked up too many retries, abort */ 414 /* we've racked up too many retries, abort */
428 do_end_request = 1; 415 do_end_request = 1;
429 } 416 }
430
431 /*
432 * End a request through request sense analysis when we have
433 * sense data. We need this in order to perform end of media
434 * processing.
435 */
436 if (do_end_request)
437 goto end_request;
438 417
439 /* 418 if (blk_fs_request(rq) == 0) {
440 * If we got a CHECK_CONDITION status, queue 419 rq->cmd_flags |= REQ_FAILED;
441 * a request sense command. 420 do_end_request = 1;
442 */
443 if (stat & ATA_ERR)
444 cdrom_queue_request_sense(drive, NULL, NULL);
445 return 1;
446 } else {
447 blk_dump_rq_flags(rq, PFX "bad rq");
448 return 2;
449 } 421 }
450 422
423 /*
424 * End a request through request sense analysis when we have sense data.
425 * We need this in order to perform end of media processing.
426 */
427 if (do_end_request)
428 goto end_request;
429
430 /* if we got a CHECK_CONDITION status, queue a request sense command */
431 if (stat & ATA_ERR)
432 cdrom_queue_request_sense(drive, NULL, NULL);
433 return 1;
434
451end_request: 435end_request:
452 if (stat & ATA_ERR) { 436 if (stat & ATA_ERR) {
453 struct request_queue *q = drive->queue; 437 struct request_queue *q = drive->queue;
@@ -624,15 +608,14 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
624 struct ide_cmd *cmd = &hwif->cmd; 608 struct ide_cmd *cmd = &hwif->cmd;
625 struct request *rq = hwif->rq; 609 struct request *rq = hwif->rq;
626 ide_expiry_t *expiry = NULL; 610 ide_expiry_t *expiry = NULL;
627 int dma_error = 0, dma, stat, thislen, uptodate = 0; 611 int dma_error = 0, dma, thislen, uptodate = 0;
628 int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc, nsectors; 612 int write = (rq_data_dir(rq) == WRITE) ? 1 : 0, rc, nsectors;
629 int sense = blk_sense_request(rq); 613 int sense = blk_sense_request(rq);
630 unsigned int timeout; 614 unsigned int timeout;
631 u16 len; 615 u16 len;
632 u8 ireason; 616 u8 ireason, stat;
633 617
634 ide_debug_log(IDE_DBG_PC, "cmd[0]: 0x%x, write: 0x%x", 618 ide_debug_log(IDE_DBG_PC, "cmd: 0x%x, write: 0x%x", rq->cmd[0], write);
635 rq->cmd[0], write);
636 619
637 /* check for errors */ 620 /* check for errors */
638 dma = drive->dma; 621 dma = drive->dma;
@@ -648,11 +631,16 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
648 } 631 }
649 } 632 }
650 633
651 rc = cdrom_decode_status(drive, 0, &stat); 634 /* check status */
652 if (rc) { 635 stat = hwif->tp_ops->read_status(hwif);
653 if (rc == 2) 636
654 goto out_end; 637 if (!OK_STAT(stat, 0, BAD_R_STAT)) {
655 return ide_stopped; 638 rc = cdrom_decode_status(drive, stat);
639 if (rc) {
640 if (rc == 2)
641 goto out_end;
642 return ide_stopped;
643 }
656 } 644 }
657 645
658 /* using dma, transfer is complete now */ 646 /* using dma, transfer is complete now */
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index c998cf8e971a..a9fbe2c31210 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -97,35 +97,38 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
97 } 97 }
98 98
99 memset(&cmd, 0, sizeof(cmd)); 99 memset(&cmd, 0, sizeof(cmd));
100 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 100 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
101 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
101 102
102 if (drive->dev_flags & IDE_DFLAG_LBA) { 103 if (drive->dev_flags & IDE_DFLAG_LBA) {
103 if (lba48) { 104 if (lba48) {
104 pr_debug("%s: LBA=0x%012llx\n", drive->name, 105 pr_debug("%s: LBA=0x%012llx\n", drive->name,
105 (unsigned long long)block); 106 (unsigned long long)block);
106 107
107 tf->hob_nsect = (nsectors >> 8) & 0xff;
108 tf->hob_lbal = (u8)(block >> 24);
109 if (sizeof(block) != 4) {
110 tf->hob_lbam = (u8)((u64)block >> 32);
111 tf->hob_lbah = (u8)((u64)block >> 40);
112 }
113
114 tf->nsect = nsectors & 0xff; 108 tf->nsect = nsectors & 0xff;
115 tf->lbal = (u8) block; 109 tf->lbal = (u8) block;
116 tf->lbam = (u8)(block >> 8); 110 tf->lbam = (u8)(block >> 8);
117 tf->lbah = (u8)(block >> 16); 111 tf->lbah = (u8)(block >> 16);
112 tf->device = ATA_LBA;
118 113
119 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 114 tf = &cmd.hob;
115 tf->nsect = (nsectors >> 8) & 0xff;
116 tf->lbal = (u8)(block >> 24);
117 if (sizeof(block) != 4) {
118 tf->lbam = (u8)((u64)block >> 32);
119 tf->lbah = (u8)((u64)block >> 40);
120 }
121
122 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
123 cmd.valid.in.hob = IDE_VALID_IN_HOB;
124 cmd.tf_flags |= IDE_TFLAG_LBA48;
120 } else { 125 } else {
121 tf->nsect = nsectors & 0xff; 126 tf->nsect = nsectors & 0xff;
122 tf->lbal = block; 127 tf->lbal = block;
123 tf->lbam = block >>= 8; 128 tf->lbam = block >>= 8;
124 tf->lbah = block >>= 8; 129 tf->lbah = block >>= 8;
125 tf->device = (block >> 8) & 0xf; 130 tf->device = ((block >> 8) & 0xf) | ATA_LBA;
126 } 131 }
127
128 tf->device |= ATA_LBA;
129 } else { 132 } else {
130 unsigned int sect, head, cyl, track; 133 unsigned int sect, head, cyl, track;
131 134
@@ -220,15 +223,19 @@ static u64 idedisk_read_native_max_address(ide_drive_t *drive, int lba48)
220 tf->command = ATA_CMD_READ_NATIVE_MAX; 223 tf->command = ATA_CMD_READ_NATIVE_MAX;
221 tf->device = ATA_LBA; 224 tf->device = ATA_LBA;
222 225
223 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 226 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
224 if (lba48) 227 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
225 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 228 if (lba48) {
229 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
230 cmd.valid.in.hob = IDE_VALID_IN_HOB;
231 cmd.tf_flags = IDE_TFLAG_LBA48;
232 }
226 233
227 ide_no_data_taskfile(drive, &cmd); 234 ide_no_data_taskfile(drive, &cmd);
228 235
229 /* if OK, compute maximum address value */ 236 /* if OK, compute maximum address value */
230 if (!(tf->status & ATA_ERR)) 237 if (!(tf->status & ATA_ERR))
231 addr = ide_get_lba_addr(tf, lba48) + 1; 238 addr = ide_get_lba_addr(&cmd, lba48) + 1;
232 239
233 return addr; 240 return addr;
234} 241}
@@ -250,9 +257,9 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
250 tf->lbam = (addr_req >>= 8) & 0xff; 257 tf->lbam = (addr_req >>= 8) & 0xff;
251 tf->lbah = (addr_req >>= 8) & 0xff; 258 tf->lbah = (addr_req >>= 8) & 0xff;
252 if (lba48) { 259 if (lba48) {
253 tf->hob_lbal = (addr_req >>= 8) & 0xff; 260 cmd.hob.lbal = (addr_req >>= 8) & 0xff;
254 tf->hob_lbam = (addr_req >>= 8) & 0xff; 261 cmd.hob.lbam = (addr_req >>= 8) & 0xff;
255 tf->hob_lbah = (addr_req >>= 8) & 0xff; 262 cmd.hob.lbah = (addr_req >>= 8) & 0xff;
256 tf->command = ATA_CMD_SET_MAX_EXT; 263 tf->command = ATA_CMD_SET_MAX_EXT;
257 } else { 264 } else {
258 tf->device = (addr_req >>= 8) & 0x0f; 265 tf->device = (addr_req >>= 8) & 0x0f;
@@ -260,15 +267,19 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
260 } 267 }
261 tf->device |= ATA_LBA; 268 tf->device |= ATA_LBA;
262 269
263 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 270 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
264 if (lba48) 271 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
265 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_HOB); 272 if (lba48) {
273 cmd.valid.out.hob = IDE_VALID_OUT_HOB;
274 cmd.valid.in.hob = IDE_VALID_IN_HOB;
275 cmd.tf_flags = IDE_TFLAG_LBA48;
276 }
266 277
267 ide_no_data_taskfile(drive, &cmd); 278 ide_no_data_taskfile(drive, &cmd);
268 279
269 /* if OK, compute maximum address value */ 280 /* if OK, compute maximum address value */
270 if (!(tf->status & ATA_ERR)) 281 if (!(tf->status & ATA_ERR))
271 addr_set = ide_get_lba_addr(tf, lba48) + 1; 282 addr_set = ide_get_lba_addr(&cmd, lba48) + 1;
272 283
273 return addr_set; 284 return addr_set;
274} 285}
@@ -395,8 +406,8 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
395 cmd->tf.command = ATA_CMD_FLUSH_EXT; 406 cmd->tf.command = ATA_CMD_FLUSH_EXT;
396 else 407 else
397 cmd->tf.command = ATA_CMD_FLUSH; 408 cmd->tf.command = ATA_CMD_FLUSH;
398 cmd->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE | 409 cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
399 IDE_TFLAG_DYN; 410 cmd->tf_flags = IDE_TFLAG_DYN;
400 cmd->protocol = ATA_PROT_NODATA; 411 cmd->protocol = ATA_PROT_NODATA;
401 412
402 rq->cmd_type = REQ_TYPE_ATA_TASKFILE; 413 rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
@@ -457,7 +468,8 @@ static int ide_do_setfeature(ide_drive_t *drive, u8 feature, u8 nsect)
457 cmd.tf.feature = feature; 468 cmd.tf.feature = feature;
458 cmd.tf.nsect = nsect; 469 cmd.tf.nsect = nsect;
459 cmd.tf.command = ATA_CMD_SET_FEATURES; 470 cmd.tf.command = ATA_CMD_SET_FEATURES;
460 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 471 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
472 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
461 473
462 return ide_no_data_taskfile(drive, &cmd); 474 return ide_no_data_taskfile(drive, &cmd);
463} 475}
@@ -533,7 +545,8 @@ static int do_idedisk_flushcache(ide_drive_t *drive)
533 cmd.tf.command = ATA_CMD_FLUSH_EXT; 545 cmd.tf.command = ATA_CMD_FLUSH_EXT;
534 else 546 else
535 cmd.tf.command = ATA_CMD_FLUSH; 547 cmd.tf.command = ATA_CMD_FLUSH;
536 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 548 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
549 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
537 550
538 return ide_no_data_taskfile(drive, &cmd); 551 return ide_no_data_taskfile(drive, &cmd);
539} 552}
@@ -715,7 +728,8 @@ static int ide_disk_set_doorlock(ide_drive_t *drive, struct gendisk *disk,
715 728
716 memset(&cmd, 0, sizeof(cmd)); 729 memset(&cmd, 0, sizeof(cmd));
717 cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK; 730 cmd.tf.command = on ? ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK;
718 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 731 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
732 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
719 733
720 ret = ide_no_data_taskfile(drive, &cmd); 734 ret = ide_no_data_taskfile(drive, &cmd);
721 735
diff --git a/drivers/ide/ide-disk_proc.c b/drivers/ide/ide-disk_proc.c
index eaea3bef2073..19f263bf0a9e 100644
--- a/drivers/ide/ide-disk_proc.c
+++ b/drivers/ide/ide-disk_proc.c
@@ -13,7 +13,8 @@ static int smart_enable(ide_drive_t *drive)
13 tf->lbam = ATA_SMART_LBAM_PASS; 13 tf->lbam = ATA_SMART_LBAM_PASS;
14 tf->lbah = ATA_SMART_LBAH_PASS; 14 tf->lbah = ATA_SMART_LBAH_PASS;
15 tf->command = ATA_CMD_SMART; 15 tf->command = ATA_CMD_SMART;
16 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 16 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
17 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
17 18
18 return ide_no_data_taskfile(drive, &cmd); 19 return ide_no_data_taskfile(drive, &cmd);
19} 20}
@@ -29,7 +30,8 @@ static int get_smart_data(ide_drive_t *drive, u8 *buf, u8 sub_cmd)
29 tf->lbam = ATA_SMART_LBAM_PASS; 30 tf->lbam = ATA_SMART_LBAM_PASS;
30 tf->lbah = ATA_SMART_LBAH_PASS; 31 tf->lbah = ATA_SMART_LBAH_PASS;
31 tf->command = ATA_CMD_SMART; 32 tf->command = ATA_CMD_SMART;
32 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 33 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
34 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
33 cmd.protocol = ATA_PROT_PIO; 35 cmd.protocol = ATA_PROT_PIO;
34 36
35 return ide_raw_taskfile(drive, &cmd, buf, 1); 37 return ide_raw_taskfile(drive, &cmd, buf, 1);
diff --git a/drivers/ide/ide-dma-sff.c b/drivers/ide/ide-dma-sff.c
index 16fc46edc32d..e4cdf78cc3e9 100644
--- a/drivers/ide/ide-dma-sff.c
+++ b/drivers/ide/ide-dma-sff.c
@@ -277,8 +277,6 @@ void ide_dma_start(ide_drive_t *drive)
277 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD); 277 dma_cmd = inb(hwif->dma_base + ATA_DMA_CMD);
278 outb(dma_cmd | ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD); 278 outb(dma_cmd | ATA_DMA_START, hwif->dma_base + ATA_DMA_CMD);
279 } 279 }
280
281 wmb();
282} 280}
283EXPORT_SYMBOL_GPL(ide_dma_start); 281EXPORT_SYMBOL_GPL(ide_dma_start);
284 282
@@ -286,7 +284,7 @@ EXPORT_SYMBOL_GPL(ide_dma_start);
286int ide_dma_end(ide_drive_t *drive) 284int ide_dma_end(ide_drive_t *drive)
287{ 285{
288 ide_hwif_t *hwif = drive->hwif; 286 ide_hwif_t *hwif = drive->hwif;
289 u8 dma_stat = 0, dma_cmd = 0, mask; 287 u8 dma_stat = 0, dma_cmd = 0;
290 288
291 /* stop DMA */ 289 /* stop DMA */
292 if (hwif->host_flags & IDE_HFLAG_MMIO) { 290 if (hwif->host_flags & IDE_HFLAG_MMIO) {
@@ -304,11 +302,10 @@ int ide_dma_end(ide_drive_t *drive)
304 /* clear INTR & ERROR bits */ 302 /* clear INTR & ERROR bits */
305 ide_dma_sff_write_status(hwif, dma_stat | ATA_DMA_ERR | ATA_DMA_INTR); 303 ide_dma_sff_write_status(hwif, dma_stat | ATA_DMA_ERR | ATA_DMA_INTR);
306 304
307 wmb(); 305#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
308 306
309 /* verify good DMA status */ 307 /* verify good DMA status */
310 mask = ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR; 308 if ((dma_stat & CHECK_DMA_MASK) != ATA_DMA_INTR)
311 if ((dma_stat & mask) != ATA_DMA_INTR)
312 return 0x10 | dma_stat; 309 return 0x10 | dma_stat;
313 return 0; 310 return 0;
314} 311}
diff --git a/drivers/ide/ide-h8300.c b/drivers/ide/ide-h8300.c
index dac9a6d44963..c06ebdc4a130 100644
--- a/drivers/ide/ide-h8300.c
+++ b/drivers/ide/ide-h8300.c
@@ -22,103 +22,6 @@
22 (r); \ 22 (r); \
23}) 23})
24 24
25static void mm_outw(u16 d, unsigned long a)
26{
27 __asm__("mov.b %w0,r2h\n\t"
28 "mov.b %x0,r2l\n\t"
29 "mov.w r2,@%1"
30 :
31 :"r"(d),"r"(a)
32 :"er2");
33}
34
35static u16 mm_inw(unsigned long a)
36{
37 register u16 r __asm__("er0");
38 __asm__("mov.w @%1,r2\n\t"
39 "mov.b r2l,%x0\n\t"
40 "mov.b r2h,%w0"
41 :"=r"(r)
42 :"r"(a)
43 :"er2");
44 return r;
45}
46
47static void h8300_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
48{
49 ide_hwif_t *hwif = drive->hwif;
50 struct ide_io_ports *io_ports = &hwif->io_ports;
51 struct ide_taskfile *tf = &cmd->tf;
52 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
53
54 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
55 HIHI = 0xFF;
56
57 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
58 outb(tf->hob_feature, io_ports->feature_addr);
59 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
60 outb(tf->hob_nsect, io_ports->nsect_addr);
61 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
62 outb(tf->hob_lbal, io_ports->lbal_addr);
63 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
64 outb(tf->hob_lbam, io_ports->lbam_addr);
65 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
66 outb(tf->hob_lbah, io_ports->lbah_addr);
67
68 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
69 outb(tf->feature, io_ports->feature_addr);
70 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
71 outb(tf->nsect, io_ports->nsect_addr);
72 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
73 outb(tf->lbal, io_ports->lbal_addr);
74 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
75 outb(tf->lbam, io_ports->lbam_addr);
76 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
77 outb(tf->lbah, io_ports->lbah_addr);
78
79 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
80 outb((tf->device & HIHI) | drive->select,
81 io_ports->device_addr);
82}
83
84static void h8300_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
85{
86 ide_hwif_t *hwif = drive->hwif;
87 struct ide_io_ports *io_ports = &hwif->io_ports;
88 struct ide_taskfile *tf = &cmd->tf;
89
90 /* be sure we're looking at the low order bits */
91 outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
92
93 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
94 tf->error = inb(io_ports->feature_addr);
95 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
96 tf->nsect = inb(io_ports->nsect_addr);
97 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
98 tf->lbal = inb(io_ports->lbal_addr);
99 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
100 tf->lbam = inb(io_ports->lbam_addr);
101 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
102 tf->lbah = inb(io_ports->lbah_addr);
103 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
104 tf->device = inb(io_ports->device_addr);
105
106 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
107 outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
108
109 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
110 tf->hob_error = inb(io_ports->feature_addr);
111 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
112 tf->hob_nsect = inb(io_ports->nsect_addr);
113 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
114 tf->hob_lbal = inb(io_ports->lbal_addr);
115 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
116 tf->hob_lbam = inb(io_ports->lbam_addr);
117 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
118 tf->hob_lbah = inb(io_ports->lbah_addr);
119 }
120}
121
122static void mm_outsw(unsigned long addr, void *buf, u32 len) 25static void mm_outsw(unsigned long addr, void *buf, u32 len)
123{ 26{
124 unsigned short *bp = (unsigned short *)buf; 27 unsigned short *bp = (unsigned short *)buf;
@@ -152,8 +55,8 @@ static const struct ide_tp_ops h8300_tp_ops = {
152 .write_devctl = ide_write_devctl, 55 .write_devctl = ide_write_devctl,
153 56
154 .dev_select = ide_dev_select, 57 .dev_select = ide_dev_select,
155 .tf_load = h8300_tf_load, 58 .tf_load = ide_tf_load,
156 .tf_read = h8300_tf_read, 59 .tf_read = ide_tf_read,
157 60
158 .input_data = h8300_input_data, 61 .input_data = h8300_input_data,
159 .output_data = h8300_output_data, 62 .output_data = h8300_output_data,
diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
index 9cac281d82c4..46721c454518 100644
--- a/drivers/ide/ide-io-std.c
+++ b/drivers/ide/ide-io-std.c
@@ -85,98 +85,57 @@ void ide_dev_select(ide_drive_t *drive)
85} 85}
86EXPORT_SYMBOL_GPL(ide_dev_select); 86EXPORT_SYMBOL_GPL(ide_dev_select);
87 87
88void ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) 88void ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
89{ 89{
90 ide_hwif_t *hwif = drive->hwif; 90 ide_hwif_t *hwif = drive->hwif;
91 struct ide_io_ports *io_ports = &hwif->io_ports; 91 struct ide_io_ports *io_ports = &hwif->io_ports;
92 struct ide_taskfile *tf = &cmd->tf;
93 void (*tf_outb)(u8 addr, unsigned long port); 92 void (*tf_outb)(u8 addr, unsigned long port);
94 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0; 93 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
95 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
96 94
97 if (mmio) 95 if (mmio)
98 tf_outb = ide_mm_outb; 96 tf_outb = ide_mm_outb;
99 else 97 else
100 tf_outb = ide_outb; 98 tf_outb = ide_outb;
101 99
102 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) 100 if (valid & IDE_VALID_FEATURE)
103 HIHI = 0xFF;
104
105 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
106 tf_outb(tf->hob_feature, io_ports->feature_addr);
107 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
108 tf_outb(tf->hob_nsect, io_ports->nsect_addr);
109 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
110 tf_outb(tf->hob_lbal, io_ports->lbal_addr);
111 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
112 tf_outb(tf->hob_lbam, io_ports->lbam_addr);
113 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
114 tf_outb(tf->hob_lbah, io_ports->lbah_addr);
115
116 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
117 tf_outb(tf->feature, io_ports->feature_addr); 101 tf_outb(tf->feature, io_ports->feature_addr);
118 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT) 102 if (valid & IDE_VALID_NSECT)
119 tf_outb(tf->nsect, io_ports->nsect_addr); 103 tf_outb(tf->nsect, io_ports->nsect_addr);
120 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL) 104 if (valid & IDE_VALID_LBAL)
121 tf_outb(tf->lbal, io_ports->lbal_addr); 105 tf_outb(tf->lbal, io_ports->lbal_addr);
122 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM) 106 if (valid & IDE_VALID_LBAM)
123 tf_outb(tf->lbam, io_ports->lbam_addr); 107 tf_outb(tf->lbam, io_ports->lbam_addr);
124 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH) 108 if (valid & IDE_VALID_LBAH)
125 tf_outb(tf->lbah, io_ports->lbah_addr); 109 tf_outb(tf->lbah, io_ports->lbah_addr);
126 110 if (valid & IDE_VALID_DEVICE)
127 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) 111 tf_outb(tf->device, io_ports->device_addr);
128 tf_outb((tf->device & HIHI) | drive->select,
129 io_ports->device_addr);
130} 112}
131EXPORT_SYMBOL_GPL(ide_tf_load); 113EXPORT_SYMBOL_GPL(ide_tf_load);
132 114
133void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 115void ide_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
134{ 116{
135 ide_hwif_t *hwif = drive->hwif; 117 ide_hwif_t *hwif = drive->hwif;
136 struct ide_io_ports *io_ports = &hwif->io_ports; 118 struct ide_io_ports *io_ports = &hwif->io_ports;
137 struct ide_taskfile *tf = &cmd->tf;
138 void (*tf_outb)(u8 addr, unsigned long port);
139 u8 (*tf_inb)(unsigned long port); 119 u8 (*tf_inb)(unsigned long port);
140 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0; 120 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
141 121
142 if (mmio) { 122 if (mmio)
143 tf_outb = ide_mm_outb;
144 tf_inb = ide_mm_inb; 123 tf_inb = ide_mm_inb;
145 } else { 124 else
146 tf_outb = ide_outb;
147 tf_inb = ide_inb; 125 tf_inb = ide_inb;
148 }
149
150 /* be sure we're looking at the low order bits */
151 tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
152 126
153 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR) 127 if (valid & IDE_VALID_ERROR)
154 tf->error = tf_inb(io_ports->feature_addr); 128 tf->error = tf_inb(io_ports->feature_addr);
155 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 129 if (valid & IDE_VALID_NSECT)
156 tf->nsect = tf_inb(io_ports->nsect_addr); 130 tf->nsect = tf_inb(io_ports->nsect_addr);
157 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 131 if (valid & IDE_VALID_LBAL)
158 tf->lbal = tf_inb(io_ports->lbal_addr); 132 tf->lbal = tf_inb(io_ports->lbal_addr);
159 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 133 if (valid & IDE_VALID_LBAM)
160 tf->lbam = tf_inb(io_ports->lbam_addr); 134 tf->lbam = tf_inb(io_ports->lbam_addr);
161 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 135 if (valid & IDE_VALID_LBAH)
162 tf->lbah = tf_inb(io_ports->lbah_addr); 136 tf->lbah = tf_inb(io_ports->lbah_addr);
163 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 137 if (valid & IDE_VALID_DEVICE)
164 tf->device = tf_inb(io_ports->device_addr); 138 tf->device = tf_inb(io_ports->device_addr);
165
166 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
167 tf_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
168
169 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
170 tf->hob_error = tf_inb(io_ports->feature_addr);
171 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
172 tf->hob_nsect = tf_inb(io_ports->nsect_addr);
173 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
174 tf->hob_lbal = tf_inb(io_ports->lbal_addr);
175 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
176 tf->hob_lbam = tf_inb(io_ports->lbam_addr);
177 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
178 tf->hob_lbah = tf_inb(io_ports->lbah_addr);
179 }
180} 139}
181EXPORT_SYMBOL_GPL(ide_tf_read); 140EXPORT_SYMBOL_GPL(ide_tf_read);
182 141
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 1deb6d29b186..2ae02b8d7f8e 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -86,18 +86,18 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err)
86 86
87 tp_ops->input_data(drive, cmd, data, 2); 87 tp_ops->input_data(drive, cmd, data, 2);
88 88
89 tf->data = data[0]; 89 cmd->tf.data = data[0];
90 tf->hob_data = data[1]; 90 cmd->hob.data = data[1];
91 } 91 }
92 92
93 tp_ops->tf_read(drive, cmd); 93 ide_tf_readback(drive, cmd);
94 94
95 if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) && 95 if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) &&
96 tf_cmd == ATA_CMD_IDLEIMMEDIATE) { 96 tf_cmd == ATA_CMD_IDLEIMMEDIATE) {
97 if (tf->lbal != 0xc4) { 97 if (tf->lbal != 0xc4) {
98 printk(KERN_ERR "%s: head unload failed!\n", 98 printk(KERN_ERR "%s: head unload failed!\n",
99 drive->name); 99 drive->name);
100 ide_tf_dump(drive->name, tf); 100 ide_tf_dump(drive->name, cmd);
101 } else 101 } else
102 drive->dev_flags |= IDE_DFLAG_PARKED; 102 drive->dev_flags |= IDE_DFLAG_PARKED;
103 } 103 }
@@ -205,8 +205,9 @@ static ide_startstop_t ide_disk_special(ide_drive_t *drive)
205 return ide_stopped; 205 return ide_stopped;
206 } 206 }
207 207
208 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE | 208 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
209 IDE_TFLAG_CUSTOM_HANDLER; 209 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
210 cmd.tf_flags = IDE_TFLAG_CUSTOM_HANDLER;
210 211
211 do_rw_taskfile(drive, &cmd); 212 do_rw_taskfile(drive, &cmd);
212 213
diff --git a/drivers/ide/ide-ioctls.c b/drivers/ide/ide-ioctls.c
index 770142767437..c1c25ebbaa1f 100644
--- a/drivers/ide/ide-ioctls.c
+++ b/drivers/ide/ide-ioctls.c
@@ -141,11 +141,12 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg)
141 tf->lbal = args[1]; 141 tf->lbal = args[1];
142 tf->lbam = 0x4f; 142 tf->lbam = 0x4f;
143 tf->lbah = 0xc2; 143 tf->lbah = 0xc2;
144 cmd.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_IN_NSECT; 144 cmd.valid.out.tf = IDE_VALID_OUT_TF;
145 cmd.valid.in.tf = IDE_VALID_NSECT;
145 } else { 146 } else {
146 tf->nsect = args[1]; 147 tf->nsect = args[1];
147 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT | 148 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
148 IDE_TFLAG_IN_NSECT; 149 cmd.valid.in.tf = IDE_VALID_NSECT;
149 } 150 }
150 tf->command = args[0]; 151 tf->command = args[0];
151 cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA; 152 cmd.protocol = args[3] ? ATA_PROT_PIO : ATA_PROT_NODATA;
@@ -205,14 +206,15 @@ static int ide_task_ioctl(ide_drive_t *drive, unsigned long arg)
205 return -EFAULT; 206 return -EFAULT;
206 207
207 memset(&cmd, 0, sizeof(cmd)); 208 memset(&cmd, 0, sizeof(cmd));
208 memcpy(&cmd.tf_array[7], &args[1], 6); 209 memcpy(&cmd.tf.feature, &args[1], 6);
209 cmd.tf.command = args[0]; 210 cmd.tf.command = args[0];
210 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 211 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
212 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
211 213
212 err = ide_no_data_taskfile(drive, &cmd); 214 err = ide_no_data_taskfile(drive, &cmd);
213 215
214 args[0] = cmd.tf.command; 216 args[0] = cmd.tf.command;
215 memcpy(&args[1], &cmd.tf_array[7], 6); 217 memcpy(&args[1], &cmd.tf.feature, 6);
216 218
217 if (copy_to_user(p, args, 7)) 219 if (copy_to_user(p, args, 7))
218 err = -EFAULT; 220 err = -EFAULT;
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 27bb70ddd459..c19a221b1e18 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -37,14 +37,11 @@ void SELECT_MASK(ide_drive_t *drive, int mask)
37 37
38u8 ide_read_error(ide_drive_t *drive) 38u8 ide_read_error(ide_drive_t *drive)
39{ 39{
40 struct ide_cmd cmd; 40 struct ide_taskfile tf;
41 41
42 memset(&cmd, 0, sizeof(cmd)); 42 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_ERROR);
43 cmd.tf_flags = IDE_TFLAG_IN_ERROR;
44 43
45 drive->hwif->tp_ops->tf_read(drive, &cmd); 44 return tf.error;
46
47 return cmd.tf.error;
48} 45}
49EXPORT_SYMBOL_GPL(ide_read_error); 46EXPORT_SYMBOL_GPL(ide_read_error);
50 47
@@ -312,10 +309,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
312{ 309{
313 ide_hwif_t *hwif = drive->hwif; 310 ide_hwif_t *hwif = drive->hwif;
314 const struct ide_tp_ops *tp_ops = hwif->tp_ops; 311 const struct ide_tp_ops *tp_ops = hwif->tp_ops;
312 struct ide_taskfile tf;
315 u16 *id = drive->id, i; 313 u16 *id = drive->id, i;
316 int error = 0; 314 int error = 0;
317 u8 stat; 315 u8 stat;
318 struct ide_cmd cmd;
319 316
320#ifdef CONFIG_BLK_DEV_IDEDMA 317#ifdef CONFIG_BLK_DEV_IDEDMA
321 if (hwif->dma_ops) /* check if host supports DMA */ 318 if (hwif->dma_ops) /* check if host supports DMA */
@@ -347,12 +344,11 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
347 udelay(1); 344 udelay(1);
348 tp_ops->write_devctl(hwif, ATA_NIEN | ATA_DEVCTL_OBS); 345 tp_ops->write_devctl(hwif, ATA_NIEN | ATA_DEVCTL_OBS);
349 346
350 memset(&cmd, 0, sizeof(cmd)); 347 memset(&tf, 0, sizeof(tf));
351 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT; 348 tf.feature = SETFEATURES_XFER;
352 cmd.tf.feature = SETFEATURES_XFER; 349 tf.nsect = speed;
353 cmd.tf.nsect = speed;
354 350
355 tp_ops->tf_load(drive, &cmd); 351 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE | IDE_VALID_NSECT);
356 352
357 tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES); 353 tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES);
358 354
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c
index 217b7fdf2b17..56ff8c46c7d1 100644
--- a/drivers/ide/ide-lib.c
+++ b/drivers/ide/ide-lib.c
@@ -49,16 +49,17 @@ static void ide_dump_opcode(ide_drive_t *drive)
49 printk(KERN_CONT "0x%02x\n", cmd->tf.command); 49 printk(KERN_CONT "0x%02x\n", cmd->tf.command);
50} 50}
51 51
52u64 ide_get_lba_addr(struct ide_taskfile *tf, int lba48) 52u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48)
53{ 53{
54 struct ide_taskfile *tf = &cmd->tf;
54 u32 high, low; 55 u32 high, low;
55 56
56 if (lba48)
57 high = (tf->hob_lbah << 16) | (tf->hob_lbam << 8) |
58 tf->hob_lbal;
59 else
60 high = tf->device & 0xf;
61 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal; 57 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
58 if (lba48) {
59 tf = &cmd->hob;
60 high = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
61 } else
62 high = tf->device & 0xf;
62 63
63 return ((u64)high << 24) | low; 64 return ((u64)high << 24) | low;
64} 65}
@@ -71,17 +72,18 @@ static void ide_dump_sector(ide_drive_t *drive)
71 u8 lba48 = !!(drive->dev_flags & IDE_DFLAG_LBA48); 72 u8 lba48 = !!(drive->dev_flags & IDE_DFLAG_LBA48);
72 73
73 memset(&cmd, 0, sizeof(cmd)); 74 memset(&cmd, 0, sizeof(cmd));
74 if (lba48) 75 if (lba48) {
75 cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_HOB_LBA | 76 cmd.valid.in.tf = IDE_VALID_LBA;
76 IDE_TFLAG_LBA48; 77 cmd.valid.in.hob = IDE_VALID_LBA;
77 else 78 cmd.tf_flags = IDE_TFLAG_LBA48;
78 cmd.tf_flags = IDE_TFLAG_IN_LBA | IDE_TFLAG_IN_DEVICE; 79 } else
80 cmd.valid.in.tf = IDE_VALID_LBA | IDE_VALID_DEVICE;
79 81
80 drive->hwif->tp_ops->tf_read(drive, &cmd); 82 ide_tf_readback(drive, &cmd);
81 83
82 if (lba48 || (tf->device & ATA_LBA)) 84 if (lba48 || (tf->device & ATA_LBA))
83 printk(KERN_CONT ", LBAsect=%llu", 85 printk(KERN_CONT ", LBAsect=%llu",
84 (unsigned long long)ide_get_lba_addr(tf, lba48)); 86 (unsigned long long)ide_get_lba_addr(&cmd, lba48));
85 else 87 else
86 printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam, 88 printk(KERN_CONT ", CHS=%d/%d/%d", (tf->lbah << 8) + tf->lbam,
87 tf->device & 0xf, tf->lbal); 89 tf->device & 0xf, tf->lbal);
diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c
index 9490b446519f..310d03f2b5b7 100644
--- a/drivers/ide/ide-park.c
+++ b/drivers/ide/ide-park.c
@@ -74,7 +74,8 @@ ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
74 tf->lbal = 0x4c; 74 tf->lbal = 0x4c;
75 tf->lbam = 0x4e; 75 tf->lbam = 0x4e;
76 tf->lbah = 0x55; 76 tf->lbah = 0x55;
77 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 77 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
78 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
78 } else /* cmd == REQ_UNPARK_HEADS */ 79 } else /* cmd == REQ_UNPARK_HEADS */
79 tf->command = ATA_CMD_CHK_POWER; 80 tf->command = ATA_CMD_CHK_POWER;
80 81
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c
index bb7858ebb7d1..0d8a151c0a01 100644
--- a/drivers/ide/ide-pm.c
+++ b/drivers/ide/ide-pm.c
@@ -163,7 +163,8 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)
163 return ide_stopped; 163 return ide_stopped;
164 164
165out_do_tf: 165out_do_tf:
166 cmd->tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 166 cmd->valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
167 cmd->valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
167 cmd->protocol = ATA_PROT_NODATA; 168 cmd->protocol = ATA_PROT_NODATA;
168 169
169 return do_rw_taskfile(drive, cmd); 170 return do_rw_taskfile(drive, cmd);
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index d8c1c3e735bb..7f264ed1141b 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -283,13 +283,11 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
283 * identify command to be sure of reply 283 * identify command to be sure of reply
284 */ 284 */
285 if (cmd == ATA_CMD_ID_ATAPI) { 285 if (cmd == ATA_CMD_ID_ATAPI) {
286 struct ide_cmd cmd; 286 struct ide_taskfile tf;
287 287
288 memset(&cmd, 0, sizeof(cmd)); 288 memset(&tf, 0, sizeof(tf));
289 /* disable DMA & overlap */ 289 /* disable DMA & overlap */
290 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE; 290 tp_ops->tf_load(drive, &tf, IDE_VALID_FEATURE);
291
292 tp_ops->tf_load(drive, &cmd);
293 } 291 }
294 292
295 /* ask drive for ID */ 293 /* ask drive for ID */
@@ -337,14 +335,11 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
337 335
338static u8 ide_read_device(ide_drive_t *drive) 336static u8 ide_read_device(ide_drive_t *drive)
339{ 337{
340 struct ide_cmd cmd; 338 struct ide_taskfile tf;
341
342 memset(&cmd, 0, sizeof(cmd));
343 cmd.tf_flags = IDE_TFLAG_IN_DEVICE;
344 339
345 drive->hwif->tp_ops->tf_read(drive, &cmd); 340 drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_DEVICE);
346 341
347 return cmd.tf.device; 342 return tf.device;
348} 343}
349 344
350/** 345/**
@@ -1314,6 +1309,7 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws)
1314 host->get_lock = d->get_lock; 1309 host->get_lock = d->get_lock;
1315 host->release_lock = d->release_lock; 1310 host->release_lock = d->release_lock;
1316 host->host_flags = d->host_flags; 1311 host->host_flags = d->host_flags;
1312 host->irq_flags = d->irq_flags;
1317 } 1313 }
1318 1314
1319 return host; 1315 return host;
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c
index 10a88bf3eefa..3242698832a4 100644
--- a/drivers/ide/ide-proc.c
+++ b/drivers/ide/ide-proc.c
@@ -204,8 +204,8 @@ static int set_xfer_rate (ide_drive_t *drive, int arg)
204 cmd.tf.command = ATA_CMD_SET_FEATURES; 204 cmd.tf.command = ATA_CMD_SET_FEATURES;
205 cmd.tf.feature = SETFEATURES_XFER; 205 cmd.tf.feature = SETFEATURES_XFER;
206 cmd.tf.nsect = (u8)arg; 206 cmd.tf.nsect = (u8)arg;
207 cmd.tf_flags = IDE_TFLAG_OUT_FEATURE | IDE_TFLAG_OUT_NSECT | 207 cmd.valid.out.tf = IDE_VALID_FEATURE | IDE_VALID_NSECT;
208 IDE_TFLAG_IN_NSECT; 208 cmd.valid.in.tf = IDE_VALID_NSECT;
209 209
210 err = ide_no_data_taskfile(drive, &cmd); 210 err = ide_no_data_taskfile(drive, &cmd);
211 211
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 243421ce40d0..4aa6223c11be 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -23,17 +23,33 @@
23#include <asm/uaccess.h> 23#include <asm/uaccess.h>
24#include <asm/io.h> 24#include <asm/io.h>
25 25
26void ide_tf_dump(const char *s, struct ide_taskfile *tf) 26void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd)
27{
28 ide_hwif_t *hwif = drive->hwif;
29 const struct ide_tp_ops *tp_ops = hwif->tp_ops;
30
31 /* Be sure we're looking at the low order bytes */
32 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
33
34 tp_ops->tf_read(drive, &cmd->tf, cmd->valid.in.tf);
35
36 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
37 tp_ops->write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
38
39 tp_ops->tf_read(drive, &cmd->hob, cmd->valid.in.hob);
40 }
41}
42
43void ide_tf_dump(const char *s, struct ide_cmd *cmd)
27{ 44{
28#ifdef DEBUG 45#ifdef DEBUG
29 printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x " 46 printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x "
30 "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n", 47 "lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n",
31 s, tf->feature, tf->nsect, tf->lbal, 48 s, cmd->tf.feature, cmd->tf.nsect,
32 tf->lbam, tf->lbah, tf->device, tf->command); 49 cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah,
33 printk("%s: hob: nsect 0x%02x lbal 0x%02x " 50 cmd->tf.device, cmd->tf.command);
34 "lbam 0x%02x lbah 0x%02x\n", 51 printk("%s: hob: nsect 0x%02x lbal 0x%02x lbam 0x%02x lbah 0x%02x\n",
35 s, tf->hob_nsect, tf->hob_lbal, 52 s, cmd->hob.nsect, cmd->hob.lbal, cmd->hob.lbam, cmd->hob.lbah);
36 tf->hob_lbam, tf->hob_lbah);
37#endif 53#endif
38} 54}
39 55
@@ -47,7 +63,8 @@ int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf)
47 cmd.tf.command = ATA_CMD_ID_ATA; 63 cmd.tf.command = ATA_CMD_ID_ATA;
48 else 64 else
49 cmd.tf.command = ATA_CMD_ID_ATAPI; 65 cmd.tf.command = ATA_CMD_ID_ATAPI;
50 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 66 cmd.valid.out.tf = IDE_VALID_OUT_TF | IDE_VALID_DEVICE;
67 cmd.valid.in.tf = IDE_VALID_IN_TF | IDE_VALID_DEVICE;
51 cmd.protocol = ATA_PROT_PIO; 68 cmd.protocol = ATA_PROT_PIO;
52 69
53 return ide_raw_taskfile(drive, &cmd, buf, 1); 70 return ide_raw_taskfile(drive, &cmd, buf, 1);
@@ -79,16 +96,27 @@ ide_startstop_t do_rw_taskfile(ide_drive_t *drive, struct ide_cmd *orig_cmd)
79 memcpy(cmd, orig_cmd, sizeof(*cmd)); 96 memcpy(cmd, orig_cmd, sizeof(*cmd));
80 97
81 if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) { 98 if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) {
82 ide_tf_dump(drive->name, tf); 99 ide_tf_dump(drive->name, cmd);
83 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); 100 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
84 SELECT_MASK(drive, 0); 101 SELECT_MASK(drive, 0);
85 102
86 if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { 103 if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) {
87 u8 data[2] = { tf->data, tf->hob_data }; 104 u8 data[2] = { cmd->tf.data, cmd->hob.data };
88 105
89 tp_ops->output_data(drive, cmd, data, 2); 106 tp_ops->output_data(drive, cmd, data, 2);
90 } 107 }
91 tp_ops->tf_load(drive, cmd); 108
109 if (cmd->valid.out.tf & IDE_VALID_DEVICE) {
110 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ?
111 0xE0 : 0xEF;
112
113 if (!(cmd->ftf_flags & IDE_FTFLAG_FLAGGED))
114 cmd->tf.device &= HIHI;
115 cmd->tf.device |= drive->select;
116 }
117
118 tp_ops->tf_load(drive, &cmd->hob, cmd->valid.out.hob);
119 tp_ops->tf_load(drive, &cmd->tf, cmd->valid.out.tf);
92 } 120 }
93 121
94 switch (cmd->protocol) { 122 switch (cmd->protocol) {
@@ -489,16 +517,17 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
489 517
490 memset(&cmd, 0, sizeof(cmd)); 518 memset(&cmd, 0, sizeof(cmd));
491 519
492 memcpy(&cmd.tf_array[0], req_task->hob_ports, 520 memcpy(&cmd.hob, req_task->hob_ports, HDIO_DRIVE_HOB_HDR_SIZE - 2);
493 HDIO_DRIVE_HOB_HDR_SIZE - 2); 521 memcpy(&cmd.tf, req_task->io_ports, HDIO_DRIVE_TASK_HDR_SIZE);
494 memcpy(&cmd.tf_array[6], req_task->io_ports,
495 HDIO_DRIVE_TASK_HDR_SIZE);
496 522
497 cmd.tf_flags = IDE_TFLAG_IO_16BIT | IDE_TFLAG_DEVICE | 523 cmd.valid.out.tf = IDE_VALID_DEVICE;
498 IDE_TFLAG_IN_TF; 524 cmd.valid.in.tf = IDE_VALID_DEVICE | IDE_VALID_IN_TF;
525 cmd.tf_flags = IDE_TFLAG_IO_16BIT;
499 526
500 if (drive->dev_flags & IDE_DFLAG_LBA48) 527 if (drive->dev_flags & IDE_DFLAG_LBA48) {
501 cmd.tf_flags |= (IDE_TFLAG_LBA48 | IDE_TFLAG_IN_HOB); 528 cmd.tf_flags |= IDE_TFLAG_LBA48;
529 cmd.valid.in.hob = IDE_VALID_IN_HOB;
530 }
502 531
503 if (req_task->out_flags.all) { 532 if (req_task->out_flags.all) {
504 cmd.ftf_flags |= IDE_FTFLAG_FLAGGED; 533 cmd.ftf_flags |= IDE_FTFLAG_FLAGGED;
@@ -507,28 +536,28 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
507 cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA; 536 cmd.ftf_flags |= IDE_FTFLAG_OUT_DATA;
508 537
509 if (req_task->out_flags.b.nsector_hob) 538 if (req_task->out_flags.b.nsector_hob)
510 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_NSECT; 539 cmd.valid.out.hob |= IDE_VALID_NSECT;
511 if (req_task->out_flags.b.sector_hob) 540 if (req_task->out_flags.b.sector_hob)
512 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAL; 541 cmd.valid.out.hob |= IDE_VALID_LBAL;
513 if (req_task->out_flags.b.lcyl_hob) 542 if (req_task->out_flags.b.lcyl_hob)
514 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAM; 543 cmd.valid.out.hob |= IDE_VALID_LBAM;
515 if (req_task->out_flags.b.hcyl_hob) 544 if (req_task->out_flags.b.hcyl_hob)
516 cmd.tf_flags |= IDE_TFLAG_OUT_HOB_LBAH; 545 cmd.valid.out.hob |= IDE_VALID_LBAH;
517 546
518 if (req_task->out_flags.b.error_feature) 547 if (req_task->out_flags.b.error_feature)
519 cmd.tf_flags |= IDE_TFLAG_OUT_FEATURE; 548 cmd.valid.out.tf |= IDE_VALID_FEATURE;
520 if (req_task->out_flags.b.nsector) 549 if (req_task->out_flags.b.nsector)
521 cmd.tf_flags |= IDE_TFLAG_OUT_NSECT; 550 cmd.valid.out.tf |= IDE_VALID_NSECT;
522 if (req_task->out_flags.b.sector) 551 if (req_task->out_flags.b.sector)
523 cmd.tf_flags |= IDE_TFLAG_OUT_LBAL; 552 cmd.valid.out.tf |= IDE_VALID_LBAL;
524 if (req_task->out_flags.b.lcyl) 553 if (req_task->out_flags.b.lcyl)
525 cmd.tf_flags |= IDE_TFLAG_OUT_LBAM; 554 cmd.valid.out.tf |= IDE_VALID_LBAM;
526 if (req_task->out_flags.b.hcyl) 555 if (req_task->out_flags.b.hcyl)
527 cmd.tf_flags |= IDE_TFLAG_OUT_LBAH; 556 cmd.valid.out.tf |= IDE_VALID_LBAH;
528 } else { 557 } else {
529 cmd.tf_flags |= IDE_TFLAG_OUT_TF; 558 cmd.valid.out.tf |= IDE_VALID_OUT_TF;
530 if (cmd.tf_flags & IDE_TFLAG_LBA48) 559 if (cmd.tf_flags & IDE_TFLAG_LBA48)
531 cmd.tf_flags |= IDE_TFLAG_OUT_HOB; 560 cmd.valid.out.hob |= IDE_VALID_OUT_HOB;
532 } 561 }
533 562
534 if (req_task->in_flags.b.data) 563 if (req_task->in_flags.b.data)
@@ -594,7 +623,7 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
594 if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA) 623 if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA)
595 nsect = 0; 624 nsect = 0;
596 else if (!nsect) { 625 else if (!nsect) {
597 nsect = (cmd.tf.hob_nsect << 8) | cmd.tf.nsect; 626 nsect = (cmd.hob.nsect << 8) | cmd.tf.nsect;
598 627
599 if (!nsect) { 628 if (!nsect) {
600 printk(KERN_ERR "%s: in/out command without data\n", 629 printk(KERN_ERR "%s: in/out command without data\n",
@@ -606,10 +635,8 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)
606 635
607 err = ide_raw_taskfile(drive, &cmd, data_buf, nsect); 636 err = ide_raw_taskfile(drive, &cmd, data_buf, nsect);
608 637
609 memcpy(req_task->hob_ports, &cmd.tf_array[0], 638 memcpy(req_task->hob_ports, &cmd.hob, HDIO_DRIVE_HOB_HDR_SIZE - 2);
610 HDIO_DRIVE_HOB_HDR_SIZE - 2); 639 memcpy(req_task->io_ports, &cmd.tf, HDIO_DRIVE_TASK_HDR_SIZE);
611 memcpy(req_task->io_ports, &cmd.tf_array[6],
612 HDIO_DRIVE_TASK_HDR_SIZE);
613 640
614 if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) && 641 if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) &&
615 req_task->in_flags.all == 0) { 642 req_task->in_flags.all == 0) {
diff --git a/drivers/ide/ns87415.c b/drivers/ide/ns87415.c
index 71a39fb3856f..95327a2c2422 100644
--- a/drivers/ide/ns87415.c
+++ b/drivers/ide/ns87415.c
@@ -61,41 +61,23 @@ static u8 superio_dma_sff_read_status(ide_hwif_t *hwif)
61 return superio_ide_inb(hwif->dma_base + ATA_DMA_STATUS); 61 return superio_ide_inb(hwif->dma_base + ATA_DMA_STATUS);
62} 62}
63 63
64static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 64static void superio_tf_read(ide_drive_t *drive, struct ide_taskfile *tf,
65 u8 valid)
65{ 66{
66 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 67 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
67 struct ide_taskfile *tf = &cmd->tf;
68 68
69 /* be sure we're looking at the low order bits */ 69 if (valid & IDE_VALID_ERROR)
70 outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
71
72 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
73 tf->error = inb(io_ports->feature_addr); 70 tf->error = inb(io_ports->feature_addr);
74 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 71 if (valid & IDE_VALID_NSECT)
75 tf->nsect = inb(io_ports->nsect_addr); 72 tf->nsect = inb(io_ports->nsect_addr);
76 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 73 if (valid & IDE_VALID_LBAL)
77 tf->lbal = inb(io_ports->lbal_addr); 74 tf->lbal = inb(io_ports->lbal_addr);
78 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 75 if (valid & IDE_VALID_LBAM)
79 tf->lbam = inb(io_ports->lbam_addr); 76 tf->lbam = inb(io_ports->lbam_addr);
80 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 77 if (valid & IDE_VALID_LBAH)
81 tf->lbah = inb(io_ports->lbah_addr); 78 tf->lbah = inb(io_ports->lbah_addr);
82 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 79 if (valid & IDE_VALID_DEVICE)
83 tf->device = superio_ide_inb(io_ports->device_addr); 80 tf->device = superio_ide_inb(io_ports->device_addr);
84
85 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
86 outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
87
88 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
89 tf->hob_error = inb(io_ports->feature_addr);
90 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
91 tf->hob_nsect = inb(io_ports->nsect_addr);
92 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
93 tf->hob_lbal = inb(io_ports->lbal_addr);
94 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
95 tf->hob_lbam = inb(io_ports->lbam_addr);
96 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
97 tf->hob_lbah = inb(io_ports->lbah_addr);
98 }
99} 81}
100 82
101static void ns87415_dev_select(ide_drive_t *drive); 83static void ns87415_dev_select(ide_drive_t *drive);
diff --git a/drivers/ide/q40ide.c b/drivers/ide/q40ide.c
index d007e7f66598..c79346679244 100644
--- a/drivers/ide/q40ide.c
+++ b/drivers/ide/q40ide.c
@@ -16,6 +16,8 @@
16#include <linux/blkdev.h> 16#include <linux/blkdev.h>
17#include <linux/ide.h> 17#include <linux/ide.h>
18 18
19#include <asm/ide.h>
20
19 /* 21 /*
20 * Bases of the IDE interfaces 22 * Bases of the IDE interfaces
21 */ 23 */
@@ -77,8 +79,10 @@ static void q40ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
77{ 79{
78 unsigned long data_addr = drive->hwif->io_ports.data_addr; 80 unsigned long data_addr = drive->hwif->io_ports.data_addr;
79 81
80 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 82 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
81 return insw(data_addr, buf, (len + 1) / 2); 83 __ide_mm_insw(data_addr, buf, (len + 1) / 2);
84 return;
85 }
82 86
83 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 87 raw_insw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
84} 88}
@@ -88,8 +92,10 @@ static void q40ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
88{ 92{
89 unsigned long data_addr = drive->hwif->io_ports.data_addr; 93 unsigned long data_addr = drive->hwif->io_ports.data_addr;
90 94
91 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) 95 if (drive->media == ide_disk && cmd && (cmd->tf_flags & IDE_TFLAG_FS)) {
92 return outsw(data_addr, buf, (len + 1) / 2); 96 __ide_mm_outsw(data_addr, buf, (len + 1) / 2);
97 return;
98 }
93 99
94 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2); 100 raw_outsw_swapw((u16 *)data_addr, buf, (len + 1) / 2);
95} 101}
diff --git a/drivers/ide/scc_pata.c b/drivers/ide/scc_pata.c
index 6d8dbd9c10bc..5be41f25204f 100644
--- a/drivers/ide/scc_pata.c
+++ b/drivers/ide/scc_pata.c
@@ -337,7 +337,6 @@ static void scc_dma_start(ide_drive_t *drive)
337 337
338 /* start DMA */ 338 /* start DMA */
339 scc_ide_outb(dma_cmd | 1, hwif->dma_base); 339 scc_ide_outb(dma_cmd | 1, hwif->dma_base);
340 wmb();
341} 340}
342 341
343static int __scc_dma_end(ide_drive_t *drive) 342static int __scc_dma_end(ide_drive_t *drive)
@@ -354,7 +353,6 @@ static int __scc_dma_end(ide_drive_t *drive)
354 /* clear the INTR & ERROR bits */ 353 /* clear the INTR & ERROR bits */
355 scc_ide_outb(dma_stat | 6, hwif->dma_base + 4); 354 scc_ide_outb(dma_stat | 6, hwif->dma_base + 4);
356 /* verify good DMA status */ 355 /* verify good DMA status */
357 wmb();
358 return (dma_stat & 7) != 4 ? (0x10 | dma_stat) : 0; 356 return (dma_stat & 7) != 4 ? (0x10 | dma_stat) : 0;
359} 357}
360 358
@@ -647,77 +645,40 @@ static int __devinit init_setup_scc(struct pci_dev *dev,
647 return rc; 645 return rc;
648} 646}
649 647
650static void scc_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) 648static void scc_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
651{ 649{
652 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 650 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
653 struct ide_taskfile *tf = &cmd->tf; 651
654 u8 HIHI = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF; 652 if (valid & IDE_VALID_FEATURE)
655
656 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
657 HIHI = 0xFF;
658
659 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
660 scc_ide_outb(tf->hob_feature, io_ports->feature_addr);
661 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
662 scc_ide_outb(tf->hob_nsect, io_ports->nsect_addr);
663 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
664 scc_ide_outb(tf->hob_lbal, io_ports->lbal_addr);
665 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
666 scc_ide_outb(tf->hob_lbam, io_ports->lbam_addr);
667 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
668 scc_ide_outb(tf->hob_lbah, io_ports->lbah_addr);
669
670 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
671 scc_ide_outb(tf->feature, io_ports->feature_addr); 653 scc_ide_outb(tf->feature, io_ports->feature_addr);
672 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT) 654 if (valid & IDE_VALID_NSECT)
673 scc_ide_outb(tf->nsect, io_ports->nsect_addr); 655 scc_ide_outb(tf->nsect, io_ports->nsect_addr);
674 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL) 656 if (valid & IDE_VALID_LBAL)
675 scc_ide_outb(tf->lbal, io_ports->lbal_addr); 657 scc_ide_outb(tf->lbal, io_ports->lbal_addr);
676 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM) 658 if (valid & IDE_VALID_LBAM)
677 scc_ide_outb(tf->lbam, io_ports->lbam_addr); 659 scc_ide_outb(tf->lbam, io_ports->lbam_addr);
678 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH) 660 if (valid & IDE_VALID_LBAH)
679 scc_ide_outb(tf->lbah, io_ports->lbah_addr); 661 scc_ide_outb(tf->lbah, io_ports->lbah_addr);
680 662 if (valid & IDE_VALID_DEVICE)
681 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) 663 scc_ide_outb(tf->device, io_ports->device_addr);
682 scc_ide_outb((tf->device & HIHI) | drive->select,
683 io_ports->device_addr);
684} 664}
685 665
686static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 666static void scc_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid)
687{ 667{
688 struct ide_io_ports *io_ports = &drive->hwif->io_ports; 668 struct ide_io_ports *io_ports = &drive->hwif->io_ports;
689 struct ide_taskfile *tf = &cmd->tf;
690
691 /* be sure we're looking at the low order bits */
692 scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
693 669
694 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR) 670 if (valid & IDE_VALID_ERROR)
695 tf->error = scc_ide_inb(io_ports->feature_addr); 671 tf->error = scc_ide_inb(io_ports->feature_addr);
696 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT) 672 if (valid & IDE_VALID_NSECT)
697 tf->nsect = scc_ide_inb(io_ports->nsect_addr); 673 tf->nsect = scc_ide_inb(io_ports->nsect_addr);
698 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL) 674 if (valid & IDE_VALID_LBAL)
699 tf->lbal = scc_ide_inb(io_ports->lbal_addr); 675 tf->lbal = scc_ide_inb(io_ports->lbal_addr);
700 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM) 676 if (valid & IDE_VALID_LBAM)
701 tf->lbam = scc_ide_inb(io_ports->lbam_addr); 677 tf->lbam = scc_ide_inb(io_ports->lbam_addr);
702 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH) 678 if (valid & IDE_VALID_LBAH)
703 tf->lbah = scc_ide_inb(io_ports->lbah_addr); 679 tf->lbah = scc_ide_inb(io_ports->lbah_addr);
704 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE) 680 if (valid & IDE_VALID_DEVICE)
705 tf->device = scc_ide_inb(io_ports->device_addr); 681 tf->device = scc_ide_inb(io_ports->device_addr);
706
707 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
708 scc_ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
709
710 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
711 tf->hob_error = scc_ide_inb(io_ports->feature_addr);
712 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
713 tf->hob_nsect = scc_ide_inb(io_ports->nsect_addr);
714 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
715 tf->hob_lbal = scc_ide_inb(io_ports->lbal_addr);
716 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
717 tf->hob_lbam = scc_ide_inb(io_ports->lbam_addr);
718 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
719 tf->hob_lbah = scc_ide_inb(io_ports->lbah_addr);
720 }
721} 682}
722 683
723static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd, 684static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd,
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c
index 4cb79c4c2604..e33d764e2945 100644
--- a/drivers/ide/tx4938ide.c
+++ b/drivers/ide/tx4938ide.c
@@ -72,91 +72,6 @@ static void tx4938ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
72#ifdef __BIG_ENDIAN 72#ifdef __BIG_ENDIAN
73 73
74/* custom iops (independent from SWAP_IO_SPACE) */ 74/* custom iops (independent from SWAP_IO_SPACE) */
75static u8 tx4938ide_inb(unsigned long port)
76{
77 return __raw_readb((void __iomem *)port);
78}
79
80static void tx4938ide_outb(u8 value, unsigned long port)
81{
82 __raw_writeb(value, (void __iomem *)port);
83}
84
85static void tx4938ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
86{
87 ide_hwif_t *hwif = drive->hwif;
88 struct ide_io_ports *io_ports = &hwif->io_ports;
89 struct ide_taskfile *tf = &cmd->tf;
90 u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
91
92 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
93 HIHI = 0xFF;
94
95 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
96 tx4938ide_outb(tf->hob_feature, io_ports->feature_addr);
97 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
98 tx4938ide_outb(tf->hob_nsect, io_ports->nsect_addr);
99 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
100 tx4938ide_outb(tf->hob_lbal, io_ports->lbal_addr);
101 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
102 tx4938ide_outb(tf->hob_lbam, io_ports->lbam_addr);
103 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
104 tx4938ide_outb(tf->hob_lbah, io_ports->lbah_addr);
105
106 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
107 tx4938ide_outb(tf->feature, io_ports->feature_addr);
108 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
109 tx4938ide_outb(tf->nsect, io_ports->nsect_addr);
110 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
111 tx4938ide_outb(tf->lbal, io_ports->lbal_addr);
112 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
113 tx4938ide_outb(tf->lbam, io_ports->lbam_addr);
114 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
115 tx4938ide_outb(tf->lbah, io_ports->lbah_addr);
116
117 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
118 tx4938ide_outb((tf->device & HIHI) | drive->select,
119 io_ports->device_addr);
120}
121
122static void tx4938ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
123{
124 ide_hwif_t *hwif = drive->hwif;
125 struct ide_io_ports *io_ports = &hwif->io_ports;
126 struct ide_taskfile *tf = &cmd->tf;
127
128 /* be sure we're looking at the low order bits */
129 tx4938ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
130
131 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
132 tf->error = tx4938ide_inb(io_ports->feature_addr);
133 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
134 tf->nsect = tx4938ide_inb(io_ports->nsect_addr);
135 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
136 tf->lbal = tx4938ide_inb(io_ports->lbal_addr);
137 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
138 tf->lbam = tx4938ide_inb(io_ports->lbam_addr);
139 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
140 tf->lbah = tx4938ide_inb(io_ports->lbah_addr);
141 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
142 tf->device = tx4938ide_inb(io_ports->device_addr);
143
144 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
145 tx4938ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
146
147 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
148 tf->hob_error = tx4938ide_inb(io_ports->feature_addr);
149 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
150 tf->hob_nsect = tx4938ide_inb(io_ports->nsect_addr);
151 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
152 tf->hob_lbal = tx4938ide_inb(io_ports->lbal_addr);
153 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
154 tf->hob_lbam = tx4938ide_inb(io_ports->lbam_addr);
155 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
156 tf->hob_lbah = tx4938ide_inb(io_ports->lbah_addr);
157 }
158}
159
160static void tx4938ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd, 75static void tx4938ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
161 void *buf, unsigned int len) 76 void *buf, unsigned int len)
162{ 77{
@@ -190,8 +105,8 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
190 .write_devctl = ide_write_devctl, 105 .write_devctl = ide_write_devctl,
191 106
192 .dev_select = ide_dev_select, 107 .dev_select = ide_dev_select,
193 .tf_load = tx4938ide_tf_load, 108 .tf_load = ide_tf_load,
194 .tf_read = tx4938ide_tf_read, 109 .tf_read = ide_tf_read,
195 110
196 .input_data = tx4938ide_input_data_swap, 111 .input_data = tx4938ide_input_data_swap,
197 .output_data = tx4938ide_output_data_swap, 112 .output_data = tx4938ide_output_data_swap,
diff --git a/drivers/ide/tx4939ide.c b/drivers/ide/tx4939ide.c
index 0040a9a3e26e..564422d23976 100644
--- a/drivers/ide/tx4939ide.c
+++ b/drivers/ide/tx4939ide.c
@@ -327,15 +327,15 @@ static int tx4939ide_dma_end(ide_drive_t *drive)
327 /* read and clear the INTR & ERROR bits */ 327 /* read and clear the INTR & ERROR bits */
328 dma_stat = tx4939ide_clear_dma_status(base); 328 dma_stat = tx4939ide_clear_dma_status(base);
329 329
330 wmb(); 330#define CHECK_DMA_MASK (ATA_DMA_ACTIVE | ATA_DMA_ERR | ATA_DMA_INTR)
331 331
332 /* verify good DMA status */ 332 /* verify good DMA status */
333 if ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) == 0 && 333 if ((dma_stat & CHECK_DMA_MASK) == 0 &&
334 (ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) == 334 (ctl & (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) ==
335 (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST)) 335 (TX4939IDE_INT_XFEREND | TX4939IDE_INT_HOST))
336 /* INT_IDE lost... bug? */ 336 /* INT_IDE lost... bug? */
337 return 0; 337 return 0;
338 return ((dma_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) != 338 return ((dma_stat & CHECK_DMA_MASK) !=
339 ATA_DMA_INTR) ? 0x10 | dma_stat : 0; 339 ATA_DMA_INTR) ? 0x10 | dma_stat : 0;
340} 340}
341 341
@@ -434,97 +434,19 @@ static void tx4939ide_tf_load_fixup(ide_drive_t *drive)
434 tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl); 434 tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl);
435} 435}
436 436
437#ifdef __BIG_ENDIAN 437static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_taskfile *tf,
438 438 u8 valid)
439/* custom iops (independent from SWAP_IO_SPACE) */
440static u8 tx4939ide_inb(unsigned long port)
441{ 439{
442 return __raw_readb((void __iomem *)port); 440 ide_tf_load(drive, tf, valid);
443}
444 441
445static void tx4939ide_outb(u8 value, unsigned long port) 442 if (valid & IDE_VALID_DEVICE)
446{
447 __raw_writeb(value, (void __iomem *)port);
448}
449
450static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
451{
452 ide_hwif_t *hwif = drive->hwif;
453 struct ide_io_ports *io_ports = &hwif->io_ports;
454 struct ide_taskfile *tf = &cmd->tf;
455 u8 HIHI = cmd->tf_flags & IDE_TFLAG_LBA48 ? 0xE0 : 0xEF;
456
457 if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED)
458 HIHI = 0xFF;
459
460 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
461 tx4939ide_outb(tf->hob_feature, io_ports->feature_addr);
462 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
463 tx4939ide_outb(tf->hob_nsect, io_ports->nsect_addr);
464 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
465 tx4939ide_outb(tf->hob_lbal, io_ports->lbal_addr);
466 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
467 tx4939ide_outb(tf->hob_lbam, io_ports->lbam_addr);
468 if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
469 tx4939ide_outb(tf->hob_lbah, io_ports->lbah_addr);
470
471 if (cmd->tf_flags & IDE_TFLAG_OUT_FEATURE)
472 tx4939ide_outb(tf->feature, io_ports->feature_addr);
473 if (cmd->tf_flags & IDE_TFLAG_OUT_NSECT)
474 tx4939ide_outb(tf->nsect, io_ports->nsect_addr);
475 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAL)
476 tx4939ide_outb(tf->lbal, io_ports->lbal_addr);
477 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAM)
478 tx4939ide_outb(tf->lbam, io_ports->lbam_addr);
479 if (cmd->tf_flags & IDE_TFLAG_OUT_LBAH)
480 tx4939ide_outb(tf->lbah, io_ports->lbah_addr);
481
482 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE) {
483 tx4939ide_outb((tf->device & HIHI) | drive->select,
484 io_ports->device_addr);
485 tx4939ide_tf_load_fixup(drive); 443 tx4939ide_tf_load_fixup(drive);
486 }
487} 444}
488 445
489static void tx4939ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) 446#ifdef __BIG_ENDIAN
490{
491 ide_hwif_t *hwif = drive->hwif;
492 struct ide_io_ports *io_ports = &hwif->io_ports;
493 struct ide_taskfile *tf = &cmd->tf;
494
495 /* be sure we're looking at the low order bits */
496 tx4939ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
497
498 if (cmd->tf_flags & IDE_TFLAG_IN_ERROR)
499 tf->error = tx4939ide_inb(io_ports->feature_addr);
500 if (cmd->tf_flags & IDE_TFLAG_IN_NSECT)
501 tf->nsect = tx4939ide_inb(io_ports->nsect_addr);
502 if (cmd->tf_flags & IDE_TFLAG_IN_LBAL)
503 tf->lbal = tx4939ide_inb(io_ports->lbal_addr);
504 if (cmd->tf_flags & IDE_TFLAG_IN_LBAM)
505 tf->lbam = tx4939ide_inb(io_ports->lbam_addr);
506 if (cmd->tf_flags & IDE_TFLAG_IN_LBAH)
507 tf->lbah = tx4939ide_inb(io_ports->lbah_addr);
508 if (cmd->tf_flags & IDE_TFLAG_IN_DEVICE)
509 tf->device = tx4939ide_inb(io_ports->device_addr);
510
511 if (cmd->tf_flags & IDE_TFLAG_LBA48) {
512 tx4939ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
513
514 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_ERROR)
515 tf->hob_error = tx4939ide_inb(io_ports->feature_addr);
516 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
517 tf->hob_nsect = tx4939ide_inb(io_ports->nsect_addr);
518 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
519 tf->hob_lbal = tx4939ide_inb(io_ports->lbal_addr);
520 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
521 tf->hob_lbam = tx4939ide_inb(io_ports->lbam_addr);
522 if (cmd->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
523 tf->hob_lbah = tx4939ide_inb(io_ports->lbah_addr);
524 }
525}
526 447
527static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq, 448/* custom iops (independent from SWAP_IO_SPACE) */
449static void tx4939ide_input_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
528 void *buf, unsigned int len) 450 void *buf, unsigned int len)
529{ 451{
530 unsigned long port = drive->hwif->io_ports.data_addr; 452 unsigned long port = drive->hwif->io_ports.data_addr;
@@ -536,7 +458,7 @@ static void tx4939ide_input_data_swap(ide_drive_t *drive, struct request *rq,
536 __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2)); 458 __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2));
537} 459}
538 460
539static void tx4939ide_output_data_swap(ide_drive_t *drive, struct request *rq, 461static void tx4939ide_output_data_swap(ide_drive_t *drive, struct ide_cmd *cmd,
540 void *buf, unsigned int len) 462 void *buf, unsigned int len)
541{ 463{
542 unsigned long port = drive->hwif->io_ports.data_addr; 464 unsigned long port = drive->hwif->io_ports.data_addr;
@@ -558,7 +480,7 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
558 480
559 .dev_select = ide_dev_select, 481 .dev_select = ide_dev_select,
560 .tf_load = tx4939ide_tf_load, 482 .tf_load = tx4939ide_tf_load,
561 .tf_read = tx4939ide_tf_read, 483 .tf_read = ide_tf_read,
562 484
563 .input_data = tx4939ide_input_data_swap, 485 .input_data = tx4939ide_input_data_swap,
564 .output_data = tx4939ide_output_data_swap, 486 .output_data = tx4939ide_output_data_swap,
@@ -566,14 +488,6 @@ static const struct ide_tp_ops tx4939ide_tp_ops = {
566 488
567#else /* __LITTLE_ENDIAN */ 489#else /* __LITTLE_ENDIAN */
568 490
569static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd)
570{
571 ide_tf_load(drive, cmd);
572
573 if (cmd->tf_flags & IDE_TFLAG_OUT_DEVICE)
574 tx4939ide_tf_load_fixup(drive);
575}
576
577static const struct ide_tp_ops tx4939ide_tp_ops = { 491static const struct ide_tp_ops tx4939ide_tp_ops = {
578 .exec_command = ide_exec_command, 492 .exec_command = ide_exec_command,
579 .read_status = ide_read_status, 493 .read_status = ide_read_status,
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 2a2e50871b40..851de83ff455 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -297,21 +297,25 @@ static void cma_detach_from_dev(struct rdma_id_private *id_priv)
297 id_priv->cma_dev = NULL; 297 id_priv->cma_dev = NULL;
298} 298}
299 299
300static int cma_set_qkey(struct ib_device *device, u8 port_num, 300static int cma_set_qkey(struct rdma_id_private *id_priv)
301 enum rdma_port_space ps,
302 struct rdma_dev_addr *dev_addr, u32 *qkey)
303{ 301{
304 struct ib_sa_mcmember_rec rec; 302 struct ib_sa_mcmember_rec rec;
305 int ret = 0; 303 int ret = 0;
306 304
307 switch (ps) { 305 if (id_priv->qkey)
306 return 0;
307
308 switch (id_priv->id.ps) {
308 case RDMA_PS_UDP: 309 case RDMA_PS_UDP:
309 *qkey = RDMA_UDP_QKEY; 310 id_priv->qkey = RDMA_UDP_QKEY;
310 break; 311 break;
311 case RDMA_PS_IPOIB: 312 case RDMA_PS_IPOIB:
312 ib_addr_get_mgid(dev_addr, &rec.mgid); 313 ib_addr_get_mgid(&id_priv->id.route.addr.dev_addr, &rec.mgid);
313 ret = ib_sa_get_mcmember_rec(device, port_num, &rec.mgid, &rec); 314 ret = ib_sa_get_mcmember_rec(id_priv->id.device,
314 *qkey = be32_to_cpu(rec.qkey); 315 id_priv->id.port_num, &rec.mgid,
316 &rec);
317 if (!ret)
318 id_priv->qkey = be32_to_cpu(rec.qkey);
315 break; 319 break;
316 default: 320 default:
317 break; 321 break;
@@ -341,12 +345,7 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv)
341 ret = ib_find_cached_gid(cma_dev->device, &gid, 345 ret = ib_find_cached_gid(cma_dev->device, &gid,
342 &id_priv->id.port_num, NULL); 346 &id_priv->id.port_num, NULL);
343 if (!ret) { 347 if (!ret) {
344 ret = cma_set_qkey(cma_dev->device, 348 cma_attach_to_dev(id_priv, cma_dev);
345 id_priv->id.port_num,
346 id_priv->id.ps, dev_addr,
347 &id_priv->qkey);
348 if (!ret)
349 cma_attach_to_dev(id_priv, cma_dev);
350 break; 349 break;
351 } 350 }
352 } 351 }
@@ -578,6 +577,10 @@ static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
578 *qp_attr_mask = IB_QP_STATE | IB_QP_PKEY_INDEX | IB_QP_PORT; 577 *qp_attr_mask = IB_QP_STATE | IB_QP_PKEY_INDEX | IB_QP_PORT;
579 578
580 if (cma_is_ud_ps(id_priv->id.ps)) { 579 if (cma_is_ud_ps(id_priv->id.ps)) {
580 ret = cma_set_qkey(id_priv);
581 if (ret)
582 return ret;
583
581 qp_attr->qkey = id_priv->qkey; 584 qp_attr->qkey = id_priv->qkey;
582 *qp_attr_mask |= IB_QP_QKEY; 585 *qp_attr_mask |= IB_QP_QKEY;
583 } else { 586 } else {
@@ -2201,6 +2204,12 @@ static int cma_sidr_rep_handler(struct ib_cm_id *cm_id,
2201 event.status = ib_event->param.sidr_rep_rcvd.status; 2204 event.status = ib_event->param.sidr_rep_rcvd.status;
2202 break; 2205 break;
2203 } 2206 }
2207 ret = cma_set_qkey(id_priv);
2208 if (ret) {
2209 event.event = RDMA_CM_EVENT_ADDR_ERROR;
2210 event.status = -EINVAL;
2211 break;
2212 }
2204 if (id_priv->qkey != rep->qkey) { 2213 if (id_priv->qkey != rep->qkey) {
2205 event.event = RDMA_CM_EVENT_UNREACHABLE; 2214 event.event = RDMA_CM_EVENT_UNREACHABLE;
2206 event.status = -EINVAL; 2215 event.status = -EINVAL;
@@ -2480,10 +2489,14 @@ static int cma_send_sidr_rep(struct rdma_id_private *id_priv,
2480 const void *private_data, int private_data_len) 2489 const void *private_data, int private_data_len)
2481{ 2490{
2482 struct ib_cm_sidr_rep_param rep; 2491 struct ib_cm_sidr_rep_param rep;
2492 int ret;
2483 2493
2484 memset(&rep, 0, sizeof rep); 2494 memset(&rep, 0, sizeof rep);
2485 rep.status = status; 2495 rep.status = status;
2486 if (status == IB_SIDR_SUCCESS) { 2496 if (status == IB_SIDR_SUCCESS) {
2497 ret = cma_set_qkey(id_priv);
2498 if (ret)
2499 return ret;
2487 rep.qp_num = id_priv->qp_num; 2500 rep.qp_num = id_priv->qp_num;
2488 rep.qkey = id_priv->qkey; 2501 rep.qkey = id_priv->qkey;
2489 } 2502 }
@@ -2713,6 +2726,10 @@ static int cma_join_ib_multicast(struct rdma_id_private *id_priv,
2713 IB_SA_MCMEMBER_REC_FLOW_LABEL | 2726 IB_SA_MCMEMBER_REC_FLOW_LABEL |
2714 IB_SA_MCMEMBER_REC_TRAFFIC_CLASS; 2727 IB_SA_MCMEMBER_REC_TRAFFIC_CLASS;
2715 2728
2729 if (id_priv->id.ps == RDMA_PS_IPOIB)
2730 comp_mask |= IB_SA_MCMEMBER_REC_RATE |
2731 IB_SA_MCMEMBER_REC_RATE_SELECTOR;
2732
2716 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, 2733 mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device,
2717 id_priv->id.port_num, &rec, 2734 id_priv->id.port_num, &rec,
2718 comp_mask, GFP_KERNEL, 2735 comp_mask, GFP_KERNEL,
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c
index a4a82bff7100..8d71086f5a1c 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c
@@ -152,7 +152,7 @@ static int cxio_hal_clear_qp_ctx(struct cxio_rdev *rdev_p, u32 qpid)
152 sge_cmd = qpid << 8 | 3; 152 sge_cmd = qpid << 8 | 3;
153 wqe->sge_cmd = cpu_to_be64(sge_cmd); 153 wqe->sge_cmd = cpu_to_be64(sge_cmd);
154 skb->priority = CPL_PRIORITY_CONTROL; 154 skb->priority = CPL_PRIORITY_CONTROL;
155 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 155 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
156} 156}
157 157
158int cxio_create_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq) 158int cxio_create_cq(struct cxio_rdev *rdev_p, struct t3_cq *cq)
@@ -571,7 +571,7 @@ static int cxio_hal_init_ctrl_qp(struct cxio_rdev *rdev_p)
571 (unsigned long long) rdev_p->ctrl_qp.dma_addr, 571 (unsigned long long) rdev_p->ctrl_qp.dma_addr,
572 rdev_p->ctrl_qp.workq, 1 << T3_CTRL_QP_SIZE_LOG2); 572 rdev_p->ctrl_qp.workq, 1 << T3_CTRL_QP_SIZE_LOG2);
573 skb->priority = CPL_PRIORITY_CONTROL; 573 skb->priority = CPL_PRIORITY_CONTROL;
574 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 574 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
575err: 575err:
576 kfree_skb(skb); 576 kfree_skb(skb);
577 return err; 577 return err;
@@ -701,7 +701,7 @@ static int __cxio_tpt_op(struct cxio_rdev *rdev_p, u32 reset_tpt_entry,
701 u32 stag_idx; 701 u32 stag_idx;
702 u32 wptr; 702 u32 wptr;
703 703
704 if (rdev_p->flags) 704 if (cxio_fatal_error(rdev_p))
705 return -EIO; 705 return -EIO;
706 706
707 stag_state = stag_state > 0; 707 stag_state = stag_state > 0;
@@ -858,7 +858,7 @@ int cxio_rdma_init(struct cxio_rdev *rdev_p, struct t3_rdma_init_attr *attr)
858 wqe->qp_dma_size = cpu_to_be32(attr->qp_dma_size); 858 wqe->qp_dma_size = cpu_to_be32(attr->qp_dma_size);
859 wqe->irs = cpu_to_be32(attr->irs); 859 wqe->irs = cpu_to_be32(attr->irs);
860 skb->priority = 0; /* 0=>ToeQ; 1=>CtrlQ */ 860 skb->priority = 0; /* 0=>ToeQ; 1=>CtrlQ */
861 return (cxgb3_ofld_send(rdev_p->t3cdev_p, skb)); 861 return iwch_cxgb3_ofld_send(rdev_p->t3cdev_p, skb);
862} 862}
863 863
864void cxio_register_ev_cb(cxio_hal_ev_callback_func_t ev_cb) 864void cxio_register_ev_cb(cxio_hal_ev_callback_func_t ev_cb)
@@ -1041,9 +1041,9 @@ void cxio_rdev_close(struct cxio_rdev *rdev_p)
1041 cxio_hal_pblpool_destroy(rdev_p); 1041 cxio_hal_pblpool_destroy(rdev_p);
1042 cxio_hal_rqtpool_destroy(rdev_p); 1042 cxio_hal_rqtpool_destroy(rdev_p);
1043 list_del(&rdev_p->entry); 1043 list_del(&rdev_p->entry);
1044 rdev_p->t3cdev_p->ulp = NULL;
1045 cxio_hal_destroy_ctrl_qp(rdev_p); 1044 cxio_hal_destroy_ctrl_qp(rdev_p);
1046 cxio_hal_destroy_resource(rdev_p->rscp); 1045 cxio_hal_destroy_resource(rdev_p->rscp);
1046 rdev_p->t3cdev_p->ulp = NULL;
1047 } 1047 }
1048} 1048}
1049 1049
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.h b/drivers/infiniband/hw/cxgb3/cxio_hal.h
index 094a66d1480c..bfd03bf8be54 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.h
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.h
@@ -115,6 +115,11 @@ struct cxio_rdev {
115#define CXIO_ERROR_FATAL 1 115#define CXIO_ERROR_FATAL 1
116}; 116};
117 117
118static inline int cxio_fatal_error(struct cxio_rdev *rdev_p)
119{
120 return rdev_p->flags & CXIO_ERROR_FATAL;
121}
122
118static inline int cxio_num_stags(struct cxio_rdev *rdev_p) 123static inline int cxio_num_stags(struct cxio_rdev *rdev_p)
119{ 124{
120 return min((int)T3_MAX_NUM_STAG, (int)((rdev_p->rnic_info.tpt_top - rdev_p->rnic_info.tpt_base) >> 5)); 125 return min((int)T3_MAX_NUM_STAG, (int)((rdev_p->rnic_info.tpt_top - rdev_p->rnic_info.tpt_base) >> 5));
@@ -188,6 +193,7 @@ void cxio_count_scqes(struct t3_cq *cq, struct t3_wq *wq, int *count);
188void cxio_flush_hw_cq(struct t3_cq *cq); 193void cxio_flush_hw_cq(struct t3_cq *cq);
189int cxio_poll_cq(struct t3_wq *wq, struct t3_cq *cq, struct t3_cqe *cqe, 194int cxio_poll_cq(struct t3_wq *wq, struct t3_cq *cq, struct t3_cqe *cqe,
190 u8 *cqe_flushed, u64 *cookie, u32 *credit); 195 u8 *cqe_flushed, u64 *cookie, u32 *credit);
196int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb);
191 197
192#define MOD "iw_cxgb3: " 198#define MOD "iw_cxgb3: "
193#define PDBG(fmt, args...) pr_debug(MOD fmt, ## args) 199#define PDBG(fmt, args...) pr_debug(MOD fmt, ## args)
diff --git a/drivers/infiniband/hw/cxgb3/iwch.c b/drivers/infiniband/hw/cxgb3/iwch.c
index 37a4fc264a07..26fc0a4eaa74 100644
--- a/drivers/infiniband/hw/cxgb3/iwch.c
+++ b/drivers/infiniband/hw/cxgb3/iwch.c
@@ -165,12 +165,19 @@ static void close_rnic_dev(struct t3cdev *tdev)
165static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error) 165static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error)
166{ 166{
167 struct cxio_rdev *rdev = tdev->ulp; 167 struct cxio_rdev *rdev = tdev->ulp;
168 struct iwch_dev *rnicp = rdev_to_iwch_dev(rdev);
169 struct ib_event event;
168 170
169 if (status == OFFLOAD_STATUS_DOWN) 171 if (status == OFFLOAD_STATUS_DOWN) {
170 rdev->flags = CXIO_ERROR_FATAL; 172 rdev->flags = CXIO_ERROR_FATAL;
171 173
172 return; 174 event.device = &rnicp->ibdev;
175 event.event = IB_EVENT_DEVICE_FATAL;
176 event.element.port_num = 0;
177 ib_dispatch_event(&event);
178 }
173 179
180 return;
174} 181}
175 182
176static int __init iwch_init_module(void) 183static int __init iwch_init_module(void)
diff --git a/drivers/infiniband/hw/cxgb3/iwch.h b/drivers/infiniband/hw/cxgb3/iwch.h
index 3773453b2cf0..84735506333f 100644
--- a/drivers/infiniband/hw/cxgb3/iwch.h
+++ b/drivers/infiniband/hw/cxgb3/iwch.h
@@ -117,6 +117,11 @@ static inline struct iwch_dev *to_iwch_dev(struct ib_device *ibdev)
117 return container_of(ibdev, struct iwch_dev, ibdev); 117 return container_of(ibdev, struct iwch_dev, ibdev);
118} 118}
119 119
120static inline struct iwch_dev *rdev_to_iwch_dev(struct cxio_rdev *rdev)
121{
122 return container_of(rdev, struct iwch_dev, rdev);
123}
124
120static inline int t3b_device(const struct iwch_dev *rhp) 125static inline int t3b_device(const struct iwch_dev *rhp)
121{ 126{
122 return rhp->rdev.t3cdev_p->type == T3B; 127 return rhp->rdev.t3cdev_p->type == T3B;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index 8699947aaf6c..fef3f1ae7225 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -139,6 +139,38 @@ static void stop_ep_timer(struct iwch_ep *ep)
139 put_ep(&ep->com); 139 put_ep(&ep->com);
140} 140}
141 141
142int iwch_l2t_send(struct t3cdev *tdev, struct sk_buff *skb, struct l2t_entry *l2e)
143{
144 int error = 0;
145 struct cxio_rdev *rdev;
146
147 rdev = (struct cxio_rdev *)tdev->ulp;
148 if (cxio_fatal_error(rdev)) {
149 kfree_skb(skb);
150 return -EIO;
151 }
152 error = l2t_send(tdev, skb, l2e);
153 if (error)
154 kfree_skb(skb);
155 return error;
156}
157
158int iwch_cxgb3_ofld_send(struct t3cdev *tdev, struct sk_buff *skb)
159{
160 int error = 0;
161 struct cxio_rdev *rdev;
162
163 rdev = (struct cxio_rdev *)tdev->ulp;
164 if (cxio_fatal_error(rdev)) {
165 kfree_skb(skb);
166 return -EIO;
167 }
168 error = cxgb3_ofld_send(tdev, skb);
169 if (error)
170 kfree_skb(skb);
171 return error;
172}
173
142static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb) 174static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
143{ 175{
144 struct cpl_tid_release *req; 176 struct cpl_tid_release *req;
@@ -150,7 +182,7 @@ static void release_tid(struct t3cdev *tdev, u32 hwtid, struct sk_buff *skb)
150 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 182 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
151 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid)); 183 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, hwtid));
152 skb->priority = CPL_PRIORITY_SETUP; 184 skb->priority = CPL_PRIORITY_SETUP;
153 cxgb3_ofld_send(tdev, skb); 185 iwch_cxgb3_ofld_send(tdev, skb);
154 return; 186 return;
155} 187}
156 188
@@ -172,8 +204,7 @@ int iwch_quiesce_tid(struct iwch_ep *ep)
172 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE); 204 req->val = cpu_to_be64(1 << S_TCB_RX_QUIESCE);
173 205
174 skb->priority = CPL_PRIORITY_DATA; 206 skb->priority = CPL_PRIORITY_DATA;
175 cxgb3_ofld_send(ep->com.tdev, skb); 207 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
176 return 0;
177} 208}
178 209
179int iwch_resume_tid(struct iwch_ep *ep) 210int iwch_resume_tid(struct iwch_ep *ep)
@@ -194,8 +225,7 @@ int iwch_resume_tid(struct iwch_ep *ep)
194 req->val = 0; 225 req->val = 0;
195 226
196 skb->priority = CPL_PRIORITY_DATA; 227 skb->priority = CPL_PRIORITY_DATA;
197 cxgb3_ofld_send(ep->com.tdev, skb); 228 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
198 return 0;
199} 229}
200 230
201static void set_emss(struct iwch_ep *ep, u16 opt) 231static void set_emss(struct iwch_ep *ep, u16 opt)
@@ -252,18 +282,22 @@ static void *alloc_ep(int size, gfp_t gfp)
252 282
253void __free_ep(struct kref *kref) 283void __free_ep(struct kref *kref)
254{ 284{
255 struct iwch_ep_common *epc; 285 struct iwch_ep *ep;
256 epc = container_of(kref, struct iwch_ep_common, kref); 286 ep = container_of(container_of(kref, struct iwch_ep_common, kref),
257 PDBG("%s ep %p state %s\n", __func__, epc, states[state_read(epc)]); 287 struct iwch_ep, com);
258 kfree(epc); 288 PDBG("%s ep %p state %s\n", __func__, ep, states[state_read(&ep->com)]);
289 if (ep->com.flags & RELEASE_RESOURCES) {
290 cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid);
291 dst_release(ep->dst);
292 l2t_release(L2DATA(ep->com.tdev), ep->l2t);
293 }
294 kfree(ep);
259} 295}
260 296
261static void release_ep_resources(struct iwch_ep *ep) 297static void release_ep_resources(struct iwch_ep *ep)
262{ 298{
263 PDBG("%s ep %p tid %d\n", __func__, ep, ep->hwtid); 299 PDBG("%s ep %p tid %d\n", __func__, ep, ep->hwtid);
264 cxgb3_remove_tid(ep->com.tdev, (void *)ep, ep->hwtid); 300 ep->com.flags |= RELEASE_RESOURCES;
265 dst_release(ep->dst);
266 l2t_release(L2DATA(ep->com.tdev), ep->l2t);
267 put_ep(&ep->com); 301 put_ep(&ep->com);
268} 302}
269 303
@@ -382,7 +416,7 @@ static void abort_arp_failure(struct t3cdev *dev, struct sk_buff *skb)
382 416
383 PDBG("%s t3cdev %p\n", __func__, dev); 417 PDBG("%s t3cdev %p\n", __func__, dev);
384 req->cmd = CPL_ABORT_NO_RST; 418 req->cmd = CPL_ABORT_NO_RST;
385 cxgb3_ofld_send(dev, skb); 419 iwch_cxgb3_ofld_send(dev, skb);
386} 420}
387 421
388static int send_halfclose(struct iwch_ep *ep, gfp_t gfp) 422static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
@@ -402,8 +436,7 @@ static int send_halfclose(struct iwch_ep *ep, gfp_t gfp)
402 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_CLOSE_CON)); 436 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_CLOSE_CON));
403 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 437 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
404 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, ep->hwtid)); 438 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_CON_REQ, ep->hwtid));
405 l2t_send(ep->com.tdev, skb, ep->l2t); 439 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
406 return 0;
407} 440}
408 441
409static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp) 442static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
@@ -424,8 +457,7 @@ static int send_abort(struct iwch_ep *ep, struct sk_buff *skb, gfp_t gfp)
424 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 457 req->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
425 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, ep->hwtid)); 458 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ABORT_REQ, ep->hwtid));
426 req->cmd = CPL_ABORT_SEND_RST; 459 req->cmd = CPL_ABORT_SEND_RST;
427 l2t_send(ep->com.tdev, skb, ep->l2t); 460 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
428 return 0;
429} 461}
430 462
431static int send_connect(struct iwch_ep *ep) 463static int send_connect(struct iwch_ep *ep)
@@ -469,8 +501,7 @@ static int send_connect(struct iwch_ep *ep)
469 req->opt0l = htonl(opt0l); 501 req->opt0l = htonl(opt0l);
470 req->params = 0; 502 req->params = 0;
471 req->opt2 = htonl(opt2); 503 req->opt2 = htonl(opt2);
472 l2t_send(ep->com.tdev, skb, ep->l2t); 504 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
473 return 0;
474} 505}
475 506
476static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb) 507static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
@@ -527,7 +558,7 @@ static void send_mpa_req(struct iwch_ep *ep, struct sk_buff *skb)
527 req->sndseq = htonl(ep->snd_seq); 558 req->sndseq = htonl(ep->snd_seq);
528 BUG_ON(ep->mpa_skb); 559 BUG_ON(ep->mpa_skb);
529 ep->mpa_skb = skb; 560 ep->mpa_skb = skb;
530 l2t_send(ep->com.tdev, skb, ep->l2t); 561 iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
531 start_ep_timer(ep); 562 start_ep_timer(ep);
532 state_set(&ep->com, MPA_REQ_SENT); 563 state_set(&ep->com, MPA_REQ_SENT);
533 return; 564 return;
@@ -578,8 +609,7 @@ static int send_mpa_reject(struct iwch_ep *ep, const void *pdata, u8 plen)
578 req->sndseq = htonl(ep->snd_seq); 609 req->sndseq = htonl(ep->snd_seq);
579 BUG_ON(ep->mpa_skb); 610 BUG_ON(ep->mpa_skb);
580 ep->mpa_skb = skb; 611 ep->mpa_skb = skb;
581 l2t_send(ep->com.tdev, skb, ep->l2t); 612 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
582 return 0;
583} 613}
584 614
585static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen) 615static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
@@ -630,8 +660,7 @@ static int send_mpa_reply(struct iwch_ep *ep, const void *pdata, u8 plen)
630 req->sndseq = htonl(ep->snd_seq); 660 req->sndseq = htonl(ep->snd_seq);
631 ep->mpa_skb = skb; 661 ep->mpa_skb = skb;
632 state_set(&ep->com, MPA_REP_SENT); 662 state_set(&ep->com, MPA_REP_SENT);
633 l2t_send(ep->com.tdev, skb, ep->l2t); 663 return iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
634 return 0;
635} 664}
636 665
637static int act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx) 666static int act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -795,7 +824,7 @@ static int update_rx_credits(struct iwch_ep *ep, u32 credits)
795 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid)); 824 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, ep->hwtid));
796 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1)); 825 req->credit_dack = htonl(V_RX_CREDITS(credits) | V_RX_FORCE_ACK(1));
797 skb->priority = CPL_PRIORITY_ACK; 826 skb->priority = CPL_PRIORITY_ACK;
798 cxgb3_ofld_send(ep->com.tdev, skb); 827 iwch_cxgb3_ofld_send(ep->com.tdev, skb);
799 return credits; 828 return credits;
800} 829}
801 830
@@ -1127,8 +1156,8 @@ static int abort_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1127 * We get 2 abort replies from the HW. The first one must 1156 * We get 2 abort replies from the HW. The first one must
1128 * be ignored except for scribbling that we need one more. 1157 * be ignored except for scribbling that we need one more.
1129 */ 1158 */
1130 if (!(ep->flags & ABORT_REQ_IN_PROGRESS)) { 1159 if (!(ep->com.flags & ABORT_REQ_IN_PROGRESS)) {
1131 ep->flags |= ABORT_REQ_IN_PROGRESS; 1160 ep->com.flags |= ABORT_REQ_IN_PROGRESS;
1132 return CPL_RET_BUF_DONE; 1161 return CPL_RET_BUF_DONE;
1133 } 1162 }
1134 1163
@@ -1203,8 +1232,7 @@ static int listen_start(struct iwch_listen_ep *ep)
1203 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK)); 1232 req->opt1 = htonl(V_CONN_POLICY(CPL_CONN_POLICY_ASK));
1204 1233
1205 skb->priority = 1; 1234 skb->priority = 1;
1206 cxgb3_ofld_send(ep->com.tdev, skb); 1235 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
1207 return 0;
1208} 1236}
1209 1237
1210static int pass_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx) 1238static int pass_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
@@ -1237,8 +1265,7 @@ static int listen_stop(struct iwch_listen_ep *ep)
1237 req->cpu_idx = 0; 1265 req->cpu_idx = 0;
1238 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid)); 1266 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_CLOSE_LISTSRV_REQ, ep->stid));
1239 skb->priority = 1; 1267 skb->priority = 1;
1240 cxgb3_ofld_send(ep->com.tdev, skb); 1268 return iwch_cxgb3_ofld_send(ep->com.tdev, skb);
1241 return 0;
1242} 1269}
1243 1270
1244static int close_listsrv_rpl(struct t3cdev *tdev, struct sk_buff *skb, 1271static int close_listsrv_rpl(struct t3cdev *tdev, struct sk_buff *skb,
@@ -1286,7 +1313,7 @@ static void accept_cr(struct iwch_ep *ep, __be32 peer_ip, struct sk_buff *skb)
1286 rpl->opt2 = htonl(opt2); 1313 rpl->opt2 = htonl(opt2);
1287 rpl->rsvd = rpl->opt2; /* workaround for HW bug */ 1314 rpl->rsvd = rpl->opt2; /* workaround for HW bug */
1288 skb->priority = CPL_PRIORITY_SETUP; 1315 skb->priority = CPL_PRIORITY_SETUP;
1289 l2t_send(ep->com.tdev, skb, ep->l2t); 1316 iwch_l2t_send(ep->com.tdev, skb, ep->l2t);
1290 1317
1291 return; 1318 return;
1292} 1319}
@@ -1315,7 +1342,7 @@ static void reject_cr(struct t3cdev *tdev, u32 hwtid, __be32 peer_ip,
1315 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT); 1342 rpl->opt0l_status = htonl(CPL_PASS_OPEN_REJECT);
1316 rpl->opt2 = 0; 1343 rpl->opt2 = 0;
1317 rpl->rsvd = rpl->opt2; 1344 rpl->rsvd = rpl->opt2;
1318 cxgb3_ofld_send(tdev, skb); 1345 iwch_cxgb3_ofld_send(tdev, skb);
1319 } 1346 }
1320} 1347}
1321 1348
@@ -1534,8 +1561,8 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1534 * We get 2 peer aborts from the HW. The first one must 1561 * We get 2 peer aborts from the HW. The first one must
1535 * be ignored except for scribbling that we need one more. 1562 * be ignored except for scribbling that we need one more.
1536 */ 1563 */
1537 if (!(ep->flags & PEER_ABORT_IN_PROGRESS)) { 1564 if (!(ep->com.flags & PEER_ABORT_IN_PROGRESS)) {
1538 ep->flags |= PEER_ABORT_IN_PROGRESS; 1565 ep->com.flags |= PEER_ABORT_IN_PROGRESS;
1539 return CPL_RET_BUF_DONE; 1566 return CPL_RET_BUF_DONE;
1540 } 1567 }
1541 1568
@@ -1613,7 +1640,7 @@ static int peer_abort(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
1613 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid)); 1640 rpl->wr.wr_lo = htonl(V_WR_TID(ep->hwtid));
1614 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid)); 1641 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, ep->hwtid));
1615 rpl->cmd = CPL_ABORT_NO_RST; 1642 rpl->cmd = CPL_ABORT_NO_RST;
1616 cxgb3_ofld_send(ep->com.tdev, rpl_skb); 1643 iwch_cxgb3_ofld_send(ep->com.tdev, rpl_skb);
1617out: 1644out:
1618 if (release) 1645 if (release)
1619 release_ep_resources(ep); 1646 release_ep_resources(ep);
@@ -2017,8 +2044,11 @@ int iwch_destroy_listen(struct iw_cm_id *cm_id)
2017 ep->com.rpl_done = 0; 2044 ep->com.rpl_done = 0;
2018 ep->com.rpl_err = 0; 2045 ep->com.rpl_err = 0;
2019 err = listen_stop(ep); 2046 err = listen_stop(ep);
2047 if (err)
2048 goto done;
2020 wait_event(ep->com.waitq, ep->com.rpl_done); 2049 wait_event(ep->com.waitq, ep->com.rpl_done);
2021 cxgb3_free_stid(ep->com.tdev, ep->stid); 2050 cxgb3_free_stid(ep->com.tdev, ep->stid);
2051done:
2022 err = ep->com.rpl_err; 2052 err = ep->com.rpl_err;
2023 cm_id->rem_ref(cm_id); 2053 cm_id->rem_ref(cm_id);
2024 put_ep(&ep->com); 2054 put_ep(&ep->com);
@@ -2030,12 +2060,22 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
2030 int ret=0; 2060 int ret=0;
2031 unsigned long flags; 2061 unsigned long flags;
2032 int close = 0; 2062 int close = 0;
2063 int fatal = 0;
2064 struct t3cdev *tdev;
2065 struct cxio_rdev *rdev;
2033 2066
2034 spin_lock_irqsave(&ep->com.lock, flags); 2067 spin_lock_irqsave(&ep->com.lock, flags);
2035 2068
2036 PDBG("%s ep %p state %s, abrupt %d\n", __func__, ep, 2069 PDBG("%s ep %p state %s, abrupt %d\n", __func__, ep,
2037 states[ep->com.state], abrupt); 2070 states[ep->com.state], abrupt);
2038 2071
2072 tdev = (struct t3cdev *)ep->com.tdev;
2073 rdev = (struct cxio_rdev *)tdev->ulp;
2074 if (cxio_fatal_error(rdev)) {
2075 fatal = 1;
2076 close_complete_upcall(ep);
2077 ep->com.state = DEAD;
2078 }
2039 switch (ep->com.state) { 2079 switch (ep->com.state) {
2040 case MPA_REQ_WAIT: 2080 case MPA_REQ_WAIT:
2041 case MPA_REQ_SENT: 2081 case MPA_REQ_SENT:
@@ -2075,7 +2115,11 @@ int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp)
2075 ret = send_abort(ep, NULL, gfp); 2115 ret = send_abort(ep, NULL, gfp);
2076 else 2116 else
2077 ret = send_halfclose(ep, gfp); 2117 ret = send_halfclose(ep, gfp);
2118 if (ret)
2119 fatal = 1;
2078 } 2120 }
2121 if (fatal)
2122 release_ep_resources(ep);
2079 return ret; 2123 return ret;
2080} 2124}
2081 2125
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.h b/drivers/infiniband/hw/cxgb3/iwch_cm.h
index d7c7e09f0996..43c0aea7eadc 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.h
@@ -147,6 +147,7 @@ enum iwch_ep_state {
147enum iwch_ep_flags { 147enum iwch_ep_flags {
148 PEER_ABORT_IN_PROGRESS = (1 << 0), 148 PEER_ABORT_IN_PROGRESS = (1 << 0),
149 ABORT_REQ_IN_PROGRESS = (1 << 1), 149 ABORT_REQ_IN_PROGRESS = (1 << 1),
150 RELEASE_RESOURCES = (1 << 2),
150}; 151};
151 152
152struct iwch_ep_common { 153struct iwch_ep_common {
@@ -161,6 +162,7 @@ struct iwch_ep_common {
161 wait_queue_head_t waitq; 162 wait_queue_head_t waitq;
162 int rpl_done; 163 int rpl_done;
163 int rpl_err; 164 int rpl_err;
165 u32 flags;
164}; 166};
165 167
166struct iwch_listen_ep { 168struct iwch_listen_ep {
@@ -188,7 +190,6 @@ struct iwch_ep {
188 u16 plen; 190 u16 plen;
189 u32 ird; 191 u32 ird;
190 u32 ord; 192 u32 ord;
191 u32 flags;
192}; 193};
193 194
194static inline struct iwch_ep *to_ep(struct iw_cm_id *cm_id) 195static inline struct iwch_ep *to_ep(struct iw_cm_id *cm_id)
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index c758fbd58478..2f546a625330 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -751,7 +751,7 @@ int iwch_post_zb_read(struct iwch_qp *qhp)
751 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)| 751 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)|
752 V_FW_RIWR_LEN(flit_cnt)); 752 V_FW_RIWR_LEN(flit_cnt));
753 skb->priority = CPL_PRIORITY_DATA; 753 skb->priority = CPL_PRIORITY_DATA;
754 return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb); 754 return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
755} 755}
756 756
757/* 757/*
@@ -783,7 +783,7 @@ int iwch_post_terminate(struct iwch_qp *qhp, struct respQ_msg_t *rsp_msg)
783 V_FW_RIWR_FLAGS(T3_COMPLETION_FLAG | T3_NOTIFY_FLAG)); 783 V_FW_RIWR_FLAGS(T3_COMPLETION_FLAG | T3_NOTIFY_FLAG));
784 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid)); 784 wqe->send.wrh.gen_tid_len = cpu_to_be32(V_FW_RIWR_TID(qhp->ep->hwtid));
785 skb->priority = CPL_PRIORITY_DATA; 785 skb->priority = CPL_PRIORITY_DATA;
786 return cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb); 786 return iwch_cxgb3_ofld_send(qhp->rhp->rdev.t3cdev_p, skb);
787} 787}
788 788
789/* 789/*
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 2ccb9d31771f..ae3d7590346e 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -394,8 +394,7 @@ static int mlx4_ib_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
394 PAGE_SIZE, vma->vm_page_prot)) 394 PAGE_SIZE, vma->vm_page_prot))
395 return -EAGAIN; 395 return -EAGAIN;
396 } else if (vma->vm_pgoff == 1 && dev->dev->caps.bf_reg_size != 0) { 396 } else if (vma->vm_pgoff == 1 && dev->dev->caps.bf_reg_size != 0) {
397 /* FIXME want pgprot_writecombine() for BlueFlame pages */ 397 vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
398 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
399 398
400 if (io_remap_pfn_range(vma, vma->vm_start, 399 if (io_remap_pfn_range(vma, vma->vm_start,
401 to_mucontext(context)->uar.pfn + 400 to_mucontext(context)->uar.pfn +
diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
index 04b12ad23390..17621de54a9f 100644
--- a/drivers/infiniband/hw/nes/nes.h
+++ b/drivers/infiniband/hw/nes/nes.h
@@ -289,8 +289,8 @@ static inline __le32 get_crc_value(struct nes_v4_quad *nes_quad)
289static inline void 289static inline void
290set_wqe_64bit_value(__le32 *wqe_words, u32 index, u64 value) 290set_wqe_64bit_value(__le32 *wqe_words, u32 index, u64 value)
291{ 291{
292 wqe_words[index] = cpu_to_le32((u32) ((unsigned long)value)); 292 wqe_words[index] = cpu_to_le32((u32) value);
293 wqe_words[index + 1] = cpu_to_le32((u32)(upper_32_bits((unsigned long)value))); 293 wqe_words[index + 1] = cpu_to_le32(upper_32_bits(value));
294} 294}
295 295
296static inline void 296static inline void
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index 52425154acd4..dbd9a75474e3 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -426,6 +426,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
426 if (type == NES_TIMER_TYPE_CLOSE) { 426 if (type == NES_TIMER_TYPE_CLOSE) {
427 new_send->timetosend += (HZ/10); 427 new_send->timetosend += (HZ/10);
428 if (cm_node->recv_entry) { 428 if (cm_node->recv_entry) {
429 kfree(new_send);
429 WARN_ON(1); 430 WARN_ON(1);
430 return -EINVAL; 431 return -EINVAL;
431 } 432 }
@@ -445,8 +446,8 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
445 if (ret != NETDEV_TX_OK) { 446 if (ret != NETDEV_TX_OK) {
446 nes_debug(NES_DBG_CM, "Error sending packet %p " 447 nes_debug(NES_DBG_CM, "Error sending packet %p "
447 "(jiffies = %lu)\n", new_send, jiffies); 448 "(jiffies = %lu)\n", new_send, jiffies);
448 atomic_dec(&new_send->skb->users);
449 new_send->timetosend = jiffies; 449 new_send->timetosend = jiffies;
450 ret = NETDEV_TX_OK;
450 } else { 451 } else {
451 cm_packets_sent++; 452 cm_packets_sent++;
452 if (!send_retrans) { 453 if (!send_retrans) {
@@ -630,7 +631,6 @@ static void nes_cm_timer_tick(unsigned long pass)
630 nes_debug(NES_DBG_CM, "rexmit failed for " 631 nes_debug(NES_DBG_CM, "rexmit failed for "
631 "node=%p\n", cm_node); 632 "node=%p\n", cm_node);
632 cm_packets_bounced++; 633 cm_packets_bounced++;
633 atomic_dec(&send_entry->skb->users);
634 send_entry->retrycount--; 634 send_entry->retrycount--;
635 nexttimeout = jiffies + NES_SHORT_TIME; 635 nexttimeout = jiffies + NES_SHORT_TIME;
636 settimer = 1; 636 settimer = 1;
@@ -666,11 +666,6 @@ static void nes_cm_timer_tick(unsigned long pass)
666 666
667 spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags); 667 spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags);
668 rem_ref_cm_node(cm_node->cm_core, cm_node); 668 rem_ref_cm_node(cm_node->cm_core, cm_node);
669 if (ret != NETDEV_TX_OK) {
670 nes_debug(NES_DBG_CM, "rexmit failed for cm_node=%p\n",
671 cm_node);
672 break;
673 }
674 } 669 }
675 670
676 if (settimer) { 671 if (settimer) {
@@ -1262,7 +1257,6 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
1262 cm_node->nesqp = NULL; 1257 cm_node->nesqp = NULL;
1263 } 1258 }
1264 1259
1265 cm_node->freed = 1;
1266 kfree(cm_node); 1260 kfree(cm_node);
1267 return 0; 1261 return 0;
1268} 1262}
@@ -1999,13 +1993,17 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
1999 if (loopbackremotelistener == NULL) { 1993 if (loopbackremotelistener == NULL) {
2000 create_event(cm_node, NES_CM_EVENT_ABORTED); 1994 create_event(cm_node, NES_CM_EVENT_ABORTED);
2001 } else { 1995 } else {
2002 atomic_inc(&cm_loopbacks);
2003 loopback_cm_info = *cm_info; 1996 loopback_cm_info = *cm_info;
2004 loopback_cm_info.loc_port = cm_info->rem_port; 1997 loopback_cm_info.loc_port = cm_info->rem_port;
2005 loopback_cm_info.rem_port = cm_info->loc_port; 1998 loopback_cm_info.rem_port = cm_info->loc_port;
2006 loopback_cm_info.cm_id = loopbackremotelistener->cm_id; 1999 loopback_cm_info.cm_id = loopbackremotelistener->cm_id;
2007 loopbackremotenode = make_cm_node(cm_core, nesvnic, 2000 loopbackremotenode = make_cm_node(cm_core, nesvnic,
2008 &loopback_cm_info, loopbackremotelistener); 2001 &loopback_cm_info, loopbackremotelistener);
2002 if (!loopbackremotenode) {
2003 rem_ref_cm_node(cm_node->cm_core, cm_node);
2004 return NULL;
2005 }
2006 atomic_inc(&cm_loopbacks);
2009 loopbackremotenode->loopbackpartner = cm_node; 2007 loopbackremotenode->loopbackpartner = cm_node;
2010 loopbackremotenode->tcp_cntxt.rcv_wscale = 2008 loopbackremotenode->tcp_cntxt.rcv_wscale =
2011 NES_CM_DEFAULT_RCV_WND_SCALE; 2009 NES_CM_DEFAULT_RCV_WND_SCALE;
@@ -2690,6 +2688,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2690 struct ib_mr *ibmr = NULL; 2688 struct ib_mr *ibmr = NULL;
2691 struct ib_phys_buf ibphysbuf; 2689 struct ib_phys_buf ibphysbuf;
2692 struct nes_pd *nespd; 2690 struct nes_pd *nespd;
2691 u64 tagged_offset;
2693 2692
2694 2693
2695 2694
@@ -2755,10 +2754,11 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2755 ibphysbuf.addr = nesqp->ietf_frame_pbase; 2754 ibphysbuf.addr = nesqp->ietf_frame_pbase;
2756 ibphysbuf.size = conn_param->private_data_len + 2755 ibphysbuf.size = conn_param->private_data_len +
2757 sizeof(struct ietf_mpa_frame); 2756 sizeof(struct ietf_mpa_frame);
2757 tagged_offset = (u64)(unsigned long)nesqp->ietf_frame;
2758 ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd, 2758 ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd,
2759 &ibphysbuf, 1, 2759 &ibphysbuf, 1,
2760 IB_ACCESS_LOCAL_WRITE, 2760 IB_ACCESS_LOCAL_WRITE,
2761 (u64 *)&nesqp->ietf_frame); 2761 &tagged_offset);
2762 if (!ibmr) { 2762 if (!ibmr) {
2763 nes_debug(NES_DBG_CM, "Unable to register memory region" 2763 nes_debug(NES_DBG_CM, "Unable to register memory region"
2764 "for lSMM for cm_node = %p \n", 2764 "for lSMM for cm_node = %p \n",
@@ -2782,7 +2782,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
2782 sizeof(struct ietf_mpa_frame)); 2782 sizeof(struct ietf_mpa_frame));
2783 set_wqe_64bit_value(wqe->wqe_words, 2783 set_wqe_64bit_value(wqe->wqe_words,
2784 NES_IWARP_SQ_WQE_FRAG0_LOW_IDX, 2784 NES_IWARP_SQ_WQE_FRAG0_LOW_IDX,
2785 (u64)nesqp->ietf_frame); 2785 (u64)(unsigned long)nesqp->ietf_frame);
2786 wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = 2786 wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] =
2787 cpu_to_le32(conn_param->private_data_len + 2787 cpu_to_le32(conn_param->private_data_len +
2788 sizeof(struct ietf_mpa_frame)); 2788 sizeof(struct ietf_mpa_frame));
diff --git a/drivers/infiniband/hw/nes/nes_cm.h b/drivers/infiniband/hw/nes/nes_cm.h
index d5f778202eb7..80bba1892571 100644
--- a/drivers/infiniband/hw/nes/nes_cm.h
+++ b/drivers/infiniband/hw/nes/nes_cm.h
@@ -298,7 +298,6 @@ struct nes_cm_node {
298 struct nes_vnic *nesvnic; 298 struct nes_vnic *nesvnic;
299 int apbvt_set; 299 int apbvt_set;
300 int accept_pend; 300 int accept_pend;
301 int freed;
302 struct list_head timer_entry; 301 struct list_head timer_entry;
303 struct list_head reset_entry; 302 struct list_head reset_entry;
304 struct nes_qp *nesqp; 303 struct nes_qp *nesqp;
diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
index 52e734042b8e..d6fc9ae44062 100644
--- a/drivers/infiniband/hw/nes/nes_hw.c
+++ b/drivers/infiniband/hw/nes/nes_hw.c
@@ -46,6 +46,10 @@ static unsigned int nes_lro_max_aggr = NES_LRO_MAX_AGGR;
46module_param(nes_lro_max_aggr, uint, 0444); 46module_param(nes_lro_max_aggr, uint, 0444);
47MODULE_PARM_DESC(nes_lro_max_aggr, "NIC LRO max packet aggregation"); 47MODULE_PARM_DESC(nes_lro_max_aggr, "NIC LRO max packet aggregation");
48 48
49static int wide_ppm_offset;
50module_param(wide_ppm_offset, int, 0644);
51MODULE_PARM_DESC(wide_ppm_offset, "Increase CX4 interface clock ppm offset, 0=100ppm (default), 1=300ppm");
52
49static u32 crit_err_count; 53static u32 crit_err_count;
50u32 int_mod_timer_init; 54u32 int_mod_timer_init;
51u32 int_mod_cq_depth_256; 55u32 int_mod_cq_depth_256;
@@ -546,8 +550,11 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
546 msleep(1); 550 msleep(1);
547 } 551 }
548 if (int_cnt > 1) { 552 if (int_cnt > 1) {
553 u32 sds;
549 spin_lock_irqsave(&nesadapter->phy_lock, flags); 554 spin_lock_irqsave(&nesadapter->phy_lock, flags);
550 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, 0x0000F088); 555 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
556 sds |= 0x00000040;
557 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
551 mh_detected++; 558 mh_detected++;
552 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET); 559 reset_value = nes_read32(nesdev->regs+NES_SOFTWARE_RESET);
553 reset_value |= 0x0000003d; 560 reset_value |= 0x0000003d;
@@ -736,39 +743,49 @@ static int nes_init_serdes(struct nes_device *nesdev, u8 hw_rev, u8 port_count,
736{ 743{
737 int i; 744 int i;
738 u32 u32temp; 745 u32 u32temp;
739 u32 serdes_common_control; 746 u32 sds;
740 747
741 if (hw_rev != NE020_REV) { 748 if (hw_rev != NE020_REV) {
742 /* init serdes 0 */ 749 /* init serdes 0 */
750 if (wide_ppm_offset && (nesadapter->phy_type[0] == NES_PHY_TYPE_CX4))
751 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000FFFAA);
752 else
753 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
743 754
744 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL0, 0x000000FF);
745 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) { 755 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) {
746 serdes_common_control = nes_read_indexed(nesdev, 756 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0);
747 NES_IDX_ETH_SERDES_COMMON_CONTROL0); 757 sds |= 0x00000100;
748 serdes_common_control |= 0x000000100; 758 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds);
749 nes_write_indexed(nesdev,
750 NES_IDX_ETH_SERDES_COMMON_CONTROL0,
751 serdes_common_control);
752 } else if (!OneG_Mode) {
753 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
754 } 759 }
755 if (((port_count > 1) && 760 if (!OneG_Mode)
756 (nesadapter->phy_type[0] != NES_PHY_TYPE_PUMA_1G)) || 761 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE0, 0x11110000);
757 ((port_count > 2) && 762
758 (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G))) { 763 if (port_count < 2)
759 /* init serdes 1 */ 764 return 0;
760 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF); 765
761 if (nesadapter->phy_type[0] == NES_PHY_TYPE_PUMA_1G) { 766 /* init serdes 1 */
762 serdes_common_control = nes_read_indexed(nesdev, 767 switch (nesadapter->phy_type[1]) {
763 NES_IDX_ETH_SERDES_COMMON_CONTROL1); 768 case NES_PHY_TYPE_ARGUS:
764 serdes_common_control |= 0x000000100; 769 case NES_PHY_TYPE_SFP_D:
765 nes_write_indexed(nesdev, 770 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP0, 0x00000000);
766 NES_IDX_ETH_SERDES_COMMON_CONTROL1, 771 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_EMP1, 0x00000000);
767 serdes_common_control); 772 break;
768 } else if (!OneG_Mode) { 773 case NES_PHY_TYPE_CX4:
769 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000); 774 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
770 } 775 sds &= 0xFFFFFFBF;
776 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
777 if (wide_ppm_offset)
778 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000FFFAA);
779 else
780 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_CDR_CONTROL1, 0x000000FF);
781 break;
782 case NES_PHY_TYPE_PUMA_1G:
783 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1);
784 sds |= 0x000000100;
785 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL1, sds);
771 } 786 }
787 if (!OneG_Mode)
788 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_TX_HIGHZ_LANE_MODE1, 0x11110000);
772 } else { 789 } else {
773 /* init serdes 0 */ 790 /* init serdes 0 */
774 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008); 791 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, 0x00000008);
@@ -1259,203 +1276,162 @@ int nes_init_phy(struct nes_device *nesdev)
1259{ 1276{
1260 struct nes_adapter *nesadapter = nesdev->nesadapter; 1277 struct nes_adapter *nesadapter = nesdev->nesadapter;
1261 u32 counter = 0; 1278 u32 counter = 0;
1262 u32 sds_common_control0; 1279 u32 sds;
1263 u32 mac_index = nesdev->mac_index; 1280 u32 mac_index = nesdev->mac_index;
1264 u32 tx_config = 0; 1281 u32 tx_config = 0;
1265 u16 phy_data; 1282 u16 phy_data;
1266 u32 temp_phy_data = 0; 1283 u32 temp_phy_data = 0;
1267 u32 temp_phy_data2 = 0; 1284 u32 temp_phy_data2 = 0;
1268 u32 i = 0; 1285 u8 phy_type = nesadapter->phy_type[mac_index];
1286 u8 phy_index = nesadapter->phy_index[mac_index];
1269 1287
1270 if ((nesadapter->OneG_Mode) && 1288 if ((nesadapter->OneG_Mode) &&
1271 (nesadapter->phy_type[mac_index] != NES_PHY_TYPE_PUMA_1G)) { 1289 (phy_type != NES_PHY_TYPE_PUMA_1G)) {
1272 nes_debug(NES_DBG_PHY, "1G PHY, mac_index = %d.\n", mac_index); 1290 nes_debug(NES_DBG_PHY, "1G PHY, mac_index = %d.\n", mac_index);
1273 if (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_1G) { 1291 if (phy_type == NES_PHY_TYPE_1G) {
1274 printk(PFX "%s: Programming mdc config for 1G\n", __func__);
1275 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG); 1292 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1276 tx_config &= 0xFFFFFFE3; 1293 tx_config &= 0xFFFFFFE3;
1277 tx_config |= 0x04; 1294 tx_config |= 0x04;
1278 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config); 1295 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1279 } 1296 }
1280 1297
1281 nes_read_1G_phy_reg(nesdev, 1, nesadapter->phy_index[mac_index], &phy_data); 1298 nes_read_1G_phy_reg(nesdev, 1, phy_index, &phy_data);
1282 nes_debug(NES_DBG_PHY, "Phy data from register 1 phy address %u = 0x%X.\n", 1299 nes_write_1G_phy_reg(nesdev, 23, phy_index, 0xb000);
1283 nesadapter->phy_index[mac_index], phy_data);
1284 nes_write_1G_phy_reg(nesdev, 23, nesadapter->phy_index[mac_index], 0xb000);
1285 1300
1286 /* Reset the PHY */ 1301 /* Reset the PHY */
1287 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], 0x8000); 1302 nes_write_1G_phy_reg(nesdev, 0, phy_index, 0x8000);
1288 udelay(100); 1303 udelay(100);
1289 counter = 0; 1304 counter = 0;
1290 do { 1305 do {
1291 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data); 1306 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1292 nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data); 1307 if (counter++ > 100)
1293 if (counter++ > 100) break; 1308 break;
1294 } while (phy_data & 0x8000); 1309 } while (phy_data & 0x8000);
1295 1310
1296 /* Setting no phy loopback */ 1311 /* Setting no phy loopback */
1297 phy_data &= 0xbfff; 1312 phy_data &= 0xbfff;
1298 phy_data |= 0x1140; 1313 phy_data |= 0x1140;
1299 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], phy_data); 1314 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data);
1300 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data); 1315 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1301 nes_debug(NES_DBG_PHY, "Phy data from register 0 = 0x%X.\n", phy_data); 1316 nes_read_1G_phy_reg(nesdev, 0x17, phy_index, &phy_data);
1302 1317 nes_read_1G_phy_reg(nesdev, 0x1e, phy_index, &phy_data);
1303 nes_read_1G_phy_reg(nesdev, 0x17, nesadapter->phy_index[mac_index], &phy_data);
1304 nes_debug(NES_DBG_PHY, "Phy data from register 0x17 = 0x%X.\n", phy_data);
1305
1306 nes_read_1G_phy_reg(nesdev, 0x1e, nesadapter->phy_index[mac_index], &phy_data);
1307 nes_debug(NES_DBG_PHY, "Phy data from register 0x1e = 0x%X.\n", phy_data);
1308 1318
1309 /* Setting the interrupt mask */ 1319 /* Setting the interrupt mask */
1310 nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data); 1320 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
1311 nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data); 1321 nes_write_1G_phy_reg(nesdev, 0x19, phy_index, 0xffee);
1312 nes_write_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], 0xffee); 1322 nes_read_1G_phy_reg(nesdev, 0x19, phy_index, &phy_data);
1313
1314 nes_read_1G_phy_reg(nesdev, 0x19, nesadapter->phy_index[mac_index], &phy_data);
1315 nes_debug(NES_DBG_PHY, "Phy data from register 0x19 = 0x%X.\n", phy_data);
1316 1323
1317 /* turning on flow control */ 1324 /* turning on flow control */
1318 nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data); 1325 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
1319 nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data); 1326 nes_write_1G_phy_reg(nesdev, 4, phy_index, (phy_data & ~(0x03E0)) | 0xc00);
1320 nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], 1327 nes_read_1G_phy_reg(nesdev, 4, phy_index, &phy_data);
1321 (phy_data & ~(0x03E0)) | 0xc00);
1322 /* nes_write_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index],
1323 phy_data | 0xc00); */
1324 nes_read_1G_phy_reg(nesdev, 4, nesadapter->phy_index[mac_index], &phy_data);
1325 nes_debug(NES_DBG_PHY, "Phy data from register 0x4 = 0x%X.\n", phy_data);
1326
1327 nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
1328 nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
1329 /* Clear Half duplex */
1330 nes_write_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index],
1331 phy_data & ~(0x0100));
1332 nes_read_1G_phy_reg(nesdev, 9, nesadapter->phy_index[mac_index], &phy_data);
1333 nes_debug(NES_DBG_PHY, "Phy data from register 0x9 = 0x%X.\n", phy_data);
1334
1335 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], &phy_data);
1336 nes_write_1G_phy_reg(nesdev, 0, nesadapter->phy_index[mac_index], phy_data | 0x0300);
1337 } else {
1338 if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_IRIS) ||
1339 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
1340 /* setup 10G MDIO operation */
1341 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1342 tx_config &= 0xFFFFFFE3;
1343 tx_config |= 0x15;
1344 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1345 }
1346 if ((nesadapter->phy_type[mac_index] == NES_PHY_TYPE_ARGUS)) {
1347 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee);
1348 1328
1349 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1329 /* Clear Half duplex */
1350 mdelay(10); 1330 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
1351 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1331 nes_write_1G_phy_reg(nesdev, 9, phy_index, phy_data & ~(0x0100));
1352 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1332 nes_read_1G_phy_reg(nesdev, 9, phy_index, &phy_data);
1353 1333
1354 /* 1334 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1355 * if firmware is already running (like from a 1335 nes_write_1G_phy_reg(nesdev, 0, phy_index, phy_data | 0x0300);
1356 * driver un-load/load, don't do anything.
1357 */
1358 if (temp_phy_data == temp_phy_data2) {
1359 /* configure QT2505 AMCC PHY */
1360 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0x0000, 0x8000);
1361 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0000);
1362 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc302, 0x0044);
1363 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc318, 0x0052);
1364 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc319, 0x0008);
1365 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc31a, 0x0098);
1366 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0026, 0x0E00);
1367 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0027, 0x0001);
1368 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0x0028, 0xA528);
1369 1336
1370 /* 1337 return 0;
1371 * remove micro from reset; chip boots from ROM, 1338 }
1372 * uploads EEPROM f/w image, uC executes f/w
1373 */
1374 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc300, 0x0002);
1375 1339
1376 /* 1340 if ((phy_type == NES_PHY_TYPE_IRIS) ||
1377 * wait for heart beat to start to 1341 (phy_type == NES_PHY_TYPE_ARGUS) ||
1378 * know loading is done 1342 (phy_type == NES_PHY_TYPE_SFP_D)) {
1379 */ 1343 /* setup 10G MDIO operation */
1380 counter = 0; 1344 tx_config = nes_read_indexed(nesdev, NES_IDX_MAC_TX_CONFIG);
1381 do { 1345 tx_config &= 0xFFFFFFE3;
1382 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1346 tx_config |= 0x15;
1383 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1347 nes_write_indexed(nesdev, NES_IDX_MAC_TX_CONFIG, tx_config);
1384 if (counter++ > 1000) { 1348 }
1385 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from heartbeat check <this is bad!!!> \n"); 1349 if ((phy_type == NES_PHY_TYPE_ARGUS) ||
1386 break; 1350 (phy_type == NES_PHY_TYPE_SFP_D)) {
1387 } 1351 /* Check firmware heartbeat */
1388 mdelay(100); 1352 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1389 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7ee); 1353 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1390 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1354 udelay(1500);
1391 } while ((temp_phy_data2 == temp_phy_data)); 1355 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1356 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1357
1358 if (temp_phy_data != temp_phy_data2)
1359 return 0;
1392 1360
1393 /* 1361 /* no heartbeat, configure the PHY */
1394 * wait for tracking to start to know 1362 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0x0000, 0x8000);
1395 * f/w is good to go 1363 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0000);
1396 */ 1364 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc316, 0x000A);
1397 counter = 0; 1365 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc318, 0x0052);
1398 do { 1366 if (phy_type == NES_PHY_TYPE_ARGUS) {
1399 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x3, 0xd7fd); 1367 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x000C);
1400 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 1368 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0008);
1401 if (counter++ > 1000) { 1369 } else {
1402 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from status check <this is bad!!!> \n"); 1370 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc302, 0x0004);
1403 break; 1371 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc319, 0x0038);
1404 } 1372 }
1405 mdelay(1000); 1373 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc31a, 0x0098);
1406 /* 1374 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0026, 0x0E00);
1407 * nes_debug(NES_DBG_PHY, "AMCC PHY- phy_status not ready yet = 0x%02X\n", 1375 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0027, 0x0001);
1408 * temp_phy_data);
1409 */
1410 } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
1411
1412 /* set LOS Control invert RXLOSB_I_PADINV */
1413 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd003, 0x0000);
1414 /* set LOS Control to mask of RXLOSB_I */
1415 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xc314, 0x0042);
1416 /* set LED1 to input mode (LED1 and LED2 share same LED) */
1417 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd006, 0x0007);
1418 /* set LED2 to RX link_status and activity */
1419 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd007, 0x000A);
1420 /* set LED3 to RX link_status */
1421 nes_write_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 0x1, 0xd008, 0x0009);
1422 1376
1423 /* 1377 /* setup LEDs */
1424 * reset the res-calibration on t2 1378 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd006, 0x0007);
1425 * serdes; ensures it is stable after 1379 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd007, 0x000A);
1426 * the amcc phy is stable 1380 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd008, 0x0009);
1427 */
1428 1381
1429 sds_common_control0 = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0); 1382 nes_write_10G_phy_reg(nesdev, phy_index, 0x3, 0x0028, 0xA528);
1430 sds_common_control0 |= 0x1;
1431 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
1432 1383
1433 /* release the res-calibration reset */ 1384 /* Bring PHY out of reset */
1434 sds_common_control0 &= 0xfffffffe; 1385 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc300, 0x0002);
1435 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0, sds_common_control0);
1436 1386
1437 i = 0; 1387 /* Check for heartbeat */
1438 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040) 1388 counter = 0;
1439 && (i++ < 5000)) { 1389 mdelay(690);
1440 /* mdelay(1); */ 1390 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1441 } 1391 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1392 do {
1393 if (counter++ > 150) {
1394 nes_debug(NES_DBG_PHY, "No PHY heartbeat\n");
1395 break;
1396 }
1397 mdelay(1);
1398 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7ee);
1399 temp_phy_data2 = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1400 } while ((temp_phy_data2 == temp_phy_data));
1442 1401
1443 /* 1402 /* wait for tracking */
1444 * wait for link train done before moving on, 1403 counter = 0;
1445 * or will get an interupt storm 1404 do {
1446 */ 1405 nes_read_10G_phy_reg(nesdev, phy_index, 0x3, 0xd7fd);
1447 counter = 0; 1406 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
1448 do { 1407 if (counter++ > 300) {
1449 temp_phy_data = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 + 1408 nes_debug(NES_DBG_PHY, "PHY did not track\n");
1450 (0x200 * (nesdev->mac_index & 1))); 1409 break;
1451 if (counter++ > 1000) {
1452 nes_debug(NES_DBG_PHY, "AMCC PHY- breaking from link train wait <this is bad, link didnt train!!!>\n");
1453 break;
1454 }
1455 mdelay(1);
1456 } while (((temp_phy_data & 0x0f1f0000) != 0x0f0f0000));
1457 } 1410 }
1458 } 1411 mdelay(10);
1412 } while (((temp_phy_data & 0xff) != 0x50) && ((temp_phy_data & 0xff) != 0x70));
1413
1414 /* setup signal integrity */
1415 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xd003, 0x0000);
1416 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00D, 0x00FE);
1417 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00E, 0x0032);
1418 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xF00F, 0x0002);
1419 nes_write_10G_phy_reg(nesdev, phy_index, 0x1, 0xc314, 0x0063);
1420
1421 /* reset serdes */
1422 sds = nes_read_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1423 mac_index * 0x200);
1424 sds |= 0x1;
1425 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1426 mac_index * 0x200, sds);
1427 sds &= 0xfffffffe;
1428 nes_write_indexed(nesdev, NES_IDX_ETH_SERDES_COMMON_CONTROL0 +
1429 mac_index * 0x200, sds);
1430
1431 counter = 0;
1432 while (((nes_read32(nesdev->regs + NES_SOFTWARE_RESET) & 0x00000040) != 0x00000040)
1433 && (counter++ < 5000))
1434 ;
1459 } 1435 }
1460 return 0; 1436 return 0;
1461} 1437}
@@ -2359,6 +2335,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2359 u16 temp_phy_data; 2335 u16 temp_phy_data;
2360 u32 pcs_val = 0x0f0f0000; 2336 u32 pcs_val = 0x0f0f0000;
2361 u32 pcs_mask = 0x0f1f0000; 2337 u32 pcs_mask = 0x0f1f0000;
2338 u32 cdr_ctrl;
2362 2339
2363 spin_lock_irqsave(&nesadapter->phy_lock, flags); 2340 spin_lock_irqsave(&nesadapter->phy_lock, flags);
2364 if (nesadapter->mac_sw_state[mac_number] != NES_MAC_SW_IDLE) { 2341 if (nesadapter->mac_sw_state[mac_number] != NES_MAC_SW_IDLE) {
@@ -2473,6 +2450,7 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2473 break; 2450 break;
2474 2451
2475 case NES_PHY_TYPE_ARGUS: 2452 case NES_PHY_TYPE_ARGUS:
2453 case NES_PHY_TYPE_SFP_D:
2476 /* clear the alarms */ 2454 /* clear the alarms */
2477 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008); 2455 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0x0008);
2478 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001); 2456 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 4, 0xc001);
@@ -2483,19 +2461,18 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2483 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004); 2461 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9004);
2484 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005); 2462 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9005);
2485 /* check link status */ 2463 /* check link status */
2486 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1); 2464 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 0x9003);
2487 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 2465 temp_phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2488 u32temp = 100;
2489 do {
2490 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 1, 1);
2491 2466
2492 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL); 2467 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
2493 if ((phy_data == temp_phy_data) || (!(--u32temp))) 2468 nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2494 break; 2469 nes_read_10G_phy_reg(nesdev, nesadapter->phy_index[mac_index], 3, 0x0021);
2495 temp_phy_data = phy_data; 2470 phy_data = (u16)nes_read_indexed(nesdev, NES_IDX_MAC_MDIO_CONTROL);
2496 } while (1); 2471
2472 phy_data = (!temp_phy_data && (phy_data == 0x8000)) ? 0x4 : 0x0;
2473
2497 nes_debug(NES_DBG_PHY, "%s: Phy data = 0x%04X, link was %s.\n", 2474 nes_debug(NES_DBG_PHY, "%s: Phy data = 0x%04X, link was %s.\n",
2498 __func__, phy_data, nesadapter->mac_link_down ? "DOWN" : "UP"); 2475 __func__, phy_data, nesadapter->mac_link_down[mac_index] ? "DOWN" : "UP");
2499 break; 2476 break;
2500 2477
2501 case NES_PHY_TYPE_PUMA_1G: 2478 case NES_PHY_TYPE_PUMA_1G:
@@ -2511,6 +2488,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2511 } 2488 }
2512 2489
2513 if (phy_data & 0x0004) { 2490 if (phy_data & 0x0004) {
2491 if (wide_ppm_offset &&
2492 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
2493 (nesadapter->hw_rev != NE020_REV)) {
2494 cdr_ctrl = nes_read_indexed(nesdev,
2495 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2496 mac_index * 0x200);
2497 nes_write_indexed(nesdev,
2498 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2499 mac_index * 0x200,
2500 cdr_ctrl | 0x000F0000);
2501 }
2514 nesadapter->mac_link_down[mac_index] = 0; 2502 nesadapter->mac_link_down[mac_index] = 0;
2515 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) { 2503 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
2516 nes_debug(NES_DBG_PHY, "The Link is UP!!. linkup was %d\n", 2504 nes_debug(NES_DBG_PHY, "The Link is UP!!. linkup was %d\n",
@@ -2525,6 +2513,17 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2525 } 2513 }
2526 } 2514 }
2527 } else { 2515 } else {
2516 if (wide_ppm_offset &&
2517 (nesadapter->phy_type[mac_index] == NES_PHY_TYPE_CX4) &&
2518 (nesadapter->hw_rev != NE020_REV)) {
2519 cdr_ctrl = nes_read_indexed(nesdev,
2520 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2521 mac_index * 0x200);
2522 nes_write_indexed(nesdev,
2523 NES_IDX_ETH_SERDES_CDR_CONTROL0 +
2524 mac_index * 0x200,
2525 cdr_ctrl & 0xFFF0FFFF);
2526 }
2528 nesadapter->mac_link_down[mac_index] = 1; 2527 nesadapter->mac_link_down[mac_index] = 1;
2529 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) { 2528 list_for_each_entry(nesvnic, &nesadapter->nesvnic_list[mac_index], list) {
2530 nes_debug(NES_DBG_PHY, "The Link is Down!!. linkup was %d\n", 2529 nes_debug(NES_DBG_PHY, "The Link is Down!!. linkup was %d\n",
diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
index f41a8710d2a8..c3654c6383fe 100644
--- a/drivers/infiniband/hw/nes/nes_hw.h
+++ b/drivers/infiniband/hw/nes/nes_hw.h
@@ -35,12 +35,14 @@
35 35
36#include <linux/inet_lro.h> 36#include <linux/inet_lro.h>
37 37
38#define NES_PHY_TYPE_CX4 1
38#define NES_PHY_TYPE_1G 2 39#define NES_PHY_TYPE_1G 2
39#define NES_PHY_TYPE_IRIS 3 40#define NES_PHY_TYPE_IRIS 3
40#define NES_PHY_TYPE_ARGUS 4 41#define NES_PHY_TYPE_ARGUS 4
41#define NES_PHY_TYPE_PUMA_1G 5 42#define NES_PHY_TYPE_PUMA_1G 5
42#define NES_PHY_TYPE_PUMA_10G 6 43#define NES_PHY_TYPE_PUMA_10G 6
43#define NES_PHY_TYPE_GLADIUS 7 44#define NES_PHY_TYPE_GLADIUS 7
45#define NES_PHY_TYPE_SFP_D 8
44 46
45#define NES_MULTICAST_PF_MAX 8 47#define NES_MULTICAST_PF_MAX 8
46 48
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index ecb1f6fd6276..c6e6611d3016 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1426,49 +1426,55 @@ static int nes_netdev_get_settings(struct net_device *netdev, struct ethtool_cmd
1426 struct nes_vnic *nesvnic = netdev_priv(netdev); 1426 struct nes_vnic *nesvnic = netdev_priv(netdev);
1427 struct nes_device *nesdev = nesvnic->nesdev; 1427 struct nes_device *nesdev = nesvnic->nesdev;
1428 struct nes_adapter *nesadapter = nesdev->nesadapter; 1428 struct nes_adapter *nesadapter = nesdev->nesadapter;
1429 u32 mac_index = nesdev->mac_index;
1430 u8 phy_type = nesadapter->phy_type[mac_index];
1431 u8 phy_index = nesadapter->phy_index[mac_index];
1429 u16 phy_data; 1432 u16 phy_data;
1430 1433
1431 et_cmd->duplex = DUPLEX_FULL; 1434 et_cmd->duplex = DUPLEX_FULL;
1432 et_cmd->port = PORT_MII; 1435 et_cmd->port = PORT_MII;
1436 et_cmd->maxtxpkt = 511;
1437 et_cmd->maxrxpkt = 511;
1433 1438
1434 if (nesadapter->OneG_Mode) { 1439 if (nesadapter->OneG_Mode) {
1435 et_cmd->speed = SPEED_1000; 1440 et_cmd->speed = SPEED_1000;
1436 if (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_PUMA_1G) { 1441 if (phy_type == NES_PHY_TYPE_PUMA_1G) {
1437 et_cmd->supported = SUPPORTED_1000baseT_Full; 1442 et_cmd->supported = SUPPORTED_1000baseT_Full;
1438 et_cmd->advertising = ADVERTISED_1000baseT_Full; 1443 et_cmd->advertising = ADVERTISED_1000baseT_Full;
1439 et_cmd->autoneg = AUTONEG_DISABLE; 1444 et_cmd->autoneg = AUTONEG_DISABLE;
1440 et_cmd->transceiver = XCVR_INTERNAL; 1445 et_cmd->transceiver = XCVR_INTERNAL;
1441 et_cmd->phy_address = nesdev->mac_index; 1446 et_cmd->phy_address = mac_index;
1442 } else { 1447 } else {
1443 et_cmd->supported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg; 1448 et_cmd->supported = SUPPORTED_1000baseT_Full
1444 et_cmd->advertising = ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg; 1449 | SUPPORTED_Autoneg;
1445 nes_read_1G_phy_reg(nesdev, 0, nesadapter->phy_index[nesdev->mac_index], &phy_data); 1450 et_cmd->advertising = ADVERTISED_1000baseT_Full
1451 | ADVERTISED_Autoneg;
1452 nes_read_1G_phy_reg(nesdev, 0, phy_index, &phy_data);
1446 if (phy_data & 0x1000) 1453 if (phy_data & 0x1000)
1447 et_cmd->autoneg = AUTONEG_ENABLE; 1454 et_cmd->autoneg = AUTONEG_ENABLE;
1448 else 1455 else
1449 et_cmd->autoneg = AUTONEG_DISABLE; 1456 et_cmd->autoneg = AUTONEG_DISABLE;
1450 et_cmd->transceiver = XCVR_EXTERNAL; 1457 et_cmd->transceiver = XCVR_EXTERNAL;
1451 et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index]; 1458 et_cmd->phy_address = phy_index;
1452 } 1459 }
1460 return 0;
1461 }
1462 if ((phy_type == NES_PHY_TYPE_IRIS) ||
1463 (phy_type == NES_PHY_TYPE_ARGUS) ||
1464 (phy_type == NES_PHY_TYPE_SFP_D)) {
1465 et_cmd->transceiver = XCVR_EXTERNAL;
1466 et_cmd->port = PORT_FIBRE;
1467 et_cmd->supported = SUPPORTED_FIBRE;
1468 et_cmd->advertising = ADVERTISED_FIBRE;
1469 et_cmd->phy_address = phy_index;
1453 } else { 1470 } else {
1454 if ((nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_IRIS) || 1471 et_cmd->transceiver = XCVR_INTERNAL;
1455 (nesadapter->phy_type[nesdev->mac_index] == NES_PHY_TYPE_ARGUS)) { 1472 et_cmd->supported = SUPPORTED_10000baseT_Full;
1456 et_cmd->transceiver = XCVR_EXTERNAL; 1473 et_cmd->advertising = ADVERTISED_10000baseT_Full;
1457 et_cmd->port = PORT_FIBRE; 1474 et_cmd->phy_address = mac_index;
1458 et_cmd->supported = SUPPORTED_FIBRE;
1459 et_cmd->advertising = ADVERTISED_FIBRE;
1460 et_cmd->phy_address = nesadapter->phy_index[nesdev->mac_index];
1461 } else {
1462 et_cmd->transceiver = XCVR_INTERNAL;
1463 et_cmd->supported = SUPPORTED_10000baseT_Full;
1464 et_cmd->advertising = ADVERTISED_10000baseT_Full;
1465 et_cmd->phy_address = nesdev->mac_index;
1466 }
1467 et_cmd->speed = SPEED_10000;
1468 et_cmd->autoneg = AUTONEG_DISABLE;
1469 } 1475 }
1470 et_cmd->maxtxpkt = 511; 1476 et_cmd->speed = SPEED_10000;
1471 et_cmd->maxrxpkt = 511; 1477 et_cmd->autoneg = AUTONEG_DISABLE;
1472 return 0; 1478 return 0;
1473} 1479}
1474 1480
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
index 5a76a5510350..4c57f329dd50 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
@@ -70,12 +70,14 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
70 */ 70 */
71 if (ppriv->pkey == pkey) { 71 if (ppriv->pkey == pkey) {
72 result = -ENOTUNIQ; 72 result = -ENOTUNIQ;
73 priv = NULL;
73 goto err; 74 goto err;
74 } 75 }
75 76
76 list_for_each_entry(priv, &ppriv->child_intfs, list) { 77 list_for_each_entry(priv, &ppriv->child_intfs, list) {
77 if (priv->pkey == pkey) { 78 if (priv->pkey == pkey) {
78 result = -ENOTUNIQ; 79 result = -ENOTUNIQ;
80 priv = NULL;
79 goto err; 81 goto err;
80 } 82 }
81 } 83 }
@@ -96,7 +98,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
96 98
97 result = ipoib_set_dev_features(priv, ppriv->ca); 99 result = ipoib_set_dev_features(priv, ppriv->ca);
98 if (result) 100 if (result)
99 goto device_init_failed; 101 goto err;
100 102
101 priv->pkey = pkey; 103 priv->pkey = pkey;
102 104
@@ -109,7 +111,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
109 ipoib_warn(ppriv, "failed to initialize subinterface: " 111 ipoib_warn(ppriv, "failed to initialize subinterface: "
110 "device %s, port %d", 112 "device %s, port %d",
111 ppriv->ca->name, ppriv->port); 113 ppriv->ca->name, ppriv->port);
112 goto device_init_failed; 114 goto err;
113 } 115 }
114 116
115 result = register_netdevice(priv->dev); 117 result = register_netdevice(priv->dev);
@@ -146,19 +148,19 @@ sysfs_failed:
146register_failed: 148register_failed:
147 ipoib_dev_cleanup(priv->dev); 149 ipoib_dev_cleanup(priv->dev);
148 150
149device_init_failed:
150 free_netdev(priv->dev);
151
152err: 151err:
153 mutex_unlock(&ppriv->vlan_mutex); 152 mutex_unlock(&ppriv->vlan_mutex);
154 rtnl_unlock(); 153 rtnl_unlock();
154 if (priv)
155 free_netdev(priv->dev);
156
155 return result; 157 return result;
156} 158}
157 159
158int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey) 160int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
159{ 161{
160 struct ipoib_dev_priv *ppriv, *priv, *tpriv; 162 struct ipoib_dev_priv *ppriv, *priv, *tpriv;
161 int ret = -ENOENT; 163 struct net_device *dev = NULL;
162 164
163 if (!capable(CAP_NET_ADMIN)) 165 if (!capable(CAP_NET_ADMIN))
164 return -EPERM; 166 return -EPERM;
@@ -172,14 +174,17 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
172 unregister_netdevice(priv->dev); 174 unregister_netdevice(priv->dev);
173 ipoib_dev_cleanup(priv->dev); 175 ipoib_dev_cleanup(priv->dev);
174 list_del(&priv->list); 176 list_del(&priv->list);
175 free_netdev(priv->dev); 177 dev = priv->dev;
176
177 ret = 0;
178 break; 178 break;
179 } 179 }
180 } 180 }
181 mutex_unlock(&ppriv->vlan_mutex); 181 mutex_unlock(&ppriv->vlan_mutex);
182 rtnl_unlock(); 182 rtnl_unlock();
183 183
184 return ret; 184 if (dev) {
185 free_netdev(dev);
186 return 0;
187 }
188
189 return -ENODEV;
185} 190}
diff --git a/drivers/input/input.c b/drivers/input/input.c
index ec3db3ade118..d44065d2e662 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -132,6 +132,11 @@ static void input_start_autorepeat(struct input_dev *dev, int code)
132 } 132 }
133} 133}
134 134
135static void input_stop_autorepeat(struct input_dev *dev)
136{
137 del_timer(&dev->timer);
138}
139
135#define INPUT_IGNORE_EVENT 0 140#define INPUT_IGNORE_EVENT 0
136#define INPUT_PASS_TO_HANDLERS 1 141#define INPUT_PASS_TO_HANDLERS 1
137#define INPUT_PASS_TO_DEVICE 2 142#define INPUT_PASS_TO_DEVICE 2
@@ -167,6 +172,8 @@ static void input_handle_event(struct input_dev *dev,
167 __change_bit(code, dev->key); 172 __change_bit(code, dev->key);
168 if (value) 173 if (value)
169 input_start_autorepeat(dev, code); 174 input_start_autorepeat(dev, code);
175 else
176 input_stop_autorepeat(dev);
170 } 177 }
171 178
172 disposition = INPUT_PASS_TO_HANDLERS; 179 disposition = INPUT_PASS_TO_HANDLERS;
@@ -737,11 +744,11 @@ static inline void input_wakeup_procfs_readers(void)
737 744
738static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait) 745static unsigned int input_proc_devices_poll(struct file *file, poll_table *wait)
739{ 746{
740 int state = input_devices_state;
741
742 poll_wait(file, &input_devices_poll_wait, wait); 747 poll_wait(file, &input_devices_poll_wait, wait);
743 if (state != input_devices_state) 748 if (file->f_version != input_devices_state) {
749 file->f_version = input_devices_state;
744 return POLLIN | POLLRDNORM; 750 return POLLIN | POLLRDNORM;
751 }
745 752
746 return 0; 753 return 0;
747} 754}
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 45470f18d7e9..f999dc60c3b8 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -229,7 +229,8 @@ struct atkbd {
229/* 229/*
230 * System-specific ketymap fixup routine 230 * System-specific ketymap fixup routine
231 */ 231 */
232static void (*atkbd_platform_fixup)(struct atkbd *); 232static void (*atkbd_platform_fixup)(struct atkbd *, const void *data);
233static void *atkbd_platform_fixup_data;
233 234
234static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, 235static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
235 ssize_t (*handler)(struct atkbd *, char *)); 236 ssize_t (*handler)(struct atkbd *, char *));
@@ -834,87 +835,64 @@ static void atkbd_disconnect(struct serio *serio)
834} 835}
835 836
836/* 837/*
837 * Most special keys (Fn+F?) on Dell laptops do not generate release 838 * generate release events for the keycodes given in data
838 * events so we have to do it ourselves.
839 */ 839 */
840static void atkbd_dell_laptop_keymap_fixup(struct atkbd *atkbd) 840static void atkbd_apply_forced_release_keylist(struct atkbd* atkbd,
841 const void *data)
841{ 842{
842 static const unsigned int forced_release_keys[] = { 843 const unsigned int *keys = data;
843 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93, 844 unsigned int i;
844 };
845 int i;
846 845
847 if (atkbd->set == 2) 846 if (atkbd->set == 2)
848 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++) 847 for (i = 0; keys[i] != -1U; i++)
849 __set_bit(forced_release_keys[i], 848 __set_bit(keys[i], atkbd->force_release_mask);
850 atkbd->force_release_mask);
851} 849}
852 850
853/* 851/*
852 * Most special keys (Fn+F?) on Dell laptops do not generate release
853 * events so we have to do it ourselves.
854 */
855static unsigned int atkbd_dell_laptop_forced_release_keys[] = {
856 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93, -1U
857};
858
859/*
854 * Perform fixup for HP system that doesn't generate release 860 * Perform fixup for HP system that doesn't generate release
855 * for its video switch 861 * for its video switch
856 */ 862 */
857static void atkbd_hp_keymap_fixup(struct atkbd *atkbd) 863static unsigned int atkbd_hp_forced_release_keys[] = {
858{ 864 0x94, -1U
859 static const unsigned int forced_release_keys[] = { 865};
860 0x94,
861 };
862 int i;
863
864 if (atkbd->set == 2)
865 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
866 __set_bit(forced_release_keys[i],
867 atkbd->force_release_mask);
868}
869 866
870/* 867/*
871 * Inventec system with broken key release on volume keys 868 * Inventec system with broken key release on volume keys
872 */ 869 */
873static void atkbd_inventec_keymap_fixup(struct atkbd *atkbd) 870static unsigned int atkbd_inventec_forced_release_keys[] = {
874{ 871 0xae, 0xb0, -1U
875 const unsigned int forced_release_keys[] = { 872};
876 0xae, 0xb0,
877 };
878 int i;
879
880 if (atkbd->set == 2)
881 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
882 __set_bit(forced_release_keys[i],
883 atkbd->force_release_mask);
884}
885 873
886/* 874/*
887 * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release 875 * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release
888 * for its volume buttons 876 * for its volume buttons
889 */ 877 */
890static void atkbd_hp_zv6100_keymap_fixup(struct atkbd *atkbd) 878static unsigned int atkbd_hp_zv6100_forced_release_keys[] = {
891{ 879 0xae, 0xb0, -1U
892 const unsigned int forced_release_keys[] = { 880};
893 0xae, 0xb0,
894 };
895 int i;
896
897 if (atkbd->set == 2)
898 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
899 __set_bit(forced_release_keys[i],
900 atkbd->force_release_mask);
901}
902 881
903/* 882/*
904 * Samsung NC10 with Fn+F? key release not working 883 * Samsung NC10 with Fn+F? key release not working
905 */ 884 */
906static void atkbd_samsung_keymap_fixup(struct atkbd *atkbd) 885static unsigned int atkbd_samsung_forced_release_keys[] = {
907{ 886 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xb3, 0xf7, 0xf9, -1U
908 const unsigned int forced_release_keys[] = { 887};
909 0x82, 0x83, 0x84, 0x86, 0x88, 0x89, 0xb3, 0xf7, 0xf9,
910 };
911 int i;
912 888
913 if (atkbd->set == 2) 889/*
914 for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++) 890 * The volume up and volume down special keys on a Fujitsu Amilo PA 1510 laptop
915 __set_bit(forced_release_keys[i], 891 * do not generate release events so we have to do it ourselves.
916 atkbd->force_release_mask); 892 */
917} 893static unsigned int atkbd_amilo_pa1510_forced_release_keys[] = {
894 0xb0, 0xae, -1U
895};
918 896
919/* 897/*
920 * atkbd_set_keycode_table() initializes keyboard's keycode table 898 * atkbd_set_keycode_table() initializes keyboard's keycode table
@@ -967,7 +945,7 @@ static void atkbd_set_keycode_table(struct atkbd *atkbd)
967 * Perform additional fixups 945 * Perform additional fixups
968 */ 946 */
969 if (atkbd_platform_fixup) 947 if (atkbd_platform_fixup)
970 atkbd_platform_fixup(atkbd); 948 atkbd_platform_fixup(atkbd, atkbd_platform_fixup_data);
971} 949}
972 950
973/* 951/*
@@ -1492,9 +1470,11 @@ static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf)
1492 return sprintf(buf, "%lu\n", atkbd->err_count); 1470 return sprintf(buf, "%lu\n", atkbd->err_count);
1493} 1471}
1494 1472
1495static int __init atkbd_setup_fixup(const struct dmi_system_id *id) 1473static int __init atkbd_setup_forced_release(const struct dmi_system_id *id)
1496{ 1474{
1497 atkbd_platform_fixup = id->driver_data; 1475 atkbd_platform_fixup = atkbd_apply_forced_release_keylist;
1476 atkbd_platform_fixup_data = id->driver_data;
1477
1498 return 0; 1478 return 0;
1499} 1479}
1500 1480
@@ -1505,8 +1485,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1505 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 1485 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
1506 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */ 1486 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
1507 }, 1487 },
1508 .callback = atkbd_setup_fixup, 1488 .callback = atkbd_setup_forced_release,
1509 .driver_data = atkbd_dell_laptop_keymap_fixup, 1489 .driver_data = atkbd_dell_laptop_forced_release_keys,
1510 }, 1490 },
1511 { 1491 {
1512 .ident = "Dell Laptop", 1492 .ident = "Dell Laptop",
@@ -1514,8 +1494,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1514 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), 1494 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
1515 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */ 1495 DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
1516 }, 1496 },
1517 .callback = atkbd_setup_fixup, 1497 .callback = atkbd_setup_forced_release,
1518 .driver_data = atkbd_dell_laptop_keymap_fixup, 1498 .driver_data = atkbd_dell_laptop_forced_release_keys,
1519 }, 1499 },
1520 { 1500 {
1521 .ident = "HP 2133", 1501 .ident = "HP 2133",
@@ -1523,8 +1503,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1523 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 1503 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1524 DMI_MATCH(DMI_PRODUCT_NAME, "HP 2133"), 1504 DMI_MATCH(DMI_PRODUCT_NAME, "HP 2133"),
1525 }, 1505 },
1526 .callback = atkbd_setup_fixup, 1506 .callback = atkbd_setup_forced_release,
1527 .driver_data = atkbd_hp_keymap_fixup, 1507 .driver_data = atkbd_hp_forced_release_keys,
1528 }, 1508 },
1529 { 1509 {
1530 .ident = "HP Pavilion ZV6100", 1510 .ident = "HP Pavilion ZV6100",
@@ -1532,8 +1512,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1532 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 1512 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1533 DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"), 1513 DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"),
1534 }, 1514 },
1535 .callback = atkbd_setup_fixup, 1515 .callback = atkbd_setup_forced_release,
1536 .driver_data = atkbd_hp_zv6100_keymap_fixup, 1516 .driver_data = atkbd_hp_zv6100_forced_release_keys,
1537 }, 1517 },
1538 { 1518 {
1539 .ident = "Inventec Symphony", 1519 .ident = "Inventec Symphony",
@@ -1541,8 +1521,8 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1541 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"), 1521 DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"),
1542 DMI_MATCH(DMI_PRODUCT_NAME, "SYMPHONY 6.0/7.0"), 1522 DMI_MATCH(DMI_PRODUCT_NAME, "SYMPHONY 6.0/7.0"),
1543 }, 1523 },
1544 .callback = atkbd_setup_fixup, 1524 .callback = atkbd_setup_forced_release,
1545 .driver_data = atkbd_inventec_keymap_fixup, 1525 .driver_data = atkbd_inventec_forced_release_keys,
1546 }, 1526 },
1547 { 1527 {
1548 .ident = "Samsung NC10", 1528 .ident = "Samsung NC10",
@@ -1550,8 +1530,17 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1550 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), 1530 DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
1551 DMI_MATCH(DMI_PRODUCT_NAME, "NC10"), 1531 DMI_MATCH(DMI_PRODUCT_NAME, "NC10"),
1552 }, 1532 },
1553 .callback = atkbd_setup_fixup, 1533 .callback = atkbd_setup_forced_release,
1554 .driver_data = atkbd_samsung_keymap_fixup, 1534 .driver_data = atkbd_samsung_forced_release_keys,
1535 },
1536 {
1537 .ident = "Fujitsu Amilo PA 1510",
1538 .matches = {
1539 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
1540 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pa 1510"),
1541 },
1542 .callback = atkbd_setup_forced_release,
1543 .driver_data = atkbd_amilo_pa1510_forced_release_keys,
1555 }, 1544 },
1556 { } 1545 { }
1557}; 1546};
diff --git a/drivers/input/keyboard/bf54x-keys.c b/drivers/input/keyboard/bf54x-keys.c
index ee855c5202e8..e94b7d735aca 100644
--- a/drivers/input/keyboard/bf54x-keys.c
+++ b/drivers/input/keyboard/bf54x-keys.c
@@ -211,8 +211,8 @@ static int __devinit bfin_kpad_probe(struct platform_device *pdev)
211 211
212 if (!pdata->debounce_time || pdata->debounce_time > MAX_MULT || 212 if (!pdata->debounce_time || pdata->debounce_time > MAX_MULT ||
213 !pdata->coldrive_time || pdata->coldrive_time > MAX_MULT) { 213 !pdata->coldrive_time || pdata->coldrive_time > MAX_MULT) {
214 printk(KERN_ERR DRV_NAME 214 printk(KERN_WARNING DRV_NAME
215 ": Invalid Debounce/Columdrive Time from pdata\n"); 215 ": Invalid Debounce/Columndrive Time in platform data\n");
216 bfin_write_KPAD_MSEL(0xFF0); /* Default MSEL */ 216 bfin_write_KPAD_MSEL(0xFF0); /* Default MSEL */
217 } else { 217 } else {
218 bfin_write_KPAD_MSEL( 218 bfin_write_KPAD_MSEL(
diff --git a/drivers/input/keyboard/hilkbd.c b/drivers/input/keyboard/hilkbd.c
index aacf71f3cd44..e9d639ec283d 100644
--- a/drivers/input/keyboard/hilkbd.c
+++ b/drivers/input/keyboard/hilkbd.c
@@ -198,45 +198,28 @@ static void hil_do(unsigned char cmd, unsigned char *data, unsigned int len)
198} 198}
199 199
200 200
201/* initialise HIL */ 201/* initialize HIL */
202static int __init 202static int __devinit hil_keyb_init(void)
203hil_keyb_init(void)
204{ 203{
205 unsigned char c; 204 unsigned char c;
206 unsigned int i, kbid; 205 unsigned int i, kbid;
207 wait_queue_head_t hil_wait; 206 wait_queue_head_t hil_wait;
208 int err; 207 int err;
209 208
210 if (hil_dev.dev) { 209 if (hil_dev.dev)
211 return -ENODEV; /* already initialized */ 210 return -ENODEV; /* already initialized */
212 }
213 211
212 init_waitqueue_head(&hil_wait);
214 spin_lock_init(&hil_dev.lock); 213 spin_lock_init(&hil_dev.lock);
214
215 hil_dev.dev = input_allocate_device(); 215 hil_dev.dev = input_allocate_device();
216 if (!hil_dev.dev) 216 if (!hil_dev.dev)
217 return -ENOMEM; 217 return -ENOMEM;
218 218
219#if defined(CONFIG_HP300)
220 if (!MACH_IS_HP300) {
221 err = -ENODEV;
222 goto err1;
223 }
224 if (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
225 printk(KERN_ERR "HIL: hardware register was not found\n");
226 err = -ENODEV;
227 goto err1;
228 }
229 if (!request_region(HILBASE + HIL_DATA, 2, "hil")) {
230 printk(KERN_ERR "HIL: IOPORT region already used\n");
231 err = -EIO;
232 goto err1;
233 }
234#endif
235
236 err = request_irq(HIL_IRQ, hil_interrupt, 0, "hil", hil_dev.dev_id); 219 err = request_irq(HIL_IRQ, hil_interrupt, 0, "hil", hil_dev.dev_id);
237 if (err) { 220 if (err) {
238 printk(KERN_ERR "HIL: Can't get IRQ\n"); 221 printk(KERN_ERR "HIL: Can't get IRQ\n");
239 goto err2; 222 goto err1;
240 } 223 }
241 224
242 /* Turn on interrupts */ 225 /* Turn on interrupts */
@@ -246,11 +229,9 @@ hil_keyb_init(void)
246 hil_dev.valid = 0; /* clear any pending data */ 229 hil_dev.valid = 0; /* clear any pending data */
247 hil_do(HIL_READKBDSADR, NULL, 0); 230 hil_do(HIL_READKBDSADR, NULL, 0);
248 231
249 init_waitqueue_head(&hil_wait); 232 wait_event_interruptible_timeout(hil_wait, hil_dev.valid, 3 * HZ);
250 wait_event_interruptible_timeout(hil_wait, hil_dev.valid, 3*HZ); 233 if (!hil_dev.valid)
251 if (!hil_dev.valid) {
252 printk(KERN_WARNING "HIL: timed out, assuming no keyboard present\n"); 234 printk(KERN_WARNING "HIL: timed out, assuming no keyboard present\n");
253 }
254 235
255 c = hil_dev.c; 236 c = hil_dev.c;
256 hil_dev.valid = 0; 237 hil_dev.valid = 0;
@@ -268,7 +249,7 @@ hil_keyb_init(void)
268 249
269 for (i = 0; i < HIL_KEYCODES_SET1_TBLSIZE; i++) 250 for (i = 0; i < HIL_KEYCODES_SET1_TBLSIZE; i++)
270 if (hphilkeyb_keycode[i] != KEY_RESERVED) 251 if (hphilkeyb_keycode[i] != KEY_RESERVED)
271 set_bit(hphilkeyb_keycode[i], hil_dev.dev->keybit); 252 __set_bit(hphilkeyb_keycode[i], hil_dev.dev->keybit);
272 253
273 hil_dev.dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); 254 hil_dev.dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
274 hil_dev.dev->ledbit[0] = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) | 255 hil_dev.dev->ledbit[0] = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) |
@@ -287,34 +268,45 @@ hil_keyb_init(void)
287 err = input_register_device(hil_dev.dev); 268 err = input_register_device(hil_dev.dev);
288 if (err) { 269 if (err) {
289 printk(KERN_ERR "HIL: Can't register device\n"); 270 printk(KERN_ERR "HIL: Can't register device\n");
290 goto err3; 271 goto err2;
291 } 272 }
273
292 printk(KERN_INFO "input: %s, ID %d at 0x%08lx (irq %d) found and attached\n", 274 printk(KERN_INFO "input: %s, ID %d at 0x%08lx (irq %d) found and attached\n",
293 hil_dev.dev->name, kbid, HILBASE, HIL_IRQ); 275 hil_dev.dev->name, kbid, HILBASE, HIL_IRQ);
294 276
295 return 0; 277 return 0;
296 278
297err3: 279err2:
298 hil_do(HIL_INTOFF, NULL, 0); 280 hil_do(HIL_INTOFF, NULL, 0);
299 disable_irq(HIL_IRQ);
300 free_irq(HIL_IRQ, hil_dev.dev_id); 281 free_irq(HIL_IRQ, hil_dev.dev_id);
301err2:
302#if defined(CONFIG_HP300)
303 release_region(HILBASE + HIL_DATA, 2);
304err1: 282err1:
305#endif
306 input_free_device(hil_dev.dev); 283 input_free_device(hil_dev.dev);
307 hil_dev.dev = NULL; 284 hil_dev.dev = NULL;
308 return err; 285 return err;
309} 286}
310 287
288static void __devexit hil_keyb_exit(void)
289{
290 if (HIL_IRQ)
291 free_irq(HIL_IRQ, hil_dev.dev_id);
292
293 /* Turn off interrupts */
294 hil_do(HIL_INTOFF, NULL, 0);
295
296 input_unregister_device(hil_dev.dev);
297 hil_dev.dev = NULL;
298}
311 299
312#if defined(CONFIG_PARISC) 300#if defined(CONFIG_PARISC)
313static int __init 301static int __devinit hil_probe_chip(struct parisc_device *dev)
314hil_init_chip(struct parisc_device *dev)
315{ 302{
303 /* Only allow one HIL keyboard */
304 if (hil_dev.dev)
305 return -ENODEV;
306
316 if (!dev->irq) { 307 if (!dev->irq) {
317 printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa.start); 308 printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%p\n",
309 (void *)dev->hpa.start);
318 return -ENODEV; 310 return -ENODEV;
319 } 311 }
320 312
@@ -327,51 +319,79 @@ hil_init_chip(struct parisc_device *dev)
327 return hil_keyb_init(); 319 return hil_keyb_init();
328} 320}
329 321
322static int __devexit hil_remove_chip(struct parisc_device *dev)
323{
324 hil_keyb_exit();
325
326 return 0;
327}
328
330static struct parisc_device_id hil_tbl[] = { 329static struct parisc_device_id hil_tbl[] = {
331 { HPHW_FIO, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, 0x00073 }, 330 { HPHW_FIO, HVERSION_REV_ANY_ID, HVERSION_ANY_ID, 0x00073 },
332 { 0, } 331 { 0, }
333}; 332};
334 333
334#if 0
335/* Disabled to avoid conflicts with the HP SDC HIL drivers */
335MODULE_DEVICE_TABLE(parisc, hil_tbl); 336MODULE_DEVICE_TABLE(parisc, hil_tbl);
337#endif
336 338
337static struct parisc_driver hil_driver = { 339static struct parisc_driver hil_driver = {
338 .name = "hil", 340 .name = "hil",
339 .id_table = hil_tbl, 341 .id_table = hil_tbl,
340 .probe = hil_init_chip, 342 .probe = hil_probe_chip,
343 .remove = __devexit_p(hil_remove_chip),
341}; 344};
342#endif /* CONFIG_PARISC */
343
344 345
345static int __init hil_init(void) 346static int __init hil_init(void)
346{ 347{
347#if defined(CONFIG_PARISC)
348 return register_parisc_driver(&hil_driver); 348 return register_parisc_driver(&hil_driver);
349#else
350 return hil_keyb_init();
351#endif
352} 349}
353 350
354
355static void __exit hil_exit(void) 351static void __exit hil_exit(void)
356{ 352{
357 if (HIL_IRQ) { 353 unregister_parisc_driver(&hil_driver);
358 disable_irq(HIL_IRQ); 354}
359 free_irq(HIL_IRQ, hil_dev.dev_id); 355
356#else /* !CONFIG_PARISC */
357
358static int __init hil_init(void)
359{
360 int error;
361
362 /* Only allow one HIL keyboard */
363 if (hil_dev.dev)
364 return -EBUSY;
365
366 if (!MACH_IS_HP300)
367 return -ENODEV;
368
369 if (!hwreg_present((void *)(HILBASE + HIL_DATA))) {
370 printk(KERN_ERR "HIL: hardware register was not found\n");
371 return -ENODEV;
360 } 372 }
361 373
362 /* Turn off interrupts */ 374 if (!request_region(HILBASE + HIL_DATA, 2, "hil")) {
363 hil_do(HIL_INTOFF, NULL, 0); 375 printk(KERN_ERR "HIL: IOPORT region already used\n");
376 return -EIO;
377 }
364 378
365 input_unregister_device(hil_dev.dev); 379 error = hil_keyb_init();
380 if (error) {
381 release_region(HILBASE + HIL_DATA, 2);
382 return error;
383 }
366 384
367 hil_dev.dev = NULL; 385 return 0;
386}
368 387
369#if defined(CONFIG_PARISC) 388static void __exit hil_exit(void)
370 unregister_parisc_driver(&hil_driver); 389{
371#else 390 hil_keyb_exit();
372 release_region(HILBASE+HIL_DATA, 2); 391 release_region(HILBASE + HIL_DATA, 2);
373#endif
374} 392}
375 393
394#endif /* CONFIG_PARISC */
395
376module_init(hil_init); 396module_init(hil_init);
377module_exit(hil_exit); 397module_exit(hil_exit);
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 67e5553f699a..203abac1e23e 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -227,4 +227,27 @@ config INPUT_PCF50633_PMU
227 Say Y to include support for delivering PMU events via input 227 Say Y to include support for delivering PMU events via input
228 layer on NXP PCF50633. 228 layer on NXP PCF50633.
229 229
230config INPUT_GPIO_ROTARY_ENCODER
231 tristate "Rotary encoders connected to GPIO pins"
232 depends on GPIOLIB && GENERIC_GPIO
233 help
234 Say Y here to add support for rotary encoders connected to GPIO lines.
235 Check file:Documentation/incput/rotary_encoder.txt for more
236 information.
237
238 To compile this driver as a module, choose M here: the
239 module will be called rotary_encoder.
240
241config INPUT_RB532_BUTTON
242 tristate "Mikrotik Routerboard 532 button interface"
243 depends on MIKROTIK_RB532
244 depends on GPIOLIB && GENERIC_GPIO
245 select INPUT_POLLDEV
246 help
247 Say Y here if you want support for the S1 button built into
248 Mikrotik's Routerboard 532.
249
250 To compile this driver as a module, choose M here: the
251 module will be called rb532_button.
252
230endif 253endif
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index bb62e6efacf3..eb3f407baedf 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -4,21 +4,23 @@
4 4
5# Each configuration option enables a list of files. 5# Each configuration option enables a list of files.
6 6
7obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o 7obj-$(CONFIG_INPUT_APANEL) += apanel.o
8obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
9obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o
10obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
11obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o
12obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
13obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
14obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o 8obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
15obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o 9obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
16obj-$(CONFIG_INPUT_KEYSPAN_REMOTE) += keyspan_remote.o 10obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
17obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
18obj-$(CONFIG_INPUT_YEALINK) += yealink.o
19obj-$(CONFIG_INPUT_CM109) += cm109.o 11obj-$(CONFIG_INPUT_CM109) += cm109.o
12obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o
20obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o 13obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
21obj-$(CONFIG_INPUT_UINPUT) += uinput.o 14obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
22obj-$(CONFIG_INPUT_APANEL) += apanel.o 15obj-$(CONFIG_INPUT_KEYSPAN_REMOTE) += keyspan_remote.o
23obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o 16obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o
24obj-$(CONFIG_INPUT_PCF50633_PMU) += pcf50633-input.o 17obj-$(CONFIG_INPUT_PCF50633_PMU) += pcf50633-input.o
18obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
19obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
20obj-$(CONFIG_INPUT_RB532_BUTTON) += rb532_button.o
21obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER) += rotary_encoder.o
22obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o
23obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o
24obj-$(CONFIG_INPUT_UINPUT) += uinput.o
25obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
26obj-$(CONFIG_INPUT_YEALINK) += yealink.o
diff --git a/drivers/input/misc/ati_remote2.c b/drivers/input/misc/ati_remote2.c
index 3c9988dc0e9f..922c05141585 100644
--- a/drivers/input/misc/ati_remote2.c
+++ b/drivers/input/misc/ati_remote2.c
@@ -31,12 +31,73 @@ MODULE_LICENSE("GPL");
31 * newly configured "channel". 31 * newly configured "channel".
32 */ 32 */
33 33
34static unsigned int channel_mask = 0xFFFF; 34enum {
35module_param(channel_mask, uint, 0644); 35 ATI_REMOTE2_MAX_CHANNEL_MASK = 0xFFFF,
36 ATI_REMOTE2_MAX_MODE_MASK = 0x1F,
37};
38
39static int ati_remote2_set_mask(const char *val,
40 struct kernel_param *kp, unsigned int max)
41{
42 unsigned long mask;
43 int ret;
44
45 if (!val)
46 return -EINVAL;
47
48 ret = strict_strtoul(val, 0, &mask);
49 if (ret)
50 return ret;
51
52 if (mask & ~max)
53 return -EINVAL;
54
55 *(unsigned int *)kp->arg = mask;
56
57 return 0;
58}
59
60static int ati_remote2_set_channel_mask(const char *val,
61 struct kernel_param *kp)
62{
63 pr_debug("%s()\n", __func__);
64
65 return ati_remote2_set_mask(val, kp, ATI_REMOTE2_MAX_CHANNEL_MASK);
66}
67
68static int ati_remote2_get_channel_mask(char *buffer, struct kernel_param *kp)
69{
70 pr_debug("%s()\n", __func__);
71
72 return sprintf(buffer, "0x%04x", *(unsigned int *)kp->arg);
73}
74
75static int ati_remote2_set_mode_mask(const char *val, struct kernel_param *kp)
76{
77 pr_debug("%s()\n", __func__);
78
79 return ati_remote2_set_mask(val, kp, ATI_REMOTE2_MAX_MODE_MASK);
80}
81
82static int ati_remote2_get_mode_mask(char *buffer, struct kernel_param *kp)
83{
84 pr_debug("%s()\n", __func__);
85
86 return sprintf(buffer, "0x%02x", *(unsigned int *)kp->arg);
87}
88
89static unsigned int channel_mask = ATI_REMOTE2_MAX_CHANNEL_MASK;
90#define param_check_channel_mask(name, p) __param_check(name, p, unsigned int)
91#define param_set_channel_mask ati_remote2_set_channel_mask
92#define param_get_channel_mask ati_remote2_get_channel_mask
93module_param(channel_mask, channel_mask, 0644);
36MODULE_PARM_DESC(channel_mask, "Bitmask of channels to accept <15:Channel16>...<1:Channel2><0:Channel1>"); 94MODULE_PARM_DESC(channel_mask, "Bitmask of channels to accept <15:Channel16>...<1:Channel2><0:Channel1>");
37 95
38static unsigned int mode_mask = 0x1F; 96static unsigned int mode_mask = ATI_REMOTE2_MAX_MODE_MASK;
39module_param(mode_mask, uint, 0644); 97#define param_check_mode_mask(name, p) __param_check(name, p, unsigned int)
98#define param_set_mode_mask ati_remote2_set_mode_mask
99#define param_get_mode_mask ati_remote2_get_mode_mask
100module_param(mode_mask, mode_mask, 0644);
40MODULE_PARM_DESC(mode_mask, "Bitmask of modes to accept <4:PC><3:AUX4><2:AUX3><1:AUX2><0:AUX1>"); 101MODULE_PARM_DESC(mode_mask, "Bitmask of modes to accept <4:PC><3:AUX4><2:AUX3><1:AUX2><0:AUX1>");
41 102
42static struct usb_device_id ati_remote2_id_table[] = { 103static struct usb_device_id ati_remote2_id_table[] = {
@@ -133,12 +194,18 @@ struct ati_remote2 {
133 u16 keycode[ATI_REMOTE2_MODES][ARRAY_SIZE(ati_remote2_key_table)]; 194 u16 keycode[ATI_REMOTE2_MODES][ARRAY_SIZE(ati_remote2_key_table)];
134 195
135 unsigned int flags; 196 unsigned int flags;
197
198 unsigned int channel_mask;
199 unsigned int mode_mask;
136}; 200};
137 201
138static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id); 202static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id);
139static void ati_remote2_disconnect(struct usb_interface *interface); 203static void ati_remote2_disconnect(struct usb_interface *interface);
140static int ati_remote2_suspend(struct usb_interface *interface, pm_message_t message); 204static int ati_remote2_suspend(struct usb_interface *interface, pm_message_t message);
141static int ati_remote2_resume(struct usb_interface *interface); 205static int ati_remote2_resume(struct usb_interface *interface);
206static int ati_remote2_reset_resume(struct usb_interface *interface);
207static int ati_remote2_pre_reset(struct usb_interface *interface);
208static int ati_remote2_post_reset(struct usb_interface *interface);
142 209
143static struct usb_driver ati_remote2_driver = { 210static struct usb_driver ati_remote2_driver = {
144 .name = "ati_remote2", 211 .name = "ati_remote2",
@@ -147,6 +214,9 @@ static struct usb_driver ati_remote2_driver = {
147 .id_table = ati_remote2_id_table, 214 .id_table = ati_remote2_id_table,
148 .suspend = ati_remote2_suspend, 215 .suspend = ati_remote2_suspend,
149 .resume = ati_remote2_resume, 216 .resume = ati_remote2_resume,
217 .reset_resume = ati_remote2_reset_resume,
218 .pre_reset = ati_remote2_pre_reset,
219 .post_reset = ati_remote2_post_reset,
150 .supports_autosuspend = 1, 220 .supports_autosuspend = 1,
151}; 221};
152 222
@@ -238,7 +308,7 @@ static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
238 308
239 channel = data[0] >> 4; 309 channel = data[0] >> 4;
240 310
241 if (!((1 << channel) & channel_mask)) 311 if (!((1 << channel) & ar2->channel_mask))
242 return; 312 return;
243 313
244 mode = data[0] & 0x0F; 314 mode = data[0] & 0x0F;
@@ -250,7 +320,7 @@ static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
250 return; 320 return;
251 } 321 }
252 322
253 if (!((1 << mode) & mode_mask)) 323 if (!((1 << mode) & ar2->mode_mask))
254 return; 324 return;
255 325
256 input_event(idev, EV_REL, REL_X, (s8) data[1]); 326 input_event(idev, EV_REL, REL_X, (s8) data[1]);
@@ -277,7 +347,7 @@ static void ati_remote2_input_key(struct ati_remote2 *ar2)
277 347
278 channel = data[0] >> 4; 348 channel = data[0] >> 4;
279 349
280 if (!((1 << channel) & channel_mask)) 350 if (!((1 << channel) & ar2->channel_mask))
281 return; 351 return;
282 352
283 mode = data[0] & 0x0F; 353 mode = data[0] & 0x0F;
@@ -305,7 +375,7 @@ static void ati_remote2_input_key(struct ati_remote2 *ar2)
305 ar2->mode = mode; 375 ar2->mode = mode;
306 } 376 }
307 377
308 if (!((1 << mode) & mode_mask)) 378 if (!((1 << mode) & ar2->mode_mask))
309 return; 379 return;
310 380
311 index = ati_remote2_lookup(hw_code); 381 index = ati_remote2_lookup(hw_code);
@@ -410,7 +480,7 @@ static int ati_remote2_getkeycode(struct input_dev *idev,
410 int index, mode; 480 int index, mode;
411 481
412 mode = scancode >> 8; 482 mode = scancode >> 8;
413 if (mode > ATI_REMOTE2_PC || !((1 << mode) & mode_mask)) 483 if (mode > ATI_REMOTE2_PC || !((1 << mode) & ar2->mode_mask))
414 return -EINVAL; 484 return -EINVAL;
415 485
416 index = ati_remote2_lookup(scancode & 0xFF); 486 index = ati_remote2_lookup(scancode & 0xFF);
@@ -427,7 +497,7 @@ static int ati_remote2_setkeycode(struct input_dev *idev, int scancode, int keyc
427 int index, mode, old_keycode; 497 int index, mode, old_keycode;
428 498
429 mode = scancode >> 8; 499 mode = scancode >> 8;
430 if (mode > ATI_REMOTE2_PC || !((1 << mode) & mode_mask)) 500 if (mode > ATI_REMOTE2_PC || !((1 << mode) & ar2->mode_mask))
431 return -EINVAL; 501 return -EINVAL;
432 502
433 index = ati_remote2_lookup(scancode & 0xFF); 503 index = ati_remote2_lookup(scancode & 0xFF);
@@ -550,7 +620,7 @@ static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
550 } 620 }
551} 621}
552 622
553static int ati_remote2_setup(struct ati_remote2 *ar2) 623static int ati_remote2_setup(struct ati_remote2 *ar2, unsigned int ch_mask)
554{ 624{
555 int r, i, channel; 625 int r, i, channel;
556 626
@@ -565,8 +635,8 @@ static int ati_remote2_setup(struct ati_remote2 *ar2)
565 635
566 channel = 0; 636 channel = 0;
567 for (i = 0; i < 16; i++) { 637 for (i = 0; i < 16; i++) {
568 if ((1 << i) & channel_mask) { 638 if ((1 << i) & ch_mask) {
569 if (!(~(1 << i) & 0xFFFF & channel_mask)) 639 if (!(~(1 << i) & ch_mask))
570 channel = i + 1; 640 channel = i + 1;
571 break; 641 break;
572 } 642 }
@@ -585,6 +655,99 @@ static int ati_remote2_setup(struct ati_remote2 *ar2)
585 return 0; 655 return 0;
586} 656}
587 657
658static ssize_t ati_remote2_show_channel_mask(struct device *dev,
659 struct device_attribute *attr,
660 char *buf)
661{
662 struct usb_device *udev = to_usb_device(dev);
663 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
664 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
665
666 return sprintf(buf, "0x%04x\n", ar2->channel_mask);
667}
668
669static ssize_t ati_remote2_store_channel_mask(struct device *dev,
670 struct device_attribute *attr,
671 const char *buf, size_t count)
672{
673 struct usb_device *udev = to_usb_device(dev);
674 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
675 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
676 unsigned long mask;
677 int r;
678
679 if (strict_strtoul(buf, 0, &mask))
680 return -EINVAL;
681
682 if (mask & ~ATI_REMOTE2_MAX_CHANNEL_MASK)
683 return -EINVAL;
684
685 r = usb_autopm_get_interface(ar2->intf[0]);
686 if (r) {
687 dev_err(&ar2->intf[0]->dev,
688 "%s(): usb_autopm_get_interface() = %d\n", __func__, r);
689 return r;
690 }
691
692 mutex_lock(&ati_remote2_mutex);
693
694 if (mask != ar2->channel_mask && !ati_remote2_setup(ar2, mask))
695 ar2->channel_mask = mask;
696
697 mutex_unlock(&ati_remote2_mutex);
698
699 usb_autopm_put_interface(ar2->intf[0]);
700
701 return count;
702}
703
704static ssize_t ati_remote2_show_mode_mask(struct device *dev,
705 struct device_attribute *attr,
706 char *buf)
707{
708 struct usb_device *udev = to_usb_device(dev);
709 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
710 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
711
712 return sprintf(buf, "0x%02x\n", ar2->mode_mask);
713}
714
715static ssize_t ati_remote2_store_mode_mask(struct device *dev,
716 struct device_attribute *attr,
717 const char *buf, size_t count)
718{
719 struct usb_device *udev = to_usb_device(dev);
720 struct usb_interface *intf = usb_ifnum_to_if(udev, 0);
721 struct ati_remote2 *ar2 = usb_get_intfdata(intf);
722 unsigned long mask;
723
724 if (strict_strtoul(buf, 0, &mask))
725 return -EINVAL;
726
727 if (mask & ~ATI_REMOTE2_MAX_MODE_MASK)
728 return -EINVAL;
729
730 ar2->mode_mask = mask;
731
732 return count;
733}
734
735static DEVICE_ATTR(channel_mask, 0644, ati_remote2_show_channel_mask,
736 ati_remote2_store_channel_mask);
737
738static DEVICE_ATTR(mode_mask, 0644, ati_remote2_show_mode_mask,
739 ati_remote2_store_mode_mask);
740
741static struct attribute *ati_remote2_attrs[] = {
742 &dev_attr_channel_mask.attr,
743 &dev_attr_mode_mask.attr,
744 NULL,
745};
746
747static struct attribute_group ati_remote2_attr_group = {
748 .attrs = ati_remote2_attrs,
749};
750
588static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id) 751static int ati_remote2_probe(struct usb_interface *interface, const struct usb_device_id *id)
589{ 752{
590 struct usb_device *udev = interface_to_usbdev(interface); 753 struct usb_device *udev = interface_to_usbdev(interface);
@@ -615,7 +778,10 @@ static int ati_remote2_probe(struct usb_interface *interface, const struct usb_d
615 if (r) 778 if (r)
616 goto fail2; 779 goto fail2;
617 780
618 r = ati_remote2_setup(ar2); 781 ar2->channel_mask = channel_mask;
782 ar2->mode_mask = mode_mask;
783
784 r = ati_remote2_setup(ar2, ar2->channel_mask);
619 if (r) 785 if (r)
620 goto fail2; 786 goto fail2;
621 787
@@ -624,19 +790,24 @@ static int ati_remote2_probe(struct usb_interface *interface, const struct usb_d
624 790
625 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name)); 791 strlcat(ar2->name, "ATI Remote Wonder II", sizeof(ar2->name));
626 792
627 r = ati_remote2_input_init(ar2); 793 r = sysfs_create_group(&udev->dev.kobj, &ati_remote2_attr_group);
628 if (r) 794 if (r)
629 goto fail2; 795 goto fail2;
630 796
797 r = ati_remote2_input_init(ar2);
798 if (r)
799 goto fail3;
800
631 usb_set_intfdata(interface, ar2); 801 usb_set_intfdata(interface, ar2);
632 802
633 interface->needs_remote_wakeup = 1; 803 interface->needs_remote_wakeup = 1;
634 804
635 return 0; 805 return 0;
636 806
807 fail3:
808 sysfs_remove_group(&udev->dev.kobj, &ati_remote2_attr_group);
637 fail2: 809 fail2:
638 ati_remote2_urb_cleanup(ar2); 810 ati_remote2_urb_cleanup(ar2);
639
640 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); 811 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
641 fail1: 812 fail1:
642 kfree(ar2); 813 kfree(ar2);
@@ -657,6 +828,8 @@ static void ati_remote2_disconnect(struct usb_interface *interface)
657 828
658 input_unregister_device(ar2->idev); 829 input_unregister_device(ar2->idev);
659 830
831 sysfs_remove_group(&ar2->udev->dev.kobj, &ati_remote2_attr_group);
832
660 ati_remote2_urb_cleanup(ar2); 833 ati_remote2_urb_cleanup(ar2);
661 834
662 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]); 835 usb_driver_release_interface(&ati_remote2_driver, ar2->intf[1]);
@@ -715,6 +888,78 @@ static int ati_remote2_resume(struct usb_interface *interface)
715 return r; 888 return r;
716} 889}
717 890
891static int ati_remote2_reset_resume(struct usb_interface *interface)
892{
893 struct ati_remote2 *ar2;
894 struct usb_host_interface *alt = interface->cur_altsetting;
895 int r = 0;
896
897 if (alt->desc.bInterfaceNumber)
898 return 0;
899
900 ar2 = usb_get_intfdata(interface);
901
902 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
903
904 mutex_lock(&ati_remote2_mutex);
905
906 r = ati_remote2_setup(ar2, ar2->channel_mask);
907 if (r)
908 goto out;
909
910 if (ar2->flags & ATI_REMOTE2_OPENED)
911 r = ati_remote2_submit_urbs(ar2);
912
913 if (!r)
914 ar2->flags &= ~ATI_REMOTE2_SUSPENDED;
915
916 out:
917 mutex_unlock(&ati_remote2_mutex);
918
919 return r;
920}
921
922static int ati_remote2_pre_reset(struct usb_interface *interface)
923{
924 struct ati_remote2 *ar2;
925 struct usb_host_interface *alt = interface->cur_altsetting;
926
927 if (alt->desc.bInterfaceNumber)
928 return 0;
929
930 ar2 = usb_get_intfdata(interface);
931
932 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
933
934 mutex_lock(&ati_remote2_mutex);
935
936 if (ar2->flags == ATI_REMOTE2_OPENED)
937 ati_remote2_kill_urbs(ar2);
938
939 return 0;
940}
941
942static int ati_remote2_post_reset(struct usb_interface *interface)
943{
944 struct ati_remote2 *ar2;
945 struct usb_host_interface *alt = interface->cur_altsetting;
946 int r = 0;
947
948 if (alt->desc.bInterfaceNumber)
949 return 0;
950
951 ar2 = usb_get_intfdata(interface);
952
953 dev_dbg(&ar2->intf[0]->dev, "%s()\n", __func__);
954
955 if (ar2->flags == ATI_REMOTE2_OPENED)
956 r = ati_remote2_submit_urbs(ar2);
957
958 mutex_unlock(&ati_remote2_mutex);
959
960 return r;
961}
962
718static int __init ati_remote2_init(void) 963static int __init ati_remote2_init(void)
719{ 964{
720 int r; 965 int r;
diff --git a/drivers/input/misc/rb532_button.c b/drivers/input/misc/rb532_button.c
new file mode 100644
index 000000000000..e2c7f622a0b5
--- /dev/null
+++ b/drivers/input/misc/rb532_button.c
@@ -0,0 +1,120 @@
1/*
2 * Support for the S1 button on Routerboard 532
3 *
4 * Copyright (C) 2009 Phil Sutter <n0-1@freewrt.org>
5 */
6
7#include <linux/input-polldev.h>
8#include <linux/module.h>
9#include <linux/platform_device.h>
10
11#include <asm/mach-rc32434/gpio.h>
12#include <asm/mach-rc32434/rb.h>
13
14#define DRV_NAME "rb532-button"
15
16#define RB532_BTN_RATE 100 /* msec */
17#define RB532_BTN_KSYM BTN_0
18
19/* The S1 button state is provided by GPIO pin 1. But as this
20 * pin is also used for uart input as alternate function, the
21 * operational modes must be switched first:
22 * 1) disable uart using set_latch_u5()
23 * 2) turn off alternate function implicitly through
24 * gpio_direction_input()
25 * 3) read the GPIO's current value
26 * 4) undo step 2 by enabling alternate function (in this
27 * mode the GPIO direction is fixed, so no change needed)
28 * 5) turn on uart again
29 * The GPIO value occurs to be inverted, so pin high means
30 * button is not pressed.
31 */
32static bool rb532_button_pressed(void)
33{
34 int val;
35
36 set_latch_u5(0, LO_FOFF);
37 gpio_direction_input(GPIO_BTN_S1);
38
39 val = gpio_get_value(GPIO_BTN_S1);
40
41 rb532_gpio_set_func(GPIO_BTN_S1);
42 set_latch_u5(LO_FOFF, 0);
43
44 return !val;
45}
46
47static void rb532_button_poll(struct input_polled_dev *poll_dev)
48{
49 input_report_key(poll_dev->input, RB532_BTN_KSYM,
50 rb532_button_pressed());
51 input_sync(poll_dev->input);
52}
53
54static int __devinit rb532_button_probe(struct platform_device *pdev)
55{
56 struct input_polled_dev *poll_dev;
57 int error;
58
59 poll_dev = input_allocate_polled_device();
60 if (!poll_dev)
61 return -ENOMEM;
62
63 poll_dev->poll = rb532_button_poll;
64 poll_dev->poll_interval = RB532_BTN_RATE;
65
66 poll_dev->input->name = "rb532 button";
67 poll_dev->input->phys = "rb532/button0";
68 poll_dev->input->id.bustype = BUS_HOST;
69 poll_dev->input->dev.parent = &pdev->dev;
70
71 dev_set_drvdata(&pdev->dev, poll_dev);
72
73 input_set_capability(poll_dev->input, EV_KEY, RB532_BTN_KSYM);
74
75 error = input_register_polled_device(poll_dev);
76 if (error) {
77 input_free_polled_device(poll_dev);
78 return error;
79 }
80
81 return 0;
82}
83
84static int __devexit rb532_button_remove(struct platform_device *pdev)
85{
86 struct input_polled_dev *poll_dev = dev_get_drvdata(&pdev->dev);
87
88 input_unregister_polled_device(poll_dev);
89 input_free_polled_device(poll_dev);
90 dev_set_drvdata(&pdev->dev, NULL);
91
92 return 0;
93}
94
95static struct platform_driver rb532_button_driver = {
96 .probe = rb532_button_probe,
97 .remove = __devexit_p(rb532_button_remove),
98 .driver = {
99 .name = DRV_NAME,
100 .owner = THIS_MODULE,
101 },
102};
103
104static int __init rb532_button_init(void)
105{
106 return platform_driver_register(&rb532_button_driver);
107}
108
109static void __exit rb532_button_exit(void)
110{
111 platform_driver_unregister(&rb532_button_driver);
112}
113
114module_init(rb532_button_init);
115module_exit(rb532_button_exit);
116
117MODULE_AUTHOR("Phil Sutter <n0-1@freewrt.org>");
118MODULE_LICENSE("GPL");
119MODULE_DESCRIPTION("Support for S1 button on Routerboard 532");
120MODULE_ALIAS("platform:" DRV_NAME);
diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
new file mode 100644
index 000000000000..5bb3ab51b8c6
--- /dev/null
+++ b/drivers/input/misc/rotary_encoder.c
@@ -0,0 +1,221 @@
1/*
2 * rotary_encoder.c
3 *
4 * (c) 2009 Daniel Mack <daniel@caiaq.de>
5 *
6 * state machine code inspired by code from Tim Ruetz
7 *
8 * A generic driver for rotary encoders connected to GPIO lines.
9 * See file:Documentation/input/rotary_encoder.txt for more information
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/init.h>
19#include <linux/interrupt.h>
20#include <linux/input.h>
21#include <linux/device.h>
22#include <linux/platform_device.h>
23#include <linux/gpio.h>
24#include <linux/rotary_encoder.h>
25
26#define DRV_NAME "rotary-encoder"
27
28struct rotary_encoder {
29 unsigned int irq_a;
30 unsigned int irq_b;
31 unsigned int pos;
32 unsigned int armed;
33 unsigned int dir;
34 struct input_dev *input;
35 struct rotary_encoder_platform_data *pdata;
36};
37
38static irqreturn_t rotary_encoder_irq(int irq, void *dev_id)
39{
40 struct rotary_encoder *encoder = dev_id;
41 struct rotary_encoder_platform_data *pdata = encoder->pdata;
42 int a = !!gpio_get_value(pdata->gpio_a);
43 int b = !!gpio_get_value(pdata->gpio_b);
44 int state;
45
46 a ^= pdata->inverted_a;
47 b ^= pdata->inverted_b;
48 state = (a << 1) | b;
49
50 switch (state) {
51
52 case 0x0:
53 if (!encoder->armed)
54 break;
55
56 if (encoder->dir) {
57 /* turning counter-clockwise */
58 encoder->pos += pdata->steps;
59 encoder->pos--;
60 encoder->pos %= pdata->steps;
61 } else {
62 /* turning clockwise */
63 encoder->pos++;
64 encoder->pos %= pdata->steps;
65 }
66
67 input_report_abs(encoder->input, pdata->axis, encoder->pos);
68 input_sync(encoder->input);
69
70 encoder->armed = 0;
71 break;
72
73 case 0x1:
74 case 0x2:
75 if (encoder->armed)
76 encoder->dir = state - 1;
77 break;
78
79 case 0x3:
80 encoder->armed = 1;
81 break;
82 }
83
84 return IRQ_HANDLED;
85}
86
87static int __devinit rotary_encoder_probe(struct platform_device *pdev)
88{
89 struct rotary_encoder_platform_data *pdata = pdev->dev.platform_data;
90 struct rotary_encoder *encoder;
91 struct input_dev *input;
92 int err;
93
94 if (!pdata || !pdata->steps) {
95 dev_err(&pdev->dev, "invalid platform data\n");
96 return -ENOENT;
97 }
98
99 encoder = kzalloc(sizeof(struct rotary_encoder), GFP_KERNEL);
100 input = input_allocate_device();
101 if (!encoder || !input) {
102 dev_err(&pdev->dev, "failed to allocate memory for device\n");
103 err = -ENOMEM;
104 goto exit_free_mem;
105 }
106
107 encoder->input = input;
108 encoder->pdata = pdata;
109 encoder->irq_a = gpio_to_irq(pdata->gpio_a);
110 encoder->irq_b = gpio_to_irq(pdata->gpio_b);
111
112 /* create and register the input driver */
113 input->name = pdev->name;
114 input->id.bustype = BUS_HOST;
115 input->dev.parent = &pdev->dev;
116 input->evbit[0] = BIT_MASK(EV_ABS);
117 input_set_abs_params(encoder->input,
118 pdata->axis, 0, pdata->steps, 0, 1);
119
120 err = input_register_device(input);
121 if (err) {
122 dev_err(&pdev->dev, "failed to register input device\n");
123 goto exit_free_mem;
124 }
125
126 /* request the GPIOs */
127 err = gpio_request(pdata->gpio_a, DRV_NAME);
128 if (err) {
129 dev_err(&pdev->dev, "unable to request GPIO %d\n",
130 pdata->gpio_a);
131 goto exit_unregister_input;
132 }
133
134 err = gpio_request(pdata->gpio_b, DRV_NAME);
135 if (err) {
136 dev_err(&pdev->dev, "unable to request GPIO %d\n",
137 pdata->gpio_b);
138 goto exit_free_gpio_a;
139 }
140
141 /* request the IRQs */
142 err = request_irq(encoder->irq_a, &rotary_encoder_irq,
143 IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
144 DRV_NAME, encoder);
145 if (err) {
146 dev_err(&pdev->dev, "unable to request IRQ %d\n",
147 encoder->irq_a);
148 goto exit_free_gpio_b;
149 }
150
151 err = request_irq(encoder->irq_b, &rotary_encoder_irq,
152 IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
153 DRV_NAME, encoder);
154 if (err) {
155 dev_err(&pdev->dev, "unable to request IRQ %d\n",
156 encoder->irq_b);
157 goto exit_free_irq_a;
158 }
159
160 platform_set_drvdata(pdev, encoder);
161
162 return 0;
163
164exit_free_irq_a:
165 free_irq(encoder->irq_a, encoder);
166exit_free_gpio_b:
167 gpio_free(pdata->gpio_b);
168exit_free_gpio_a:
169 gpio_free(pdata->gpio_a);
170exit_unregister_input:
171 input_unregister_device(input);
172 input = NULL; /* so we don't try to free it */
173exit_free_mem:
174 input_free_device(input);
175 kfree(encoder);
176 return err;
177}
178
179static int __devexit rotary_encoder_remove(struct platform_device *pdev)
180{
181 struct rotary_encoder *encoder = platform_get_drvdata(pdev);
182 struct rotary_encoder_platform_data *pdata = pdev->dev.platform_data;
183
184 free_irq(encoder->irq_a, encoder);
185 free_irq(encoder->irq_b, encoder);
186 gpio_free(pdata->gpio_a);
187 gpio_free(pdata->gpio_b);
188 input_unregister_device(encoder->input);
189 platform_set_drvdata(pdev, NULL);
190 kfree(encoder);
191
192 return 0;
193}
194
195static struct platform_driver rotary_encoder_driver = {
196 .probe = rotary_encoder_probe,
197 .remove = __devexit_p(rotary_encoder_remove),
198 .driver = {
199 .name = DRV_NAME,
200 .owner = THIS_MODULE,
201 }
202};
203
204static int __init rotary_encoder_init(void)
205{
206 return platform_driver_register(&rotary_encoder_driver);
207}
208
209static void __exit rotary_encoder_exit(void)
210{
211 platform_driver_unregister(&rotary_encoder_driver);
212}
213
214module_init(rotary_encoder_init);
215module_exit(rotary_encoder_exit);
216
217MODULE_ALIAS("platform:" DRV_NAME);
218MODULE_DESCRIPTION("GPIO rotary encoder driver");
219MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>");
220MODULE_LICENSE("GPL v2");
221
diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index 4f38e6f7dfdd..c66cc3d08c2f 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -292,4 +292,15 @@ config MOUSE_PXA930_TRKBALL
292 help 292 help
293 Say Y here to support PXA930 Trackball mouse. 293 Say Y here to support PXA930 Trackball mouse.
294 294
295config MOUSE_MAPLE
296 tristate "Maple mouse (for the Dreamcast)"
297 depends on MAPLE
298 help
299 This driver supports the Maple mouse on the SEGA Dreamcast.
300
301 Most Dreamcast users, who have a mouse, will say Y here.
302
303 To compile this driver as a module choose M here: the module will be
304 called maplemouse.
305
295endif 306endif
diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
index 8c8a1f236e28..472189468d67 100644
--- a/drivers/input/mouse/Makefile
+++ b/drivers/input/mouse/Makefile
@@ -6,18 +6,19 @@
6 6
7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o 7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o
8obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o 8obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o
9obj-$(CONFIG_MOUSE_BCM5974) += bcm5974.o
10obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o 9obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o
11obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o 10obj-$(CONFIG_MOUSE_BCM5974) += bcm5974.o
11obj-$(CONFIG_MOUSE_GPIO) += gpio_mouse.o
12obj-$(CONFIG_MOUSE_HIL) += hil_ptr.o
12obj-$(CONFIG_MOUSE_INPORT) += inport.o 13obj-$(CONFIG_MOUSE_INPORT) += inport.o
13obj-$(CONFIG_MOUSE_LOGIBM) += logibm.o 14obj-$(CONFIG_MOUSE_LOGIBM) += logibm.o
15obj-$(CONFIG_MOUSE_MAPLE) += maplemouse.o
14obj-$(CONFIG_MOUSE_PC110PAD) += pc110pad.o 16obj-$(CONFIG_MOUSE_PC110PAD) += pc110pad.o
15obj-$(CONFIG_MOUSE_PS2) += psmouse.o 17obj-$(CONFIG_MOUSE_PS2) += psmouse.o
16obj-$(CONFIG_MOUSE_PXA930_TRKBALL) += pxa930_trkball.o 18obj-$(CONFIG_MOUSE_PXA930_TRKBALL) += pxa930_trkball.o
19obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o
17obj-$(CONFIG_MOUSE_SERIAL) += sermouse.o 20obj-$(CONFIG_MOUSE_SERIAL) += sermouse.o
18obj-$(CONFIG_MOUSE_HIL) += hil_ptr.o
19obj-$(CONFIG_MOUSE_VSXXXAA) += vsxxxaa.o 21obj-$(CONFIG_MOUSE_VSXXXAA) += vsxxxaa.o
20obj-$(CONFIG_MOUSE_GPIO) += gpio_mouse.o
21 22
22psmouse-objs := psmouse-base.o synaptics.o 23psmouse-objs := psmouse-base.o synaptics.o
23 24
diff --git a/drivers/input/mouse/hgpk.c b/drivers/input/mouse/hgpk.c
index 55cd0fa68339..a1ad2f1a7bb3 100644
--- a/drivers/input/mouse/hgpk.c
+++ b/drivers/input/mouse/hgpk.c
@@ -472,7 +472,7 @@ static enum hgpk_model_t hgpk_get_model(struct psmouse *psmouse)
472 return -EIO; 472 return -EIO;
473 } 473 }
474 474
475 hgpk_dbg(psmouse, "ID: %02x %02x %02x", param[0], param[1], param[2]); 475 hgpk_dbg(psmouse, "ID: %02x %02x %02x\n", param[0], param[1], param[2]);
476 476
477 /* HGPK signature: 0x67, 0x00, 0x<model> */ 477 /* HGPK signature: 0x67, 0x00, 0x<model> */
478 if (param[0] != 0x67 || param[1] != 0x00) 478 if (param[0] != 0x67 || param[1] != 0x00)
diff --git a/drivers/input/mouse/maplemouse.c b/drivers/input/mouse/maplemouse.c
new file mode 100644
index 000000000000..d196abfb68bc
--- /dev/null
+++ b/drivers/input/mouse/maplemouse.c
@@ -0,0 +1,147 @@
1/*
2 * SEGA Dreamcast mouse driver
3 * Based on drivers/usb/usbmouse.c
4 *
5 * Copyright Yaegashi Takeshi, 2001
6 * Adrian McMenamin, 2008
7 */
8
9#include <linux/kernel.h>
10#include <linux/slab.h>
11#include <linux/input.h>
12#include <linux/module.h>
13#include <linux/init.h>
14#include <linux/timer.h>
15#include <linux/maple.h>
16
17MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");
18MODULE_DESCRIPTION("SEGA Dreamcast mouse driver");
19MODULE_LICENSE("GPL");
20
21struct dc_mouse {
22 struct input_dev *dev;
23 struct maple_device *mdev;
24};
25
26static void dc_mouse_callback(struct mapleq *mq)
27{
28 int buttons, relx, rely, relz;
29 struct maple_device *mapledev = mq->dev;
30 struct dc_mouse *mse = maple_get_drvdata(mapledev);
31 struct input_dev *dev = mse->dev;
32 unsigned char *res = mq->recvbuf;
33
34 buttons = ~res[8];
35 relx = *(unsigned short *)(res + 12) - 512;
36 rely = *(unsigned short *)(res + 14) - 512;
37 relz = *(unsigned short *)(res + 16) - 512;
38
39 input_report_key(dev, BTN_LEFT, buttons & 4);
40 input_report_key(dev, BTN_MIDDLE, buttons & 9);
41 input_report_key(dev, BTN_RIGHT, buttons & 2);
42 input_report_rel(dev, REL_X, relx);
43 input_report_rel(dev, REL_Y, rely);
44 input_report_rel(dev, REL_WHEEL, relz);
45 input_sync(dev);
46}
47
48static int dc_mouse_open(struct input_dev *dev)
49{
50 struct dc_mouse *mse = dev->dev.platform_data;
51
52 maple_getcond_callback(mse->mdev, dc_mouse_callback, HZ/50,
53 MAPLE_FUNC_MOUSE);
54
55 return 0;
56}
57
58static void dc_mouse_close(struct input_dev *dev)
59{
60 struct dc_mouse *mse = dev->dev.platform_data;
61
62 maple_getcond_callback(mse->mdev, dc_mouse_callback, 0,
63 MAPLE_FUNC_MOUSE);
64}
65
66
67static int __devinit probe_maple_mouse(struct device *dev)
68{
69 struct maple_device *mdev = to_maple_dev(dev);
70 struct maple_driver *mdrv = to_maple_driver(dev->driver);
71 struct input_dev *input_dev;
72 struct dc_mouse *mse;
73 int error;
74
75 mse = kzalloc(sizeof(struct dc_mouse), GFP_KERNEL);
76 input_dev = input_allocate_device();
77
78 if (!mse || !input_dev) {
79 error = -ENOMEM;
80 goto fail;
81 }
82
83 mse->dev = input_dev;
84 mse->mdev = mdev;
85
86 input_set_drvdata(input_dev, mse);
87 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
88 input_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_LEFT) |
89 BIT_MASK(BTN_RIGHT) | BIT_MASK(BTN_MIDDLE);
90 input_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y) |
91 BIT_MASK(REL_WHEEL);
92 input_dev->name = mdev->product_name;
93 input_dev->id.bustype = BUS_HOST;
94 input_dev->open = dc_mouse_open;
95 input_dev->close = dc_mouse_close;
96
97 mdev->driver = mdrv;
98 maple_set_drvdata(mdev, mse);
99
100 error = input_register_device(input_dev);
101 if (error)
102 goto fail;
103
104 return 0;
105
106fail:
107 input_free_device(input_dev);
108 maple_set_drvdata(mdev, NULL);
109 kfree(mse);
110 mdev->driver = NULL;
111 return error;
112}
113
114static int __devexit remove_maple_mouse(struct device *dev)
115{
116 struct maple_device *mdev = to_maple_dev(dev);
117 struct dc_mouse *mse = maple_get_drvdata(mdev);
118
119 mdev->callback = NULL;
120 input_unregister_device(mse->dev);
121 maple_set_drvdata(mdev, NULL);
122 kfree(mse);
123
124 return 0;
125}
126
127static struct maple_driver dc_mouse_driver = {
128 .function = MAPLE_FUNC_MOUSE,
129 .drv = {
130 .name = "Dreamcast_mouse",
131 .probe = probe_maple_mouse,
132 .remove = __devexit_p(remove_maple_mouse),
133 },
134};
135
136static int __init dc_mouse_init(void)
137{
138 return maple_driver_register(&dc_mouse_driver);
139}
140
141static void __exit dc_mouse_exit(void)
142{
143 maple_driver_unregister(&dc_mouse_driver);
144}
145
146module_init(dc_mouse_init);
147module_exit(dc_mouse_exit);
diff --git a/drivers/input/mouse/pc110pad.c b/drivers/input/mouse/pc110pad.c
index fd09c8df81f2..f63995f854ff 100644
--- a/drivers/input/mouse/pc110pad.c
+++ b/drivers/input/mouse/pc110pad.c
@@ -111,11 +111,8 @@ static int __init pc110pad_init(void)
111 struct pci_dev *dev; 111 struct pci_dev *dev;
112 int err; 112 int err;
113 113
114 dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL); 114 if (!no_pci_devices())
115 if (dev) {
116 pci_dev_put(dev);
117 return -ENODEV; 115 return -ENODEV;
118 }
119 116
120 if (!request_region(pc110pad_io, 4, "pc110pad")) { 117 if (!request_region(pc110pad_io, 4, "pc110pad")) {
121 printk(KERN_ERR "pc110pad: I/O area %#x-%#x in use.\n", 118 printk(KERN_ERR "pc110pad: I/O area %#x-%#x in use.\n",
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index 6fa2deff7446..83ed2d56b924 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -151,6 +151,14 @@ static struct dmi_system_id __initdata i8042_dmi_noloop_table[] = {
151 DMI_MATCH(DMI_PRODUCT_VERSION, "01"), 151 DMI_MATCH(DMI_PRODUCT_VERSION, "01"),
152 }, 152 },
153 }, 153 },
154 {
155 .ident = "HP DV9700",
156 .matches = {
157 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
158 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"),
159 DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
160 },
161 },
154 { } 162 { }
155}; 163};
156 164
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index bb6486a8c070..b01fd61dadcc 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -29,6 +29,51 @@ config TOUCHSCREEN_ADS7846
29 To compile this driver as a module, choose M here: the 29 To compile this driver as a module, choose M here: the
30 module will be called ads7846. 30 module will be called ads7846.
31 31
32config TOUCHSCREEN_AD7877
33 tristate "AD7877 based touchscreens"
34 depends on SPI_MASTER
35 help
36 Say Y here if you have a touchscreen interface using the
37 AD7877 controller, and your board-specific initialization
38 code includes that in its table of SPI devices.
39
40 If unsure, say N (but it's safe to say "Y").
41
42 To compile this driver as a module, choose M here: the
43 module will be called ad7877.
44
45config TOUCHSCREEN_AD7879_I2C
46 tristate "AD7879 based touchscreens: AD7879-1 I2C Interface"
47 depends on I2C
48 select TOUCHSCREEN_AD7879
49 help
50 Say Y here if you have a touchscreen interface using the
51 AD7879-1 controller, and your board-specific initialization
52 code includes that in its table of I2C devices.
53
54 If unsure, say N (but it's safe to say "Y").
55
56 To compile this driver as a module, choose M here: the
57 module will be called ad7879.
58
59config TOUCHSCREEN_AD7879_SPI
60 tristate "AD7879 based touchscreens: AD7879 SPI Interface"
61 depends on SPI_MASTER && TOUCHSCREEN_AD7879_I2C = n
62 select TOUCHSCREEN_AD7879
63 help
64 Say Y here if you have a touchscreen interface using the
65 AD7879 controller, and your board-specific initialization
66 code includes that in its table of SPI devices.
67
68 If unsure, say N (but it's safe to say "Y").
69
70 To compile this driver as a module, choose M here: the
71 module will be called ad7879.
72
73config TOUCHSCREEN_AD7879
74 tristate
75 default n
76
32config TOUCHSCREEN_BITSY 77config TOUCHSCREEN_BITSY
33 tristate "Compaq iPAQ H3600 (Bitsy) touchscreen" 78 tristate "Compaq iPAQ H3600 (Bitsy) touchscreen"
34 depends on SA1100_BITSY 79 depends on SA1100_BITSY
@@ -308,6 +353,19 @@ config TOUCHSCREEN_WM97XX_MAINSTONE
308 To compile this driver as a module, choose M here: the 353 To compile this driver as a module, choose M here: the
309 module will be called mainstone-wm97xx. 354 module will be called mainstone-wm97xx.
310 355
356config TOUCHSCREEN_WM97XX_ZYLONITE
357 tristate "Zylonite accelerated touch"
358 depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE
359 select TOUCHSCREEN_WM9713
360 help
361 Say Y here for support for streaming mode with the touchscreen
362 on Zylonite systems.
363
364 If unsure, say N.
365
366 To compile this driver as a module, choose M here: the
367 module will be called zylonite-wm97xx.
368
311config TOUCHSCREEN_USB_COMPOSITE 369config TOUCHSCREEN_USB_COMPOSITE
312 tristate "USB Touchscreen Driver" 370 tristate "USB Touchscreen Driver"
313 depends on USB_ARCH_HAS_HCD 371 depends on USB_ARCH_HAS_HCD
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index d3375aff46fe..6700f7b9d165 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -6,6 +6,8 @@
6 6
7wm97xx-ts-y := wm97xx-core.o 7wm97xx-ts-y := wm97xx-core.o
8 8
9obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o
10obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
9obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o 11obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o
10obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o 12obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o
11obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o 13obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o
@@ -34,3 +36,4 @@ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o
34wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o 36wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
35wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o 37wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
36obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o 38obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o
39obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE) += zylonite-wm97xx.o
diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c
new file mode 100644
index 000000000000..e4728a28f492
--- /dev/null
+++ b/drivers/input/touchscreen/ad7877.c
@@ -0,0 +1,844 @@
1/*
2 * Copyright (C) 2006-2008 Michael Hennerich, Analog Devices Inc.
3 *
4 * Description: AD7877 based touchscreen, sensor (ADCs), DAC and GPIO driver
5 * Based on: ads7846.c
6 *
7 * Bugs: Enter bugs at http://blackfin.uclinux.org/
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, see the file COPYING, or write
21 * to the Free Software Foundation, Inc.,
22 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 *
24 * History:
25 * Copyright (c) 2005 David Brownell
26 * Copyright (c) 2006 Nokia Corporation
27 * Various changes: Imre Deak <imre.deak@nokia.com>
28 *
29 * Using code from:
30 * - corgi_ts.c
31 * Copyright (C) 2004-2005 Richard Purdie
32 * - omap_ts.[hc], ads7846.h, ts_osk.c
33 * Copyright (C) 2002 MontaVista Software
34 * Copyright (C) 2004 Texas Instruments
35 * Copyright (C) 2005 Dirk Behme
36 */
37
38
39#include <linux/device.h>
40#include <linux/init.h>
41#include <linux/delay.h>
42#include <linux/input.h>
43#include <linux/interrupt.h>
44#include <linux/slab.h>
45#include <linux/spi/spi.h>
46#include <linux/spi/ad7877.h>
47#include <asm/irq.h>
48
49#define TS_PEN_UP_TIMEOUT msecs_to_jiffies(50)
50
51#define MAX_SPI_FREQ_HZ 20000000
52#define MAX_12BIT ((1<<12)-1)
53
54#define AD7877_REG_ZEROS 0
55#define AD7877_REG_CTRL1 1
56#define AD7877_REG_CTRL2 2
57#define AD7877_REG_ALERT 3
58#define AD7877_REG_AUX1HIGH 4
59#define AD7877_REG_AUX1LOW 5
60#define AD7877_REG_BAT1HIGH 6
61#define AD7877_REG_BAT1LOW 7
62#define AD7877_REG_BAT2HIGH 8
63#define AD7877_REG_BAT2LOW 9
64#define AD7877_REG_TEMP1HIGH 10
65#define AD7877_REG_TEMP1LOW 11
66#define AD7877_REG_SEQ0 12
67#define AD7877_REG_SEQ1 13
68#define AD7877_REG_DAC 14
69#define AD7877_REG_NONE1 15
70#define AD7877_REG_EXTWRITE 15
71#define AD7877_REG_XPLUS 16
72#define AD7877_REG_YPLUS 17
73#define AD7877_REG_Z2 18
74#define AD7877_REG_aux1 19
75#define AD7877_REG_aux2 20
76#define AD7877_REG_aux3 21
77#define AD7877_REG_bat1 22
78#define AD7877_REG_bat2 23
79#define AD7877_REG_temp1 24
80#define AD7877_REG_temp2 25
81#define AD7877_REG_Z1 26
82#define AD7877_REG_GPIOCTRL1 27
83#define AD7877_REG_GPIOCTRL2 28
84#define AD7877_REG_GPIODATA 29
85#define AD7877_REG_NONE2 30
86#define AD7877_REG_NONE3 31
87
88#define AD7877_SEQ_YPLUS_BIT (1<<11)
89#define AD7877_SEQ_XPLUS_BIT (1<<10)
90#define AD7877_SEQ_Z2_BIT (1<<9)
91#define AD7877_SEQ_AUX1_BIT (1<<8)
92#define AD7877_SEQ_AUX2_BIT (1<<7)
93#define AD7877_SEQ_AUX3_BIT (1<<6)
94#define AD7877_SEQ_BAT1_BIT (1<<5)
95#define AD7877_SEQ_BAT2_BIT (1<<4)
96#define AD7877_SEQ_TEMP1_BIT (1<<3)
97#define AD7877_SEQ_TEMP2_BIT (1<<2)
98#define AD7877_SEQ_Z1_BIT (1<<1)
99
100enum {
101 AD7877_SEQ_YPOS = 0,
102 AD7877_SEQ_XPOS = 1,
103 AD7877_SEQ_Z2 = 2,
104 AD7877_SEQ_AUX1 = 3,
105 AD7877_SEQ_AUX2 = 4,
106 AD7877_SEQ_AUX3 = 5,
107 AD7877_SEQ_BAT1 = 6,
108 AD7877_SEQ_BAT2 = 7,
109 AD7877_SEQ_TEMP1 = 8,
110 AD7877_SEQ_TEMP2 = 9,
111 AD7877_SEQ_Z1 = 10,
112 AD7877_NR_SENSE = 11,
113};
114
115/* DAC Register Default RANGE 0 to Vcc, Volatge Mode, DAC On */
116#define AD7877_DAC_CONF 0x1
117
118/* If gpio3 is set AUX3/GPIO3 acts as GPIO Output */
119#define AD7877_EXTW_GPIO_3_CONF 0x1C4
120#define AD7877_EXTW_GPIO_DATA 0x200
121
122/* Control REG 2 */
123#define AD7877_TMR(x) ((x & 0x3) << 0)
124#define AD7877_REF(x) ((x & 0x1) << 2)
125#define AD7877_POL(x) ((x & 0x1) << 3)
126#define AD7877_FCD(x) ((x & 0x3) << 4)
127#define AD7877_PM(x) ((x & 0x3) << 6)
128#define AD7877_ACQ(x) ((x & 0x3) << 8)
129#define AD7877_AVG(x) ((x & 0x3) << 10)
130
131/* Control REG 1 */
132#define AD7877_SER (1 << 11) /* non-differential */
133#define AD7877_DFR (0 << 11) /* differential */
134
135#define AD7877_MODE_NOC (0) /* Do not convert */
136#define AD7877_MODE_SCC (1) /* Single channel conversion */
137#define AD7877_MODE_SEQ0 (2) /* Sequence 0 in Slave Mode */
138#define AD7877_MODE_SEQ1 (3) /* Sequence 1 in Master Mode */
139
140#define AD7877_CHANADD(x) ((x&0xF)<<7)
141#define AD7877_READADD(x) ((x)<<2)
142#define AD7877_WRITEADD(x) ((x)<<12)
143
144#define AD7877_READ_CHAN(x) (AD7877_WRITEADD(AD7877_REG_CTRL1) | AD7877_SER | \
145 AD7877_MODE_SCC | AD7877_CHANADD(AD7877_REG_ ## x) | \
146 AD7877_READADD(AD7877_REG_ ## x))
147
148#define AD7877_MM_SEQUENCE (AD7877_SEQ_YPLUS_BIT | AD7877_SEQ_XPLUS_BIT | \
149 AD7877_SEQ_Z2_BIT | AD7877_SEQ_Z1_BIT)
150
151/*
152 * Non-touchscreen sensors only use single-ended conversions.
153 */
154
155struct ser_req {
156 u16 reset;
157 u16 ref_on;
158 u16 command;
159 u16 sample;
160 struct spi_message msg;
161 struct spi_transfer xfer[6];
162};
163
164struct ad7877 {
165 struct input_dev *input;
166 char phys[32];
167
168 struct spi_device *spi;
169 u16 model;
170 u16 vref_delay_usecs;
171 u16 x_plate_ohms;
172 u16 pressure_max;
173
174 u16 cmd_crtl1;
175 u16 cmd_crtl2;
176 u16 cmd_dummy;
177 u16 dac;
178
179 u8 stopacq_polarity;
180 u8 first_conversion_delay;
181 u8 acquisition_time;
182 u8 averaging;
183 u8 pen_down_acc_interval;
184
185 u16 conversion_data[AD7877_NR_SENSE];
186
187 struct spi_transfer xfer[AD7877_NR_SENSE + 2];
188 struct spi_message msg;
189
190 struct mutex mutex;
191 unsigned disabled:1; /* P: mutex */
192 unsigned gpio3:1; /* P: mutex */
193 unsigned gpio4:1; /* P: mutex */
194
195 spinlock_t lock;
196 struct timer_list timer; /* P: lock */
197 unsigned pending:1; /* P: lock */
198};
199
200static int gpio3;
201module_param(gpio3, int, 0);
202MODULE_PARM_DESC(gpio3, "If gpio3 is set to 1 AUX3 acts as GPIO3");
203
204/*
205 * ad7877_read/write are only used for initial setup and for sysfs controls.
206 * The main traffic is done using spi_async() in the interrupt handler.
207 */
208
209static int ad7877_read(struct spi_device *spi, u16 reg)
210{
211 struct ser_req *req;
212 int status, ret;
213
214 req = kzalloc(sizeof *req, GFP_KERNEL);
215 if (!req)
216 return -ENOMEM;
217
218 spi_message_init(&req->msg);
219
220 req->command = (u16) (AD7877_WRITEADD(AD7877_REG_CTRL1) |
221 AD7877_READADD(reg));
222 req->xfer[0].tx_buf = &req->command;
223 req->xfer[0].len = 2;
224
225 req->xfer[1].rx_buf = &req->sample;
226 req->xfer[1].len = 2;
227
228 spi_message_add_tail(&req->xfer[0], &req->msg);
229 spi_message_add_tail(&req->xfer[1], &req->msg);
230
231 status = spi_sync(spi, &req->msg);
232 ret = status ? : req->sample;
233
234 kfree(req);
235
236 return ret;
237}
238
239static int ad7877_write(struct spi_device *spi, u16 reg, u16 val)
240{
241 struct ser_req *req;
242 int status;
243
244 req = kzalloc(sizeof *req, GFP_KERNEL);
245 if (!req)
246 return -ENOMEM;
247
248 spi_message_init(&req->msg);
249
250 req->command = (u16) (AD7877_WRITEADD(reg) | (val & MAX_12BIT));
251 req->xfer[0].tx_buf = &req->command;
252 req->xfer[0].len = 2;
253
254 spi_message_add_tail(&req->xfer[0], &req->msg);
255
256 status = spi_sync(spi, &req->msg);
257
258 kfree(req);
259
260 return status;
261}
262
263static int ad7877_read_adc(struct spi_device *spi, unsigned command)
264{
265 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
266 struct ser_req *req;
267 int status;
268 int sample;
269 int i;
270
271 req = kzalloc(sizeof *req, GFP_KERNEL);
272 if (!req)
273 return -ENOMEM;
274
275 spi_message_init(&req->msg);
276
277 /* activate reference, so it has time to settle; */
278 req->ref_on = AD7877_WRITEADD(AD7877_REG_CTRL2) |
279 AD7877_POL(ts->stopacq_polarity) |
280 AD7877_AVG(0) | AD7877_PM(2) | AD7877_TMR(0) |
281 AD7877_ACQ(ts->acquisition_time) | AD7877_FCD(0);
282
283 req->reset = AD7877_WRITEADD(AD7877_REG_CTRL1) | AD7877_MODE_NOC;
284
285 req->command = (u16) command;
286
287 req->xfer[0].tx_buf = &req->reset;
288 req->xfer[0].len = 2;
289
290 req->xfer[1].tx_buf = &req->ref_on;
291 req->xfer[1].len = 2;
292 req->xfer[1].delay_usecs = ts->vref_delay_usecs;
293
294 req->xfer[2].tx_buf = &req->command;
295 req->xfer[2].len = 2;
296 req->xfer[2].delay_usecs = ts->vref_delay_usecs;
297
298 req->xfer[3].rx_buf = &req->sample;
299 req->xfer[3].len = 2;
300
301 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/
302 req->xfer[4].len = 2;
303
304 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/
305 req->xfer[5].len = 2;
306
307 /* group all the transfers together, so we can't interfere with
308 * reading touchscreen state; disable penirq while sampling
309 */
310 for (i = 0; i < 6; i++)
311 spi_message_add_tail(&req->xfer[i], &req->msg);
312
313 status = spi_sync(spi, &req->msg);
314 sample = req->sample;
315
316 kfree(req);
317
318 return status ? : sample;
319}
320
321static void ad7877_rx(struct ad7877 *ts)
322{
323 struct input_dev *input_dev = ts->input;
324 unsigned Rt;
325 u16 x, y, z1, z2;
326
327 x = ts->conversion_data[AD7877_SEQ_XPOS] & MAX_12BIT;
328 y = ts->conversion_data[AD7877_SEQ_YPOS] & MAX_12BIT;
329 z1 = ts->conversion_data[AD7877_SEQ_Z1] & MAX_12BIT;
330 z2 = ts->conversion_data[AD7877_SEQ_Z2] & MAX_12BIT;
331
332 /*
333 * The samples processed here are already preprocessed by the AD7877.
334 * The preprocessing function consists of an averaging filter.
335 * The combination of 'first conversion delay' and averaging provides a robust solution,
336 * discarding the spurious noise in the signal and keeping only the data of interest.
337 * The size of the averaging filter is programmable. (dev.platform_data, see linux/spi/ad7877.h)
338 * Other user-programmable conversion controls include variable acquisition time,
339 * and first conversion delay. Up to 16 averages can be taken per conversion.
340 */
341
342 if (likely(x && z1)) {
343 /* compute touch pressure resistance using equation #1 */
344 Rt = (z2 - z1) * x * ts->x_plate_ohms;
345 Rt /= z1;
346 Rt = (Rt + 2047) >> 12;
347
348 input_report_abs(input_dev, ABS_X, x);
349 input_report_abs(input_dev, ABS_Y, y);
350 input_report_abs(input_dev, ABS_PRESSURE, Rt);
351 input_sync(input_dev);
352 }
353}
354
355static inline void ad7877_ts_event_release(struct ad7877 *ts)
356{
357 struct input_dev *input_dev = ts->input;
358
359 input_report_abs(input_dev, ABS_PRESSURE, 0);
360 input_sync(input_dev);
361}
362
363static void ad7877_timer(unsigned long handle)
364{
365 struct ad7877 *ts = (void *)handle;
366
367 ad7877_ts_event_release(ts);
368}
369
370static irqreturn_t ad7877_irq(int irq, void *handle)
371{
372 struct ad7877 *ts = handle;
373 unsigned long flags;
374 int status;
375
376 /*
377 * The repeated conversion sequencer controlled by TMR kicked off
378 * too fast. We ignore the last and process the sample sequence
379 * currently in the queue. It can't be older than 9.4ms, and we
380 * need to avoid that ts->msg doesn't get issued twice while in work.
381 */
382
383 spin_lock_irqsave(&ts->lock, flags);
384 if (!ts->pending) {
385 ts->pending = 1;
386
387 status = spi_async(ts->spi, &ts->msg);
388 if (status)
389 dev_err(&ts->spi->dev, "spi_sync --> %d\n", status);
390 }
391 spin_unlock_irqrestore(&ts->lock, flags);
392
393 return IRQ_HANDLED;
394}
395
396static void ad7877_callback(void *_ts)
397{
398 struct ad7877 *ts = _ts;
399
400 spin_lock_irq(&ts->lock);
401
402 ad7877_rx(ts);
403 ts->pending = 0;
404 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);
405
406 spin_unlock_irq(&ts->lock);
407}
408
409static void ad7877_disable(struct ad7877 *ts)
410{
411 mutex_lock(&ts->mutex);
412
413 if (!ts->disabled) {
414 ts->disabled = 1;
415 disable_irq(ts->spi->irq);
416
417 /* Wait for spi_async callback */
418 while (ts->pending)
419 msleep(1);
420
421 if (del_timer_sync(&ts->timer))
422 ad7877_ts_event_release(ts);
423 }
424
425 /* we know the chip's in lowpower mode since we always
426 * leave it that way after every request
427 */
428
429 mutex_unlock(&ts->mutex);
430}
431
432static void ad7877_enable(struct ad7877 *ts)
433{
434 mutex_lock(&ts->mutex);
435
436 if (ts->disabled) {
437 ts->disabled = 0;
438 enable_irq(ts->spi->irq);
439 }
440
441 mutex_unlock(&ts->mutex);
442}
443
444#define SHOW(name) static ssize_t \
445name ## _show(struct device *dev, struct device_attribute *attr, char *buf) \
446{ \
447 struct ad7877 *ts = dev_get_drvdata(dev); \
448 ssize_t v = ad7877_read_adc(ts->spi, \
449 AD7877_READ_CHAN(name)); \
450 if (v < 0) \
451 return v; \
452 return sprintf(buf, "%u\n", (unsigned) v); \
453} \
454static DEVICE_ATTR(name, S_IRUGO, name ## _show, NULL);
455
456SHOW(aux1)
457SHOW(aux2)
458SHOW(aux3)
459SHOW(bat1)
460SHOW(bat2)
461SHOW(temp1)
462SHOW(temp2)
463
464static ssize_t ad7877_disable_show(struct device *dev,
465 struct device_attribute *attr, char *buf)
466{
467 struct ad7877 *ts = dev_get_drvdata(dev);
468
469 return sprintf(buf, "%u\n", ts->disabled);
470}
471
472static ssize_t ad7877_disable_store(struct device *dev,
473 struct device_attribute *attr,
474 const char *buf, size_t count)
475{
476 struct ad7877 *ts = dev_get_drvdata(dev);
477 unsigned long val;
478 int error;
479
480 error = strict_strtoul(buf, 10, &val);
481 if (error)
482 return error;
483
484 if (val)
485 ad7877_disable(ts);
486 else
487 ad7877_enable(ts);
488
489 return count;
490}
491
492static DEVICE_ATTR(disable, 0664, ad7877_disable_show, ad7877_disable_store);
493
494static ssize_t ad7877_dac_show(struct device *dev,
495 struct device_attribute *attr, char *buf)
496{
497 struct ad7877 *ts = dev_get_drvdata(dev);
498
499 return sprintf(buf, "%u\n", ts->dac);
500}
501
502static ssize_t ad7877_dac_store(struct device *dev,
503 struct device_attribute *attr,
504 const char *buf, size_t count)
505{
506 struct ad7877 *ts = dev_get_drvdata(dev);
507 unsigned long val;
508 int error;
509
510 error = strict_strtoul(buf, 10, &val);
511 if (error)
512 return error;
513
514 mutex_lock(&ts->mutex);
515 ts->dac = val & 0xFF;
516 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF);
517 mutex_unlock(&ts->mutex);
518
519 return count;
520}
521
522static DEVICE_ATTR(dac, 0664, ad7877_dac_show, ad7877_dac_store);
523
524static ssize_t ad7877_gpio3_show(struct device *dev,
525 struct device_attribute *attr, char *buf)
526{
527 struct ad7877 *ts = dev_get_drvdata(dev);
528
529 return sprintf(buf, "%u\n", ts->gpio3);
530}
531
532static ssize_t ad7877_gpio3_store(struct device *dev,
533 struct device_attribute *attr,
534 const char *buf, size_t count)
535{
536 struct ad7877 *ts = dev_get_drvdata(dev);
537 unsigned long val;
538 int error;
539
540 error = strict_strtoul(buf, 10, &val);
541 if (error)
542 return error;
543
544 mutex_lock(&ts->mutex);
545 ts->gpio3 = !!val;
546 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
547 (ts->gpio4 << 4) | (ts->gpio3 << 5));
548 mutex_unlock(&ts->mutex);
549
550 return count;
551}
552
553static DEVICE_ATTR(gpio3, 0664, ad7877_gpio3_show, ad7877_gpio3_store);
554
555static ssize_t ad7877_gpio4_show(struct device *dev,
556 struct device_attribute *attr, char *buf)
557{
558 struct ad7877 *ts = dev_get_drvdata(dev);
559
560 return sprintf(buf, "%u\n", ts->gpio4);
561}
562
563static ssize_t ad7877_gpio4_store(struct device *dev,
564 struct device_attribute *attr,
565 const char *buf, size_t count)
566{
567 struct ad7877 *ts = dev_get_drvdata(dev);
568 unsigned long val;
569 int error;
570
571 error = strict_strtoul(buf, 10, &val);
572 if (error)
573 return error;
574
575 mutex_lock(&ts->mutex);
576 ts->gpio4 = !!val;
577 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
578 (ts->gpio4 << 4) | (ts->gpio3 << 5));
579 mutex_unlock(&ts->mutex);
580
581 return count;
582}
583
584static DEVICE_ATTR(gpio4, 0664, ad7877_gpio4_show, ad7877_gpio4_store);
585
586static struct attribute *ad7877_attributes[] = {
587 &dev_attr_temp1.attr,
588 &dev_attr_temp2.attr,
589 &dev_attr_aux1.attr,
590 &dev_attr_aux2.attr,
591 &dev_attr_bat1.attr,
592 &dev_attr_bat2.attr,
593 &dev_attr_disable.attr,
594 &dev_attr_dac.attr,
595 &dev_attr_gpio4.attr,
596 NULL
597};
598
599static const struct attribute_group ad7877_attr_group = {
600 .attrs = ad7877_attributes,
601};
602
603static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts)
604{
605 struct spi_message *m;
606 int i;
607
608 ts->cmd_crtl2 = AD7877_WRITEADD(AD7877_REG_CTRL2) |
609 AD7877_POL(ts->stopacq_polarity) |
610 AD7877_AVG(ts->averaging) | AD7877_PM(1) |
611 AD7877_TMR(ts->pen_down_acc_interval) |
612 AD7877_ACQ(ts->acquisition_time) |
613 AD7877_FCD(ts->first_conversion_delay);
614
615 ad7877_write(spi, AD7877_REG_CTRL2, ts->cmd_crtl2);
616
617 ts->cmd_crtl1 = AD7877_WRITEADD(AD7877_REG_CTRL1) |
618 AD7877_READADD(AD7877_REG_XPLUS-1) |
619 AD7877_MODE_SEQ1 | AD7877_DFR;
620
621 ad7877_write(spi, AD7877_REG_CTRL1, ts->cmd_crtl1);
622
623 ts->cmd_dummy = 0;
624
625 m = &ts->msg;
626
627 spi_message_init(m);
628
629 m->complete = ad7877_callback;
630 m->context = ts;
631
632 ts->xfer[0].tx_buf = &ts->cmd_crtl1;
633 ts->xfer[0].len = 2;
634
635 spi_message_add_tail(&ts->xfer[0], m);
636
637 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */
638 ts->xfer[1].len = 2;
639
640 spi_message_add_tail(&ts->xfer[1], m);
641
642 for (i = 0; i < 11; i++) {
643 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i];
644 ts->xfer[i + 2].len = 2;
645 spi_message_add_tail(&ts->xfer[i + 2], m);
646 }
647}
648
649static int __devinit ad7877_probe(struct spi_device *spi)
650{
651 struct ad7877 *ts;
652 struct input_dev *input_dev;
653 struct ad7877_platform_data *pdata = spi->dev.platform_data;
654 int err;
655 u16 verify;
656
657 if (!spi->irq) {
658 dev_dbg(&spi->dev, "no IRQ?\n");
659 return -ENODEV;
660 }
661
662 if (!pdata) {
663 dev_dbg(&spi->dev, "no platform data?\n");
664 return -ENODEV;
665 }
666
667 /* don't exceed max specified SPI CLK frequency */
668 if (spi->max_speed_hz > MAX_SPI_FREQ_HZ) {
669 dev_dbg(&spi->dev, "SPI CLK %d Hz?\n",spi->max_speed_hz);
670 return -EINVAL;
671 }
672
673 ts = kzalloc(sizeof(struct ad7877), GFP_KERNEL);
674 input_dev = input_allocate_device();
675 if (!ts || !input_dev) {
676 err = -ENOMEM;
677 goto err_free_mem;
678 }
679
680 dev_set_drvdata(&spi->dev, ts);
681 ts->spi = spi;
682 ts->input = input_dev;
683
684 setup_timer(&ts->timer, ad7877_timer, (unsigned long) ts);
685 mutex_init(&ts->mutex);
686 spin_lock_init(&ts->lock);
687
688 ts->model = pdata->model ? : 7877;
689 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
690 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
691 ts->pressure_max = pdata->pressure_max ? : ~0;
692
693 ts->stopacq_polarity = pdata->stopacq_polarity;
694 ts->first_conversion_delay = pdata->first_conversion_delay;
695 ts->acquisition_time = pdata->acquisition_time;
696 ts->averaging = pdata->averaging;
697 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
698
699 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev));
700
701 input_dev->name = "AD7877 Touchscreen";
702 input_dev->phys = ts->phys;
703 input_dev->dev.parent = &spi->dev;
704
705 __set_bit(EV_ABS, input_dev->evbit);
706 __set_bit(ABS_X, input_dev->absbit);
707 __set_bit(ABS_Y, input_dev->absbit);
708 __set_bit(ABS_PRESSURE, input_dev->absbit);
709
710 input_set_abs_params(input_dev, ABS_X,
711 pdata->x_min ? : 0,
712 pdata->x_max ? : MAX_12BIT,
713 0, 0);
714 input_set_abs_params(input_dev, ABS_Y,
715 pdata->y_min ? : 0,
716 pdata->y_max ? : MAX_12BIT,
717 0, 0);
718 input_set_abs_params(input_dev, ABS_PRESSURE,
719 pdata->pressure_min, pdata->pressure_max, 0, 0);
720
721 ad7877_write(spi, AD7877_REG_SEQ1, AD7877_MM_SEQUENCE);
722
723 verify = ad7877_read(spi, AD7877_REG_SEQ1);
724
725 if (verify != AD7877_MM_SEQUENCE){
726 dev_err(&spi->dev, "%s: Failed to probe %s\n",
727 dev_name(&spi->dev), input_dev->name);
728 err = -ENODEV;
729 goto err_free_mem;
730 }
731
732 if (gpio3)
733 ad7877_write(spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_3_CONF);
734
735 ad7877_setup_ts_def_msg(spi, ts);
736
737 /* Request AD7877 /DAV GPIO interrupt */
738
739 err = request_irq(spi->irq, ad7877_irq, IRQF_TRIGGER_FALLING |
740 IRQF_SAMPLE_RANDOM, spi->dev.driver->name, ts);
741 if (err) {
742 dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq);
743 goto err_free_mem;
744 }
745
746 err = sysfs_create_group(&spi->dev.kobj, &ad7877_attr_group);
747 if (err)
748 goto err_free_irq;
749
750 err = device_create_file(&spi->dev,
751 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
752 if (err)
753 goto err_remove_attr_group;
754
755 err = input_register_device(input_dev);
756 if (err)
757 goto err_remove_attr;
758
759 return 0;
760
761err_remove_attr:
762 device_remove_file(&spi->dev,
763 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
764err_remove_attr_group:
765 sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group);
766err_free_irq:
767 free_irq(spi->irq, ts);
768err_free_mem:
769 input_free_device(input_dev);
770 kfree(ts);
771 dev_set_drvdata(&spi->dev, NULL);
772 return err;
773}
774
775static int __devexit ad7877_remove(struct spi_device *spi)
776{
777 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
778
779 sysfs_remove_group(&spi->dev.kobj, &ad7877_attr_group);
780 device_remove_file(&spi->dev,
781 gpio3 ? &dev_attr_gpio3 : &dev_attr_aux3);
782
783 ad7877_disable(ts);
784 free_irq(ts->spi->irq, ts);
785
786 input_unregister_device(ts->input);
787 kfree(ts);
788
789 dev_dbg(&spi->dev, "unregistered touchscreen\n");
790 dev_set_drvdata(&spi->dev, NULL);
791
792 return 0;
793}
794
795#ifdef CONFIG_PM
796static int ad7877_suspend(struct spi_device *spi, pm_message_t message)
797{
798 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
799
800 ad7877_disable(ts);
801
802 return 0;
803}
804
805static int ad7877_resume(struct spi_device *spi)
806{
807 struct ad7877 *ts = dev_get_drvdata(&spi->dev);
808
809 ad7877_enable(ts);
810
811 return 0;
812}
813#else
814#define ad7877_suspend NULL
815#define ad7877_resume NULL
816#endif
817
818static struct spi_driver ad7877_driver = {
819 .driver = {
820 .name = "ad7877",
821 .bus = &spi_bus_type,
822 .owner = THIS_MODULE,
823 },
824 .probe = ad7877_probe,
825 .remove = __devexit_p(ad7877_remove),
826 .suspend = ad7877_suspend,
827 .resume = ad7877_resume,
828};
829
830static int __init ad7877_init(void)
831{
832 return spi_register_driver(&ad7877_driver);
833}
834module_init(ad7877_init);
835
836static void __exit ad7877_exit(void)
837{
838 spi_unregister_driver(&ad7877_driver);
839}
840module_exit(ad7877_exit);
841
842MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
843MODULE_DESCRIPTION("AD7877 touchscreen Driver");
844MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c
new file mode 100644
index 000000000000..ea4c61d68683
--- /dev/null
+++ b/drivers/input/touchscreen/ad7879.c
@@ -0,0 +1,782 @@
1/*
2 * Copyright (C) 2008 Michael Hennerich, Analog Devices Inc.
3 *
4 * Description: AD7879 based touchscreen, and GPIO driver (I2C/SPI Interface)
5 *
6 * Bugs: Enter bugs at http://blackfin.uclinux.org/
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, see the file COPYING, or write
20 * to the Free Software Foundation, Inc.,
21 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 *
23 * History:
24 * Copyright (c) 2005 David Brownell
25 * Copyright (c) 2006 Nokia Corporation
26 * Various changes: Imre Deak <imre.deak@nokia.com>
27 *
28 * Using code from:
29 * - corgi_ts.c
30 * Copyright (C) 2004-2005 Richard Purdie
31 * - omap_ts.[hc], ads7846.h, ts_osk.c
32 * Copyright (C) 2002 MontaVista Software
33 * Copyright (C) 2004 Texas Instruments
34 * Copyright (C) 2005 Dirk Behme
35 * - ad7877.c
36 * Copyright (C) 2006-2008 Analog Devices Inc.
37 */
38
39#include <linux/device.h>
40#include <linux/init.h>
41#include <linux/delay.h>
42#include <linux/input.h>
43#include <linux/interrupt.h>
44#include <linux/irq.h>
45#include <linux/slab.h>
46#include <linux/workqueue.h>
47#include <linux/spi/spi.h>
48#include <linux/i2c.h>
49
50#include <linux/spi/ad7879.h>
51
52#define AD7879_REG_ZEROS 0
53#define AD7879_REG_CTRL1 1
54#define AD7879_REG_CTRL2 2
55#define AD7879_REG_CTRL3 3
56#define AD7879_REG_AUX1HIGH 4
57#define AD7879_REG_AUX1LOW 5
58#define AD7879_REG_TEMP1HIGH 6
59#define AD7879_REG_TEMP1LOW 7
60#define AD7879_REG_XPLUS 8
61#define AD7879_REG_YPLUS 9
62#define AD7879_REG_Z1 10
63#define AD7879_REG_Z2 11
64#define AD7879_REG_AUXVBAT 12
65#define AD7879_REG_TEMP 13
66#define AD7879_REG_REVID 14
67
68/* Control REG 1 */
69#define AD7879_TMR(x) ((x & 0xFF) << 0)
70#define AD7879_ACQ(x) ((x & 0x3) << 8)
71#define AD7879_MODE_NOC (0 << 10) /* Do not convert */
72#define AD7879_MODE_SCC (1 << 10) /* Single channel conversion */
73#define AD7879_MODE_SEQ0 (2 << 10) /* Sequence 0 in Slave Mode */
74#define AD7879_MODE_SEQ1 (3 << 10) /* Sequence 1 in Master Mode */
75#define AD7879_MODE_INT (1 << 15) /* PENIRQ disabled INT enabled */
76
77/* Control REG 2 */
78#define AD7879_FCD(x) ((x & 0x3) << 0)
79#define AD7879_RESET (1 << 4)
80#define AD7879_MFS(x) ((x & 0x3) << 5)
81#define AD7879_AVG(x) ((x & 0x3) << 7)
82#define AD7879_SER (1 << 9) /* non-differential */
83#define AD7879_DFR (0 << 9) /* differential */
84#define AD7879_GPIOPOL (1 << 10)
85#define AD7879_GPIODIR (1 << 11)
86#define AD7879_GPIO_DATA (1 << 12)
87#define AD7879_GPIO_EN (1 << 13)
88#define AD7879_PM(x) ((x & 0x3) << 14)
89#define AD7879_PM_SHUTDOWN (0)
90#define AD7879_PM_DYN (1)
91#define AD7879_PM_FULLON (2)
92
93/* Control REG 3 */
94#define AD7879_TEMPMASK_BIT (1<<15)
95#define AD7879_AUXVBATMASK_BIT (1<<14)
96#define AD7879_INTMODE_BIT (1<<13)
97#define AD7879_GPIOALERTMASK_BIT (1<<12)
98#define AD7879_AUXLOW_BIT (1<<11)
99#define AD7879_AUXHIGH_BIT (1<<10)
100#define AD7879_TEMPLOW_BIT (1<<9)
101#define AD7879_TEMPHIGH_BIT (1<<8)
102#define AD7879_YPLUS_BIT (1<<7)
103#define AD7879_XPLUS_BIT (1<<6)
104#define AD7879_Z1_BIT (1<<5)
105#define AD7879_Z2_BIT (1<<4)
106#define AD7879_AUX_BIT (1<<3)
107#define AD7879_VBAT_BIT (1<<2)
108#define AD7879_TEMP_BIT (1<<1)
109
110enum {
111 AD7879_SEQ_XPOS = 0,
112 AD7879_SEQ_YPOS = 1,
113 AD7879_SEQ_Z1 = 2,
114 AD7879_SEQ_Z2 = 3,
115 AD7879_NR_SENSE = 4,
116};
117
118#define MAX_12BIT ((1<<12)-1)
119#define TS_PEN_UP_TIMEOUT msecs_to_jiffies(50)
120
121#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
122#define AD7879_DEVID 0x7A
123typedef struct spi_device bus_device;
124#elif defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
125#define AD7879_DEVID 0x79
126typedef struct i2c_client bus_device;
127#endif
128
129struct ad7879 {
130 bus_device *bus;
131 struct input_dev *input;
132 struct work_struct work;
133 struct timer_list timer;
134
135 struct mutex mutex;
136 unsigned disabled:1; /* P: mutex */
137
138#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
139 struct spi_message msg;
140 struct spi_transfer xfer[AD7879_NR_SENSE + 1];
141 u16 cmd;
142#endif
143 u16 conversion_data[AD7879_NR_SENSE];
144 char phys[32];
145 u8 first_conversion_delay;
146 u8 acquisition_time;
147 u8 averaging;
148 u8 pen_down_acc_interval;
149 u8 median;
150 u16 x_plate_ohms;
151 u16 pressure_max;
152 u16 gpio_init;
153 u16 cmd_crtl1;
154 u16 cmd_crtl2;
155 u16 cmd_crtl3;
156 unsigned gpio:1;
157};
158
159static int ad7879_read(bus_device *, u8);
160static int ad7879_write(bus_device *, u8, u16);
161static void ad7879_collect(struct ad7879 *);
162
163static void ad7879_report(struct ad7879 *ts)
164{
165 struct input_dev *input_dev = ts->input;
166 unsigned Rt;
167 u16 x, y, z1, z2;
168
169 x = ts->conversion_data[AD7879_SEQ_XPOS] & MAX_12BIT;
170 y = ts->conversion_data[AD7879_SEQ_YPOS] & MAX_12BIT;
171 z1 = ts->conversion_data[AD7879_SEQ_Z1] & MAX_12BIT;
172 z2 = ts->conversion_data[AD7879_SEQ_Z2] & MAX_12BIT;
173
174 /*
175 * The samples processed here are already preprocessed by the AD7879.
176 * The preprocessing function consists of a median and an averaging filter.
177 * The combination of these two techniques provides a robust solution,
178 * discarding the spurious noise in the signal and keeping only the data of interest.
179 * The size of both filters is programmable. (dev.platform_data, see linux/spi/ad7879.h)
180 * Other user-programmable conversion controls include variable acquisition time,
181 * and first conversion delay. Up to 16 averages can be taken per conversion.
182 */
183
184 if (likely(x && z1)) {
185 /* compute touch pressure resistance using equation #1 */
186 Rt = (z2 - z1) * x * ts->x_plate_ohms;
187 Rt /= z1;
188 Rt = (Rt + 2047) >> 12;
189
190 input_report_abs(input_dev, ABS_X, x);
191 input_report_abs(input_dev, ABS_Y, y);
192 input_report_abs(input_dev, ABS_PRESSURE, Rt);
193 input_sync(input_dev);
194 }
195}
196
197static void ad7879_work(struct work_struct *work)
198{
199 struct ad7879 *ts = container_of(work, struct ad7879, work);
200
201 /* use keventd context to read the result registers */
202 ad7879_collect(ts);
203 ad7879_report(ts);
204 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);
205}
206
207static void ad7879_ts_event_release(struct ad7879 *ts)
208{
209 struct input_dev *input_dev = ts->input;
210
211 input_report_abs(input_dev, ABS_PRESSURE, 0);
212 input_sync(input_dev);
213}
214
215static void ad7879_timer(unsigned long handle)
216{
217 struct ad7879 *ts = (void *)handle;
218
219 ad7879_ts_event_release(ts);
220}
221
222static irqreturn_t ad7879_irq(int irq, void *handle)
223{
224 struct ad7879 *ts = handle;
225
226 /* The repeated conversion sequencer controlled by TMR kicked off too fast.
227 * We ignore the last and process the sample sequence currently in the queue.
228 * It can't be older than 9.4ms
229 */
230
231 if (!work_pending(&ts->work))
232 schedule_work(&ts->work);
233
234 return IRQ_HANDLED;
235}
236
237static void ad7879_setup(struct ad7879 *ts)
238{
239 ts->cmd_crtl3 = AD7879_YPLUS_BIT |
240 AD7879_XPLUS_BIT |
241 AD7879_Z2_BIT |
242 AD7879_Z1_BIT |
243 AD7879_TEMPMASK_BIT |
244 AD7879_AUXVBATMASK_BIT |
245 AD7879_GPIOALERTMASK_BIT;
246
247 ts->cmd_crtl2 = AD7879_PM(AD7879_PM_DYN) | AD7879_DFR |
248 AD7879_AVG(ts->averaging) |
249 AD7879_MFS(ts->median) |
250 AD7879_FCD(ts->first_conversion_delay) |
251 ts->gpio_init;
252
253 ts->cmd_crtl1 = AD7879_MODE_INT | AD7879_MODE_SEQ1 |
254 AD7879_ACQ(ts->acquisition_time) |
255 AD7879_TMR(ts->pen_down_acc_interval);
256
257 ad7879_write(ts->bus, AD7879_REG_CTRL2, ts->cmd_crtl2);
258 ad7879_write(ts->bus, AD7879_REG_CTRL3, ts->cmd_crtl3);
259 ad7879_write(ts->bus, AD7879_REG_CTRL1, ts->cmd_crtl1);
260}
261
262static void ad7879_disable(struct ad7879 *ts)
263{
264 mutex_lock(&ts->mutex);
265
266 if (!ts->disabled) {
267
268 ts->disabled = 1;
269 disable_irq(ts->bus->irq);
270
271 cancel_work_sync(&ts->work);
272
273 if (del_timer_sync(&ts->timer))
274 ad7879_ts_event_release(ts);
275
276 ad7879_write(ts->bus, AD7879_REG_CTRL2,
277 AD7879_PM(AD7879_PM_SHUTDOWN));
278 }
279
280 mutex_unlock(&ts->mutex);
281}
282
283static void ad7879_enable(struct ad7879 *ts)
284{
285 mutex_lock(&ts->mutex);
286
287 if (ts->disabled) {
288 ad7879_setup(ts);
289 ts->disabled = 0;
290 enable_irq(ts->bus->irq);
291 }
292
293 mutex_unlock(&ts->mutex);
294}
295
296static ssize_t ad7879_disable_show(struct device *dev,
297 struct device_attribute *attr, char *buf)
298{
299 struct ad7879 *ts = dev_get_drvdata(dev);
300
301 return sprintf(buf, "%u\n", ts->disabled);
302}
303
304static ssize_t ad7879_disable_store(struct device *dev,
305 struct device_attribute *attr,
306 const char *buf, size_t count)
307{
308 struct ad7879 *ts = dev_get_drvdata(dev);
309 unsigned long val;
310 int error;
311
312 error = strict_strtoul(buf, 10, &val);
313 if (error)
314 return error;
315
316 if (val)
317 ad7879_disable(ts);
318 else
319 ad7879_enable(ts);
320
321 return count;
322}
323
324static DEVICE_ATTR(disable, 0664, ad7879_disable_show, ad7879_disable_store);
325
326static ssize_t ad7879_gpio_show(struct device *dev,
327 struct device_attribute *attr, char *buf)
328{
329 struct ad7879 *ts = dev_get_drvdata(dev);
330
331 return sprintf(buf, "%u\n", ts->gpio);
332}
333
334static ssize_t ad7879_gpio_store(struct device *dev,
335 struct device_attribute *attr,
336 const char *buf, size_t count)
337{
338 struct ad7879 *ts = dev_get_drvdata(dev);
339 unsigned long val;
340 int error;
341
342 error = strict_strtoul(buf, 10, &val);
343 if (error)
344 return error;
345
346 mutex_lock(&ts->mutex);
347 ts->gpio = !!val;
348 error = ad7879_write(ts->bus, AD7879_REG_CTRL2,
349 ts->gpio ?
350 ts->cmd_crtl2 & ~AD7879_GPIO_DATA :
351 ts->cmd_crtl2 | AD7879_GPIO_DATA);
352 mutex_unlock(&ts->mutex);
353
354 return error ? : count;
355}
356
357static DEVICE_ATTR(gpio, 0664, ad7879_gpio_show, ad7879_gpio_store);
358
359static struct attribute *ad7879_attributes[] = {
360 &dev_attr_disable.attr,
361 &dev_attr_gpio.attr,
362 NULL
363};
364
365static const struct attribute_group ad7879_attr_group = {
366 .attrs = ad7879_attributes,
367};
368
369static int __devinit ad7879_construct(bus_device *bus, struct ad7879 *ts)
370{
371 struct input_dev *input_dev;
372 struct ad7879_platform_data *pdata = bus->dev.platform_data;
373 int err;
374 u16 revid;
375
376 if (!bus->irq) {
377 dev_err(&bus->dev, "no IRQ?\n");
378 return -ENODEV;
379 }
380
381 if (!pdata) {
382 dev_err(&bus->dev, "no platform data?\n");
383 return -ENODEV;
384 }
385
386 input_dev = input_allocate_device();
387 if (!input_dev)
388 return -ENOMEM;
389
390 ts->input = input_dev;
391
392 setup_timer(&ts->timer, ad7879_timer, (unsigned long) ts);
393 INIT_WORK(&ts->work, ad7879_work);
394 mutex_init(&ts->mutex);
395
396 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
397 ts->pressure_max = pdata->pressure_max ? : ~0;
398
399 ts->first_conversion_delay = pdata->first_conversion_delay;
400 ts->acquisition_time = pdata->acquisition_time;
401 ts->averaging = pdata->averaging;
402 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
403 ts->median = pdata->median;
404
405 if (pdata->gpio_output)
406 ts->gpio_init = AD7879_GPIO_EN |
407 (pdata->gpio_default ? 0 : AD7879_GPIO_DATA);
408 else
409 ts->gpio_init = AD7879_GPIO_EN | AD7879_GPIODIR;
410
411 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&bus->dev));
412
413 input_dev->name = "AD7879 Touchscreen";
414 input_dev->phys = ts->phys;
415 input_dev->dev.parent = &bus->dev;
416
417 __set_bit(EV_ABS, input_dev->evbit);
418 __set_bit(ABS_X, input_dev->absbit);
419 __set_bit(ABS_Y, input_dev->absbit);
420 __set_bit(ABS_PRESSURE, input_dev->absbit);
421
422 input_set_abs_params(input_dev, ABS_X,
423 pdata->x_min ? : 0,
424 pdata->x_max ? : MAX_12BIT,
425 0, 0);
426 input_set_abs_params(input_dev, ABS_Y,
427 pdata->y_min ? : 0,
428 pdata->y_max ? : MAX_12BIT,
429 0, 0);
430 input_set_abs_params(input_dev, ABS_PRESSURE,
431 pdata->pressure_min, pdata->pressure_max, 0, 0);
432
433 err = ad7879_write(bus, AD7879_REG_CTRL2, AD7879_RESET);
434
435 if (err < 0) {
436 dev_err(&bus->dev, "Failed to write %s\n", input_dev->name);
437 goto err_free_mem;
438 }
439
440 revid = ad7879_read(bus, AD7879_REG_REVID);
441
442 if ((revid & 0xFF) != AD7879_DEVID) {
443 dev_err(&bus->dev, "Failed to probe %s\n", input_dev->name);
444 err = -ENODEV;
445 goto err_free_mem;
446 }
447
448 ad7879_setup(ts);
449
450 err = request_irq(bus->irq, ad7879_irq,
451 IRQF_TRIGGER_FALLING | IRQF_SAMPLE_RANDOM,
452 bus->dev.driver->name, ts);
453
454 if (err) {
455 dev_err(&bus->dev, "irq %d busy?\n", bus->irq);
456 goto err_free_mem;
457 }
458
459 err = sysfs_create_group(&bus->dev.kobj, &ad7879_attr_group);
460 if (err)
461 goto err_free_irq;
462
463 err = input_register_device(input_dev);
464 if (err)
465 goto err_remove_attr;
466
467 dev_info(&bus->dev, "Rev.%d touchscreen, irq %d\n",
468 revid >> 8, bus->irq);
469
470 return 0;
471
472err_remove_attr:
473 sysfs_remove_group(&bus->dev.kobj, &ad7879_attr_group);
474err_free_irq:
475 free_irq(bus->irq, ts);
476err_free_mem:
477 input_free_device(input_dev);
478
479 return err;
480}
481
482static int __devexit ad7879_destroy(bus_device *bus, struct ad7879 *ts)
483{
484 ad7879_disable(ts);
485 sysfs_remove_group(&ts->bus->dev.kobj, &ad7879_attr_group);
486 free_irq(ts->bus->irq, ts);
487 input_unregister_device(ts->input);
488 dev_dbg(&bus->dev, "unregistered touchscreen\n");
489
490 return 0;
491}
492
493#ifdef CONFIG_PM
494static int ad7879_suspend(bus_device *bus, pm_message_t message)
495{
496 struct ad7879 *ts = dev_get_drvdata(&bus->dev);
497
498 ad7879_disable(ts);
499
500 return 0;
501}
502
503static int ad7879_resume(bus_device *bus)
504{
505 struct ad7879 *ts = dev_get_drvdata(&bus->dev);
506
507 ad7879_enable(ts);
508
509 return 0;
510}
511#else
512#define ad7879_suspend NULL
513#define ad7879_resume NULL
514#endif
515
516#if defined(CONFIG_TOUCHSCREEN_AD7879_SPI) || defined(CONFIG_TOUCHSCREEN_AD7879_SPI_MODULE)
517#define MAX_SPI_FREQ_HZ 5000000
518#define AD7879_CMD_MAGIC 0xE000
519#define AD7879_CMD_READ (1 << 10)
520#define AD7879_WRITECMD(reg) (AD7879_CMD_MAGIC | (reg & 0xF))
521#define AD7879_READCMD(reg) (AD7879_CMD_MAGIC | AD7879_CMD_READ | (reg & 0xF))
522
523struct ser_req {
524 u16 command;
525 u16 data;
526 struct spi_message msg;
527 struct spi_transfer xfer[2];
528};
529
530/*
531 * ad7879_read/write are only used for initial setup and for sysfs controls.
532 * The main traffic is done in ad7879_collect().
533 */
534
535static int ad7879_read(struct spi_device *spi, u8 reg)
536{
537 struct ser_req *req;
538 int status, ret;
539
540 req = kzalloc(sizeof *req, GFP_KERNEL);
541 if (!req)
542 return -ENOMEM;
543
544 spi_message_init(&req->msg);
545
546 req->command = (u16) AD7879_READCMD(reg);
547 req->xfer[0].tx_buf = &req->command;
548 req->xfer[0].len = 2;
549
550 req->xfer[1].rx_buf = &req->data;
551 req->xfer[1].len = 2;
552
553 spi_message_add_tail(&req->xfer[0], &req->msg);
554 spi_message_add_tail(&req->xfer[1], &req->msg);
555
556 status = spi_sync(spi, &req->msg);
557 ret = status ? : req->data;
558
559 kfree(req);
560
561 return ret;
562}
563
564static int ad7879_write(struct spi_device *spi, u8 reg, u16 val)
565{
566 struct ser_req *req;
567 int status;
568
569 req = kzalloc(sizeof *req, GFP_KERNEL);
570 if (!req)
571 return -ENOMEM;
572
573 spi_message_init(&req->msg);
574
575 req->command = (u16) AD7879_WRITECMD(reg);
576 req->xfer[0].tx_buf = &req->command;
577 req->xfer[0].len = 2;
578
579 req->data = val;
580 req->xfer[1].tx_buf = &req->data;
581 req->xfer[1].len = 2;
582
583 spi_message_add_tail(&req->xfer[0], &req->msg);
584 spi_message_add_tail(&req->xfer[1], &req->msg);
585
586 status = spi_sync(spi, &req->msg);
587
588 kfree(req);
589
590 return status;
591}
592
593static void ad7879_collect(struct ad7879 *ts)
594{
595 int status = spi_sync(ts->bus, &ts->msg);
596
597 if (status)
598 dev_err(&ts->bus->dev, "spi_sync --> %d\n", status);
599}
600
601static void ad7879_setup_ts_def_msg(struct ad7879 *ts)
602{
603 struct spi_message *m;
604 int i;
605
606 ts->cmd = (u16) AD7879_READCMD(AD7879_REG_XPLUS);
607
608 m = &ts->msg;
609 spi_message_init(m);
610 ts->xfer[0].tx_buf = &ts->cmd;
611 ts->xfer[0].len = 2;
612
613 spi_message_add_tail(&ts->xfer[0], m);
614
615 for (i = 0; i < AD7879_NR_SENSE; i++) {
616 ts->xfer[i + 1].rx_buf = &ts->conversion_data[i];
617 ts->xfer[i + 1].len = 2;
618 spi_message_add_tail(&ts->xfer[i + 1], m);
619 }
620}
621
622static int __devinit ad7879_probe(struct spi_device *spi)
623{
624 struct ad7879 *ts;
625 int error;
626
627 /* don't exceed max specified SPI CLK frequency */
628 if (spi->max_speed_hz > MAX_SPI_FREQ_HZ) {
629 dev_err(&spi->dev, "SPI CLK %d Hz?\n", spi->max_speed_hz);
630 return -EINVAL;
631 }
632
633 ts = kzalloc(sizeof(struct ad7879), GFP_KERNEL);
634 if (!ts)
635 return -ENOMEM;
636
637 dev_set_drvdata(&spi->dev, ts);
638 ts->bus = spi;
639
640 ad7879_setup_ts_def_msg(ts);
641
642 error = ad7879_construct(spi, ts);
643 if (error) {
644 dev_set_drvdata(&spi->dev, NULL);
645 kfree(ts);
646 }
647
648 return 0;
649}
650
651static int __devexit ad7879_remove(struct spi_device *spi)
652{
653 struct ad7879 *ts = dev_get_drvdata(&spi->dev);
654
655 ad7879_destroy(spi, ts);
656 dev_set_drvdata(&spi->dev, NULL);
657 kfree(ts);
658
659 return 0;
660}
661
662static struct spi_driver ad7879_driver = {
663 .driver = {
664 .name = "ad7879",
665 .bus = &spi_bus_type,
666 .owner = THIS_MODULE,
667 },
668 .probe = ad7879_probe,
669 .remove = __devexit_p(ad7879_remove),
670 .suspend = ad7879_suspend,
671 .resume = ad7879_resume,
672};
673
674static int __init ad7879_init(void)
675{
676 return spi_register_driver(&ad7879_driver);
677}
678module_init(ad7879_init);
679
680static void __exit ad7879_exit(void)
681{
682 spi_unregister_driver(&ad7879_driver);
683}
684module_exit(ad7879_exit);
685
686#elif defined(CONFIG_TOUCHSCREEN_AD7879_I2C) || defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)
687
688/* All registers are word-sized.
689 * AD7879 uses a high-byte first convention.
690 */
691static int ad7879_read(struct i2c_client *client, u8 reg)
692{
693 return swab16(i2c_smbus_read_word_data(client, reg));
694}
695
696static int ad7879_write(struct i2c_client *client, u8 reg, u16 val)
697{
698 return i2c_smbus_write_word_data(client, reg, swab16(val));
699}
700
701static void ad7879_collect(struct ad7879 *ts)
702{
703 int i;
704
705 for (i = 0; i < AD7879_NR_SENSE; i++)
706 ts->conversion_data[i] = ad7879_read(ts->bus,
707 AD7879_REG_XPLUS + i);
708}
709
710static int __devinit ad7879_probe(struct i2c_client *client,
711 const struct i2c_device_id *id)
712{
713 struct ad7879 *ts;
714 int error;
715
716 if (!i2c_check_functionality(client->adapter,
717 I2C_FUNC_SMBUS_WORD_DATA)) {
718 dev_err(&client->dev, "SMBUS Word Data not Supported\n");
719 return -EIO;
720 }
721
722 ts = kzalloc(sizeof(struct ad7879), GFP_KERNEL);
723 if (!ts)
724 return -ENOMEM;
725
726 i2c_set_clientdata(client, ts);
727 ts->bus = client;
728
729 error = ad7879_construct(client, ts);
730 if (error) {
731 i2c_set_clientdata(client, NULL);
732 kfree(ts);
733 }
734
735 return 0;
736}
737
738static int __devexit ad7879_remove(struct i2c_client *client)
739{
740 struct ad7879 *ts = dev_get_drvdata(&client->dev);
741
742 ad7879_destroy(client, ts);
743 i2c_set_clientdata(client, NULL);
744 kfree(ts);
745
746 return 0;
747}
748
749static const struct i2c_device_id ad7879_id[] = {
750 { "ad7879", 0 },
751 { }
752};
753MODULE_DEVICE_TABLE(i2c, ad7879_id);
754
755static struct i2c_driver ad7879_driver = {
756 .driver = {
757 .name = "ad7879",
758 .owner = THIS_MODULE,
759 },
760 .probe = ad7879_probe,
761 .remove = __devexit_p(ad7879_remove),
762 .suspend = ad7879_suspend,
763 .resume = ad7879_resume,
764 .id_table = ad7879_id,
765};
766
767static int __init ad7879_init(void)
768{
769 return i2c_add_driver(&ad7879_driver);
770}
771module_init(ad7879_init);
772
773static void __exit ad7879_exit(void)
774{
775 i2c_del_driver(&ad7879_driver);
776}
777module_exit(ad7879_exit);
778#endif
779
780MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
781MODULE_DESCRIPTION("AD7879(-1) touchscreen Driver");
782MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/mainstone-wm97xx.c b/drivers/input/touchscreen/mainstone-wm97xx.c
index 1d11e2be9ef8..dfa6a84ab50a 100644
--- a/drivers/input/touchscreen/mainstone-wm97xx.c
+++ b/drivers/input/touchscreen/mainstone-wm97xx.c
@@ -162,6 +162,7 @@ static int wm97xx_acc_pen_down(struct wm97xx *wm)
162 input_report_abs(wm->input_dev, ABS_X, x & 0xfff); 162 input_report_abs(wm->input_dev, ABS_X, x & 0xfff);
163 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff); 163 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff);
164 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff); 164 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff);
165 input_report_key(wm->input_dev, BTN_TOUCH, (p != 0));
165 input_sync(wm->input_dev); 166 input_sync(wm->input_dev);
166 reads++; 167 reads++;
167 } while (reads < cinfo[sp_idx].reads); 168 } while (reads < cinfo[sp_idx].reads);
@@ -245,7 +246,7 @@ static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
245 if (enable) 246 if (enable)
246 enable_irq(wm->pen_irq); 247 enable_irq(wm->pen_irq);
247 else 248 else
248 disable_irq(wm->pen_irq); 249 disable_irq_nosync(wm->pen_irq);
249} 250}
250 251
251static struct wm97xx_mach_ops mainstone_mach_ops = { 252static struct wm97xx_mach_ops mainstone_mach_ops = {
diff --git a/drivers/input/touchscreen/ucb1400_ts.c b/drivers/input/touchscreen/ucb1400_ts.c
index 54986627def0..e868264fe799 100644
--- a/drivers/input/touchscreen/ucb1400_ts.c
+++ b/drivers/input/touchscreen/ucb1400_ts.c
@@ -151,12 +151,14 @@ static void ucb1400_ts_evt_add(struct input_dev *idev, u16 pressure, u16 x, u16
151 input_report_abs(idev, ABS_X, x); 151 input_report_abs(idev, ABS_X, x);
152 input_report_abs(idev, ABS_Y, y); 152 input_report_abs(idev, ABS_Y, y);
153 input_report_abs(idev, ABS_PRESSURE, pressure); 153 input_report_abs(idev, ABS_PRESSURE, pressure);
154 input_report_key(idev, BTN_TOUCH, 1);
154 input_sync(idev); 155 input_sync(idev);
155} 156}
156 157
157static void ucb1400_ts_event_release(struct input_dev *idev) 158static void ucb1400_ts_event_release(struct input_dev *idev)
158{ 159{
159 input_report_abs(idev, ABS_PRESSURE, 0); 160 input_report_abs(idev, ABS_PRESSURE, 0);
161 input_report_key(idev, BTN_TOUCH, 0);
160 input_sync(idev); 162 input_sync(idev);
161} 163}
162 164
@@ -377,7 +379,8 @@ static int ucb1400_ts_probe(struct platform_device *dev)
377 ucb->ts_idev->id.product = ucb->id; 379 ucb->ts_idev->id.product = ucb->id;
378 ucb->ts_idev->open = ucb1400_ts_open; 380 ucb->ts_idev->open = ucb1400_ts_open;
379 ucb->ts_idev->close = ucb1400_ts_close; 381 ucb->ts_idev->close = ucb1400_ts_close;
380 ucb->ts_idev->evbit[0] = BIT_MASK(EV_ABS); 382 ucb->ts_idev->evbit[0] = BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY);
383 ucb->ts_idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
381 384
382 ucb1400_adc_enable(ucb->ac97); 385 ucb1400_adc_enable(ucb->ac97);
383 x_res = ucb1400_ts_read_xres(ucb); 386 x_res = ucb1400_ts_read_xres(ucb);
diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c
index d15aa11d7056..cec480bffe38 100644
--- a/drivers/input/touchscreen/wm97xx-core.c
+++ b/drivers/input/touchscreen/wm97xx-core.c
@@ -409,6 +409,7 @@ static int wm97xx_read_samples(struct wm97xx *wm)
409 wm->pen_is_down = 0; 409 wm->pen_is_down = 0;
410 dev_dbg(wm->dev, "pen up\n"); 410 dev_dbg(wm->dev, "pen up\n");
411 input_report_abs(wm->input_dev, ABS_PRESSURE, 0); 411 input_report_abs(wm->input_dev, ABS_PRESSURE, 0);
412 input_report_key(wm->input_dev, BTN_TOUCH, 0);
412 input_sync(wm->input_dev); 413 input_sync(wm->input_dev);
413 } else if (!(rc & RC_AGAIN)) { 414 } else if (!(rc & RC_AGAIN)) {
414 /* We need high frequency updates only while 415 /* We need high frequency updates only while
@@ -433,6 +434,7 @@ static int wm97xx_read_samples(struct wm97xx *wm)
433 input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff); 434 input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff);
434 input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff); 435 input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff);
435 input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff); 436 input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff);
437 input_report_key(wm->input_dev, BTN_TOUCH, 1);
436 input_sync(wm->input_dev); 438 input_sync(wm->input_dev);
437 wm->pen_is_down = 1; 439 wm->pen_is_down = 1;
438 wm->ts_reader_interval = wm->ts_reader_min_interval; 440 wm->ts_reader_interval = wm->ts_reader_min_interval;
@@ -628,18 +630,21 @@ static int wm97xx_probe(struct device *dev)
628 wm->input_dev->phys = "wm97xx"; 630 wm->input_dev->phys = "wm97xx";
629 wm->input_dev->open = wm97xx_ts_input_open; 631 wm->input_dev->open = wm97xx_ts_input_open;
630 wm->input_dev->close = wm97xx_ts_input_close; 632 wm->input_dev->close = wm97xx_ts_input_close;
631 set_bit(EV_ABS, wm->input_dev->evbit); 633
632 set_bit(ABS_X, wm->input_dev->absbit); 634 __set_bit(EV_ABS, wm->input_dev->evbit);
633 set_bit(ABS_Y, wm->input_dev->absbit); 635 __set_bit(EV_KEY, wm->input_dev->evbit);
634 set_bit(ABS_PRESSURE, wm->input_dev->absbit); 636 __set_bit(BTN_TOUCH, wm->input_dev->keybit);
637
635 input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1], 638 input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1],
636 abs_x[2], 0); 639 abs_x[2], 0);
637 input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1], 640 input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1],
638 abs_y[2], 0); 641 abs_y[2], 0);
639 input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1], 642 input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1],
640 abs_p[2], 0); 643 abs_p[2], 0);
644
641 input_set_drvdata(wm->input_dev, wm); 645 input_set_drvdata(wm->input_dev, wm);
642 wm->input_dev->dev.parent = dev; 646 wm->input_dev->dev.parent = dev;
647
643 ret = input_register_device(wm->input_dev); 648 ret = input_register_device(wm->input_dev);
644 if (ret < 0) 649 if (ret < 0)
645 goto dev_alloc_err; 650 goto dev_alloc_err;
diff --git a/drivers/input/touchscreen/zylonite-wm97xx.c b/drivers/input/touchscreen/zylonite-wm97xx.c
new file mode 100644
index 000000000000..41e4359c277c
--- /dev/null
+++ b/drivers/input/touchscreen/zylonite-wm97xx.c
@@ -0,0 +1,240 @@
1/*
2 * zylonite-wm97xx.c -- Zylonite Continuous Touch screen driver
3 *
4 * Copyright 2004, 2007, 2008 Wolfson Microelectronics PLC.
5 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
6 * Parts Copyright : Ian Molton <spyro@f2s.com>
7 * Andrew Zabolotny <zap@homelink.ru>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 *
14 * Notes:
15 * This is a wm97xx extended touch driver supporting interrupt driven
16 * and continuous operation on Marvell Zylonite development systems
17 * (which have a WM9713 on board).
18 */
19
20#include <linux/module.h>
21#include <linux/moduleparam.h>
22#include <linux/kernel.h>
23#include <linux/init.h>
24#include <linux/delay.h>
25#include <linux/irq.h>
26#include <linux/interrupt.h>
27#include <linux/io.h>
28#include <linux/wm97xx.h>
29
30#include <mach/hardware.h>
31#include <mach/mfp.h>
32#include <mach/regs-ac97.h>
33
34struct continuous {
35 u16 id; /* codec id */
36 u8 code; /* continuous code */
37 u8 reads; /* number of coord reads per read cycle */
38 u32 speed; /* number of coords per second */
39};
40
41#define WM_READS(sp) ((sp / HZ) + 1)
42
43static const struct continuous cinfo[] = {
44 { WM9713_ID2, 0, WM_READS(94), 94 },
45 { WM9713_ID2, 1, WM_READS(120), 120 },
46 { WM9713_ID2, 2, WM_READS(154), 154 },
47 { WM9713_ID2, 3, WM_READS(188), 188 },
48};
49
50/* continuous speed index */
51static int sp_idx;
52
53/*
54 * Pen sampling frequency (Hz) in continuous mode.
55 */
56static int cont_rate = 200;
57module_param(cont_rate, int, 0);
58MODULE_PARM_DESC(cont_rate, "Sampling rate in continuous mode (Hz)");
59
60/*
61 * Pressure readback.
62 *
63 * Set to 1 to read back pen down pressure
64 */
65static int pressure;
66module_param(pressure, int, 0);
67MODULE_PARM_DESC(pressure, "Pressure readback (1 = pressure, 0 = no pressure)");
68
69/*
70 * AC97 touch data slot.
71 *
72 * Touch screen readback data ac97 slot
73 */
74static int ac97_touch_slot = 5;
75module_param(ac97_touch_slot, int, 0);
76MODULE_PARM_DESC(ac97_touch_slot, "Touch screen data slot AC97 number");
77
78
79/* flush AC97 slot 5 FIFO machines */
80static void wm97xx_acc_pen_up(struct wm97xx *wm)
81{
82 int i;
83
84 msleep(1);
85
86 for (i = 0; i < 16; i++)
87 MODR;
88}
89
90static int wm97xx_acc_pen_down(struct wm97xx *wm)
91{
92 u16 x, y, p = 0x100 | WM97XX_ADCSEL_PRES;
93 int reads = 0;
94 static u16 last, tries;
95
96 /* When the AC97 queue has been drained we need to allow time
97 * to buffer up samples otherwise we end up spinning polling
98 * for samples. The controller can't have a suitably low
99 * threashold set to use the notifications it gives.
100 */
101 msleep(1);
102
103 if (tries > 5) {
104 tries = 0;
105 return RC_PENUP;
106 }
107
108 x = MODR;
109 if (x == last) {
110 tries++;
111 return RC_AGAIN;
112 }
113 last = x;
114 do {
115 if (reads)
116 x = MODR;
117 y = MODR;
118 if (pressure)
119 p = MODR;
120
121 /* are samples valid */
122 if ((x & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_X ||
123 (y & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_Y ||
124 (p & WM97XX_ADCSRC_MASK) != WM97XX_ADCSEL_PRES)
125 goto up;
126
127 /* coordinate is good */
128 tries = 0;
129 input_report_abs(wm->input_dev, ABS_X, x & 0xfff);
130 input_report_abs(wm->input_dev, ABS_Y, y & 0xfff);
131 input_report_abs(wm->input_dev, ABS_PRESSURE, p & 0xfff);
132 input_report_key(wm->input_dev, BTN_TOUCH, (p != 0));
133 input_sync(wm->input_dev);
134 reads++;
135 } while (reads < cinfo[sp_idx].reads);
136up:
137 return RC_PENDOWN | RC_AGAIN;
138}
139
140static int wm97xx_acc_startup(struct wm97xx *wm)
141{
142 int idx;
143
144 /* check we have a codec */
145 if (wm->ac97 == NULL)
146 return -ENODEV;
147
148 /* Go you big red fire engine */
149 for (idx = 0; idx < ARRAY_SIZE(cinfo); idx++) {
150 if (wm->id != cinfo[idx].id)
151 continue;
152 sp_idx = idx;
153 if (cont_rate <= cinfo[idx].speed)
154 break;
155 }
156 wm->acc_rate = cinfo[sp_idx].code;
157 wm->acc_slot = ac97_touch_slot;
158 dev_info(wm->dev,
159 "zylonite accelerated touchscreen driver, %d samples/sec\n",
160 cinfo[sp_idx].speed);
161
162 return 0;
163}
164
165static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
166{
167 if (enable)
168 enable_irq(wm->pen_irq);
169 else
170 disable_irq_nosync(wm->pen_irq);
171}
172
173static struct wm97xx_mach_ops zylonite_mach_ops = {
174 .acc_enabled = 1,
175 .acc_pen_up = wm97xx_acc_pen_up,
176 .acc_pen_down = wm97xx_acc_pen_down,
177 .acc_startup = wm97xx_acc_startup,
178 .irq_enable = wm97xx_irq_enable,
179 .irq_gpio = WM97XX_GPIO_2,
180};
181
182static int zylonite_wm97xx_probe(struct platform_device *pdev)
183{
184 struct wm97xx *wm = platform_get_drvdata(pdev);
185 int gpio_touch_irq;
186
187 if (cpu_is_pxa320())
188 gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO15);
189 else
190 gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO26);
191
192 wm->pen_irq = IRQ_GPIO(gpio_touch_irq);
193 set_irq_type(IRQ_GPIO(gpio_touch_irq), IRQ_TYPE_EDGE_BOTH);
194
195 wm97xx_config_gpio(wm, WM97XX_GPIO_13, WM97XX_GPIO_IN,
196 WM97XX_GPIO_POL_HIGH,
197 WM97XX_GPIO_STICKY,
198 WM97XX_GPIO_WAKE);
199 wm97xx_config_gpio(wm, WM97XX_GPIO_2, WM97XX_GPIO_OUT,
200 WM97XX_GPIO_POL_HIGH,
201 WM97XX_GPIO_NOTSTICKY,
202 WM97XX_GPIO_NOWAKE);
203
204 return wm97xx_register_mach_ops(wm, &zylonite_mach_ops);
205}
206
207static int zylonite_wm97xx_remove(struct platform_device *pdev)
208{
209 struct wm97xx *wm = platform_get_drvdata(pdev);
210
211 wm97xx_unregister_mach_ops(wm);
212
213 return 0;
214}
215
216static struct platform_driver zylonite_wm97xx_driver = {
217 .probe = zylonite_wm97xx_probe,
218 .remove = zylonite_wm97xx_remove,
219 .driver = {
220 .name = "wm97xx-touch",
221 },
222};
223
224static int __init zylonite_wm97xx_init(void)
225{
226 return platform_driver_register(&zylonite_wm97xx_driver);
227}
228
229static void __exit zylonite_wm97xx_exit(void)
230{
231 platform_driver_unregister(&zylonite_wm97xx_driver);
232}
233
234module_init(zylonite_wm97xx_init);
235module_exit(zylonite_wm97xx_exit);
236
237/* Module information */
238MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
239MODULE_DESCRIPTION("wm97xx continuous touch driver for Zylonite");
240MODULE_LICENSE("GPL");
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 102ef4a14c5f..d2109054de85 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -82,7 +82,7 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
82 if (!gpio_is_valid(template->gpio)) { 82 if (!gpio_is_valid(template->gpio)) {
83 printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n", 83 printk(KERN_INFO "Skipping unavilable LED gpio %d (%s)\n",
84 template->gpio, template->name); 84 template->gpio, template->name);
85 return; 85 return 0;
86 } 86 }
87 87
88 ret = gpio_request(template->gpio, template->name); 88 ret = gpio_request(template->gpio, template->name);
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index f01096549a93..823ceba6efa8 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1047,6 +1047,19 @@ static int populate_table(struct dm_table *table,
1047 return dm_table_complete(table); 1047 return dm_table_complete(table);
1048} 1048}
1049 1049
1050static int table_prealloc_integrity(struct dm_table *t,
1051 struct mapped_device *md)
1052{
1053 struct list_head *devices = dm_table_get_devices(t);
1054 struct dm_dev_internal *dd;
1055
1056 list_for_each_entry(dd, devices, list)
1057 if (bdev_get_integrity(dd->dm_dev.bdev))
1058 return blk_integrity_register(dm_disk(md), NULL);
1059
1060 return 0;
1061}
1062
1050static int table_load(struct dm_ioctl *param, size_t param_size) 1063static int table_load(struct dm_ioctl *param, size_t param_size)
1051{ 1064{
1052 int r; 1065 int r;
@@ -1068,6 +1081,14 @@ static int table_load(struct dm_ioctl *param, size_t param_size)
1068 goto out; 1081 goto out;
1069 } 1082 }
1070 1083
1084 r = table_prealloc_integrity(t, md);
1085 if (r) {
1086 DMERR("%s: could not register integrity profile.",
1087 dm_device_name(md));
1088 dm_table_destroy(t);
1089 goto out;
1090 }
1091
1071 down_write(&_hash_lock); 1092 down_write(&_hash_lock);
1072 hc = dm_get_mdptr(md); 1093 hc = dm_get_mdptr(md);
1073 if (!hc || hc->md != md) { 1094 if (!hc || hc->md != md) {
diff --git a/drivers/md/dm-kcopyd.c b/drivers/md/dm-kcopyd.c
index 0a225da21272..3e3fc06cb861 100644
--- a/drivers/md/dm-kcopyd.c
+++ b/drivers/md/dm-kcopyd.c
@@ -297,7 +297,8 @@ static int run_complete_job(struct kcopyd_job *job)
297 dm_kcopyd_notify_fn fn = job->fn; 297 dm_kcopyd_notify_fn fn = job->fn;
298 struct dm_kcopyd_client *kc = job->kc; 298 struct dm_kcopyd_client *kc = job->kc;
299 299
300 kcopyd_put_pages(kc, job->pages); 300 if (job->pages)
301 kcopyd_put_pages(kc, job->pages);
301 mempool_free(job, kc->job_pool); 302 mempool_free(job, kc->job_pool);
302 fn(read_err, write_err, context); 303 fn(read_err, write_err, context);
303 304
@@ -461,6 +462,7 @@ static void segment_complete(int read_err, unsigned long write_err,
461 sector_t progress = 0; 462 sector_t progress = 0;
462 sector_t count = 0; 463 sector_t count = 0;
463 struct kcopyd_job *job = (struct kcopyd_job *) context; 464 struct kcopyd_job *job = (struct kcopyd_job *) context;
465 struct dm_kcopyd_client *kc = job->kc;
464 466
465 mutex_lock(&job->lock); 467 mutex_lock(&job->lock);
466 468
@@ -490,7 +492,7 @@ static void segment_complete(int read_err, unsigned long write_err,
490 492
491 if (count) { 493 if (count) {
492 int i; 494 int i;
493 struct kcopyd_job *sub_job = mempool_alloc(job->kc->job_pool, 495 struct kcopyd_job *sub_job = mempool_alloc(kc->job_pool,
494 GFP_NOIO); 496 GFP_NOIO);
495 497
496 *sub_job = *job; 498 *sub_job = *job;
@@ -509,13 +511,16 @@ static void segment_complete(int read_err, unsigned long write_err,
509 } else if (atomic_dec_and_test(&job->sub_jobs)) { 511 } else if (atomic_dec_and_test(&job->sub_jobs)) {
510 512
511 /* 513 /*
512 * To avoid a race we must keep the job around 514 * Queue the completion callback to the kcopyd thread.
513 * until after the notify function has completed. 515 *
514 * Otherwise the client may try and stop the job 516 * Some callers assume that all the completions are called
515 * after we've completed. 517 * from a single thread and don't race with each other.
518 *
519 * We must not call the callback directly here because this
520 * code may not be executing in the thread.
516 */ 521 */
517 job->fn(read_err, write_err, job->context); 522 push(&kc->complete_jobs, job);
518 mempool_free(job, job->kc->job_pool); 523 wake(kc);
519 } 524 }
520} 525}
521 526
@@ -528,6 +533,8 @@ static void split_job(struct kcopyd_job *job)
528{ 533{
529 int i; 534 int i;
530 535
536 atomic_inc(&job->kc->nr_jobs);
537
531 atomic_set(&job->sub_jobs, SPLIT_COUNT); 538 atomic_set(&job->sub_jobs, SPLIT_COUNT);
532 for (i = 0; i < SPLIT_COUNT; i++) 539 for (i = 0; i < SPLIT_COUNT; i++)
533 segment_complete(0, 0u, job); 540 segment_complete(0, 0u, job);
diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c
index bfa107f59d96..79fb53e51c70 100644
--- a/drivers/md/dm-linear.c
+++ b/drivers/md/dm-linear.c
@@ -142,7 +142,6 @@ static struct target_type linear_target = {
142 .status = linear_status, 142 .status = linear_status,
143 .ioctl = linear_ioctl, 143 .ioctl = linear_ioctl,
144 .merge = linear_merge, 144 .merge = linear_merge,
145 .features = DM_TARGET_SUPPORTS_BARRIERS,
146}; 145};
147 146
148int __init dm_linear_init(void) 147int __init dm_linear_init(void)
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index e8361b191b9b..429b50b975d5 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -52,8 +52,6 @@ struct dm_table {
52 sector_t *highs; 52 sector_t *highs;
53 struct dm_target *targets; 53 struct dm_target *targets;
54 54
55 unsigned barriers_supported:1;
56
57 /* 55 /*
58 * Indicates the rw permissions for the new logical 56 * Indicates the rw permissions for the new logical
59 * device. This should be a combination of FMODE_READ 57 * device. This should be a combination of FMODE_READ
@@ -243,7 +241,6 @@ int dm_table_create(struct dm_table **result, fmode_t mode,
243 241
244 INIT_LIST_HEAD(&t->devices); 242 INIT_LIST_HEAD(&t->devices);
245 atomic_set(&t->holders, 0); 243 atomic_set(&t->holders, 0);
246 t->barriers_supported = 1;
247 244
248 if (!num_targets) 245 if (!num_targets)
249 num_targets = KEYS_PER_NODE; 246 num_targets = KEYS_PER_NODE;
@@ -751,10 +748,6 @@ int dm_table_add_target(struct dm_table *t, const char *type,
751 /* FIXME: the plan is to combine high here and then have 748 /* FIXME: the plan is to combine high here and then have
752 * the merge fn apply the target level restrictions. */ 749 * the merge fn apply the target level restrictions. */
753 combine_restrictions_low(&t->limits, &tgt->limits); 750 combine_restrictions_low(&t->limits, &tgt->limits);
754
755 if (!(tgt->type->features & DM_TARGET_SUPPORTS_BARRIERS))
756 t->barriers_supported = 0;
757
758 return 0; 751 return 0;
759 752
760 bad: 753 bad:
@@ -799,12 +792,6 @@ int dm_table_complete(struct dm_table *t)
799 792
800 check_for_valid_limits(&t->limits); 793 check_for_valid_limits(&t->limits);
801 794
802 /*
803 * We only support barriers if there is exactly one underlying device.
804 */
805 if (!list_is_singular(&t->devices))
806 t->barriers_supported = 0;
807
808 /* how many indexes will the btree have ? */ 795 /* how many indexes will the btree have ? */
809 leaf_nodes = dm_div_up(t->num_targets, KEYS_PER_NODE); 796 leaf_nodes = dm_div_up(t->num_targets, KEYS_PER_NODE);
810 t->depth = 1 + int_log(leaf_nodes, CHILDREN_PER_NODE); 797 t->depth = 1 + int_log(leaf_nodes, CHILDREN_PER_NODE);
@@ -879,6 +866,45 @@ struct dm_target *dm_table_find_target(struct dm_table *t, sector_t sector)
879 return &t->targets[(KEYS_PER_NODE * n) + k]; 866 return &t->targets[(KEYS_PER_NODE * n) + k];
880} 867}
881 868
869/*
870 * Set the integrity profile for this device if all devices used have
871 * matching profiles.
872 */
873static void dm_table_set_integrity(struct dm_table *t)
874{
875 struct list_head *devices = dm_table_get_devices(t);
876 struct dm_dev_internal *prev = NULL, *dd = NULL;
877
878 if (!blk_get_integrity(dm_disk(t->md)))
879 return;
880
881 list_for_each_entry(dd, devices, list) {
882 if (prev &&
883 blk_integrity_compare(prev->dm_dev.bdev->bd_disk,
884 dd->dm_dev.bdev->bd_disk) < 0) {
885 DMWARN("%s: integrity not set: %s and %s mismatch",
886 dm_device_name(t->md),
887 prev->dm_dev.bdev->bd_disk->disk_name,
888 dd->dm_dev.bdev->bd_disk->disk_name);
889 goto no_integrity;
890 }
891 prev = dd;
892 }
893
894 if (!prev || !bdev_get_integrity(prev->dm_dev.bdev))
895 goto no_integrity;
896
897 blk_integrity_register(dm_disk(t->md),
898 bdev_get_integrity(prev->dm_dev.bdev));
899
900 return;
901
902no_integrity:
903 blk_integrity_register(dm_disk(t->md), NULL);
904
905 return;
906}
907
882void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q) 908void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q)
883{ 909{
884 /* 910 /*
@@ -899,6 +925,7 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q)
899 else 925 else
900 queue_flag_set_unlocked(QUEUE_FLAG_CLUSTER, q); 926 queue_flag_set_unlocked(QUEUE_FLAG_CLUSTER, q);
901 927
928 dm_table_set_integrity(t);
902} 929}
903 930
904unsigned int dm_table_get_num_targets(struct dm_table *t) 931unsigned int dm_table_get_num_targets(struct dm_table *t)
@@ -1019,12 +1046,6 @@ struct mapped_device *dm_table_get_md(struct dm_table *t)
1019 return t->md; 1046 return t->md;
1020} 1047}
1021 1048
1022int dm_table_barrier_ok(struct dm_table *t)
1023{
1024 return t->barriers_supported;
1025}
1026EXPORT_SYMBOL(dm_table_barrier_ok);
1027
1028EXPORT_SYMBOL(dm_vcalloc); 1049EXPORT_SYMBOL(dm_vcalloc);
1029EXPORT_SYMBOL(dm_get_device); 1050EXPORT_SYMBOL(dm_get_device);
1030EXPORT_SYMBOL(dm_put_device); 1051EXPORT_SYMBOL(dm_put_device);
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 788ba96a6256..8a994be035ba 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -89,12 +89,13 @@ union map_info *dm_get_mapinfo(struct bio *bio)
89/* 89/*
90 * Bits for the md->flags field. 90 * Bits for the md->flags field.
91 */ 91 */
92#define DMF_BLOCK_IO 0 92#define DMF_BLOCK_IO_FOR_SUSPEND 0
93#define DMF_SUSPENDED 1 93#define DMF_SUSPENDED 1
94#define DMF_FROZEN 2 94#define DMF_FROZEN 2
95#define DMF_FREEING 3 95#define DMF_FREEING 3
96#define DMF_DELETING 4 96#define DMF_DELETING 4
97#define DMF_NOFLUSH_SUSPENDING 5 97#define DMF_NOFLUSH_SUSPENDING 5
98#define DMF_QUEUE_IO_TO_THREAD 6
98 99
99/* 100/*
100 * Work processed by per-device workqueue. 101 * Work processed by per-device workqueue.
@@ -124,6 +125,11 @@ struct mapped_device {
124 spinlock_t deferred_lock; 125 spinlock_t deferred_lock;
125 126
126 /* 127 /*
128 * An error from the barrier request currently being processed.
129 */
130 int barrier_error;
131
132 /*
127 * Processing queue (flush/barriers) 133 * Processing queue (flush/barriers)
128 */ 134 */
129 struct workqueue_struct *wq; 135 struct workqueue_struct *wq;
@@ -424,6 +430,10 @@ static void end_io_acct(struct dm_io *io)
424 part_stat_add(cpu, &dm_disk(md)->part0, ticks[rw], duration); 430 part_stat_add(cpu, &dm_disk(md)->part0, ticks[rw], duration);
425 part_stat_unlock(); 431 part_stat_unlock();
426 432
433 /*
434 * After this is decremented the bio must not be touched if it is
435 * a barrier.
436 */
427 dm_disk(md)->part0.in_flight = pending = 437 dm_disk(md)->part0.in_flight = pending =
428 atomic_dec_return(&md->pending); 438 atomic_dec_return(&md->pending);
429 439
@@ -435,21 +445,18 @@ static void end_io_acct(struct dm_io *io)
435/* 445/*
436 * Add the bio to the list of deferred io. 446 * Add the bio to the list of deferred io.
437 */ 447 */
438static int queue_io(struct mapped_device *md, struct bio *bio) 448static void queue_io(struct mapped_device *md, struct bio *bio)
439{ 449{
440 down_write(&md->io_lock); 450 down_write(&md->io_lock);
441 451
442 if (!test_bit(DMF_BLOCK_IO, &md->flags)) {
443 up_write(&md->io_lock);
444 return 1;
445 }
446
447 spin_lock_irq(&md->deferred_lock); 452 spin_lock_irq(&md->deferred_lock);
448 bio_list_add(&md->deferred, bio); 453 bio_list_add(&md->deferred, bio);
449 spin_unlock_irq(&md->deferred_lock); 454 spin_unlock_irq(&md->deferred_lock);
450 455
456 if (!test_and_set_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags))
457 queue_work(md->wq, &md->work);
458
451 up_write(&md->io_lock); 459 up_write(&md->io_lock);
452 return 0; /* deferred successfully */
453} 460}
454 461
455/* 462/*
@@ -533,25 +540,35 @@ static void dec_pending(struct dm_io *io, int error)
533 */ 540 */
534 spin_lock_irqsave(&md->deferred_lock, flags); 541 spin_lock_irqsave(&md->deferred_lock, flags);
535 if (__noflush_suspending(md)) 542 if (__noflush_suspending(md))
536 bio_list_add(&md->deferred, io->bio); 543 bio_list_add_head(&md->deferred, io->bio);
537 else 544 else
538 /* noflush suspend was interrupted. */ 545 /* noflush suspend was interrupted. */
539 io->error = -EIO; 546 io->error = -EIO;
540 spin_unlock_irqrestore(&md->deferred_lock, flags); 547 spin_unlock_irqrestore(&md->deferred_lock, flags);
541 } 548 }
542 549
543 end_io_acct(io);
544
545 io_error = io->error; 550 io_error = io->error;
546 bio = io->bio; 551 bio = io->bio;
547 552
548 free_io(md, io); 553 if (bio_barrier(bio)) {
554 /*
555 * There can be just one barrier request so we use
556 * a per-device variable for error reporting.
557 * Note that you can't touch the bio after end_io_acct
558 */
559 md->barrier_error = io_error;
560 end_io_acct(io);
561 } else {
562 end_io_acct(io);
549 563
550 if (io_error != DM_ENDIO_REQUEUE) { 564 if (io_error != DM_ENDIO_REQUEUE) {
551 trace_block_bio_complete(md->queue, bio); 565 trace_block_bio_complete(md->queue, bio);
552 566
553 bio_endio(bio, io_error); 567 bio_endio(bio, io_error);
568 }
554 } 569 }
570
571 free_io(md, io);
555 } 572 }
556} 573}
557 574
@@ -693,13 +710,19 @@ static struct bio *split_bvec(struct bio *bio, sector_t sector,
693 710
694 clone->bi_sector = sector; 711 clone->bi_sector = sector;
695 clone->bi_bdev = bio->bi_bdev; 712 clone->bi_bdev = bio->bi_bdev;
696 clone->bi_rw = bio->bi_rw; 713 clone->bi_rw = bio->bi_rw & ~(1 << BIO_RW_BARRIER);
697 clone->bi_vcnt = 1; 714 clone->bi_vcnt = 1;
698 clone->bi_size = to_bytes(len); 715 clone->bi_size = to_bytes(len);
699 clone->bi_io_vec->bv_offset = offset; 716 clone->bi_io_vec->bv_offset = offset;
700 clone->bi_io_vec->bv_len = clone->bi_size; 717 clone->bi_io_vec->bv_len = clone->bi_size;
701 clone->bi_flags |= 1 << BIO_CLONED; 718 clone->bi_flags |= 1 << BIO_CLONED;
702 719
720 if (bio_integrity(bio)) {
721 bio_integrity_clone(clone, bio, GFP_NOIO);
722 bio_integrity_trim(clone,
723 bio_sector_offset(bio, idx, offset), len);
724 }
725
703 return clone; 726 return clone;
704} 727}
705 728
@@ -714,6 +737,7 @@ static struct bio *clone_bio(struct bio *bio, sector_t sector,
714 737
715 clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs); 738 clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs);
716 __bio_clone(clone, bio); 739 __bio_clone(clone, bio);
740 clone->bi_rw &= ~(1 << BIO_RW_BARRIER);
717 clone->bi_destructor = dm_bio_destructor; 741 clone->bi_destructor = dm_bio_destructor;
718 clone->bi_sector = sector; 742 clone->bi_sector = sector;
719 clone->bi_idx = idx; 743 clone->bi_idx = idx;
@@ -721,6 +745,14 @@ static struct bio *clone_bio(struct bio *bio, sector_t sector,
721 clone->bi_size = to_bytes(len); 745 clone->bi_size = to_bytes(len);
722 clone->bi_flags &= ~(1 << BIO_SEG_VALID); 746 clone->bi_flags &= ~(1 << BIO_SEG_VALID);
723 747
748 if (bio_integrity(bio)) {
749 bio_integrity_clone(clone, bio, GFP_NOIO);
750
751 if (idx != bio->bi_idx || clone->bi_size < bio->bi_size)
752 bio_integrity_trim(clone,
753 bio_sector_offset(bio, idx, 0), len);
754 }
755
724 return clone; 756 return clone;
725} 757}
726 758
@@ -834,14 +866,13 @@ static void __split_and_process_bio(struct mapped_device *md, struct bio *bio)
834 866
835 ci.map = dm_get_table(md); 867 ci.map = dm_get_table(md);
836 if (unlikely(!ci.map)) { 868 if (unlikely(!ci.map)) {
837 bio_io_error(bio); 869 if (!bio_barrier(bio))
838 return; 870 bio_io_error(bio);
839 } 871 else
840 if (unlikely(bio_barrier(bio) && !dm_table_barrier_ok(ci.map))) { 872 md->barrier_error = -EIO;
841 dm_table_put(ci.map);
842 bio_endio(bio, -EOPNOTSUPP);
843 return; 873 return;
844 } 874 }
875
845 ci.md = md; 876 ci.md = md;
846 ci.bio = bio; 877 ci.bio = bio;
847 ci.io = alloc_io(md); 878 ci.io = alloc_io(md);
@@ -918,7 +949,6 @@ out:
918 */ 949 */
919static int dm_request(struct request_queue *q, struct bio *bio) 950static int dm_request(struct request_queue *q, struct bio *bio)
920{ 951{
921 int r = -EIO;
922 int rw = bio_data_dir(bio); 952 int rw = bio_data_dir(bio);
923 struct mapped_device *md = q->queuedata; 953 struct mapped_device *md = q->queuedata;
924 int cpu; 954 int cpu;
@@ -931,34 +961,27 @@ static int dm_request(struct request_queue *q, struct bio *bio)
931 part_stat_unlock(); 961 part_stat_unlock();
932 962
933 /* 963 /*
934 * If we're suspended we have to queue 964 * If we're suspended or the thread is processing barriers
935 * this io for later. 965 * we have to queue this io for later.
936 */ 966 */
937 while (test_bit(DMF_BLOCK_IO, &md->flags)) { 967 if (unlikely(test_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags)) ||
968 unlikely(bio_barrier(bio))) {
938 up_read(&md->io_lock); 969 up_read(&md->io_lock);
939 970
940 if (bio_rw(bio) != READA) 971 if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) &&
941 r = queue_io(md, bio); 972 bio_rw(bio) == READA) {
973 bio_io_error(bio);
974 return 0;
975 }
942 976
943 if (r <= 0) 977 queue_io(md, bio);
944 goto out_req;
945 978
946 /* 979 return 0;
947 * We're in a while loop, because someone could suspend
948 * before we get to the following read lock.
949 */
950 down_read(&md->io_lock);
951 } 980 }
952 981
953 __split_and_process_bio(md, bio); 982 __split_and_process_bio(md, bio);
954 up_read(&md->io_lock); 983 up_read(&md->io_lock);
955 return 0; 984 return 0;
956
957out_req:
958 if (r < 0)
959 bio_io_error(bio);
960
961 return 0;
962} 985}
963 986
964static void dm_unplug_all(struct request_queue *q) 987static void dm_unplug_all(struct request_queue *q)
@@ -978,7 +1001,7 @@ static int dm_any_congested(void *congested_data, int bdi_bits)
978 struct mapped_device *md = congested_data; 1001 struct mapped_device *md = congested_data;
979 struct dm_table *map; 1002 struct dm_table *map;
980 1003
981 if (!test_bit(DMF_BLOCK_IO, &md->flags)) { 1004 if (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
982 map = dm_get_table(md); 1005 map = dm_get_table(md);
983 if (map) { 1006 if (map) {
984 r = dm_table_any_congested(map, bdi_bits); 1007 r = dm_table_any_congested(map, bdi_bits);
@@ -1193,6 +1216,7 @@ static void free_dev(struct mapped_device *md)
1193 mempool_destroy(md->tio_pool); 1216 mempool_destroy(md->tio_pool);
1194 mempool_destroy(md->io_pool); 1217 mempool_destroy(md->io_pool);
1195 bioset_free(md->bs); 1218 bioset_free(md->bs);
1219 blk_integrity_unregister(md->disk);
1196 del_gendisk(md->disk); 1220 del_gendisk(md->disk);
1197 free_minor(minor); 1221 free_minor(minor);
1198 1222
@@ -1406,6 +1430,36 @@ static int dm_wait_for_completion(struct mapped_device *md, int interruptible)
1406 return r; 1430 return r;
1407} 1431}
1408 1432
1433static int dm_flush(struct mapped_device *md)
1434{
1435 dm_wait_for_completion(md, TASK_UNINTERRUPTIBLE);
1436 return 0;
1437}
1438
1439static void process_barrier(struct mapped_device *md, struct bio *bio)
1440{
1441 int error = dm_flush(md);
1442
1443 if (unlikely(error)) {
1444 bio_endio(bio, error);
1445 return;
1446 }
1447 if (bio_empty_barrier(bio)) {
1448 bio_endio(bio, 0);
1449 return;
1450 }
1451
1452 __split_and_process_bio(md, bio);
1453
1454 error = dm_flush(md);
1455
1456 if (!error && md->barrier_error)
1457 error = md->barrier_error;
1458
1459 if (md->barrier_error != DM_ENDIO_REQUEUE)
1460 bio_endio(bio, error);
1461}
1462
1409/* 1463/*
1410 * Process the deferred bios 1464 * Process the deferred bios
1411 */ 1465 */
@@ -1417,25 +1471,34 @@ static void dm_wq_work(struct work_struct *work)
1417 1471
1418 down_write(&md->io_lock); 1472 down_write(&md->io_lock);
1419 1473
1420next_bio: 1474 while (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
1421 spin_lock_irq(&md->deferred_lock); 1475 spin_lock_irq(&md->deferred_lock);
1422 c = bio_list_pop(&md->deferred); 1476 c = bio_list_pop(&md->deferred);
1423 spin_unlock_irq(&md->deferred_lock); 1477 spin_unlock_irq(&md->deferred_lock);
1424 1478
1425 if (c) { 1479 if (!c) {
1426 __split_and_process_bio(md, c); 1480 clear_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags);
1427 goto next_bio; 1481 break;
1428 } 1482 }
1429 1483
1430 clear_bit(DMF_BLOCK_IO, &md->flags); 1484 up_write(&md->io_lock);
1485
1486 if (bio_barrier(c))
1487 process_barrier(md, c);
1488 else
1489 __split_and_process_bio(md, c);
1490
1491 down_write(&md->io_lock);
1492 }
1431 1493
1432 up_write(&md->io_lock); 1494 up_write(&md->io_lock);
1433} 1495}
1434 1496
1435static void dm_queue_flush(struct mapped_device *md) 1497static void dm_queue_flush(struct mapped_device *md)
1436{ 1498{
1499 clear_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
1500 smp_mb__after_clear_bit();
1437 queue_work(md->wq, &md->work); 1501 queue_work(md->wq, &md->work);
1438 flush_workqueue(md->wq);
1439} 1502}
1440 1503
1441/* 1504/*
@@ -1553,20 +1616,36 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
1553 } 1616 }
1554 1617
1555 /* 1618 /*
1556 * First we set the BLOCK_IO flag so no more ios will be mapped. 1619 * Here we must make sure that no processes are submitting requests
1620 * to target drivers i.e. no one may be executing
1621 * __split_and_process_bio. This is called from dm_request and
1622 * dm_wq_work.
1623 *
1624 * To get all processes out of __split_and_process_bio in dm_request,
1625 * we take the write lock. To prevent any process from reentering
1626 * __split_and_process_bio from dm_request, we set
1627 * DMF_QUEUE_IO_TO_THREAD.
1628 *
1629 * To quiesce the thread (dm_wq_work), we set DMF_BLOCK_IO_FOR_SUSPEND
1630 * and call flush_workqueue(md->wq). flush_workqueue will wait until
1631 * dm_wq_work exits and DMF_BLOCK_IO_FOR_SUSPEND will prevent any
1632 * further calls to __split_and_process_bio from dm_wq_work.
1557 */ 1633 */
1558 down_write(&md->io_lock); 1634 down_write(&md->io_lock);
1559 set_bit(DMF_BLOCK_IO, &md->flags); 1635 set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
1560 1636 set_bit(DMF_QUEUE_IO_TO_THREAD, &md->flags);
1561 up_write(&md->io_lock); 1637 up_write(&md->io_lock);
1562 1638
1639 flush_workqueue(md->wq);
1640
1563 /* 1641 /*
1564 * Wait for the already-mapped ios to complete. 1642 * At this point no more requests are entering target request routines.
1643 * We call dm_wait_for_completion to wait for all existing requests
1644 * to finish.
1565 */ 1645 */
1566 r = dm_wait_for_completion(md, TASK_INTERRUPTIBLE); 1646 r = dm_wait_for_completion(md, TASK_INTERRUPTIBLE);
1567 1647
1568 down_write(&md->io_lock); 1648 down_write(&md->io_lock);
1569
1570 if (noflush) 1649 if (noflush)
1571 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); 1650 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
1572 up_write(&md->io_lock); 1651 up_write(&md->io_lock);
@@ -1579,6 +1658,12 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
1579 goto out; /* pushback list is already flushed, so skip flush */ 1658 goto out; /* pushback list is already flushed, so skip flush */
1580 } 1659 }
1581 1660
1661 /*
1662 * If dm_wait_for_completion returned 0, the device is completely
1663 * quiescent now. There is no request-processing activity. All new
1664 * requests are being added to md->deferred list.
1665 */
1666
1582 dm_table_postsuspend_targets(map); 1667 dm_table_postsuspend_targets(map);
1583 1668
1584 set_bit(DMF_SUSPENDED, &md->flags); 1669 set_bit(DMF_SUSPENDED, &md->flags);
diff --git a/drivers/md/dm.h b/drivers/md/dm.h
index b48397c0abbd..a31506d93e91 100644
--- a/drivers/md/dm.h
+++ b/drivers/md/dm.h
@@ -52,7 +52,6 @@ int dm_table_any_congested(struct dm_table *t, int bdi_bits);
52 * To check the return value from dm_table_find_target(). 52 * To check the return value from dm_table_find_target().
53 */ 53 */
54#define dm_target_is_valid(t) ((t)->table) 54#define dm_target_is_valid(t) ((t)->table)
55int dm_table_barrier_ok(struct dm_table *t);
56 55
57/*----------------------------------------------------------------- 56/*-----------------------------------------------------------------
58 * A registry of target types. 57 * A registry of target types.
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig
index 772990415f99..68eb4493f991 100644
--- a/drivers/media/dvb/ttpci/Kconfig
+++ b/drivers/media/dvb/ttpci/Kconfig
@@ -28,25 +28,12 @@ config DVB_AV7110
28 download/extract it, and then copy it to /usr/lib/hotplug/firmware 28 download/extract it, and then copy it to /usr/lib/hotplug/firmware
29 or /lib/firmware (depending on configuration of firmware hotplug). 29 or /lib/firmware (depending on configuration of firmware hotplug).
30 30
31 Say Y if you own such a card and want to use it. 31 Alternatively, you can download the file and use the kernel's
32 32 EXTRA_FIRMWARE configuration option to build it into your
33config DVB_AV7110_FIRMWARE 33 kernel image by adding the filename to the EXTRA_FIRMWARE
34 bool "Compile AV7110 firmware into the driver" 34 configuration option string.
35 depends on DVB_AV7110 && !STANDALONE
36 default y if DVB_AV7110=y
37 help
38 The AV7110 firmware is normally loaded by the firmware hotplug manager.
39 If you want to compile the firmware into the driver you need to say
40 Y here and provide the correct path of the firmware. You need this
41 option if you want to compile the whole driver statically into the
42 kernel.
43 35
44 All other people say N. 36 Say Y if you own such a card and want to use it.
45
46config DVB_AV7110_FIRMWARE_FILE
47 string "Full pathname of av7110 firmware file"
48 depends on DVB_AV7110_FIRMWARE
49 default "/usr/lib/hotplug/firmware/dvb-ttpci-01.fw"
50 37
51config DVB_AV7110_OSD 38config DVB_AV7110_OSD
52 bool "AV7110 OSD support" 39 bool "AV7110 OSD support"
diff --git a/drivers/media/dvb/ttpci/Makefile b/drivers/media/dvb/ttpci/Makefile
index 71451237294c..8a4d5bb20a5b 100644
--- a/drivers/media/dvb/ttpci/Makefile
+++ b/drivers/media/dvb/ttpci/Makefile
@@ -19,12 +19,3 @@ obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o
19 19
20EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ 20EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
21EXTRA_CFLAGS += -Idrivers/media/common/tuners 21EXTRA_CFLAGS += -Idrivers/media/common/tuners
22
23hostprogs-y := fdump
24
25ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
26$(obj)/av7110.o: $(obj)/av7110_firm.h
27
28$(obj)/av7110_firm.h: $(obj)/fdump
29 $(obj)/fdump $(CONFIG_DVB_AV7110_FIRMWARE_FILE) dvb_ttpci_fw $@
30endif
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index 4624cee93e74..d1d959ed37b7 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -1518,20 +1518,6 @@ static int check_firmware(struct av7110* av7110)
1518 return 0; 1518 return 0;
1519} 1519}
1520 1520
1521#ifdef CONFIG_DVB_AV7110_FIRMWARE_FILE
1522#include "av7110_firm.h"
1523static void put_firmware(struct av7110* av7110)
1524{
1525 av7110->bin_fw = NULL;
1526}
1527
1528static inline int get_firmware(struct av7110* av7110)
1529{
1530 av7110->bin_fw = dvb_ttpci_fw;
1531 av7110->size_fw = sizeof(dvb_ttpci_fw);
1532 return check_firmware(av7110);
1533}
1534#else
1535static void put_firmware(struct av7110* av7110) 1521static void put_firmware(struct av7110* av7110)
1536{ 1522{
1537 vfree(av7110->bin_fw); 1523 vfree(av7110->bin_fw);
@@ -1580,8 +1566,6 @@ static int get_firmware(struct av7110* av7110)
1580 release_firmware(fw); 1566 release_firmware(fw);
1581 return ret; 1567 return ret;
1582} 1568}
1583#endif
1584
1585 1569
1586static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1570static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1587{ 1571{
diff --git a/drivers/media/dvb/ttpci/av7110_hw.c b/drivers/media/dvb/ttpci/av7110_hw.c
index 3a3f5279e927..5e3f88911a1d 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.c
+++ b/drivers/media/dvb/ttpci/av7110_hw.c
@@ -198,29 +198,10 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
198 198
199/* we cannot write av7110 DRAM directly, so load a bootloader into 199/* we cannot write av7110 DRAM directly, so load a bootloader into
200 * the DPRAM which implements a simple boot protocol */ 200 * the DPRAM which implements a simple boot protocol */
201static u8 bootcode[] = {
202 0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, 0xe2, 0x5e, 0xf0, 0x04,
203 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04,
204 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, 0x2c, 0x00, 0x00, 0x24,
205 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34,
206 0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, 0x00, 0x1f, 0x15, 0x55,
207 0x00, 0x00, 0x00, 0x09, 0xe5, 0x9f, 0xd0, 0x7c, 0xe5, 0x9f, 0x40, 0x74,
208 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x04,
209 0xe5, 0x9f, 0x10, 0x70, 0xe5, 0x9f, 0x20, 0x70, 0xe5, 0x9f, 0x30, 0x64,
210 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe1, 0x51, 0x00, 0x02,
211 0xda, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xd4, 0x10, 0xb0,
212 0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, 0xe1, 0xa0, 0x10, 0x0d,
213 0xe5, 0x94, 0x30, 0x04, 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f,
214 0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, 0xe1, 0xc4, 0x00, 0xb0,
215 0x0a, 0xff, 0xff, 0xf4, 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0,
216 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe2, 0x52, 0x20, 0x01,
217 0x1a, 0xff, 0xff, 0xf9, 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec,
218 0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x08, 0x00,
219 0x2c, 0x00, 0x00, 0x74, 0x2c, 0x00, 0x00, 0xc0
220};
221
222int av7110_bootarm(struct av7110 *av7110) 201int av7110_bootarm(struct av7110 *av7110)
223{ 202{
203 const struct firmware *fw;
204 const char *fw_name = "av7110/bootcode.bin";
224 struct saa7146_dev *dev = av7110->dev; 205 struct saa7146_dev *dev = av7110->dev;
225 u32 ret; 206 u32 ret;
226 int i; 207 int i;
@@ -261,7 +242,15 @@ int av7110_bootarm(struct av7110 *av7110)
261 //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT); 242 //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT);
262 //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT); 243 //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
263 244
264 mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode)); 245 ret = request_firmware(&fw, fw_name, &dev->pci->dev);
246 if (ret) {
247 printk(KERN_ERR "dvb-ttpci: Failed to load firmware \"%s\"\n",
248 fw_name);
249 return ret;
250 }
251
252 mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size);
253 release_firmware(fw);
265 iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); 254 iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
266 255
267 if (saa7146_wait_for_debi_done(av7110->dev, 1)) { 256 if (saa7146_wait_for_debi_done(av7110->dev, 1)) {
@@ -302,7 +291,7 @@ int av7110_bootarm(struct av7110 *av7110)
302 av7110->arm_ready = 1; 291 av7110->arm_ready = 1;
303 return 0; 292 return 0;
304} 293}
305 294MODULE_FIRMWARE("av7110/bootcode.bin");
306 295
307/**************************************************************************** 296/****************************************************************************
308 * DEBI command polling 297 * DEBI command polling
diff --git a/drivers/media/dvb/ttpci/av7110_hw.h b/drivers/media/dvb/ttpci/av7110_hw.h
index ca99e5c1fc8a..1634aba5cb84 100644
--- a/drivers/media/dvb/ttpci/av7110_hw.h
+++ b/drivers/media/dvb/ttpci/av7110_hw.h
@@ -390,7 +390,8 @@ static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val,
390} 390}
391 391
392/* buffer writes */ 392/* buffer writes */
393static inline void mwdebi(struct av7110 *av7110, u32 config, int addr, u8 *val, int count) 393static inline void mwdebi(struct av7110 *av7110, u32 config, int addr,
394 const u8 *val, int count)
394{ 395{
395 memcpy(av7110->debi_virt, val, count); 396 memcpy(av7110->debi_virt, val, count);
396 av7110_debiwrite(av7110, config, addr, 0, count); 397 av7110_debiwrite(av7110, config, addr, 0, count);
diff --git a/drivers/media/dvb/ttpci/fdump.c b/drivers/media/dvb/ttpci/fdump.c
deleted file mode 100644
index c90001d35e7d..000000000000
--- a/drivers/media/dvb/ttpci/fdump.c
+++ /dev/null
@@ -1,44 +0,0 @@
1#include <stdio.h>
2#include <sys/types.h>
3#include <sys/stat.h>
4#include <fcntl.h>
5#include <unistd.h>
6
7int main(int argc, char **argv)
8{
9 unsigned char buf[8];
10 unsigned int i, count, bytes = 0;
11 FILE *fd_in, *fd_out;
12
13 if (argc != 4) {
14 fprintf(stderr, "\n\tusage: %s <ucode.bin> <array_name> <output_name>\n\n", argv[0]);
15 return -1;
16 }
17
18 fd_in = fopen(argv[1], "rb");
19 if (fd_in == NULL) {
20 fprintf(stderr, "firmware file '%s' not found\n", argv[1]);
21 return -1;
22 }
23
24 fd_out = fopen(argv[3], "w+");
25 if (fd_out == NULL) {
26 fprintf(stderr, "cannot create output file '%s'\n", argv[3]);
27 return -1;
28 }
29
30 fprintf(fd_out, "\n#include <asm/types.h>\n\nu8 %s [] = {", argv[2]);
31
32 while ((count = fread(buf, 1, 8, fd_in)) > 0) {
33 fprintf(fd_out, "\n\t");
34 for (i = 0; i < count; i++, bytes++)
35 fprintf(fd_out, "0x%02x, ", buf[i]);
36 }
37
38 fprintf(fd_out, "\n};\n\n");
39
40 fclose(fd_in);
41 fclose(fd_out);
42
43 return 0;
44}
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index c232d11a7ed4..06084dbf1277 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -208,7 +208,7 @@ static int mmc_read_ext_csd(struct mmc_card *card)
208 } 208 }
209 209
210 ext_csd_struct = ext_csd[EXT_CSD_REV]; 210 ext_csd_struct = ext_csd[EXT_CSD_REV];
211 if (ext_csd_struct > 2) { 211 if (ext_csd_struct > 3) {
212 printk(KERN_ERR "%s: unrecognised EXT_CSD structure " 212 printk(KERN_ERR "%s: unrecognised EXT_CSD structure "
213 "version %d\n", mmc_hostname(card->host), 213 "version %d\n", mmc_hostname(card->host),
214 ext_csd_struct); 214 ext_csd_struct);
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 26fc098d77cd..cd81c395e164 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -363,15 +363,6 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
363 goto err; 363 goto err;
364 364
365 /* 365 /*
366 * For SPI, enable CRC as appropriate.
367 */
368 if (mmc_host_is_spi(host)) {
369 err = mmc_spi_set_crc(host, use_spi_crc);
370 if (err)
371 goto err;
372 }
373
374 /*
375 * Fetch CID from card. 366 * Fetch CID from card.
376 */ 367 */
377 if (mmc_host_is_spi(host)) 368 if (mmc_host_is_spi(host))
@@ -458,6 +449,18 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
458 } 449 }
459 450
460 /* 451 /*
452 * For SPI, enable CRC as appropriate.
453 * This CRC enable is located AFTER the reading of the
454 * card registers because some SDHC cards are not able
455 * to provide valid CRCs for non-512-byte blocks.
456 */
457 if (mmc_host_is_spi(host)) {
458 err = mmc_spi_set_crc(host, use_spi_crc);
459 if (err)
460 goto free_card;
461 }
462
463 /*
461 * Attempt to change to high-speed (if supported) 464 * Attempt to change to high-speed (if supported)
462 */ 465 */
463 err = mmc_switch_hs(card); 466 err = mmc_switch_hs(card);
diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c
index eb29b1d933ac..e0be21a4a696 100644
--- a/drivers/mmc/host/imxmmc.c
+++ b/drivers/mmc/host/imxmmc.c
@@ -307,13 +307,6 @@ static void imxmci_setup_data(struct imxmci_host *host, struct mmc_data *data)
307 307
308 wmb(); 308 wmb();
309 309
310 if (host->actual_bus_width == MMC_BUS_WIDTH_4)
311 BLR(host->dma) = 0; /* burst 64 byte read / 64 bytes write */
312 else
313 BLR(host->dma) = 16; /* burst 16 byte read / 16 bytes write */
314
315 RSSR(host->dma) = DMA_REQ_SDHC;
316
317 set_bit(IMXMCI_PEND_DMA_DATA_b, &host->pending_events); 310 set_bit(IMXMCI_PEND_DMA_DATA_b, &host->pending_events);
318 clear_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events); 311 clear_bit(IMXMCI_PEND_CPU_DATA_b, &host->pending_events);
319 312
@@ -818,9 +811,11 @@ static void imxmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
818 if (ios->bus_width == MMC_BUS_WIDTH_4) { 811 if (ios->bus_width == MMC_BUS_WIDTH_4) {
819 host->actual_bus_width = MMC_BUS_WIDTH_4; 812 host->actual_bus_width = MMC_BUS_WIDTH_4;
820 imx_gpio_mode(PB11_PF_SD_DAT3); 813 imx_gpio_mode(PB11_PF_SD_DAT3);
814 BLR(host->dma) = 0; /* burst 64 byte read/write */
821 } else { 815 } else {
822 host->actual_bus_width = MMC_BUS_WIDTH_1; 816 host->actual_bus_width = MMC_BUS_WIDTH_1;
823 imx_gpio_mode(GPIO_PORTB | GPIO_IN | GPIO_PUEN | 11); 817 imx_gpio_mode(GPIO_PORTB | GPIO_IN | GPIO_PUEN | 11);
818 BLR(host->dma) = 16; /* burst 16 byte read/write */
824 } 819 }
825 820
826 if (host->power_mode != ios->power_mode) { 821 if (host->power_mode != ios->power_mode) {
@@ -938,7 +933,7 @@ static void imxmci_check_status(unsigned long data)
938 mod_timer(&host->timer, jiffies + (HZ>>1)); 933 mod_timer(&host->timer, jiffies + (HZ>>1));
939} 934}
940 935
941static int imxmci_probe(struct platform_device *pdev) 936static int __init imxmci_probe(struct platform_device *pdev)
942{ 937{
943 struct mmc_host *mmc; 938 struct mmc_host *mmc;
944 struct imxmci_host *host = NULL; 939 struct imxmci_host *host = NULL;
@@ -1034,6 +1029,7 @@ static int imxmci_probe(struct platform_device *pdev)
1034 } 1029 }
1035 host->dma_allocated = 1; 1030 host->dma_allocated = 1;
1036 imx_dma_setup_handlers(host->dma, imxmci_dma_irq, NULL, host); 1031 imx_dma_setup_handlers(host->dma, imxmci_dma_irq, NULL, host);
1032 RSSR(host->dma) = DMA_REQ_SDHC;
1037 1033
1038 tasklet_init(&host->tasklet, imxmci_tasklet_fnc, (unsigned long)host); 1034 tasklet_init(&host->tasklet, imxmci_tasklet_fnc, (unsigned long)host);
1039 host->status_reg=0; 1035 host->status_reg=0;
@@ -1079,7 +1075,7 @@ out:
1079 return ret; 1075 return ret;
1080} 1076}
1081 1077
1082static int imxmci_remove(struct platform_device *pdev) 1078static int __exit imxmci_remove(struct platform_device *pdev)
1083{ 1079{
1084 struct mmc_host *mmc = platform_get_drvdata(pdev); 1080 struct mmc_host *mmc = platform_get_drvdata(pdev);
1085 1081
@@ -1145,8 +1141,7 @@ static int imxmci_resume(struct platform_device *dev)
1145#endif /* CONFIG_PM */ 1141#endif /* CONFIG_PM */
1146 1142
1147static struct platform_driver imxmci_driver = { 1143static struct platform_driver imxmci_driver = {
1148 .probe = imxmci_probe, 1144 .remove = __exit_p(imxmci_remove),
1149 .remove = imxmci_remove,
1150 .suspend = imxmci_suspend, 1145 .suspend = imxmci_suspend,
1151 .resume = imxmci_resume, 1146 .resume = imxmci_resume,
1152 .driver = { 1147 .driver = {
@@ -1157,7 +1152,7 @@ static struct platform_driver imxmci_driver = {
1157 1152
1158static int __init imxmci_init(void) 1153static int __init imxmci_init(void)
1159{ 1154{
1160 return platform_driver_register(&imxmci_driver); 1155 return platform_driver_probe(&imxmci_driver, imxmci_probe);
1161} 1156}
1162 1157
1163static void __exit imxmci_exit(void) 1158static void __exit imxmci_exit(void)
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 72f8bde4877a..f48349d18c92 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -24,7 +24,7 @@
24 * along with this program; if not, write to the Free Software 24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 */ 26 */
27#include <linux/hrtimer.h> 27#include <linux/sched.h>
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/bio.h> 29#include <linux/bio.h>
30#include <linux/dma-mapping.h> 30#include <linux/dma-mapping.h>
@@ -95,7 +95,7 @@
95 * reads which takes nowhere near that long. Older cards may be able to use 95 * reads which takes nowhere near that long. Older cards may be able to use
96 * shorter timeouts ... but why bother? 96 * shorter timeouts ... but why bother?
97 */ 97 */
98#define r1b_timeout ktime_set(3, 0) 98#define r1b_timeout (HZ * 3)
99 99
100 100
101/****************************************************************************/ 101/****************************************************************************/
@@ -183,12 +183,11 @@ mmc_spi_readbytes(struct mmc_spi_host *host, unsigned len)
183 return status; 183 return status;
184} 184}
185 185
186static int 186static int mmc_spi_skip(struct mmc_spi_host *host, unsigned long timeout,
187mmc_spi_skip(struct mmc_spi_host *host, ktime_t timeout, unsigned n, u8 byte) 187 unsigned n, u8 byte)
188{ 188{
189 u8 *cp = host->data->status; 189 u8 *cp = host->data->status;
190 190 unsigned long start = jiffies;
191 timeout = ktime_add(timeout, ktime_get());
192 191
193 while (1) { 192 while (1) {
194 int status; 193 int status;
@@ -203,22 +202,26 @@ mmc_spi_skip(struct mmc_spi_host *host, ktime_t timeout, unsigned n, u8 byte)
203 return cp[i]; 202 return cp[i];
204 } 203 }
205 204
206 /* REVISIT investigate msleep() to avoid busy-wait I/O 205 if (time_is_before_jiffies(start + timeout))
207 * in at least some cases.
208 */
209 if (ktime_to_ns(ktime_sub(ktime_get(), timeout)) > 0)
210 break; 206 break;
207
208 /* If we need long timeouts, we may release the CPU.
209 * We use jiffies here because we want to have a relation
210 * between elapsed time and the blocking of the scheduler.
211 */
212 if (time_is_before_jiffies(start+1))
213 schedule();
211 } 214 }
212 return -ETIMEDOUT; 215 return -ETIMEDOUT;
213} 216}
214 217
215static inline int 218static inline int
216mmc_spi_wait_unbusy(struct mmc_spi_host *host, ktime_t timeout) 219mmc_spi_wait_unbusy(struct mmc_spi_host *host, unsigned long timeout)
217{ 220{
218 return mmc_spi_skip(host, timeout, sizeof(host->data->status), 0); 221 return mmc_spi_skip(host, timeout, sizeof(host->data->status), 0);
219} 222}
220 223
221static int mmc_spi_readtoken(struct mmc_spi_host *host, ktime_t timeout) 224static int mmc_spi_readtoken(struct mmc_spi_host *host, unsigned long timeout)
222{ 225{
223 return mmc_spi_skip(host, timeout, 1, 0xff); 226 return mmc_spi_skip(host, timeout, 1, 0xff);
224} 227}
@@ -251,6 +254,10 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
251 u8 *cp = host->data->status; 254 u8 *cp = host->data->status;
252 u8 *end = cp + host->t.len; 255 u8 *end = cp + host->t.len;
253 int value = 0; 256 int value = 0;
257 int bitshift;
258 u8 leftover = 0;
259 unsigned short rotator;
260 int i;
254 char tag[32]; 261 char tag[32];
255 262
256 snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s", 263 snprintf(tag, sizeof(tag), " ... CMD%d response SPI_%s",
@@ -268,9 +275,8 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
268 275
269 /* Data block reads (R1 response types) may need more data... */ 276 /* Data block reads (R1 response types) may need more data... */
270 if (cp == end) { 277 if (cp == end) {
271 unsigned i;
272
273 cp = host->data->status; 278 cp = host->data->status;
279 end = cp+1;
274 280
275 /* Card sends N(CR) (== 1..8) bytes of all-ones then one 281 /* Card sends N(CR) (== 1..8) bytes of all-ones then one
276 * status byte ... and we already scanned 2 bytes. 282 * status byte ... and we already scanned 2 bytes.
@@ -295,20 +301,34 @@ static int mmc_spi_response_get(struct mmc_spi_host *host,
295 } 301 }
296 302
297checkstatus: 303checkstatus:
298 if (*cp & 0x80) { 304 bitshift = 0;
299 dev_dbg(&host->spi->dev, "%s: INVALID RESPONSE, %02x\n", 305 if (*cp & 0x80) {
300 tag, *cp); 306 /* Houston, we have an ugly card with a bit-shifted response */
301 value = -EBADR; 307 rotator = *cp++ << 8;
302 goto done; 308 /* read the next byte */
309 if (cp == end) {
310 value = mmc_spi_readbytes(host, 1);
311 if (value < 0)
312 goto done;
313 cp = host->data->status;
314 end = cp+1;
315 }
316 rotator |= *cp++;
317 while (rotator & 0x8000) {
318 bitshift++;
319 rotator <<= 1;
320 }
321 cmd->resp[0] = rotator >> 8;
322 leftover = rotator;
323 } else {
324 cmd->resp[0] = *cp++;
303 } 325 }
304
305 cmd->resp[0] = *cp++;
306 cmd->error = 0; 326 cmd->error = 0;
307 327
308 /* Status byte: the entire seven-bit R1 response. */ 328 /* Status byte: the entire seven-bit R1 response. */
309 if (cmd->resp[0] != 0) { 329 if (cmd->resp[0] != 0) {
310 if ((R1_SPI_PARAMETER | R1_SPI_ADDRESS 330 if ((R1_SPI_PARAMETER | R1_SPI_ADDRESS
311 | R1_SPI_ILLEGAL_COMMAND) 331 | R1_SPI_ILLEGAL_COMMAND)
312 & cmd->resp[0]) 332 & cmd->resp[0])
313 value = -EINVAL; 333 value = -EINVAL;
314 else if (R1_SPI_COM_CRC & cmd->resp[0]) 334 else if (R1_SPI_COM_CRC & cmd->resp[0])
@@ -336,12 +356,45 @@ checkstatus:
336 * SPI R5 == R1 + data byte; IO_RW_DIRECT 356 * SPI R5 == R1 + data byte; IO_RW_DIRECT
337 */ 357 */
338 case MMC_RSP_SPI_R2: 358 case MMC_RSP_SPI_R2:
339 cmd->resp[0] |= *cp << 8; 359 /* read the next byte */
360 if (cp == end) {
361 value = mmc_spi_readbytes(host, 1);
362 if (value < 0)
363 goto done;
364 cp = host->data->status;
365 end = cp+1;
366 }
367 if (bitshift) {
368 rotator = leftover << 8;
369 rotator |= *cp << bitshift;
370 cmd->resp[0] |= (rotator & 0xFF00);
371 } else {
372 cmd->resp[0] |= *cp << 8;
373 }
340 break; 374 break;
341 375
342 /* SPI R3, R4, or R7 == R1 + 4 bytes */ 376 /* SPI R3, R4, or R7 == R1 + 4 bytes */
343 case MMC_RSP_SPI_R3: 377 case MMC_RSP_SPI_R3:
344 cmd->resp[1] = get_unaligned_be32(cp); 378 rotator = leftover << 8;
379 cmd->resp[1] = 0;
380 for (i = 0; i < 4; i++) {
381 cmd->resp[1] <<= 8;
382 /* read the next byte */
383 if (cp == end) {
384 value = mmc_spi_readbytes(host, 1);
385 if (value < 0)
386 goto done;
387 cp = host->data->status;
388 end = cp+1;
389 }
390 if (bitshift) {
391 rotator |= *cp++ << bitshift;
392 cmd->resp[1] |= (rotator >> 8);
393 rotator <<= 8;
394 } else {
395 cmd->resp[1] |= *cp++;
396 }
397 }
345 break; 398 break;
346 399
347 /* SPI R1 == just one status byte */ 400 /* SPI R1 == just one status byte */
@@ -607,7 +660,7 @@ mmc_spi_setup_data_message(
607 */ 660 */
608static int 661static int
609mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t, 662mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t,
610 ktime_t timeout) 663 unsigned long timeout)
611{ 664{
612 struct spi_device *spi = host->spi; 665 struct spi_device *spi = host->spi;
613 int status, i; 666 int status, i;
@@ -717,11 +770,13 @@ mmc_spi_writeblock(struct mmc_spi_host *host, struct spi_transfer *t,
717 */ 770 */
718static int 771static int
719mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t, 772mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t,
720 ktime_t timeout) 773 unsigned long timeout)
721{ 774{
722 struct spi_device *spi = host->spi; 775 struct spi_device *spi = host->spi;
723 int status; 776 int status;
724 struct scratch *scratch = host->data; 777 struct scratch *scratch = host->data;
778 unsigned int bitshift;
779 u8 leftover;
725 780
726 /* At least one SD card sends an all-zeroes byte when N(CX) 781 /* At least one SD card sends an all-zeroes byte when N(CX)
727 * applies, before the all-ones bytes ... just cope with that. 782 * applies, before the all-ones bytes ... just cope with that.
@@ -733,38 +788,60 @@ mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t,
733 if (status == 0xff || status == 0) 788 if (status == 0xff || status == 0)
734 status = mmc_spi_readtoken(host, timeout); 789 status = mmc_spi_readtoken(host, timeout);
735 790
736 if (status == SPI_TOKEN_SINGLE) { 791 if (status < 0) {
737 if (host->dma_dev) { 792 dev_dbg(&spi->dev, "read error %02x (%d)\n", status, status);
738 dma_sync_single_for_device(host->dma_dev, 793 return status;
739 host->data_dma, sizeof(*scratch), 794 }
740 DMA_BIDIRECTIONAL);
741 dma_sync_single_for_device(host->dma_dev,
742 t->rx_dma, t->len,
743 DMA_FROM_DEVICE);
744 }
745 795
746 status = spi_sync(spi, &host->m); 796 /* The token may be bit-shifted...
797 * the first 0-bit precedes the data stream.
798 */
799 bitshift = 7;
800 while (status & 0x80) {
801 status <<= 1;
802 bitshift--;
803 }
804 leftover = status << 1;
747 805
748 if (host->dma_dev) { 806 if (host->dma_dev) {
749 dma_sync_single_for_cpu(host->dma_dev, 807 dma_sync_single_for_device(host->dma_dev,
750 host->data_dma, sizeof(*scratch), 808 host->data_dma, sizeof(*scratch),
751 DMA_BIDIRECTIONAL); 809 DMA_BIDIRECTIONAL);
752 dma_sync_single_for_cpu(host->dma_dev, 810 dma_sync_single_for_device(host->dma_dev,
753 t->rx_dma, t->len, 811 t->rx_dma, t->len,
754 DMA_FROM_DEVICE); 812 DMA_FROM_DEVICE);
755 } 813 }
756 814
757 } else { 815 status = spi_sync(spi, &host->m);
758 dev_dbg(&spi->dev, "read error %02x (%d)\n", status, status);
759 816
760 /* we've read extra garbage, timed out, etc */ 817 if (host->dma_dev) {
761 if (status < 0) 818 dma_sync_single_for_cpu(host->dma_dev,
762 return status; 819 host->data_dma, sizeof(*scratch),
820 DMA_BIDIRECTIONAL);
821 dma_sync_single_for_cpu(host->dma_dev,
822 t->rx_dma, t->len,
823 DMA_FROM_DEVICE);
824 }
763 825
764 /* low four bits are an R2 subset, fifth seems to be 826 if (bitshift) {
765 * vendor specific ... map them all to generic error.. 827 /* Walk through the data and the crc and do
828 * all the magic to get byte-aligned data.
766 */ 829 */
767 return -EIO; 830 u8 *cp = t->rx_buf;
831 unsigned int len;
832 unsigned int bitright = 8 - bitshift;
833 u8 temp;
834 for (len = t->len; len; len--) {
835 temp = *cp;
836 *cp++ = leftover | (temp >> bitshift);
837 leftover = temp << bitright;
838 }
839 cp = (u8 *) &scratch->crc_val;
840 temp = *cp;
841 *cp++ = leftover | (temp >> bitshift);
842 leftover = temp << bitright;
843 temp = *cp;
844 *cp = leftover | (temp >> bitshift);
768 } 845 }
769 846
770 if (host->mmc->use_spi_crc) { 847 if (host->mmc->use_spi_crc) {
@@ -803,7 +880,7 @@ mmc_spi_data_do(struct mmc_spi_host *host, struct mmc_command *cmd,
803 unsigned n_sg; 880 unsigned n_sg;
804 int multiple = (data->blocks > 1); 881 int multiple = (data->blocks > 1);
805 u32 clock_rate; 882 u32 clock_rate;
806 ktime_t timeout; 883 unsigned long timeout;
807 884
808 if (data->flags & MMC_DATA_READ) 885 if (data->flags & MMC_DATA_READ)
809 direction = DMA_FROM_DEVICE; 886 direction = DMA_FROM_DEVICE;
@@ -817,8 +894,9 @@ mmc_spi_data_do(struct mmc_spi_host *host, struct mmc_command *cmd,
817 else 894 else
818 clock_rate = spi->max_speed_hz; 895 clock_rate = spi->max_speed_hz;
819 896
820 timeout = ktime_add_ns(ktime_set(0, 0), data->timeout_ns + 897 timeout = data->timeout_ns +
821 data->timeout_clks * 1000000 / clock_rate); 898 data->timeout_clks * 1000000 / clock_rate;
899 timeout = usecs_to_jiffies((unsigned int)(timeout / 1000)) + 1;
822 900
823 /* Handle scatterlist segments one at a time, with synch for 901 /* Handle scatterlist segments one at a time, with synch for
824 * each 512-byte block 902 * each 512-byte block
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index d183be6f2a5f..e62a22a7f00c 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -298,7 +298,6 @@ mmc_omap_xfer_done(struct mmc_omap_host *host, struct mmc_data *data)
298 struct mmc_request *mrq = host->mrq; 298 struct mmc_request *mrq = host->mrq;
299 299
300 host->mrq = NULL; 300 host->mrq = NULL;
301 mmc_omap_fclk_lazy_disable(host);
302 mmc_request_done(host->mmc, mrq); 301 mmc_request_done(host->mmc, mrq);
303 return; 302 return;
304 } 303 }
@@ -434,6 +433,8 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id)
434 if (host->mrq == NULL) { 433 if (host->mrq == NULL) {
435 OMAP_HSMMC_WRITE(host->base, STAT, 434 OMAP_HSMMC_WRITE(host->base, STAT,
436 OMAP_HSMMC_READ(host->base, STAT)); 435 OMAP_HSMMC_READ(host->base, STAT));
436 /* Flush posted write */
437 OMAP_HSMMC_READ(host->base, STAT);
437 return IRQ_HANDLED; 438 return IRQ_HANDLED;
438 } 439 }
439 440
@@ -489,8 +490,10 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id)
489 } 490 }
490 491
491 OMAP_HSMMC_WRITE(host->base, STAT, status); 492 OMAP_HSMMC_WRITE(host->base, STAT, status);
493 /* Flush posted write */
494 OMAP_HSMMC_READ(host->base, STAT);
492 495
493 if (end_cmd || (status & CC)) 496 if (end_cmd || ((status & CC) && host->cmd))
494 mmc_omap_cmd_done(host, host->cmd); 497 mmc_omap_cmd_done(host, host->cmd);
495 if (end_trans || (status & TC)) 498 if (end_trans || (status & TC))
496 mmc_omap_xfer_done(host, data); 499 mmc_omap_xfer_done(host, data);
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index c5b316e22371..cd37962ec44f 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -729,6 +729,6 @@ static void __exit sdhci_drv_exit(void)
729module_init(sdhci_drv_init); 729module_init(sdhci_drv_init);
730module_exit(sdhci_drv_exit); 730module_exit(sdhci_drv_exit);
731 731
732MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 732MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
733MODULE_DESCRIPTION("Secure Digital Host Controller Interface PCI driver"); 733MODULE_DESCRIPTION("Secure Digital Host Controller Interface PCI driver");
734MODULE_LICENSE("GPL"); 734MODULE_LICENSE("GPL");
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 30d8e3d4e6fd..9234be2226e7 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1935,7 +1935,7 @@ module_exit(sdhci_drv_exit);
1935 1935
1936module_param(debug_quirks, uint, 0444); 1936module_param(debug_quirks, uint, 0444);
1937 1937
1938MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 1938MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
1939MODULE_DESCRIPTION("Secure Digital Host Controller Interface core driver"); 1939MODULE_DESCRIPTION("Secure Digital Host Controller Interface core driver");
1940MODULE_LICENSE("GPL"); 1940MODULE_LICENSE("GPL");
1941 1941
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index adda37952032..89bf8cd25cac 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -2036,7 +2036,7 @@ module_param_named(irq, param_irq, uint, 0444);
2036module_param_named(dma, param_dma, int, 0444); 2036module_param_named(dma, param_dma, int, 0444);
2037 2037
2038MODULE_LICENSE("GPL"); 2038MODULE_LICENSE("GPL");
2039MODULE_AUTHOR("Pierre Ossman <drzeus@drzeus.cx>"); 2039MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
2040MODULE_DESCRIPTION("Winbond W83L51xD SD/MMC card interface driver"); 2040MODULE_DESCRIPTION("Winbond W83L51xD SD/MMC card interface driver");
2041 2041
2042#ifdef CONFIG_PNP 2042#ifdef CONFIG_PNP
diff --git a/drivers/net/mlx4/port.c b/drivers/net/mlx4/port.c
index 7cce3342ef8c..606aa58afdea 100644
--- a/drivers/net/mlx4/port.c
+++ b/drivers/net/mlx4/port.c
@@ -299,13 +299,14 @@ int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
299 struct mlx4_cmd_mailbox *mailbox; 299 struct mlx4_cmd_mailbox *mailbox;
300 int err; 300 int err;
301 301
302 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
303 return 0;
304
302 mailbox = mlx4_alloc_cmd_mailbox(dev); 305 mailbox = mlx4_alloc_cmd_mailbox(dev);
303 if (IS_ERR(mailbox)) 306 if (IS_ERR(mailbox))
304 return PTR_ERR(mailbox); 307 return PTR_ERR(mailbox);
305 308
306 memset(mailbox->buf, 0, 256); 309 memset(mailbox->buf, 0, 256);
307 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
308 return 0;
309 310
310 ((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port]; 311 ((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port];
311 err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT, 312 err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT,
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index 912308eec865..329f890e2903 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -369,7 +369,7 @@ static inline void LPD7_SMC_outsw (unsigned char* a, int r,
369 * MN10300/AM33 configuration 369 * MN10300/AM33 configuration
370 */ 370 */
371 371
372#include <asm/unit/smc91111.h> 372#include <unit/smc91111.h>
373 373
374#else 374#else
375 375
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 25a00ce4f24d..fa3a11365ec3 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -173,12 +173,21 @@ dmar_parse_one_drhd(struct acpi_dmar_header *header)
173 struct dmar_drhd_unit *dmaru; 173 struct dmar_drhd_unit *dmaru;
174 int ret = 0; 174 int ret = 0;
175 175
176 drhd = (struct acpi_dmar_hardware_unit *)header;
177 if (!drhd->address) {
178 /* Promote an attitude of violence to a BIOS engineer today */
179 WARN(1, "Your BIOS is broken; DMAR reported at address zero!\n"
180 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
181 dmi_get_system_info(DMI_BIOS_VENDOR),
182 dmi_get_system_info(DMI_BIOS_VERSION),
183 dmi_get_system_info(DMI_PRODUCT_VERSION));
184 return -ENODEV;
185 }
176 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL); 186 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL);
177 if (!dmaru) 187 if (!dmaru)
178 return -ENOMEM; 188 return -ENOMEM;
179 189
180 dmaru->hdr = header; 190 dmaru->hdr = header;
181 drhd = (struct acpi_dmar_hardware_unit *)header;
182 dmaru->reg_base_addr = drhd->address; 191 dmaru->reg_base_addr = drhd->address;
183 dmaru->segment = drhd->segment; 192 dmaru->segment = drhd->segment;
184 dmaru->include_all = drhd->flags & 0x1; /* BIT0: INCLUDE_ALL */ 193 dmaru->include_all = drhd->flags & 0x1; /* BIT0: INCLUDE_ALL */
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index fb3a3f3fca7a..001b328adf80 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -733,8 +733,8 @@ static void dma_pte_clear_range(struct dmar_domain *domain, u64 start, u64 end)
733 start &= (((u64)1) << addr_width) - 1; 733 start &= (((u64)1) << addr_width) - 1;
734 end &= (((u64)1) << addr_width) - 1; 734 end &= (((u64)1) << addr_width) - 1;
735 /* in case it's partial page */ 735 /* in case it's partial page */
736 start = PAGE_ALIGN(start); 736 start &= PAGE_MASK;
737 end &= PAGE_MASK; 737 end = PAGE_ALIGN(end);
738 npages = (end - start) / VTD_PAGE_SIZE; 738 npages = (end - start) / VTD_PAGE_SIZE;
739 739
740 /* we don't need lock here, nobody else touches the iova range */ 740 /* we don't need lock here, nobody else touches the iova range */
diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
index 45940f31fe9e..218b9a16ac3f 100644
--- a/drivers/platform/x86/fujitsu-laptop.c
+++ b/drivers/platform/x86/fujitsu-laptop.c
@@ -174,8 +174,7 @@ struct fujitsu_hotkey_t {
174 174
175static struct fujitsu_hotkey_t *fujitsu_hotkey; 175static struct fujitsu_hotkey_t *fujitsu_hotkey;
176 176
177static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event, 177static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event);
178 void *data);
179 178
180#ifdef CONFIG_LEDS_CLASS 179#ifdef CONFIG_LEDS_CLASS
181static enum led_brightness logolamp_get(struct led_classdev *cdev); 180static enum led_brightness logolamp_get(struct led_classdev *cdev);
@@ -203,7 +202,7 @@ struct led_classdev kblamps_led = {
203static u32 dbg_level = 0x03; 202static u32 dbg_level = 0x03;
204#endif 203#endif
205 204
206static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data); 205static void acpi_fujitsu_notify(struct acpi_device *device, u32 event);
207 206
208/* Fujitsu ACPI interface function */ 207/* Fujitsu ACPI interface function */
209 208
@@ -658,7 +657,6 @@ static struct dmi_system_id fujitsu_dmi_table[] = {
658 657
659static int acpi_fujitsu_add(struct acpi_device *device) 658static int acpi_fujitsu_add(struct acpi_device *device)
660{ 659{
661 acpi_status status;
662 acpi_handle handle; 660 acpi_handle handle;
663 int result = 0; 661 int result = 0;
664 int state = 0; 662 int state = 0;
@@ -673,20 +671,10 @@ static int acpi_fujitsu_add(struct acpi_device *device)
673 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS); 671 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
674 device->driver_data = fujitsu; 672 device->driver_data = fujitsu;
675 673
676 status = acpi_install_notify_handler(device->handle,
677 ACPI_DEVICE_NOTIFY,
678 acpi_fujitsu_notify, fujitsu);
679
680 if (ACPI_FAILURE(status)) {
681 printk(KERN_ERR "Error installing notify handler\n");
682 error = -ENODEV;
683 goto err_stop;
684 }
685
686 fujitsu->input = input = input_allocate_device(); 674 fujitsu->input = input = input_allocate_device();
687 if (!input) { 675 if (!input) {
688 error = -ENOMEM; 676 error = -ENOMEM;
689 goto err_uninstall_notify; 677 goto err_stop;
690 } 678 }
691 679
692 snprintf(fujitsu->phys, sizeof(fujitsu->phys), 680 snprintf(fujitsu->phys, sizeof(fujitsu->phys),
@@ -743,9 +731,6 @@ static int acpi_fujitsu_add(struct acpi_device *device)
743end: 731end:
744err_free_input_dev: 732err_free_input_dev:
745 input_free_device(input); 733 input_free_device(input);
746err_uninstall_notify:
747 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
748 acpi_fujitsu_notify);
749err_stop: 734err_stop:
750 735
751 return result; 736 return result;
@@ -753,7 +738,6 @@ err_stop:
753 738
754static int acpi_fujitsu_remove(struct acpi_device *device, int type) 739static int acpi_fujitsu_remove(struct acpi_device *device, int type)
755{ 740{
756 acpi_status status;
757 struct fujitsu_t *fujitsu = NULL; 741 struct fujitsu_t *fujitsu = NULL;
758 742
759 if (!device || !acpi_driver_data(device)) 743 if (!device || !acpi_driver_data(device))
@@ -761,10 +745,6 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type)
761 745
762 fujitsu = acpi_driver_data(device); 746 fujitsu = acpi_driver_data(device);
763 747
764 status = acpi_remove_notify_handler(fujitsu->acpi_handle,
765 ACPI_DEVICE_NOTIFY,
766 acpi_fujitsu_notify);
767
768 if (!device || !acpi_driver_data(device)) 748 if (!device || !acpi_driver_data(device))
769 return -EINVAL; 749 return -EINVAL;
770 750
@@ -775,7 +755,7 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type)
775 755
776/* Brightness notify */ 756/* Brightness notify */
777 757
778static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data) 758static void acpi_fujitsu_notify(struct acpi_device *device, u32 event)
779{ 759{
780 struct input_dev *input; 760 struct input_dev *input;
781 int keycode; 761 int keycode;
@@ -829,15 +809,12 @@ static void acpi_fujitsu_notify(acpi_handle handle, u32 event, void *data)
829 input_report_key(input, keycode, 0); 809 input_report_key(input, keycode, 0);
830 input_sync(input); 810 input_sync(input);
831 } 811 }
832
833 return;
834} 812}
835 813
836/* ACPI device for hotkey handling */ 814/* ACPI device for hotkey handling */
837 815
838static int acpi_fujitsu_hotkey_add(struct acpi_device *device) 816static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
839{ 817{
840 acpi_status status;
841 acpi_handle handle; 818 acpi_handle handle;
842 int result = 0; 819 int result = 0;
843 int state = 0; 820 int state = 0;
@@ -854,17 +831,6 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
854 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS); 831 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
855 device->driver_data = fujitsu_hotkey; 832 device->driver_data = fujitsu_hotkey;
856 833
857 status = acpi_install_notify_handler(device->handle,
858 ACPI_DEVICE_NOTIFY,
859 acpi_fujitsu_hotkey_notify,
860 fujitsu_hotkey);
861
862 if (ACPI_FAILURE(status)) {
863 printk(KERN_ERR "Error installing notify handler\n");
864 error = -ENODEV;
865 goto err_stop;
866 }
867
868 /* kfifo */ 834 /* kfifo */
869 spin_lock_init(&fujitsu_hotkey->fifo_lock); 835 spin_lock_init(&fujitsu_hotkey->fifo_lock);
870 fujitsu_hotkey->fifo = 836 fujitsu_hotkey->fifo =
@@ -879,7 +845,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
879 fujitsu_hotkey->input = input = input_allocate_device(); 845 fujitsu_hotkey->input = input = input_allocate_device();
880 if (!input) { 846 if (!input) {
881 error = -ENOMEM; 847 error = -ENOMEM;
882 goto err_uninstall_notify; 848 goto err_free_fifo;
883 } 849 }
884 850
885 snprintf(fujitsu_hotkey->phys, sizeof(fujitsu_hotkey->phys), 851 snprintf(fujitsu_hotkey->phys, sizeof(fujitsu_hotkey->phys),
@@ -975,9 +941,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
975end: 941end:
976err_free_input_dev: 942err_free_input_dev:
977 input_free_device(input); 943 input_free_device(input);
978err_uninstall_notify: 944err_free_fifo:
979 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
980 acpi_fujitsu_hotkey_notify);
981 kfifo_free(fujitsu_hotkey->fifo); 945 kfifo_free(fujitsu_hotkey->fifo);
982err_stop: 946err_stop:
983 947
@@ -986,7 +950,6 @@ err_stop:
986 950
987static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type) 951static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
988{ 952{
989 acpi_status status;
990 struct fujitsu_hotkey_t *fujitsu_hotkey = NULL; 953 struct fujitsu_hotkey_t *fujitsu_hotkey = NULL;
991 954
992 if (!device || !acpi_driver_data(device)) 955 if (!device || !acpi_driver_data(device))
@@ -994,10 +957,6 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
994 957
995 fujitsu_hotkey = acpi_driver_data(device); 958 fujitsu_hotkey = acpi_driver_data(device);
996 959
997 status = acpi_remove_notify_handler(fujitsu_hotkey->acpi_handle,
998 ACPI_DEVICE_NOTIFY,
999 acpi_fujitsu_hotkey_notify);
1000
1001 fujitsu_hotkey->acpi_handle = NULL; 960 fujitsu_hotkey->acpi_handle = NULL;
1002 961
1003 kfifo_free(fujitsu_hotkey->fifo); 962 kfifo_free(fujitsu_hotkey->fifo);
@@ -1005,8 +964,7 @@ static int acpi_fujitsu_hotkey_remove(struct acpi_device *device, int type)
1005 return 0; 964 return 0;
1006} 965}
1007 966
1008static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event, 967static void acpi_fujitsu_hotkey_notify(struct acpi_device *device, u32 event)
1009 void *data)
1010{ 968{
1011 struct input_dev *input; 969 struct input_dev *input;
1012 int keycode, keycode_r; 970 int keycode, keycode_r;
@@ -1089,8 +1047,6 @@ static void acpi_fujitsu_hotkey_notify(acpi_handle handle, u32 event,
1089 input_sync(input); 1047 input_sync(input);
1090 break; 1048 break;
1091 } 1049 }
1092
1093 return;
1094} 1050}
1095 1051
1096/* Initialization */ 1052/* Initialization */
@@ -1107,6 +1063,7 @@ static struct acpi_driver acpi_fujitsu_driver = {
1107 .ops = { 1063 .ops = {
1108 .add = acpi_fujitsu_add, 1064 .add = acpi_fujitsu_add,
1109 .remove = acpi_fujitsu_remove, 1065 .remove = acpi_fujitsu_remove,
1066 .notify = acpi_fujitsu_notify,
1110 }, 1067 },
1111}; 1068};
1112 1069
@@ -1122,6 +1079,7 @@ static struct acpi_driver acpi_fujitsu_hotkey_driver = {
1122 .ops = { 1079 .ops = {
1123 .add = acpi_fujitsu_hotkey_add, 1080 .add = acpi_fujitsu_hotkey_add,
1124 .remove = acpi_fujitsu_hotkey_remove, 1081 .remove = acpi_fujitsu_hotkey_remove,
1082 .notify = acpi_fujitsu_hotkey_notify,
1125 }, 1083 },
1126}; 1084};
1127 1085
diff --git a/drivers/platform/x86/panasonic-laptop.c b/drivers/platform/x86/panasonic-laptop.c
index a5ce4bc202e3..fe7cf0188acc 100644
--- a/drivers/platform/x86/panasonic-laptop.c
+++ b/drivers/platform/x86/panasonic-laptop.c
@@ -176,6 +176,7 @@ enum SINF_BITS { SINF_NUM_BATTERIES = 0,
176static int acpi_pcc_hotkey_add(struct acpi_device *device); 176static int acpi_pcc_hotkey_add(struct acpi_device *device);
177static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type); 177static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type);
178static int acpi_pcc_hotkey_resume(struct acpi_device *device); 178static int acpi_pcc_hotkey_resume(struct acpi_device *device);
179static void acpi_pcc_hotkey_notify(struct acpi_device *device, u32 event);
179 180
180static const struct acpi_device_id pcc_device_ids[] = { 181static const struct acpi_device_id pcc_device_ids[] = {
181 { "MAT0012", 0}, 182 { "MAT0012", 0},
@@ -194,6 +195,7 @@ static struct acpi_driver acpi_pcc_driver = {
194 .add = acpi_pcc_hotkey_add, 195 .add = acpi_pcc_hotkey_add,
195 .remove = acpi_pcc_hotkey_remove, 196 .remove = acpi_pcc_hotkey_remove,
196 .resume = acpi_pcc_hotkey_resume, 197 .resume = acpi_pcc_hotkey_resume,
198 .notify = acpi_pcc_hotkey_notify,
197 }, 199 },
198}; 200};
199 201
@@ -271,7 +273,7 @@ static int acpi_pcc_retrieve_biosdata(struct pcc_acpi *pcc, u32 *sinf)
271 union acpi_object *hkey = NULL; 273 union acpi_object *hkey = NULL;
272 int i; 274 int i;
273 275
274 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, 0, 276 status = acpi_evaluate_object(pcc->handle, METHOD_HKEY_SINF, NULL,
275 &buffer); 277 &buffer);
276 if (ACPI_FAILURE(status)) { 278 if (ACPI_FAILURE(status)) {
277 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 279 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
@@ -527,9 +529,9 @@ static void acpi_pcc_generate_keyinput(struct pcc_acpi *pcc)
527 return; 529 return;
528} 530}
529 531
530static void acpi_pcc_hotkey_notify(acpi_handle handle, u32 event, void *data) 532static void acpi_pcc_hotkey_notify(struct acpi_device *device, u32 event)
531{ 533{
532 struct pcc_acpi *pcc = (struct pcc_acpi *) data; 534 struct pcc_acpi *pcc = acpi_driver_data(device);
533 535
534 switch (event) { 536 switch (event) {
535 case HKEY_NOTIFY: 537 case HKEY_NOTIFY:
@@ -599,7 +601,6 @@ static int acpi_pcc_hotkey_resume(struct acpi_device *device)
599 601
600static int acpi_pcc_hotkey_add(struct acpi_device *device) 602static int acpi_pcc_hotkey_add(struct acpi_device *device)
601{ 603{
602 acpi_status status;
603 struct pcc_acpi *pcc; 604 struct pcc_acpi *pcc;
604 int num_sifr, result; 605 int num_sifr, result;
605 606
@@ -640,22 +641,11 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
640 goto out_sinf; 641 goto out_sinf;
641 } 642 }
642 643
643 /* initialize hotkey input device */
644 status = acpi_install_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
645 acpi_pcc_hotkey_notify, pcc);
646
647 if (ACPI_FAILURE(status)) {
648 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
649 "Error installing notify handler\n"));
650 result = -ENODEV;
651 goto out_input;
652 }
653
654 /* initialize backlight */ 644 /* initialize backlight */
655 pcc->backlight = backlight_device_register("panasonic", NULL, pcc, 645 pcc->backlight = backlight_device_register("panasonic", NULL, pcc,
656 &pcc_backlight_ops); 646 &pcc_backlight_ops);
657 if (IS_ERR(pcc->backlight)) 647 if (IS_ERR(pcc->backlight))
658 goto out_notify; 648 goto out_input;
659 649
660 if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) { 650 if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
661 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 651 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
@@ -680,9 +670,6 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
680 670
681out_backlight: 671out_backlight:
682 backlight_device_unregister(pcc->backlight); 672 backlight_device_unregister(pcc->backlight);
683out_notify:
684 acpi_remove_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
685 acpi_pcc_hotkey_notify);
686out_input: 673out_input:
687 input_unregister_device(pcc->input_dev); 674 input_unregister_device(pcc->input_dev);
688 /* no need to input_free_device() since core input API refcount and 675 /* no need to input_free_device() since core input API refcount and
@@ -723,9 +710,6 @@ static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type)
723 710
724 backlight_device_unregister(pcc->backlight); 711 backlight_device_unregister(pcc->backlight);
725 712
726 acpi_remove_notify_handler(pcc->handle, ACPI_DEVICE_NOTIFY,
727 acpi_pcc_hotkey_notify);
728
729 input_unregister_device(pcc->input_dev); 713 input_unregister_device(pcc->input_dev);
730 /* no need to input_free_device() since core input API refcount and 714 /* no need to input_free_device() since core input API refcount and
731 * free()s the device */ 715 * free()s the device */
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
index a90ec5cb2f20..d3c92d777bde 100644
--- a/drivers/platform/x86/sony-laptop.c
+++ b/drivers/platform/x86/sony-laptop.c
@@ -914,7 +914,7 @@ static struct sony_nc_event sony_127_events[] = {
914/* 914/*
915 * ACPI callbacks 915 * ACPI callbacks
916 */ 916 */
917static void sony_acpi_notify(acpi_handle handle, u32 event, void *data) 917static void sony_nc_notify(struct acpi_device *device, u32 event)
918{ 918{
919 u32 ev = event; 919 u32 ev = event;
920 920
@@ -933,7 +933,7 @@ static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
933 struct sony_nc_event *key_event; 933 struct sony_nc_event *key_event;
934 934
935 if (sony_call_snc_handle(key_handle, 0x200, &result)) { 935 if (sony_call_snc_handle(key_handle, 0x200, &result)) {
936 dprintk("sony_acpi_notify, unable to decode" 936 dprintk("sony_nc_notify, unable to decode"
937 " event 0x%.2x 0x%.2x\n", key_handle, 937 " event 0x%.2x 0x%.2x\n", key_handle,
938 ev); 938 ev);
939 /* restore the original event */ 939 /* restore the original event */
@@ -968,7 +968,7 @@ static void sony_acpi_notify(acpi_handle handle, u32 event, void *data)
968 } else 968 } else
969 sony_laptop_report_input_event(ev); 969 sony_laptop_report_input_event(ev);
970 970
971 dprintk("sony_acpi_notify, event: 0x%.2x\n", ev); 971 dprintk("sony_nc_notify, event: 0x%.2x\n", ev);
972 acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev); 972 acpi_bus_generate_proc_event(sony_nc_acpi_device, 1, ev);
973} 973}
974 974
@@ -1276,15 +1276,6 @@ static int sony_nc_add(struct acpi_device *device)
1276 goto outwalk; 1276 goto outwalk;
1277 } 1277 }
1278 1278
1279 status = acpi_install_notify_handler(sony_nc_acpi_handle,
1280 ACPI_DEVICE_NOTIFY,
1281 sony_acpi_notify, NULL);
1282 if (ACPI_FAILURE(status)) {
1283 printk(KERN_WARNING DRV_PFX "unable to install notify handler (%u)\n", status);
1284 result = -ENODEV;
1285 goto outinput;
1286 }
1287
1288 if (acpi_video_backlight_support()) { 1279 if (acpi_video_backlight_support()) {
1289 printk(KERN_INFO DRV_PFX "brightness ignored, must be " 1280 printk(KERN_INFO DRV_PFX "brightness ignored, must be "
1290 "controlled by ACPI video driver\n"); 1281 "controlled by ACPI video driver\n");
@@ -1362,13 +1353,6 @@ static int sony_nc_add(struct acpi_device *device)
1362 if (sony_backlight_device) 1353 if (sony_backlight_device)
1363 backlight_device_unregister(sony_backlight_device); 1354 backlight_device_unregister(sony_backlight_device);
1364 1355
1365 status = acpi_remove_notify_handler(sony_nc_acpi_handle,
1366 ACPI_DEVICE_NOTIFY,
1367 sony_acpi_notify);
1368 if (ACPI_FAILURE(status))
1369 printk(KERN_WARNING DRV_PFX "unable to remove notify handler\n");
1370
1371 outinput:
1372 sony_laptop_remove_input(); 1356 sony_laptop_remove_input();
1373 1357
1374 outwalk: 1358 outwalk:
@@ -1378,7 +1362,6 @@ static int sony_nc_add(struct acpi_device *device)
1378 1362
1379static int sony_nc_remove(struct acpi_device *device, int type) 1363static int sony_nc_remove(struct acpi_device *device, int type)
1380{ 1364{
1381 acpi_status status;
1382 struct sony_nc_value *item; 1365 struct sony_nc_value *item;
1383 1366
1384 if (sony_backlight_device) 1367 if (sony_backlight_device)
@@ -1386,12 +1369,6 @@ static int sony_nc_remove(struct acpi_device *device, int type)
1386 1369
1387 sony_nc_acpi_device = NULL; 1370 sony_nc_acpi_device = NULL;
1388 1371
1389 status = acpi_remove_notify_handler(sony_nc_acpi_handle,
1390 ACPI_DEVICE_NOTIFY,
1391 sony_acpi_notify);
1392 if (ACPI_FAILURE(status))
1393 printk(KERN_WARNING DRV_PFX "unable to remove notify handler\n");
1394
1395 for (item = sony_nc_values; item->name; ++item) { 1372 for (item = sony_nc_values; item->name; ++item) {
1396 device_remove_file(&sony_pf_device->dev, &item->devattr); 1373 device_remove_file(&sony_pf_device->dev, &item->devattr);
1397 } 1374 }
@@ -1425,6 +1402,7 @@ static struct acpi_driver sony_nc_driver = {
1425 .add = sony_nc_add, 1402 .add = sony_nc_add,
1426 .remove = sony_nc_remove, 1403 .remove = sony_nc_remove,
1427 .resume = sony_nc_resume, 1404 .resume = sony_nc_resume,
1405 .notify = sony_nc_notify,
1428 }, 1406 },
1429}; 1407};
1430 1408
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 2f269e117b8f..043b208d971d 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -81,6 +81,7 @@ static struct wmi_block wmi_blocks;
81 81
82static int acpi_wmi_remove(struct acpi_device *device, int type); 82static int acpi_wmi_remove(struct acpi_device *device, int type);
83static int acpi_wmi_add(struct acpi_device *device); 83static int acpi_wmi_add(struct acpi_device *device);
84static void acpi_wmi_notify(struct acpi_device *device, u32 event);
84 85
85static const struct acpi_device_id wmi_device_ids[] = { 86static const struct acpi_device_id wmi_device_ids[] = {
86 {"PNP0C14", 0}, 87 {"PNP0C14", 0},
@@ -96,6 +97,7 @@ static struct acpi_driver acpi_wmi_driver = {
96 .ops = { 97 .ops = {
97 .add = acpi_wmi_add, 98 .add = acpi_wmi_add,
98 .remove = acpi_wmi_remove, 99 .remove = acpi_wmi_remove,
100 .notify = acpi_wmi_notify,
99 }, 101 },
100}; 102};
101 103
@@ -643,12 +645,11 @@ acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address,
643 } 645 }
644} 646}
645 647
646static void acpi_wmi_notify(acpi_handle handle, u32 event, void *data) 648static void acpi_wmi_notify(struct acpi_device *device, u32 event)
647{ 649{
648 struct guid_block *block; 650 struct guid_block *block;
649 struct wmi_block *wblock; 651 struct wmi_block *wblock;
650 struct list_head *p; 652 struct list_head *p;
651 struct acpi_device *device = data;
652 653
653 list_for_each(p, &wmi_blocks.list) { 654 list_for_each(p, &wmi_blocks.list) {
654 wblock = list_entry(p, struct wmi_block, list); 655 wblock = list_entry(p, struct wmi_block, list);
@@ -669,9 +670,6 @@ static void acpi_wmi_notify(acpi_handle handle, u32 event, void *data)
669 670
670static int acpi_wmi_remove(struct acpi_device *device, int type) 671static int acpi_wmi_remove(struct acpi_device *device, int type)
671{ 672{
672 acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
673 acpi_wmi_notify);
674
675 acpi_remove_address_space_handler(device->handle, 673 acpi_remove_address_space_handler(device->handle,
676 ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler); 674 ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler);
677 675
@@ -683,13 +681,6 @@ static int __init acpi_wmi_add(struct acpi_device *device)
683 acpi_status status; 681 acpi_status status;
684 int result = 0; 682 int result = 0;
685 683
686 status = acpi_install_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
687 acpi_wmi_notify, device);
688 if (ACPI_FAILURE(status)) {
689 printk(KERN_ERR PREFIX "Error installing notify handler\n");
690 return -ENODEV;
691 }
692
693 status = acpi_install_address_space_handler(device->handle, 684 status = acpi_install_address_space_handler(device->handle,
694 ACPI_ADR_SPACE_EC, 685 ACPI_ADR_SPACE_EC,
695 &acpi_wmi_ec_space_handler, 686 &acpi_wmi_ec_space_handler,
diff --git a/drivers/power/pcf50633-charger.c b/drivers/power/pcf50633-charger.c
index 41aec2acbb91..e8b278f71781 100644
--- a/drivers/power/pcf50633-charger.c
+++ b/drivers/power/pcf50633-charger.c
@@ -36,6 +36,8 @@ struct pcf50633_mbc {
36 36
37 struct power_supply usb; 37 struct power_supply usb;
38 struct power_supply adapter; 38 struct power_supply adapter;
39
40 struct delayed_work charging_restart_work;
39}; 41};
40 42
41int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma) 43int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
@@ -43,6 +45,8 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
43 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev); 45 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev);
44 int ret = 0; 46 int ret = 0;
45 u8 bits; 47 u8 bits;
48 int charging_start = 1;
49 u8 mbcs2, chgmod;
46 50
47 if (ma >= 1000) 51 if (ma >= 1000)
48 bits = PCF50633_MBCC7_USB_1000mA; 52 bits = PCF50633_MBCC7_USB_1000mA;
@@ -50,8 +54,10 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
50 bits = PCF50633_MBCC7_USB_500mA; 54 bits = PCF50633_MBCC7_USB_500mA;
51 else if (ma >= 100) 55 else if (ma >= 100)
52 bits = PCF50633_MBCC7_USB_100mA; 56 bits = PCF50633_MBCC7_USB_100mA;
53 else 57 else {
54 bits = PCF50633_MBCC7_USB_SUSPEND; 58 bits = PCF50633_MBCC7_USB_SUSPEND;
59 charging_start = 0;
60 }
55 61
56 ret = pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC7, 62 ret = pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC7,
57 PCF50633_MBCC7_USB_MASK, bits); 63 PCF50633_MBCC7_USB_MASK, bits);
@@ -60,6 +66,22 @@ int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma)
60 else 66 else
61 dev_info(pcf->dev, "usb curlim to %d mA\n", ma); 67 dev_info(pcf->dev, "usb curlim to %d mA\n", ma);
62 68
69 /* Manual charging start */
70 mbcs2 = pcf50633_reg_read(pcf, PCF50633_REG_MBCS2);
71 chgmod = (mbcs2 & PCF50633_MBCS2_MBC_MASK);
72
73 /* If chgmod == BATFULL, setting chgena has no effect.
74 * We need to set resume instead.
75 */
76 if (chgmod != PCF50633_MBCS2_MBC_BAT_FULL)
77 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC1,
78 PCF50633_MBCC1_CHGENA, PCF50633_MBCC1_CHGENA);
79 else
80 pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_MBCC1,
81 PCF50633_MBCC1_RESUME, PCF50633_MBCC1_RESUME);
82
83 mbc->usb_active = charging_start;
84
63 power_supply_changed(&mbc->usb); 85 power_supply_changed(&mbc->usb);
64 86
65 return ret; 87 return ret;
@@ -84,21 +106,6 @@ int pcf50633_mbc_get_status(struct pcf50633 *pcf)
84} 106}
85EXPORT_SYMBOL_GPL(pcf50633_mbc_get_status); 107EXPORT_SYMBOL_GPL(pcf50633_mbc_get_status);
86 108
87void pcf50633_mbc_set_status(struct pcf50633 *pcf, int what, int status)
88{
89 struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev);
90
91 if (what & PCF50633_MBC_USB_ONLINE)
92 mbc->usb_online = !!status;
93 if (what & PCF50633_MBC_USB_ACTIVE)
94 mbc->usb_active = !!status;
95 if (what & PCF50633_MBC_ADAPTER_ONLINE)
96 mbc->adapter_online = !!status;
97 if (what & PCF50633_MBC_ADAPTER_ACTIVE)
98 mbc->adapter_active = !!status;
99}
100EXPORT_SYMBOL_GPL(pcf50633_mbc_set_status);
101
102static ssize_t 109static ssize_t
103show_chgmode(struct device *dev, struct device_attribute *attr, char *buf) 110show_chgmode(struct device *dev, struct device_attribute *attr, char *buf)
104{ 111{
@@ -160,10 +167,44 @@ static struct attribute_group mbc_attr_group = {
160 .attrs = pcf50633_mbc_sysfs_entries, 167 .attrs = pcf50633_mbc_sysfs_entries,
161}; 168};
162 169
170/* MBC state machine switches into charging mode when the battery voltage
171 * falls below 96% of a battery float voltage. But the voltage drop in Li-ion
172 * batteries is marginal(1~2 %) till about 80% of its capacity - which means,
173 * after a BATFULL, charging won't be restarted until 80%.
174 *
175 * This work_struct function restarts charging at regular intervals to make
176 * sure we don't discharge too much
177 */
178
179static void pcf50633_mbc_charging_restart(struct work_struct *work)
180{
181 struct pcf50633_mbc *mbc;
182 u8 mbcs2, chgmod;
183
184 mbc = container_of(work, struct pcf50633_mbc,
185 charging_restart_work.work);
186
187 mbcs2 = pcf50633_reg_read(mbc->pcf, PCF50633_REG_MBCS2);
188 chgmod = (mbcs2 & PCF50633_MBCS2_MBC_MASK);
189
190 if (chgmod != PCF50633_MBCS2_MBC_BAT_FULL)
191 return;
192
193 /* Restart charging */
194 pcf50633_reg_set_bit_mask(mbc->pcf, PCF50633_REG_MBCC1,
195 PCF50633_MBCC1_RESUME, PCF50633_MBCC1_RESUME);
196 mbc->usb_active = 1;
197 power_supply_changed(&mbc->usb);
198
199 dev_info(mbc->pcf->dev, "Charging restarted\n");
200}
201
163static void 202static void
164pcf50633_mbc_irq_handler(int irq, void *data) 203pcf50633_mbc_irq_handler(int irq, void *data)
165{ 204{
166 struct pcf50633_mbc *mbc = data; 205 struct pcf50633_mbc *mbc = data;
206 int chg_restart_interval =
207 mbc->pcf->pdata->charging_restart_interval;
167 208
168 /* USB */ 209 /* USB */
169 if (irq == PCF50633_IRQ_USBINS) { 210 if (irq == PCF50633_IRQ_USBINS) {
@@ -172,6 +213,7 @@ pcf50633_mbc_irq_handler(int irq, void *data)
172 mbc->usb_online = 0; 213 mbc->usb_online = 0;
173 mbc->usb_active = 0; 214 mbc->usb_active = 0;
174 pcf50633_mbc_usb_curlim_set(mbc->pcf, 0); 215 pcf50633_mbc_usb_curlim_set(mbc->pcf, 0);
216 cancel_delayed_work_sync(&mbc->charging_restart_work);
175 } 217 }
176 218
177 /* Adapter */ 219 /* Adapter */
@@ -186,7 +228,14 @@ pcf50633_mbc_irq_handler(int irq, void *data)
186 if (irq == PCF50633_IRQ_BATFULL) { 228 if (irq == PCF50633_IRQ_BATFULL) {
187 mbc->usb_active = 0; 229 mbc->usb_active = 0;
188 mbc->adapter_active = 0; 230 mbc->adapter_active = 0;
189 } 231
232 if (chg_restart_interval > 0)
233 schedule_delayed_work(&mbc->charging_restart_work,
234 chg_restart_interval);
235 } else if (irq == PCF50633_IRQ_USBLIMON)
236 mbc->usb_active = 0;
237 else if (irq == PCF50633_IRQ_USBLIMOFF)
238 mbc->usb_active = 1;
190 239
191 power_supply_changed(&mbc->usb); 240 power_supply_changed(&mbc->usb);
192 power_supply_changed(&mbc->adapter); 241 power_supply_changed(&mbc->adapter);
@@ -303,6 +352,9 @@ static int __devinit pcf50633_mbc_probe(struct platform_device *pdev)
303 return ret; 352 return ret;
304 } 353 }
305 354
355 INIT_DELAYED_WORK(&mbc->charging_restart_work,
356 pcf50633_mbc_charging_restart);
357
306 ret = sysfs_create_group(&pdev->dev.kobj, &mbc_attr_group); 358 ret = sysfs_create_group(&pdev->dev.kobj, &mbc_attr_group);
307 if (ret) 359 if (ret)
308 dev_err(mbc->pcf->dev, "failed to create sysfs entries\n"); 360 dev_err(mbc->pcf->dev, "failed to create sysfs entries\n");
@@ -328,6 +380,8 @@ static int __devexit pcf50633_mbc_remove(struct platform_device *pdev)
328 power_supply_unregister(&mbc->usb); 380 power_supply_unregister(&mbc->usb);
329 power_supply_unregister(&mbc->adapter); 381 power_supply_unregister(&mbc->adapter);
330 382
383 cancel_delayed_work_sync(&mbc->charging_restart_work);
384
331 kfree(mbc); 385 kfree(mbc);
332 386
333 return 0; 387 return 0;
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
index b56a704409d2..a232de6a5703 100644
--- a/drivers/power/pda_power.c
+++ b/drivers/power/pda_power.c
@@ -12,11 +12,14 @@
12 12
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/err.h>
15#include <linux/interrupt.h> 16#include <linux/interrupt.h>
16#include <linux/power_supply.h> 17#include <linux/power_supply.h>
17#include <linux/pda_power.h> 18#include <linux/pda_power.h>
19#include <linux/regulator/consumer.h>
18#include <linux/timer.h> 20#include <linux/timer.h>
19#include <linux/jiffies.h> 21#include <linux/jiffies.h>
22#include <linux/usb/otg.h>
20 23
21static inline unsigned int get_irq_flags(struct resource *res) 24static inline unsigned int get_irq_flags(struct resource *res)
22{ 25{
@@ -35,6 +38,11 @@ static struct timer_list supply_timer;
35static struct timer_list polling_timer; 38static struct timer_list polling_timer;
36static int polling; 39static int polling;
37 40
41#ifdef CONFIG_USB_OTG_UTILS
42static struct otg_transceiver *transceiver;
43#endif
44static struct regulator *ac_draw;
45
38enum { 46enum {
39 PDA_PSY_OFFLINE = 0, 47 PDA_PSY_OFFLINE = 0,
40 PDA_PSY_ONLINE = 1, 48 PDA_PSY_ONLINE = 1,
@@ -104,18 +112,35 @@ static void update_status(void)
104 112
105static void update_charger(void) 113static void update_charger(void)
106{ 114{
107 if (!pdata->set_charge) 115 static int regulator_enabled;
108 return; 116 int max_uA = pdata->ac_max_uA;
109 117
110 if (new_ac_status > 0) { 118 if (pdata->set_charge) {
111 dev_dbg(dev, "charger on (AC)\n"); 119 if (new_ac_status > 0) {
112 pdata->set_charge(PDA_POWER_CHARGE_AC); 120 dev_dbg(dev, "charger on (AC)\n");
113 } else if (new_usb_status > 0) { 121 pdata->set_charge(PDA_POWER_CHARGE_AC);
114 dev_dbg(dev, "charger on (USB)\n"); 122 } else if (new_usb_status > 0) {
115 pdata->set_charge(PDA_POWER_CHARGE_USB); 123 dev_dbg(dev, "charger on (USB)\n");
116 } else { 124 pdata->set_charge(PDA_POWER_CHARGE_USB);
117 dev_dbg(dev, "charger off\n"); 125 } else {
118 pdata->set_charge(0); 126 dev_dbg(dev, "charger off\n");
127 pdata->set_charge(0);
128 }
129 } else if (ac_draw) {
130 if (new_ac_status > 0) {
131 regulator_set_current_limit(ac_draw, max_uA, max_uA);
132 if (!regulator_enabled) {
133 dev_dbg(dev, "charger on (AC)\n");
134 regulator_enable(ac_draw);
135 regulator_enabled = 1;
136 }
137 } else {
138 if (regulator_enabled) {
139 dev_dbg(dev, "charger off\n");
140 regulator_disable(ac_draw);
141 regulator_enabled = 0;
142 }
143 }
119 } 144 }
120} 145}
121 146
@@ -194,6 +219,13 @@ static void polling_timer_func(unsigned long unused)
194 jiffies + msecs_to_jiffies(pdata->polling_interval)); 219 jiffies + msecs_to_jiffies(pdata->polling_interval));
195} 220}
196 221
222#ifdef CONFIG_USB_OTG_UTILS
223static int otg_is_usb_online(void)
224{
225 return (transceiver->state == OTG_STATE_B_PERIPHERAL);
226}
227#endif
228
197static int pda_power_probe(struct platform_device *pdev) 229static int pda_power_probe(struct platform_device *pdev)
198{ 230{
199 int ret = 0; 231 int ret = 0;
@@ -227,6 +259,9 @@ static int pda_power_probe(struct platform_device *pdev)
227 if (!pdata->polling_interval) 259 if (!pdata->polling_interval)
228 pdata->polling_interval = 2000; 260 pdata->polling_interval = 2000;
229 261
262 if (!pdata->ac_max_uA)
263 pdata->ac_max_uA = 500000;
264
230 setup_timer(&charger_timer, charger_timer_func, 0); 265 setup_timer(&charger_timer, charger_timer_func, 0);
231 setup_timer(&supply_timer, supply_timer_func, 0); 266 setup_timer(&supply_timer, supply_timer_func, 0);
232 267
@@ -240,6 +275,13 @@ static int pda_power_probe(struct platform_device *pdev)
240 pda_psy_usb.num_supplicants = pdata->num_supplicants; 275 pda_psy_usb.num_supplicants = pdata->num_supplicants;
241 } 276 }
242 277
278 ac_draw = regulator_get(dev, "ac_draw");
279 if (IS_ERR(ac_draw)) {
280 dev_dbg(dev, "couldn't get ac_draw regulator\n");
281 ac_draw = NULL;
282 ret = PTR_ERR(ac_draw);
283 }
284
243 if (pdata->is_ac_online) { 285 if (pdata->is_ac_online) {
244 ret = power_supply_register(&pdev->dev, &pda_psy_ac); 286 ret = power_supply_register(&pdev->dev, &pda_psy_ac);
245 if (ret) { 287 if (ret) {
@@ -261,6 +303,13 @@ static int pda_power_probe(struct platform_device *pdev)
261 } 303 }
262 } 304 }
263 305
306#ifdef CONFIG_USB_OTG_UTILS
307 transceiver = otg_get_transceiver();
308 if (transceiver && !pdata->is_usb_online) {
309 pdata->is_usb_online = otg_is_usb_online;
310 }
311#endif
312
264 if (pdata->is_usb_online) { 313 if (pdata->is_usb_online) {
265 ret = power_supply_register(&pdev->dev, &pda_psy_usb); 314 ret = power_supply_register(&pdev->dev, &pda_psy_usb);
266 if (ret) { 315 if (ret) {
@@ -300,10 +349,18 @@ usb_irq_failed:
300usb_supply_failed: 349usb_supply_failed:
301 if (pdata->is_ac_online && ac_irq) 350 if (pdata->is_ac_online && ac_irq)
302 free_irq(ac_irq->start, &pda_psy_ac); 351 free_irq(ac_irq->start, &pda_psy_ac);
352#ifdef CONFIG_USB_OTG_UTILS
353 if (transceiver)
354 otg_put_transceiver(transceiver);
355#endif
303ac_irq_failed: 356ac_irq_failed:
304 if (pdata->is_ac_online) 357 if (pdata->is_ac_online)
305 power_supply_unregister(&pda_psy_ac); 358 power_supply_unregister(&pda_psy_ac);
306ac_supply_failed: 359ac_supply_failed:
360 if (ac_draw) {
361 regulator_put(ac_draw);
362 ac_draw = NULL;
363 }
307 if (pdata->exit) 364 if (pdata->exit)
308 pdata->exit(dev); 365 pdata->exit(dev);
309init_failed: 366init_failed:
@@ -327,6 +384,14 @@ static int pda_power_remove(struct platform_device *pdev)
327 power_supply_unregister(&pda_psy_usb); 384 power_supply_unregister(&pda_psy_usb);
328 if (pdata->is_ac_online) 385 if (pdata->is_ac_online)
329 power_supply_unregister(&pda_psy_ac); 386 power_supply_unregister(&pda_psy_ac);
387#ifdef CONFIG_USB_OTG_UTILS
388 if (transceiver)
389 otg_put_transceiver(transceiver);
390#endif
391 if (ac_draw) {
392 regulator_put(ac_draw);
393 ac_draw = NULL;
394 }
330 if (pdata->exit) 395 if (pdata->exit)
331 pdata->exit(dev); 396 pdata->exit(dev);
332 397
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 687dcf2d0154..5defe5ea5eda 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -1663,7 +1663,7 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha)
1663 1663
1664 /* Load RISC code. */ 1664 /* Load RISC code. */
1665 risc_address = ha->fwstart; 1665 risc_address = ha->fwstart;
1666 fw_data = (const __le16 *)&fw->data[4]; 1666 fw_data = (const __le16 *)&fw->data[6];
1667 risc_code_size = (fw->size - 6) / 2; 1667 risc_code_size = (fw->size - 6) / 2;
1668 1668
1669 for (i = 0; i < risc_code_size; i++) { 1669 for (i = 0; i < risc_code_size; i++) {
@@ -1722,7 +1722,7 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha)
1722 1722
1723 /* Load RISC code. */ 1723 /* Load RISC code. */
1724 risc_address = ha->fwstart; 1724 risc_address = ha->fwstart;
1725 fw_data = (const __le16 *)&fw->data[4]; 1725 fw_data = (const __le16 *)&fw->data[6];
1726 risc_code_size = (fw->size - 6) / 2; 1726 risc_code_size = (fw->size - 6) / 2;
1727 1727
1728 dprintk(1, "%s: DMA RISC code (%i) words\n", 1728 dprintk(1, "%s: DMA RISC code (%i) words\n",
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index e1850904ff73..fbc83bebdd8e 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -38,9 +38,6 @@ static inline void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
38 { }; 38 { };
39#endif 39#endif
40 40
41/* scsi_scan.c */
42int scsi_complete_async_scans(void);
43
44/* scsi_devinfo.c */ 41/* scsi_devinfo.c */
45extern int scsi_get_device_flags(struct scsi_device *sdev, 42extern int scsi_get_device_flags(struct scsi_device *sdev,
46 const unsigned char *vendor, 43 const unsigned char *vendor,
diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c
index 8a636103083d..2f21af21269a 100644
--- a/drivers/scsi/scsi_wait_scan.c
+++ b/drivers/scsi/scsi_wait_scan.c
@@ -11,7 +11,7 @@
11 */ 11 */
12 12
13#include <linux/module.h> 13#include <linux/module.h>
14#include "scsi_priv.h" 14#include <scsi/scsi_scan.h>
15 15
16static int __init wait_scan_init(void) 16static int __init wait_scan_init(void)
17{ 17{
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 0328fd4006e5..343e3a35b6a3 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -854,7 +854,7 @@ config SERIAL_IMX_CONSOLE
854 854
855config SERIAL_UARTLITE 855config SERIAL_UARTLITE
856 tristate "Xilinx uartlite serial port support" 856 tristate "Xilinx uartlite serial port support"
857 depends on PPC32 857 depends on PPC32 || MICROBLAZE
858 select SERIAL_CORE 858 select SERIAL_CORE
859 help 859 help
860 Say Y here if you want to use the Xilinx uartlite serial controller. 860 Say Y here if you want to use the Xilinx uartlite serial controller.
@@ -1340,7 +1340,7 @@ config SERIAL_NETX_CONSOLE
1340 1340
1341config SERIAL_OF_PLATFORM 1341config SERIAL_OF_PLATFORM
1342 tristate "Serial port on Open Firmware platform bus" 1342 tristate "Serial port on Open Firmware platform bus"
1343 depends on PPC_OF 1343 depends on PPC_OF || MICROBLAZE
1344 depends on SERIAL_8250 || SERIAL_OF_PLATFORM_NWPSERIAL 1344 depends on SERIAL_8250 || SERIAL_OF_PLATFORM_NWPSERIAL
1345 help 1345 help
1346 If you have a PowerPC based system that has serial ports 1346 If you have a PowerPC based system that has serial ports
diff --git a/drivers/serial/max3100.c b/drivers/serial/max3100.c
new file mode 100644
index 000000000000..9fd33e5622bd
--- /dev/null
+++ b/drivers/serial/max3100.c
@@ -0,0 +1,927 @@
1/*
2 *
3 * Copyright (C) 2008 Christian Pellegrin <chripell@evolware.org>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 *
11 * Notes: the MAX3100 doesn't provide an interrupt on CTS so we have
12 * to use polling for flow control. TX empty IRQ is unusable, since
13 * writing conf clears FIFO buffer and we cannot have this interrupt
14 * always asking us for attention.
15 *
16 * Example platform data:
17
18 static struct plat_max3100 max3100_plat_data = {
19 .loopback = 0,
20 .crystal = 0,
21 .poll_time = 100,
22 };
23
24 static struct spi_board_info spi_board_info[] = {
25 {
26 .modalias = "max3100",
27 .platform_data = &max3100_plat_data,
28 .irq = IRQ_EINT12,
29 .max_speed_hz = 5*1000*1000,
30 .chip_select = 0,
31 },
32 };
33
34 * The initial minor number is 209 in the low-density serial port:
35 * mknod /dev/ttyMAX0 c 204 209
36 */
37
38#define MAX3100_MAJOR 204
39#define MAX3100_MINOR 209
40/* 4 MAX3100s should be enough for everyone */
41#define MAX_MAX3100 4
42
43#include <linux/delay.h>
44#include <linux/device.h>
45#include <linux/serial_core.h>
46#include <linux/serial.h>
47#include <linux/spi/spi.h>
48#include <linux/freezer.h>
49
50#include <linux/serial_max3100.h>
51
52#define MAX3100_C (1<<14)
53#define MAX3100_D (0<<14)
54#define MAX3100_W (1<<15)
55#define MAX3100_RX (0<<15)
56
57#define MAX3100_WC (MAX3100_W | MAX3100_C)
58#define MAX3100_RC (MAX3100_RX | MAX3100_C)
59#define MAX3100_WD (MAX3100_W | MAX3100_D)
60#define MAX3100_RD (MAX3100_RX | MAX3100_D)
61#define MAX3100_CMD (3 << 14)
62
63#define MAX3100_T (1<<14)
64#define MAX3100_R (1<<15)
65
66#define MAX3100_FEN (1<<13)
67#define MAX3100_SHDN (1<<12)
68#define MAX3100_TM (1<<11)
69#define MAX3100_RM (1<<10)
70#define MAX3100_PM (1<<9)
71#define MAX3100_RAM (1<<8)
72#define MAX3100_IR (1<<7)
73#define MAX3100_ST (1<<6)
74#define MAX3100_PE (1<<5)
75#define MAX3100_L (1<<4)
76#define MAX3100_BAUD (0xf)
77
78#define MAX3100_TE (1<<10)
79#define MAX3100_RAFE (1<<10)
80#define MAX3100_RTS (1<<9)
81#define MAX3100_CTS (1<<9)
82#define MAX3100_PT (1<<8)
83#define MAX3100_DATA (0xff)
84
85#define MAX3100_RT (MAX3100_R | MAX3100_T)
86#define MAX3100_RTC (MAX3100_RT | MAX3100_CTS | MAX3100_RAFE)
87
88/* the following simulate a status reg for ignore_status_mask */
89#define MAX3100_STATUS_PE 1
90#define MAX3100_STATUS_FE 2
91#define MAX3100_STATUS_OE 4
92
93struct max3100_port {
94 struct uart_port port;
95 struct spi_device *spi;
96
97 int cts; /* last CTS received for flow ctrl */
98 int tx_empty; /* last TX empty bit */
99
100 spinlock_t conf_lock; /* shared data */
101 int conf_commit; /* need to make changes */
102 int conf; /* configuration for the MAX31000
103 * (bits 0-7, bits 8-11 are irqs) */
104 int rts_commit; /* need to change rts */
105 int rts; /* rts status */
106 int baud; /* current baud rate */
107
108 int parity; /* keeps track if we should send parity */
109#define MAX3100_PARITY_ON 1
110#define MAX3100_PARITY_ODD 2
111#define MAX3100_7BIT 4
112 int rx_enabled; /* if we should rx chars */
113
114 int irq; /* irq assigned to the max3100 */
115
116 int minor; /* minor number */
117 int crystal; /* 1 if 3.6864Mhz crystal 0 for 1.8432 */
118 int loopback; /* 1 if we are in loopback mode */
119
120 /* for handling irqs: need workqueue since we do spi_sync */
121 struct workqueue_struct *workqueue;
122 struct work_struct work;
123 /* set to 1 to make the workhandler exit as soon as possible */
124 int force_end_work;
125 /* need to know we are suspending to avoid deadlock on workqueue */
126 int suspending;
127
128 /* hook for suspending MAX3100 via dedicated pin */
129 void (*max3100_hw_suspend) (int suspend);
130
131 /* poll time (in ms) for ctrl lines */
132 int poll_time;
133 /* and its timer */
134 struct timer_list timer;
135};
136
137static struct max3100_port *max3100s[MAX_MAX3100]; /* the chips */
138static DEFINE_MUTEX(max3100s_lock); /* race on probe */
139
140static int max3100_do_parity(struct max3100_port *s, u16 c)
141{
142 int parity;
143
144 if (s->parity & MAX3100_PARITY_ODD)
145 parity = 1;
146 else
147 parity = 0;
148
149 if (s->parity & MAX3100_7BIT)
150 c &= 0x7f;
151 else
152 c &= 0xff;
153
154 parity = parity ^ (hweight8(c) & 1);
155 return parity;
156}
157
158static int max3100_check_parity(struct max3100_port *s, u16 c)
159{
160 return max3100_do_parity(s, c) == ((c >> 8) & 1);
161}
162
163static void max3100_calc_parity(struct max3100_port *s, u16 *c)
164{
165 if (s->parity & MAX3100_7BIT)
166 *c &= 0x7f;
167 else
168 *c &= 0xff;
169
170 if (s->parity & MAX3100_PARITY_ON)
171 *c |= max3100_do_parity(s, *c) << 8;
172}
173
174static void max3100_work(struct work_struct *w);
175
176static void max3100_dowork(struct max3100_port *s)
177{
178 if (!s->force_end_work && !work_pending(&s->work) &&
179 !freezing(current) && !s->suspending)
180 queue_work(s->workqueue, &s->work);
181}
182
183static void max3100_timeout(unsigned long data)
184{
185 struct max3100_port *s = (struct max3100_port *)data;
186
187 if (s->port.info) {
188 max3100_dowork(s);
189 mod_timer(&s->timer, jiffies + s->poll_time);
190 }
191}
192
193static int max3100_sr(struct max3100_port *s, u16 tx, u16 *rx)
194{
195 struct spi_message message;
196 u16 etx, erx;
197 int status;
198 struct spi_transfer tran = {
199 .tx_buf = &etx,
200 .rx_buf = &erx,
201 .len = 2,
202 };
203
204 etx = cpu_to_be16(tx);
205 spi_message_init(&message);
206 spi_message_add_tail(&tran, &message);
207 status = spi_sync(s->spi, &message);
208 if (status) {
209 dev_warn(&s->spi->dev, "error while calling spi_sync\n");
210 return -EIO;
211 }
212 *rx = be16_to_cpu(erx);
213 s->tx_empty = (*rx & MAX3100_T) > 0;
214 dev_dbg(&s->spi->dev, "%04x - %04x\n", tx, *rx);
215 return 0;
216}
217
218static int max3100_handlerx(struct max3100_port *s, u16 rx)
219{
220 unsigned int ch, flg, status = 0;
221 int ret = 0, cts;
222
223 if (rx & MAX3100_R && s->rx_enabled) {
224 dev_dbg(&s->spi->dev, "%s\n", __func__);
225 ch = rx & (s->parity & MAX3100_7BIT ? 0x7f : 0xff);
226 if (rx & MAX3100_RAFE) {
227 s->port.icount.frame++;
228 flg = TTY_FRAME;
229 status |= MAX3100_STATUS_FE;
230 } else {
231 if (s->parity & MAX3100_PARITY_ON) {
232 if (max3100_check_parity(s, rx)) {
233 s->port.icount.rx++;
234 flg = TTY_NORMAL;
235 } else {
236 s->port.icount.parity++;
237 flg = TTY_PARITY;
238 status |= MAX3100_STATUS_PE;
239 }
240 } else {
241 s->port.icount.rx++;
242 flg = TTY_NORMAL;
243 }
244 }
245 uart_insert_char(&s->port, status, MAX3100_STATUS_OE, ch, flg);
246 ret = 1;
247 }
248
249 cts = (rx & MAX3100_CTS) > 0;
250 if (s->cts != cts) {
251 s->cts = cts;
252 uart_handle_cts_change(&s->port, cts ? TIOCM_CTS : 0);
253 }
254
255 return ret;
256}
257
258static void max3100_work(struct work_struct *w)
259{
260 struct max3100_port *s = container_of(w, struct max3100_port, work);
261 int rxchars;
262 u16 tx, rx;
263 int conf, cconf, rts, crts;
264 struct circ_buf *xmit = &s->port.info->xmit;
265
266 dev_dbg(&s->spi->dev, "%s\n", __func__);
267
268 rxchars = 0;
269 do {
270 spin_lock(&s->conf_lock);
271 conf = s->conf;
272 cconf = s->conf_commit;
273 s->conf_commit = 0;
274 rts = s->rts;
275 crts = s->rts_commit;
276 s->rts_commit = 0;
277 spin_unlock(&s->conf_lock);
278 if (cconf)
279 max3100_sr(s, MAX3100_WC | conf, &rx);
280 if (crts) {
281 max3100_sr(s, MAX3100_WD | MAX3100_TE |
282 (s->rts ? MAX3100_RTS : 0), &rx);
283 rxchars += max3100_handlerx(s, rx);
284 }
285
286 max3100_sr(s, MAX3100_RD, &rx);
287 rxchars += max3100_handlerx(s, rx);
288
289 if (rx & MAX3100_T) {
290 tx = 0xffff;
291 if (s->port.x_char) {
292 tx = s->port.x_char;
293 s->port.icount.tx++;
294 s->port.x_char = 0;
295 } else if (!uart_circ_empty(xmit) &&
296 !uart_tx_stopped(&s->port)) {
297 tx = xmit->buf[xmit->tail];
298 xmit->tail = (xmit->tail + 1) &
299 (UART_XMIT_SIZE - 1);
300 s->port.icount.tx++;
301 }
302 if (tx != 0xffff) {
303 max3100_calc_parity(s, &tx);
304 tx |= MAX3100_WD | (s->rts ? MAX3100_RTS : 0);
305 max3100_sr(s, tx, &rx);
306 rxchars += max3100_handlerx(s, rx);
307 }
308 }
309
310 if (rxchars > 16 && s->port.info->port.tty != NULL) {
311 tty_flip_buffer_push(s->port.info->port.tty);
312 rxchars = 0;
313 }
314 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
315 uart_write_wakeup(&s->port);
316
317 } while (!s->force_end_work &&
318 !freezing(current) &&
319 ((rx & MAX3100_R) ||
320 (!uart_circ_empty(xmit) &&
321 !uart_tx_stopped(&s->port))));
322
323 if (rxchars > 0 && s->port.info->port.tty != NULL)
324 tty_flip_buffer_push(s->port.info->port.tty);
325}
326
327static irqreturn_t max3100_irq(int irqno, void *dev_id)
328{
329 struct max3100_port *s = dev_id;
330
331 dev_dbg(&s->spi->dev, "%s\n", __func__);
332
333 max3100_dowork(s);
334 return IRQ_HANDLED;
335}
336
337static void max3100_enable_ms(struct uart_port *port)
338{
339 struct max3100_port *s = container_of(port,
340 struct max3100_port,
341 port);
342
343 if (s->poll_time > 0)
344 mod_timer(&s->timer, jiffies);
345 dev_dbg(&s->spi->dev, "%s\n", __func__);
346}
347
348static void max3100_start_tx(struct uart_port *port)
349{
350 struct max3100_port *s = container_of(port,
351 struct max3100_port,
352 port);
353
354 dev_dbg(&s->spi->dev, "%s\n", __func__);
355
356 max3100_dowork(s);
357}
358
359static void max3100_stop_rx(struct uart_port *port)
360{
361 struct max3100_port *s = container_of(port,
362 struct max3100_port,
363 port);
364
365 dev_dbg(&s->spi->dev, "%s\n", __func__);
366
367 s->rx_enabled = 0;
368 spin_lock(&s->conf_lock);
369 s->conf &= ~MAX3100_RM;
370 s->conf_commit = 1;
371 spin_unlock(&s->conf_lock);
372 max3100_dowork(s);
373}
374
375static unsigned int max3100_tx_empty(struct uart_port *port)
376{
377 struct max3100_port *s = container_of(port,
378 struct max3100_port,
379 port);
380
381 dev_dbg(&s->spi->dev, "%s\n", __func__);
382
383 /* may not be truly up-to-date */
384 max3100_dowork(s);
385 return s->tx_empty;
386}
387
388static unsigned int max3100_get_mctrl(struct uart_port *port)
389{
390 struct max3100_port *s = container_of(port,
391 struct max3100_port,
392 port);
393
394 dev_dbg(&s->spi->dev, "%s\n", __func__);
395
396 /* may not be truly up-to-date */
397 max3100_dowork(s);
398 /* always assert DCD and DSR since these lines are not wired */
399 return (s->cts ? TIOCM_CTS : 0) | TIOCM_DSR | TIOCM_CAR;
400}
401
402static void max3100_set_mctrl(struct uart_port *port, unsigned int mctrl)
403{
404 struct max3100_port *s = container_of(port,
405 struct max3100_port,
406 port);
407 int rts;
408
409 dev_dbg(&s->spi->dev, "%s\n", __func__);
410
411 rts = (mctrl & TIOCM_RTS) > 0;
412
413 spin_lock(&s->conf_lock);
414 if (s->rts != rts) {
415 s->rts = rts;
416 s->rts_commit = 1;
417 max3100_dowork(s);
418 }
419 spin_unlock(&s->conf_lock);
420}
421
422static void
423max3100_set_termios(struct uart_port *port, struct ktermios *termios,
424 struct ktermios *old)
425{
426 struct max3100_port *s = container_of(port,
427 struct max3100_port,
428 port);
429 int baud = 0;
430 unsigned cflag;
431 u32 param_new, param_mask, parity = 0;
432 struct tty_struct *tty = s->port.info->port.tty;
433
434 dev_dbg(&s->spi->dev, "%s\n", __func__);
435 if (!tty)
436 return;
437
438 cflag = termios->c_cflag;
439 param_new = 0;
440 param_mask = 0;
441
442 baud = tty_get_baud_rate(tty);
443 param_new = s->conf & MAX3100_BAUD;
444 switch (baud) {
445 case 300:
446 if (s->crystal)
447 baud = s->baud;
448 else
449 param_new = 15;
450 break;
451 case 600:
452 param_new = 14 + s->crystal;
453 break;
454 case 1200:
455 param_new = 13 + s->crystal;
456 break;
457 case 2400:
458 param_new = 12 + s->crystal;
459 break;
460 case 4800:
461 param_new = 11 + s->crystal;
462 break;
463 case 9600:
464 param_new = 10 + s->crystal;
465 break;
466 case 19200:
467 param_new = 9 + s->crystal;
468 break;
469 case 38400:
470 param_new = 8 + s->crystal;
471 break;
472 case 57600:
473 param_new = 1 + s->crystal;
474 break;
475 case 115200:
476 param_new = 0 + s->crystal;
477 break;
478 case 230400:
479 if (s->crystal)
480 param_new = 0;
481 else
482 baud = s->baud;
483 break;
484 default:
485 baud = s->baud;
486 }
487 tty_encode_baud_rate(tty, baud, baud);
488 s->baud = baud;
489 param_mask |= MAX3100_BAUD;
490
491 if ((cflag & CSIZE) == CS8) {
492 param_new &= ~MAX3100_L;
493 parity &= ~MAX3100_7BIT;
494 } else {
495 param_new |= MAX3100_L;
496 parity |= MAX3100_7BIT;
497 cflag = (cflag & ~CSIZE) | CS7;
498 }
499 param_mask |= MAX3100_L;
500
501 if (cflag & CSTOPB)
502 param_new |= MAX3100_ST;
503 else
504 param_new &= ~MAX3100_ST;
505 param_mask |= MAX3100_ST;
506
507 if (cflag & PARENB) {
508 param_new |= MAX3100_PE;
509 parity |= MAX3100_PARITY_ON;
510 } else {
511 param_new &= ~MAX3100_PE;
512 parity &= ~MAX3100_PARITY_ON;
513 }
514 param_mask |= MAX3100_PE;
515
516 if (cflag & PARODD)
517 parity |= MAX3100_PARITY_ODD;
518 else
519 parity &= ~MAX3100_PARITY_ODD;
520
521 /* mask termios capabilities we don't support */
522 cflag &= ~CMSPAR;
523 termios->c_cflag = cflag;
524
525 s->port.ignore_status_mask = 0;
526 if (termios->c_iflag & IGNPAR)
527 s->port.ignore_status_mask |=
528 MAX3100_STATUS_PE | MAX3100_STATUS_FE |
529 MAX3100_STATUS_OE;
530
531 /* we are sending char from a workqueue so enable */
532 s->port.info->port.tty->low_latency = 1;
533
534 if (s->poll_time > 0)
535 del_timer_sync(&s->timer);
536
537 uart_update_timeout(port, termios->c_cflag, baud);
538
539 spin_lock(&s->conf_lock);
540 s->conf = (s->conf & ~param_mask) | (param_new & param_mask);
541 s->conf_commit = 1;
542 s->parity = parity;
543 spin_unlock(&s->conf_lock);
544 max3100_dowork(s);
545
546 if (UART_ENABLE_MS(&s->port, termios->c_cflag))
547 max3100_enable_ms(&s->port);
548}
549
550static void max3100_shutdown(struct uart_port *port)
551{
552 struct max3100_port *s = container_of(port,
553 struct max3100_port,
554 port);
555
556 dev_dbg(&s->spi->dev, "%s\n", __func__);
557
558 if (s->suspending)
559 return;
560
561 s->force_end_work = 1;
562
563 if (s->poll_time > 0)
564 del_timer_sync(&s->timer);
565
566 if (s->workqueue) {
567 flush_workqueue(s->workqueue);
568 destroy_workqueue(s->workqueue);
569 s->workqueue = NULL;
570 }
571 if (s->irq)
572 free_irq(s->irq, s);
573
574 /* set shutdown mode to save power */
575 if (s->max3100_hw_suspend)
576 s->max3100_hw_suspend(1);
577 else {
578 u16 tx, rx;
579
580 tx = MAX3100_WC | MAX3100_SHDN;
581 max3100_sr(s, tx, &rx);
582 }
583}
584
585static int max3100_startup(struct uart_port *port)
586{
587 struct max3100_port *s = container_of(port,
588 struct max3100_port,
589 port);
590 char b[12];
591
592 dev_dbg(&s->spi->dev, "%s\n", __func__);
593
594 s->conf = MAX3100_RM;
595 s->baud = s->crystal ? 230400 : 115200;
596 s->rx_enabled = 1;
597
598 if (s->suspending)
599 return 0;
600
601 s->force_end_work = 0;
602 s->parity = 0;
603 s->rts = 0;
604
605 sprintf(b, "max3100-%d", s->minor);
606 s->workqueue = create_freezeable_workqueue(b);
607 if (!s->workqueue) {
608 dev_warn(&s->spi->dev, "cannot create workqueue\n");
609 return -EBUSY;
610 }
611 INIT_WORK(&s->work, max3100_work);
612
613 if (request_irq(s->irq, max3100_irq,
614 IRQF_TRIGGER_FALLING, "max3100", s) < 0) {
615 dev_warn(&s->spi->dev, "cannot allocate irq %d\n", s->irq);
616 s->irq = 0;
617 destroy_workqueue(s->workqueue);
618 s->workqueue = NULL;
619 return -EBUSY;
620 }
621
622 if (s->loopback) {
623 u16 tx, rx;
624 tx = 0x4001;
625 max3100_sr(s, tx, &rx);
626 }
627
628 if (s->max3100_hw_suspend)
629 s->max3100_hw_suspend(0);
630 s->conf_commit = 1;
631 max3100_dowork(s);
632 /* wait for clock to settle */
633 msleep(50);
634
635 max3100_enable_ms(&s->port);
636
637 return 0;
638}
639
640static const char *max3100_type(struct uart_port *port)
641{
642 struct max3100_port *s = container_of(port,
643 struct max3100_port,
644 port);
645
646 dev_dbg(&s->spi->dev, "%s\n", __func__);
647
648 return s->port.type == PORT_MAX3100 ? "MAX3100" : NULL;
649}
650
651static void max3100_release_port(struct uart_port *port)
652{
653 struct max3100_port *s = container_of(port,
654 struct max3100_port,
655 port);
656
657 dev_dbg(&s->spi->dev, "%s\n", __func__);
658}
659
660static void max3100_config_port(struct uart_port *port, int flags)
661{
662 struct max3100_port *s = container_of(port,
663 struct max3100_port,
664 port);
665
666 dev_dbg(&s->spi->dev, "%s\n", __func__);
667
668 if (flags & UART_CONFIG_TYPE)
669 s->port.type = PORT_MAX3100;
670}
671
672static int max3100_verify_port(struct uart_port *port,
673 struct serial_struct *ser)
674{
675 struct max3100_port *s = container_of(port,
676 struct max3100_port,
677 port);
678 int ret = -EINVAL;
679
680 dev_dbg(&s->spi->dev, "%s\n", __func__);
681
682 if (ser->type == PORT_UNKNOWN || ser->type == PORT_MAX3100)
683 ret = 0;
684 return ret;
685}
686
687static void max3100_stop_tx(struct uart_port *port)
688{
689 struct max3100_port *s = container_of(port,
690 struct max3100_port,
691 port);
692
693 dev_dbg(&s->spi->dev, "%s\n", __func__);
694}
695
696static int max3100_request_port(struct uart_port *port)
697{
698 struct max3100_port *s = container_of(port,
699 struct max3100_port,
700 port);
701
702 dev_dbg(&s->spi->dev, "%s\n", __func__);
703 return 0;
704}
705
706static void max3100_break_ctl(struct uart_port *port, int break_state)
707{
708 struct max3100_port *s = container_of(port,
709 struct max3100_port,
710 port);
711
712 dev_dbg(&s->spi->dev, "%s\n", __func__);
713}
714
715static struct uart_ops max3100_ops = {
716 .tx_empty = max3100_tx_empty,
717 .set_mctrl = max3100_set_mctrl,
718 .get_mctrl = max3100_get_mctrl,
719 .stop_tx = max3100_stop_tx,
720 .start_tx = max3100_start_tx,
721 .stop_rx = max3100_stop_rx,
722 .enable_ms = max3100_enable_ms,
723 .break_ctl = max3100_break_ctl,
724 .startup = max3100_startup,
725 .shutdown = max3100_shutdown,
726 .set_termios = max3100_set_termios,
727 .type = max3100_type,
728 .release_port = max3100_release_port,
729 .request_port = max3100_request_port,
730 .config_port = max3100_config_port,
731 .verify_port = max3100_verify_port,
732};
733
734static struct uart_driver max3100_uart_driver = {
735 .owner = THIS_MODULE,
736 .driver_name = "ttyMAX",
737 .dev_name = "ttyMAX",
738 .major = MAX3100_MAJOR,
739 .minor = MAX3100_MINOR,
740 .nr = MAX_MAX3100,
741};
742static int uart_driver_registered;
743
744static int __devinit max3100_probe(struct spi_device *spi)
745{
746 int i, retval;
747 struct plat_max3100 *pdata;
748 u16 tx, rx;
749
750 mutex_lock(&max3100s_lock);
751
752 if (!uart_driver_registered) {
753 uart_driver_registered = 1;
754 retval = uart_register_driver(&max3100_uart_driver);
755 if (retval) {
756 printk(KERN_ERR "Couldn't register max3100 uart driver\n");
757 mutex_unlock(&max3100s_lock);
758 return retval;
759 }
760 }
761
762 for (i = 0; i < MAX_MAX3100; i++)
763 if (!max3100s[i])
764 break;
765 if (i == MAX_MAX3100) {
766 dev_warn(&spi->dev, "too many MAX3100 chips\n");
767 mutex_unlock(&max3100s_lock);
768 return -ENOMEM;
769 }
770
771 max3100s[i] = kzalloc(sizeof(struct max3100_port), GFP_KERNEL);
772 if (!max3100s[i]) {
773 dev_warn(&spi->dev,
774 "kmalloc for max3100 structure %d failed!\n", i);
775 mutex_unlock(&max3100s_lock);
776 return -ENOMEM;
777 }
778 max3100s[i]->spi = spi;
779 max3100s[i]->irq = spi->irq;
780 spin_lock_init(&max3100s[i]->conf_lock);
781 dev_set_drvdata(&spi->dev, max3100s[i]);
782 pdata = spi->dev.platform_data;
783 max3100s[i]->crystal = pdata->crystal;
784 max3100s[i]->loopback = pdata->loopback;
785 max3100s[i]->poll_time = pdata->poll_time * HZ / 1000;
786 if (pdata->poll_time > 0 && max3100s[i]->poll_time == 0)
787 max3100s[i]->poll_time = 1;
788 max3100s[i]->max3100_hw_suspend = pdata->max3100_hw_suspend;
789 max3100s[i]->minor = i;
790 init_timer(&max3100s[i]->timer);
791 max3100s[i]->timer.function = max3100_timeout;
792 max3100s[i]->timer.data = (unsigned long) max3100s[i];
793
794 dev_dbg(&spi->dev, "%s: adding port %d\n", __func__, i);
795 max3100s[i]->port.irq = max3100s[i]->irq;
796 max3100s[i]->port.uartclk = max3100s[i]->crystal ? 3686400 : 1843200;
797 max3100s[i]->port.fifosize = 16;
798 max3100s[i]->port.ops = &max3100_ops;
799 max3100s[i]->port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;
800 max3100s[i]->port.line = i;
801 max3100s[i]->port.type = PORT_MAX3100;
802 max3100s[i]->port.dev = &spi->dev;
803 retval = uart_add_one_port(&max3100_uart_driver, &max3100s[i]->port);
804 if (retval < 0)
805 dev_warn(&spi->dev,
806 "uart_add_one_port failed for line %d with error %d\n",
807 i, retval);
808
809 /* set shutdown mode to save power. Will be woken-up on open */
810 if (max3100s[i]->max3100_hw_suspend)
811 max3100s[i]->max3100_hw_suspend(1);
812 else {
813 tx = MAX3100_WC | MAX3100_SHDN;
814 max3100_sr(max3100s[i], tx, &rx);
815 }
816 mutex_unlock(&max3100s_lock);
817 return 0;
818}
819
820static int __devexit max3100_remove(struct spi_device *spi)
821{
822 struct max3100_port *s = dev_get_drvdata(&spi->dev);
823 int i;
824
825 mutex_lock(&max3100s_lock);
826
827 /* find out the index for the chip we are removing */
828 for (i = 0; i < MAX_MAX3100; i++)
829 if (max3100s[i] == s)
830 break;
831
832 dev_dbg(&spi->dev, "%s: removing port %d\n", __func__, i);
833 uart_remove_one_port(&max3100_uart_driver, &max3100s[i]->port);
834 kfree(max3100s[i]);
835 max3100s[i] = NULL;
836
837 /* check if this is the last chip we have */
838 for (i = 0; i < MAX_MAX3100; i++)
839 if (max3100s[i]) {
840 mutex_unlock(&max3100s_lock);
841 return 0;
842 }
843 pr_debug("removing max3100 driver\n");
844 uart_unregister_driver(&max3100_uart_driver);
845
846 mutex_unlock(&max3100s_lock);
847 return 0;
848}
849
850#ifdef CONFIG_PM
851
852static int max3100_suspend(struct spi_device *spi, pm_message_t state)
853{
854 struct max3100_port *s = dev_get_drvdata(&spi->dev);
855
856 dev_dbg(&s->spi->dev, "%s\n", __func__);
857
858 disable_irq(s->irq);
859
860 s->suspending = 1;
861 uart_suspend_port(&max3100_uart_driver, &s->port);
862
863 if (s->max3100_hw_suspend)
864 s->max3100_hw_suspend(1);
865 else {
866 /* no HW suspend, so do SW one */
867 u16 tx, rx;
868
869 tx = MAX3100_WC | MAX3100_SHDN;
870 max3100_sr(s, tx, &rx);
871 }
872 return 0;
873}
874
875static int max3100_resume(struct spi_device *spi)
876{
877 struct max3100_port *s = dev_get_drvdata(&spi->dev);
878
879 dev_dbg(&s->spi->dev, "%s\n", __func__);
880
881 if (s->max3100_hw_suspend)
882 s->max3100_hw_suspend(0);
883 uart_resume_port(&max3100_uart_driver, &s->port);
884 s->suspending = 0;
885
886 enable_irq(s->irq);
887
888 s->conf_commit = 1;
889 if (s->workqueue)
890 max3100_dowork(s);
891
892 return 0;
893}
894
895#else
896#define max3100_suspend NULL
897#define max3100_resume NULL
898#endif
899
900static struct spi_driver max3100_driver = {
901 .driver = {
902 .name = "max3100",
903 .bus = &spi_bus_type,
904 .owner = THIS_MODULE,
905 },
906
907 .probe = max3100_probe,
908 .remove = __devexit_p(max3100_remove),
909 .suspend = max3100_suspend,
910 .resume = max3100_resume,
911};
912
913static int __init max3100_init(void)
914{
915 return spi_register_driver(&max3100_driver);
916}
917module_init(max3100_init);
918
919static void __exit max3100_exit(void)
920{
921 spi_unregister_driver(&max3100_driver);
922}
923module_exit(max3100_exit);
924
925MODULE_DESCRIPTION("MAX3100 driver");
926MODULE_AUTHOR("Christian Pellegrin <chripell@evolware.org>");
927MODULE_LICENSE("GPL");
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index a4dc79b1d7ab..47c6837850b1 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -1178,7 +1178,7 @@ static struct uart_driver sunsu_reg = {
1178 .major = TTY_MAJOR, 1178 .major = TTY_MAJOR,
1179}; 1179};
1180 1180
1181static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up) 1181static int __devinit sunsu_kbd_ms_init(struct uart_sunsu_port *up)
1182{ 1182{
1183 int quot, baud; 1183 int quot, baud;
1184#ifdef CONFIG_SERIO 1184#ifdef CONFIG_SERIO
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 4ed228a89943..bb5e6f671578 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -280,7 +280,7 @@ static int ohci_hcd_at91_drv_probe(struct platform_device *pdev)
280 * are always powered while this driver is active, and use 280 * are always powered while this driver is active, and use
281 * active-low power switches. 281 * active-low power switches.
282 */ 282 */
283 for (i = 0; i < pdata->ports; i++) { 283 for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) {
284 if (pdata->vbus_pin[i] <= 0) 284 if (pdata->vbus_pin[i] <= 0)
285 continue; 285 continue;
286 gpio_request(pdata->vbus_pin[i], "ohci_vbus"); 286 gpio_request(pdata->vbus_pin[i], "ohci_vbus");
@@ -298,7 +298,7 @@ static int ohci_hcd_at91_drv_remove(struct platform_device *pdev)
298 int i; 298 int i;
299 299
300 if (pdata) { 300 if (pdata) {
301 for (i = 0; i < pdata->ports; i++) { 301 for (i = 0; i < ARRAY_SIZE(pdata->vbus_pin); i++) {
302 if (pdata->vbus_pin[i] <= 0) 302 if (pdata->vbus_pin[i] <= 0)
303 continue; 303 continue;
304 gpio_direction_output(pdata->vbus_pin[i], 1); 304 gpio_direction_output(pdata->vbus_pin[i], 1);
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 63024145215d..5eb8f21da82e 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -240,8 +240,6 @@ config ORION5X_WATCHDOG
240 To compile this driver as a module, choose M here: the 240 To compile this driver as a module, choose M here: the
241 module will be called orion5x_wdt. 241 module will be called orion5x_wdt.
242 242
243# ARM26 Architecture
244
245# AVR32 Architecture 243# AVR32 Architecture
246 244
247config AT32AP700X_WDT 245config AT32AP700X_WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 806b3eb08536..7f8c56b14f58 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -42,8 +42,6 @@ obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o
42obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o 42obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
43obj-$(CONFIG_ORION5X_WATCHDOG) += orion5x_wdt.o 43obj-$(CONFIG_ORION5X_WATCHDOG) += orion5x_wdt.o
44 44
45# ARM26 Architecture
46
47# AVR32 Architecture 45# AVR32 Architecture
48obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o 46obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
49 47
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c
index e35d54589232..29e52c237a3b 100644
--- a/drivers/watchdog/at91rm9200_wdt.c
+++ b/drivers/watchdog/at91rm9200_wdt.c
@@ -197,7 +197,7 @@ static struct miscdevice at91wdt_miscdev = {
197 .fops = &at91wdt_fops, 197 .fops = &at91wdt_fops,
198}; 198};
199 199
200static int __init at91wdt_probe(struct platform_device *pdev) 200static int __devinit at91wdt_probe(struct platform_device *pdev)
201{ 201{
202 int res; 202 int res;
203 203
@@ -214,7 +214,7 @@ static int __init at91wdt_probe(struct platform_device *pdev)
214 return 0; 214 return 0;
215} 215}
216 216
217static int __exit at91wdt_remove(struct platform_device *pdev) 217static int __devexit at91wdt_remove(struct platform_device *pdev)
218{ 218{
219 int res; 219 int res;
220 220
@@ -252,7 +252,7 @@ static int at91wdt_resume(struct platform_device *pdev)
252 252
253static struct platform_driver at91wdt_driver = { 253static struct platform_driver at91wdt_driver = {
254 .probe = at91wdt_probe, 254 .probe = at91wdt_probe,
255 .remove = __exit_p(at91wdt_remove), 255 .remove = __devexit_p(at91wdt_remove),
256 .shutdown = at91wdt_shutdown, 256 .shutdown = at91wdt_shutdown,
257 .suspend = at91wdt_suspend, 257 .suspend = at91wdt_suspend,
258 .resume = at91wdt_resume, 258 .resume = at91wdt_resume,
diff --git a/drivers/watchdog/i6300esb.c b/drivers/watchdog/i6300esb.c
index 2dbe83570d65..7ba0b11ec525 100644
--- a/drivers/watchdog/i6300esb.c
+++ b/drivers/watchdog/i6300esb.c
@@ -52,10 +52,10 @@
52#define ESB_LOCK_REG 0x68 /* WDT lock register */ 52#define ESB_LOCK_REG 0x68 /* WDT lock register */
53 53
54/* Memory mapped registers */ 54/* Memory mapped registers */
55#define ESB_TIMER1_REG BASEADDR + 0x00 /* Timer1 value after each reset */ 55#define ESB_TIMER1_REG (BASEADDR + 0x00)/* Timer1 value after each reset */
56#define ESB_TIMER2_REG BASEADDR + 0x04 /* Timer2 value after each reset */ 56#define ESB_TIMER2_REG (BASEADDR + 0x04)/* Timer2 value after each reset */
57#define ESB_GINTSR_REG BASEADDR + 0x08 /* General Interrupt Status Register */ 57#define ESB_GINTSR_REG (BASEADDR + 0x08)/* General Interrupt Status Register */
58#define ESB_RELOAD_REG BASEADDR + 0x0c /* Reload register */ 58#define ESB_RELOAD_REG (BASEADDR + 0x0c)/* Reload register */
59 59
60/* Lock register bits */ 60/* Lock register bits */
61#define ESB_WDT_FUNC (0x01 << 2) /* Watchdog functionality */ 61#define ESB_WDT_FUNC (0x01 << 2) /* Watchdog functionality */
@@ -68,6 +68,7 @@
68#define ESB_WDT_INTTYPE (0x11 << 0) /* Interrupt type on timer1 timeout */ 68#define ESB_WDT_INTTYPE (0x11 << 0) /* Interrupt type on timer1 timeout */
69 69
70/* Reload register bits */ 70/* Reload register bits */
71#define ESB_WDT_TIMEOUT (0x01 << 9) /* Watchdog timed out */
71#define ESB_WDT_RELOAD (0x01 << 8) /* prevent timeout */ 72#define ESB_WDT_RELOAD (0x01 << 8) /* prevent timeout */
72 73
73/* Magic constants */ 74/* Magic constants */
@@ -87,7 +88,6 @@ static struct platform_device *esb_platform_device;
87/* 30 sec default heartbeat (1 < heartbeat < 2*1023) */ 88/* 30 sec default heartbeat (1 < heartbeat < 2*1023) */
88#define WATCHDOG_HEARTBEAT 30 89#define WATCHDOG_HEARTBEAT 30
89static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ 90static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */
90
91module_param(heartbeat, int, 0); 91module_param(heartbeat, int, 0);
92MODULE_PARM_DESC(heartbeat, 92MODULE_PARM_DESC(heartbeat,
93 "Watchdog heartbeat in seconds. (1<heartbeat<2046, default=" 93 "Watchdog heartbeat in seconds. (1<heartbeat<2046, default="
@@ -123,7 +123,7 @@ static int esb_timer_start(void)
123 esb_unlock_registers(); 123 esb_unlock_registers();
124 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG); 124 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG);
125 /* Enable or Enable + Lock? */ 125 /* Enable or Enable + Lock? */
126 val = 0x02 | (nowayout ? 0x01 : 0x00); 126 val = ESB_WDT_ENABLE | (nowayout ? ESB_WDT_LOCK : 0x00);
127 pci_write_config_byte(esb_pci, ESB_LOCK_REG, val); 127 pci_write_config_byte(esb_pci, ESB_LOCK_REG, val);
128 spin_unlock(&esb_lock); 128 spin_unlock(&esb_lock);
129 return 0; 129 return 0;
@@ -143,7 +143,7 @@ static int esb_timer_stop(void)
143 spin_unlock(&esb_lock); 143 spin_unlock(&esb_lock);
144 144
145 /* Returns 0 if the timer was disabled, non-zero otherwise */ 145 /* Returns 0 if the timer was disabled, non-zero otherwise */
146 return (val & 0x01); 146 return val & ESB_WDT_ENABLE;
147} 147}
148 148
149static void esb_timer_keepalive(void) 149static void esb_timer_keepalive(void)
@@ -190,18 +190,6 @@ static int esb_timer_set_heartbeat(int time)
190 return 0; 190 return 0;
191} 191}
192 192
193static int esb_timer_read(void)
194{
195 u32 count;
196
197 /* This isn't documented, and doesn't take into
198 * acount which stage is running, but it looks
199 * like a 20 bit count down, so we might as well report it.
200 */
201 pci_read_config_dword(esb_pci, 0x64, &count);
202 return (int)count;
203}
204
205/* 193/*
206 * /dev/watchdog handling 194 * /dev/watchdog handling
207 */ 195 */
@@ -282,7 +270,7 @@ static long esb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
282 sizeof(ident)) ? -EFAULT : 0; 270 sizeof(ident)) ? -EFAULT : 0;
283 271
284 case WDIOC_GETSTATUS: 272 case WDIOC_GETSTATUS:
285 return put_user(esb_timer_read(), p); 273 return put_user(0, p);
286 274
287 case WDIOC_GETBOOTSTATUS: 275 case WDIOC_GETBOOTSTATUS:
288 return put_user(triggered, p); 276 return put_user(triggered, p);
@@ -362,8 +350,6 @@ MODULE_DEVICE_TABLE(pci, esb_pci_tbl);
362 350
363static unsigned char __devinit esb_getdevice(void) 351static unsigned char __devinit esb_getdevice(void)
364{ 352{
365 u8 val1;
366 unsigned short val2;
367 /* 353 /*
368 * Find the PCI device 354 * Find the PCI device
369 */ 355 */
@@ -371,66 +357,79 @@ static unsigned char __devinit esb_getdevice(void)
371 esb_pci = pci_get_device(PCI_VENDOR_ID_INTEL, 357 esb_pci = pci_get_device(PCI_VENDOR_ID_INTEL,
372 PCI_DEVICE_ID_INTEL_ESB_9, NULL); 358 PCI_DEVICE_ID_INTEL_ESB_9, NULL);
373 359
374 if (esb_pci) { 360 if (!esb_pci)
375 if (pci_enable_device(esb_pci)) { 361 return 0;
376 printk(KERN_ERR PFX "failed to enable device\n");
377 goto err_devput;
378 }
379 362
380 if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) { 363 if (pci_enable_device(esb_pci)) {
381 printk(KERN_ERR PFX "failed to request region\n"); 364 printk(KERN_ERR PFX "failed to enable device\n");
382 goto err_disable; 365 goto err_devput;
383 } 366 }
384 367
385 BASEADDR = pci_ioremap_bar(esb_pci, 0); 368 if (pci_request_region(esb_pci, 0, ESB_MODULE_NAME)) {
386 if (BASEADDR == NULL) { 369 printk(KERN_ERR PFX "failed to request region\n");
387 /* Something's wrong here, BASEADDR has to be set */ 370 goto err_disable;
388 printk(KERN_ERR PFX "failed to get BASEADDR\n"); 371 }
389 goto err_release;
390 }
391 372
392 /* 373 BASEADDR = pci_ioremap_bar(esb_pci, 0);
393 * The watchdog has two timers, it can be setup so that the 374 if (BASEADDR == NULL) {
394 * expiry of timer1 results in an interrupt and the expiry of 375 /* Something's wrong here, BASEADDR has to be set */
395 * timer2 results in a reboot. We set it to not generate 376 printk(KERN_ERR PFX "failed to get BASEADDR\n");
396 * any interrupts as there is not much we can do with it 377 goto err_release;
397 * right now. 378 }
398 * 379
399 * We also enable reboots and set the timer frequency to 380 /* Done */
400 * the PCI clock divided by 2^15 (approx 1KHz). 381 return 1;
401 */
402 pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
403
404 /* Check that the WDT isn't already locked */
405 pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
406 if (val1 & ESB_WDT_LOCK)
407 printk(KERN_WARNING PFX "nowayout already set\n");
408
409 /* Set the timer to watchdog mode and disable it for now */
410 pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
411
412 /* Check if the watchdog was previously triggered */
413 esb_unlock_registers();
414 val2 = readw(ESB_RELOAD_REG);
415 triggered = (val2 & (0x01 << 9) >> 9);
416
417 /* Reset trigger flag and timers */
418 esb_unlock_registers();
419 writew((0x11 << 8), ESB_RELOAD_REG);
420
421 /* Done */
422 return 1;
423 382
424err_release: 383err_release:
425 pci_release_region(esb_pci, 0); 384 pci_release_region(esb_pci, 0);
426err_disable: 385err_disable:
427 pci_disable_device(esb_pci); 386 pci_disable_device(esb_pci);
428err_devput: 387err_devput:
429 pci_dev_put(esb_pci); 388 pci_dev_put(esb_pci);
430 }
431 return 0; 389 return 0;
432} 390}
433 391
392static void __devinit esb_initdevice(void)
393{
394 u8 val1;
395 u16 val2;
396
397 /*
398 * Config register:
399 * Bit 5 : 0 = Enable WDT_OUTPUT
400 * Bit 2 : 0 = set the timer frequency to the PCI clock
401 * divided by 2^15 (approx 1KHz).
402 * Bits 1:0 : 11 = WDT_INT_TYPE Disabled.
403 * The watchdog has two timers, it can be setup so that the
404 * expiry of timer1 results in an interrupt and the expiry of
405 * timer2 results in a reboot. We set it to not generate
406 * any interrupts as there is not much we can do with it
407 * right now.
408 */
409 pci_write_config_word(esb_pci, ESB_CONFIG_REG, 0x0003);
410
411 /* Check that the WDT isn't already locked */
412 pci_read_config_byte(esb_pci, ESB_LOCK_REG, &val1);
413 if (val1 & ESB_WDT_LOCK)
414 printk(KERN_WARNING PFX "nowayout already set\n");
415
416 /* Set the timer to watchdog mode and disable it for now */
417 pci_write_config_byte(esb_pci, ESB_LOCK_REG, 0x00);
418
419 /* Check if the watchdog was previously triggered */
420 esb_unlock_registers();
421 val2 = readw(ESB_RELOAD_REG);
422 if (val2 & ESB_WDT_TIMEOUT)
423 triggered = WDIOF_CARDRESET;
424
425 /* Reset WDT_TIMEOUT flag and timers */
426 esb_unlock_registers();
427 writew((ESB_WDT_TIMEOUT | ESB_WDT_RELOAD), ESB_RELOAD_REG);
428
429 /* And set the correct timeout value */
430 esb_timer_set_heartbeat(heartbeat);
431}
432
434static int __devinit esb_probe(struct platform_device *dev) 433static int __devinit esb_probe(struct platform_device *dev)
435{ 434{
436 int ret; 435 int ret;
@@ -441,13 +440,17 @@ static int __devinit esb_probe(struct platform_device *dev)
441 440
442 /* Check that the heartbeat value is within it's range; 441 /* Check that the heartbeat value is within it's range;
443 if not reset to the default */ 442 if not reset to the default */
444 if (esb_timer_set_heartbeat(heartbeat)) { 443 if (heartbeat < 0x1 || heartbeat > 2 * 0x03ff) {
445 esb_timer_set_heartbeat(WATCHDOG_HEARTBEAT); 444 heartbeat = WATCHDOG_HEARTBEAT;
446 printk(KERN_INFO PFX 445 printk(KERN_INFO PFX
447 "heartbeat value must be 1<heartbeat<2046, using %d\n", 446 "heartbeat value must be 1<heartbeat<2046, using %d\n",
448 heartbeat); 447 heartbeat);
449 } 448 }
450 449
450 /* Initialize the watchdog and make sure it does not run */
451 esb_initdevice();
452
453 /* Register the watchdog so that userspace has access to it */
451 ret = misc_register(&esb_miscdev); 454 ret = misc_register(&esb_miscdev);
452 if (ret != 0) { 455 if (ret != 0) {
453 printk(KERN_ERR PFX 456 printk(KERN_ERR PFX
@@ -455,7 +458,6 @@ static int __devinit esb_probe(struct platform_device *dev)
455 WATCHDOG_MINOR, ret); 458 WATCHDOG_MINOR, ret);
456 goto err_unmap; 459 goto err_unmap;
457 } 460 }
458 esb_timer_stop();
459 printk(KERN_INFO PFX 461 printk(KERN_INFO PFX
460 "initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n", 462 "initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n",
461 BASEADDR, heartbeat, nowayout); 463 BASEADDR, heartbeat, nowayout);
@@ -463,11 +465,8 @@ static int __devinit esb_probe(struct platform_device *dev)
463 465
464err_unmap: 466err_unmap:
465 iounmap(BASEADDR); 467 iounmap(BASEADDR);
466/* err_release: */
467 pci_release_region(esb_pci, 0); 468 pci_release_region(esb_pci, 0);
468/* err_disable: */
469 pci_disable_device(esb_pci); 469 pci_disable_device(esb_pci);
470/* err_devput: */
471 pci_dev_put(esb_pci); 470 pci_dev_put(esb_pci);
472 return ret; 471 return ret;
473} 472}
diff --git a/drivers/watchdog/ks8695_wdt.c b/drivers/watchdog/ks8695_wdt.c
index 74c92d384112..ae3832110acb 100644
--- a/drivers/watchdog/ks8695_wdt.c
+++ b/drivers/watchdog/ks8695_wdt.c
@@ -221,7 +221,7 @@ static struct miscdevice ks8695wdt_miscdev = {
221 .fops = &ks8695wdt_fops, 221 .fops = &ks8695wdt_fops,
222}; 222};
223 223
224static int __init ks8695wdt_probe(struct platform_device *pdev) 224static int __devinit ks8695wdt_probe(struct platform_device *pdev)
225{ 225{
226 int res; 226 int res;
227 227
@@ -238,7 +238,7 @@ static int __init ks8695wdt_probe(struct platform_device *pdev)
238 return 0; 238 return 0;
239} 239}
240 240
241static int __exit ks8695wdt_remove(struct platform_device *pdev) 241static int __devexit ks8695wdt_remove(struct platform_device *pdev)
242{ 242{
243 int res; 243 int res;
244 244
@@ -276,7 +276,7 @@ static int ks8695wdt_resume(struct platform_device *pdev)
276 276
277static struct platform_driver ks8695wdt_driver = { 277static struct platform_driver ks8695wdt_driver = {
278 .probe = ks8695wdt_probe, 278 .probe = ks8695wdt_probe,
279 .remove = __exit_p(ks8695wdt_remove), 279 .remove = __devexit_p(ks8695wdt_remove),
280 .shutdown = ks8695wdt_shutdown, 280 .shutdown = ks8695wdt_shutdown,
281 .suspend = ks8695wdt_suspend, 281 .suspend = ks8695wdt_suspend,
282 .resume = ks8695wdt_resume, 282 .resume = ks8695wdt_resume,
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index aa5ad6e33f02..f2713851aaab 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -258,7 +258,7 @@ static const struct file_operations omap_wdt_fops = {
258 .release = omap_wdt_release, 258 .release = omap_wdt_release,
259}; 259};
260 260
261static int __init omap_wdt_probe(struct platform_device *pdev) 261static int __devinit omap_wdt_probe(struct platform_device *pdev)
262{ 262{
263 struct resource *res, *mem; 263 struct resource *res, *mem;
264 struct omap_wdt_dev *wdev; 264 struct omap_wdt_dev *wdev;
@@ -367,7 +367,7 @@ static void omap_wdt_shutdown(struct platform_device *pdev)
367 omap_wdt_disable(wdev); 367 omap_wdt_disable(wdev);
368} 368}
369 369
370static int omap_wdt_remove(struct platform_device *pdev) 370static int __devexit omap_wdt_remove(struct platform_device *pdev)
371{ 371{
372 struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 372 struct omap_wdt_dev *wdev = platform_get_drvdata(pdev);
373 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 373 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -426,7 +426,7 @@ static int omap_wdt_resume(struct platform_device *pdev)
426 426
427static struct platform_driver omap_wdt_driver = { 427static struct platform_driver omap_wdt_driver = {
428 .probe = omap_wdt_probe, 428 .probe = omap_wdt_probe,
429 .remove = omap_wdt_remove, 429 .remove = __devexit_p(omap_wdt_remove),
430 .shutdown = omap_wdt_shutdown, 430 .shutdown = omap_wdt_shutdown,
431 .suspend = omap_wdt_suspend, 431 .suspend = omap_wdt_suspend,
432 .resume = omap_wdt_resume, 432 .resume = omap_wdt_resume,
diff --git a/drivers/watchdog/orion5x_wdt.c b/drivers/watchdog/orion5x_wdt.c
index e81441f103dd..7529616739d2 100644
--- a/drivers/watchdog/orion5x_wdt.c
+++ b/drivers/watchdog/orion5x_wdt.c
@@ -42,7 +42,17 @@ static unsigned int wdt_tclk;
42static unsigned long wdt_status; 42static unsigned long wdt_status;
43static spinlock_t wdt_lock; 43static spinlock_t wdt_lock;
44 44
45static void wdt_enable(void) 45static void orion5x_wdt_ping(void)
46{
47 spin_lock(&wdt_lock);
48
49 /* Reload watchdog duration */
50 writel(wdt_tclk * heartbeat, WDT_VAL);
51
52 spin_unlock(&wdt_lock);
53}
54
55static void orion5x_wdt_enable(void)
46{ 56{
47 u32 reg; 57 u32 reg;
48 58
@@ -69,7 +79,7 @@ static void wdt_enable(void)
69 spin_unlock(&wdt_lock); 79 spin_unlock(&wdt_lock);
70} 80}
71 81
72static void wdt_disable(void) 82static void orion5x_wdt_disable(void)
73{ 83{
74 u32 reg; 84 u32 reg;
75 85
@@ -101,7 +111,7 @@ static int orion5x_wdt_open(struct inode *inode, struct file *file)
101 if (test_and_set_bit(WDT_IN_USE, &wdt_status)) 111 if (test_and_set_bit(WDT_IN_USE, &wdt_status))
102 return -EBUSY; 112 return -EBUSY;
103 clear_bit(WDT_OK_TO_CLOSE, &wdt_status); 113 clear_bit(WDT_OK_TO_CLOSE, &wdt_status);
104 wdt_enable(); 114 orion5x_wdt_enable();
105 return nonseekable_open(inode, file); 115 return nonseekable_open(inode, file);
106} 116}
107 117
@@ -122,18 +132,28 @@ static ssize_t orion5x_wdt_write(struct file *file, const char *data,
122 set_bit(WDT_OK_TO_CLOSE, &wdt_status); 132 set_bit(WDT_OK_TO_CLOSE, &wdt_status);
123 } 133 }
124 } 134 }
125 wdt_enable(); 135 orion5x_wdt_ping();
126 } 136 }
127 return len; 137 return len;
128} 138}
129 139
130static struct watchdog_info ident = { 140static int orion5x_wdt_settimeout(int new_time)
141{
142 if ((new_time <= 0) || (new_time > wdt_max_duration))
143 return -EINVAL;
144
145 /* Set new watchdog time to be used when
146 * orion5x_wdt_enable() or orion5x_wdt_ping() is called. */
147 heartbeat = new_time;
148 return 0;
149}
150
151static const struct watchdog_info ident = {
131 .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | 152 .options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT |
132 WDIOF_KEEPALIVEPING, 153 WDIOF_KEEPALIVEPING,
133 .identity = "Orion5x Watchdog", 154 .identity = "Orion5x Watchdog",
134}; 155};
135 156
136
137static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd, 157static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
138 unsigned long arg) 158 unsigned long arg)
139{ 159{
@@ -152,7 +172,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
152 break; 172 break;
153 173
154 case WDIOC_KEEPALIVE: 174 case WDIOC_KEEPALIVE:
155 wdt_enable(); 175 orion5x_wdt_ping();
156 ret = 0; 176 ret = 0;
157 break; 177 break;
158 178
@@ -161,12 +181,11 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
161 if (ret) 181 if (ret)
162 break; 182 break;
163 183
164 if (time <= 0 || time > wdt_max_duration) { 184 if (orion5x_wdt_settimeout(time)) {
165 ret = -EINVAL; 185 ret = -EINVAL;
166 break; 186 break;
167 } 187 }
168 heartbeat = time; 188 orion5x_wdt_ping();
169 wdt_enable();
170 /* Fall through */ 189 /* Fall through */
171 190
172 case WDIOC_GETTIMEOUT: 191 case WDIOC_GETTIMEOUT:
@@ -187,7 +206,7 @@ static long orion5x_wdt_ioctl(struct file *file, unsigned int cmd,
187static int orion5x_wdt_release(struct inode *inode, struct file *file) 206static int orion5x_wdt_release(struct inode *inode, struct file *file)
188{ 207{
189 if (test_bit(WDT_OK_TO_CLOSE, &wdt_status)) 208 if (test_bit(WDT_OK_TO_CLOSE, &wdt_status))
190 wdt_disable(); 209 orion5x_wdt_disable();
191 else 210 else
192 printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - " 211 printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - "
193 "timer will not stop\n"); 212 "timer will not stop\n");
@@ -230,7 +249,7 @@ static int __devinit orion5x_wdt_probe(struct platform_device *pdev)
230 orion5x_wdt_miscdev.parent = &pdev->dev; 249 orion5x_wdt_miscdev.parent = &pdev->dev;
231 250
232 wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk; 251 wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk;
233 if (heartbeat <= 0 || heartbeat > wdt_max_duration) 252 if (orion5x_wdt_settimeout(heartbeat))
234 heartbeat = wdt_max_duration; 253 heartbeat = wdt_max_duration;
235 254
236 ret = misc_register(&orion5x_wdt_miscdev); 255 ret = misc_register(&orion5x_wdt_miscdev);
@@ -247,7 +266,7 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
247 int ret; 266 int ret;
248 267
249 if (test_bit(WDT_IN_USE, &wdt_status)) { 268 if (test_bit(WDT_IN_USE, &wdt_status)) {
250 wdt_disable(); 269 orion5x_wdt_disable();
251 clear_bit(WDT_IN_USE, &wdt_status); 270 clear_bit(WDT_IN_USE, &wdt_status);
252 } 271 }
253 272
@@ -258,9 +277,16 @@ static int __devexit orion5x_wdt_remove(struct platform_device *pdev)
258 return ret; 277 return ret;
259} 278}
260 279
280static void orion5x_wdt_shutdown(struct platform_device *pdev)
281{
282 if (test_bit(WDT_IN_USE, &wdt_status))
283 orion5x_wdt_disable();
284}
285
261static struct platform_driver orion5x_wdt_driver = { 286static struct platform_driver orion5x_wdt_driver = {
262 .probe = orion5x_wdt_probe, 287 .probe = orion5x_wdt_probe,
263 .remove = __devexit_p(orion5x_wdt_remove), 288 .remove = __devexit_p(orion5x_wdt_remove),
289 .shutdown = orion5x_wdt_shutdown,
264 .driver = { 290 .driver = {
265 .owner = THIS_MODULE, 291 .owner = THIS_MODULE,
266 .name = "orion5x_wdt", 292 .name = "orion5x_wdt",
@@ -285,10 +311,11 @@ MODULE_AUTHOR("Sylver Bruneau <sylver.bruneau@googlemail.com>");
285MODULE_DESCRIPTION("Orion5x Processor Watchdog"); 311MODULE_DESCRIPTION("Orion5x Processor Watchdog");
286 312
287module_param(heartbeat, int, 0); 313module_param(heartbeat, int, 0);
288MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds"); 314MODULE_PARM_DESC(heartbeat, "Initial watchdog heartbeat in seconds");
289 315
290module_param(nowayout, int, 0); 316module_param(nowayout, int, 0);
291MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started"); 317MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
318 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
292 319
293MODULE_LICENSE("GPL"); 320MODULE_LICENSE("GPL");
294MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); 321MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
diff --git a/firmware/.gitignore b/firmware/.gitignore
index f89a21fffbf1..d9c69017bc9a 100644
--- a/firmware/.gitignore
+++ b/firmware/.gitignore
@@ -3,3 +3,4 @@
3*.bin 3*.bin
4*.csp 4*.csp
5*.dsp 5*.dsp
6ihex2fw
diff --git a/firmware/Makefile b/firmware/Makefile
index 1e7fd4df16a7..142c17ab9e57 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -41,6 +41,7 @@ fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
41fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ 41fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
42 cxgb3/t3c_psram-1.1.0.bin \ 42 cxgb3/t3c_psram-1.1.0.bin \
43 cxgb3/t3fw-7.1.0.bin 43 cxgb3/t3fw-7.1.0.bin
44fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
44fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin 45fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
45fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ 46fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
46 e100/d102e_ucode.bin 47 e100/d102e_ucode.bin
@@ -59,14 +60,9 @@ fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
59 sb16/ima_adpcm_init.csp \ 60 sb16/ima_adpcm_init.csp \
60 sb16/ima_adpcm_playback.csp \ 61 sb16/ima_adpcm_playback.csp \
61 sb16/ima_adpcm_capture.csp 62 sb16/ima_adpcm_capture.csp
62fw-shipped-$(CONFIG_SLICOSS) += slicoss/gbdownload.sys slicoss/gbrcvucode.sys \
63 slicoss/oasisdbgdownload.sys \
64 slicoss/oasisdownload.sys \
65 slicoss/oasisrcvucode.sys
66fw-shipped-$(CONFIG_SXG) += sxg/saharadownloadB.sys \
67 sxg/saharadbgdownloadB.sys
68fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ 63fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
69 yamaha/ds1e_ctrl.fw 64 yamaha/ds1e_ctrl.fw
65fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
70fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin 66fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
71fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ 67fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
72 tigon/tg3_tso5.bin 68 tigon/tg3_tso5.bin
@@ -123,10 +119,10 @@ quiet_cmd_ihex = IHEX $@
123 cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@ 119 cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@
124 120
125quiet_cmd_ihex2fw = IHEX2FW $@ 121quiet_cmd_ihex2fw = IHEX2FW $@
126 cmd_ihex2fw = $(objtree)/scripts/ihex2fw $< $@ 122 cmd_ihex2fw = $(objtree)/$(obj)/ihex2fw $< $@
127 123
128quiet_cmd_h16tofw = H16TOFW $@ 124quiet_cmd_h16tofw = H16TOFW $@
129 cmd_h16tofw = $(objtree)/scripts/ihex2fw -w $< $@ 125 cmd_h16tofw = $(objtree)/$(obj)/ihex2fw -w $< $@
130 126
131quiet_cmd_fwbin = MK_FW $@ 127quiet_cmd_fwbin = MK_FW $@
132 cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ 128 cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \
@@ -185,15 +181,27 @@ $(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/%
185$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %) 181$(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %)
186 $(call cmd,ihex) 182 $(call cmd,ihex)
187 183
184# Don't depend on ihex2fw if we're installing and it already exists.
185# Putting it after | in the dependencies doesn't seem sufficient when
186# we're installing after a cross-compile, because ihex2fw has dependencies
187# on stuff like /usr/lib/gcc/ppc64-redhat-linux/4.3.0/include/stddef.h and
188# thus wants to be rebuilt. Which it can't be, if the prebuilt kernel tree
189# is exported read-only for someone to run 'make install'.
190ifeq ($(INSTALL):$(wildcard $(obj)/ihex2fw),install:$(obj)/ihex2fw)
191ihex2fw_dep :=
192else
193ihex2fw_dep := $(obj)/ihex2fw
194endif
195
188# .HEX is also Intel HEX, but where the offset and length in each record 196# .HEX is also Intel HEX, but where the offset and length in each record
189# is actually meaningful, because the firmware has to be loaded in a certain 197# is actually meaningful, because the firmware has to be loaded in a certain
190# order rather than as a single binary blob. Thus, we convert them into our 198# order rather than as a single binary blob. Thus, we convert them into our
191# more compact binary representation of ihex records (<linux/ihex.h>) 199# more compact binary representation of ihex records (<linux/ihex.h>)
192$(obj)/%.fw: $(obj)/%.HEX | $(objtree)/$(obj)/$$(dir %) 200$(obj)/%.fw: $(obj)/%.HEX $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
193 $(call cmd,ihex2fw) 201 $(call cmd,ihex2fw)
194 202
195# .H16 is our own modified form of Intel HEX, with 16-bit length for records. 203# .H16 is our own modified form of Intel HEX, with 16-bit length for records.
196$(obj)/%.fw: $(obj)/%.H16 | $(objtree)/$(obj)/$$(dir %) 204$(obj)/%.fw: $(obj)/%.H16 $(ihex2fw_dep) | $(objtree)/$(obj)/$$(dir %)
197 $(call cmd,h16tofw) 205 $(call cmd,h16tofw)
198 206
199$(firmware-dirs): 207$(firmware-dirs):
@@ -210,3 +218,5 @@ targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \
210# Without this, built-in.o won't be created when it's empty, and the 218# Without this, built-in.o won't be created when it's empty, and the
211# final vmlinux link will fail. 219# final vmlinux link will fail.
212obj-n := dummy 220obj-n := dummy
221
222hostprogs-y := ihex2fw
diff --git a/firmware/README.AddingFirmware b/firmware/README.AddingFirmware
new file mode 100644
index 000000000000..e24cd8986d8b
--- /dev/null
+++ b/firmware/README.AddingFirmware
@@ -0,0 +1,34 @@
1
2 DO NOT ADD FIRMWARE TO THIS DIRECTORY.
3 ======================================
4
5This directory is only here to contain firmware images extracted from old
6device drivers which predate the common use of request_firmware().
7
8As we update those drivers to use request_firmware() and keep a clean
9separation between code and firmware, we put the extracted firmware
10here.
11
12This directory is _NOT_ for adding arbitrary new firmware images. The
13place to add those is the separate linux-firmware repository:
14
15 git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
16
17That repository contains all these firmware images which have been
18extracted from older drivers, as well various new firmware images which
19we were never permitted to include in a GPL'd work, but which we _have_
20been permitted to redistribute under separate cover.
21
22To submit firmware to that repository, please send either a git binary
23diff or preferably a git pull request to:
24 David Woodhouse <dwmw2@infradead.org>
25
26Your commit should include an update to the WHENCE file clearly
27identifying the licence under which the firmware is available, and
28that it is redistributable. If the licence is long and involved, it's
29permitted to include it in a separate file and refer to it from the
30WHENCE file.
31
32Ideally, your commit should contain a Signed-Off-By: from someone
33authoritative on the licensing of the firmware in question (i.e. from
34within the company that owns the code).
diff --git a/firmware/WHENCE b/firmware/WHENCE
index e4deb511cc73..10f61c9e5a8a 100644
--- a/firmware/WHENCE
+++ b/firmware/WHENCE
@@ -8,6 +8,24 @@ kernel.
8 8
9-------------------------------------------------------------------------- 9--------------------------------------------------------------------------
10 10
11Driver: ambassador -- Madge Ambassador (Collage PCI 155 Server) ATM NIC.
12
13File: firmware/atmsar11.fw
14
15Licence: Allegedly GPLv2+, but no source visible. Marked:
16
17 Madge Ambassador ATM Adapter microcode.
18 Copyright (C) 1995-1999 Madge Networks Ltd.
19
20 This microcode data is placed under the terms of the GNU General
21 Public License. The GPL is contained in /usr/doc/copyright/GPL on a
22 Debian system and in the file COPYING in the Linux kernel source.
23
24 We would prefer you not to distribute modified versions without
25 consultation and not to ask for assembly/other microcode source.
26
27--------------------------------------------------------------------------
28
11Driver: korg1212 -- Korg 1212 IO audio device 29Driver: korg1212 -- Korg 1212 IO audio device
12 30
13File: korg/k1212.dsp 31File: korg/k1212.dsp
@@ -390,59 +408,6 @@ Found in hex form in kernel source.
390 408
391-------------------------------------------------------------------------- 409--------------------------------------------------------------------------
392 410
393Driver: SLICOSS - Alacritech IS-NIC products
394
395File: slicoss/gbdownload.sys.ihex
396File: slicoss/gbrcvucode.sys.ihex
397File: slicoss/oasisdbgdownload.sys.ihex
398File: slicoss/oasisdownload.sys.ihex
399File: slicoss/oasisrcvucode.sys.ihex
400
401Licence:
402 Copyright (C) 1999-2009 Alacritech, Inc.
403
404 as an unpublished work. This notice does not imply unrestricted or
405 public access to the source code from which this firmware image is
406 derived. Except as noted below this firmware image may not be
407 reproduced, used, sold or transferred to any third party without
408 Alacritech's prior written consent. All Rights Reserved.
409
410 Permission is hereby granted for the distribution of this firmware
411 image as part of a Linux or other Open Source operating system kernel
412 in text or binary form as required.
413
414 This firmware may not be modified and may only be used with
415 Alacritech hardware.
416
417Found in hex form in kernel source.
418
419--------------------------------------------------------------------------
420
421Driver: SXG - Alacritech IS-NIC products
422
423File: sxg/saharadownloadB.sys.ihex
424File: sxg/saharadbgdownloadB.sys.ihex
425
426Licence:
427 Copyright (C) 1999-2009 Alacritech, Inc.
428
429 as an unpublished work. This notice does not imply unrestricted or
430 public access to the source code from which this firmware image is
431 derived. Except as noted below this firmware image may not be
432 reproduced, used, sold or transferred to any third party without
433 Alacritech's prior written consent. All Rights Reserved.
434
435 Permission is hereby granted for the distribution of this firmware
436 image as part of a Linux or other Open Source operating system kernel
437 in text or binary form as required.
438
439 This firmware may not be modified and may only be used with
440 Alacritech hardware.
441
442Found in hex form in kernel source.
443
444--------------------------------------------------------------------------
445
446Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter 411Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
447 412
448File: cxgb3/t3b_psram-1.1.0.bin.ihex 413File: cxgb3/t3b_psram-1.1.0.bin.ihex
@@ -662,3 +627,24 @@ Licence:
662Found in hex form in kernel source. 627Found in hex form in kernel source.
663 628
664-------------------------------------------------------------------------- 629--------------------------------------------------------------------------
630
631Driver: DVB AV7110 -- AV7110 cards
632
633File: av7110/bootcode.bin
634
635Licence: GPLv2 or later
636
637ARM assembly source code available at http://www.linuxtv.org/downloads/firmware/Boot.S
638
639--------------------------------------------------------------------------
640
641Driver: wavefront - ISA WaveFront sound card
642
643File: yamaha/yss225_registers.bin
644
645Licence: Allegedly GPLv2+, but no source visible.
646
647Found in hex form in kernel source, with the following comment:
648 Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
649
650--------------------------------------------------------------------------
diff --git a/firmware/av7110/Boot.S b/firmware/av7110/Boot.S
new file mode 100644
index 000000000000..d562fdc2908f
--- /dev/null
+++ b/firmware/av7110/Boot.S
@@ -0,0 +1,109 @@
1/*
2 Boot.S: boot loader for Siemens DVB-S card
3
4 Copyright (C) 2001 Convergence integrated media GmbH
5 Written by Ralph Metzler
6 <rjkm@convergence.de>
7 Copyright (C) 2006 Matthieu CASTET <castet.mattheiu@free.fr>
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
22
23*/
24
25/*
26 check AV711x_3_1.pdf for some hardware infos
27 build it with :
28 $ cc -mbig-endian -c Boot.S
29 $ ld -Ttext 0x2c000000 -EB -o Boot Boot.o
30 $ objcopy -Obinary Boot
31*/
32
33 .text
34 .align
35 .globl _start
36_start:
37 b reset // reset vector
38 movs pc, r14 // undefined
39 subs pc, r14, #4 // SWI
40 subs pc, r14, #4 // prefetch abort
41 subs pc, r14, #8 // data abort
42 subs pc, r14, #4 // reserved
43 subs pc, r14, #4 // IRQ
44 subs pc, r14, #4 // FIQ
45
46 .word tbl // table needed by firmware ROM
47tbl: .word (endtbl - tbl)
48 .word 0
49 .word conf
50endtbl: .word 0
51conf: .word 0xa5a55a5a
52 .word 0x001f1555
53 .word 0x00000009
54
55reset: ldr r13, buffer
56 ldr r4, flag
57 mov r0, #0
58 str r0, [r4]
59 str r0, [r4, #4]
60
61 ldr r1, wait_address
62 ldr r2, flag_address
63 ldr r3, sram
64
65copycode: // copy the code HW Sram
66 ldmia r1!, {r5-r12}
67 stmia r3!, {r5-r12}
68 cmp r1, r2
69 ble copycode
70 ldr pc, sram // jump to the copied code
71
72wait: ldrh r1, [r4] // wait for flag!=0
73 cmp r1, #0
74 beq wait
75
76 mov r1, r13 // buffer address
77 ldr r3, [r4,#4] // destaddr
78
79 ldrh r2, [r4,#2] // get segment length
80 add r2, r2, #63 // round length to next 64 bytes
81 movs r2, r2, lsr #6 // and divide by 64
82 moveq r0, #2 // if 0, set flag to 2, else signal
83 strh r0, [r4] // that buffer is accepted by setting to 0
84 beq wait
85
86copyloop:
87 ldmia r1!, {r5-r12}
88 stmia r3!, {r5-r12}
89 ldmia r1!, {r5-r12}
90 stmia r3!, {r5-r12}
91 subs r2, r2, #1
92 bne copyloop
93
94 eor r13, r13, #0x1400 // switch to other buffer
95 b wait
96
97// flag is stored at 0x2c0003f8, length at 0x2c0003fa,
98// destaddr at 0x2c0003fc
99
100flag: .word 0x2c0003f8
101
102
103// buffer 1 is at 0x2c000400, buffer 2 at 0x2c001000
104
105buffer: .word 0x2c000400
106
107sram: .word 0x9e000800
108wait_address: .word wait
109flag_address: .word flag
diff --git a/firmware/av7110/bootcode.bin.ihex b/firmware/av7110/bootcode.bin.ihex
new file mode 100644
index 000000000000..26a2993e0723
--- /dev/null
+++ b/firmware/av7110/bootcode.bin.ihex
@@ -0,0 +1,15 @@
1:10000000EA00000EE1B0F00EE25EF004E25EF00401
2:10001000E25EF008E25EF004E25EF004E25EF0040C
3:100020002C0000240000000C000000002C00003414
4:1000300000000000A5A55A5A001F15550000000930
5:10004000E59FD07CE59F4074E3A00000E5840000BC
6:10005000E5840004E59F1070E59F2070E59F306403
7:10006000E8B11FE0E8A31FE0E1510002DAFFFFFB67
8:10007000E59FF050E1D410B0E35100000AFFFFFC0F
9:10008000E1A0100DE5943004E1D420B2E282203FDB
10:10009000E1B0232203A00002E1C400B00AFFFFF494
11:1000A000E8B11FE0E8A31FE0E8B11FE0E8A31FE00C
12:1000B000E25220011AFFFFF9E22DDB05EAFFFFEC17
13:1000C0002C0003F82C0004009E0008002C00007493
14:0400D0002C0000C040
15:00000001FF
diff --git a/scripts/ihex2fw.c b/firmware/ihex2fw.c
index 8f7fdaa9e010..8f7fdaa9e010 100644
--- a/scripts/ihex2fw.c
+++ b/firmware/ihex2fw.c
diff --git a/firmware/slicoss/gbdownload.sys.ihex b/firmware/slicoss/gbdownload.sys.ihex
deleted file mode 100644
index dc17e639b69a..000000000000
--- a/firmware/slicoss/gbdownload.sys.ihex
+++ /dev/null
@@ -1,6148 +0,0 @@
1:10000000020000000080000000000100000000006D
2:10001000008000001200004081B200001800004083
3:1000200081B200001E00004081B2000003000040C9
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B200001100004081B2000000801FE931
10:1000900018310000000041E980B201000F0040E982
11:1000A00080B2000000000040A59901001600294020
12:1000B00081320000160014BC803200000F0093BC97
13:1000C000803200000000504081B2010000800040FA
14:1000D00081B2000010000040A59901001C002940D9
15:1000E000813200001C0014BC80320000110093BC5F
16:1000F000803200000000504081B2010001800040C9
17:1001000081B2000020000040A59901002200294092
18:1001100081320000220014BC803200000E0093BC2B
19:100120008032000000000049DD8101002B01004009
20:10013000813201003C01004081320100270014BCE3
21:1001400080320000140113BC80320000549500403E
22:1001500045990100FFFF0040E599010000002F4094
23:1001600049B1010000000040E1B101000000004B76
24:10017000B7B3010000000040B5B30100D900004052
25:10018000B333010000000040B6D30100320095E80F
26:1001900080320000FFFF00E880880100B8002640A0
27:1001A0008132000000000040FDB30100000000406B
28:1001B000FFB301003C002250836C000000000045AA
29:1001C000FD930100A5A500A6B4A701003C00A25024
30:1001D000B573000000010040813201003C00A245DF
31:1001E0008032000000000046FD9301004100004005
32:1001F00081B200007F000020F5CF01001C0100FA51
33:10020000B3330100A5A500DAB5AB01009900A250F7
34:10021000B563000000000044FD930100D5000044D8
35:10022000B333010000000040D5990100000000DA5E
36:10023000D7B10100FFFF00DAED8B0100D5000046C9
37:10024000B333010008000040D5990100000000DA36
38:10025000D7B10100FF0000DAEF8B0100FF0000DAE8
39:10026000E38F0100D5000048B33301003C0000409B
40:10027000D5990100FF0000DAD78D0100FFFF00DAF9
41:10028000F1DB0100FF0000DAE98B0100000000480B
42:10029000E9E30100D500004BB33301002C0000401E
43:1002A000D5990100000000DAD7B10100D500004C5B
44:1002B000B3330100FFFF00DAEBDB0100D500004E95
45:1002C000B3330100030000DA818801000000005C04
46:1002D00081E00100FFFF00DAB5DB01005C00264091
47:1002E00081320000010000DAB5CF010000F000A764
48:1002F000B4870100000000DA819401000000004092
49:10030000D8B10100D5000050B3330100FFFF00DA7F
50:10031000B58B01006200264CB5630000010000DAD5
51:10032000B5CF0100000000DADFB10100D5000052B6
52:10033000B3330100FF0000DA4B890100080000DA46
53:10034000DFF70100FF0000EFDF8B010069002240B2
54:10035000DF7F000000000047FD9301002000004007
55:10036000B39B0100D500004081320100060000402F
56:10037000D5990100080000DAD7E50100F80000DA9D
57:10038000B38B010034000040D5990100000000D972
58:10039000D7B10100020000D9D5C90100000000DA80
59:1003A000D7B1010022000040B39B0100D5000040FE
60:1003B0008132010000000048B5F30100030000DABB
61:1003C0007B89010000010040DD9B0100D500005D3C
62:1003D000B3330100FFFF00DAE78B01008A002640FB
63:1003E0008132000000000041FD9301000000005038
64:1003F000E7E3010000010040D5990100000000F68C
65:10040000E7970100000000F3D7B10100D500005EBE
66:10041000B3330100FF0000DAE58B01000000004863
67:10042000E5E3010008010040D5990100FF0000DA72
68:10043000B58F0100000000F7B5970100000000DA59
69:10044000D7B101003C010040D5990100000000F83F
70:10045000E5970100000000F2D7B101000002004062
71:10046000DD9B0100960022F5813200000000004271
72:10047000FD930100000000EED5B10100000000F680
73:10048000EB970100000000F5D7B10100080000EA79
74:10049000D4C90100000000F7E3970100000000F15B
75:1004A000D7B101003C0000EEDDCB0100000000EE02
76:1004B000D5B10100000000F8E9970100000000F448
77:1004C000D7B10100D500004AB3330100FFFF00DAC5
78:1004D000DD890100B700004081B20000000000404B
79:1004E000D5990100050000A6D6B101009A1300EBD2
80:1004F000D699010008000040D5990100000200A62D
81:10050000D6B10100010000EBD69901002C0000409B
82:10051000D5990100050000A6D6B101009A1300EBA1
83:10052000D69901003C010040D5990100000200402D
84:10053000D799010000000042FD9301003C000040FB
85:10054000D5990100000000A6D6B10100000100EB22
86:10055000D699010000010040D5990100060000A6CF
87:10056000D6B101009A1300EBD699010008010040B2
88:10057000D5990100000200A6D6B10100010000EBF0
89:10058000D699010000000040D9B1010000000040F0
90:10059000DFB1010006000040D5990100A00000A6CF
91:1005A000D6B10100640000404B99010000000040FA
92:1005B0007B99010002040040DD990100B70013BCE3
93:1005C0008032000002080040DD9901000000004C6C
94:1005D000DD910100B80095E88430000000002FE9AB
95:1005E000FAB3010000000040D1B10100FF00004259
96:1005F000808801003400004080CE0100B800A64091
97:1006000081320000C100004081320100028022409E
98:1006100080320000B800004081B200000000004FAE
99:1006200081B00100CA0009F981320000C80008F950
100:1006300081320000D4001FFDF9330000C7009EFD89
101:10064000813200000000004AF3930100000080485E
102:10065000F3930100000000FDF7B3010000008049A2
103:10066000F3930100000000FC19B10100CF000AF96A
104:1006700081320000000040FB81B20100000041FD1A
105:1006800081B20100000780F9F38F0100000742F9F1
106:10069000F38F0100D300A2FFF76F0000000043407A
107:1006A00081B201000000A2FFFBEF0000000080FC0F
108:1006B000E1B101000000804081B00100D80006FED9
109:1006C0008132000000000041B3E301001C0100FA88
110:1006D000B3C30000DA0000428DB00000000000410A
111:1006E0008DB001000004004083980100EB00004041
112:1006F000813201000000005083B0010000008496A8
113:1007000080B2000026010040813201002501004036
114:100710002D110100000000402D810100000000DAD1
115:10072000B5EB0100E400849680320000E500004053
116:10073000B593000000000040B5830100DE00A24137
117:1007400083500000000000422D810100260100417D
118:100750002D01010000000041B3C30100DA00A241F5
119:100760008D500000000080DAB5BF01000000004B92
120:1007700081B00100000000DB81D00100000000D941
121:10078000B9B3010000000040B8E30100000000DC44
122:10079000B9EB010000000041B8970100150000DC32
123:1007A000B9E70100000000412D810100000000DBDD
124:1007B00081B00100270100422D11010025010040F8
125:1007C0002D110100280100402D0101000000004111
126:1007D0002D910100260100408132010025010040D9
127:1007E0002D110100000000402D8101000000A241F8
128:1007F00081D000000000849680320100FF00A0DC60
129:10080000B96B0000F80000412D910000F800004194
130:100810002D810000D8000040B3330100000090DAC1
131:100820008BB000001100004588F401004000004436
132:1008300080CE01000000A44081B200000000A3446B
133:1008400089EC00000000004289D001000000004255
134:1008500087B00100D9000043B2330100000000500E
135:10086000B5F301000C01A0DA8B400000000000414C
136:100870008BC001000000004187C001000801A241B7
137:1008800089500000FFFF00458888010010000045E6
138:100890008AF40100120190448A40000000000041E7
139:1008A0008BC00100FFFF00458AA8010000008050B6
140:1008B0008BE0010000800040F99B010000C0004077
141:1008C000B3CF01001C0100FC193101001C0140DA0A
142:1008D00081320100000041DA81B2010000000041D4
143:1008E000F9C3010016019FDA813200000280004046
144:1008F00081B200000000004491B00100000000D966
145:100900002BB101001E019F9480320000180000945A
146:1009100092E4010000000048B5F301000000004926
147:10092000B497010000000041B3C301001D01A241C2
148:1009300091500000000080402BB1010029010051BE
149:1009400093B000002901004D93B000002901004937
150:1009500093B000000000004293B001002901A241C1
151:10096000935000000000804081B201000000104060
152:1009700081B201000000114081B20100000012406C
153:1009800081B201000000134081B201000000144058
154:1009900081B201000000154081B201000000164044
155:1009A00081B201000000174081B201000000184030
156:1009B00081B201000000194081B2010000001A401C
157:1009C00081B2010000001B4081B2010000001C4008
158:1009D00081B2010000001D4081B2010000001E40F4
159:1009E00081B2010000001F4081B201000000804080
160:1009F00081B2010000040040A199010000000050F4
161:100A0000A1D10100000000401BB001000000004027
162:100A100019B001000000004017B0010000000040C4
163:100A200015B001000000004013B0010000000040BC
164:100A300011B00100000000400FB0010000000040B4
165:100A40000DB00100000000400BB0010000000040AC
166:100A500009B001000000004007B0010000000040A4
167:100A600005B001000000004003B00100000000409C
168:100A700001B0010044012048A15100000000804065
169:100A800081B201005001224B747D000000008040C3
170:100A900081B201006000004B60990100000000B1CC
171:100AA0007EB101005101A840813200004E0100409A
172:100AB00081B20000040080409798010000000058B7
173:100AC00007900100F39F004081B200000000004445
174:100AD000A5B30100AF02004081320100C502004011
175:100AE000813201000000005C07900100F39F00408C
176:100AF000BFB300005F0122CC857F000000000051E1
177:100B000007900100F39F004081B200000000004008
178:100B100049B10100AE0300CBA3C90100D0140040CD
179:100B2000A19B01000000002046B101000000004828
180:100B3000F1B10100000000D0F1B10100000000CAD5
181:100B4000F1B10100000000D5E1B101000700004053
182:100B5000619901002000002062DD01006801A840C9
183:100B600081320000000000CC85930100C5020040E6
184:100B700081320100D014004043990100000000FAC6
185:100B8000BAB30100000000FAA4B30100000000F8AD
186:100B9000BCB3010000142F4081B00100000000E749
187:100BA000A7B30100000000D8A9B30100FF0000DDD9
188:100BB000818801000200004080F4010078010040BB
189:100BC00080C80100880100DD813200000000004083
190:100BD00010B100008901004081B200008A0100408C
191:100BE00081B200008B01004081B200008C01004006
192:100BF00081B200008D01004081B200008F010040F1
193:100C000081B200009101004081B200005501004016
194:100C100081B20000D201004081B2000055010040C5
195:100C200081B20000E001004081B20000E10100401B
196:100C300081B200007F02004081B2000080020040CB
197:100C400081B20000F19F004081B20000F29F00409D
198:100C500081B200007701004181C01A005A01514061
199:100C600081B21A005A01524081B21A005A0155400D
200:100C700081B21A005A01564081B21A005501918181
201:100C800080301A005A01454081B21A005501918204
202:100C900080301A005A01464081B200000000004036
203:100CA00089B0010000002F4081B001000014004015
204:100CB00049990100B50122DEE16D00000000004C01
205:100CC00049C101000000004181C001009401A2441B
206:100CD000816C00000000004C49D101009C012240C1
207:100CE000E16D00009801A2418150000055010041D2
208:100CF000BFB3000000000042BFB301005501A00FC8
209:100D0000BD6F0000000000DEE1B101000000004402
210:100D100049C10100B701004019990100000042409B
211:100D200081B20100000043FF85B00100000000DE39
212:100D300019B10100000042FF87B00100000043FF2D
213:100D4000E1B101000000004449C1010000002FFF93
214:100D5000E1B10100081400A480CC0100AC012640E0
215:100D6000813200000000004185C00100AA01A24CB0
216:100D700081500000B60122D281320000B10122412F
217:100D8000A56F00005501A2E081320000000000D2F2
218:100D9000C1B301000000005C8990010000004042E6
219:100DA00080B201000000414380B20100000000F069
220:100DB000889401005A010044E0B10000B3010048EA
221:100DC00049C10000B101005B89900000B09F00A004
222:100DD0009EB000000000004D81B001000000004303
223:100DE000CB8301000000454081B20100BA01A2415D
224:100DF000815000000000454081B2010000004540E4
225:100E000081B20100C4019182823000000000008A9A
226:100E100080B00100B69F004080CE0100C301A64013
227:100E200081320000C401564081B20000000000532E
228:100E30006F930100F39F00526F9300000000004D7C
229:100E400081B0010000000042CD8301000000464057
230:100E500081B20100C701A24181500000000046405C
231:100E600081B201000000464081B20100D1019181B0
232:100E7000823000000000008980B00100B69F004071
233:100E800080CE0100D001A64081320000D101554042
234:100E900081B20000000000526F930100F39F0053E5
235:100EA0006F9300000000004083B001000014004078
236:100EB000499901000000234081B00100DA0122DEDF
237:100EC000E16D00000000004C49C10100000000413C
238:100ED00081C00100D501A244816C0000550100438E
239:100EE000BFB30000000000F818B10100000040F896
240:100EF00080B20100000041F080B20100000000401B
241:100F0000F1B1010000000040F1B101005A010040C0
242:100F1000E1B10000E201004091B00000000000419A
243:100F200091B00100D0142E4049B1010005000040ED
244:100F3000A39B0100080000DD81F40100E7010040EF
245:100F400080C801000000004010B10000ED01004029
246:100F500081B00000580100DEA1B30000FF01004095
247:100F600081B200000102004081B000000702004091
248:100F700081B20000570100DFE1B10000000000D0A5
249:100F8000BAB30100000000DEA1B10100020000D2EE
250:100F9000A5E70100000000D2C1B30100000000007D
251:100FA000F0B10100F7012244C1530000F601844171
252:100FB00081400000FA01004081320100000000D0B1
253:100FC00045B10100F1010041A1C10000B1020040A2
254:100FD00081320100C5020040813201005A0100DD6A
255:100FE000A1B100000000004081B0010040000040BD
256:100FF000A59B0100B102004081320100400000D3F6
257:10100000A7CB0100C50200E0A5B30000030000402B
258:10101000A39B0100580100DEA1B3000000000044C2
259:10102000BFB30100000000DE819001005501A2BAAB
260:1010300080040000600000DE619901000402A8B194
261:101040008030000057010040E0B10000000000D0F7
262:10105000BAB3010068020040819801005D02004DB2
263:101060008330010000000044E1B3010000000044AF
264:10107000E3B3010000000044E5B3010000000044B8
265:10108000E9B3010000000044EBB30100000000449C
266:10109000F5B3010000000044F7B301000000004474
267:1010A000F9B30100150222408F6F00007502004065
268:1010B000819801005D0200C7833001007D0200407D
269:1010C000819801005D02004283300100000000E8C9
270:1010D000F1B10100000000E9F1B10100000000EAF7
271:1010E000F1B10100000000EBF1B10100000000854A
272:1010F000F0B10100000000ECF1B10100000000EDD2
273:10110000F1B10100000000B2F0B10100E09F004029
274:101110008132010000000040F0B1010000000040F9
275:10112000F1B10100000000ABF0B10100000000B817
276:10113000F0B10100000000B9F0B10100000000BAF8
277:10114000F0B10100000000BBF0B101002902B8407D
278:101150008130000000000040819001002B02B94066
279:101160008132000000000041819001002D02BA4050
280:101170008132000000000042819001002F02BB403C
281:101180008132000000000043819001003102BC4028
282:101190008132000000000044819001003302BD4014
283:1011A0008132000000000045819001003502BE4000
284:1011B0008132000000000046819001003702BF40EC
285:1011C0008132000000000047819001003902C840D0
286:1011D0008132000000000048819001003B02C940BC
287:1011E0008132000000000049819001003D02CA40A8
288:1011F000813200000000004A819001003F02CB4094
289:10120000813200000000004B819001004102CC407F
290:10121000813200000000004C819001004302CD406B
291:10122000813200000000004D819001004502CE4057
292:10123000813200000000004E819001004702CF4043
293:10124000813200000000004F81900100000000404A
294:10125000F0B1010040000040A59B0100AF0200403A
295:1012600081320100C502004081320100D0142E06F7
296:10127000A5B30100400000D3A7CB0100000000F09F
297:10128000F1B10100000000F1F1B10100000000F235
298:10129000F1B10100000000F4F1B10100000000F51F
299:1012A000F1B10100000000FAF1B10100000000FB03
300:1012B000F1B10100000000FCF1B10100000000EB01
301:1012C000F1B10100000000EEF1B10100000000EFFB
302:1012D000F1B10100000000F3F1B10100000000F6DF
303:1012E000F1B10100000000FDF1B10100F70100C7FC
304:1012F000E1B100000000804081B2010063020048BB
305:1013000080320000000051401AB1010000004D4041
306:1013100081B201000000454081B201006002A2419B
307:10132000835000005C02494081B20000000052403E
308:101330001CB1010000004E4081B201000000464097
309:1013400081B201006502A241835000005C024A4064
310:1013500081B20000000000A09EB0010000000080EB
311:10136000D8B30100000000A1D0B30100000000A22A
312:10137000D2B30100000000A4D4B30100000000D0EB
313:10138000D6B30100000000D1DCB30100000000D2A0
314:10139000DEB3010000000088DAB30100000000D4D1
315:1013A0008EB30100000000D3E6B30100000000ACE2
316:1013B000ECB3010000000099FAB30100000000D571
317:1013C000E0B30100000000D5E2B30100000000D549
318:1013D000E4B30100000000D5E8B30100000000D52F
319:1013E000EAB30100000000D5F4B30100000000D50D
320:1013F000F6B30100000000D5F8B30100000000C7FB
321:10140000A9B101000000004F40B10100810200407D
322:1014100091B000000000004191B0010007000040C1
323:10142000A39B0100080000DD81F40100850200405B
324:1014300080C801000000004010B100008A02004096
325:1014400081B200009502004081B200009502004682
326:10145000A3B300009802004081B200009E02004049
327:1014600081B200008C022350A56F000000000050E4
328:10147000A5B30100BC020042A5630100C502004003
329:1014800081320100D0142D4049B10100000000D08C
330:10149000BAB30100000000DEA1B10100000000F8B5
331:1014A00000B0010094022244A553000091020041C3
332:1014B000A1C100005A0100DDA1B10000BC0200DEA4
333:1014C000A1330100C5020040813201005A010040F1
334:1014D00081B2000000000045BFB301005501A2D257
335:1014E000777D0000000000D261B10100000000DE45
336:1014F00063B101009B02A840813200005A01004004
337:1015000081B20000BC020054A5330100C5020040B6
338:1015100081320100D0142D4049B10100000000F8D3
339:10152000D0B30100000000F8D2B30100000000F8C1
340:10153000D4B30100000000F8D6B30100000000F8A9
341:1015400008B10100A9020040819801005D02004637
342:10155000833001005A01004081B20000000000A069
343:101560009EB00100000000E843B10100000000E966
344:1015700045B10100000000EA49B10100000000EBA4
345:10158000A1B101000000004F40B10100000000E7E0
346:10159000A7B30100000000D8A9B30100000000407B
347:1015A00049B10100AE0300CBA3C901000000002037
348:1015B00046B10100000000D2F1B10100000000D3EB
349:1015C000F1B10100000000D4F1B10100000000D031
350:1015D000E1B10100000000D161B101002000002054
351:1015E00062DD0100B902A84081320000000080CC19
352:1015F00085930100000000E7A7B30100000000D8B8
353:10160000A9B301000000004049B10100AE0300CBC6
354:10161000A3C901000000002046B10100000000D273
355:10162000F1B10100000000D0F1B10100000000D3D1
356:10163000F1B10100B80200D4E1B100000000A2CC79
357:1016400085FF00000000005081B00100C702A241E8
358:1016500081500000C602A2F280300000000080CC61
359:10166000858301000000004081B00100CB0280A50D
360:1016700080320000CC0200A5803200000000004152
361:1016800081C00100CD0280A58032000080010040B1
362:1016900083980100D602204F816C000000010040B9
363:1016A00083980100D602204B816C0000800000402E
364:1016B00083980100D6022047816C000000000040A2
365:1016C000839801000000004182DC0100039000418A
366:1016D000209901000000004049B1010000142F4C86
367:1016E00083B0010000000040F1B10100DA02A24124
368:1016F00083500000020000A580C80100DD02A2A501
369:10170000806C000020000090209901000000005F24
370:1017100023910100E0021F91803200003000009010
371:10172000209901000000005F23910100E3021F9156
372:10173000803200007000009020A901000000005FCE
373:1017400023910100E6021F91803200000000005F3B
374:1017500023910100E8021F91803200004068009050
375:1017600020A90100E0000040619901002100004033
376:1017700061990100220000406199010023000040AE
377:10178000619901002400004061990100250000409A
378:101790006199010026000040619901002700004086
379:1017A00061990100C000004061990100D01400401F
380:1017B00045990100020100A680B001000403004029
381:1017C00080980100060500A682B0010008070041CC
382:1017D0008298010000000040F0B1010000000041CB
383:1017E000E0B10100300300408530010039030040C2
384:1017F00081320100D814004043990100FF02A2F891
385:10180000806C0000000322F0826C000000000042A7
386:1018100021910100D0142040E1B101003003000CFF
387:10182000853001003003004D851001003003004E6B
388:1018300085100100D014204FE1B101003003004FAA
389:10184000851001003903000C85300100D8142043B5
390:1018500081B001000F0322F09E6E00003903004D9D
391:1018600085100100D814204281B001000F0322F03E
392:101870009E6E00003903004E85100100D8142041EF
393:1018800081B001001103A2F09E6E0000000000492B
394:1018900081E001000000004020950100030000905D
395:1018A000208D010000000043219501000000001B75
396:1018B00089B00100D0142040E1B1010030030017CD
397:1018C00085300100300300588510010030030059B5
398:1018D00085100100D014204FE1B101003003005AFF
399:1018E000851001003903001785300100D81420400D
400:1018F00081B00100230322F09E6E000039030058DE
401:1019000085100100D814204181B00100230322F08A
402:101910009E6E00003903005985100100D814204242
403:1019200081B001002703A2F09E6E0000030000902A
404:10193000208D0100000000402095010000000018EB
405:1019400089B001000000004088E001002F03A2429E
406:10195000217D0000A5A5004081980100D014204001
407:10196000E0B101003003004484300100390300403D
408:1019700081320100D814204081B201002F03A2F06F
409:10198000806C00000000004189E00100E000804020
410:10199000619901007015004047990100000000485E
411:1019A000F1B1010000000042F0B10100D01400408C
412:1019B000F19901000000005587B4010004000040C7
413:1019C0006199010070150043629901003603A84037
414:1019D000813200004103004081B2000070150040D8
415:1019E0004799010000000048F1B10100D8140040FF
416:1019F000F199010000000042F0B101000000005523
417:101A000087B4010002000040619901007015004395
418:101A1000629901003F03A8408132000000000048A5
419:101A200087B001004203A241875000000000A2F2EB
420:101A300086B00000100000F186F40100410326404A
421:101A4000813200000400004081B200000000004725
422:101A500084B001000000A248848400000000005F00
423:101A600061B101000000005C8F90010000000047A0
424:101A700062B101004903A84081320000F59F004790
425:101A800098300100000800478EC801004703005C41
426:101A90008F800000E00000406199010058152D4042
427:101AA0008DB00100D0142DF088B00100000000FAC4
428:101AB0008AB001000000004581B001000700004528
429:101AC00082880100000000438BF001000000004804
430:101AD00083E00100000000468294010020000041E4
431:101AE00060990100000000418DC001006403225F85
432:101AF0008D6C00005503A24181500000530300404B
433:101B000081B20000080000408598010000000044F8
434:101B100082B001000000004186B00100001C0043BB
435:101B200086D801000000A6418550010060030041F5
436:101B300083E000005E0300408132010000000048A5
437:101B400085E00100D0142F4684940100200000425B
438:101B500060990100C00000406199010000008040D0
439:101B600081B20100070000458088010000000043A9
440:101B70008BF0010000040040839801006F03A04136
441:101B8000815000006D03004182E8000000008041A8
442:101B90008EC00100AE030040A39901000000005474
443:101BA00081B00100601500408598010008000040E8
444:101BB00040E401000000005A419401000000005080
445:101BC00041E001000000004240940100000000419B
446:101BD00081C001000000A355816C0100000000419C
447:101BE000A3C101007303005085C000000000004045
448:101BF00049B1010000020040839801000016004036
449:101C00004599010000000040F1B101007E03A241AE
450:101C1000835000000000004085B001000B0000442C
451:101C200082F401001A1500A686B00100701500406C
452:101C30004599010000080040F199010000000042B0
453:101C4000F0B1010000160040E199010004000040DD
454:101C50006199010070150043629901008803A84052
455:101C6000813200008A03225A737D00007A0000400E
456:101C7000619901008B03A8B17E3100000008004289
457:101C800084C801008303A24183500000000080400B
458:101C900081B201000400004081B200000400004055
459:101CA00081B200000400004081B200000400004046
460:101CB00081B200000400004081B200000400004036
461:101CC00081B200000400004081B200000400004026
462:101CD00081B200000400004081B200000400004016
463:101CE00081B200000400004081B200000400004006
464:101CF00081B200000400004081B2000004000040F6
465:101D000081B200000400004081B2000004000040E5
466:101D100081B200000400004081B2000004000040D5
467:101D200081B200000400004081B2000004000040C5
468:101D300081B200000400004081B2000004000040B5
469:101D400081B200000400004081B2000004000040A5
470:101D500081B200000400004081B200000400004095
471:101D600081B200000400004081B200000400004085
472:101D700081B200000400004081B200000400004075
473:101D800081B200000400004081B200000400004065
474:101D900081B200000400004081B200000400004055
475:101DA00081B200000400004081B200000400004045
476:101DB00081B200000400004081B200000400004035
477:101DC00081B200000400004081B200000400004025
478:101DD00081B200000400004081B200000400004015
479:101DE00081B200000400004081B200000400004005
480:101DF00081B200000400004081B2000004000040F5
481:101E000081B200000400004081B2000004000040E4
482:101E100081B200000400004081B2000004000040D4
483:101E200081B200000400004081B2000004000040C4
484:101E300081B200000400004081B2000004000040B4
485:101E400081B200000400004081B2000004000040A4
486:101E500081B200000400004081B200000400004094
487:101E600081B200000400004081B200000400004084
488:101E700081B200000400004081B200000400004074
489:101E800081B200000400004081B200000400004064
490:101E900081B200000400004081B200000400004054
491:101EA00081B200000400004081B200000400004044
492:101EB00081B200000400004081B200000400004034
493:101EC00081B200000400004081B200000400004024
494:101ED00081B200000400004081B200000400004014
495:101EE00081B200000400004081B200000400004004
496:101EF00081B200000400004081B2000004000040F4
497:101F000081B200000400004081B2000004000040E3
498:101F100081B200000400004081B2000004000040D3
499:101F200081B200000400004081B2000004000040C3
500:101F300081B200000400004081B2000004000040B3
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200000400004081B200000400004093
503:101F600081B200000400004081B200000400004083
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B200000400004081B200000400004053
507:101FA00081B200000400004081B200000400004043
508:101FB00081B200000400004081B200000400004033
509:101FC00081B200000400004081B200000400004023
510:101FD00081B200000400004081B200000400004013
511:101FE00081B200000400004081B200000400004003
512:101FF00081B200000400004081B2000004000040F3
513:1020000081B200000400004081B2000004000040E2
514:1020100081B200000400004081B2000004000040D2
515:1020200081B200000400004081B2000004000040C2
516:1020300081B200000400004081B2000004000040B2
517:1020400081B200000400004081B2000004000040A2
518:1020500081B200000400004081B200000400004092
519:1020600081B200000400004081B200000400004082
520:1020700081B200000400004081B200000400004072
521:1020800081B200000400004081B200000400004062
522:1020900081B200000400004081B200000400004052
523:1020A00081B200000400004081B200000400004042
524:1020B00081B200000400004081B200000400004032
525:1020C00081B200000400004081B200000400004022
526:1020D00081B200000400004081B200000400004012
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B200000400004081B2000004000040D1
531:1021200081B200000400004081B2000004000040C1
532:1021300081B200000400004081B2000004000040B1
533:1021400081B200000400004081B2000004000040A1
534:1021500081B200000400004081B200000400004091
535:1021600081B200000400004081B200000400004081
536:1021700081B200000400004081B200000400004071
537:1021800081B200000400004081B200000400004061
538:1021900081B200000400004081B200000400004051
539:1021A00081B200000400004081B200000400004041
540:1021B00081B200000400004081B200000400004031
541:1021C00081B200000400004081B200000400004021
542:1021D00081B200000400004081B200000400004011
543:1021E00081B200000400004081B200000400004001
544:1021F00081B200000400004081B2000004000040F1
545:1022000081B200000400004081B2000004000040E0
546:1022100081B200000400004081B2000004000040D0
547:1022200081B200000400004081B2000004000040C0
548:1022300081B200000400004081B2000004000040B0
549:1022400081B200000400004081B2000004000040A0
550:1022500081B200000400004081B200000400004090
551:1022600081B200000400004081B200000400004080
552:1022700081B200000400004081B200000400004070
553:1022800081B200000400004081B200000400004060
554:1022900081B200000400004081B200000400004050
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200000400004081B200000400004010
559:1022E00081B200000400004081B200000400004000
560:1022F00081B200000400004081B2000004000040F0
561:1023000081B200000400004081B2000004000040DF
562:1023100081B200000400004081B2000004000040CF
563:1023200081B200000400004081B2000004000040BF
564:1023300081B200000400004081B2000004000040AF
565:1023400081B200000400004081B20000040000409F
566:1023500081B200000400004081B20000040000408F
567:1023600081B200000400004081B20000040000407F
568:1023700081B200000400004081B20000040000406F
569:1023800081B200000400004081B20000040000405F
570:1023900081B200000400004081B20000040000404F
571:1023A00081B200000400004081B20000040000403F
572:1023B00081B200000400004081B20000040000402F
573:1023C00081B200000400004081B20000040000401F
574:1023D00081B200000400004081B20000040000400F
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000400004081B2000004000040CE
579:1024200081B200000400004081B2000004000040BE
580:1024300081B200000400004081B2000004000040AE
581:1024400081B200000400004081B20000040000409E
582:1024500081B200000400004081B20000040000408E
583:1024600081B200000400004081B20000040000407E
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B200000400004081B20000040000404E
587:1024A00081B200000400004081B20000040000403E
588:1024B00081B200000400004081B20000040000402E
589:1024C00081B200000400004081B20000040000401E
590:1024D00081B200000400004081B20000040000400E
591:1024E00081B200000400004081B2000004000040FE
592:1024F00081B200000400004081B2000004000040EE
593:1025000081B200000400004081B2000004000040DD
594:1025100081B200000400004081B2000004000040CD
595:1025200081B200000400004081B2000004000040BD
596:1025300081B200000400004081B2000004000040AD
597:1025400081B200000400004081B20000040000409D
598:1025500081B200000400004081B20000040000408D
599:1025600081B200000400004081B20000040000407D
600:1025700081B200000400004081B20000040000406D
601:1025800081B200000400004081B20000040000405D
602:1025900081B200000400004081B20000040000404D
603:1025A00081B200000400004081B20000040000403D
604:1025B00081B200000400004081B20000040000402D
605:1025C00081B200000400004081B20000040000401D
606:1025D00081B200000400004081B20000040000400D
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000400004081B2000004000040CC
611:1026200081B200000400004081B2000004000040BC
612:1026300081B200000400004081B2000004000040AC
613:1026400081B200000400004081B20000040000409C
614:1026500081B200000400004081B20000040000408C
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200000400004081B20000040000404C
619:1026A00081B200000400004081B20000040000403C
620:1026B00081B200000400004081B20000040000402C
621:1026C00081B200000400004081B20000040000401C
622:1026D00081B200000400004081B20000040000400C
623:1026E00081B200000400004081B2000004000040FC
624:1026F00081B200000400004081B2000004000040EC
625:1027000081B200000400004081B2000004000040DB
626:1027100081B200000400004081B2000004000040CB
627:1027200081B200000400004081B2000004000040BB
628:1027300081B200000400004081B2000004000040AB
629:1027400081B200000400004081B20000040000409B
630:1027500081B200000400004081B20000040000408B
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000400004081B20000040000404B
635:1027A00081B200000400004081B20000040000403B
636:1027B00081B200000400004081B20000040000402B
637:1027C00081B200000400004081B20000040000401B
638:1027D00081B200000400004081B20000040000400B
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200000400004081B2000004000040CA
643:1028200081B200000400004081B2000004000040BA
644:1028300081B200000400004081B2000004000040AA
645:1028400081B200000400004081B20000040000409A
646:1028500081B200000400004081B20000040000408A
647:1028600081B200000400004081B20000040000407A
648:1028700081B200000400004081B20000040000406A
649:1028800081B200000400004081B20000040000405A
650:1028900081B200000400004081B20000040000404A
651:1028A00081B200000400004081B20000040000403A
652:1028B00081B200000400004081B20000040000402A
653:1028C00081B200000400004081B20000040000401A
654:1028D00081B200000400004081B20000040000400A
655:1028E00081B200000400004081B2000004000040FA
656:1028F00081B200000400004081B2000004000040EA
657:1029000081B200000400004081B2000004000040D9
658:1029100081B200000400004081B2000004000040C9
659:1029200081B200000400004081B2000004000040B9
660:1029300081B200000400004081B2000004000040A9
661:1029400081B200000400004081B200000400004099
662:1029500081B200000400004081B200000400004089
663:1029600081B200000400004081B200000400004079
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000400004081B200000400004049
667:1029A00081B200000400004081B200000400004039
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200000400004081B200000400004009
671:1029E00081B200000400004081B2000004000040F9
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200000400004081B2000004000040C8
675:102A200081B200000400004081B2000004000040B8
676:102A300081B200000400004081B2000004000040A8
677:102A400081B200000400004081B200000400004098
678:102A500081B200000400004081B200000400004088
679:102A600081B200000400004081B200000400004078
680:102A700081B200000400004081B200000400004068
681:102A800081B200000400004081B200000400004058
682:102A900081B200000400004081B200000400004048
683:102AA00081B200000400004081B200000400004038
684:102AB00081B200000400004081B200000400004028
685:102AC00081B200000400004081B200000400004018
686:102AD00081B200000400004081B200000400004008
687:102AE00081B200000400004081B2000004000040F8
688:102AF00081B200000400004081B2000004000040E8
689:102B000081B200000400004081B2000004000040D7
690:102B100081B200000400004081B2000004000040C7
691:102B200081B200000400004081B2000004000040B7
692:102B300081B200000400004081B2000004000040A7
693:102B400081B200000400004081B200000400004097
694:102B500081B200000400004081B200000400004087
695:102B600081B200000400004081B200000400004077
696:102B700081B200000400004081B200000400004067
697:102B800081B200000400004081B200000400004057
698:102B900081B200000400004081B200000400004047
699:102BA00081B200000400004081B200000400004037
700:102BB00081B200000400004081B200000400004027
701:102BC00081B200000400004081B200000400004017
702:102BD00081B200000400004081B200000400004007
703:102BE00081B200000400004081B2000004000040F7
704:102BF00081B200000400004081B2000004000040E7
705:102C000081B200000400004081B2000004000040D6
706:102C100081B200000400004081B2000004000040C6
707:102C200081B200000400004081B2000004000040B6
708:102C300081B200000400004081B2000004000040A6
709:102C400081B200000400004081B200000400004096
710:102C500081B200000400004081B200000400004086
711:102C600081B200000400004081B200000400004076
712:102C700081B200000400004081B200000400004066
713:102C800081B200000400004081B200000400004056
714:102C900081B200000400004081B200000400004046
715:102CA00081B200000400004081B200000400004036
716:102CB00081B200000400004081B200000400004026
717:102CC00081B200000400004081B200000400004016
718:102CD00081B200000400004081B200000400004006
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B200000400004081B2000004000040C5
723:102D200081B200000400004081B2000004000040B5
724:102D300081B200000400004081B2000004000040A5
725:102D400081B200000400004081B200000400004095
726:102D500081B200000400004081B200000400004085
727:102D600081B200000400004081B200000400004075
728:102D700081B200000400004081B200000400004065
729:102D800081B200000400004081B200000400004055
730:102D900081B200000400004081B200000400004045
731:102DA00081B200000400004081B200000400004035
732:102DB00081B200000400004081B200000400004025
733:102DC00081B200000400004081B200000400004015
734:102DD00081B200000400004081B200000400004005
735:102DE00081B200000400004081B2000004000040F5
736:102DF00081B200000400004081B2000004000040E5
737:102E000081B200000400004081B2000004000040D4
738:102E100081B200000400004081B2000004000040C4
739:102E200081B200000400004081B2000004000040B4
740:102E300081B200000400004081B2000004000040A4
741:102E400081B200000400004081B200000400004094
742:102E500081B200000400004081B200000400004084
743:102E600081B200000400004081B200000400004074
744:102E700081B200000400004081B200000400004064
745:102E800081B200000400004081B200000400004054
746:102E900081B200000400004081B200000400004044
747:102EA00081B200000400004081B200000400004034
748:102EB00081B200000400004081B200000400004024
749:102EC00081B200000400004081B200000400004014
750:102ED00081B200000400004081B200000400004004
751:102EE00081B200000400004081B2000004000040F4
752:102EF00081B200000400004081B2000004000040E4
753:102F000081B200000400004081B2000004000040D3
754:102F100081B200000400004081B2000004000040C3
755:102F200081B200000400004081B2000004000040B3
756:102F300081B200000400004081B2000004000040A3
757:102F400081B200000400004081B200000400004093
758:102F500081B200000400004081B200000400004083
759:102F600081B200000400004081B200000400004073
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B200000400004081B200000400004043
763:102FA00081B200000400004081B200000400004033
764:102FB00081B200000400004081B200000400004023
765:102FC00081B200000400004081B200000400004013
766:102FD00081B200000400004081B200000400004003
767:102FE00081B200000400004081B2000004000040F3
768:102FF00081B200000400004081B2000004000040E3
769:1030000081B200000400004081B2000004000040D2
770:1030100081B200000400004081B2000004000040C2
771:1030200081B200000400004081B2000004000040B2
772:1030300081B200000400004081B2000004000040A2
773:1030400081B200000400004081B200000400004092
774:1030500081B200000400004081B200000400004082
775:1030600081B200000400004081B200000400004072
776:1030700081B200000400004081B200000400004062
777:1030800081B200000400004081B200000400004052
778:1030900081B200000400004081B200000400004042
779:1030A00081B200000400004081B200000400004032
780:1030B00081B200000400004081B200000400004022
781:1030C00081B200000400004081B200000400004012
782:1030D00081B200000400004081B200000400004002
783:1030E00081B200000400004081B2000004000040F2
784:1030F00081B200000400004081B2000004000040E2
785:1031000081B200000400004081B2000004000040D1
786:1031100081B200000400004081B2000004000040C1
787:1031200081B200000400004081B2000004000040B1
788:1031300081B200000400004081B2000004000040A1
789:1031400081B200000400004081B200000400004091
790:1031500081B200000400004081B200000400004081
791:1031600081B200000400004081B200000400004071
792:1031700081B200000400004081B200000400004061
793:1031800081B200000400004081B200000400004051
794:1031900081B200000400004081B200000400004041
795:1031A00081B200000400004081B200000400004031
796:1031B00081B200000400004081B200000400004021
797:1031C00081B200000400004081B200000400004011
798:1031D00081B200000400004081B200000400004001
799:1031E00081B200000400004081B2000004000040F1
800:1031F00081B200000400004081B2000004000040E1
801:1032000081B200000400004081B2000004000040D0
802:1032100081B200000400004081B2000004000040C0
803:1032200081B200000400004081B2000004000040B0
804:1032300081B200000400004081B2000004000040A0
805:1032400081B200000400004081B200000400004090
806:1032500081B200000400004081B200000400004080
807:1032600081B200000400004081B200000400004070
808:1032700081B200000400004081B200000400004060
809:1032800081B200000400004081B200000400004050
810:1032900081B200000400004081B200000400004040
811:1032A00081B200000400004081B200000400004030
812:1032B00081B200000400004081B200000400004020
813:1032C00081B200000400004081B200000400004010
814:1032D00081B200000400004081B200000400004000
815:1032E00081B200000400004081B2000004000040F0
816:1032F00081B200000400004081B2000004000040E0
817:1033000081B200000400004081B2000004000040CF
818:1033100081B200000400004081B2000004000040BF
819:1033200081B200000400004081B2000004000040AF
820:1033300081B200000400004081B20000040000409F
821:1033400081B200000400004081B20000040000408F
822:1033500081B200000400004081B20000040000407F
823:1033600081B200000400004081B20000040000406F
824:1033700081B200000400004081B20000040000405F
825:1033800081B200000400004081B20000040000404F
826:1033900081B200000400004081B20000040000403F
827:1033A00081B200000400004081B20000040000402F
828:1033B00081B200000400004081B20000040000401F
829:1033C00081B200000400004081B20000040000400F
830:1033D00081B200000400004081B2000004000040FF
831:1033E00081B200000400004081B2000004000040EF
832:1033F00081B200000400004081B2000004000040DF
833:1034000081B200000400004081B2000004000040CE
834:1034100081B200000400004081B2000004000040BE
835:1034200081B200000400004081B2000004000040AE
836:1034300081B200000400004081B20000040000409E
837:1034400081B200000400004081B20000040000408E
838:1034500081B200000400004081B20000040000407E
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B200000400004081B20000040000403E
843:1034A00081B200000400004081B20000040000402E
844:1034B00081B200000400004081B20000040000401E
845:1034C00081B200000400004081B20000040000400E
846:1034D00081B200000400004081B2000004000040FE
847:1034E00081B200000400004081B2000004000040EE
848:1034F00081B200000400004081B2000004000040DE
849:1035000081B200000400004081B2000004000040CD
850:1035100081B200000400004081B2000004000040BD
851:1035200081B200000400004081B2000004000040AD
852:1035300081B200000400004081B20000040000409D
853:1035400081B200000400004081B20000040000408D
854:1035500081B200000400004081B20000040000407D
855:1035600081B200000400004081B20000040000406D
856:1035700081B200000400004081B20000040000405D
857:1035800081B200000400004081B20000040000404D
858:1035900081B200000400004081B20000040000403D
859:1035A00081B200000400004081B20000040000402D
860:1035B00081B200000400004081B20000040000401D
861:1035C00081B200000400004081B20000040000400D
862:1035D00081B200000400004081B2000004000040FD
863:1035E00081B200000400004081B2000004000040ED
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B200000400004081B2000004000040BC
867:1036200081B200000400004081B2000004000040AC
868:1036300081B200000400004081B20000040000409C
869:1036400081B200000400004081B20000040000408C
870:1036500081B200000400004081B20000040000407C
871:1036600081B200000400004081B20000040000406C
872:1036700081B200000400004081B20000040000405C
873:1036800081B200000400004081B20000040000404C
874:1036900081B200000400004081B20000040000403C
875:1036A00081B200000400004081B20000040000402C
876:1036B00081B200000400004081B20000040000401C
877:1036C00081B200000400004081B20000040000400C
878:1036D00081B200000400004081B2000004000040FC
879:1036E00081B200000400004081B2000004000040EC
880:1036F00081B200000400004081B2000004000040DC
881:1037000081B200000400004081B2000004000040CB
882:1037100081B200000400004081B2000004000040BB
883:1037200081B200000400004081B2000004000040AB
884:1037300081B200000400004081B20000040000409B
885:1037400081B200000400004081B20000040000408B
886:1037500081B200000400004081B20000040000407B
887:1037600081B200000400004081B20000040000406B
888:1037700081B200000400004081B20000040000405B
889:1037800081B200000400004081B20000040000404B
890:1037900081B200000400004081B20000040000403B
891:1037A00081B200000400004081B20000040000402B
892:1037B00081B200000400004081B20000040000401B
893:1037C00081B200000400004081B20000040000400B
894:1037D00081B200000400004081B2000004000040FB
895:1037E00081B200000400004081B2000004000040EB
896:1037F00081B200000400004081B2000004000040DB
897:1038000081B200000400004081B2000004000040CA
898:1038100081B200000400004081B2000004000040BA
899:1038200081B200000400004081B2000004000040AA
900:1038300081B200000400004081B20000040000409A
901:1038400081B200000400004081B20000040000408A
902:1038500081B200000400004081B20000040000407A
903:1038600081B200000400004081B20000040000406A
904:1038700081B200000400004081B20000040000405A
905:1038800081B200000400004081B20000040000404A
906:1038900081B200000400004081B20000040000403A
907:1038A00081B200000400004081B20000040000402A
908:1038B00081B200000400004081B20000040000401A
909:1038C00081B200000400004081B20000040000400A
910:1038D00081B200000400004081B2000004000040FA
911:1038E00081B200000400004081B2000004000040EA
912:1038F00081B200000400004081B2000004000040DA
913:1039000081B200000400004081B2000004000040C9
914:1039100081B200000400004081B2000004000040B9
915:1039200081B200000400004081B2000004000040A9
916:1039300081B200000400004081B200000400004099
917:1039400081B200000400004081B200000400004089
918:1039500081B200000400004081B200000400004079
919:1039600081B200000400004081B200000400004069
920:1039700081B200000400004081B200000400004059
921:1039800081B200000400004081B200000400004049
922:1039900081B200000400004081B200000400004039
923:1039A00081B200000400004081B200000400004029
924:1039B00081B200000400004081B200000400004019
925:1039C00081B200000400004081B200000400004009
926:1039D00081B200000400004081B2000004000040F9
927:1039E00081B200000400004081B2000004000040E9
928:1039F00081B200000400004081B2000004000040D9
929:103A000081B200000400004081B2000004000040C8
930:103A100081B200000400004081B2000004000040B8
931:103A200081B200000400004081B2000004000040A8
932:103A300081B200000400004081B200000400004098
933:103A400081B200000400004081B200000400004088
934:103A500081B200000400004081B200000400004078
935:103A600081B200000400004081B200000400004068
936:103A700081B200000400004081B200000400004058
937:103A800081B200000400004081B200000400004048
938:103A900081B200000400004081B200000400004038
939:103AA00081B200000400004081B200000400004028
940:103AB00081B200000400004081B200000400004018
941:103AC00081B200000400004081B200000400004008
942:103AD00081B200000400004081B2000004000040F8
943:103AE00081B200000400004081B2000004000040E8
944:103AF00081B200000400004081B2000004000040D8
945:103B000081B200000400004081B2000004000040C7
946:103B100081B200000400004081B2000004000040B7
947:103B200081B200000400004081B2000004000040A7
948:103B300081B200000400004081B200000400004097
949:103B400081B200000400004081B200000400004087
950:103B500081B200000400004081B200000400004077
951:103B600081B200000400004081B200000400004067
952:103B700081B200000400004081B200000400004057
953:103B800081B200000400004081B200000400004047
954:103B900081B200000400004081B200000400004037
955:103BA00081B200000400004081B200000400004027
956:103BB00081B200000400004081B200000400004017
957:103BC00081B200000400004081B200000400004007
958:103BD00081B200000400004081B2000004000040F7
959:103BE00081B200000400004081B2000004000040E7
960:103BF00081B200000400004081B2000004000040D7
961:103C000081B200000400004081B2000004000040C6
962:103C100081B200000400004081B2000004000040B6
963:103C200081B200000400004081B2000004000040A6
964:103C300081B200000400004081B200000400004096
965:103C400081B200000400004081B200000400004086
966:103C500081B200000400004081B200000400004076
967:103C600081B200000400004081B200000400004066
968:103C700081B200000400004081B200000400004056
969:103C800081B200000400004081B200000400004046
970:103C900081B200000400004081B200000400004036
971:103CA00081B200000400004081B200000400004026
972:103CB00081B200000400004081B200000400004016
973:103CC00081B200000400004081B200000400004006
974:103CD00081B200000400004081B2000004000040F6
975:103CE00081B200000400004081B2000004000040E6
976:103CF00081B200000400004081B2000004000040D6
977:103D000081B200000400004081B2000004000040C5
978:103D100081B200000400004081B2000004000040B5
979:103D200081B200000400004081B2000004000040A5
980:103D300081B200000400004081B200000400004095
981:103D400081B200000400004081B200000400004085
982:103D500081B200000400004081B200000400004075
983:103D600081B200000400004081B200000400004065
984:103D700081B200000400004081B200000400004055
985:103D800081B200000400004081B200000400004045
986:103D900081B200000400004081B200000400004035
987:103DA00081B200000400004081B200000400004025
988:103DB00081B200000400004081B200000400004015
989:103DC00081B200000400004081B200000400004005
990:103DD00081B200000400004081B2000004000040F5
991:103DE00081B200000400004081B2000004000040E5
992:103DF00081B200000400004081B2000004000040D5
993:103E000081B200000400004081B2000004000040C4
994:103E100081B200000400004081B2000004000040B4
995:103E200081B200000400004081B2000004000040A4
996:103E300081B200000400004081B200000400004094
997:103E400081B200000400004081B200000400004084
998:103E500081B200000400004081B200000400004074
999:103E600081B200000400004081B200000400004064
1000:103E700081B200000400004081B200000400004054
1001:103E800081B200000400004081B200000400004044
1002:103E900081B200000400004081B200000400004034
1003:103EA00081B200000400004081B200000400004024
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B200000400004003
1022:103FD00081B200000400004081B2000004000040F3
1023:103FE00081B200000400004081B2000004000040E3
1024:103FF00081B200000400004081B2000004000040D3
1025:1040000081B200000400004081B2000004000040C2
1026:1040100081B200000400004081B2000004000040B2
1027:1040200081B200000400004081B2000004000040A2
1028:1040300081B200000400004081B200000400004092
1029:1040400081B200000400004081B200000400004082
1030:1040500081B200000400004081B200000400004072
1031:1040600081B200000400004081B200000400004062
1032:1040700081B200000400004081B200000400004052
1033:1040800081B200000400004081B200000400004042
1034:1040900081B200000400004081B200000400004032
1035:1040A00081B200000400004081B200000400004022
1036:1040B00081B200000400004081B200000400004012
1037:1040C00081B200000400004081B200000400004002
1038:1040D00081B200000400004081B2000004000040F2
1039:1040E00081B200000400004081B2000004000040E2
1040:1040F00081B200000400004081B2000004000040D2
1041:1041000081B200000400004081B2000004000040C1
1042:1041100081B200000400004081B2000004000040B1
1043:1041200081B200000400004081B2000004000040A1
1044:1041300081B200000400004081B200000400004091
1045:1041400081B200000400004081B200000400004081
1046:1041500081B200000400004081B200000400004071
1047:1041600081B200000400004081B200000400004061
1048:1041700081B200000400004081B200000400004051
1049:1041800081B200000400004081B200000400004041
1050:1041900081B200000400004081B200000400004031
1051:1041A00081B200000400004081B200000400004021
1052:1041B00081B200000400004081B200000400004011
1053:1041C00081B200000400004081B200000400004001
1054:1041D00081B200000400004081B2000004000040F1
1055:1041E00081B200000400004081B2000004000040E1
1056:1041F00081B200000400004081B2000004000040D1
1057:1042000081B200000400004081B2000004000040C0
1058:1042100081B200000400004081B2000004000040B0
1059:1042200081B200000400004081B2000004000040A0
1060:1042300081B200000400004081B200000400004090
1061:1042400081B200000400004081B200000400004080
1062:1042500081B200000400004081B200000400004070
1063:1042600081B200000400004081B200000400004060
1064:1042700081B200000400004081B200000400004050
1065:1042800081B200000400004081B200000400004040
1066:1042900081B200000400004081B200000400004030
1067:1042A00081B200000400004081B200000400004020
1068:1042B00081B200000400004081B200000400004010
1069:1042C00081B200000400004081B200000400004000
1070:1042D00081B200000400004081B2000004000040F0
1071:1042E00081B200000400004081B2000004000040E0
1072:1042F00081B200000400004081B2000004000040D0
1073:1043000081B200000400004081B2000004000040BF
1074:1043100081B200000400004081B2000004000040AF
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200000400004081B20000040000406F
1079:1043600081B200000400004081B20000040000405F
1080:1043700081B200000400004081B20000040000404F
1081:1043800081B200000400004081B20000040000403F
1082:1043900081B200000400004081B20000040000402F
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B200000400004081B2000004000040EF
1087:1043E00081B200000400004081B2000004000040DF
1088:1043F00081B200000400004081B2000004000040CF
1089:1044000081B200000400004081B2000004000040BE
1090:1044100081B200000400004081B2000004000040AE
1091:1044200081B200000400004081B20000040000409E
1092:1044300081B200000400004081B20000040000408E
1093:1044400081B200000400004081B20000040000407E
1094:1044500081B200000400004081B20000040000406E
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200000400004081B20000040000402E
1099:1044A00081B200000400004081B20000040000401E
1100:1044B00081B200000400004081B20000040000400E
1101:1044C00081B200000400004081B2000004000040FE
1102:1044D00081B200000400004081B2000004000040EE
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200000400004081B2000004000040AD
1107:1045200081B200000400004081B20000040000409D
1108:1045300081B200000400004081B20000040000408D
1109:1045400081B200000400004081B20000040000407D
1110:1045500081B200000400004081B20000040000406D
1111:1045600081B200000400004081B20000040000405D
1112:1045700081B200000400004081B20000040000404D
1113:1045800081B200000400004081B20000040000403D
1114:1045900081B200000400004081B20000040000402D
1115:1045A00081B200000400004081B20000040000401D
1116:1045B00081B200000400004081B20000040000400D
1117:1045C00081B200000400004081B2000004000040FD
1118:1045D00081B200000400004081B2000004000040ED
1119:1045E00081B200000400004081B2000004000040DD
1120:1045F00081B200000400004081B2000004000040CD
1121:1046000081B200000400004081B2000004000040BC
1122:1046100081B200000400004081B2000004000040AC
1123:1046200081B200000400004081B20000040000409C
1124:1046300081B200000400004081B20000040000408C
1125:1046400081B200000400004081B20000040000407C
1126:1046500081B200000400004081B20000040000406C
1127:1046600081B200000400004081B20000040000405C
1128:1046700081B200000400004081B20000040000404C
1129:1046800081B200000400004081B20000040000403C
1130:1046900081B200000400004081B20000040000402C
1131:1046A00081B200000400004081B20000040000401C
1132:1046B00081B200000400004081B20000040000400C
1133:1046C00081B200000400004081B2000004000040FC
1134:1046D00081B200000400004081B2000004000040EC
1135:1046E00081B200000400004081B2000004000040DC
1136:1046F00081B200000400004081B2000004000040CC
1137:1047000081B200000400004081B2000004000040BB
1138:1047100081B200000400004081B2000004000040AB
1139:1047200081B200000400004081B20000040000409B
1140:1047300081B200000400004081B20000040000408B
1141:1047400081B200000400004081B20000040000407B
1142:1047500081B200000400004081B20000040000406B
1143:1047600081B200000400004081B20000040000405B
1144:1047700081B200000400004081B20000040000404B
1145:1047800081B200000400004081B20000040000403B
1146:1047900081B200000400004081B20000040000402B
1147:1047A00081B200000400004081B20000040000401B
1148:1047B00081B200000400004081B20000040000400B
1149:1047C00081B200000400004081B2000004000040FB
1150:1047D00081B200000400004081B2000004000040EB
1151:1047E00081B200000400004081B2000004000040DB
1152:1047F00081B200000400004081B2000004000040CB
1153:1048000081B200000400004081B2000004000040BA
1154:1048100081B200000400004081B2000004000040AA
1155:1048200081B200000400004081B20000040000409A
1156:1048300081B200000400004081B20000040000408A
1157:1048400081B200000400004081B20000040000407A
1158:1048500081B200000400004081B20000040000406A
1159:1048600081B200000400004081B20000040000405A
1160:1048700081B200000400004081B20000040000404A
1161:1048800081B200000400004081B20000040000403A
1162:1048900081B200000400004081B20000040000402A
1163:1048A00081B200000400004081B20000040000401A
1164:1048B00081B200000400004081B20000040000400A
1165:1048C00081B200000400004081B2000004000040FA
1166:1048D00081B200000400004081B2000004000040EA
1167:1048E00081B200000400004081B2000004000040DA
1168:1048F00081B200000400004081B2000004000040CA
1169:1049000081B200000400004081B2000004000040B9
1170:1049100081B200000400004081B2000004000040A9
1171:1049200081B200000400004081B200000400004099
1172:1049300081B200000400004081B200000400004089
1173:1049400081B200000400004081B200000400004079
1174:1049500081B200000400004081B200000400004069
1175:1049600081B200000400004081B200000400004059
1176:1049700081B200000400004081B200000400004049
1177:1049800081B200000400004081B200000400004039
1178:1049900081B200000400004081B200000400004029
1179:1049A00081B200000400004081B200000400004019
1180:1049B00081B200000400004081B200000400004009
1181:1049C00081B200000400004081B2000004000040F9
1182:1049D00081B200000400004081B2000004000040E9
1183:1049E00081B200000400004081B2000004000040D9
1184:1049F00081B200000400004081B2000004000040C9
1185:104A000081B200000400004081B2000004000040B8
1186:104A100081B200000400004081B2000004000040A8
1187:104A200081B200000400004081B200000400004098
1188:104A300081B200000400004081B200000400004088
1189:104A400081B200000400004081B200000400004078
1190:104A500081B200000400004081B200000400004068
1191:104A600081B200000400004081B200000400004058
1192:104A700081B200000400004081B200000400004048
1193:104A800081B200000400004081B200000400004038
1194:104A900081B200000400004081B200000400004028
1195:104AA00081B200000400004081B200000400004018
1196:104AB00081B200000400004081B200000400004008
1197:104AC00081B200000400004081B2000004000040F8
1198:104AD00081B200000400004081B2000004000040E8
1199:104AE00081B200000400004081B2000004000040D8
1200:104AF00081B200000400004081B2000004000040C8
1201:104B000081B200000400004081B2000004000040B7
1202:104B100081B200000400004081B2000004000040A7
1203:104B200081B200000400004081B200000400004097
1204:104B300081B200000400004081B200000400004087
1205:104B400081B200000400004081B200000400004077
1206:104B500081B200000400004081B200000400004067
1207:104B600081B200000400004081B200000400004057
1208:104B700081B200000400004081B200000400004047
1209:104B800081B200000400004081B200000400004037
1210:104B900081B200000400004081B200000400004027
1211:104BA00081B200000400004081B200000400004017
1212:104BB00081B200000400004081B200000400004007
1213:104BC00081B200000400004081B2000004000040F7
1214:104BD00081B200000400004081B2000004000040E7
1215:104BE00081B200000400004081B2000004000040D7
1216:104BF00081B200000400004081B2000004000040C7
1217:104C000081B200000400004081B2000004000040B6
1218:104C100081B200000400004081B2000004000040A6
1219:104C200081B200000400004081B200000400004096
1220:104C300081B200000400004081B200000400004086
1221:104C400081B200000400004081B200000400004076
1222:104C500081B200000400004081B200000400004066
1223:104C600081B200000400004081B200000400004056
1224:104C700081B200000400004081B200000400004046
1225:104C800081B200000400004081B200000400004036
1226:104C900081B200000400004081B200000400004026
1227:104CA00081B200000400004081B200000400004016
1228:104CB00081B200000400004081B200000400004006
1229:104CC00081B200000400004081B2000004000040F6
1230:104CD00081B200000400004081B2000004000040E6
1231:104CE00081B200000400004081B2000004000040D6
1232:104CF00081B200000400004081B2000004000040C6
1233:104D000081B200000400004081B2000004000040B5
1234:104D100081B200000400004081B2000004000040A5
1235:104D200081B200000400004081B200000400004095
1236:104D300081B200000400004081B200000400004085
1237:104D400081B200000400004081B200000400004075
1238:104D500081B200000400004081B200000400004065
1239:104D600081B200000400004081B200000400004055
1240:104D700081B200000400004081B200000400004045
1241:104D800081B200000400004081B200000400004035
1242:104D900081B200000400004081B200000400004025
1243:104DA00081B200000400004081B200000400004015
1244:104DB00081B200000400004081B200000400004005
1245:104DC00081B200000400004081B2000004000040F5
1246:104DD00081B200000400004081B2000004000040E5
1247:104DE00081B200000400004081B2000004000040D5
1248:104DF00081B200000400004081B2000004000040C5
1249:104E000081B200000400004081B2000004000040B4
1250:104E100081B200000400004081B2000004000040A4
1251:104E200081B200000400004081B200000400004094
1252:104E300081B200000400004081B200000400004084
1253:104E400081B200000400004081B200000400004074
1254:104E500081B200000400004081B200000400004064
1255:104E600081B200000400004081B200000400004054
1256:104E700081B200000400004081B200000400004044
1257:104E800081B200000400004081B200000400004034
1258:104E900081B200000400004081B200000400004024
1259:104EA00081B200000400004081B200000400004014
1260:104EB00081B200000400004081B200000400004004
1261:104EC00081B200000400004081B2000004000040F4
1262:104ED00081B200000400004081B2000004000040E4
1263:104EE00081B200000400004081B2000004000040D4
1264:104EF00081B200000400004081B2000004000040C4
1265:104F000081B200000400004081B2000004000040B3
1266:104F100081B200000400004081B2000004000040A3
1267:104F200081B200000400004081B200000400004093
1268:104F300081B200000400004081B200000400004083
1269:104F400081B200000400004081B200000400004073
1270:104F500081B200000400004081B200000400004063
1271:104F600081B200000400004081B200000400004053
1272:104F700081B200000400004081B200000400004043
1273:104F800081B200000400004081B200000400004033
1274:104F900081B200000400004081B200000400004023
1275:104FA00081B200000400004081B200000400004013
1276:104FB00081B200000400004081B200000400004003
1277:104FC00081B200000400004081B2000004000040F3
1278:104FD00081B200000400004081B2000004000040E3
1279:104FE00081B200000400004081B2000004000040D3
1280:104FF00081B200000400004081B2000004000040C3
1281:1050000081B200000400004081B2000004000040B2
1282:1050100081B200000400004081B2000004000040A2
1283:1050200081B200000400004081B200000400004092
1284:1050300081B200000400004081B200000400004082
1285:1050400081B200000400004081B200000400004072
1286:1050500081B200000400004081B200000400004062
1287:1050600081B200000400004081B200000400004052
1288:1050700081B200000400004081B200000400004042
1289:1050800081B200000400004081B200000400004032
1290:1050900081B200000400004081B200000400004022
1291:1050A00081B200000400004081B200000400004012
1292:1050B00081B200000400004081B200000400004002
1293:1050C00081B200000400004081B2000004000040F2
1294:1050D00081B200000400004081B2000004000040E2
1295:1050E00081B200000400004081B2000004000040D2
1296:1050F00081B200000400004081B2000004000040C2
1297:1051000081B200000400004081B2000004000040B1
1298:1051100081B200000400004081B2000004000040A1
1299:1051200081B200000400004081B200000400004091
1300:1051300081B200000400004081B200000400004081
1301:1051400081B200000400004081B200000400004071
1302:1051500081B200000400004081B200000400004061
1303:1051600081B200000400004081B200000400004051
1304:1051700081B200000400004081B200000400004041
1305:1051800081B200000400004081B200000400004031
1306:1051900081B200000400004081B200000400004021
1307:1051A00081B200000400004081B200000400004011
1308:1051B00081B200000400004081B200000400004001
1309:1051C00081B200000400004081B2000004000040F1
1310:1051D00081B200000400004081B2000004000040E1
1311:1051E00081B200000400004081B2000004000040D1
1312:1051F00081B200000400004081B2000004000040C1
1313:1052000081B200000400004081B2000004000040B0
1314:1052100081B200000400004081B2000004000040A0
1315:1052200081B200000400004081B200000400004090
1316:1052300081B200000400004081B200000400004080
1317:1052400081B200000400004081B200000400004070
1318:1052500081B200000400004081B200000400004060
1319:1052600081B200000400004081B200000400004050
1320:1052700081B200000400004081B200000400004040
1321:1052800081B200000400004081B200000400004030
1322:1052900081B200000400004081B200000400004020
1323:1052A00081B200000400004081B200000400004010
1324:1052B00081B200000400004081B200000400004000
1325:1052C00081B200000400004081B2000004000040F0
1326:1052D00081B200000400004081B2000004000040E0
1327:1052E00081B200000400004081B2000004000040D0
1328:1052F00081B200000400004081B2000004000040C0
1329:1053000081B200000400004081B2000004000040AF
1330:1053100081B200000400004081B20000040000409F
1331:1053200081B200000400004081B20000040000408F
1332:1053300081B200000400004081B20000040000407F
1333:1053400081B200000400004081B20000040000406F
1334:1053500081B200000400004081B20000040000405F
1335:1053600081B200000400004081B20000040000404F
1336:1053700081B200000400004081B20000040000403F
1337:1053800081B200000400004081B20000040000402F
1338:1053900081B200000400004081B20000040000401F
1339:1053A00081B200000400004081B20000040000400F
1340:1053B00081B200000400004081B2000004000040FF
1341:1053C00081B200000400004081B2000004000040EF
1342:1053D00081B200000400004081B2000004000040DF
1343:1053E00081B200000400004081B2000004000040CF
1344:1053F00081B200000400004081B2000004000040BF
1345:1054000081B200000400004081B2000004000040AE
1346:1054100081B200000400004081B20000040000409E
1347:1054200081B200000400004081B20000040000408E
1348:1054300081B200000400004081B20000040000407E
1349:1054400081B200000400004081B20000040000406E
1350:1054500081B200000400004081B20000040000405E
1351:1054600081B200000400004081B20000040000404E
1352:1054700081B200000400004081B20000040000403E
1353:1054800081B200000400004081B20000040000402E
1354:1054900081B200000400004081B20000040000401E
1355:1054A00081B200000400004081B20000040000400E
1356:1054B00081B200000400004081B2000004000040FE
1357:1054C00081B200000400004081B2000004000040EE
1358:1054D00081B200000400004081B2000004000040DE
1359:1054E00081B200000400004081B2000004000040CE
1360:1054F00081B200000400004081B2000004000040BE
1361:1055000081B200000400004081B2000004000040AD
1362:1055100081B200000400004081B20000040000409D
1363:1055200081B200000400004081B20000040000408D
1364:1055300081B200000400004081B20000040000407D
1365:1055400081B200000400004081B20000040000406D
1366:1055500081B200000400004081B20000040000405D
1367:1055600081B200000400004081B20000040000404D
1368:1055700081B200000400004081B20000040000403D
1369:1055800081B200000400004081B20000040000402D
1370:1055900081B200000400004081B20000040000401D
1371:1055A00081B200000400004081B20000040000400D
1372:1055B00081B200000400004081B2000004000040FD
1373:1055C00081B200000400004081B2000004000040ED
1374:1055D00081B200000400004081B2000004000040DD
1375:1055E00081B200000400004081B2000004000040CD
1376:1055F00081B200000400004081B2000004000040BD
1377:1056000081B200000400004081B2000004000040AC
1378:1056100081B200000400004081B20000040000409C
1379:1056200081B200000400004081B20000040000408C
1380:1056300081B200000400004081B20000040000407C
1381:1056400081B200000400004081B20000040000406C
1382:1056500081B200000400004081B20000040000405C
1383:1056600081B200000400004081B20000040000404C
1384:1056700081B200000400004081B20000040000403C
1385:1056800081B200000400004081B20000040000402C
1386:1056900081B200000400004081B20000040000401C
1387:1056A00081B200000400004081B20000040000400C
1388:1056B00081B200000400004081B2000004000040FC
1389:1056C00081B200000400004081B2000004000040EC
1390:1056D00081B200000400004081B2000004000040DC
1391:1056E00081B200000400004081B2000004000040CC
1392:1056F00081B200000400004081B2000004000040BC
1393:1057000081B200000400004081B2000004000040AB
1394:1057100081B200000400004081B20000040000409B
1395:1057200081B200000400004081B20000040000408B
1396:1057300081B200000400004081B20000040000407B
1397:1057400081B200000400004081B20000040000406B
1398:1057500081B200000400004081B20000040000405B
1399:1057600081B200000400004081B20000040000404B
1400:1057700081B200000400004081B20000040000403B
1401:1057800081B200000400004081B20000040000402B
1402:1057900081B200000400004081B20000040000401B
1403:1057A00081B200000400004081B20000040000400B
1404:1057B00081B200000400004081B2000004000040FB
1405:1057C00081B200000400004081B2000004000040EB
1406:1057D00081B200000400004081B2000004000040DB
1407:1057E00081B200000400004081B2000004000040CB
1408:1057F00081B200000400004081B2000004000040BB
1409:1058000081B200000400004081B2000004000040AA
1410:1058100081B200000400004081B20000040000409A
1411:1058200081B200000400004081B20000040000408A
1412:1058300081B200000400004081B20000040000407A
1413:1058400081B200000400004081B20000040000406A
1414:1058500081B200000400004081B20000040000405A
1415:1058600081B200000400004081B20000040000404A
1416:1058700081B200000400004081B20000040000403A
1417:1058800081B200000400004081B20000040000402A
1418:1058900081B200000400004081B20000040000401A
1419:1058A00081B200000400004081B20000040000400A
1420:1058B00081B200000400004081B2000004000040FA
1421:1058C00081B200000400004081B2000004000040EA
1422:1058D00081B200000400004081B2000004000040DA
1423:1058E00081B200000400004081B2000004000040CA
1424:1058F00081B200000400004081B2000004000040BA
1425:1059000081B200000400004081B2000004000040A9
1426:1059100081B200000400004081B200000400004099
1427:1059200081B200000400004081B200000400004089
1428:1059300081B200000400004081B200000400004079
1429:1059400081B200000400004081B200000400004069
1430:1059500081B200000400004081B200000400004059
1431:1059600081B200000400004081B200000400004049
1432:1059700081B200000400004081B200000400004039
1433:1059800081B200000400004081B200000400004029
1434:1059900081B200000400004081B200000400004019
1435:1059A00081B200000400004081B200000400004009
1436:1059B00081B200000400004081B2000004000040F9
1437:1059C00081B200000400004081B2000004000040E9
1438:1059D00081B200000400004081B2000004000040D9
1439:1059E00081B200000400004081B2000004000040C9
1440:1059F00081B200000400004081B2000004000040B9
1441:105A000081B200000400004081B2000004000040A8
1442:105A100081B200000400004081B200000400004098
1443:105A200081B200000400004081B200000400004088
1444:105A300081B200000400004081B200000400004078
1445:105A400081B200000400004081B200000400004068
1446:105A500081B200000400004081B200000400004058
1447:105A600081B200000400004081B200000400004048
1448:105A700081B200000400004081B200000400004038
1449:105A800081B200000400004081B200000400004028
1450:105A900081B200000400004081B200000400004018
1451:105AA00081B200000400004081B200000400004008
1452:105AB00081B200000400004081B2000004000040F8
1453:105AC00081B200000400004081B2000004000040E8
1454:105AD00081B200000400004081B2000004000040D8
1455:105AE00081B200000400004081B2000004000040C8
1456:105AF00081B200000400004081B2000004000040B8
1457:105B000081B200000400004081B2000004000040A7
1458:105B100081B200000400004081B200000400004097
1459:105B200081B200000400004081B200000400004087
1460:105B300081B200000400004081B200000400004077
1461:105B400081B200000400004081B200000400004067
1462:105B500081B200000400004081B200000400004057
1463:105B600081B200000400004081B200000400004047
1464:105B700081B200000400004081B200000400004037
1465:105B800081B200000400004081B200000400004027
1466:105B900081B200000400004081B200000400004017
1467:105BA00081B200000400004081B200000400004007
1468:105BB00081B200000400004081B2000004000040F7
1469:105BC00081B200000400004081B2000004000040E7
1470:105BD00081B200000400004081B2000004000040D7
1471:105BE00081B200000400004081B2000004000040C7
1472:105BF00081B200000400004081B2000004000040B7
1473:105C000081B200000400004081B2000004000040A6
1474:105C100081B200000400004081B200000400004096
1475:105C200081B200000400004081B200000400004086
1476:105C300081B200000400004081B200000400004076
1477:105C400081B200000400004081B200000400004066
1478:105C500081B200000400004081B200000400004056
1479:105C600081B200000400004081B200000400004046
1480:105C700081B200000400004081B200000400004036
1481:105C800081B200000400004081B200000400004026
1482:105C900081B200000400004081B200000400004016
1483:105CA00081B200000400004081B200000400004006
1484:105CB00081B200000400004081B2000004000040F6
1485:105CC00081B200000400004081B2000004000040E6
1486:105CD00081B200000400004081B2000004000040D6
1487:105CE00081B200000400004081B2000004000040C6
1488:105CF00081B200000400004081B2000004000040B6
1489:105D000081B200000400004081B2000004000040A5
1490:105D100081B200000400004081B200000400004095
1491:105D200081B200000400004081B200000400004085
1492:105D300081B200000400004081B200000400004075
1493:105D400081B200000400004081B200000400004065
1494:105D500081B200000400004081B200000400004055
1495:105D600081B200000400004081B200000400004045
1496:105D700081B200000400004081B200000400004035
1497:105D800081B200000400004081B200000400004025
1498:105D900081B200000400004081B200000400004015
1499:105DA00081B200000400004081B200000400004005
1500:105DB00081B200000400004081B2000004000040F5
1501:105DC00081B200000400004081B2000004000040E5
1502:105DD00081B200000400004081B2000004000040D5
1503:105DE00081B200000400004081B2000004000040C5
1504:105DF00081B200000400004081B2000004000040B5
1505:105E000081B200000400004081B2000004000040A4
1506:105E100081B200000400004081B200000400004094
1507:105E200081B200000400004081B200000400004084
1508:105E300081B200000400004081B200000400004074
1509:105E400081B200000400004081B200000400004064
1510:105E500081B200000400004081B200000400004054
1511:105E600081B200000400004081B200000400004044
1512:105E700081B200000400004081B200000400004034
1513:105E800081B200000400004081B200000400004024
1514:105E900081B200000400004081B200000400004014
1515:105EA00081B200000400004081B200000400004004
1516:105EB00081B200000400004081B2000004000040F4
1517:105EC00081B200000400004081B2000004000040E4
1518:105ED00081B200000400004081B2000004000040D4
1519:105EE00081B200000400004081B2000004000040C4
1520:105EF00081B200000400004081B2000004000040B4
1521:105F000081B200000400004081B2000004000040A3
1522:105F100081B200000400004081B200000400004093
1523:105F200081B200000400004081B200000400004083
1524:105F300081B200000400004081B200000400004073
1525:105F400081B200000400004081B200000400004063
1526:105F500081B200000400004081B200000400004053
1527:105F600081B200000400004081B200000400004043
1528:105F700081B200000400004081B200000400004033
1529:105F800081B200000400004081B200000400004023
1530:105F900081B200000400004081B200000400004013
1531:105FA00081B200000400004081B200000400004003
1532:105FB00081B200000400004081B2000004000040F3
1533:105FC00081B200000400004081B2000004000040E3
1534:105FD00081B200000400004081B2000004000040D3
1535:105FE00081B200000400004081B2000004000040C3
1536:105FF00081B200000400004081B2000004000040B3
1537:1060000081B200000400004081B2000004000040A2
1538:1060100081B200000400004081B200000400004092
1539:1060200081B200000400004081B200000400004082
1540:1060300081B200000400004081B200000400004072
1541:1060400081B200000400004081B200000400004062
1542:1060500081B200000400004081B200000400004052
1543:1060600081B200000400004081B200000400004042
1544:1060700081B200000400004081B200000400004032
1545:1060800081B200000400004081B200000400004022
1546:1060900081B200000400004081B200000400004012
1547:1060A00081B200000400004081B200000400004002
1548:1060B00081B200000400004081B2000004000040F2
1549:1060C00081B200000400004081B2000004000040E2
1550:1060D00081B200000400004081B2000004000040D2
1551:1060E00081B200000400004081B2000004000040C2
1552:1060F00081B200000400004081B2000004000040B2
1553:1061000081B200000400004081B2000004000040A1
1554:1061100081B200000400004081B200000400004091
1555:1061200081B200000400004081B200000400004081
1556:1061300081B200000400004081B200000400004071
1557:1061400081B200000400004081B200000400004061
1558:1061500081B200000400004081B200000400004051
1559:1061600081B200000400004081B200000400004041
1560:1061700081B200000400004081B200000400004031
1561:1061800081B200000400004081B200000400004021
1562:1061900081B200000400004081B200000400004011
1563:1061A00081B200000400004081B200000400004001
1564:1061B00081B200000400004081B2000004000040F1
1565:1061C00081B200000400004081B2000004000040E1
1566:1061D00081B200000400004081B2000004000040D1
1567:1061E00081B200000400004081B2000004000040C1
1568:1061F00081B200000400004081B2000004000040B1
1569:1062000081B200000400004081B2000004000040A0
1570:1062100081B200000400004081B200000400004090
1571:1062200081B200000400004081B200000400004080
1572:1062300081B200000400004081B200000400004070
1573:1062400081B200000400004081B200000400004060
1574:1062500081B200000400004081B200000400004050
1575:1062600081B200000400004081B200000400004040
1576:1062700081B200000400004081B200000400004030
1577:1062800081B200000400004081B200000400004020
1578:1062900081B200000400004081B200000400004010
1579:1062A00081B200000400004081B200000400004000
1580:1062B00081B200000400004081B2000004000040F0
1581:1062C00081B200000400004081B2000004000040E0
1582:1062D00081B200000400004081B2000004000040D0
1583:1062E00081B200000400004081B2000004000040C0
1584:1062F00081B200000400004081B2000004000040B0
1585:1063000081B200000400004081B20000040000409F
1586:1063100081B200000400004081B20000040000408F
1587:1063200081B200000400004081B20000040000407F
1588:1063300081B200000400004081B20000040000406F
1589:1063400081B200000400004081B20000040000405F
1590:1063500081B200000400004081B20000040000404F
1591:1063600081B200000400004081B20000040000403F
1592:1063700081B200000400004081B20000040000402F
1593:1063800081B200000400004081B20000040000401F
1594:1063900081B200000400004081B20000040000400F
1595:1063A00081B200000400004081B2000004000040FF
1596:1063B00081B200000400004081B2000004000040EF
1597:1063C00081B200000400004081B2000004000040DF
1598:1063D00081B200000400004081B2000004000040CF
1599:1063E00081B200000400004081B2000004000040BF
1600:1063F00081B200000400004081B2000004000040AF
1601:1064000081B200000400004081B20000040000409E
1602:1064100081B200000400004081B20000040000408E
1603:1064200081B200000400004081B20000040000407E
1604:1064300081B200000400004081B20000040000406E
1605:1064400081B200000400004081B20000040000405E
1606:1064500081B200000400004081B20000040000404E
1607:1064600081B200000400004081B20000040000403E
1608:1064700081B200000400004081B20000040000402E
1609:1064800081B200000400004081B20000040000401E
1610:1064900081B200000400004081B20000040000400E
1611:1064A00081B200000400004081B2000004000040FE
1612:1064B00081B200000400004081B2000004000040EE
1613:1064C00081B200000400004081B2000004000040DE
1614:1064D00081B200000400004081B2000004000040CE
1615:1064E00081B200000400004081B2000004000040BE
1616:1064F00081B200000400004081B2000004000040AE
1617:1065000081B200000400004081B20000040000409D
1618:1065100081B200000400004081B20000040000408D
1619:1065200081B200000400004081B20000040000407D
1620:1065300081B200000400004081B20000040000406D
1621:1065400081B200000400004081B20000040000405D
1622:1065500081B200000400004081B20000040000404D
1623:1065600081B200000400004081B20000040000403D
1624:1065700081B200000400004081B20000040000402D
1625:1065800081B200000400004081B20000040000401D
1626:1065900081B200000400004081B20000040000400D
1627:1065A00081B200000400004081B2000004000040FD
1628:1065B00081B200000400004081B2000004000040ED
1629:1065C00081B200000400004081B2000004000040DD
1630:1065D00081B200000400004081B2000004000040CD
1631:1065E00081B200000400004081B2000004000040BD
1632:1065F00081B200000400004081B2000004000040AD
1633:1066000081B200000400004081B20000040000409C
1634:1066100081B200000400004081B20000040000408C
1635:1066200081B200000400004081B20000040000407C
1636:1066300081B200000400004081B20000040000406C
1637:1066400081B200000400004081B20000040000405C
1638:1066500081B200000400004081B20000040000404C
1639:1066600081B200000400004081B20000040000403C
1640:1066700081B200000400004081B20000040000402C
1641:1066800081B200000400004081B20000040000401C
1642:1066900081B200000400004081B20000040000400C
1643:1066A00081B200000400004081B2000004000040FC
1644:1066B00081B200000400004081B2000004000040EC
1645:1066C00081B200000400004081B2000004000040DC
1646:1066D00081B200000400004081B2000004000040CC
1647:1066E00081B200000400004081B2000004000040BC
1648:1066F00081B200000400004081B2000004000040AC
1649:1067000081B200000400004081B20000040000409B
1650:1067100081B200000400004081B20000040000408B
1651:1067200081B200000400004081B20000040000407B
1652:1067300081B200000400004081B20000040000406B
1653:1067400081B200000400004081B20000040000405B
1654:1067500081B200000400004081B20000040000404B
1655:1067600081B200000400004081B20000040000403B
1656:1067700081B200000400004081B20000040000402B
1657:1067800081B200000400004081B20000040000401B
1658:1067900081B200000400004081B20000040000400B
1659:1067A00081B200000400004081B2000004000040FB
1660:1067B00081B200000400004081B2000004000040EB
1661:1067C00081B200000400004081B2000004000040DB
1662:1067D00081B200000400004081B2000004000040CB
1663:1067E00081B200000400004081B2000004000040BB
1664:1067F00081B200000400004081B2000004000040AB
1665:1068000081B200000400004081B20000040000409A
1666:1068100081B200000400004081B20000040000408A
1667:1068200081B200000400004081B20000040000407A
1668:1068300081B200000400004081B20000040000406A
1669:1068400081B200000400004081B20000040000405A
1670:1068500081B200000400004081B20000040000404A
1671:1068600081B200000400004081B20000040000403A
1672:1068700081B200000400004081B20000040000402A
1673:1068800081B200000400004081B20000040000401A
1674:1068900081B200000400004081B20000040000400A
1675:1068A00081B200000400004081B2000004000040FA
1676:1068B00081B200000400004081B2000004000040EA
1677:1068C00081B200000400004081B2000004000040DA
1678:1068D00081B200000400004081B2000004000040CA
1679:1068E00081B200000400004081B2000004000040BA
1680:1068F00081B200000400004081B2000004000040AA
1681:1069000081B200000400004081B200000400004099
1682:1069100081B200000400004081B200000400004089
1683:1069200081B200000400004081B200000400004079
1684:1069300081B200000400004081B200000400004069
1685:1069400081B200000400004081B200000400004059
1686:1069500081B200000400004081B200000400004049
1687:1069600081B200000400004081B200000400004039
1688:1069700081B200000400004081B200000400004029
1689:1069800081B200000400004081B200000400004019
1690:1069900081B200000400004081B200000400004009
1691:1069A00081B200000400004081B2000004000040F9
1692:1069B00081B200000400004081B2000004000040E9
1693:1069C00081B200000400004081B2000004000040D9
1694:1069D00081B200000400004081B2000004000040C9
1695:1069E00081B200000400004081B2000004000040B9
1696:1069F00081B200000400004081B2000004000040A9
1697:106A000081B200000400004081B200000400004098
1698:106A100081B200000400004081B200000400004088
1699:106A200081B200000400004081B200000400004078
1700:106A300081B200000400004081B200000400004068
1701:106A400081B200000400004081B200000400004058
1702:106A500081B200000400004081B200000400004048
1703:106A600081B200000400004081B200000400004038
1704:106A700081B200000400004081B200000400004028
1705:106A800081B200000400004081B200000400004018
1706:106A900081B200000400004081B200000400004008
1707:106AA00081B200000400004081B2000004000040F8
1708:106AB00081B200000400004081B2000004000040E8
1709:106AC00081B200000400004081B2000004000040D8
1710:106AD00081B200000400004081B2000004000040C8
1711:106AE00081B200000400004081B2000004000040B8
1712:106AF00081B200000400004081B2000004000040A8
1713:106B000081B200000400004081B200000400004097
1714:106B100081B200000400004081B200000400004087
1715:106B200081B200000400004081B200000400004077
1716:106B300081B200000400004081B200000400004067
1717:106B400081B200000400004081B200000400004057
1718:106B500081B200000400004081B200000400004047
1719:106B600081B200000400004081B200000400004037
1720:106B700081B200000400004081B200000400004027
1721:106B800081B200000400004081B200000400004017
1722:106B900081B200000400004081B200000400004007
1723:106BA00081B200000400004081B2000004000040F7
1724:106BB00081B200000400004081B2000004000040E7
1725:106BC00081B200000400004081B2000004000040D7
1726:106BD00081B200000400004081B2000004000040C7
1727:106BE00081B200000400004081B2000004000040B7
1728:106BF00081B200000400004081B2000004000040A7
1729:106C000081B200000400004081B200000400004096
1730:106C100081B200000400004081B200000400004086
1731:106C200081B200000400004081B200000400004076
1732:106C300081B200000400004081B200000400004066
1733:106C400081B200000400004081B200000400004056
1734:106C500081B200000400004081B200000400004046
1735:106C600081B200000400004081B200000400004036
1736:106C700081B200000400004081B200000400004026
1737:106C800081B200000400004081B200000400004016
1738:106C900081B200000400004081B200000400004006
1739:106CA00081B200000400004081B2000004000040F6
1740:106CB00081B200000400004081B2000004000040E6
1741:106CC00081B200000400004081B2000004000040D6
1742:106CD00081B200000400004081B2000004000040C6
1743:106CE00081B200000400004081B2000004000040B6
1744:106CF00081B200000400004081B2000004000040A6
1745:106D000081B200000400004081B200000400004095
1746:106D100081B200000400004081B200000400004085
1747:106D200081B200000400004081B200000400004075
1748:106D300081B200000400004081B200000400004065
1749:106D400081B200000400004081B200000400004055
1750:106D500081B200000400004081B200000400004045
1751:106D600081B200000400004081B200000400004035
1752:106D700081B200000400004081B200000400004025
1753:106D800081B200000400004081B200000400004015
1754:106D900081B200000400004081B200000400004005
1755:106DA00081B200000400004081B2000004000040F5
1756:106DB00081B200000400004081B2000004000040E5
1757:106DC00081B200000400004081B2000004000040D5
1758:106DD00081B200000400004081B2000004000040C5
1759:106DE00081B200000400004081B2000004000040B5
1760:106DF00081B200000400004081B2000004000040A5
1761:106E000081B200000400004081B200000400004094
1762:106E100081B200000400004081B200000400004084
1763:106E200081B200000400004081B200000400004074
1764:106E300081B200000400004081B200000400004064
1765:106E400081B200000400004081B200000400004054
1766:106E500081B200000400004081B200000400004044
1767:106E600081B200000400004081B200000400004034
1768:106E700081B200000400004081B200000400004024
1769:106E800081B200000400004081B200000400004014
1770:106E900081B200000400004081B200000400004004
1771:106EA00081B200000400004081B2000004000040F4
1772:106EB00081B200000400004081B2000004000040E4
1773:106EC00081B200000400004081B2000004000040D4
1774:106ED00081B200000400004081B2000004000040C4
1775:106EE00081B200000400004081B2000004000040B4
1776:106EF00081B200000400004081B2000004000040A4
1777:106F000081B200000400004081B200000400004093
1778:106F100081B200000400004081B200000400004083
1779:106F200081B200000400004081B200000400004073
1780:106F300081B200000400004081B200000400004063
1781:106F400081B200000400004081B200000400004053
1782:106F500081B200000400004081B200000400004043
1783:106F600081B200000400004081B200000400004033
1784:106F700081B200000400004081B200000400004023
1785:106F800081B200000400004081B200000400004013
1786:106F900081B200000400004081B200000400004003
1787:106FA00081B200000400004081B2000004000040F3
1788:106FB00081B200000400004081B2000004000040E3
1789:106FC00081B200000400004081B2000004000040D3
1790:106FD00081B200000400004081B2000004000040C3
1791:106FE00081B200000400004081B2000004000040B3
1792:106FF00081B200000400004081B2000004000040A3
1793:1070000081B200000400004081B200000400004092
1794:1070100081B200000400004081B200000400004082
1795:1070200081B200000400004081B200000400004072
1796:1070300081B200000400004081B200000400004062
1797:1070400081B200000400004081B200000400004052
1798:1070500081B200000400004081B200000400004042
1799:1070600081B200000400004081B200000400004032
1800:1070700081B200000400004081B200000400004022
1801:1070800081B200000400004081B200000400004012
1802:1070900081B200000400004081B200000400004002
1803:1070A00081B200000400004081B2000004000040F2
1804:1070B00081B200000400004081B2000004000040E2
1805:1070C00081B200000400004081B2000004000040D2
1806:1070D00081B200000400004081B2000004000040C2
1807:1070E00081B200000400004081B2000004000040B2
1808:1070F00081B200000400004081B2000004000040A2
1809:1071000081B200000400004081B200000400004091
1810:1071100081B200000400004081B200000400004081
1811:1071200081B200000400004081B200000400004071
1812:1071300081B200000400004081B200000400004061
1813:1071400081B200000400004081B200000400004051
1814:1071500081B200000400004081B200000400004041
1815:1071600081B200000400004081B200000400004031
1816:1071700081B200000400004081B200000400004021
1817:1071800081B200000400004081B200000400004011
1818:1071900081B200000400004081B200000400004001
1819:1071A00081B200000400004081B2000004000040F1
1820:1071B00081B200000400004081B2000004000040E1
1821:1071C00081B200000400004081B2000004000040D1
1822:1071D00081B200000400004081B2000004000040C1
1823:1071E00081B200000400004081B2000004000040B1
1824:1071F00081B200000400004081B2000004000040A1
1825:1072000081B200000400004081B200000400004090
1826:1072100081B200000400004081B200000400004080
1827:1072200081B200000400004081B200000400004070
1828:1072300081B200000400004081B200000400004060
1829:1072400081B200000400004081B200000400004050
1830:1072500081B200000400004081B200000400004040
1831:1072600081B200000400004081B200000400004030
1832:1072700081B200000400004081B200000400004020
1833:1072800081B200000400004081B200000400004010
1834:1072900081B200000400004081B200000400004000
1835:1072A00081B200000400004081B2000004000040F0
1836:1072B00081B200000400004081B2000004000040E0
1837:1072C00081B200000400004081B2000004000040D0
1838:1072D00081B200000400004081B2000004000040C0
1839:1072E00081B200000400004081B2000004000040B0
1840:1072F00081B200000400004081B2000004000040A0
1841:1073000081B200000400004081B20000040000408F
1842:1073100081B200000400004081B20000040000407F
1843:1073200081B200000400004081B20000040000406F
1844:1073300081B200000400004081B20000040000405F
1845:1073400081B200000400004081B20000040000404F
1846:1073500081B200000400004081B20000040000403F
1847:1073600081B200000400004081B20000040000402F
1848:1073700081B200000400004081B20000040000401F
1849:1073800081B200000400004081B20000040000400F
1850:1073900081B200000400004081B2000004000040FF
1851:1073A00081B200000400004081B2000004000040EF
1852:1073B00081B200000400004081B2000004000040DF
1853:1073C00081B200000400004081B2000004000040CF
1854:1073D00081B200000400004081B2000004000040BF
1855:1073E00081B200000400004081B2000004000040AF
1856:1073F00081B200000400004081B20000040000409F
1857:1074000081B200000400004081B20000040000408E
1858:1074100081B200000400004081B20000040000407E
1859:1074200081B200000400004081B20000040000406E
1860:1074300081B200000400004081B20000040000405E
1861:1074400081B200000400004081B20000040000404E
1862:1074500081B200000400004081B20000040000403E
1863:1074600081B200000400004081B20000040000402E
1864:1074700081B200000400004081B20000040000401E
1865:1074800081B200000400004081B20000040000400E
1866:1074900081B200000400004081B2000004000040FE
1867:1074A00081B200000400004081B2000004000040EE
1868:1074B00081B200000400004081B2000004000040DE
1869:1074C00081B200000400004081B2000004000040CE
1870:1074D00081B200000400004081B2000004000040BE
1871:1074E00081B200000400004081B2000004000040AE
1872:1074F00081B200000400004081B20000040000409E
1873:1075000081B200000400004081B20000040000408D
1874:1075100081B200000400004081B20000040000407D
1875:1075200081B200000400004081B20000040000406D
1876:1075300081B200000400004081B20000040000405D
1877:1075400081B200000400004081B20000040000404D
1878:1075500081B200000400004081B20000040000403D
1879:1075600081B200000400004081B20000040000402D
1880:1075700081B200000400004081B20000040000401D
1881:1075800081B200000400004081B20000040000400D
1882:1075900081B200000400004081B2000004000040FD
1883:1075A00081B200000400004081B2000004000040ED
1884:1075B00081B200000400004081B2000004000040DD
1885:1075C00081B200000400004081B2000004000040CD
1886:1075D00081B200000400004081B2000004000040BD
1887:1075E00081B200000400004081B2000004000040AD
1888:1075F00081B200000400004081B20000040000409D
1889:1076000081B200000400004081B20000040000408C
1890:1076100081B200000400004081B20000040000407C
1891:1076200081B200000400004081B20000040000406C
1892:1076300081B200000400004081B20000040000405C
1893:1076400081B200000400004081B20000040000404C
1894:1076500081B200000400004081B20000040000403C
1895:1076600081B200000400004081B20000040000402C
1896:1076700081B200000400004081B20000040000401C
1897:1076800081B200000400004081B20000040000400C
1898:1076900081B200000400004081B2000004000040FC
1899:1076A00081B200000400004081B2000004000040EC
1900:1076B00081B200000400004081B2000004000040DC
1901:1076C00081B200000400004081B2000004000040CC
1902:1076D00081B200000400004081B2000004000040BC
1903:1076E00081B200000400004081B2000004000040AC
1904:1076F00081B200000400004081B20000040000409C
1905:1077000081B200000400004081B20000040000408B
1906:1077100081B200000400004081B20000040000407B
1907:1077200081B200000400004081B20000040000406B
1908:1077300081B200000400004081B20000040000405B
1909:1077400081B200000400004081B20000040000404B
1910:1077500081B200000400004081B20000040000403B
1911:1077600081B200000400004081B20000040000402B
1912:1077700081B200000400004081B20000040000401B
1913:1077800081B200000400004081B20000040000400B
1914:1077900081B200000400004081B2000004000040FB
1915:1077A00081B200000400004081B2000004000040EB
1916:1077B00081B200000400004081B2000004000040DB
1917:1077C00081B200000400004081B2000004000040CB
1918:1077D00081B200000400004081B2000004000040BB
1919:1077E00081B200000400004081B2000004000040AB
1920:1077F00081B200000400004081B20000040000409B
1921:1078000081B200000400004081B20000040000408A
1922:1078100081B200000400004081B20000040000407A
1923:1078200081B200000400004081B20000040000406A
1924:1078300081B200000400004081B20000040000405A
1925:1078400081B200000400004081B20000040000404A
1926:1078500081B200000400004081B20000040000403A
1927:1078600081B200000400004081B20000040000402A
1928:1078700081B200000400004081B20000040000401A
1929:1078800081B200000400004081B20000040000400A
1930:1078900081B200000400004081B2000004000040FA
1931:1078A00081B200000400004081B2000004000040EA
1932:1078B00081B200000400004081B2000004000040DA
1933:1078C00081B200000400004081B2000004000040CA
1934:1078D00081B200000400004081B2000004000040BA
1935:1078E00081B200000400004081B2000004000040AA
1936:1078F00081B200000400004081B20000040000409A
1937:1079000081B200000400004081B200000400004089
1938:1079100081B200000400004081B200000400004079
1939:1079200081B200000400004081B200000400004069
1940:1079300081B200000400004081B200000400004059
1941:1079400081B200000400004081B200000400004049
1942:1079500081B200000400004081B200000400004039
1943:1079600081B200000400004081B200000400004029
1944:1079700081B200000400004081B200000400004019
1945:1079800081B200000400004081B200000400004009
1946:1079900081B200000400004081B2000004000040F9
1947:1079A00081B200000400004081B2000004000040E9
1948:1079B00081B200000400004081B2000004000040D9
1949:1079C00081B200000400004081B2000004000040C9
1950:1079D00081B200000400004081B2000004000040B9
1951:1079E00081B200000400004081B2000004000040A9
1952:1079F00081B200000400004081B200000400004099
1953:107A000081B200000400004081B200000400004088
1954:107A100081B200000400004081B200000400004078
1955:107A200081B200000400004081B200000400004068
1956:107A300081B200000400004081B200000400004058
1957:107A400081B200000400004081B200000400004048
1958:107A500081B200000400004081B200000400004038
1959:107A600081B200000400004081B200000400004028
1960:107A700081B200000400004081B200000400004018
1961:107A800081B200000400004081B200000400004008
1962:107A900081B200000400004081B2000004000040F8
1963:107AA00081B200000400004081B2000004000040E8
1964:107AB00081B200000400004081B2000004000040D8
1965:107AC00081B200000400004081B2000004000040C8
1966:107AD00081B200000400004081B2000004000040B8
1967:107AE00081B200000400004081B2000004000040A8
1968:107AF00081B200000400004081B200000400004098
1969:107B000081B200000400004081B200000400004087
1970:107B100081B200000400004081B200000400004077
1971:107B200081B200000400004081B200000400004067
1972:107B300081B200000400004081B200000400004057
1973:107B400081B200000400004081B200000400004047
1974:107B500081B200000400004081B200000400004037
1975:107B600081B200000400004081B200000400004027
1976:107B700081B200000400004081B200000400004017
1977:107B800081B200000400004081B200000400004007
1978:107B900081B200000400004081B2000004000040F7
1979:107BA00081B200000400004081B2000004000040E7
1980:107BB00081B200000400004081B2000004000040D7
1981:107BC00081B200000400004081B2000004000040C7
1982:107BD00081B200000400004081B2000004000040B7
1983:107BE00081B200000400004081B2000004000040A7
1984:107BF00081B200000400004081B200000400004097
1985:107C000081B200000400004081B200000400004086
1986:107C100081B200000400004081B200000400004076
1987:107C200081B200000400004081B200000400004066
1988:107C300081B200000400004081B200000400004056
1989:107C400081B200000400004081B200000400004046
1990:107C500081B200000400004081B200000400004036
1991:107C600081B200000400004081B200000400004026
1992:107C700081B200000400004081B200000400004016
1993:107C800081B200000400004081B200000400004006
1994:107C900081B200000400004081B2000004000040F6
1995:107CA00081B200000400004081B2000004000040E6
1996:107CB00081B200000400004081B2000004000040D6
1997:107CC00081B200000400004081B2000004000040C6
1998:107CD00081B200000400004081B2000004000040B6
1999:107CE00081B200000400004081B2000004000040A6
2000:107CF00081B200000400004081B200000400004096
2001:107D000081B200000400004081B200000400004085
2002:107D100081B200000400004081B200000400004075
2003:107D200081B200000400004081B200000400004065
2004:107D300081B200000400004081B200000400004055
2005:107D400081B200000400004081B200000400004045
2006:107D500081B200000400004081B200000400004035
2007:107D600081B200000400004081B200000400004025
2008:107D700081B200000400004081B200000400004015
2009:107D800081B200000400004081B200000400004005
2010:107D900081B200000400004081B2000004000040F5
2011:107DA00081B200000400004081B2000004000040E5
2012:107DB00081B200000400004081B2000004000040D5
2013:107DC00081B200000400004081B2000004000040C5
2014:107DD00081B200000400004081B2000004000040B5
2015:107DE00081B200000400004081B2000004000040A5
2016:107DF00081B200000400004081B200000400004095
2017:107E000081B200000400004081B200000400004084
2018:107E100081B200000400004081B200000400004074
2019:107E200081B200000400004081B200000400004064
2020:107E300081B200000400004081B200000400004054
2021:107E400081B200000400004081B200000400004044
2022:107E500081B200000400004081B200000400004034
2023:107E600081B200000400004081B200000400004024
2024:107E700081B200000400004081B200000400004014
2025:107E800081B200000400004081B200000400004004
2026:107E900081B200000400004081B2000004000040F4
2027:107EA00081B200000400004081B2000004000040E4
2028:107EB00081B200000400004081B2000004000040D4
2029:107EC00081B200000400004081B2000004000040C4
2030:107ED00081B200000400004081B2000004000040B4
2031:107EE00081B200000400004081B2000004000040A4
2032:107EF00081B200000400004081B200000400004094
2033:107F000081B200000400004081B200000400004083
2034:107F100081B200000400004081B200000400004073
2035:107F200081B200000400004081B200000400004063
2036:107F300081B200000400004081B200000400004053
2037:107F400081B200000400004081B200000400004043
2038:107F500081B200000400004081B200000400004033
2039:107F600081B200000400004081B200000400004023
2040:107F700081B200000400004081B200000400004013
2041:107F800081B200000400004081B200000400004003
2042:107F900081B200000400004081B2000004000040F3
2043:107FA00081B200000400004081B2000004000040E3
2044:107FB00081B200000400004081B2000004000040D3
2045:107FC00081B200000400004081B20000F70F00BC45
2046:107FD00080B200000380004081B2000003800040B6
2047:107FE00081B200000380004081B2000003800040A5
2048:107FF00081B200000380004081B200000380004095
2049:1080000081B200000380004081B200000380004084
2050:1080100081B200003180004081B200003480004015
2051:1080200081B200003580004081B2000004000040B1
2052:1080300081B200001B80818080320000EC89A24068
2053:10804000916F00000000004C90B301005C952EA2DF
2054:1080500080B00100FF000080F489010090952AC8DB
2055:10806000E5B10100000000A1F0B1010000000040F6
2056:10807000F0B10100000000A4F0B10100000000D048
2057:10808000F0B10100000000D1F0B10100000000D209
2058:10809000F0B101000000004CF0B10100000000D47C
2059:1080A000F0B10100000000D3F0B10100000000EECB
2060:1080B000F0B101000000004EF0B1010000000040EE
2061:1080C00044B1010018801181983000000000514037
2062:1080D00081B201001A8011829830000000005240E5
2063:1080E00081B20100EC890048FD930000B603004016
2064:1080F000A19901002380A242FD7F00002080008022
2065:1081000080320000228011818230000022805140A4
2066:1081100081B2000022801182823000002280524011
2067:1081200081B200002C800048FD9300002780008071
2068:10813000803200002680A253077C000000005153CB
2069:10814000079001002A800052079000002980A25267
2070:10815000077C00000000525207900100000000530D
2071:108160000790010000000048FD9301000000004559
2072:10817000F39301005C952EA252B30100FF00008032
2073:10818000F48901000000004CE4B10100000000A9E6
2074:1081900045B101003080004C80B200000000454035
2075:1081A00081B201000000554081B201001B840540EE
2076:1081B00049B100001B84054049B1000000000540A2
2077:1081C00049B10100E1800040813201000000004B14
2078:1081D000DEB20100770000404B9901000000004032
2079:1081E000FD93010000000048FD83010002000040F3
2080:1081F0009B9B0100000000A59CB30100F699004084
2081:108200008132010058952044E0B1010000C000A671
2082:1082100036B10100D014004047990100050000402C
2083:10822000F599010000380040F59901000006004072
2084:10823000F599010000000040F59901000518004083
2085:10824000F599010002090040F59901000400004081
2086:10825000F599010050030040813201007B0300408A
2087:1082600081320100E083004081320100108400402F
2088:108270008132010008840040813201006095204075
2089:10828000E1B1010070952040E1B10100000000491A
2090:10829000DD9101000000004091B3010000000040AA
2091:1082A00085B301005C952040E1B101001A820040D5
2092:1082B0008132010071830040813201000200009789
2093:1082C00080980100000000402EB101000200004033
2094:1082D0002EDD01009001004093980100290100402B
2095:1082E000813201005C810040AF3301007999004088
2096:1082F000813201000000454081B20100000055407C
2097:1083000081B201004984004081B2000004000040B5
2098:1083100081B200000400004081B20000040000406F
2099:1083200081B200000400004081B20000040000405F
2100:1083300081B200000400004081B20000040000404F
2101:1083400081B200000400004081B20000040000403F
2102:1083500081B200007701004181C00000718051406E
2103:1083600081B200007280524081B20000738055409B
2104:1083700081B200007480564081B2000055019181A5
2105:10838000803000005A01454081B2000055019182C1
2106:10839000803000005A01464081B200005A01004876
2107:1083A000FD9300005A010048FD9300005A01004966
2108:1083B000FD8300005A01004AFD83000000000040D8
2109:1083C00049B10100AE0300CBA3C9010000000020A9
2110:1083D00046B10100000000D2F1B10100000000D35D
2111:1083E000F1B1010000000042F0B1010000000045C1
2112:1083F00061B101002000002062DD01000000A8D072
2113:10840000E1B100007C80004081B20000000000A8C3
2114:1084100098B00100048000408BB30000B10300401D
2115:10842000A19901008480A241976F000000000045DF
2116:10843000A1C101000000000080B001000000A20402
2117:108440008094000080153F4297E301000000004047
2118:1084500049B10100000060030294010000000040E7
2119:1084600007B00100040000CB99CB0100000000CC54
2120:10847000F38301008E80A241976F0000000000CBC3
2121:10848000F3930100AE0300CBA3C90100000000205C
2122:1084900044B1010000000044F1B1010000000000FF
2123:1084A000F0B1010000000004F0B10100000000A1E3
2124:1084B000E0B10100050000406199010020000020AA
2125:1084C00062DD01009580A84081320000C6020020D4
2126:1084D000423101000000A241056C0100000080CB88
2127:1084E000DB910100000019418BB3010060000040E6
2128:1084F000619901009B80A8B18C33000060000040AE
2129:10850000619901009D80A8B194330000A38014C636
2130:1085100081320000180000C683F401006A84224FF3
2131:10852000830400007F80004081B20000FF0100C68C
2132:1085300081880100000000C697A301007F801F5CB6
2133:10854000975300009E831DC68132000000002F4318
2134:1085500081F00100A980004010C9000005810040A1
2135:1085600081B200003681004081B20000DA8100CA89
2136:1085700063B300002D81004081B200001481004DE2
2137:1085800083B000001E81004E61B100000D810040EB
2138:1085900085B000001481004C83B00000F0800040E2
2139:1085A00085B000009181004049B100003D8100404C
2140:1085B000C1B100008D81004081B200000D810040FA
2141:1085C00085B00000DD81004049B100006A8400CA26
2142:1085D0009BB3000046810040C1B100004E810040C5
2143:1085E000C1B1000055810040C1B10000568100407A
2144:1085F000C1B1000057810040C1B100005881004066
2145:10860000C1B100005981004081B000005981004192
2146:1086100081B00000CE81004081B20000DD8300BB4C
2147:10862000ABB30000DB8100CACFB30000D3800040B1
2148:1086300049B10000DF80004081B20000DC810040D1
2149:1086400081B200006A84004081B20000DA800040FC
2150:1086500081B200006A8400CA77B300001581004D22
2151:1086600083B000001C81004E61B100000D8100BB91
2152:1086700085B000001581004C83B000000D8100BB67
2153:1086800085B00000F08000BB85B00000E2800040B3
2154:1086900081B200006A8400CA4DB3000064820040C9
2155:1086A00049B100008F82004049B10000C8142EBBC0
2156:1086B00085B00100000000EE82B001000000004122
2157:1086C000E0B10100FF7F00A2A08B01000000004488
2158:1086D000A5B30100758000CAA733010002810040E4
2159:1086E00081B200004E01004D933001004E01004E5A
2160:1086F000933001004E01004C93300100088400408B
2161:10870000813201006A84004081B20000549500402B
2162:10871000459901006A8400CAE5B10000000080406C
2163:1087200097B00100E88022428F6F0000EA8022416A
2164:108730008F6F0000EC801ECA81320000EE801FCADD
2165:1087400081320000000000CAC9B101006A84004201
2166:108750008FB30000000000CACDB101006A8400415F
2167:108760008FB30000000000CACFB101006A8400404E
2168:108770008FB30000008100A6C6B101006A840040EA
2169:1087800081B20000008000A6C6B101006A840040EA
2170:108790008FB30000781800404999010010002F9C09
2171:1087A00089B00100078100403933010018002F9B78
2172:1087B00089B00100078100403733010000002F9A83
2173:1087C00089B00100078100403533010008002F996E
2174:1087D00089B001000781004033330100008000AE02
2175:1087E00047C9010080000040F1990100000000CA63
2176:1087F000F1B1010000000042F0B10100401800405A
2177:10880000E19901000000004561B10100200000AEC7
2178:1088100063DD01000281284081320000FF800040BA
2179:1088200081B2000002814240813200000000005C01
2180:10883000699301006A841A449393000005814240C1
2181:108840008132000004810058699300000000004458
2182:10885000F0D101000000A44081B200000C81A240D0
2183:10886000E16D00000000004445D10100000080409F
2184:10887000E1B1010000008041E1D101000D81375CD0
2185:10888000613100000000004262B101001181284006
2186:10889000813200000E81004081B20000000000CA59
2187:1088A00063B101001181A840813200006A84174041
2188:1088B00081B200001681004081B00000168100BB2B
2189:1088C00081B000000000004160B1010000000040E4
2190:1088D00062B101001781A84081320000000000CA87
2191:1088E00063B101006A842840813200001981004090
2192:1088F00081B2000050950040479901001F8100BBE4
2193:1089000087B0000050952F4087B0010021812240A0
2194:10891000957F00006A8460409583000002002DF07E
2195:1089200084B0010022813640813200000000004204
2196:1089300062B101002381A8408132000000000043A1
2197:1089400062B101002581A84081320000000000CA08
2198:1089500063B101002781A840813200000000164069
2199:1089600081B201006A84224143510000000800CA1C
2200:1089700095CB01002281004185C000002F81A242D9
2201:10898000676F00000000004167B301002F81424083
2202:10899000813200000000004065B30100000000408B
2203:1089A0009383010000001ACA699701006A84264077
2204:1089B0008132000034814240813200006A841A44CE
2205:1089C000939300006A842043956F00006A8480CAF4
2206:1089D000673300006A842240656F00006A84006F7C
2207:1089E000DB910000C100004081320100358022404F
2208:1089F000803200006A84004081B200000000005F05
2209:108A0000959301004281A244216F00000000005FA5
2210:108A1000958301000000005E95930100000000575F
2211:108A200095930100000000CAC3B101004581225B9B
2212:108A3000957F00000000004BFD9301006A84004018
2213:108A400081B2000049812240AF6F00001BF500CACF
2214:108A5000959B01004A81004081B200001BFD00CAC5
2215:108A6000959B0100000000CA7FB30100260100CAE7
2216:108A7000C53101000000005F958301006A8400CACF
2217:108A8000C5B10000DF6F00CA959B010000000055D2
2218:108A900095930100000000CAC7B101006A84225FFB
2219:108AA000957F000026010040813201000000005F38
2220:108AB000958301006A8400CAC7B100006A8400CAB5
2221:108AC000C9B100006A8400CACBB100006A8400CA40
2222:108AD000CDB100006A8400CACFB1000000002E4270
2223:108AE00081E001009814004048C901006A8400CA6E
2224:108AF000E1B100000000004009B10100200000A623
2225:108B000082B001005E81A25E0B7D0000008000410A
2226:108B1000089901006081A25E0B7D0000208000A604
2227:108B200008B1010062819F85823000006181A24FFF
2228:108B30000B7D00000000004121B30100028000A66F
2229:108B400082B00100C9810040813201001000004163
2230:108B500084E40100038000A682B00100C9810040C6
2231:108B600081320100F0FF00418688010000000043CF
2232:108B7000849401000F0000A686B0010010C40043D9
2233:108B8000869801007581A243846C000000000043B8
2234:108B900021B30100200000A682B001001C000041AA
2235:108BA00082DC01007281A25E0B7D000004000041A6
2236:108BB000089901007E81004081B20000410100A6B9
2237:108BC00086B00100500C0043869801007A81A243D0
2238:108BD000846C00000000004121B301007E81004050
2239:108BE00081B20000410100A686B00100600C004384
2240:108BF000869801007E81A243846C00000000004240
2241:108C000021B30100200000A682B001007F81A25E96
2242:108C10000B7D000040130041089901008781224329
2243:108C2000216F0000200000A682B001001200004168
2244:108C300082DC01008481A25E0B7D00000004004103
2245:108C4000089901008C81004081B20000200000A63C
2246:108C500082B001001900004182DC01008981A25E1E
2247:108C60000B7D000000A00041089901008C810040AC
2248:108C700081B200000000804081B20100200000A607
2249:108C800080B00100000000CA819401008F81A25EC3
2250:108C90000B7D00006A84004008B10000C8142EBBA0
2251:108CA00085B001009281A25E0B7D000000000040B3
2252:108CB00087B00100A1812243216F0000B0812244CE
2253:108CC000216F0000118000A682B00100C981004020
2254:108CD00081320100B881224A837C000000000040FC
2255:108CE000879001009C81224D837C000000000041A0
2256:108CF000879001009E81224F837C0000000000438A
2257:108D000087900100A081224E837C00000000004279
2258:108D100087900100B881004081B20000018000A668
2259:108D200082B00100C981004081320100018000A6AB
2260:108D300082B00100C981004081320100B881224225
2261:108D4000837C000000000040879001001C8000A68A
2262:108D500082B00100C981004081320100AB8122450F
2263:108D6000837C00000000004187900100AD81224417
2264:108D7000837C00000000004387900100AF81224304
2265:108D8000837C00000000004287900100B881004011
2266:108D900081B20000018000A682B00100C9810040BC
2267:108DA00081320100018000A682B00100C98100402B
2268:108DB00081320100B8812242837C00000000004023
2269:108DC00087900100000000438790010000000041EF
2270:108DD00087900100008000A682B00100C981004098
2271:108DE00081320100BC81224B837C000000000040E6
2272:108DF0008780010000000043E0B101000000004056
2273:108E0000AFB30100C5812240877C0000C581A2412B
2274:108E1000877C000000000041AEB30100000000406C
2275:108E200081B30100C4812242877C0000C581000B10
2276:108E30007DB300000000000F7DB30100FF7F00A2A2
2277:108E4000A08B010000000044A5B30100758000CA9A
2278:108E5000A73301000281004081B2000020000041E0
2279:108E600082DC0100CA81A25E0B7D0000000000418F
2280:108E700008B10100CC819F85823000000000804055
2281:108E800081B20100D18114F781300000D181A24963
2282:108E9000FD7F000000000048FD930100D48115F81B
2283:108EA00081140000D481A24AFD7F00000000004828
2284:108EB000FD930100D681A2C881320000400000402D
2285:108EC00080DC01000010004080DC01000000004058
2286:108ED000EFB30100D8814240F1330000048100402B
2287:108EE000689700006A8400BB6BB300006A8400BB13
2288:108EF000B1B300006A84004081B20000CC142E405F
2289:108F000087B00100FF7F00A2A08B0100D8000043C2
2290:108F1000B2330100000068DA89B001007C00004033
2291:108F20008B9801000000005089F001000000004112
2292:108F300089D0010003000044888C01000000004239
2293:108F400087C0010000000041A5B30100D800004324
2294:108F5000B2330100000000DAF1B10100000000426C
2295:108F600087C0010000000041A5C30100F881224430
2296:108F700089500000F88122448B500000E781A25004
2297:108F8000A56F000000000042A5E30100000000CA38
2298:108F9000A7B30100758000BB85300100CC142ED230
2299:108FA00095C30100AE0300CBA3C90100000000205F
2300:108FB00042B101000000005081B00100F581A241E2
2301:108FC00081500000F481A2F280300000E78100406F
2302:108FD000A5B3000000000042A5E30100000000CAA4
2303:108FE000A7B30100758000BB8530010002810040FD
2304:108FF00081B20000D9000041B3730100000080502D
2305:10900000B5F30100D8000041B3F30000000000D91F
2306:10901000B3FB0100003000A6B8B30100F20000402D
2307:1090200081320100250100422D01010000020040B3
2308:1090300083980100EB0000408132010000000050E5
2309:1090400081B001002601004081320100098210DA5E
2310:10905000B56B00000A8200412D8100000000004134
2311:109060002D910100280100408132010025010040BE
2312:109070002D110100000000402D8101000682A24157
2313:1090800081500000260100422D0101002501004011
2314:1090900081320100260100422D110100250100400E
2315:1090A0002D110100158204402D0100002501004012
2316:1090B000813201001182004081B20000280100408D
2317:1090C00081320100250100422D010100F200004023
2318:1090D000B9330100000000422D81010000008041F1
2319:1090E0002D8101000000804081B20100000300409A
2320:1090F000819801000000004018B10100800000408C
2321:109100008398010000190040459901000000424089
2322:1091100081B20100000043FFF1B10100000000FF37
2323:10912000F1B101000000004181C0010000000040D9
2324:1091300018B101001F82A2418350000000160040B8
2325:1091400045990100001900404399010000000047C3
2326:1091500043C101000000004083B00100000000F3A3
2327:1091600080B001000000005B81D0010000000041E0
2328:1091700080D0010000000040F6B101000000005B5B
2329:1091800043C101000000004183C001002982A254B4
2330:10919000836C000000000040F7B1010000000041B6
2331:1091A00083C001003082A206836C00000000804072
2332:1091B00081B201000000800791B00100E180004011
2333:1091C000813201003982A240976C000028000040E3
2334:1091D000B39B01003A82004081B2000028000040A9
2335:1091E000B39B0100FC81004081320100000000DAE5
2336:1091F000F5B10100FC810042B3430100000000DA38
2337:10920000F5B10100FC810042B3430100000000DA27
2338:10921000F5B101004E000040B39B0100FC8100400D
2339:1092200081320100080000DAF7F50100500000402B
2340:1092300091980100000000478FB00100FC810048B8
2341:10924000B2330100000000DAF7B10100080000DAD3
2342:10925000F7F501000000004291C001004582A241E3
2343:109260008F5000000000004145D10100080000407F
2344:10927000B39B0100FC81004081320100000000DA54
2345:10928000FDB101000A000040B39B0100FC810040D9
2346:1092900081320100000000DAFDB101001800004039
2347:1092A000B39B0100FC81004081320100000000DA24
2348:1092B000FDB1010016000040B39B0100FC8100409D
2349:1092C00081320100000000DAFDB10100348200406B
2350:1092D000813201001E000048B2CB0100FC81004039
2351:1092E00081320100000000DA91C001000000004856
2352:1092F000B2CB0100FC8100408132010000006EDA37
2353:109300008FB0010002000048B2CB0100FC81004098
2354:1093100081320100000000DAFDB1010004000048C4
2355:10932000B2CB0100FC81004081320100000080DAF4
2356:10933000FDB101006F822250FD7F00006F82224547
2357:10934000FD7F000040160040459901003582004035
2358:109350004931010008000048B2CB0100FE81004005
2359:10936000813201006D82A2408F6C00007282222047
2360:10937000B56F00006F82004081B20000DB820040C8
2361:109380008132010072822240976C00006F8242405D
2362:10939000813200000000004F6993010004810058F1
2363:1093A000699300005416004047990100000000FE38
2364:1093B000F4B101000000004081B20100000000FE95
2365:1093C000F4B101000000004081B20100000000FE85
2366:1093D000F4B101000000004081B20100000000FE75
2367:1093E000F4B101000000004081B20100000000FE65
2368:1093F000F4B101000000004081B20100000000FE55
2369:10940000F4B101000000004081B20100000000FE44
2370:10941000F4B1010046000040B39B0100FC81004014
2371:1094200081320100080000DAF7F501004800004031
2372:10943000959801000000004497B00100FC81004AAB
2373:10944000B2330100000000DAF7B10100080000DAD1
2374:10945000F7F501000000004295C001008582A2419D
2375:10946000975000002A000040A59B010040160040D4
2376:10947000A19B0100000000CAA7B30100758000BBDA
2377:10948000853001000281004081B20000A7822245A0
2378:10949000FD7F0000E0150040479901001A0000A27E
2379:1094A00080DC010000000050F1B10100F015004027
2380:1094B000F1990100000000CAF1B10100070000406D
2381:1094C00061990100A000004062DD01009682A8BB06
2382:1094D000E13100000000005083B001009982A241F8
2383:1094E000835000009882A2F282300000E1800040A8
2384:1094F000813201009F82A240976C0000280000404A
2385:10950000B39B0100A082004081B20000280000400F
2386:10951000B39B0100F015004043990100FC8100401D
2387:1095200081320100A782A2FAB46F0000FC810042E0
2388:10953000B3430100A782A2FAB46F0000FC8100428D
2389:10954000B3430100AA8222FAB46F0000A78242400E
2390:10955000813200000000004E699301000481005830
2391:109560006993000040160040459901003582004093
2392:1095700049310100F6150040439901005C16004096
2393:109580004599010000006EFA8EB001000000004015
2394:1095900081B20100000000FEF4B1010000000040B3
2395:1095A00081B20100000000FEF4B1010000000040A3
2396:1095B00081B20100000000F0B4B30100B882A24003
2397:1095C0008F6C0000FC152020E1B10100BD8200403D
2398:1095D00081B20000DB82004081320100BD82224066
2399:1095E000976C0000BA824240813200000000004FB8
2400:1095F000699301000481005869930000348200409F
2401:10960000813201001E000048B2CB0100FC81004005
2402:1096100081320100C2822250B56F0000000000506C
2403:1096200091C0010000000048B2CB0100F6150040D7
2404:1096300043990100FF8100F2B433010002000048A9
2405:10964000B2CB0100F815004043990100FF8100F200
2406:10965000B433010004000048B2CB0100FA15004009
2407:1096600043990100FF8100F2B43301000800004873
2408:10967000B2CB0100FC15004043990100000000F04E
2409:1096800094B00100FFFF004AB48B0100FF8100404D
2410:10969000813201000A000048B2CB01001000004AEC
2411:1096A000B4F70100FF8100408132010034820040A4
2412:1096B000813201001E000048B2CB0100FC81004055
2413:1096C00081320100D8822250B56F0000D98200504B
2414:1096D000B5B3000000000040B5B30100FF810040B9
2415:1096E000813201000281004081B20000001600407A
2416:1096F0004799010030310040F599010032330040B4
2417:10970000F599010034350040F599010036370040E5
2418:10971000F599010038390040F599010041420040B7
2419:10972000F599010043440040F59901004546004089
2420:10973000F599010047480040F5990100494A004069
2421:10974000F59901002C0000408398010000000040C2
2422:10975000F7B10100E782A2418350000080162E0677
2423:1097600083B00100360000FBF6A90100EA82A241A5
2424:10977000835000002200004083980100000000FB9D
2425:10978000F6B10100ED82A24183500000620000406A
2426:1097900095980100008300408132010000162D06DB
2427:1097A00083B0010080160040459901005C0000FB79
2428:1097B000F6A90100F382A24183500000000000706E
2429:1097C000F9B1010000000071F9B101000000007260
2430:1097D000F9B1010000000073F9B10100000000744C
2431:1097E000F9B1010054000040959801000083004049
2432:1097F000813201000000007095B00100FF822270EC
2433:10980000B56F00000000804197B00100000080406B
2434:1098100097B00100456700A6E0B201000123007087
2435:10982000E19A0100CDEF00A6E2B2010089AB007120
2436:10983000E39A0100BA9800A6E4B20100FEDC0072CF
2437:10984000E59A0100321000A6E6B2010076540073DA
2438:10985000E79A0100D2C300A6E8B20100F0E100746B
2439:10986000E99A01008016004A44C90100000000077F
2440:1098700081B001000000004A80D0010000000040DB
2441:10988000F7B101000D83A241815000008016004A0B
2442:1098900044C90100FC162A47E7B501000300004A4D
2443:1098A000E8E50100000000408DB0010050030040D9
2444:1098B000A399010080163D468DE001000000005094
2445:1098C00089B00100000000FC40B001000000004130
2446:1098D000A3C101001683A24189500000000000705E
2447:1098E000EBB2010000000071EDB201000000007257
2448:1098F000EFB2010000000073F1B20100000000743B
2449:10990000F3B201000000004083B001000F000041ED
2450:109910008088010050030040A2C901003383A05099
2451:10992000836C00000D00004098C801000000004F4B
2452:10993000998401005003004CA2C9010000000020DE
2453:1099400086B001000800004098C801000000004FE8
2454:10995000998401005003004CA2C9010000000020BE
2455:1099600086A401000200004098C801000000004FDA
2456:10997000998401005003004CA2C90100000000209E
2457:1099800086A4010050030040A2C90100000000436A
2458:1099900040A401000100002088E401000000005FF5
2459:1099A00041F00100000000444094010005000075F2
2460:1099B00089E401001B00007585F4010000000044EB
2461:1099C000849401003D83A353836C00000000007663
2462:1099D00089B0010000000077898401000000007652
2463:1099E0008BB00100000000208BA401000000007873
2464:1099F0008B8401004C8300458894000027000041BF
2465:109A000080CE01004283AA4081320000000000762F
2466:109A100089B001000000007789A401004C83007820
2467:109A200089A400003B00004180CE01003F83AA4092
2468:109A3000813200000000007689B00100000000774C
2469:109A400089840100000000768BB0010000000078DE
2470:109A50008B8401000000004588940100000000771D
2471:109A60008BB00100000000788B8401004C8300451E
2472:109A7000889400000000004484C0010000000079C8
2473:109A800085C001000000002084C001005383A3535F
2474:109A9000836C0000825A00A684C0010099790042BC
2475:109AA00084C801006083004081B2000027000041AB
2476:109AB00080CE01005883AA4081320000D96E00A6F2
2477:109AC00084C00100A1EB004284C801006083004013
2478:109AD00081B200003B00004180CE01005D83AA40BE
2479:109AE000813200001B8F00A684C00100DCBC004254
2480:109AF00084C801006083004081B2000062CA00A6F1
2481:109B000084C00100D6C1004284C8010060830040C7
2482:109B100081B2000000000078F3B20100000000777D
2483:109B2000F1B201001E00007689E401000200007617
2484:109B3000EFF6010000000044EE9601000000007501
2485:109B4000EDB2010000000042EAB201000000004155
2486:109B500083C001004F00004180CE01001F832A40D6
2487:109B60008132000000000075E1C2010000000076B3
2488:109B7000E3C2010000000077E5C2010000000078A8
2489:109B8000E7C2010000000079E9C2010013838141AE
2490:109B90008D4000000000804081B201009D83A24BF7
2491:109BA000B76F00009D83A2412F7D00000000005090
2492:109BB000FD930100401600404599010035820040A8
2493:109BC000493101009C8322408F6C0000080000484E
2494:109BD000B2CB0100FE81004081320100DB820040F7
2495:109BE000813201009C83A240976C00005E16004009
2496:109BF000439901007C1620F6E0B10100000000400E
2497:109C000031B301008083224F8F7C0000000000519F
2498:109C1000FD930100828322408F7C000086830054E4
2499:109C2000FD930000848322428F7C000000000052DC
2500:109C3000FD930100868322418F7C000000000053C9
2501:109C4000FD9301009A832251FD7F00003482004081
2502:109C5000813201000C000048B2CB0100FC810040C1
2503:109C6000813201009583A240B56F00001E000048BC
2504:109C7000B2CB0100FC81004896300100000000DA00
2505:109C800097C001000400004BB2CB0100FC810040F2
2506:109C9000813201000E000048B2CB0100FF8100407C
2507:109CA000813201000C000048B2CB010000000030FE
2508:109CB000B5B30100FF810040813201000E00004871
2509:109CC000B2CB0100FC810040813201009983224027
2510:109CD000B56F00009D830054FD930000000000510B
2511:109CE000FD8301001C0000FE7FD901009D83A6407A
2512:109CF0008132000000000055FD930100000080400B
2513:109D000081B20100B6030040A199010000002F417B
2514:109D100099B30100A8832244816C0000B0832248DB
2515:109D2000816C0000AA83224C816C0000B483225015
2516:109D3000816C0000B5832254816C0000B7832258E7
2517:109D4000816C0000BC83225C816C000055010040E6
2518:109D500081B20000000000BC09B001006A8400CAA2
2519:109D600001B000000000004003B00100000000410D
2520:109D7000F3830100AE83A242056C000000000041A5
2521:109D800005B001006A8422CA071400006A840045F5
2522:109D9000F39300006A842043956F00006A8480CAB0
2523:109DA000053000006A842201803000006A8400CB04
2524:109DB000DB9100005C0100BCABB30000000000BC04
2525:109DC000B1B301006A8400CACFB30000FF0000CA2B
2526:109DD000818801006A84A240747D000060002040F8
2527:109DE00060990100B983A8B182300000B8830040B7
2528:109DF00081B200006A8400CA79B300000000004EFE
2529:109E000081B0010000000043CB8301000000454009
2530:109E100081B20100BF83A241815000000000454093
2531:109E200081B201000000454081B20100CA839182E5
2532:109E3000823000000000008A80B00100B69F004020
2533:109E400080CE0100C883A64081320000CA835640FC
2534:109E500081B20000B6030040A19901000000005348
2535:109E600007900100B6030040A199010000000052D4
2536:109E700007900100F39F00418BB300000000004EEB
2537:109E800081B0010000000042CD8301000000464087
2538:109E900081B20100CF83A241815000000000464002
2539:109EA00081B201000000464081B20100DA83918155
2540:109EB000823000000000008980B00100B69F0040A1
2541:109EC00080CE0100D883A64081320000DA8355405D
2542:109ED00081B20000B6030040A199010000000052C9
2543:109EE00007900100B6030040A19901000000005353
2544:109EF00007900100F39F00418BB30000B1030040C5
2545:109F0000A1990100C4142F4099B301005C010040E5
2546:109F100049B1000058152D408DB00100D0142DF02E
2547:109F200088B00100000000408FB00100010000A6D1
2548:109F300090B0010000F80048909801000000004532
2549:109F400093B00100000000FA8AB001006A030040EB
2550:109F500081320100020000A680B00100EC832240A3
2551:109F6000826C0000F0830040813201004703004012
2552:109F700081320100000000418DC00100F583225FA5
2553:109F80008D6C0000E783A24193500000E583004000
2554:109F900081B20000FF070047848801000000A6404E
2555:109FA00081B20000F59F00478030010000020047A9
2556:109FB0008EC80100F083004081B200000000004420
2557:109FC00050B30100FB832018896C0000040000A638
2558:109FD00084B00100200000A686B0010000100040FF
2559:109FE000559B0100FE83004081B20000040000A6E2
2560:109FF00084B00100200000A686B0010000100040DF
2561:10A00000559B01000000004250D30100000000A851
2562:10A010004FB30100000000434ED301005E03004037
2563:10A02000813201006C03004280300100F083004067
2564:10A0300081320100078422A78F6C00004903004091
2565:10A04000813201000484004081B2000000008040A1
2566:10A0500081B20100A0942E4397B00100000000409F
2567:10A06000F1B101000984A2419750000050952040B1
2568:10A07000E1B10100AC942E4397B001000000004014
2569:10A08000F1B101000D84A241975000000000804012
2570:10A0900081B20100AE030040A3990100000000401E
2571:10A0A00081B0010060150040859801000800004063
2572:10A0B00040E40100000000594194010000000050FC
2573:10A0C00041E0010000000042409401000000004116
2574:10A0D00081C001000000A341816C0100000000412B
2575:10A0E000A3C101001384005085C000004984A2412F
2576:10A0F000017D000021842258737D0000780000401B
2577:10A10000619901001C84A8B19C30000030003845E2
2578:10A110009DE001000100000E10C90000218433C43D
2579:10A12000813000002484A1AD9D2000001B841340D9
2580:10A1300081B200000000134E5A8301003000384500
2581:10A140009DE001002C8422AB800400002A84A24000
2582:10A15000017D00002C84225F577D0000278A00408B
2583:10A1600081B200002C84225E577D00008A8A004064
2584:10A1700081B2000031842254737D000074000040DD
2585:10A18000619901002C84A8B1003000000086A25F14
2586:10A19000017C00006289004081B200003384A25F2C
2587:10A1A000592700003584A25C737D00003C84A25EC8
2588:10A1B000737D00004684225C737D00004784374035
2589:10A1C000813200007C000040619901003684A8B112
2590:10A1D000363000007C000040619901003884A8B14D
2591:10A1E000003000001F000000028801002F86174089
2592:10A1F00081B2000047843440813200007E0000407C
2593:10A20000619901003D84A8B11230000044845221BC
2594:10A2100013040000000014412FC30100FF3F000998
2595:10A22000008C01000000004301F00100878400342D
2596:10A2300013840000FF3F1409008C0100E7840043F1
2597:10A2400001F000000000004081B20100478433406B
2598:10A25000813200001B84134E5A930000EC89A248FF
2599:10A26000FD7F00004E842259737D0000790000407C
2600:10A27000619901004A8428B17E3100004B8400407E
2601:10A2800081B20000528421AC9C20000000000041FB
2602:10A290001FC301000400A05F9D6C00000000004E81
2603:10A2A000589101005684225A737D00007A000040C4
2604:10A2B000619901005384A8B17E310000010000CFF4
2605:10A2C00011C900005C84A240937F00005C8422449A
2606:10A2D000937F0000588442A5803000005B84A24038
2607:10A2E000937F000071841A409393000000001A408D
2608:10A2F00081B201009A80A240737D0000A1892244AE
2609:10A30000216F000098892240657D0000A689A25B2C
2610:10A31000737D00000400A249337D0000668422485A
2611:10A32000337D0000FF01009980D80100000000503B
2612:10A3300081E00100A8982F4033B1010000000040E7
2613:10A34000E0C1010069842240AF6F000069842240AF
2614:10A35000816F0000F5891FA5826F000049840040CD
2615:10A3600081B200001B8400408BB300000000005845
2616:10A3700061B101000000004E62B101001B84284061
2617:10A38000813200006C84004081B200006F84334051
2618:10A390001F3000001B84134E5A9300007384A0CE1C
2619:10A3A000815000008584A0CD816C0000000000A5D4
2620:10A3B0009CB30100000000B181B00100858422B58A
2621:10A3C0008114000080152F4049B10100778442407C
2622:10A3D00081320000000060B465970100D0152E4066
2623:10A3E00069B3010000001A44938301001A0000A21F
2624:10A3F00080DC010000000044F1B10100000000B168
2625:10A40000F1B10100000000B5F1B10100050000400C
2626:10A41000619901000000004062B101008084A8A1A0
2627:10A42000E03100005C8400889EB300005C84A2419F
2628:10A43000676F00005C84006FDB9100008584424000
2629:10A44000813200005C841A40938300000099000967
2630:10A4500046C901003F0000F30C8801009084A64229
2631:10A460001360000055970095033001008B84454030
2632:10A470008132000075000040619901008C84A8B110
2633:10A480000C3000005C971D1094300100918400583E
2634:10A490001F9000004E970095033001001B84008838
2635:10A4A0001CB0000000002D0348B1010004002DF095
2636:10A4B0002EB00100EE070040979801009884234BCE
2637:10A4C000E46D00009884224BFD7F000000000040F6
2638:10A4D0001F90010022002F4081B201009B8483174E
2639:10A4E0008032000026000040479901009D848517B6
2640:10A4F000803200000000004847C10100A3842255BB
2641:10A500002F7C00000000004243D101000F0000FA40
2642:10A51000968801000000004297E001000000004220
2643:10A5200097D00100A484004B44C10000120000A297
2644:10A5300044C90100280000F602CC01000A0000A175
2645:10A5400042C90100000000F816B00100000028F028
2646:10A5500010B00100000000F01AB00100000000A2DD
2647:10A560002AB00100C0283C460DE0010000002D4447
2648:10A5700095B00100B084A2F80E300000C0842241E2
2649:10A580009550000000002D5049C10100AC840040EE
2650:10A5900081B20000AD84A2F8166C0000AD84A2F870
2651:10A5A000106C0000AD84A2F01A6C0000BE8422582A
2652:10A5B0001F7C000000993F4213F00100B584474022
2653:10A5C00081320000B984A2F3740600000000000686
2654:10A5D000E6950100BE841F4081B200000000000625
2655:10A5E00096B001003F001FF30C88010000000055E9
2656:10A5F00061B101000000004B62B10100BC84A840C1
2657:10A6000081320000BE84474081320000C6841F4171
2658:10A610002DC30000C48422581F7C00000000005598
2659:10A6200061B101000000000662B10100C284A840CF
2660:10A6300081320000C484474081320000EE841F4113
2661:10A640002DC30000030000071AF401002196000743
2662:10A6500016300100D5842241816C0000CC84224256
2663:10A66000816C00001B8400881CB00000D484225F31
2664:10A670000F7C00001597005F01100100D28422407A
2665:10A68000956C00000480000342C90100000000F244
2666:10A6900002B001008A960052953001009196004B5D
2667:10A6A00002B000006797000996300100058A00405B
2668:10A6B0000FB00000DD84A25A1F7C00009B95004073
2669:10A6C00081320100DD842220856C0000DA849C0F39
2670:10A6D000803200001B8400881CB000007C96005C67
2671:10A6E0001F0001009B980042613101001B8400881B
2672:10A6F0001CB00000E69900079630010000002D050F
2673:10A7000048B10100E08482F0183000006C8B0045F5
2674:10A710008FB00000282000A696B00100E484221724
2675:10A72000960400000B98004B953001006C8B004B99
2676:10A730008FB000002197000348310100FC940040D5
2677:10A74000813001006C8B004081B2000000002E10AF
2678:10A7500048B101000000685003B001000000000390
2679:10A76000F0B101000000004261B1010000000010E2
2680:10A7700062B10100EB84A800E03100001B84008876
2681:10A780001CB0000000002D0348B101000000004093
2682:10A790000FB00100000000F82EB00100000000F230
2683:10A7A00002B001000000004017B00100004100A607
2684:10A7B00096B00100EE072E47979001000185221701
2685:10A7C00096040000FF84224BFD7F0000FF8423A23B
2686:10A7D000026C00008A96005295300100040022416C
2687:10A7E000975000000C002D0012B00100000000F096
2688:10A7F00000B001000000005C018001009196004B58
2689:10A8000002B000000000000900B00100000000508C
2690:10A8100003B001001E85005C1790000013852243E1
2691:10A820002F7C0000000000451F9001000C85225F76
2692:10A830002F7C000000002E1048B1010000000058DD
2693:10A84000F1B1010010000003F0C901001000000088
2694:10A85000E0C9010008854542613100000000001098
2695:10A8600062B101000985A840813200001B841D8867
2696:10A870001CB0000020002D0348B10100FF0F00F6BE
2697:10A88000808801001085A2A6816C0000138500F26B
2698:10A890003AB00000FD85A24BFD7F0000E29500402C
2699:10A8A000813201001B8A004081B200001E85224ACD
2700:10A8B0002F7C00001E8522482F7C00000A002D03FB
2701:10A8C00048B101003F0000F2868801001F000043EC
2702:10A8D000848801000500004380F4010098943D4203
2703:10A8E00081E001001E85A242E07D0000FD85A24BB3
2704:10A8F000FD7F0000E2950040813201001B8A00408C
2705:10A9000081B200001E85474081320000000000A394
2706:10A9100009B0010000001F4147C30100248522A1A6
2707:10A92000096C00006B8400881CB0000021850003C6
2708:10A9300048B100005E85A392036C00000A990040B4
2709:10A94000953001000000004143C3010000000016E3
2710:10A9500080B201001B8A2708803200002B85225C10
2711:10A96000177C00002C8500002AB0000012000000B7
2712:10A970002AC801000200000880C801003085A243F7
2713:10A980002F7C00000E980040813201004C85005E53
2714:10A9900017900000040000018CCC01000E98004CC0
2715:10A9A0000330010000002E4602B00100100000102C
2716:10A9B00048C901000C000001F0CD01002C0000404E
2717:10A9C000F0C9010000000016F0B1010010000015F0
2718:10A9D000E0C901000000004361B10100A00000A433
2719:10A9E00062DD01003985A854171000004C85005E17
2720:10A9F00017900000120000002AC801004B85224376
2721:10AA00002F7C0000040000018CCC01000000004CF1
2722:10AA100003B001002F9800436131010000002E4671
2723:10AA200002B001001000001048C901000C00000134
2724:10AA3000F0CD01000C000009F0C901000000001871
2725:10AA4000F0B1010010000015E0C901000000004352
2726:10AA500061B10100A00000A462DD01004C85285412
2727:10AA6000171000004885004081B200002F98004375
2728:10AA7000613101004E8522502F7C000000000056FD
2729:10AA80001790010007000017988801005185A24126
2730:10AA9000996C000000000055179001000000004371
2731:10AAA00061B101004000001062DD01005285A84044
2732:10AAB000813200001B8400881CB000001698004002
2733:10AAC00081320100598522432F7C0000168000034B
2734:10AAD00044C901000000001DE4B10100B797005E09
2735:10AAE000051001005C85A25F2F7C0000CE94000160
2736:10AAF00038430100E2950040813201001B8A00408A
2737:10AB000081B200006085A24BFD7F0000FA85004104
2738:10AB100043C300000000004027B0010000000040D7
2739:10AB20002DB001000000004011B001006385350127
2740:10AB3000863000006D000040619901006B8528B1EE
2741:10AB4000303000006485224D757D00000000001645
2742:10AB500080B20100EA85A740116C000000000041AE
2743:10AB600043C30100F985004081B200006D00004040
2744:10AB7000619901006B85A8B1123000000000001639
2745:10AB800080B201007585A740116C000000000041F3
2746:10AB900043C301000000000910B0010000000018CC
2747:10ABA0002CB00100DE07004380CE01006485AA407E
2748:10ABB000813200007A85004081B2000040003E43AF
2749:10ABC00027E0010000000009F0B1010000000018BA
2750:10ABD000E0B101000000004127C001006485A30B23
2751:10ABE00087500000000015401BB00100000000402D
2752:10ABF00023B00100120000002AC8010040002D40CF
2753:10AC000039B001008285A240276C000022000008B4
2754:10AC100012C80100DE07004025980100858500402C
2755:10AC200081B20000000000F812B00100000000F046
2756:10AC300030B001000000000B25B001000000001042
2757:10AC400032B0010014002001E0B10100EE07004025
2758:10AC5000379801008A852301366C0000000000014E
2759:10AC600036B001009585824123400000208000100D
2760:10AC700042C9010091852240E36D000000000043BD
2761:10AC800061B101004000001062DD01008E85A84026
2762:10AC9000813200001B8400881CB000000196004334
2763:10ACA000233001000000001032B00100000000411C
2764:10ACB00023B001000000000348B10100008000192A
2765:10ACC00044C90100A48522451F7C00000000004CFF
2766:10ACD000F1B1010000000009F0B10100000000180E
2767:10ACE000F0B101000000004361B101002000001933
2768:10ACF00062DD01009B85A815E031000000000050D6
2769:10AD000003D001000000005033C001000000004CDF
2770:10AD100025D001000C002D4C13C001000000005094
2771:10AD200037D00100000000502BC001008A8500458B
2772:10AD30001F800000A685A312366C0000A785681B43
2773:10AD400028B000000000681228B0010000000009CF
2774:10AD5000F0B1010000000018F0B101000000004354
2775:10AD600061B101002000001962DD0100AA85A8156B
2776:10AD7000E0310000D0852214025000000000005095
2777:10AD800033C001000000001424D001000C002D1479
2778:10AD900012C00100C985A21436500000BA85225C99
2779:10ADA0001F7C00003080001042C90100B88522409D
2780:10ADB000E36D00000000004261B10100400000109E
2781:10ADC00062DD0100B585A840813200001B84008847
2782:10ADD0001CB000000000000348B101000C002D5C15
2783:10ADE0001F800100100000F02AC801000000005C74
2784:10ADF0002B800100F007004037980100BF85230138
2785:10AE0000366C00000000000136B00100CA85221B2C
2786:10AE1000026C00003000001048C9010000002E5CE8
2787:10AE20001F90010000000050F1B10100000000037C
2788:10AE3000F0B10100FF070015E08D010000000042A5
2789:10AE400061B10100A00000A462DD0100C685A84038
2790:10AE500081320000CA85000348B1000000000014E0
2791:10AE60002AC001008A85A240256C00000000004134
2792:10AE700039C0010040003D4339E001000000000BF3
2793:10AE800025B00100000000F812B001008A8500F032
2794:10AE900030B000000080001942C90100D685224070
2795:10AEA000E36D00000000004361B1010040000019A3
2796:10AEB00062DD0100D385A840813200001B84008838
2797:10AEC0001CB00000019600402B30010018002E033A
2798:10AED00048B10100DA8522502F7C000000000056A6
2799:10AEE000179001000700001798880100DD85A24136
2800:10AEF000996C00000000005517900100E085224386
2801:10AF00002F7C000000000054179001001600201D47
2802:10AF1000E4B10100E285A340276C0000E485605F96
2803:10AF2000179000000084000B16DC01000000601385
2804:10AF300016940100B797005E051001001B8AA25FFE
2805:10AF40002F7C00001480000342C90100000000F2C1
2806:10AF500002B00100CE940001384301001B8A00407A
2807:10AF600081B200000000004083B001000000004DED
2808:10AF700061B101000000001662B10100EC85A8403B
2809:10AF8000813200000000000862B10100EE85A84097
2810:10AF900081320000F9852213826C000040003D439D
2811:10AFA00083E00100000000F810B00100000000F094
2812:10AFB0002CB001000000001662B10100F485A84029
2813:10AFC000813200000000000862B10100F685A8404F
2814:10AFD00081320000F085004183C000000000154070
2815:10AFE00081B20100008200A604B00100A0980040D8
2816:10AFF00047990100E9890041893001008A96005291
2817:10B00000953001009196004B02B000001B8A004071
2818:10B010000FB000000000005F018001001000000080
2819:10B020000EF401003F00000000880100030000074B
2820:10B030001AF4010021960007163001000B86224108
2821:10B04000816C000009862242816C00001B8400880C
2822:10B050001CB000000A86225F0F7C0000058A0040B9
2823:10B060000FB000001386A25A1F7C00009B95004081
2824:10B070008132010013862220856C000010869C0F0F
2825:10B08000803200001B8400881CB000007C96005CAD
2826:10B090001F0001009B980042613101001B84008861
2827:10B0A0001CB00000E69900079630010000002D0555
2828:10B0B00048B10100000000F018B001001986223AE2
2829:10B0C000016C0000000000008EB001006C8B00409D
2830:10B0D00001B000000000004081B201002E002D05EB
2831:10B0E00048B101001D86A240E76D00000A00004043
2832:10B0F0008F9801006C8B004001B000006695004005
2833:10B10000813201004E970095033001001B840088B6
2834:10B110001CB0000000002D0348B1010022002DF0FA
2835:10B120002EB00100282000A696B001002686221726
2836:10B13000960400000B98004B953001006C8B004C7E
2837:10B140008FB0000028868317803200000000004482
2838:10B1500043C101002A8685178032000000000048A4
2839:10B1600043C10100280000F602CC0100120000A13A
2840:10B170002AC801002197004081320100FC9400415F
2841:10B18000813001006C8B004081B2000000000001A2
2842:10B1900000D0010000002E1048B10100280000403E
2843:10B1A000F199010000000003F0B10100000000006F
2844:10B1B000F0B1010034864647613100000000001004
2845:10B1C00062B101003586A81BE03100001B841E8897
2846:10B1D0001CB000000000004503E0010008002D0342
2847:10B1E00048B101005A8601FB08300000AD8687FB9C
2848:10B1F00022300000000000FA0EB00100000000F84C
2849:10B2000014B00100030000071AF4010021960007A2
2850:10B210001630010050862241816C00004486224293
2851:10B22000816C00001B8400881CB000004F86225FE8
2852:10B230000F7C0000380000047E8901004886A65F6C
2853:10B240000F00000074950040053001004D8600405D
2854:10B2500081B20000130000408798010000002D0318
2855:10B2600048B101000C002DF082B00100000000F098
2856:10B2700084B0010000970040053001000000005C30
2857:10B280001F900100058A00400FB000005886A25AA6
2858:10B290001F7C00009B9500408132010058862220CF
2859:10B2A000856C000055869C0F803200001B8400884E
2860:10B2B0001CB000007C96005C1F0001009B980042BF
2861:10B2C000613101001B8400881CB00000E699000772
2862:10B2D0009630010000002D0548B10100000000F08B
2863:10B2E00018B001005C862104802000005D860040CB
2864:10B2F00010C90000AE8A004B81B000007C8600437C
2865:10B3000081B00000808600FB22B00000AE8A0041C0
2866:10B3100081B000006C8B004E8FB000007886005A20
2867:10B320008FB00000658600478FB00000AE8A0053E2
2868:10B3300081B00000AE8A005681B0000032002D05B9
2869:10B3400048B101006C8BA00AE46D00006B86A2413D
2870:10B35000197C00006A86220A803200006C8B005340
2871:10B360008FB000006C8B00548FB000007486220AEE
2872:10B37000803200006E86A20AE46D00006C8B005DD6
2873:10B380008FB00000000000F280B001000000000A51
2874:10B3900080D001007286A091816C00006C8B005EF1
2875:10B3A0008FB00000250000408F9801006C8B00409A
2876:10B3B00081B2000076862091E56D00006C8B005410
2877:10B3C0008FB00000210000408F9801006C8B00407E
2878:10B3D00081B2000032002D0548B101006C8BA00A3B
2879:10B3E000E46D0000240000408F9801006C8B004049
2880:10B3F00081B2000037002D0548B10100040000F3C0
2881:10B4000082F40100AE8AA042836C0000AE8A005430
2882:10B4100081B00000000000F20EB001000300000740
2883:10B420001AF4010000B5000D42C901000700000731
2884:10B43000168801008986220BE67D00000A00004084
2885:10B4400087980100559900408132010000000040BA
2886:10B450000FB00100058A005C1F9000009B862250FF
2887:10B46000FD7F00009686A254FD7F00008E86225547
2888:10B47000FD7F000082000040879801008686004022
2889:10B4800081B2000086862253FD7F000014800003F5
2890:10B4900042C90100000000F096B001001000004B0E
2891:10B4A00080F401000CBC004087980100968622437E
2892:10B4B000806C0000FFFF004B808801008686A2435D
2893:10B4C000806C00007C9600404799010097864340BD
2894:10B4D000813200009A86A0F0306F00008C861B40FD
2895:10B4E00081B2000000001B4131C30100A59500405E
2896:10B4F000253001009F869C0F803200001B8400884D
2897:10B500001CB000007C96005C1F000100148000034A
2898:10B5100042C90100000000F096B0010000002F05B4
2899:10B5200048B101001000000718E401000008000CF9
2900:10B53000E0990100E69900079630010000B5000D82
2901:10B5400046C90100A6863040813200000000000B91
2902:10B55000E6910100000200A146C901000000000BB5
2903:10B56000E691010004002E0548B1010000001040E2
2904:10B57000E1B10100AE8A004081B00000000000FB94
2905:10B5800028B00100000000FB86B00100000000F8B8
2906:10B5900014B00100B7862246237C0000B386224007
2907:10B5A000877C0000000000481F900100B586224102
2908:10B5B000877C0000000000471F900100B7862242F0
2909:10B5C000877C0000000000451F900100B786471BE4
2910:10B5D0002C300000000000A013B0010000001F414B
2911:10B5E00041C30100E6862392156C0000E686A24561
2912:10B5F0001F7C0000EA86224BFD7F0000170000D070
2913:10B60000A2C901000000004027B001000200000AAA
2914:10B6100024C80100DD9500400F300100E4862208B7
2915:10B620004030000000000041A3C10100F0070012FB
2916:10B6300024CC0100C086AA4127400000010000136D
2917:10B6400080CC0100E086264023300000000000404E
2918:10B6500083B001006000000384C8010010000010E6
2919:10B6600048CD0100170000D0A2C90100CD86A2403C
2920:10B67000836C0000D986004183B000000080004246
2921:10B6800044990100000068213896010000002E5006
2922:10B6900049C10100D286A244236C0000300000039F
2923:10B6A00048C9010000000044F1B101000C00002075
2924:10B6B000F0C901000000004461B10100A00000A435
2925:10B6C00062DD0100D586A842E031000000000044A0
2926:10B6D00085C001000000004123C0010000000041BE
2927:10B6E000A3C10100CB86A24181500000E086224028
2928:10B6F000236C00000000004461B101004000001014
2929:10B7000062DD0100DD86A840813200001B840088D4
2930:10B710001CB000000000000348B10100EE0700402B
2931:10B7200025980100170000D02AC80100F3860017F1
2932:10B7300010B00000C097004081320100EA8600404E
2933:10B7400081B20000DD95009225300100000000402C
2934:10B7500031B00100EA8622082E300000F386004155
2935:10B7600027B00000808000A604B001000600004061
2936:10B77000879801005599000A8C30010000000040B4
2937:10B780000FB001000000005C1F900100F286229FB4
2938:10B79000136C0000020000881CCC01006B84004088
2939:10B7A00081B20000058A00413FC300000000004054
2940:10B7B0000FB001002800000180CE010007872A4059
2941:10B7C000813000000080001044C9010040000040AA
2942:10B7D00081980100FC86A2481F7C0000FC86A247DD
2943:10B7E0001F7C0000FC86A307036C00008000004063
2944:10B7F00081980100FF86A340026C00002800000130
2945:10B80000F0CD0100018700400FB00000280000408B
2946:10B81000F0CD0100040000400ECC01002800000320
2947:10B82000F0C9010028000000F0C901000000001666
2948:10B83000E0B101000000004761B1010020000010EC
2949:10B8400062DD01000587A85C1F10000000000040B9
2950:10B8500043990100000000F008B00100A0012D4054
2951:10B8600000C00100ED88220F4205000018879C0FE0
2952:10B87000803200000000005C1F800100008000108A
2953:10B8800042C9010013872240E36D00000000004719
2954:10B8900061B101004000001062DD01001087A84086
2955:10B8A000813200001B8400881CB00000188722072A
2956:10B8B000803200000000000342B1010000000007D8
2957:10B8C00042C10100008000A1469901000000005F14
2958:10B8D000E1910100D787A2451F7C00001000000302
2959:10B8E00048C9010000002D5429C00100000000F8E3
2960:10B8F00018B00100000000F804B00100000000F8DA
2961:10B900000EB00100420000030AC801000C0000A4B0
2962:10B910000CC801000000004017B001000000001436
2963:10B9200002B001000000001424D001000000001447
2964:10B9300010C001001200000810C801000000004003
2965:10B9400023B00100FE7F000544C90100298720942F
2966:10B95000156C00002A870094E5B100000000000A81
2967:10B96000E4B10100438722018032000000003C4422
2968:10B9700023E0010000002EA480B0010000000010B0
2969:10B9800048C101003087A307026C000031876801BD
2970:10B990001AB00000000068071AB001000000000D96
2971:10B9A00002D0010000000005F0B101000000000C11
2972:10B9B000F0B1010000000002E0B101000000000D44
2973:10B9C0000AC001003D872240036C00003D872242EF
2974:10B9D000236C00000000004123C00100000000476C
2975:10B9E00061B10100A00000A462DD0100658728406C
2976:10B9F000813200003A87004081B200000000001050
2977:10BA000080C001000000004761B10100000000405B
2978:10BA100062B101003F87A840233000001B840088EA
2979:10BA20001CB000006587004081B2000000003C446B
2980:10BA300023E00100000000A486B0010000002E10E9
2981:10BA400048C101004887A3120E6C000049876807AF
2982:10BA50001AB00000000068121AB001004C8780087C
2983:10BA6000F03100000100001198C801000000004CF6
2984:10BA70001E9001000000000CF0B101000000000267
2985:10BA8000E0B101000000001086C001000000004687
2986:10BA900061B10100011F004362DD01005087A85C15
2987:10BAA0001F1000008387220D146C00005687220DA2
2988:10BAB000246C00000000000D10C001005A87000D2A
2989:10BAC00024D00000000000412BC001000000001540
2990:10BAD000A2B101001000002010C80100F0070040D2
2991:10BAE000259801005C872242236C00006587004195
2992:10BAF00023C000000000004661B1010040000010BA
2993:10BB000062DD01005D87A85C1F0000001B840088C7
2994:10BB10001CB000000000001048B1010063872247FC
2995:10BB20001F7C000011960043233001000E00000F1F
2996:10BB30001E8C01000000004023B001008387220D0D
2997:10BB4000145000008287A20D0E500000718722461B
2998:10BB50001F7C0000000000461F80010030800010A4
2999:10BB600042C901006F872240E36D000000000047DA
3000:10BB700061B101004000001062DD01006C87A84047
3001:10BB8000813200001B8400881CB00000208000036C
3002:10BB9000469901000000005FE191010000002D06C0
3003:10BBA00048B10100000000F818B00100000000F8E2
3004:10BBB00004B0010076871FF00E3000002A87004C89
3005:10BBC0000DC0000000002E5F0F8001002A872307B0
3006:10BBD000146C00003000001048C90100240000402F
3007:10BBE000F199010000000003F0B101000000000025
3008:10BBF000F0B1010000000016F0B1010024000000C7
3009:10BC000000C801000000004761B10100A00000A4CD
3010:10BC100062DD01007F87A8461F1000002A8700030D
3011:10BC20000CB000002A87000D18C0000004002E147C
3012:10BC30000AD001001200000548CD0100FE7F00057A
3013:10BC400042C901000C002AF2E0B1010089872240BC
3014:10BC5000316C000000006018389601001E000040A2
3015:10BC600043990100008100F680CE01008D87A64037
3016:10BC7000813200000000004443C101008F87220B85
3017:10BC8000ED6D0000080000A142C90100020000A102
3018:10BC900046C901000F0000FA948801000200004A22
3019:10BCA00086E40100000000F60EB0010097872247ED
3020:10BCB0001F7C000004001F430E5000009787A04621
3021:10BCC0000F400000000000410FC001009B87224888
3022:10BCD0001F7C00000000004091B0010004000FA292
3023:10BCE000423100009E87004089B000000C0000A295
3024:10BCF00042C901000000004389B001000000004378
3025:10BD000095D00100000000FC82B00100A187A04195
3026:10BD1000904000000000004191C00100A68722472A
3027:10BD20001F7C0000A687A043896C0000A6872045E1
3028:10BD3000896C0000A687A0410E4000000000004171
3029:10BD40000FC001000000004189C001009E87A24190
3030:10BD500095500000AF8722481F7C0000100000486B
3031:10BD600092F40100FFFF004890880100AD879048E1
3032:10BD7000924000000000004193C001000A0000A2B0
3033:10BD800044C901000000662093A401003080001027
3034:10BD900044C9010012000014F0C90100000000179E
3035:10BDA000F0B1010012000005E0CD010030000010EC
3036:10BDB00080C801000000004461B101002000004083
3037:10BDC00062DD0100B587A84081320000C287225C95
3038:10BDD0001F7C000000003C4423E0010000002D1007
3039:10BDE00048C10100BF872240E36D0000000000460B
3040:10BDF00061B101004000001062DD0100BC87A84075
3041:10BE0000813200001B8400881CB00000C287875C60
3042:10BE10001F0000000000001048B101001196004111
3043:10BE200023400100C487A2471F7C000058890017E7
3044:10BE300010B0000000002F0348B10100C787A00721
3045:10BE4000164000000000004117C001000000000B78
3046:10BE5000E4B101000000005017F00100CB8790F220
3047:10BE6000164000000000004117C0010000006620DD
3048:10BE700017A40100100000142AC80100000000509F
3049:10BE80002BE00100000000F22A9401003080001035
3050:10BE900042C90100D5872240E36D00000000004444
3051:10BEA00061B101004000001062DD0100D287A840AE
3052:10BEB000813200001B8400881CB000000080001745
3053:10BEC00010DC01005889004081B20000A5950040B7
3054:10BED00081320100DB87225C1F7C00001B8400880C
3055:10BEE0001CB000007C96005C1F0001000080000573
3056:10BEF00044C9010000000040E1B1010004002D032D
3057:10BF000048B10100000000F03CB00100280000141E
3058:10BF100002C801000000000134B0010000002D053E
3059:10BF200032B00100220000050AC801001000000321
3060:10BF300048C90100000000F818B00100000000F836
3061:10BF400004B00100000000F80EB001000C0000A4D5
3062:10BF50000CC801000000004017B0010000000040C4
3063:10BF600023B00100218822018032000000003C44FF
3064:10BF700023E0010000002EA480B0010000000010AA
3065:10BF800048C10100F087A307026C0000F187680137
3066:10BF90001AB00000000068071AB001000000000D90
3067:10BFA00002D0010000000005F0B101000000000C0B
3068:10BFB000F0B1010000000002E0B101000000000D3E
3069:10BFC0000AC0010003882240036C0000FD87224262
3070:10BFD000236C00000000004123C001000000004766
3071:10BFE00061B10100A00000A462DD01003D8828408D
3072:10BFF00081320000FA87004081B20000000000108A
3073:10C0000080C001000000004761B101000000004055
3074:10C0100062B10100FF87A840233000001B84008824
3075:10C020001CB000003D88004081B2000000000010FC
3076:10C0300080C001000000004761B101000000004025
3077:10C0400062B101000588A840233000001B840088ED
3078:10C050001CB000002200001948C9010000002D1486
3079:10C0600048C101000F0000F23A88010000000042C0
3080:10C070003BE001000E00001402C801000000001D9A
3081:10C0800002C001001188231A02500000000000467F
3082:10C0900003C001003D88000134C000000C002D1DCC
3083:10C0A00048C10100F00000F23088010000000042A9
3084:10C0B00031F001000000001402B001000000001D7A
3085:10C0C00002C001000000001802C001001988221AF5
3086:10C0D000025000003D88000134C000002200001919
3087:10C0E00048C9010002002D1448C10100000000F6FB
3088:10C0F00014B001000000001D14D001000000001861
3089:10C1000014D001000000001E24B00100120000172E
3090:10C1100010C801003D88001A10C0000000003C4417
3091:10C1200023E00100000000A486B0010000002E10F2
3092:10C1300048C101002688A3120E6C000027886807FA
3093:10C140001AB00000000068121AB001002A888008A6
3094:10C15000F03100000100001198C801000000004CFF
3095:10C160001E9001000000000CF0B101000000000270
3096:10C17000E0B101000000001086C001000000004690
3097:10C1800061B10100011F004362DD01002E88A85C3F
3098:10C190001F1000005A88220D145000005A88220DEA
3099:10C1A000245000000000000D10C00100358822421C
3100:10C1B000236C00003D88004123C0000000000046C1
3101:10C1C00061B101004000001062DD01003688A85C0A
3102:10C1D0001F0000001B8400881CB00000000000103D
3103:10C1E00048B1010011960043233001000E00000FFA
3104:10C1F0001E8C01000000004023B001005988A20DF0
3105:10C200000E500000488822461F7C000000000046B7
3106:10C210001F8001003080001042C901004688224082
3107:10C22000E36D00000000004761B101004000001014
3108:10C2300062DD01004388A840813200001B84008831
3109:10C240001CB0000020800003469901000000005F40
3110:10C25000E191010000002D0648B10100000000F846
3111:10C2600018B00100000000F804B001004D881FF074
3112:10C270000E300000EA87004C0DC0000000002E5F69
3113:10C280000F800100EA872307146C000030000010C3
3114:10C2900048C9010024000040F1990100000000039A
3115:10C2A000F0B1010000000000F0B101000000001634
3116:10C2B000F0B101002400000000C8010000000047A8
3117:10C2C00061B10100A00000A462DD01005688A8460B
3118:10C2D0001F100000EA8700030CB00000EA87000D81
3119:10C2E00018C000007788A2441F7C000000000019DD
3120:10C2F0000AB001002200000548C901000A002D14FF
3121:10C3000048C1010002002040E5B1010004002040C6
3122:10C31000E5B101000D002D1D48C10100090000F329
3123:10C32000388801000D002050E7B1010004002D40C5
3124:10C330003FB00100000000F432B0010004002040D2
3125:10C34000E1B101002200000548C9010000002D14E0
3126:10C3500048C101000200001D94F4010000000040EB
3127:10C3600091B001006C88A0FC9040000000000041EA
3128:10C3700091C001006A88A241955000000480000528
3129:10C3800044C9010000000048F0B10100000000189D
3130:10C3900048C101000200001894F4010000002D18AB
3131:10C3A00090B001007488A0FC9040000000000041A3
3132:10C3B00091C001007288A241955000000000004821
3133:10C3C000E0B1010010002040E5B1010022000005AD
3134:10C3D00048C901000000001448C1010004800005A4
3135:10C3E00042C90100000000F880B00100000000F028
3136:10C3F00016C001007C8842303D0700000000009E0E
3137:10C4000085B0010000001A413DC301000400204234
3138:10C41000ECB101000000001E82B0010002002E1DE0
3139:10C4200082C001000000661882C0010000000042C6
3140:10C4300080C001008688A0418044000000000041C7
3141:10C4400081C001001000004092F401000A002E306B
3142:10C45000818401008A8890409240000000000041E1
3143:10C4600093C001000000662093A401000000001D9D
3144:10C4700048C1010004002019E8B101000000001EBD
3145:10C4800016C001009088A019164400000000004169
3146:10C4900017C001000D002F1E32C001009588A24078
3147:10C4A000156C00009488A01C16400000000000419C
3148:10C4B00017C00100000063F338940100100000056C
3149:10C4C00048C9010004002E1E98B001000000601A47
3150:10C4D00098C001000C002040E1B10100A388224671
3151:10C4E0001F7C0000000000461F800100308000100B
3152:10C4F00042C90100A1882240E36D0000000000470E
3153:10C5000061B101004000001062DD01009E88A8407A
3154:10C51000813200001B8400881CB0000020800003D2
3155:10C52000469901000000005FE19101003080001099
3156:10C5300044C901001200001AF0C9010000000017F0
3157:10C54000F0B1010010000005E0C90100300000104A
3158:10C5500080C801000000004461B1010020000040DB
3159:10C5600062DD0100A988A84081320000B788225C02
3160:10C570001F7C000000003C4423E0010000002D105F
3161:10C5800048C10100B3882240E36D0000000000466E
3162:10C5900061B101004000001062DD0100B088A840D8
3163:10C5A000813200001B8400881CB000000000005C89
3164:10C5B0001F8001000000001048B1010011960041E9
3165:10C5C000234001000E00000F1E8C010020002F05EB
3166:10C5D00048B101000000000BE4B101000000005070
3167:10C5E00017F00100BC8890F21640000000000041E6
3168:10C5F00017C001000000662017A4010010000014FD
3169:10C600002AC801000000001D2AC0010000000050DF
3170:10C610002BE00100000000F22A940100308000109D
3171:10C6200042C90100C7882240E36D000000000044B9
3172:10C6300061B101004000001062DD0100C488A84023
3173:10C64000813200001B8400881CB0000000800017AD
3174:10C6500010DC0100E4882240156C0000CF88A24461
3175:10C660001F7C0000000000441F900100CE88229F24
3176:10C67000136C0000020000881CCC01006B84004099
3177:10C6800081B20000000000413FC3010066990040F4
3178:10C6900081320100D288A241877C00000000001E88
3179:10C6A0003EC00100E4882240156C0000D588201EA1
3180:10C6B000146C00000000000A3CB00100DD95001E73
3181:10C6C00024300100DA8822082E30000000000052D9
3182:10C6D00011C001000000001A10C001003D88004098
3183:10C6E00017B000006B8400881CB00000DD9500408E
3184:10C6F00081320100D788A2082E300000808000A679
3185:10C7000004B001000600004087980100008000038B
3186:10C710004499010004002204E03100005599001FF3
3187:10C720008C300100000000400FB00100058A005C61
3188:10C730001F900000008000034499010004002204BF
3189:10C74000E03100006699004081320100E988A24191
3190:10C75000877C0000EA88001E3EC000000000001F29
3191:10C760008CB001000000004005B001005599004068
3192:10C770000F300100058A005C1F900000F5889C0FB7
3193:10C78000803200000000005C1F800100008000106B
3194:10C7900042C90100F5882240E36D00000000004717
3195:10C7A00061B101004000001062DD0100F288A84084
3196:10C7B000813200001B8400881CB00000FA88220728
3197:10C7C000803200000000000342B1010000000007B9
3198:10C7D00042C10100008000A1469901000000005FF5
3199:10C7E000E191010004002E0348B10100FD8820946E
3200:10C7F000156C0000FE880094E1B100000000000A02
3201:10C80000E0B1010001892240316C00000C000040C1
3202:10C8100045990100000060183896010000002E10B4
3203:10C8200048B1010000000050F1B101000000000813
3204:10C83000F0B1010000000003E0B10100000000447D
3205:10C8400061B101000000001062B101000689A8403A
3206:10C85000233000001B8400881CB0000000002D5213
3207:10C8600011C001001000000348C90100000000F8D9
3208:10C8700018B00100000000F804B00100000000F84A
3209:10C880000EB001000C0000A40CC8010000003C44E4
3210:10C8900023E00100000000A486B0010000002E107B
3211:10C8A00048C101001489A3120E6C000015896807A5
3212:10C8B0001AB00000000068121AB001000000001059
3213:10C8C00086C0010000000008F0B101000000000C6B
3214:10C8D000F0B1010000000002E0B1010000000046DC
3215:10C8E00061B10100011F004362DD01001A89A85CEB
3216:10C8F0001F1000004B89220D146C00002089220DAE
3217:10C90000246C00000000000D10C001002489000DFF
3218:10C9100024D00000000000412BC0010000000015E1
3219:10C92000A2B101001000002010C80100F007004073
3220:10C930002598010026892242236C00002D890041A0
3221:10C9400023C000000000004661B10100400000105B
3222:10C9500062DD01002789A85C1F0000001B8400889D
3223:10C960001CB000000000001048B10100D794004343
3224:10C97000233001000000004023B001000400220D1C
3225:10C98000145000004A89A20D0E5000003989224639
3226:10C990001F7C0000000000461F8001003080001056
3227:10C9A00042C9010037892240E36D000000000047C2
3228:10C9B00061B101004000001062DD01003489A8402F
3229:10C9C000813200001B8400881CB00000208000031E
3230:10C9D000469901000000005FE191010000002D0672
3231:10C9E00048B10100000000F818B00100000000F894
3232:10C9F00004B001003E891FF00E3000000F89004C8A
3233:10CA00000DC0000000002E5F0F8001000F8923077A
3234:10CA1000146C00003000001048C9010024000040E0
3235:10CA2000F199010000000003F0B1010000000000D6
3236:10CA3000F0B1010000000016F0B101002400000078
3237:10CA400000C801000000004761B10100A00000A47F
3238:10CA500062DD01004789A8461F1000000F8900030E
3239:10CA60000CB000000F89000D18C000005489225C32
3240:10CA70001F7C00000000005C1F80010000003C449F
3241:10CA800023E0010000002D1048C10100548922401C
3242:10CA9000E36D00000000004661B10100400000109D
3243:10CAA00062DD01005189A840813200001B840088AA
3244:10CAB0001CB000000000001048B10100D7940041F4
3245:10CAC000234001000000001710B001005889004009
3246:10CAD0002BB0000000800003449901000000000416
3247:10CAE000E0B101005D89229F136C00000200008804
3248:10CAF0001CCC01006B84004081B2000066990041AB
3249:10CB00003F430100000000408DB0010000000040E4
3250:10CB100005B00100559900400F3001001B8A005CF0
3251:10CB20001F900000100000000EF401000000003A09
3252:10CB300001840100030000071AF401002196000798
3253:10CB4000163001006C892241816C00006A89224202
3254:10CB5000816C00001B8400881CB000006B89225F80
3255:10CB60000F7C0000058A00400FB000007489A25AB3
3256:10CB70001F7C00009B9500408132010074892220B7
3257:10CB8000856C000071899C0F803200001B84008836
3258:10CB90001CB000007C96005C1F0001009B980042C6
3259:10CBA000613101001B8400881CB00000E699000779
3260:10CBB0009630010000002D0548B10100000000F092
3261:10CBC00018B001000000000080B00100AE8AA25F32
3262:10CBD000816C0000A8002D431980010037002DF062
3263:10CBE00024B00100040000F38EF401000F0000F3F4
3264:10CBF00090880100838922488E6C00003600004036
3265:10CC00004399010058003D43E7E1010083891FF08B
3266:10CC1000246C0000828923418F6C0000AE8A00479B
3267:10CC200081B00000AE8A004881B0000040000040A2
3268:10CC300043990100B0002DF014B001008889220A48
3269:10CC4000904000003999004091300100AE8AA24026
3270:10CC500080320000B0002D4581B00100948922F09F
3271:10CC60002C300000A3002D3083B00100AC002DF368
3272:10CC700082E001008E89A3412C6C000000000016A8
3273:10CC800082B0010098002DF082C0010088002DF0D4
3274:10CC900082D00100000000F298E80100AE8A204C2A
3275:10CCA000826C00007C002D4198E80100AE8A20F0E3
3276:10CCB000986C0000058A220A803200004002000CB5
3277:10CCC0007E890100058AA64081320000AE8A0049B3
3278:10CCD00081B00000200000A680B001009C892243A2
3279:10CCE000216F00001380004080DC01009D8900401E
3280:10CCF00081B200001A80004080DC01009D89A25EA4
3281:10CD00000B7D00000000004008B101009F899F8555
3282:10CD100080320000A389004081B200005F8422407D
3283:10CD2000577D00000100004057990100A38942404F
3284:10CD300081320000000000449393010049841A5B93
3285:10CD4000699300007B00004061990100A689A8B1A9
3286:10CD500080300000CF891D4080320000C089224011
3287:10CD6000AF6F0000C089225B817C00000400225D5F
3288:10CD7000737D00007D00004061990100AC89A8B17D
3289:10CD8000943000000000005F61B101000000004A23
3290:10CD900062B10100AF89A84081320000B1894340EF
3291:10CDA00081320000BF892257737D00007700004068
3292:10CDB00061990100B389A8B1943000007700004068
3293:10CDC00061990100B589A8B19630000000000048C3
3294:10CDD00061B101000000004A62B10100B889A84AAF
3295:10CDE00080330000BD89225F957C00000000004B6D
3296:10CDF00062B10100BB89A84BAC33000000001BA549
3297:10CE000082B30100C08900BE83C3000000001B4044
3298:10CE100081B301004018004049990100040000A6B8
3299:10CE200086B00100CD89A240860400001B849C408E
3300:10CE300080320000FFFF004088880100E98900502F
3301:10CE4000473101003600004488CC0100C9895240B6
3302:10CE500081320000E98900404731010000000041B3
3303:10CE600089B00100E989004847310100E9890005DE
3304:10CE7000473101001B84004081B2000028000040BF
3305:10CE8000479901001B840041E1C10000781800406F
3306:10CE900049990100D6892254817C0000D189424001
3307:10CEA00081320000008200B469DF010000001A44F2
3308:10CEB000939301002800004047990100E98900414F
3309:10CEC00089300100E4890F4080320000FF7F00407C
3310:10CED00088880100E989005047310100360000448C
3311:10CEE00088CC0100DC8999408032000000000048B5
3312:10CEF00089D00100DE899B40803200000000004C98
3313:10CF000089D00100E0891F4480320000E989004097
3314:10CF1000473101000000004189B00100E989004863
3315:10CF200047310100E9890058473101001B84004066
3316:10CF300081B200001000004086F401006F00004341
3317:10CF4000868801001B84260547310000E9890041DD
3318:10CF5000893001001B84004081B200000000A04421
3319:10CF6000F04101000000004081B20100000080415A
3320:10CF7000E1C10100040000CB81C80100EF8922401B
3321:10CF8000F27F00008180006F97330100F189224019
3322:10CF9000737D00009B8000418BB30000EC89225917
3323:10CFA000737D00007900004061990100EC8928B18F
3324:10CFB0007E310000F289004081B20000040022C0EE
3325:10CFC00095300000000000D697B00100FA89225D7C
3326:10CFD000737D00007D00004061990100F889A8B1CF
3327:10CFE000803000000000005E7F830100000000BF71
3328:10CFF000C5B10100040000408198010025010040F6
3329:10D0000081320100FD89A24181500000FF89435F08
3330:10D010007F130000260100BFC53101000000005F42
3331:10D020007F8301000000005E7F9301008B9800BFAA
3332:10D03000C53101001B84004081B200000C8A9C0FA6
3333:10D04000803200000080001042C901000C8A22409A
3334:10D05000E36D00000000004561B1010040000010D8
3335:10D0600062DD0100098AA840813200001B8400882B
3336:10D070001CB0000077952202803200000D8A4240E9
3337:10D0800081320000000000449393010077951A025A
3338:10D0900068970000178A9C0F803200000080001003
3339:10D0A00042C90100178A2240E36D000000000045DC
3340:10D0B00061B101004000001062DD0100148AA84047
3341:10D0C000813200001B8400881CB000008195220280
3342:10D0D00080320000188A4240813200000000004483
3343:10D0E0009393010081951A0268970000228A9C0F91
3344:10D0F000803200000080001042C90100228A2240D4
3345:10D10000E36D00000000004561B101004000001027
3346:10D1100062DD01001F8AA840813200001B84008864
3347:10D120001CB000006F84220280320000238A42403B
3348:10D1300081320000000000449393010000001A02B5
3349:10D14000689701006F84004005B00000008000A6D1
3350:10D1500056B1010056952F4005B00100738AA240D8
3351:10D16000E76D0000B8942941E7B1010000000054C8
3352:10D17000EF930100000000F20EB001002900004012
3353:10D180000D9801000900000712E40100000000A74B
3354:10D1900013C00100030000071AF401000700000794
3355:10D1A00016880100FFFF001034D8010000000003C2
3356:10D1B000349401000000004023B00100201800401A
3357:10D1C0001198010000B5000D42C90100578A220BD9
3358:10D1D000E67D0000388A444081320000FFFF0007EE
3359:10D1E000848901003F8A05C224300000679800400E
3360:10D1F0008132010000002D0548B10100748A1CF045
3361:10D2000018300100578A004081B2000000001C4025
3362:10D2100081B201004E8AA048236C0000000000503B
3363:10D2200035D001000080001A42C90100488A22401E
3364:10D23000E36D00000000004261B101004000001AEF
3365:10D2400062DD0100458AA840813200001B8400880D
3366:10D250001CB000002098004043990100748A00F837
3367:10D2600018300100498AA24123500000FFFF00103E
3368:10D2700034D801000000000334940100201800405D
3369:10D280001198010000002E1A48B10100000000446E
3370:10D29000F1B1010000000008F0B1010000000042FF
3371:10D2A00061B101002000001A62DD0100528AA80964
3372:10D2B000E03100000000004123C0010000000050E8
3373:10D2C00035C001000000004411C00100638A224102
3374:10D2D0000D500000000000410FC001005F8AA0AAAD
3375:10D2E0000F6C0000000000410FB0010009000007B2
3376:10D2F00012E40100000000A713C00100000000407C
3377:10D300001BB00100368A004117B00000000200097E
3378:10D3100012C80100368A8341174000000000004017
3379:10D3200017B00100368A00411BC000006E8A2340FE
3380:10D33000236C00000000005035D001000080001A6E
3381:10D3400042C901006B8A2240E36D000000000042E8
3382:10D3500061B101004000001A62DD0100688AA84046
3383:10D36000813200001B8400881CB00000209800401F
3384:10D3700043990100748A00F8183001006C8AA241B8
3385:10D3800023500000000000410FC00100718AA0AAD4
3386:10D390000F6C0000000000410FB00100B89420079E
3387:10D3A000E4B1010056952040E7B10100058A004034
3388:10D3B0000FB00000FFFF000C80D80100C002000C7D
3389:10D3C0007E890100868A2654613100007C8A870CA0
3390:10D3D000803200000F000040629901007C8A2840E2
3391:10D3E000813200007C8AA254777D0000788A004058
3392:10D3F00081B20000818A2246197C00000D000040A5
3393:10D40000629901000000A84081B200000000A2540F
3394:10D41000777D01007D8A004081B20000868A224922
3395:10D42000197C00000E000040629901000000A84035
3396:10D4300081B200000000A254777D0100818A004083
3397:10D4400081B2000010000040629901000000A84075
3398:10D4500081B200000000A254777D0100868A00405E
3399:10D4600081B2000030942F55F1930100004000A6D6
3400:10D4700056B101006F84A241E551000064000040F4
3401:10D48000E59901008E8A424081320000918AA29380
3402:10D49000576F00000000004157C3010000001AABA5
3403:10D4A00027B301006F842250FD7F00006F8422515A
3404:10D4B000FD7F00006F84A2411D53000050460040D4
3405:10D4C0001D9B010034820040813201000E000048A3
3406:10D4D000B2CB0100FC810040493101009D8A22400D
3407:10D4E000B56F00000E000048B2CB0100FF81004183
3408:10D4F000B55301006F84004081B20000000000516C
3409:10D50000FD8301004016004045990100358200402E
3410:10D51000493101001E000048B2CB0100FC810040EF
3411:10D5200081320100000000DA91C0010004000048CF
3412:10D53000B2CB0100FF810040B533010060162040EE
3413:10D54000E5B10100DB820040B5330100080000486E
3414:10D55000B2CB0100FFFF004AB48B0100FF81004005
3415:10D56000813201000A000048B2CB01001000004ADD
3416:10D57000B4F70100FF810040813201006F84004058
3417:10D5800081B200000500004043990100000000F353
3418:10D5900008B0010004002040E6B101000300004093
3419:10D5A00096E401000000000496C00100B48A004B1C
3420:10D5B00010C90000D78D004109B000000400002010
3421:10D5C0008FB00000040000208FB000000400002095
3422:10D5D0008FB00000040000208FB000000400002085
3423:10D5E0008FB00000040000208FB000000400002075
3424:10D5F0008FB00000040000208FB000000B8E0041AF
3425:10D6000009B00000040000208FB0000004000020DA
3426:10D610008FB00000040000208FB000000400002044
3427:10D620008FB00000040000208FB000000400002034
3428:10D630008FB00000040000208FB000000400002024
3429:10D640008FB000003D8E004509B000003D8E0045C2
3430:10D6500009B000003D8E004509B000003D8E004538
3431:10D6600009B00000040000208FB00000040000207A
3432:10D670008FB00000040000208FB0000004000020E4
3433:10D680008FB000007C8E004309B00000A58E0043DF
3434:10D6900009B00000A98E004409B0000011900045B7
3435:10D6A00009B00000040000208FB00000040000203A
3436:10D6B0008FB00000040000208FB0000004000020A4
3437:10D6C0008FB00000040000208FB00000B58E004332
3438:10D6D00009B00000B48E004309B00000D58D0045AC
3439:10D6E00009B00000040000208FB0000004000020FA
3440:10D6F0008FB00000040000208FB000000400002064
3441:10D700008FB00000758F004209B00000758F004394
3442:10D7100009B00000758F004409B00000D58D0045A8
3443:10D7200009B00000040000208FB0000004000020B9
3444:10D730008FB00000040000208FB000000400002023
3445:10D740008FB00000040000208FB00000A18F0043C4
3446:10D7500009B00000040000208FB00000D58D004506
3447:10D7600009B00000040000208FB000000400002079
3448:10D770008FB00000040000208FB0000004000020E3
3449:10D780008FB00000040000208FB00000BF8F004366
3450:10D7900009B00000BF8F004409B00000D58D0045DE
3451:10D7A00009B00000040000208FB000000400002039
3452:10D7B0008FB00000040000208FB0000004000020A3
3453:10D7C0008FB00000040000208FB00000BF8F004227
3454:10D7D00009B00000040000208FB00000D58D004586
3455:10D7E00009B00000040000208FB0000004000020F9
3456:10D7F0008FB00000040000208FB000000400002063
3457:10D800008FB00000040000208FB00000E78F0044BC
3458:10D8100009B00000040000208FB00000D58D004545
3459:10D8200009B00000040000208FB0000004000020B8
3460:10D830008FB00000040000208FB000000400002022
3461:10D840008FB00000D58D004209B00000F88F004570
3462:10D8500009B00000F88F004509B00000D58D0045E3
3463:10D8600009B00000040000208FB000000400002078
3464:10D870008FB00000040000208FB0000004000020E2
3465:10D880008FB00000FA8F004209B00000FA8F004309
3466:10D8900009B00000FA8F004409B00000FA8F00457B
3467:10D8A00009B00000040000208FB000000400002038
3468:10D8B0008FB00000040000208FB0000004000020A2
3469:10D8C0008FB00000040000208FB000000400002092
3470:10D8D0008FB000000290004409B00000D58D0045D3
3471:10D8E00009B00000040000208FB0000004000020F8
3472:10D8F0008FB00000040000208FB000000400002062
3473:10D900008FB000001390004209B000000390004364
3474:10D9100009B000001390004409B00000D58D004507
3475:10D9200009B00000040000208FB0000004000020B7
3476:10D930008FB00000040000208FB000000400002021
3477:10D940008FB00000040000208FB00000149000434E
3478:10D9500009B000000A90004409B00000D58D0045D0
3479:10D9600009B00000040000208FB000000400002077
3480:10D970008FB00000040000208FB00000D58D004162
3481:10D9800009B00000738F004209B00000738F00439C
3482:10D9900009B00000738F004409B00000D58D004528
3483:10D9A00009B00000040000208FB000000400002037
3484:10D9B0008FB00000040000208FB00000D58D004122
3485:10D9C00009B000001590004209B000001590004316
3486:10D9D00009B000001590004409B00000D58D004545
3487:10D9E00009B00000040000208FB0000004000020F7
3488:10D9F0008FB00000040000208FB000000400002061
3489:10DA00008FB00000040000208FB000000400002050
3490:10DA10008FB00000040000208FB000001C90004573
3491:10DA200009B00000040000208FB0000004000020B6
3492:10DA30008FB00000040000208FB000001E90004254
3493:10DA400009B00000040000208FB000000400002096
3494:10DA50008FB00000040000208FB000000400002000
3495:10DA60008FB00000040000208FB0000004000020F0
3496:10DA70008FB00000040000208FB0000004000020E0
3497:10DA80008FB000002A90004309B00000939000433B
3498:10DA900009B00000A98E004409B0000011900045B3
3499:10DAA00009B00000040000208FB000000400002036
3500:10DAB0008FB00000040000208FB0000004000020A0
3501:10DAC0008FB00000040000208FB000009B90004346
3502:10DAD00009B00000A98E004409B000001190004573
3503:10DAE00009B00000040000208FB0000004000020F6
3504:10DAF0008FB00000040000208FB000000400002060
3505:10DB00008FB00000040000208FB00000AC900043F4
3506:10DB100009B00000040000208FB00000D58D004542
3507:10DB200009B00000040000208FB0000004000020B5
3508:10DB30008FB00000040000208FB00000040000201F
3509:10DB40008FB00000798E004309B000009790004329
3510:10DB500009B00000A98E004409B0000011900045F2
3511:10DB600009B00000040000208FB000000400002075
3512:10DB70008FB0000007002D0548B10100000000F340
3513:10DB800008B0010006002047E6B10100040000478C
3514:10DB900096E401000000004796D001000000004715
3515:10DBA00096D001000000000496C00100748B004B69
3516:10DBB00010C90000C490004909B000000400002012
3517:10DBC00085B000000400002085B0000004000020A3
3518:10DBD00085B000000400002085B000000400002093
3519:10DBE00085B000000400002085B000000400002083
3520:10DBF00085B000000400002085B000000400002073
3521:10DC000085B000000400002085B000000400002062
3522:10DC100085B000000400002085B000000400002052
3523:10DC200085B000000400002085B00000FD90004297
3524:10DC300009B000000400002085B0000004000020AE
3525:10DC400085B000000400002085B000000400002022
3526:10DC500085B000000400002085B000000400002012
3527:10DC600085B000000400002085B000000400002002
3528:10DC700085B000000400002085B0000004000020F2
3529:10DC800085B000000400002085B0000004000020E2
3530:10DC900085B000000400002085B00000039100461C
3531:10DCA00009B000000400002085B00000040000203E
3532:10DCB00085B000000400002085B0000004000020B2
3533:10DCC00085B000000400002085B0000004000020A2
3534:10DCD00085B000000400002085B000000400002092
3535:10DCE00085B000000400002085B000000400002082
3536:10DCF00085B000000400002085B000000400002072
3537:10DD000085B000000400002085B000000400002061
3538:10DD100085B000001191004209B00000040000200D
3539:10DD200085B000003391004209B0000004000020DB
3540:10DD300085B000000400002085B000000400002031
3541:10DD400085B000000400002085B000000400002021
3542:10DD500085B000000400002085B000002E91004A2C
3543:10DD600009B000000400002085B00000040000207D
3544:10DD700085B000000400002085B0000004000020F1
3545:10DD800085B000003691004309B000000400002077
3546:10DD900085B000008F91004409B00000040000200D
3547:10DDA00085B000000400002085B0000004000020C1
3548:10DDB00085B000000400002085B0000004000020B1
3549:10DDC00085B000000400002085B000008E91004B5B
3550:10DDD00009B000000400002085B00000040000200D
3551:10DDE00085B000000400002085B0000006910041CD
3552:10DDF00009B000000400002085B000000691004337
3553:10DE000009B000000691004409B0000006910045E9
3554:10DE100009B000000691004609B0000006910047D5
3555:10DE200009B000000691004809B0000006910049C1
3556:10DE300009B000000691004A09B000000691004BAD
3557:10DE400009B000000691004C09B000000691004D99
3558:10DE500009B000000400002085B00000040000208C
3559:10DE600085B00000EE91004209B0000004000020DF
3560:10DE700085B00000EE91004409B0000004000020CD
3561:10DE800085B000000400002085B0000004000020E0
3562:10DE900085B000000400002085B0000004000020D0
3563:10DEA00085B000000400002085B00000EE91004B1A
3564:10DEB00009B000000400002085B00000040000202C
3565:10DEC00085B000000400002085B0000004000020A0
3566:10DED00085B000000400002085B0000006920045D7
3567:10DEE00009B000000400002085B0000004000020FC
3568:10DEF00085B000000400002085B000000400002070
3569:10DF000085B000001D92004709B000000400002009
3570:10DF100085B00000FA91004509B00000040000201F
3571:10DF200085B000000400002085B000007C9400460D
3572:10DF300009B000000400002085B0000004000020AB
3573:10DF400085B000000400002085B00000040000201F
3574:10DF500085B000000400002085B000003391004629
3575:10DF600009B000001191004609B000002C91004753
3576:10DF700009B000002C91004809B000000400002006
3577:10DF800085B000000400002085B0000004000020DF
3578:10DF900085B000002E91004A09B000000400002066
3579:10DFA00085B000000400002085B0000004000020BF
3580:10DFB00085B000000400002085B0000004000020AF
3581:10DFC00085B000000400002085B000008F9100455E
3582:10DFD00009B000003691004309B000002C910047C1
3583:10DFE00009B000002C91004809B000000400002096
3584:10DFF00085B000000400002085B00000040000206F
3585:10E0000085B000008E91004C09B000000400002093
3586:10E0100085B000000400002085B00000040000204E
3587:10E0200085B000000400002085B00000040000203E
3588:10E0300085B000000400002085B000002392004459
3589:10E0400009B000002392004209B00000C08D0047D3
3590:10E0500009B00000C08D004809B000000400002095
3591:10E0600085B000000400002085B0000004000020FE
3592:10E0700085B000002392004B09B00000040000208E
3593:10E0800085B000000400002085B00000069100412A
3594:10E0900009B000004692004709B0000004000020CB
3595:10E0A00085B000002E92004709B000000400002057
3596:10E0B00085B000000400002085B0000004000020AE
3597:10E0C00085B000000400002085B00000040000209E
3598:10E0D00085B000000400002085B000002E920047AB
3599:10E0E00009B000000400002085B0000004000020FA
3600:10E0F00085B000000400002085B00000040000206E
3601:10E1000085B000000400002085B00000040000205D
3602:10E1100085B000000400002085B000002E9200476A
3603:10E1200009B000004692004709B000002C9100475A
3604:10E1300009B000002C91004809B000000400002044
3605:10E1400085B000000400002085B00000040000201D
3606:10E1500085B000002E92004709B0000004000020A6
3607:10E1600085B000000400002085B0000004000020FD
3608:10E1700085B000000400002085B0000004000020ED
3609:10E1800085B000000400002085B0000004000020DD
3610:10E1900085B000000400002085B0000055920047C3
3611:10E1A00009B000005592004809B0000004000020AA
3612:10E1B00085B000000400002085B0000004000020AD
3613:10E1C00085B000000400002085B00000040000209D
3614:10E1D00085B000000400002085B00000B892004027
3615:10E1E00009B00000D692004709B00000CA9200486A
3616:10E1F00009B000002692004709B0000026920047AF
3617:10E2000009B00000D692004709B00000DD92004737
3618:10E2100009B00000DD92004809B0000004000020B1
3619:10E2200085B00000CA92004809B00000269200475D
3620:10E2300009B000002692004709B00000CA920048C9
3621:10E2400009B000000400002085B000000400002098
3622:10E2500085B000000400002085B00000EE9100436E
3623:10E2600009B000000400002085B00000EE910045D8
3624:10E2700009B00000EE91004609B000002C91004763
3625:10E2800009B000002C91004809B0000004000020F3
3626:10E2900085B00000EE91004A09B0000004000020A3
3627:10E2A00085B00000EE91004C09B000000400002091
3628:10E2B00085B000000400002085B0000004000020AC
3629:10E2C00085B000004592004709B00000399200482F
3630:10E2D00009B000002D92004709B000002D920047C0
3631:10E2E00009B000004592004709B00000C08D00470A
3632:10E2F00009B00000C08D004809B0000004000020F3
3633:10E3000085B000003992004809B000002D92004706
3634:10E3100009B000002D92004709B000003992004872
3635:10E3200009B000000400002085B0000004000020B7
3636:10E3300085B00000DF92004209B000000400002018
3637:10E3400085B00000DF92004409B000000400002006
3638:10E3500085B000000400002085B00000040000200B
3639:10E3600085B000000400002085B0000004000020FB
3640:10E3700085B000000400002085B00000DF92004B53
3641:10E3800009B000000400002085B000000400002057
3642:10E3900085B000000400002085B0000004000020CB
3643:10E3A00085B000000400002085B00000DF9200432B
3644:10E3B00009B000000400002085B00000DF92004595
3645:10E3C00009B00000DF92004609B00000DF9200476C
3646:10E3D00009B00000DF92004809B0000004000020EE
3647:10E3E00085B00000DF92004A09B000000400002060
3648:10E3F00085B00000DF92004C09B00000DF92004CB5
3649:10E4000009B000000400002085B0000004000020D6
3650:10E4100085B000000400002085B00000FA9200469C
3651:10E4200009B000000400002085B0000004000020B6
3652:10E4300085B000000400002085B00000040000202A
3653:10E4400085B000001D92004709B0000004000020C4
3654:10E4500085B00000FA92004609B0000004000020D8
3655:10E4600085B000000400002085B0000004000020FA
3656:10E4700085B000000400002085B0000004000020EA
3657:10E4800085B000000400002085B00000069400461E
3658:10E4900009B000000400002085B000000400002046
3659:10E4A00085B000000400002085B0000004000020BA
3660:10E4B00085B000001D92004709B000000400002054
3661:10E4C00085B000000694004609B00000040000205A
3662:10E4D00085B000000400002085B0000006940046CE
3663:10E4E00009B000000400002085B0000004000020F6
3664:10E4F00085B000000400002085B00000040000206A
3665:10E5000085B000002B94004209B0000004000020F8
3666:10E5100085B000000400002085B000000400002049
3667:10E5200085B000000400002085B000000400002039
3668:10E5300085B000000400002085B000002A94004A45
3669:10E5400009B000000400002085B000000400002095
3670:10E5500085B000000400002085B000000400002009
3671:10E5600085B000000400002085B0000004000020F9
3672:10E5700085B000000400002085B000002B94004608
3673:10E5800009B000000400002085B000002C91004775
3674:10E5900009B000002C91004809B0000004000020E0
3675:10E5A00085B000000400002085B0000004000020B9
3676:10E5B00085B000002A94004A09B000000400002041
3677:10E5C00085B000000400002085B000000400002099
3678:10E5D00085B000000400002085B000000400002089
3679:10E5E00085B000000400002085B000000400002079
3680:10E5F00085B000000400002085B000000400002069
3681:10E6000085B000000400002085B00000EA920041BF
3682:10E6100009B000000400002085B0000004000020C4
3683:10E6200085B000000400002085B000000400002038
3684:10E6300085B000000400002085B000000400002028
3685:10E6400085B00000F792004209B0000004000020ED
3686:10E6500085B00000F792004409B0000004000020DB
3687:10E6600085B000000400002085B0000004000020F8
3688:10E6700085B000000400002085B0000004000020E8
3689:10E6800085B000000400002085B00000F792004B28
3690:10E6900009B000000400002085B000000400002044
3691:10E6A00085B000000400002085B0000004000020B8
3692:10E6B00085B000000400002085B00000F792004300
3693:10E6C00009B000000400002085B00000F79200456A
3694:10E6D00009B00000F792004609B00000F792004729
3695:10E6E00009B00000F792004809B0000004000020C3
3696:10E6F00085B000000400002085B000000400002068
3697:10E7000085B00000F792004C09B000000400002022
3698:10E7100085B000000400002085B000000400002047
3699:10E7200085B000000400002085B000000692004C77
3700:10E7300009B000000400002085B0000004000020A3
3701:10E7400085B000000400002085B000000400002017
3702:10E7500085B000001D92004709B0000004000020B1
3703:10E7600085B00000FA91004C09B0000004000020C0
3704:10E7700085B000000400002085B00000CD94004664
3705:10E7800009B000000400002085B000000400002053
3706:10E7900085B000007194004209B000000400002020
3707:10E7A00085B000007194004409B00000040000200E
3708:10E7B00085B000000400002085B0000004000020A7
3709:10E7C00085B000000400002085B000000400002097
3710:10E7D00085B000000400002085B000007194004B5B
3711:10E7E00009B000000400002085B0000004000020F3
3712:10E7F00085B000000400002085B000000400002067
3713:10E8000085B000000400002085B000000400002056
3714:10E8100085B000000400002085B000007194004520
3715:10E8200009B000007194004609B000002C91004727
3716:10E8300009B000002C91004809B00000040000203D
3717:10E8400085B000000400002085B000000400002016
3718:10E8500085B000007194004C09B000000400002055
3719:10E8600085B000000400002085B0000004000020F6
3720:10E8700085B00000FA91004209B000007C94004687
3721:10E8800009B000000400002085B000000400002052
3722:10E8900085B00000FA91004609B000000400002095
3723:10E8A00085B000001D92004709B000000400002060
3724:10E8B00085B000007C94004609B0000004000020F0
3725:10E8C00085B000000400002085B000007C94004664
3726:10E8D00009B000000400002085B000000400002002
3727:10E8E00085B000000400002085B000008094004343
3728:10E8F00009B000000400002085B0000004000020E2
3729:10E9000085B000000400002085B000000400002055
3730:10E9100085B000001D92004709B0000004000020EF
3731:10E9200085B000008094004309B00000040000207E
3732:10E9300085B000000400002085B000008094004DE8
3733:10E9400009B000000400002085B000000400002091
3734:10E9500085B000000400002085B000000400002005
3735:10E9600085B000009294004309B00000040000202C
3736:10E9700085B000000400002085B0000004000020E5
3737:10E9800085B000000400002085B0000004000020D5
3738:10E9900085B000000400002085B000006F94004A9C
3739:10E9A00009B000000400002085B000000400002031
3740:10E9B00085B000000400002085B0000004000020A5
3741:10E9C00085B000000400002085B000000400002095
3742:10E9D00085B000000400002085B000009294004340
3743:10E9E00009B000000400002085B000002C91004711
3744:10E9F00009B000002C91004809B00000040000207C
3745:10EA000085B000000400002085B000000400002054
3746:10EA100085B000006F94004A09B000000400002097
3747:10EA200085B000000400002085B000000400002034
3748:10EA300085B000000400002085B00000A4940043CD
3749:10EA400009B000000400002085B000000400002090
3750:10EA500085B000000400002085B000000400002004
3751:10EA600085B000001D92004709B00000040000209E
3752:10EA700085B00000A494004309B000000400002009
3753:10EA800085B000000400002085B00000A494004D73
3754:10EA900009B000000400002085B000000400002040
3755:10EAA00085B000001191004209B000000400002070
3756:10EAB00085B000003391004209B00000040000203E
3757:10EAC00085B000000400002085B000000400002094
3758:10EAD00085B000000400002085B000000400002084
3759:10EAE00085B000000400002085B00000C3940042FF
3760:10EAF00009B000000400002085B0000004000020E0
3761:10EB000085B000000400002085B000000400002053
3762:10EB100085B000000400002085B000000400002043
3763:10EB200085B000000400002085B00000339100464D
3764:10EB300009B000001191004609B000002C91004777
3765:10EB400009B000002C91004809B00000040000202A
3766:10EB500085B000000400002085B000000400002003
3767:10EB600085B00000C394004609B0000004000020F6
3768:10EB700085B000000400002085B0000004000020E3
3769:10EB800085B000000400002085B00000C594004A54
3770:10EB900009B000000400002085B00000040000203F
3771:10EBA00085B000000400002085B0000004000020B3
3772:10EBB00085B000001D92004709B00000040000204D
3773:10EBC00085B00000C594004A09B000000400002090
3774:10EBD00085B000000400002085B000007D94004650
3775:10EBE00009B000000400002085B0000004000020EF
3776:10EBF00085B000000400002085B000007D94004630
3777:10EC000009B000000400002085B0000004000020CE
3778:10EC100085B000000400002085B000000400002042
3779:10EC200085B000001D92004709B0000004000020DC
3780:10EC300085B000007D94004609B00000040000206B
3781:10EC400085B000000400002085B000007D940046DF
3782:10EC500009B000000400002085B00000040000207E
3783:10EC600085B000000400002085B0000004000020F2
3784:10EC700085B00000CB94004209B0000004000020E1
3785:10EC800085B000000400002085B0000004000020D2
3786:10EC900085B000000400002085B0000004000020C2
3787:10ECA00085B000000400002085B000006F94004A89
3788:10ECB00009B000000400002085B00000040000201E
3789:10ECC00085B000000400002085B000000400002092
3790:10ECD00085B000000400002085B000000400002082
3791:10ECE00085B000000400002085B00000CB940046F1
3792:10ECF00009B000000400002085B000002C910047FE
3793:10ED000009B000002C91004809B000000400002068
3794:10ED100085B000000400002085B000000400002041
3795:10ED200085B000006F94004A09B000000400002084
3796:10ED300085B000000400002085B000000400002021
3797:10ED400085B000003691004D09B00000040000209D
3798:10ED500085B000000400002085B000000400002001
3799:10ED600085B000000400002085B0000004000020F1
3800:10ED700085B000000400002085B0000004000020E1
3801:10ED800085B000000400002085B0000004000020D1
3802:10ED900085B000000400002085B0000004000020C1
3803:10EDA00085B000000400002085B0000004000020B1
3804:10EDB00085B000000400002085B0000004000020A1
3805:10EDC00085B000000400002085B000000400002091
3806:10EDD00085B000003691004D09B000002C9100472D
3807:10EDE00009B000002C91004809B000000400002088
3808:10EDF00085B000000400002085B000000400002061
3809:10EE000085B000000400002085B000000400002050
3810:10EE100085B0000007002E4B19900100108A0004F5
3811:10EE2000E6B10000C08D2242197C0000C597003A6F
3812:10EE300081300100C08D004081B20000C08D2242AF
3813:10EE4000197C0000FF1F000F1E8C01003797004047
3814:10EE500081320100D08D9C0F803200000000005CE8
3815:10EE60001F8001000080001042C90100D08D2240A7
3816:10EE7000E36D00000000004561B10100400000109A
3817:10EE800062DD0100CD8DA840813200001B84008826
3818:10EE90001CB000001986220280320000D18D424051
3819:10EEA00081320000000000449393010000001A0228
3820:10EEB000689701001986004005B0000005002E4B40
3821:10EEC00019900100108A0004E6B100000000004023
3822:10EED00087B00100000000408DB0010000800003F9
3823:10EEE00042C90100400000A144C90100000000F037
3824:10EEF000E0B101005599000607400100000000063E
3825:10EF000007D00100D4002E5C1F9001000000000714
3826:10EF1000F0B101000C80000342C90100000000F0C4
3827:10EF2000F0B101000000004081B20100000000FECD
3828:10EF300096B00100000000FE96C00100000000F045
3829:10EF4000F0B101000000004081B20100000000FEAD
3830:10EF500096C00100000000FE96C00100000000F015
3831:10EF6000F0B101000000004081B20100000000FA91
3832:10EF700096C00100000000FE96C001000030004B6A
3833:10EF8000948801000000004695F001000000004A4E
3834:10EF900096C001005E012E34978401000200004BF0
3835:10EFA000E4E5010064012040E1B10100090000072F
3836:10EFB00086E4010000002EA787C0010010000010A9
3837:10EFC00048C9010010000040F199010058010043B8
3838:10EFD000F0C9010058010005E0C90100000000442B
3839:10EFE00061B10100A00000A462DD0100FA8DA8401B
3840:10EFF000813200000000000548B101001A00004005
3841:10F000009798010008002E4095B00100028E204B19
3842:10F01000946C000000000040F1B10100FF8D004140
3843:10F0200095C000001080001042C90100098E2240E6
3844:10F03000E36D00000000004461B1010040000010D9
3845:10F0400062DD0100058EA840813200001B8400882B
3846:10F050001CB000000000000548B10100C597004049
3847:10F0600081300100D58D004081B200000C8000038A
3848:10F0700042C90100000000F886B00100000000F85D
3849:10F0800088B001000E8E424081320000118EA24CE9
3850:10F09000FD7F0000128E004CFD930000138E20F0C7
3851:10F0A000566F0000000000F056B3010000001A4047
3852:10F0B00081B201000080001044C9010064000040DA
3853:10F0C000F199010070000005F0C901000000004343
3854:10F0D000F0B101000000004761B101002000001004
3855:10F0E00062DD0100198EA844E0310000100000101C
3856:10F0F0008CC801000080004644C901004000004067
3857:10F10000F199010068010005F0C9010064000043A5
3858:10F11000F0C901000000004761B101000000004695
3859:10F1200062B10100218EA844E03100001B840088F8
3860:10F130001CB000000900000786E4010038002EA77B
3861:10F1400087C001008B002D0548B10100298E2243A4
3862:10F15000E77D00000000004445C101002C8E2244E0
3863:10F16000E77D00000000004C45C101000000004A9E
3864:10F1700019900100680120A2E4B10100880000405C
3865:10F1800043990100308E230BE56D00000000004123
3866:10F19000199001000080001044C901005000004097
3867:10F1A000F199010058010043F0C901005801000520
3868:10F1B000E0C901000000004461B10100000000103E
3869:10F1C00062B10100358EA840813200001B840088A6
3870:10F1D0001CB000005C002E0548B101000080000357
3871:10F1E00042C90100000060F096B00100C5970041DF
3872:10F1F00081300100D58D004081B20000408EA249CF
3873:10F20000197C00008600004047990100448E0040B0
3874:10F21000E5B1000086002F4919800100448EA2F25A
3875:10F22000803200008B00004047990100000000423E
3876:10F23000E7910100478EA246197C0000A000004023
3877:10F24000479901004B8E0040E5B10000A0002F4619
3878:10F25000198001004B8EA2F2803200008B0000402A
3879:10F260004799010000000041E7910100A80000401B
3880:10F270004399010034002DF024B00100000000FB90
3881:10F280000CB00100000000FB10B00100000000FB0A
3882:10F2900012B001000F0000F316880100040000F313
3883:10F2A00014F40100768E2640813200005E8E220A20
3884:10F2B000166C000058003D4313E00100000000F808
3885:10F2C00082B00100040022F084300000FD9800406C
3886:10F2D000813201001B8400881CB000000000000582
3887:10F2E00048B101000000004113C001005D8EA04341
3888:10F2F000136C00000000004013B00100538E004169
3889:10F3000015D00000768E220A8032000058003D435E
3890:10F3100013E00100000000F882B00100040022F0B8
3891:10F3200084300000FD980040813201004000204000
3892:10F33000E1B101001B8400881CB000000000000542
3893:10F3400048B10100768E22411550000000000041B6
3894:10F3500011C001006A8EA043116C00000000004043
3895:10F3600011B0010058003D4311E00100000000F819
3896:10F3700036B00100040022F0003000000000005010
3897:10F3800083B0010004980047613101001B840088AC
3898:10F390001CB00000749500054831010000000045D4
3899:10F3A00061B101004000001062DD0100728EA840D2
3900:10F3B000813200001B8400881CB00000668E0005AE
3901:10F3C00048B1000037002040E7B1010036980051F5
3902:10F3D00081300100D58D004081B2000034002E4103
3903:10F3E000F5B1010000110040E59901007E8E004852
3904:10F3F0001990000034002E41F5B1010000110040C9
3905:10F40000E59901000080000342C90100000000F8F6
3906:10F4100094B00100838E2245237C0000B0002FF0C1
3907:10F420008CB00100000060F08CC001009000004032
3908:10F430004399010035002DF08CB0010058003E4387
3909:10F44000E7E10100888E2248197C0000000000419D
3910:10F450008DC001000000680A8CC0010038002A4AF3
3911:10F46000E0B1010028000000E0C901003C00201BC1
3912:10F47000E0B101001080000342C90100000000F863
3913:10F4800038B00100000000F826B00100040022F8A6
3914:10F4900002300000968E2301146C0000000000F87A
3915:10F4A00080B00100000000F882B001004C0020F0A4
3916:10F4B000E4B1010044002040E0B1010048002041D7
3917:10F4C000E0B10100A8002D1032B00100399900F020
3918:10F4D000243001009F8EA244816C00009D8E224149
3919:10F4E000197C0000A09600403B300100C38EA208AA
3920:10F4F0003C3000009F8E004081B20000DD9500404E
3921:10F5000081320100C38EA2083C3000005000201C54
3922:10F51000E0B1010054002013E0B101004E002001D1
3923:10F52000E4B101004000200AE0B101003698005F1C
3924:10F5300081300100D58D004081B2000037000040CD
3925:10F54000479901007F9600F3943001007E8E224A95
3926:10F5500080320000AB8E004081B2000037000040D6
3927:10F56000479901007F9600F39430010058003E4314
3928:10F5700097E001000000001BF0B101001F006000D7
3929:10F58000008C0100D58D85118032000004800003BD
3930:10F5900042C90100B0002FF08CB00100000060F003
3931:10F5A0008CC001003698005F81300100D58D00408D
3932:10F5B00081B20000B58E004919800000BA8E224148
3933:10F5C000197C0000A09600403B300100BE8EA208CE
3934:10F5D0003C3000003698005F81300100D58D00403E
3935:10F5E00081B20000DD95004081320100BE8EA2088C
3936:10F5F0003C3000003698005F81300100D58D00401E
3937:10F6000081B2000050002D1032B0010054002DF0E6
3938:10F6100038B001004E002DF026B0010040002DF260
3939:10F6200002B00100000000F014B001003000001032
3940:10F630008CC801000080004644C9010068012D44C7
3941:10F6400061B10100100068F280C8010000000008EC
3942:10F65000F0B1010058010005E0C901000000000BF5
3943:10F6600037B001000000004036D001005C012E40A0
3944:10F6700010C001000000000680C001000000005220
3945:10F6800081D00100D18E2094816C0000CB97009432
3946:10F69000E5310100D28E004081B20000CB970040DE
3947:10F6A000E43101002000004662DD0100D28EA84056
3948:10F6B000233000000E00000F1E8C0100E28E8241FC
3949:10F6C000234000002080001042C90100DC8E22404F
3950:10F6D000E36D00000000004661B101004000001031
3951:10F6E00062DD0100D98EA840813200001B840088B1
3952:10F6F0001CB000000000001048B10100119600434A
3953:10F70000233001000000000548B101000000001096
3954:10F7100032B001000000004123B001000E00000FD4
3955:10F720001E8C01000080001944C90100EA8E2241AC
3956:10F73000197C0000E68EA3010C6C0000E78E000629
3957:10F7400004B000000000000104B00100E98E2002B6
3958:10F75000366C00000000001B04B00100ED8E0002BA
3959:10F76000F0B10000EC8EA3010C6C0000ED8E680679
3960:10F7700004B000000000680104B00100EF8E8008B2
3961:10F78000F0310000000000111E9001000000001C7C
3962:10F79000F0B101000000004661B10100011F001935
3963:10F7A00062DD0100F18EA813E0310000288F2202F3
3964:10F7B0001450000044002D020CD00100188FA2024A
3965:10F7C00002500000FF8E225C1F7C0000208000039E
3966:10F7D00042C90100FE8E2240E36D00000000004798
3967:10F7E00061B101004000001062DD0100FA8EA84006
3968:10F7F000813200001B8400881CB00000000000055E
3969:10F8000048B1010044002D5C1F80010048002DF02C
3970:10F8100038B001004C002DF026B0010038002FF266
3971:10F8200002B00100198F2201146C00000C8F2246D7
3972:10F830001F7C0000000000461F80010020002D03F7
3973:10F8400048B101000B8F2240E36D0000000000442E
3974:10F8500061B101004000001062DD0100088FA84086
3975:10F86000813200001B8400881CB0000038002F0586
3976:10F8700048B10100000000F894B0010038002DF0FC
3977:10F8800096B001000000004CE1C10100200000031F
3978:10F8900048C901000000224AF1B1010044000005FE
3979:10F8A000F0C901000000004AF0B101000000004B67
3980:10F8B000E0B101000000004761B10100A00000A418
3981:10F8C00062DD0100158FA85C1F100000198F000574
3982:10F8D00048B100000000000238C00100238F22065A
3983:10F8E000803200000000005033C00100218FA202CE
3984:10F8F000366C000004008F0D42310000100000F84B
3985:10F9000010C801000000005C11800100F0070040F9
3986:10F9100037980100D58E00A11AB000000000000247
3987:10F9200010C00100D58E000236D000005000201C0F
3988:10F93000E0B1010054002013E0B101004E002001AD
3989:10F94000E4B101004000200AE0B101002D8F005F0A
3990:10F9500001B0000037002D4601B00100040000F3A3
3991:10F9600080F401002C8FA043816C00000000005542
3992:10F9700001B0010040002040E1B101000080001909
3993:10F9800042C90100338F2240E36D000000000046B1
3994:10F9900061B101004000001962DD0100308FA84014
3995:10F9A000813200001B8400881CB0000011960010FA
3996:10F9B000483101003080001042C901003A8F2240D6
3997:10F9C000E36D00000000004461B101004000001040
3998:10F9D00062DD0100378FA840813200001B8400885F
3999:10F9E0001CB0000060012F0548B101000000000BB1
4000:10F9F000E4B101000000005017F001003F8F90F2C9
4001:10FA0000164000000000004117C001000000662001
4002:10FA100017A40100320000A62AC00100000000F275
4003:10FA20002A940100488F22491F7C000000000049F1
4004:10FA30001F8001000000004005B0010000F0000C34
4005:10FA4000188C01000B98004C95300100588F000075
4006:10FA500092B000004F8F2240AF6F000000C0001E28
4007:10FA600094DC01000000001596B001008898004069
4008:10FA7000053001004E8FA240976C0000618F004757
4009:10FA800019800000588F000092B000004F8F43484B
4010:10FA90006131000000D0001E62DD0100548F28405B
4011:10FAA00005300000508F2248777D0000578F0040BE
4012:10FAB00081B200000000001562B10100608F284093
4013:10FAC00081320000548F004081B2000000001B0012
4014:10FAD00092B001005D8F2241197C0000008000037C
4015:10FAE00042C90100E29500F8003001005A8FA2419E
4016:10FAF0003B500000618F004900B00000FF07001E6E
4017:10FB0000008C0100E295004081320100618F0049C4
4018:10FB100000B0000000001B4719800100648F225FC5
4019:10FB2000016C00006399004081320100B08A00003E
4020:10FB300080B000006B8F225C1F7C000020800003DF
4021:10FB400042C901006B8F2240E36D000000000047B6
4022:10FB500061B101004000001062DD0100688FA84023
4023:10FB6000813200001B8400881CB000006B8F4005B0
4024:10FB700048310000FFFF000794890100718F85CA9A
4025:10FB8000943000006399185C1F0001000E00000F04
4026:10FB90001E8C01007889004081B200003698180060
4027:10FBA00080300100D58D0047198000000000004022
4028:10FBB00019800100D58D2247197C0000DD95004099
4029:10FBC00081320100788FA20880320000D58D00407C
4030:10FBD00081B20000CB9700400D3001009C01004035
4031:10FBE00045990100FFFF000B988801008B002D5004
4032:10FBF00017F001007E8F904C16400000000000417D
4033:10FC000017C00100808F2243E77D00000000004400
4034:10FC100045C101000000662017A4010068010040F2
4035:10FC2000439901005C012EF280B001003E000040CB
4036:10FC300080CE0100878F2440813200000000004602
4037:10FC400081C00100888F0094E5B10000020062408D
4038:10FC50007ECD01000000005781C0010000002E1081
4039:10FC600048B1010003000040F08D010000000008D1
4040:10FC7000F0B1010058010005E0C901000000004496
4041:10FC800061B101000000001062B101008E8FA84038
4042:10FC9000813200001B8400881CB0000000000005B9
4043:10FCA00048B101009A8F2240AF6F00000040000869
4044:10FCB00094DC01008898004081320100988F224036
4045:10FCC000976C0000E295000800300100D58D0040DF
4046:10FCD00081B200000000004005B00100D58D004752
4047:10FCE000198000009A8F43486131000000500008DD
4048:10FCF00062DD0100A08F2840053000009B8F224864
4049:10FD0000777D0000E2951B0800300100D58D004092
4050:10FD100081B20000D58D1B471980000035000040DE
4051:10FD200047990100010063F384C80100A58FA04337
4052:10FD3000856C00000000634085B00100A800004011
4053:10FD40004399010037002FF024B00100010063F354
4054:10FD500082CC0100B08FA2419E060000D58D2244C6
4055:10FD600083700000360000404399010058003D4375
4056:10FD7000E7E10100D58D1FF0246C00006399004875
4057:10FD800081300100B08A2341836C0000B08A0047B3
4058:10FD900081B0000058003D4385E00100000000F8FC
4059:10FDA00036B00100000000F000B001002800004063
4060:10FDB0008398010004980047613101001B8400888A
4061:10FDC0001CB0000000002D0348B1010008002DF018
4062:10FDD00094B00100000000F88EB0010090002DF0FA
4063:10FDE00014B001000000000548B10100848EA2405B
4064:10FDF0008F7C0000BE8F22478F7C0000848E0048DD
4065:10FE0000199000002D90004081B2000036002D5D59
4066:10FE100005B4010037002DF380B00100000000F3AD
4067:10FE20008EB001005C003D4381E00100A8002DF090
4068:10FE300094B00100000000F024B001002000001088
4069:10FE400086DC01004080000344C90100E394004ABD
4070:10FE5000F031010036002F5C1F900100CC8FA250C2
4071:10FE60008F50000034002040E1B10100D58D0040EA
4072:10FE700081B200000000634181C00100CF8FA04328
4073:10FE8000816C00000000634081B001003700204712
4074:10FE9000E6B10100D58D2247803200000400004702
4075:10FEA0000CF401000000004F8F840100E48F224712
4076:10FEB0000C6C000058003D4381E00100E48F1FF00E
4077:10FEC000246C00000000005C1F8001000080001016
4078:10FED00042C90100DD8F2240E36D000000000045B3
4079:10FEE00061B101004000001062DD0100DA8FA8401E
4080:10FEF000813200001B8400881CB00000DD8F42406E
4081:10FF000005300000000000449393010000001A5DDA
4082:10FF100069930100E28F23410D6C0000BF8F000543
4083:10FF200048B100006399000548310100B08A0048DB
4084:10FF300081B00000D58D22408F6C00003698005FA4
4085:10FF400081300100D58D004081B20000A200004048
4086:10FF500043990100000000F384B00100A6002D4980
4087:10FF600019900100020000F280F40100B8002D4059
4088:10FF700081B20100000000F280C0010000000040DA
4089:10FF800082F801001900004081980100F38FA04021
4090:10FF9000826C00002C01004081980100F38FA34087
4091:10FFA000826C00000000004180B00100F58F204C01
4092:10FFB000856C00000000004185C0010086002040E3
4093:10FFC000E4B10100A2002042E6B10100D58D00405D
4094:10FFD00081B20000C597005081300100D58D0040EE
4095:10FFE00081B200000480000342C90100040022F035
4096:10FFF00080300000000000408DB0010055990040A5
4097:020000021000EC
4098:1000000087300100B0002F5C1F900100000060F0FD
4099:1000100080C001003698005F81300100D58D00401E
4100:1000200081B200000400004081B20000D58D22465C
4101:10003000197C0000A000004047990100010062F215
4102:1000400096CC0100D58DA640813200003698004A3A
4103:10005000813001000B98004695300100D58D00409D
4104:1000600081B20000D58D2249197C00008600004035
4105:1000700047990100010062F280CC0100D58DA640B5
4106:10008000813200003698004A813001000B98004709
4107:1000900095300100D58D004081B20000749500407C
4108:1000A00081320100D58D005C1F900000D58D00408D
4109:1000B00081B20000D58D004081B20000BA0000403E
4110:1000C00047990100010062F280C801001990904038
4111:1000D00080320000FFFF624081980100A4000040D0
4112:1000E00047990100D58D2240E56D0000D58D004176
4113:1000F000E5C10000C597004D81300100D58D00405D
4114:1001000081B200005C00004047990100040022F029
4115:100110009630000000000040E1B1010000800003C3
4116:1001200044C901000000004BE0B1010000000040A4
4117:100130008DB0010055990040873001008B000040D0
4118:1001400047990100299080F396300000000000409C
4119:10015000E78101000000004719900100D58D005C87
4120:100160001F9000003400004045990100010000404C
4121:10017000F599010000110040E5990100DD9500406E
4122:10018000813201003E90A20880320000370000401A
4123:1001900047990100000000F382B0010000006351A4
4124:1001A00083D001003400004047990100010063F34F
4125:1001B00084CC010036909F428032000000006342F0
4126:1001C00085B001000000004503F0010000000001BF
4127:1001D00000C001003890375C613100000000001B56
4128:1001E00062B101003990A84B191000000000000016
4129:1001F00062B101003B90A84081320000058A17409F
4130:1002000081B200000080000342C9010090002DF07F
4131:1002100094B00100AC002DF030B0010035002DF09D
4132:1002200028B0010058003E43E7E10100010000183A
4133:10023000F0C901000000004AE0B1010038002000D0
4134:10024000E0B101003C00201BE0B101004000204073
4135:10025000E1B10100000000402BB001001A980040FD
4136:100260000D3001000000001816C001004D90A014D0
4137:10027000164400000000004117C001000E0000A25B
4138:1002800044C9010000000018F8B10100B0002D14AD
4139:10029000F8B1010010500040879801005690224AA2
4140:1002A000197C00000030004386C801000030000BBC
4141:1002B00016C801005690A4408132000000000041A1
4142:1002C00017C0010001006E4386980100519800306C
4143:1002D000813001005A90A041174000000000004109
4144:1002E00017C001006190224A197C0000080000A29A
4145:1002F00044C90100CC002DABF9B10100000000ABF6
4146:1003000017C001006090A0F01644000000000041FA
4147:1003100017C00100000064F082B0010090000040AE
4148:10032000459901000000604131C00100BC0000405F
4149:10033000439901006790060C80320000A00020F273
4150:10034000E4B1010004000946191000009C010040BE
4151:1003500045990100FFFF000B988801008B002D508C
4152:1003600017F001006C90904C164000000000004116
4153:1003700017C001006E902243E77D0000000000449A
4154:1003800045C101000000662017A40100680100407B
4155:10039000439901005C012EF280B001003E00004054
4156:1003A00080CE01007590244081320000000000469C
4157:1003B00081C0010076900094E5B100000200624027
4158:1003C0007ECD01000000005781C0010000002E100A
4159:1003D00048B1010003000040F08D0100000000085A
4160:1003E000F0B1010058010005E0C90100000000441F
4161:1003F00061B101000000001062B101007C90A840D2
4162:10040000813200001B8400881CB000000000000541
4163:1004100048B1010086902240AF6F00000040000804
4164:1004200094DC010088980040813201008190A24054
4165:10043000976C000035000040479901008A90004009
4166:1004400005B000008690434861310000005000086C
4167:1004500062DD01008790A8400530000035001B4098
4168:1004600047990100010063F384C801008D90A04307
4169:10047000856C00000000634085B00100370000403B
4170:1004800047990100010063F382CC01008B0000401A
4171:100490004799010000000045E79101003698005F90
4172:1004A00081300100D58D004081B20000370000404E
4173:1004B000479901007F9600F3943001002D90224A65
4174:1004C00080320000AB8E004081B200003700004057
4175:1004D000479901007F9600F3943001007B8E224AF9
4176:1004E00080320000AB8E004081B200003600004038
4177:1004F00043990100000000FB12B001000F0000F35F
4178:1005000090880100040000F30CF40100A58E22067F
4179:10051000906C00005C003D4313E00100A8002DF04A
4180:1005200094B0010037002FF024B0010036002A50AB
4181:10053000E7D101000000634113C00100A790A04370
4182:10054000136C000000000040E7B10100E1940010CE
4183:10055000863001001B8400881CB00000A990420571
4184:10056000483100000000004493930100A58E1A5DFD
4185:100570006993000036002D1086B001005C003D43F9
4186:10058000E7E10100A8002DF094B0010035002FF044
4187:1005900024B0010001006BFB84C80100B490A043AB
4188:1005A000856C000035002040E7B1010000000040EC
4189:1005B00081B20100010063F312C80100B790A043AB
4190:1005C000136C000000000040E7B101004080000310
4191:1005D00044C90100E394004AF03101001B84008803
4192:1005E0001CB00000BA9042054831000000000044F1
4193:1005F0009393010000001A5D6993010037000040E9
4194:1006000047990100110063F382CC0100A98F2241B8
4195:100610009E060000350000404399010058003D430C
4196:10062000E7E10100000000F836B00100B38F00F0F0
4197:1006300000B000005E012D0548B10100C59047F2F1
4198:100640001230000000993F4213F00100CA90224787
4199:10065000E77D00006B841F881CB00000C490004040
4200:1006600081B2000000000047E791010000001F4236
4201:10067000199001007500004061990100CC90A8B16B
4202:100680000C3000005C970010943001001B8400883F
4203:100690001CB000005E012E0548B10100C0A83D4617
4204:1006A0000DE001000000004097B00100D69022400C
4205:1006B000E16D00000400024197400000D39000501B
4206:1006C00043C10000E290224B803200000000624BE8
4207:1006D000129401000900000796E40100000000A741
4208:1006E00097C001003000001094C801000080004A4B
4209:1006F0004499010000000042F1B101005E01004B8D
4210:10070000F0C901005E010005E0C9010000000044DD
4211:1007100061B101002000004A62DD0100E090A840C4
4212:10072000813200000080001044C901000000005028
4213:10073000F1B101000400000996E40100000068A87E
4214:1007400097C00100D4000005E0C90100000000448A
4215:1007500061B101000000001062B10100E890A84002
4216:10076000813200001B8400881CB0000000993F42C9
4217:1007700013F00100EC904740813200003F0000F38D
4218:100780009688010000000040E7B1010000001F55FD
4219:1007900061B101000000000662B10100F090A840C4
4220:1007A00081320000F590224B803200000000004BA7
4221:1007B00062B10100F390A840813200000000009770
4222:1007C00013B001000000009697B00100FB902009D3
4223:1007D000966C0000FB901F09962400006B84008833
4224:1007E0001CB00000F690004081B20000C597005791
4225:1007F00081300100C08D000548B100002E0000408E
4226:1008000043990100019122F380320000C597004214
4227:1008100081300100058A004081B200003698005204
4228:1008200081300100C08D004219800000C597003A58
4229:10083000813001003698005281300100C08D0040A7
4230:1008400081B200000000004005B00100DF960040CA
4231:1008500095300100C08D2240956C00000C91A240A3
4232:100860001F7C0000E295004081320100058A0040B3
4233:1008700081B200000480000342C90100000000F2C0
4234:1008800002B001008A960052953001009196004B0B
4235:1008900002B00000058A004081B200000A990040C1
4236:1008A000953001001891A208803200001891A2161C
4237:1008B00080320000058A2242197C00000000004BB3
4238:1008C00019900100C597003A81300100058A004067
4239:1008D00081B20000002300A616B001001B91831E08
4240:1008E000803200000008000B16DC01000000000050
4241:1008F0002AC001000E980008803001001F91005EA0
4242:10090000179000002F98004361310100EF940040E0
4243:100910008D300100169800071614010000800010A9
4244:1009200042C9010027912240E36D0000000000430E
4245:1009300061B101004000001062DD01002491A84077
4246:10094000813200001B8400881CB00000B797005E55
4247:1009500005100100E2950040813201002B9122092F
4248:10096000803000003698004013300100C58D00052E
4249:1009700048B100000F97004081320100C08D004057
4250:1009800081B200000000004A1F9001003291224312
4251:100990003D7C00000000004419900100000000436D
4252:1009A0003D800100339100421990000014002D4554
4253:1009B0001F9001008F91831E803200008F910044B0
4254:1009C00019900000D4950040813201004791A2089F
4255:1009D000803200004791A216803200004391A2426B
4256:1009E000197C00000082000204DC0100A098004095
4257:1009F00047990100E9890041893001004091A241F5
4258:100A0000197C0000E295004081320100058A004017
4259:100A100081B200008A960015943001009196004B37
4260:100A200002B00000058A004081B200000F9700402C
4261:100A3000813201000000004B19900100C597003A77
4262:100A400081300100058A004081B200004A912242B3
4263:100A5000197C00000F970040813201004B9100404B
4264:100A600081B20000DF96004081320100779122417F
4265:100A7000197C0000C000001598C801007791A00BF8
4266:100A8000996C00003000001080C801000080004018
4267:100A90004499010000000050F1B101000000000382
4268:100AA000F0B101000000004261B10100000000400F
4269:100AB00062B101005391A800E03100001B8400885E
4270:100AC0001CB000000000000548B10100C000001586
4271:100AD00098C8010030002E0B99D0010000006A5028
4272:100AE00099C00100C000620180CC01000C800003AD
4273:100AF00042C901002D002DF022B001000000004C81
4274:100B000080C001000000005C23800100D4003F4150
4275:100B1000E7E101000B000011E4F501002F00204780
4276:100B2000E7B501006491230B816C00000000004FC9
4277:100B3000E59101000000000880B001000000000BFA
4278:100B400003B001000000001502D001000E98000063
4279:100B50002A4001000000004361B101004000001084
4280:100B600062DD01006991A840813200001B84008889
4281:100B70001CB00000E295000548310100C0000001F2
4282:100B800080CE010075912611003000001000000099
4283:100B90002AC801000000000880B001000000000128
4284:100BA00080C00100C00000409998010000000001D1
4285:100BB00098D001000E98004C02300100C0000040A7
4286:100BC000039801007C91004081B2000030002F08A2
4287:100BD00080B00100C0000015F4C90100C000000190
4288:100BE000E4CD0100C0000040039801000E98000011
4289:100BF0002A400100819122441F7C0000AC002F405C
4290:100C000013B0010000000001E0C10100B00000408D
4291:100C10004799010082910001E0D10000EF9400406B
4292:100C20008D300100806300A616B001001698000701
4293:100C3000161401000080001042C901008A91224070
4294:100C4000E36D00000000004361B1010040000010AE
4295:100C500062DD01008791A840813200001B8400887A
4296:100C60001CB00000B797005E051001008D912209AD
4297:100C7000803000003698004081320100C08D0005B0
4298:100C800048B100008F91004A1F9000000000000052
4299:100C900010B0010024002D1510C0010028002DF017
4300:100CA00016B0010022002DF026B0010014002FF232
4301:100CB0000CB0010000000001E0D1010000000010B4
4302:100CC00032B001000000000B1BB0010004001F1532
4303:100CD0001A5000000000004023B001000000000195
4304:100CE0002AB001007197004035B000002F0020406D
4305:100CF000E7B10100D391A2451F7C00002400200B26
4306:100D0000E0B1010028002013E0B10100220020061C
4307:100D1000E4B10100A991225C1F7C00000000005C8E
4308:100D20001F8001003080001042C90100A9912240BB
4309:100D3000E36D00000000004761B1010040000010B9
4310:100D400062DD0100A591A840813200001B8400886B
4311:100D50001CB000000000000548B10100008000192F
4312:100D600042C90100CC912240E36D0000BA912242B9
4313:100D7000197C0000379700408132010089950040BE
4314:100D800081320100C791224B8032000000000043F5
4315:100D900061B101004000001062DD0100B091A84087
4316:100DA000813200001B8400881CB00000B6912241F3
4317:100DB000197C0000F895004011300100B791000542
4318:100DC00048B10000E295004081320100B99122094A
4319:100DD0008030000036980040813201006F8400406E
4320:100DE00005B0000037970040813201008595004032
4321:100DF000813201000000004361B101004000001099
4322:100E000062DD0100BD91A840813200001B84008892
4323:100E10001CB00000C3912241197C0000F8950040ED
4324:100E200011300100C491000548B10000E295004076
4325:100E300081320100C69122098030000036980040BE
4326:100E4000813201006F84004005B0000000000043C3
4327:100E500061B101004000001062DD0100C891A840AE
4328:100E6000813200001B8400881CB0000000000005D7
4329:100E700048B10100CF912241197C0000F895004053
4330:100E800011300100D091000548B10000E29500400A
4331:100E900081320100D2912209803000003698004052
4332:100EA00013300100C58D004005B00000008000191E
4333:100EB00042C90100DA912240E36D000000000043C6
4334:100EC00061B101004000001062DD0100D691A84030
4335:100ED000813200001B8400881CB000000000000567
4336:100EE00048B101000000004005B00100DE91224140
4337:100EF000197C0000F895004011300100DF910005D9
4338:100F000048B10000E29500408132010008002D0A3E
4339:100F100084B00100000000F082B001001400204005
4340:100F2000E1B10100E491031E80320000E59100412F
4341:100F300087B0000021000040879801000097004022
4342:100F4000813201000000005C1F900100E99122093C
4343:100F5000803000003698004013300100EC912244AC
4344:100F6000197C00003698004F8130010000000044D9
4345:100F700019800100C08DA24A1F7C0000C58D004071
4346:100F800081B20000BA002040E5B10100F2919C1747
4347:100F900080320000CC0000404399010013990040CA
4348:100FA00081320100A398004013300100C0000040CE
4349:100FB00043990100C4002DF082B00100EE9800F0CA
4350:100FC00084300100E295004081320100C58D220984
4351:100FD000803000003698004013300100C58D00407D
4352:100FE00081B200002E00004043990100FE91224092
4353:100FF000E76D000032000040439901000692A240D4
4354:10100000E56D0000CC960040813201002400200BE9
4355:10101000E0B1010028002013E0B101002200200609
4356:10102000E4B101001400200AE0B10100C58D2209DD
4357:10103000803000003698004013300100C58D00401C
4358:1010400081B20000CC9600408132010085960040BC
4359:101050008132010014922241197C00000000000B33
4360:1010600099B0010004001F1598500000149220014F
4361:10107000986C00007000000348C9010000002E4673
4362:101080001F90010000000050F1B1010000000003BA
4363:10109000F0B101000000004261B10100A00000A415
4364:1010A00062DD01001192A800E0310000000000059F
4365:1010B00048B10100AC002F0010B001000000000199
4366:1010C000E0C1010014002F1510C001000000000A4B
4367:1010D00080B001000000600180D0010000000047E6
4368:1010E000199001009691220980320000369800097B
4369:1010F000803001009691004013B000000080000392
4370:1011000042C90100000000F082B00100130000405D
4371:10111000879801000000004C43C10100009700F0D7
4372:1011200084300100C08D005C1F9000002C00204026
4373:10113000E7B101002D002040E7B10100C08D004261
4374:1011400019800000F2960040813201000B9800489F
4375:10115000953001000000004561B101004000001021
4376:1011600062DD01002992A840133000001B84008832
4377:101170001CB000002F92000548B100002E920040E4
4378:1011800013B000000000000012B001000800004091
4379:101190004399010014002DF082B00100040022F0F8
4380:1011A0008430000013000040879801000097004041
4381:1011B000813201000000005C1F900100479200098D
4382:1011C00000B00000C08D8742191000008B002F472F
4383:1011D00019800100C08D0040E79100002F00004001
4384:1011E0004799010045922247E77D0000669500403F
4385:1011F000E731010045922200803200004092A24077
4386:101200001F7C0000E29500408132010045920040C1
4387:1012100081B20000300000404399010032002DF2FD
4388:1012200094B001008A9600F2023001009196004BC2
4389:1012300002B000000000000548B1010046920040E5
4390:1012400001B000000000004005B001004C922200F7
4391:10125000803200004B92A242197C0000DF960040D1
4392:10126000813201004C92004081B200000F97004093
4393:1012700081320100D892225C1F7C00000000005CDB
4394:101280001F8001000080001042C9010054922240DA
4395:10129000E36D00000000004561B101004000001056
4396:1012A00062DD01005192A840813200001B84008859
4397:1012B0001CB00000D892000548B10000D495004051
4398:1012C000813201005B92A208803200005B92A2167C
4399:1012D00080320000C597004D81300100008200027D
4400:1012E00004DC0100058A004081B200007400004067
4401:1012F00043990100000000F882B00100000000F0F6
4402:1013000084B001000000004196B0010069922242C1
4403:10131000961400000080001044C901006400684079
4404:101320009798010000000041F0B101000000004268
4405:10133000F0B1010070000005E0C9010000000045A7
4406:1013400061B101002000001062DD01006692A8403A
4407:10135000813200000000005C1F9001000000004589
4408:1013600061B101004000001062DD01006A92A85CDA
4409:101370001F0000001B8400881CB000005E012D05CA
4410:1013800048B101006E9247F21230000000993F42CE
4411:1013900013F0010073922247E77D00006B841F88E1
4412:1013A0001CB000006D92004081B2000000000047B8
4413:1013B000E791010004001F0996E40100008000107D
4414:1013C00044C9010000000044F1B10100000068A818
4415:1013D00097C0010000000003E0B10100008000039D
4416:1013E000449901000000004461B1010000000010B8
4417:1013F00062B101007B92A840E13100001B840088AB
4418:101400001CB0000000993F4213F001007F92470595
4419:10141000483100003F0000F39688010000000040C2
4420:10142000E7B1010000001F4081B201008792224B0A
4421:10143000803200000000005561B101000000004B47
4422:1014400062B101008592A8408132000000000007CF
4423:1014500016B001000062000B16DC0100669500402A
4424:10146000813201009F922200803200001597005FB8
4425:101470000110010089922240956C0000008000104C
4426:1014800044C9010000000050F1B101000000000358
4427:10149000F0B101000000004261B101000000001045
4428:1014A00062B101009192A800E03100001B84008825
4429:1014B0001CB000000000000548B1010004800003DA
4430:1014C00042C90100000000F202B001008A960052F9
4431:1014D00095300100E295004081320100899222415D
4432:1014E000975000000C80000342C90100000000F08A
4433:1014F00000B001000000005C018001009196004BEB
4434:1015000002B000008992000548B100001698004022
4435:10151000033001001780000344C9010000F0000CF3
4436:10152000968801000000634C97F0010010800003D2
4437:1015300044C90100000000ABE1B10100B797005EB3
4438:1015400005100100030000071AF40100070000075E
4439:101550001688010000B5000D46C90100A99230406F
4440:10156000813200000000000BE681010000B7000D91
4441:1015700046C901000000000BE68101001000100FB9
4442:1015800094F40100E999005F950401006B96004016
4443:1015900081320100B3922250FD7F0000B19243409E
4444:1015A0008132000000001B4131D3010000002E05F4
4445:1015B00048B1010000000040E1B10100000000401E
4446:1015C0000FB00100CD95004181300100058A004037
4447:1015D00081B20000D495004081320100C592A2087A
4448:1015E00080320000C592A216803200000082000204
4449:1015F00004DC01000000004503F0010000000001D0
4450:1016000000C00100BE92375C613100000000001B89
4451:1016100062B10100C292284081320000BF920040B6
4452:1016200081B200000000000062B10100C292A84037
4453:1016300081320000058A174081B200007400224008
4454:10164000F1B1010000000040E1B101000B98004A37
4455:1016500095300100F296005C1F1001005B92004083
4456:1016600081B200002F00004047990100D692224726
4457:10167000E77D000066950040E7310100D692220028
4458:1016800080320000D192A2401F7C0000E295004011
4459:1016900081320100D692004081B20000300000404B
4460:1016A0004399010032002DF294B001008A9600F2B5
4461:1016B000023001009196004B02B0000000000005CE
4462:1016C00048B101000B98004895300100F296005C8B
4463:1016D0001F100100DB928742191000008B002F477A
4464:1016E0001980010000000040E79101003698004297
4465:1016F00081300100C08D004081B20000F2960040B0
4466:1017000081320100C08D005C1F900000BA002040B3
4467:10171000E5B10100A398004081320100C000004003
4468:1017200043990100C4002DF082B00100EE9800F052
4469:1017300084300100E2950040813201003698004576
4470:1017400081300100C08D2242197C0000C597003A0B
4471:1017500081300100C08D004081B2000004000040D3
4472:1017600081B20000D495004081320100F092A208BD
4473:1017700080320000F092A21680320000C597004728
4474:10178000803001000082000204DC0100058A004074
4475:1017900081B200001080000344C9010000E100A6EE
4476:1017A00084B0010000000040F1B1010000000040E1
4477:1017B000F1B101000000600784940100B797005E5A
4478:1017C00005100100C08D004081B200008A00004079
4479:1017D00047990100E2950041E7410100C58D0040B5
4480:1017E00081B20000CC960040813201008596004015
4481:1017F00081320100000000012CB001000000001542
4482:1018000010B001000000000010C0010004001F0A19
4483:101810002C5000000000001032B001000700000B47
4484:10182000968801000C932647972400000000004191
4485:1018300097C001000C93234B0C6C00004998004B9F
4486:10184000043001000000005033C00100000000021D
4487:1018500010C001000000000216C0010000000006D8
4488:1018600004B001004998004B045001000D93004062
4489:1018700081B2000049980006043001001393A24889
4490:101880001F7C0000119384481F100000AC00004032
4491:10189000479901001393000AE0C100000000000A0C
4492:1018A00002B00100EF9400018C3001000000004301
4493:1018B00061B101004000001062DD01001493A840F6
4494:1018C000813200001B8400881CB00000000000056D
4495:1018D00048B101000000000210C00100219322065F
4496:1018E000145000003A9700451F0001000093225C4D
4497:1018F0001F7C00000000004761B1010040000010A3
4498:1019000062DD01001D93A85C1F0000001B8400889D
4499:101910001CB000000093000548B100000000000B5F
4500:101920001BB0010008002D4085B00100000000F050
4501:1019300082B001000000004005B0010000970041A6
4502:10194000873001000000004561B101004000001037
4503:1019500062DD01002793A840813200001B840088CB
4504:101960001CB000000000000548B101002D932209C1
4505:10197000803000003698004013300100319322443B
4506:10198000197C00003698004F813001003193A24746
4507:101990001F7C00000000004419800100FF070008C0
4508:1019A000008C01003F93224A1F7C00003793A2164F
4509:1019B00002300000E2950040813201002F002040FB
4510:1019C000E7B10100C08D004081B200002D002D085C
4511:1019D0002AB001003B932242197C00000F9700407F
4512:1019E000813201003C93004081B20000DF9600404C
4513:1019F0008132010030002E002AD0010032002A1569
4514:101A0000E4B10100C08D0016E4B10000529322162B
4515:101A100002300000000000082AB001000A990040CE
4516:101A2000953001004493A240116C00005393224072
4517:101A30002D6C0000AC00004047990100B0002B0164
4518:101A4000E0C10100002B00A616B00100000000015B
4519:101A5000E0D101000E980008803001004B93005E39
4520:101A6000179000002F9800436131010000000043EF
4521:101A700061B101004000001062DD01004C93A840FC
4522:101A8000813200001B8400881CB0000000000005AB
4523:101A900048B101001698000716140100B797005EC0
4524:101AA00005100100E2950040813201002F00204026
4525:101AB000E7B10100C58D004081B200000000000BBD
4526:101AC0001BB0010004001F151A500000609320167F
4527:101AD0001A6C00007000000348C901000000225089
4528:101AE000F1B1010000000003F0B1010000000000AE
4529:101AF000E0B101000000004261B10100A00000A4BB
4530:101B000062DD01005D93A8461F1000000000000583
4531:101B100048B101000000000010B0010000000015F5
4532:101B200010C001000000000A2AB001000000000AF5
4533:101B30002CD00100AC002F4023B0010067938445F6
4534:101B40001F1000006893000AE0C100000000000AB6
4535:101B500002B001007197004035B00000008000190C
4536:101B600042C9010070932240E36D00000000004371
4537:101B700061B101004000001062DD01006C93A840DB
4538:101B8000813200001B8400881CB0000000000005AA
4539:101B900048B101008093A2021A50000081932240B4
4540:101BA0002D6C00000080001044C9010000000050AE
4541:101BB000F1B1010000000003F0B10100FF070008CF
4542:101BC000E08D01000000004261B101000000001042
4543:101BD00062B101007793A840813200001B84008825
4544:101BE0001CB000000000000548B101002F00204794
4545:101BF000E7B501000C80000342C90100100000F0AD
4546:101C000010C80100F00700401B9801008193005CA0
4547:101C1000118000000000000210C00100F895004093
4548:101C20001F0001000000000548B101008593230D4D
4549:101C30002C6C0000000000401F9001008E93224693
4550:101C40001F7C0000000000461F8001007080000320
4551:101C500042C901008E932240E36D00000000004263
4552:101C600061B101004000001062DD01008A93A840CC
4553:101C7000813200001B8400881CB0000000000005B9
4554:101C800048B1010008002D4085B00100000000F0BF
4555:101C900082B001000000004005B001000097004143
4556:101CA000873001000000004561B1010040000010D4
4557:101CB00062DD01009393A840813200001B840088FC
4558:101CC0001CB000000000000548B1010099932209F2
4559:101CD0008030000036980040133001009D9322446C
4560:101CE000197C00003698004F813001009D93A24777
4561:101CF0001F7C00000000004419800100FF0700085D
4562:101D0000008C0100B293224A1F7C0000A393A2160C
4563:101D100002300000E2950040813201002F00204097
4564:101D2000E7B10100C08D004081B200002D002D08F8
4565:101D30002AB00100AE932242197C0000A793A2F3BF
4566:101D400084300000000000A585B0010000000041C3
4567:101D500085D00100D4003E4185E00100AB932240D4
4568:101D60001F7C00000000005A119001000B000008C9
4569:101D7000E4F501000F97004081320100AF9300406D
4570:101D800081B20000DF9600408132010030002E0059
4571:101D90002AD0010032002A15E4B10100C08D0016DE
4572:101DA000E4B10000B593A21602300000E2950040B5
4573:101DB000813201000494004081B200002D002D0802
4574:101DC0002AB00100C39322471F7C0000BF93224228
4575:101DD000197C0000BA93A2F384300000000000A533
4576:101DE00085B001000000004185D00100D4003E41D3
4577:101DF00085E00100BE9322401F7C00000000005AD5
4578:101E0000119001000B000008E4F5010058012D00BD
4579:101E10002AD0010060012DF010B00100000000F098
4580:101E20002CB001004791004081B200000A990041A6
4581:101E300095300100CB93A20880320000CB93A2160C
4582:101E4000803200000000004197B00100C993230DCB
4583:101E5000026C00000000004197C001009196004B09
4584:101E600002B000000494000548B10000AC002F014E
4585:101E700014B00100B0002B01E0C10100002B00A64E
4586:101E800016B0010000000001E0D10100DB93230D3A
4587:101E9000026C00000080001044C9010000000050E6
4588:101EA000F1B1010000000003F0B1010000000042A8
4589:101EB00061B101000000001062B10100D493A800DC
4590:101EC000E03100001B8400881CB000000000000509
4591:101ED00048B101000C80000342C90100100000F06D
4592:101EE00022C801000000005C238001000000000106
4593:101EF00084B00100DE93230D026C00000000000D91
4594:101F000002B001000000000880B00100E39322400D
4595:101F10001B6C00000E98000184500100EB932240DE
4596:101F2000856C00000000000180C0010010800010DE
4597:101F300046C901000000004F43810100000000423B
4598:101F4000F0B1010020000040F0C9010000000016BF
4599:101F5000F0B101000000004361B10100A00000A148
4600:101F600062DD0100E993A811E0310000FA93005E00
4601:101F700017900000EE93230D026C00000000000D8E
4602:101F800002B001000000000184D00100F393224060
4603:101F90001B6C00002F98004361310100FA9322402E
4604:101FA000856C00000000000112C0010010800010CC
4605:101FB00046C901000000004F4381010000000042BB
4606:101FC000F0B1010000000009F0B1010000000018AC
4607:101FD000F0B10100A00000A162DD0100F893A8119A
4608:101FE000E03100000000004361B10100400000103A
4609:101FF00062DD0100FB93A80A023000001B84008808
4610:102000001CB00000E2950005483101000294230D48
4611:10201000026C0000FF070011008C0100E2950040F7
4612:10202000813201001698000716140100B797005E70
4613:10203000051001002F002040E7B10100C58D0040D0
4614:1020400081B200000080000342C90100000000F8D6
4615:1020500082B00100000000F88CB00100000000F028
4616:102060008EB00100C996004013300100000000400E
4617:1020700085B001000097004187300100859600403F
4618:10208000813201000080001042C9010015942240F5
4619:10209000E36D00000000004561B101004000001048
4620:1020A00062DD01001194A840813200001B84008889
4621:1020B0001CB000000000000548B10100179422097F
4622:1020C0008030000036980040133001000000000B03
4623:1020D0001BB00100000000151AD001001E94A2419F
4624:1020E000197C00000A99004095300100000000169C
4625:1020F00080B201002794270880320000449300003A
4626:102100002AC000000A990041953001000000001625
4627:1021100080B201002294270880320000CB93000097
4628:102120002AC000000000004197B001002594230D53
4629:10213000026C00000000004197C001009196004B26
4630:1021400002B000000000000548B10100C08D22422D
4631:10215000197C0000C597003A81300100C08D004015
4632:1021600081B200002B94004A1F9000000A960000E4
4633:10217000103001000000001510C001000000001028
4634:1021800032B001000700000B968801003994264701
4635:10219000972400000000004197C001003994234BB0
4636:1021A0000C6C00004998004B043001000000005006
4637:1021B00033C001000000000210C001000000000256
4638:1021C00016C001000000000604B001004998004B51
4639:1021D000045001003A94004081B200004998000682
4640:1021E000043001003F94A2441F7C00000000000B5B
4641:1021F0001BB001000000000A2CD001000000000A02
4642:1022000002B00100EF9400018C3001000080001941
4643:1022100042C9010046942240E36D000000000043E3
4644:1022200061B101004000001062DD01004294A8404D
4645:10223000813200001B8400881CB0000000000005F3
4646:1022400048B101000000000210C001004F942206B6
4647:10225000145000003A9700451F0001002D94225CA5
4648:102260001F7C00000000004761B101004000001029
4649:1022700062DD01004B94A85C1F0000001B840088F5
4650:102280001CB000002D94000548B1000008002D404E
4651:1022900085B00100000000F082B0010000000040A5
4652:1022A00005B00100009700418730010000000045A3
4653:1022B00061B101004000001062DD01005494A840AB
4654:1022C000813200001B8400881CB000000000000563
4655:1022D00048B101005A94220980300000369800402D
4656:1022E000133001005D942244197C00003698004FA1
4657:1022F000813001000000004419800100FF07000840
4658:10230000008C01006B94224A1F7C00006394A2168B
4659:1023100002300000E2950040813201002F00204091
4660:10232000E7B10100C08D004081B200002D002D08F2
4661:102330002AB0010067942242197C00000F970040E8
4662:10234000813201006894004081B20000DF960040B5
4663:102350008132010030002E002AD0010032002A15FF
4664:10236000E4B10100C08D0016E4B100004093A21654
4665:1023700002300000E2950040813201002F00204031
4666:10238000E7B10100C58D004081B200000A96004A05
4667:102390001F1001005593001032B000008A00204049
4668:1023A000E7B101007594A241197C0000E29500405C
4669:1023B000813201007894004081B200008A960015B5
4670:1023C000943001009196004B02B00000000000051F
4671:1023D00048B101007A942242197C0000C597003A66
4672:1023E000813001003698004581300100C08D0040E9
4673:1023F00081B20000069200451F900000CC9600407C
4674:102400008132010085960040813201005593000120
4675:102410002CB00000D4950040813201008D94A208B8
4676:10242000803200008D94A2168032000000820002EB
4677:1024300004DC01000000004503F001000000000181
4678:1024400000C001008694375C613100000000001B71
4679:1024500062B101008A9428408132000087940040D4
4680:1024600081B200000000000062B101008A94A8401F
4681:1024700081320000058A174081B20000580120080F
4682:10248000E0B1010060012016E0B10100CC960047E8
4683:102490001F10010085960040813201005593000114
4684:1024A0002CB00000D49500471F100100A094A20892
4685:1024B00080320000A094A216803200009C94A242B8
4686:1024C000197C00000082000204DC0100A09800409A
4687:1024D00047990100E9890041893001008A96001579
4688:1024E000943001009196004B02B00000058A004034
4689:1024F00081B200000F970040813201000000004BC4
4690:1025000019900100C597003A81300100058A00400A
4691:1025100081B2000058012008E0B1010060012016DE
4692:10252000E0B101000A9600103230010055930040DE
4693:1025300013B00000D495004081320100B194A2088C
4694:1025400080320000B194A2168032000000820002A6
4695:1025500004DC01000000004503F001000000000160
4696:1025600000C00100AA94375C613100000000001B2C
4697:1025700062B10100AE94284081320000AB9400406B
4698:1025800081B200000000000062B10100AE94A840DA
4699:1025900081320000058A174081B2000000800003EC
4700:1025A00042C90100000000F882B00100000000F8FC
4701:1025B0008CB00100000000F08EB00100C996004010
4702:1025C000133001000000004085B001000097004179
4703:1025D00087300100859600408132010000800010A4
4704:1025E00042C90100C0942240E36D00000000004594
4705:1025F00061B101004000001062DD0100BC94A84000
4706:10260000813200001B8400881CB00000000000051F
4707:1026100048B10100479122098030000036980040FF
4708:10262000133001004791004081B2000014002D4595
4709:102630001F9001008F91004419900000C894A2419E
4710:10264000197C00000000004A1F900100FA9200402F
4711:1026500081B20000CC96004A1F1001008596004010
4712:1026600081320100559300012CB000000A96004011
4713:10267000813201005593001032B0000006920045EF
4714:102680001F9000000000004137C30100000000411E
4715:1026900033C301003600000102CC01000000D2402B
4716:1026A00081B20000D49485178032000000009F485A
4717:1026B00003D00000D6949C178032000000009F4C8D
4718:1026C00003D000000000800134C3010002002D117E
4719:1026D00010C10000DB94004043C10000DB940050B7
4720:1026E00043C10000200000A142C90100DF94224044
4721:1026F000E56D00000400A240E57D00000000004000
4722:1027000023B00100000080491F9001000000A24199
4723:1027100023D00000DB94005043D100004080000330
4724:1027200044C901000000004AF0B10100000000406F
4725:10273000F1B1010000000012F0B10100E695004186
4726:10274000E13101000080004344C901001000004055
4727:10275000F199010000000048F0B1010000000049BB
4728:10276000F0B1010040000003E0C901000000004595
4729:1027700061B101000000004362B101000000A84007
4730:1027800081B20000EC94004081B20000BA00204009
4731:10279000E5B10100B0002F018CD00100000000461F
4732:1027A000E0C10100AC002F4013B00100CC002D01AE
4733:1027B000E0C10100F6949C1780320000139900409C
4734:1027C00081320100F8942247197C00000000005F6C
4735:1027D00013900100A398004719100100C0002D4478
4736:1027E0001F900100C4002DF082B00100EE9800F0AF
4737:1027F00084B0000090002D0548B101000D95A24B5A
4738:102800001F7C00006095A24C1F7C00000D951F1CD2
4739:10281000E06D00001095A20180320000A8002D4656
4740:102820008FB0010006951F1CE06D0000B400004051
4741:1028300043990100089522F03A6C00005D951FF065
4742:102840003A6C00000000A24080B200000000804FFF
4743:102850008FB001008A000040439901005E9520423C
4744:10286000E76D00000C952240803200000000805986
4745:102870008FB00100000080588FB001000F952240FA
4746:10288000803200000000805C8FB001000000805B9F
4747:102890008FB00100AC00004043990100B0002DF062
4748:1028A00084B001001495A242246C00001D9523F011
4749:1028B000026C00001A95A2F0803200005F95A242DF
4750:1028C000246C00005F95A241036C00001995A240A2
4751:1028D00080320000000080518FB001000000805263
4752:1028E0008FB001005F951F12845000005F95A0011A
4753:1028F000846C00000D95004081B200008B00004008
4754:10290000439901004895A246E77D0000140000406D
4755:10291000439901003A9522F0143000002695200AD0
4756:10292000026C00003795031E803200002595A240FE
4757:1029300080320000000080448FB001000000804918
4758:102940008FB001002B95220A026C00002E95A24147
4759:10295000197C00002A95A2408032000000008055BA
4760:102960008FB00100000080568FB001002D95A2406D
4761:1029700080320000000080438FB0010000008048DA
4762:102980008FB001000000000182B001000000000AC9
4763:1029900082D0010034952091836C00003395A240D1
4764:1029A00080320000260080408F9801002700804080
4765:1029B0008F9801003695A240803200001F008040B1
4766:1029C0008F980100200080408F9801003995A24027
4767:1029D00080320000220080408F9801002300804058
4768:1029E0008F98010088002D448FB001004395A241CB
4769:1029F000197C00004095A2433D7C00004095A2F266
4770:102A0000026C00000000A24080B20000000080497B
4771:102A10008FB001004295A240803200000000804348
4772:102A20008FB00100000080488FB001004095A09158
4773:102A3000036C00003E9522433D7C00004795A24078
4774:102A400080320000280080408F98010029008040DB
4775:102A50008F98010014000040439901005195A2F0A5
4776:102A60001430000088002D448FB001004E95A2F272
4777:102A7000026C00000000A24080B20000000080490B
4778:102A80008FB0010040952241197C00003E952091B5
4779:102A9000036C00004095004081B200005595200A6B
4780:102AA000026C00005495A240803200000000804477
4781:102AB0008FB00100000080498FB001005A95220AB2
4782:102AC000026C00002E95A241197C00005995A2408D
4783:102AD00080320000000080558FB001000000805659
4784:102AE0008FB001005C95A24080320000000080435E
4785:102AF0008FB00100000080488FB001006295004354
4786:102B000095B000006295004195B0000062950042CA
4787:102B100095B000006295004495B000006295004CAD
4788:102B200095B000000B980040813201006595A240ED
4789:102B3000803200000000804B8FB001000000804C0C
4790:102B40008FB001002D000040439901002E002FF3AB
4791:102B500084B001006A95A2F3963000000000804026
4792:102B600001B001002D002A41E7D10100D4003D4110
4793:102B700085E001000B0000F200E401007095225A8C
4794:102B8000017C0000000000401F9001007195005A78
4795:102B900001800000000000401F8001000000634130
4796:102BA00085C001000000A0A5856C01000000E34085
4797:102BB00085B001000C80000342C9010012000040F2
4798:102BC00087980100559900F08CB000007E95224056
4799:102BD0000F6C000000002F0548B101007B95A24B4F
4800:102BE000197C00007C9522F0186C00000000604BFE
4801:102BF0001990010048960007103001006F840040D2
4802:102C000005B000008095225A1F7C0000CD95004041
4803:102C1000813001006F84004005B0000000002F05E6
4804:102C200048B101000000604B199001004896000770
4805:102C3000103001006F84004005B0000000002F0537
4806:102C400048B101000000604B199001004896000750
4807:102C5000103001000000804005B00100899533402C
4808:102C6000813200008C95A1AD952000009A9513400B
4809:102C700081B200000000134A5A8301003000394538
4810:102C800095E001001F00000F5ED801000000005A0F
4811:102C90005F9001000000004045B00100000000040A
4812:102CA00048B00100000000054AB001000000000C1F
4813:102CB00058B00100000000074EB001001886004027
4814:102CC0005D9801000000005861B101000000004A59
4815:102CD00062B101000000A84197B000009795004044
4816:102CE00081B200000000804097B001009B9544072E
4817:102CF00096300000FFFF004B8489010000001CC2D9
4818:102D000024B00100A595A245257C00009F953120A7
4819:102D100085300000A6952212487F000067981112A6
4820:102D2000480301001000001296E401000000004B6F
4821:102D30001E9401000000805A1F900100A5953140AB
4822:102D400081320000000000B424B00100A6952212D8
4823:102D5000487F0000679800408132010000002F0585
4824:102D600048B10100B3950BF084300000000011124F
4825:102D700048830100B0952250857000005E0100403C
4826:102D800043990100679700F296300100E99900121B
4827:102D9000943001000000005A1F9001001000001242
4828:102DA00096E401000000804B1E94010010000042D8
4829:102DB00010F4010000B73F4311F0010007000008C4
4830:102DC0008A880100B69530A10C300000B9952245E3
4831:102DD000E67D0000A695104081B2000000002A4563
4832:102DE000E69101000000101248830100000011402C
4833:102DF00081B201000000604B858001005E0100404F
4834:102E000043990100679700F296300100008000109E
4835:102E100044C90100D8000040819801002E002D0512
4836:102E200048B10100C4952240E76D000080000040D9
4837:102E300080C8010000000040F0B101000900000856
4838:102E400086E40100000068A787C00100000000447C
4839:102E500061B101000000001062B10100C895A80531
4840:102E6000E03100001000001296E401000014004B55
4841:102E700096DC01000000804B1E9401001000000F42
4842:102E800084F401001F00004284880100D195224093
4843:102E900080320000D295004268B10000000000427C
4844:102EA0006AB10100D295315A1F0000000000914222
4845:102EB00048930100D4953540813200006D000040F8
4846:102EC00061990100DA9528B12C300000D595224D8A
4847:102ED000757D0000000000402DB00100000095400D
4848:102EE00011B001006D00004061990100DA95A8B1B0
4849:102EF000103000000000954081B201007F000040CA
4850:102F000061990100E19528B110300000DD959FBA6C
4851:102F1000803200000000804011B0010000008024D9
4852:102F2000118401000000005F61B101000010000089
4853:102F300062DD01000000A84081B20000E39500407E
4854:102F400081B20000AC94004047990100E7953240FF
4855:102F500081320000ED9522F896300000000000F864
4856:102F600090B00100000000F092B001000100004BA1
4857:102F7000F0CD010020009248E0C901006C00004043
4858:102F800061990100F19528B192300000ED95224C35
4859:102F9000757D00000400124091B000006C000040FC
4860:102FA00061990100F195A8B190300000FF00004840
4861:102FB000968801000000004B90D001000100004BFA
4862:102FC000F0CD010020000048F0C901000000924946
4863:102FD000E0B101000C002D1048B10100FF0700080E
4864:102FE000828C0100FF0700F0008C01000000A2416C
4865:102FF00000EC0000FE95221A006C0000E295000033
4866:10300000343001000000005049C10100FA95A2418E
4867:10301000235000000000804081B201000C002D1000
4868:1030200048B10100FF070015828C0100FF0700F086
4869:10303000008C01000000A24100EC00000796220D68
4870:10304000006C0000E29500001A3001000000005002
4871:1030500049C101000396A2412350000000008040B6
4872:1030600081B201000C96831E8032000000000044F3
4873:103070001990010024002D012CB0010028002DF032
4874:1030800016B0010022002DF026B0010014002FF22E
4875:103090000CB0010000008040E1B1010002002D11E0
4876:1030A00010C100001596004043C100001596005065
4877:1030B00043C10000200000A142C901001A9622402D
4878:1030C000F56D00000000004243D101000400A24061
4879:1030D000E57D00000000004023B0010000008049B1
4880:1030E0001F9001001D9622111E7C00001F96A0F06B
4881:1030F000164000001F96004117C000001F96A0F464
4882:10310000164000000000004117C001000000A2416D
4883:1031100023D000001596005243D1000000B5000DE9
4884:1031200042C9010022963047170400002596A20BE1
4885:10313000E67D00000000904281B0010000B7000D64
4886:1031400046C901002996A20BE67D00000000000B95
4887:10315000E69101000000904181B0010000001040A4
4888:1031600081B201002A96400796300000F399004092
4889:10317000813201003496A245957C000001973F41C1
4890:1031800095E00100000000F396B001000000004E41
4891:10319000E6B1010040973E4097E001000000004E7C
4892:1031A000E6B1010040973E409DE001004796003B9C
4893:1031B000E7B1000034963040813200003E96A20B09
4894:1031C000E67D000000B5000D46C901003A96A20B4D
4895:1031D000E67D00000000104081B20100000098422E
4896:1031E00081B0010000B7000D46C901000000000BCE
4897:1031F000E69101000000104081B2010000009841FA
4898:1032000081B00100040021A2952000000000104AB6
4899:103210004483010000973E4195E001000000004E0C
4900:10322000F6B101000000004EE6B1010040973E40BB
4901:103230009DE001000000003BE7B101000000004AF2
4902:1032400090B10100FFFF0007928901000000984043
4903:1032500081B001000300000886F4010000B70043BC
4904:1032600046C9010007000008828801004B9640080B
4905:1032700096300000F39900408132010057962245B4
4906:10328000957C00005396225A1F7C00001000000F0E
4907:1032900096F401005096315F970400000000114B36
4908:1032A000489301000000004B6AB101005396304082
4909:1032B0008132000000000041E68101000000104062
4910:1032C00081B201000000984081B2010000973F41A7
4911:1032D00095E00100000000F396B0010040973D40EA
4912:1032E00097E00100000063F388B001005F96A23B05
4913:1032F000896C00000000004A90B10100010000A6A6
4914:1033000092B101006096184A4493000000001840F2
4915:1033100081B201003000394597E001006596225ADC
4916:103320001F7C00001F04000F98D801000000004C13
4917:103330005E940100679600054AB000001F0400A7D4
4918:103340005E840100000000404BB001000000005806
4919:1033500061B101000000004B62B101000000A84013
4920:1033600081B200006896004081B200006B96400771
4921:1033700096300000F3990040813201006F9622459B
4922:10338000957C00000000984081B20100F199004A4C
4923:103390004413010000973F4195E00100000000F355
4924:1033A00096B0010040973D4097E00100000063F3B4
4925:1033B00088B001003000384597E001000000005F50
4926:1033C0000F9001000000005861B101000000004BA7
4927:1033D00062B101007796A840813200007096A23B4E
4928:1033E000896C0000300038459DE0010000009840E5
4929:1033F00081B20100E9990012943001004896005A08
4930:103400001F0001000000805A1F9001001100004AB7
4931:10341000E6C9010034002F4F95840100000000F33D
4932:1034200096B001000100634B84C801000000A04376
4933:10343000856C01000000E34085B0010030002D44A0
4934:103440001F90010032002DF22AB00100040022F288
4935:103450000230000066950010323001003200A040BA
4936:10346000E5B101000000004097B00100F007004006
4937:10347000999801000000004A02C0010000000050BD
4938:1034800003D001000000004197C001000000A34CE0
4939:1034900002D000008E96004081B20000000000A81B
4940:1034A00036B001009E9622410350000000800010BB
4941:1034B00044C9010000000050F1B101007000000398
4942:1034C000F0C901000000004261B1010000000010DD
4943:1034D00062B101009796A800E03100001B840088CB
4944:1034E0001CB00000E2950040813201007C800003A6
4945:1034F00042C90100000000F000B001009296005C9B
4946:1035000001800000E2950040813201000000001BB4
4947:1035100010B1000068012D0682B00100000000F229
4948:1035200082C001000080000346C90100DD95004013
4949:1035300081320100C5962240116C0000000068082D
4950:1035400038960100F007004182CC0100A396AA4101
4951:103550003B400000000000F810B001000000005CDB
4952:10356000118001000100001D04CC0100C496264614
4953:10357000233000000800000312C80100640120F09D
4954:10358000E0B10100C3962241055000002000000375
4955:1035900048C901000C0000F886C801000000224460
4956:1035A000F1B1010000000043F0B10100000000098A
4957:1035B000E0B101000000004461B10100A00000A4DE
4958:1035C00062DD0100B596A8461F100000C296224198
4959:1035D00005500000C096A24123500000000000A149
4960:1035E0001AB001000000004461B101004000001069
4961:1035F00062DD0100BB96A846233000001B840088D2
4962:103600001CB000001000000348C901000000000DBC
4963:1036100042B101000000004413C00100B096005008
4964:1036200049C100000000000548B10100048000030A
4965:103630001AC801000000804081B20100C4962240F7
4966:103640003B6C0000000000F800B00100E295005C57
4967:1036500001000100C59600413BD0000000008D47ED
4968:1036600080320100B0002F5F13B001000000E0F0D5
4969:103670008CC001000080000342C90100000000F876
4970:1036800094B00100000000F88CB00100D1968CF8D5
4971:103690008E3000000000004419900100040022F860
4972:1036A00014300000000000F816B00100000000F81F
4973:1036B00026B0010008002EF80CB001000C002A4AC8
4974:1036C000E0B1010028000000E0C901001000201B4B
4975:1036D000E0B10100DE96200A0C6C0000000000F84A
4976:1036E00094B00100000000F896B00100200020F026
4977:1036F000E4B101001800204AE0B101001C00204B99
4978:10370000E0B10100C996004013B000002C002D422A
4979:10371000199001002E002FF382B00100000000F389
4980:1037200096B00100E496A2A5976C000000008041CD
4981:1037300095B00100E796A240976C000000000040A1
4982:1037400083B001002D002040E7B10100000063417B
4983:1037500097C00100D4003E4183E001000000004119
4984:1037600083C00100EC96A0A5836C0000000000401F
4985:1037700083B001002C002041E6B10100F196224007
4986:103780001F7C00000004000098DC01000B00004CCE
4987:10379000E4F50100000080401F8001000B00800064
4988:1037A000E4F50100E6950040813201000480000349
4989:1037B00044C9010000000040F1B1010000000040D8
4990:1037C000F1B101000000604187B0010000800010ED
4991:1037D00044C9010000000050F1B1010000000048A0
4992:1037E000F0B1010000000049F0B101000000000349
4993:1037F000E0B101000000004561B1010020000010AF
4994:1038000062DD01000000A85D05900000FD9600400B
4995:1038100081B20000E6950040813201000080000383
4996:1038200044C9010000000041F0B101000000004265
4997:10383000F0B1010000000040F1B1010000000043C0
4998:10384000F0B101000080001044C9010000000050E8
4999:10385000F1B1010000000048F0B101000000004992
5000:10386000F0B1010000000003E0B1010000000045DC
5001:1038700061B101002000001062DD01000000A85DC0
5002:10388000059000000C97004081B200002D00004020
5003:10389000439901002E002FF384B00100010063F36F
5004:1038A00096C8010014979F4185500000010000A5B3
5005:1038B00085CC01002D00A042E6B101005E012D0083
5006:1038C00080B001001997524381600000020000F2AD
5007:1038D00082F401001A970041809400000000005F0C
5008:1038E000819001000000005E61B101000000004015
5009:1038F00062B101000000A84095B000001B979EBB7C
5010:10390000803200002097A2401F7C0000E29500401A
5011:1039100081B200000000804195B001000400001554
5012:1039200042C90100000000542BC00100000000FC4F
5013:1039300024B00100000000FC38B00100000000FECF
5014:103940003CB00100000000FE3AB0010035979C1722
5015:10395000803200002A97A24A197C00000000804CA7
5016:103960001F9001000C00001E98F401002997A24846
5017:10397000996C00000000001542B101002997A28A4D
5018:10398000F16D00000C00000102CC0100000000FC01
5019:103990003EB00100010000F428CC0100CC002D0550
5020:1039A00048B10100349720F03E6C00000000004B4D
5021:1039B0001F9001000000004C2BC00100BF002D052E
5022:1039C00048B10100000080F33AE0010000002E4BF6
5023:1039D0001990010007002A0CE4B1010000008004E6
5024:1039E000E6B1010018000040439901001C002DF0D1
5025:1039F00016B0010020002DF026B001000C002FF2BF
5026:103A00000CB001000000A20614EC00004197224512
5027:103A10001F7C00000000A3062AEC0000000000F854
5028:103A200094B00100000000F096B001000C002D40A1
5029:103A300081B2010000002A4CE1C1010030000010F9
5030:103A400048C901000A000040F19901001800000572
5031:103A5000F0C901000000004AF0B101000000004B75
5032:103A6000E0B101000000004761B10100A00000A426
5033:103A700062DD01004B97A85C1F100000000080056C
5034:103A800048B1010000002E1048B10100000068019B
5035:103A900096B0010000000003F0B1010051974542CB
5036:103AA000613100000000001062B101005297A800CF
5037:103AB000E031000000009D4081B2010000002E10A6
5038:103AC00048B101000000680196B001000000000349
5039:103AD000F0B101005897454261310000200000100C
5040:103AE00062DD01005997A800E031000000009D4010
5041:103AF00081B201003080004A44C901000000000684
5042:103B0000F1B10100C0A83D460DE00100FF7F00A11A
5043:103B1000F08901000200000996F40100000000464F
5044:103B200097E00100000060A897C00100639746423B
5045:103B3000613100003000004A62C901006497A8406A
5046:103B40008132000000009E4081B2010000993F4296
5047:103B500097F001006897474081320000709722F388
5048:103B6000740600003F0000F3948801000000000785
5049:103B7000E785010000001F5561B101000000004A07
5050:103B800062B101000000A84081B200006D970040C2
5051:103B900081B2000000009F4081B20100000000A837
5052:103BA00036B0010080978241234000007597A244FF
5053:103BB0001F7C0000EF9400018C3001002080001079
5054:103BC00042C901007B972240E36D000000000043E2
5055:103BD00061B101004000001062DD01007897A8404B
5056:103BE000813200001B8400881CB0000000000041EE
5057:103BF00023B001000000001032B001008097224184
5058:103C0000197C0000F89500432330010000000041BA
5059:103C100023B001008297A3150C6C00008397000667
5060:103C200004B000000000001504B0010085972002D8
5061:103C30001A6C00000000000D04B001000700000B2A
5062:103C4000968801008A9726479724000000000041CB
5063:103C500097C001008A97234B046C00000000004BC2
5064:103C600004B001004998000548310100B4972202D0
5065:103C7000145000008E97A2022A500000B497A2456B
5066:103C80001F7C0000909722020C50000099970002C0
5067:103C900016C000009897225C1F7C00003080001046
5068:103CA00042C9010098972240E36D000000000047E0
5069:103CB00061B101004000001062DD01009497A8404E
5070:103CC000813200001B8400881CB000000000000549
5071:103CD00048B101003A97005C1F000100B49722151B
5072:103CE000803200000000005033C00100B397A202F0
5073:103CF0001A500000A59722461F7C00007080000328
5074:103D000042C90100000000461F800100A597224023
5075:103D1000E36D00000000004261B1010040000010AE
5076:103D200062DD0100A197A840813200001B84008859
5077:103D30001CB000000000000548B101000C80000329
5078:103D400042C90100100000F010C801002F002F5CD4
5079:103D50001180010000000047E7910100F0070040DA
5080:103D60001B980100729720151A6C00007000000368
5081:103D700048C9010000002250F1B101000000000319
5082:103D8000F0B10100FF070008E08D010000000042D3
5083:103D900061B10100A00000A462DD0100B097A84657
5084:103DA0001F1000007297000548B1000072970002D2
5085:103DB00010C00000B697A2441F7C0000EF940001E1
5086:103DC0008C3001000000001B10B1000000800010CA
5087:103DD00044C901000C000040F199010010000008E6
5088:103DE000F0C9010000000016F0B10100100000034E
5089:103DF000E0C901000000004561B101002000001091
5090:103E000062DD01000000A85C1F900000BD9700402B
5091:103E100081B20000170000D0A2C901000000A2403A
5092:103E200027EC00000000002000B00100E2950041F6
5093:103E3000A3410100C197004127D0000010000007F6
5094:103E400096E401000000004B809401000000005443
5095:103E500061B101000080004062DD01000000A84067
5096:103E600081B20000C897004081B200001A9800405B
5097:103E70002B300100AC002D0616C0010090002DF083
5098:103E800016C40100D097A0F01644000000000041C5
5099:103E900017C001000E0000A244C9010000006CF030
5100:103EA00030B00100AC002D4087B0010000006CF084
5101:103EB00028B00100D997224A197C00000030004345
5102:103EC00086C801000030000B16C80100D997A44035
5103:103ED000813200000000004117C00100FA9722065D
5104:103EE00080320000E697A206146C0000E397224897
5105:103EF000197C0000DE97A04117400000000000413F
5106:103F000017C001000000004131C0010090002018DE
5107:103F1000E0B101008B002D48198001008B00204585
5108:103F2000E7910100E69700408790000008000043F9
5109:103F300086980100E697A048174000000000004165
5110:103F400017C00100B0000040439901001050004329
5111:103F5000FCC9010051980030813001000000004090
5112:103F6000E5B10100F197224A197C0000080000A287
5113:103F700044C90100CC002DABF9B10100000000AB39
5114:103F800017C00100F097A0F01644000000000041A7
5115:103F900017C00100F59764F082B00000A400004053
5116:103FA00047990100F597A2F280320000000000411D
5117:103FB000E5B101008C002018E0B101009000004044
5118:103FC000459901000000600630C001000000860C29
5119:103FD00080B20000BC002D4619900100A000A0F2A4
5120:103FE000E4B10100B00000404399010010500043CB
5121:103FF000FCC9010051980030813001000000A24A44
5122:1040000019FC0000080000A244C90100CC002DAB3F
5123:10401000F9B10100000000AB17C001000398A0F047
5124:10402000164400000000004117C001000000E4F049
5125:1040300082B001000080001044C90100000000416E
5126:10404000F0B1010000000003F0B101000000000029
5127:10405000F0B101000000001062B101000000A81BD7
5128:10406000E0B100000898004081B2000000F0000CB0
5129:104070007E8901000000A64C956001000000804A86
5130:10408000189401000080001044C9010004002201BE
5131:10409000F031000020000040F0C9010000000016CF
5132:1040A000F0B101000000004361B1010020000010E8
5133:1040B00062DD01000000A815E0B100001398004087
5134:1040C00081B200001080000344C901000000000616
5135:1040D000F0B1010000000001F0B101000000E85F54
5136:1040E0001790010070000040439901007A012EFEF4
5137:1040F00092B001008B002DF616B0010020982243EB
5138:10410000E77D00000000004445C10100040000A656
5139:104110002AB0010028006E0682C801002498224AB5
5140:10412000197C00000000004245D1010000006E4CE7
5141:1041300083C001000000004192C001002598423078
5142:104140003D0700000000669E83B0010000001A4198
5143:104150003DC301000000004192C00100060000A222
5144:1041600044C901001000004998F401002E9826303F
5145:10417000930400002E98904C9240000000000041F3
5146:1041800093C00100FFFF8049ECA9010000800010EE
5147:1041900044C9010004002201F031000000000009C0
5148:1041A000F0B1010000000018F0B101002000001083
5149:1041B00062DD01000000A815E0B100003398004066
5150:1041C00081B200004098225F817C00003F98A240AD
5151:1041D000197C00000000004019900100000000540C
5152:1041E00061B101001000000796E401000000004FDB
5153:1041F000979401000000004B62B101003F982840F5
5154:10420000813200003C98004081B200000000A221F1
5155:10421000818400004398A25F816C00000000A243EB
5156:10422000197C0100000000431990010000000054B7
5157:1042300061B101001000000796E401000000004099
5158:10424000969401000000004B62B101000000A840FC
5159:1042500081B200004698004081B200000080001941
5160:1042600044C9010004002202F03100000000000BEC
5161:10427000F0B1010000000013F0B1010000000043A4
5162:1042800061B101002000001962DD01000000A808F2
5163:10429000E0B100004E98004081B200007C002DF09B
5164:1042A00084B00100020000F098F401005798204CFF
5165:1042B000846C00008800004043990100579820F268
5166:1042C000846C00000000004085B0010098002D14AF
5167:1042D00082B00100000000F098B00100A3002D148E
5168:1042E00098D001005C98204C846C00000000004CC9
5169:1042F00084B00100000000F380E001005F982340DB
5170:10430000846C00000000004084B00100D000201444
5171:10431000E0B101009800254280B0010000006EF37A
5172:1043200080F001000000A64282C000006598A04015
5173:10433000164000000000004117C0010000009FF07F
5174:1043400082EC00009800A041E0B1010068980012E2
5175:1043500010C90000004880400B980100C04980400F
5176:104360000B980100804B80400B980100404D80402D
5177:104370000B980100004F80400B980100C050804016
5178:104380000B980100805280400B98010040548040FF
5179:104390000B980100005680400B980100C0578040E8
5180:1043A0000B980100805980400B980100405B8040D1
5181:1043B0000B980100005D80400B980100C05E8040BA
5182:1043C0000B980100806080400B98010040628040A3
5183:1043D0000B980100006480400B980100C06580408C
5184:1043E0000B980100806780400B9801004069804075
5185:1043F0000B980100006B80400B980100C06C80405E
5186:104400000B980100806E80400B9801004070804046
5187:104410000B980100007280400B980100C07380402F
5188:104420000B980100807580400B9801004077804018
5189:104430000B980100007980400B980100C07A804001
5190:104440000B980100807C80400B980100407E8040EA
5191:104450000B98010088984357613100009498A25747
5192:10446000737D00009498A240816F00000000004816
5193:1044700061B101000010004A62DD01008C98A84A79
5194:10448000803300009198225F957C00000000004B73
5195:1044900062B101008F98A84BAC33000000001BA54F
5196:1044A00082B30100000000BE83C301000000804011
5197:1044B00097B001000010004A62DD01009898284082
5198:1044C0008132000094982257777D000000009B20E5
5199:1044D00097B001000000004B62B101009898A8401D
5200:1044E0008132000000009B4097B0010000002E10B8
5201:1044F00048B10100A8010040F19901000000000549
5202:10450000F0B101000900000796E40100000060A777
5203:1045100097C001000000001062B101000000A84037
5204:1045200081B20000A098004081B20000A8002D1CBC
5205:104530008AB0010000009FF08AD000000000A24075
5206:104540008BEC00008A002040E7B10100B40000407D
5207:1045500047990100A4002D45E0D10100AD989C17BA
5208:1045600080320000BE002FAB83B001001799001409
5209:1045700082500100B298004081B20000B29822F24D
5210:10458000823000008C00004043990100B2989F1CCB
5211:10459000E06D0000BE0000404799010017990040FF
5212:1045A00081320100A800201CE0B101009C002D30E8
5213:1045B00081B0010088002DF084B0010094002DF23C
5214:1045C00086B00100DC9823F0846C00000C000042EF
5215:1045D00088F40100DC982050896C0000CB98A392ED
5216:1045E000876C0000BB98004410C90000DC98000AEA
5217:1045F00087B00000DC98000987B00000DC98000854
5218:1046000087B00000DC98000787B00000DC98000746
5219:1046100087B00000DC98000787B00000DC98000637
5220:1046200087B00000DC98000687B00000DC98000628
5221:1046300087B00000DC98000687B00000DC98000618
5222:1046400087B00000DC98000587B00000DC9800050A
5223:1046500087B00000DC98000587B00000DC980005FA
5224:1046600087B00000DC98000587B00000CC980044BB
5225:1046700010C90000DC98000F87B00000DC98000E25
5226:1046800087B00000DC98000D87B00000DC98000CBB
5227:1046900087B00000DC98000C87B00000DC98000CAC
5228:1046A00087B00000DC98000C87B00000DC98000C9C
5229:1046B00087B00000DC98000C87B00000DC98000B8D
5230:1046C00087B00000DC98000B87B00000DC98000B7E
5231:1046D00087B00000DC98000B87B00000DC98000B6E
5232:1046E00087B00000DC98000B87B00000DC98000B5E
5233:1046F00087B00000BF002D4384C0010090002DF35F
5234:1047000080E00100E1982340846C00009400209D2B
5235:10471000E1B101000000004084B00100E598A2F082
5236:10472000386C00009C002042E0B101000000005FF6
5237:104730001394010000008046198001009C00204273
5238:10474000E0B101003700004043990100040000F38C
5239:1047500080F401000F0000F382880100EB982341F0
5240:10476000806C00000000005F139401000000890CC1
5241:1047700080B20000BC00004043990100A000A0F2FC
5242:10478000E4B1010000009F4124EC0000F598A64030
5243:104790008132000000009F4238EC0000F598A640EE
5244:1047A00081320000B400004043990100F798A3F063
5245:1047B0003A6C00000000804081B20100B40000406B
5246:1047C00043990100FB9822F03A6C0000B400201DD0
5247:1047D000E0B1010080002D5F13940100FB9823F0ED
5248:1047E0003A6C00008000201DE0B10100C0002012E2
5249:1047F000E0B10100C400A01CE0B101000080000392
5250:1048000044C9010000000042E0B101001200004074
5251:104810008798010004999F41246C0000000000412A
5252:104820008CB00100000000128CD0010005990041FD
5253:1048300024B00000000000408DB0010055990040F8
5254:10484000813201000000004561B10100400000100C
5255:1048500062DD01000000A84081B20000079900401D
5256:1048600081B20000D49500408132010000000016A2
5257:1048700080B201000000A708803201000F99A24019
5258:10488000956C0000E295004081320100008200A694
5259:1048900004B00100000000402DB00100A0982F409E
5260:1048A00011B00100E989004189B0000000009FF8C3
5261:1048B0003EEC000000009F12E0ED0000C80020ABBD
5262:1048C000E1B10100CC00A01FE0B101001999A35F84
5263:1048D000E76D000000000041E7C10100A6000040B4
5264:1048E000479901002D9922F2863000000300004311
5265:1048F00084F401000100004180CC0100B8002D4289
5266:1049000080D001000000624086C0010021991F4351
5267:10491000803200002299A240876C000000006241B2
5268:1049200087B0010026999F408032000000000040BF
5269:1049300085B001000000004084D00100000000426A
5270:1049400080B00100000000F288B0010002000044C5
5271:1049500084F40100B8002E4280D0010000006240C3
5272:1049600088C001002C991F44803200003099A24079
5273:10497000896C00003099624189B0000003006241F7
5274:1049800086E40100B8000040459901000100624141
5275:1049900088E40100A4002040E5B10100A20020400D
5276:1049A000E7B10100BC002E4387F001000000004485
5277:1049B00086C0010036992043876C000000008043C8
5278:1049C000E5B101004001004380CE01000000A44396
5279:1049D000E43101004001E2408798010088002D4445
5280:1049E00081B0010090002DF22EB001009C002DF04E
5281:1049F00086B0010090002DF082B00100BA002DF0C9
5282:104A000098B001004399A212986C0000BC002DF2EE
5283:104A100098B001004399A0F2986C000000000017C4
5284:104A200082B001009C002041E0B10100B4002D12D1
5285:104A300086D001004699A341E06D0000479900F03F
5286:104A400084B000000000004184B0010080002D43CC
5287:104A500084D001004A999F4280320000000000404B
5288:104A600085B001004C99A342146C00004D99000AD6
5289:104A70000CB00000000000420CB001004F99A017DC
5290:104A80000C6C0000000080170CB00100549922400B
5291:104A90000D6C00000000A00A0CEC0000010000F00A
5292:104AA00082F401005499A0410C6C00000000A2F0B7
5293:104AB000803201000000804081B00100E695004096
5294:104AC000813201000480000344C901000000004657
5295:104AD000F0B1010000000040F1B1010000006041B0
5296:104AE000879401000080001044C9010000000050BC
5297:104AF000F1B1010000000048F0B1010000000049E0
5298:104B0000F0B1010000000003E0B101000000004529
5299:104B100061B101002000001062DD01000000A85D0D
5300:104B2000059000006099004081B2000000002E4B0B
5301:104B30001990010005002A0CE4B101000000800476
5302:104B4000E6B101006A9922491F7C00004200004042
5303:104B500087980100000000491F800100C0970040B5
5304:104B60008DB0000070992240AF6F0000000000156A
5305:104B700096B0010088980008943001006F99224097
5306:104B8000976C0000C097004687B00000000080408E
5307:104B900087B001007099434861310000001000089F
5308:104BA00062DD010075992840873000007199224824
5309:104BB000777D0000C0971B4687B000007899225F80
5310:104BC000117C000004002215623100007699A84093
5311:104BD0008132000000009B4081B2010000000040D3
5312:104BE00049B1010030000040A199010000000040DF
5313:104BF00093B00100000000401FB00100C9990049B6
5314:104C0000963001000700004906E401000039000366
5315:104C100006C801000000004005B00100200000D0DF
5316:104C2000A0C901000000004193C001007D99A0547B
5317:104C3000936C000000002E0597B001000048004072
5318:104C40004999010000000040E1B10100C00100A24B
5319:104C500044C901008699A24197500000000000203D
5320:104C600049B30100CE9900404931010000B52E083A
5321:104C700097B0010000000040F1B101008C99A24101
5322:104C800097500000180000409798010000972E40B0
5323:104C900081B2010000000040F1B101009099A241F1
5324:104CA000975000000000004049B1010040182E0557
5325:104CB00097B0010000000040F1B101009499A241B9
5326:104CC0009750000057952040E7B101003094004014
5327:104CD0004599010064000040E59901005695204087
5328:104CE000E7B10100B8942041E5B10100BA94204138
5329:104CF000E5B1010098940040459901000200004090
5330:104D00009798010000000040F1B101009E99A24176
5331:104D1000975000000000004097B0010000000040E4
5332:104D20006FB101000000004B68B10100A2998541FC
5333:104D300097400000DB9900408132010000000040F4
5334:104D400039B301000000004037B30100000000400B
5335:104D500035B301000000004033B301000000004003
5336:104D600041B30100000000403FB301003C0000409F
5337:104D7000299B0100EE050040259B010042000040F8
5338:104D80004B9B0100000000402FB3010000000040D9
5339:104D90002DB301000000004047B3010000000040B7
5340:104DA00043B30100600000402B9B01000000005451
5341:104DB000EF93010000000055F1930100FFFF00A5F3
5342:104DC0003C8B01000000002C5BB301000000002CB4
5343:104DD00045B301000000004059B30100000000404D
5344:104DE00057B301000000004027B30100000000405D
5345:104DF00053B30100BF99A250FD7F0000BF99A2519B
5346:104E0000FD7F0000C09900401DB3000050460040E7
5347:104E10001D9B010000C000A688B30100FF3F00A653
5348:104E20003AB3010000C0009D3B9B0100B405004067
5349:104E3000239B0100000000404DB30100080A00A6BA
5350:104E400014B301000101008A159B0100008000A637
5351:104E500056B101000000805E57B501001800004BFC
5352:104E600020E401000600004B96E401000043004BE3
5353:104E700096C801001800001020DC01000000804BE3
5354:104E80002094010000992E0A97B001000000004014
5355:104E9000F1B10100CF99A2419750000000030040FA
5356:104EA0009798010000A900404599010000000040CA
5357:104EB000F1B10100D399A2419750000030000040A9
5358:104EC000979801000000005561B101000000004BFF
5359:104ED00062B10100D799A84081320000D799A24160
5360:104EE000975000000000804081B2010000000040A7
5361:104EF00087B101000000004097B001000000004BA6
5362:104F000080B10100010000A682B10100DD99854158
5363:104F1000974000000000004097B1010000000040F1
5364:104F200097B001000000004B90B10100010000A605
5365:104F300092B10100E2998541974000000000804055
5366:104F400081B20100E6994440813200000000001265
5367:104F500080B10100FFFF9C4B82890100E999444028
5368:104F6000813200000000004A80B1010001009CA6CF
5369:104F700082B10100EC99444081320000FFFF004BF8
5370:104F80008489010000009CC224B001000000004A96
5371:104F900090B10100FFFF804B928901000000004AA0
5372:104FA00090B10100010080A692B10100FFFF004B0B
5373:104FB00094890100000080CA94B001000000804084
5374:104FC00081B201000000004081B00100F79980A586
5375:104FD00080320000F89900A58032000000000041F6
5376:104FE00081C00100F99980A5803200008001004055
5377:104FF00083980100029A204F816C0000000100405C
5378:1050000083980100029A204B816C000080000040D0
5379:1050100083980100029A2047816C00000000004044
5380:10502000839801000000004182DC010003900041F0
5381:10503000209901000000004049B1010000142F4CEC
5382:1050400083B0010000000040F1B10100069AA241C6
5383:1050500083500000640000A580C80100099AA2A541
5384:10506000806C000020000090209901000000005F8B
5385:10507000239101000C9A1F918032000030000090B3
5386:10508000209901000000005F239101000F9A1F91F9
5387:10509000803200007000009020A901000000005F35
5388:1050A00023910100129A1F91803200000000005FDE
5389:1050B00023910100149A1F918032000040680090F3
5390:1050C00020A90100E000004061990100210000409A
5391:1050D0006199010022000040619901002300004015
5392:1050E0006199010024000040619901002500004001
5393:1050F00061990100260000406199010027000040ED
5394:1051000061990100C000004061990100D014004085
5395:105110004599010000000040F1B10100000000408D
5396:10512000E1B101003003004085300100D01400409F
5397:1051300045990100020100A680B00100040300406F
5398:1051400080980100060500A682B001000807004112
5399:105150008298010000000040F0B101000000004111
5400:10516000E0B10100080000408598010030030040D4
5401:10517000813201003903004081320100D81400401F
5402:1051800043990100FF02A2F8806C0000000322F0A6
5403:10519000826C0000FF02004081B20000D0142E405B
5404:1051A00049B1010005000040A39B01000000004040
5405:1051B000C1B30100080000DD81F40100369A00400F
5406:1051C00010C900003C9A000581B000005501004064
5407:1051D00081B20000449A000581B0000055010040F2
5408:1051E00081B20000499A0044A5B300004B9A0044E4
5409:1051F000A5B3000002000040A4E70100000000E0A9
5410:1052000081B10100FFFF00C1F0890100419A2241F4
5411:10521000815000003D9A0041C1C30000B10200402E
5412:1052200081320100C5020040813201005A01004074
5413:1052300081B2000002000040A4E70100000000E08D
5414:1052400091B10100FFFF00C9F0890100419A22419C
5415:1052500081500000459A0041C1C30000FFFF00DEFD
5416:1052600085890100419A00C2E0B10000FFFF00DE25
5417:1052700095890100419A00CAE0B10000040000CB0A
5418:1052800081C801006A840040F293000004000040DD
5419:1052900081B200000400004081B200000400004020
5420:1052A00081B200000400004081B200000400004010
5421:1052B00081B200000400004081B200000400004000
5422:1052C00081B200000400004081B2000004000040F0
5423:1052D00081B200000400004081B2000004000040E0
5424:1052E00081B200000400004081B2000004000040D0
5425:1052F00081B200000400004081B2000004000040C0
5426:1053000081B200000400004081B2000004000040AF
5427:1053100081B200000400004081B20000040000409F
5428:1053200081B200000400004081B20000040000408F
5429:1053300081B200000400004081B20000040000407F
5430:1053400081B200000400004081B20000040000406F
5431:1053500081B200000400004081B20000040000405F
5432:1053600081B200000400004081B20000040000404F
5433:1053700081B200000400004081B20000040000403F
5434:1053800081B200000400004081B20000040000402F
5435:1053900081B200000400004081B20000040000401F
5436:1053A00081B200000400004081B20000040000400F
5437:1053B00081B200000400004081B2000004000040FF
5438:1053C00081B200000400004081B2000004000040EF
5439:1053D00081B200000400004081B2000004000040DF
5440:1053E00081B200000400004081B2000004000040CF
5441:1053F00081B200000400004081B2000004000040BF
5442:1054000081B200000400004081B2000004000040AE
5443:1054100081B200000400004081B20000040000409E
5444:1054200081B200000400004081B20000040000408E
5445:1054300081B200000400004081B20000040000407E
5446:1054400081B200000400004081B20000040000406E
5447:1054500081B200000400004081B20000040000405E
5448:1054600081B200000400004081B20000040000404E
5449:1054700081B200000400004081B20000040000403E
5450:1054800081B200000400004081B20000040000402E
5451:1054900081B200000400004081B20000040000401E
5452:1054A00081B200000400004081B20000040000400E
5453:1054B00081B200000400004081B2000004000040FE
5454:1054C00081B200000400004081B2000004000040EE
5455:1054D00081B200000400004081B2000004000040DE
5456:1054E00081B200000400004081B2000004000040CE
5457:1054F00081B200000400004081B2000004000040BE
5458:1055000081B200000400004081B2000004000040AD
5459:1055100081B200000400004081B20000040000409D
5460:1055200081B200000400004081B20000040000408D
5461:1055300081B200000400004081B20000040000407D
5462:1055400081B200000400004081B20000040000406D
5463:1055500081B200000400004081B20000040000405D
5464:1055600081B200000400004081B20000040000404D
5465:1055700081B200000400004081B20000040000403D
5466:1055800081B200000400004081B20000040000402D
5467:1055900081B200000400004081B20000040000401D
5468:1055A00081B200000400004081B20000040000400D
5469:1055B00081B200000400004081B2000004000040FD
5470:1055C00081B200000400004081B2000004000040ED
5471:1055D00081B200000400004081B2000004000040DD
5472:1055E00081B200000400004081B2000004000040CD
5473:1055F00081B200000400004081B2000004000040BD
5474:1056000081B200000400004081B2000004000040AC
5475:1056100081B200000400004081B20000040000409C
5476:1056200081B200000400004081B20000040000408C
5477:1056300081B200000400004081B20000040000407C
5478:1056400081B200000400004081B20000040000406C
5479:1056500081B200000400004081B20000040000405C
5480:1056600081B200000400004081B20000040000404C
5481:1056700081B200000400004081B20000040000403C
5482:1056800081B200000400004081B20000040000402C
5483:1056900081B200000400004081B20000040000401C
5484:1056A00081B200000400004081B20000040000400C
5485:1056B00081B200000400004081B2000004000040FC
5486:1056C00081B200000400004081B2000004000040EC
5487:1056D00081B200000400004081B2000004000040DC
5488:1056E00081B200000400004081B2000004000040CC
5489:1056F00081B200000400004081B2000004000040BC
5490:1057000081B200000400004081B2000004000040AB
5491:1057100081B200000400004081B20000040000409B
5492:1057200081B200000400004081B20000040000408B
5493:1057300081B200000400004081B20000040000407B
5494:1057400081B200000400004081B20000040000406B
5495:1057500081B200000400004081B20000040000405B
5496:1057600081B200000400004081B20000040000404B
5497:1057700081B200000400004081B20000040000403B
5498:1057800081B200000400004081B20000040000402B
5499:1057900081B200000400004081B20000040000401B
5500:1057A00081B200000400004081B20000040000400B
5501:1057B00081B200000400004081B2000004000040FB
5502:1057C00081B200000400004081B2000004000040EB
5503:1057D00081B200000400004081B2000004000040DB
5504:1057E00081B200000400004081B2000004000040CB
5505:1057F00081B200000400004081B2000004000040BB
5506:1058000081B200000400004081B2000004000040AA
5507:1058100081B200000400004081B20000040000409A
5508:1058200081B200000400004081B20000040000408A
5509:1058300081B200000400004081B20000040000407A
5510:1058400081B200000400004081B20000040000406A
5511:1058500081B200000400004081B20000040000405A
5512:1058600081B200000400004081B20000040000404A
5513:1058700081B200000400004081B20000040000403A
5514:1058800081B200000400004081B20000040000402A
5515:1058900081B200000400004081B20000040000401A
5516:1058A00081B200000400004081B20000040000400A
5517:1058B00081B200000400004081B2000004000040FA
5518:1058C00081B200000400004081B2000004000040EA
5519:1058D00081B200000400004081B2000004000040DA
5520:1058E00081B200000400004081B2000004000040CA
5521:1058F00081B200000400004081B2000004000040BA
5522:1059000081B200000400004081B2000004000040A9
5523:1059100081B200000400004081B200000400004099
5524:1059200081B200000400004081B200000400004089
5525:1059300081B200000400004081B200000400004079
5526:1059400081B200000400004081B200000400004069
5527:1059500081B200000400004081B200000400004059
5528:1059600081B200000400004081B200000400004049
5529:1059700081B200000400004081B200000400004039
5530:1059800081B200000400004081B200000400004029
5531:1059900081B200000400004081B200000400004019
5532:1059A00081B200000400004081B200000400004009
5533:1059B00081B200000400004081B2000004000040F9
5534:1059C00081B200000400004081B2000004000040E9
5535:1059D00081B200000400004081B2000004000040D9
5536:1059E00081B200000400004081B2000004000040C9
5537:1059F00081B200000400004081B2000004000040B9
5538:105A000081B200000400004081B2000004000040A8
5539:105A100081B200000400004081B200000400004098
5540:105A200081B200000400004081B200000400004088
5541:105A300081B200000400004081B200000400004078
5542:105A400081B200000400004081B200000400004068
5543:105A500081B200000400004081B200000400004058
5544:105A600081B200000400004081B200000400004048
5545:105A700081B200000400004081B200000400004038
5546:105A800081B200000400004081B200000400004028
5547:105A900081B200000400004081B200000400004018
5548:105AA00081B200000400004081B200000400004008
5549:105AB00081B200000400004081B2000004000040F8
5550:105AC00081B200000400004081B2000004000040E8
5551:105AD00081B200000400004081B2000004000040D8
5552:105AE00081B200000400004081B2000004000040C8
5553:105AF00081B200000400004081B2000004000040B8
5554:105B000081B200000400004081B2000004000040A7
5555:105B100081B200000400004081B200000400004097
5556:105B200081B200000400004081B200000400004087
5557:105B300081B200000400004081B200000400004077
5558:105B400081B200000400004081B200000400004067
5559:105B500081B200000400004081B200000400004057
5560:105B600081B200000400004081B200000400004047
5561:105B700081B200000400004081B200000400004037
5562:105B800081B200000400004081B200000400004027
5563:105B900081B200000400004081B200000400004017
5564:105BA00081B200000400004081B200000400004007
5565:105BB00081B200000400004081B2000004000040F7
5566:105BC00081B200000400004081B2000004000040E7
5567:105BD00081B200000400004081B2000004000040D7
5568:105BE00081B200000400004081B2000004000040C7
5569:105BF00081B200000400004081B2000004000040B7
5570:105C000081B200000400004081B2000004000040A6
5571:105C100081B200000400004081B200000400004096
5572:105C200081B200000400004081B200000400004086
5573:105C300081B200000400004081B200000400004076
5574:105C400081B200000400004081B200000400004066
5575:105C500081B200000400004081B200000400004056
5576:105C600081B200000400004081B200000400004046
5577:105C700081B200000400004081B200000400004036
5578:105C800081B200000400004081B200000400004026
5579:105C900081B200000400004081B200000400004016
5580:105CA00081B200000400004081B200000400004006
5581:105CB00081B200000400004081B2000004000040F6
5582:105CC00081B200000400004081B2000004000040E6
5583:105CD00081B200000400004081B2000004000040D6
5584:105CE00081B200000400004081B2000004000040C6
5585:105CF00081B200000400004081B2000004000040B6
5586:105D000081B200000400004081B2000004000040A5
5587:105D100081B200000400004081B200000400004095
5588:105D200081B200000400004081B200000400004085
5589:105D300081B200000400004081B200000400004075
5590:105D400081B200000400004081B200000400004065
5591:105D500081B200000400004081B200000400004055
5592:105D600081B200000400004081B200000400004045
5593:105D700081B200000400004081B200000400004035
5594:105D800081B200000400004081B200000400004025
5595:105D900081B200000400004081B200000400004015
5596:105DA00081B200000400004081B200000400004005
5597:105DB00081B200000400004081B2000004000040F5
5598:105DC00081B200000400004081B2000004000040E5
5599:105DD00081B200000400004081B2000004000040D5
5600:105DE00081B200000400004081B2000004000040C5
5601:105DF00081B200000400004081B2000004000040B5
5602:105E000081B200000400004081B2000004000040A4
5603:105E100081B200000400004081B200000400004094
5604:105E200081B200000400004081B200000400004084
5605:105E300081B200000400004081B200000400004074
5606:105E400081B200000400004081B200000400004064
5607:105E500081B200000400004081B200000400004054
5608:105E600081B200000400004081B200000400004044
5609:105E700081B200000400004081B200000400004034
5610:105E800081B200000400004081B200000400004024
5611:105E900081B200000400004081B200000400004014
5612:105EA00081B200000400004081B200000400004004
5613:105EB00081B200000400004081B2000004000040F4
5614:105EC00081B200000400004081B2000004000040E4
5615:105ED00081B200000400004081B2000004000040D4
5616:105EE00081B200000400004081B2000004000040C4
5617:105EF00081B200000400004081B2000004000040B4
5618:105F000081B200000400004081B2000004000040A3
5619:105F100081B200000400004081B200000400004093
5620:105F200081B200000400004081B200000400004083
5621:105F300081B200000400004081B200000400004073
5622:105F400081B200000400004081B200000400004063
5623:105F500081B200000400004081B200000400004053
5624:105F600081B200000400004081B200000400004043
5625:105F700081B200000400004081B200000400004033
5626:105F800081B200000400004081B200000400004023
5627:105F900081B200000400004081B200000400004013
5628:105FA00081B200000400004081B200000400004003
5629:105FB00081B200000400004081B2000004000040F3
5630:105FC00081B200000400004081B2000004000040E3
5631:105FD00081B200000400004081B2000004000040D3
5632:105FE00081B200000400004081B2000004000040C3
5633:105FF00081B200000400004081B2000004000040B3
5634:1060000081B200000400004081B2000004000040A2
5635:1060100081B200000400004081B200000400004092
5636:1060200081B200000400004081B200000400004082
5637:1060300081B200000400004081B200000400004072
5638:1060400081B200000400004081B200000400004062
5639:1060500081B200000400004081B200000400004052
5640:1060600081B200000400004081B200000400004042
5641:1060700081B200000400004081B200000400004032
5642:1060800081B200000400004081B200000400004022
5643:1060900081B200000400004081B200000400004012
5644:1060A00081B200000400004081B200000400004002
5645:1060B00081B200000400004081B2000004000040F2
5646:1060C00081B200000400004081B2000004000040E2
5647:1060D00081B200000400004081B2000004000040D2
5648:1060E00081B200000400004081B2000004000040C2
5649:1060F00081B200000400004081B2000004000040B2
5650:1061000081B200000400004081B2000004000040A1
5651:1061100081B200000400004081B200000400004091
5652:1061200081B200000400004081B200000400004081
5653:1061300081B200000400004081B200000400004071
5654:1061400081B200000400004081B200000400004061
5655:1061500081B200000400004081B200000400004051
5656:1061600081B200000400004081B200000400004041
5657:1061700081B200000400004081B200000400004031
5658:1061800081B200000400004081B200000400004021
5659:1061900081B200000400004081B200000400004011
5660:1061A00081B200000400004081B200000400004001
5661:1061B00081B200000400004081B2000004000040F1
5662:1061C00081B200000400004081B2000004000040E1
5663:1061D00081B200000400004081B2000004000040D1
5664:1061E00081B200000400004081B2000004000040C1
5665:1061F00081B200000400004081B2000004000040B1
5666:1062000081B200000400004081B2000004000040A0
5667:1062100081B200000400004081B200000400004090
5668:1062200081B200000400004081B200000400004080
5669:1062300081B200000400004081B200000400004070
5670:1062400081B200000400004081B200000400004060
5671:1062500081B200000400004081B200000400004050
5672:1062600081B200000400004081B200000400004040
5673:1062700081B200000400004081B200000400004030
5674:1062800081B200000400004081B200000400004020
5675:1062900081B200000400004081B200000400004010
5676:1062A00081B200000400004081B200000400004000
5677:1062B00081B200000400004081B2000004000040F0
5678:1062C00081B200000400004081B2000004000040E0
5679:1062D00081B200000400004081B2000004000040D0
5680:1062E00081B200000400004081B2000004000040C0
5681:1062F00081B200000400004081B2000004000040B0
5682:1063000081B200000400004081B20000040000409F
5683:1063100081B200000400004081B20000040000408F
5684:1063200081B200000400004081B20000040000407F
5685:1063300081B200000400004081B20000040000406F
5686:1063400081B200000400004081B20000040000405F
5687:1063500081B200000400004081B20000040000404F
5688:1063600081B200000400004081B20000040000403F
5689:1063700081B200000400004081B20000040000402F
5690:1063800081B200000400004081B20000040000401F
5691:1063900081B200000400004081B20000040000400F
5692:1063A00081B200000400004081B2000004000040FF
5693:1063B00081B200000400004081B2000004000040EF
5694:1063C00081B200000400004081B2000004000040DF
5695:1063D00081B200000400004081B2000004000040CF
5696:1063E00081B200000400004081B2000004000040BF
5697:1063F00081B200000400004081B2000004000040AF
5698:1064000081B200000400004081B20000040000409E
5699:1064100081B200000400004081B20000040000408E
5700:1064200081B200000400004081B20000040000407E
5701:1064300081B200000400004081B20000040000406E
5702:1064400081B200000400004081B20000040000405E
5703:1064500081B200000400004081B20000040000404E
5704:1064600081B200000400004081B20000040000403E
5705:1064700081B200000400004081B20000040000402E
5706:1064800081B200000400004081B20000040000401E
5707:1064900081B200000400004081B20000040000400E
5708:1064A00081B200000400004081B2000004000040FE
5709:1064B00081B200000400004081B2000004000040EE
5710:1064C00081B200000400004081B2000004000040DE
5711:1064D00081B200000400004081B2000004000040CE
5712:1064E00081B200000400004081B2000004000040BE
5713:1064F00081B200000400004081B2000004000040AE
5714:1065000081B200000400004081B20000040000409D
5715:1065100081B200000400004081B20000040000408D
5716:1065200081B200000400004081B20000040000407D
5717:1065300081B200000400004081B20000040000406D
5718:1065400081B200000400004081B20000040000405D
5719:1065500081B200000400004081B20000040000404D
5720:1065600081B200000400004081B20000040000403D
5721:1065700081B200000400004081B20000040000402D
5722:1065800081B200000400004081B20000040000401D
5723:1065900081B200000400004081B20000040000400D
5724:1065A00081B200000400004081B2000004000040FD
5725:1065B00081B200000400004081B2000004000040ED
5726:1065C00081B200000400004081B2000004000040DD
5727:1065D00081B200000400004081B2000004000040CD
5728:1065E00081B200000400004081B2000004000040BD
5729:1065F00081B200000400004081B2000004000040AD
5730:1066000081B200000400004081B20000040000409C
5731:1066100081B200000400004081B20000040000408C
5732:1066200081B200000400004081B20000040000407C
5733:1066300081B200000400004081B20000040000406C
5734:1066400081B200000400004081B20000040000405C
5735:1066500081B200000400004081B20000040000404C
5736:1066600081B200000400004081B20000040000403C
5737:1066700081B200000400004081B20000040000402C
5738:1066800081B200000400004081B20000040000401C
5739:1066900081B200000400004081B20000040000400C
5740:1066A00081B200000400004081B2000004000040FC
5741:1066B00081B200000400004081B2000004000040EC
5742:1066C00081B200000400004081B2000004000040DC
5743:1066D00081B200000400004081B2000004000040CC
5744:1066E00081B200000400004081B2000004000040BC
5745:1066F00081B200000400004081B2000004000040AC
5746:1067000081B200000400004081B20000040000409B
5747:1067100081B200000400004081B20000040000408B
5748:1067200081B200000400004081B20000040000407B
5749:1067300081B200000400004081B20000040000406B
5750:1067400081B200000400004081B20000040000405B
5751:1067500081B200000400004081B20000040000404B
5752:1067600081B200000400004081B20000040000403B
5753:1067700081B200000400004081B20000040000402B
5754:1067800081B200000400004081B20000040000401B
5755:1067900081B200000400004081B20000040000400B
5756:1067A00081B200000400004081B2000004000040FB
5757:1067B00081B200000400004081B2000004000040EB
5758:1067C00081B200000400004081B2000004000040DB
5759:1067D00081B200000400004081B2000004000040CB
5760:1067E00081B200000400004081B2000004000040BB
5761:1067F00081B200000400004081B2000004000040AB
5762:1068000081B200000400004081B20000040000409A
5763:1068100081B200000400004081B20000040000408A
5764:1068200081B200000400004081B20000040000407A
5765:1068300081B200000400004081B20000040000406A
5766:1068400081B200000400004081B20000040000405A
5767:1068500081B200000400004081B20000040000404A
5768:1068600081B200000400004081B20000040000403A
5769:1068700081B200000400004081B20000040000402A
5770:1068800081B200000400004081B20000040000401A
5771:1068900081B200000400004081B20000040000400A
5772:1068A00081B200000400004081B2000004000040FA
5773:1068B00081B200000400004081B2000004000040EA
5774:1068C00081B200000400004081B2000004000040DA
5775:1068D00081B200000400004081B2000004000040CA
5776:1068E00081B200000400004081B2000004000040BA
5777:1068F00081B200000400004081B2000004000040AA
5778:1069000081B200000400004081B200000400004099
5779:1069100081B200000400004081B200000400004089
5780:1069200081B200000400004081B200000400004079
5781:1069300081B200000400004081B200000400004069
5782:1069400081B200000400004081B200000400004059
5783:1069500081B200000400004081B200000400004049
5784:1069600081B200000400004081B200000400004039
5785:1069700081B200000400004081B200000400004029
5786:1069800081B200000400004081B200000400004019
5787:1069900081B200000400004081B200000400004009
5788:1069A00081B200000400004081B2000004000040F9
5789:1069B00081B200000400004081B2000004000040E9
5790:1069C00081B200000400004081B2000004000040D9
5791:1069D00081B200000400004081B2000004000040C9
5792:1069E00081B200000400004081B2000004000040B9
5793:1069F00081B200000400004081B2000004000040A9
5794:106A000081B200000400004081B200000400004098
5795:106A100081B200000400004081B200000400004088
5796:106A200081B200000400004081B200000400004078
5797:106A300081B200000400004081B200000400004068
5798:106A400081B200000400004081B200000400004058
5799:106A500081B200000400004081B200000400004048
5800:106A600081B200000400004081B200000400004038
5801:106A700081B200000400004081B200000400004028
5802:106A800081B200000400004081B200000400004018
5803:106A900081B200000400004081B200000400004008
5804:106AA00081B200000400004081B2000004000040F8
5805:106AB00081B200000400004081B2000004000040E8
5806:106AC00081B200000400004081B2000004000040D8
5807:106AD00081B200000400004081B2000004000040C8
5808:106AE00081B200000400004081B2000004000040B8
5809:106AF00081B200000400004081B2000004000040A8
5810:106B000081B200000400004081B200000400004097
5811:106B100081B200000400004081B200000400004087
5812:106B200081B200000400004081B200000400004077
5813:106B300081B200000400004081B200000400004067
5814:106B400081B200000400004081B200000400004057
5815:106B500081B200000400004081B200000400004047
5816:106B600081B200000400004081B200000400004037
5817:106B700081B200000400004081B200000400004027
5818:106B800081B200000400004081B200000400004017
5819:106B900081B200000400004081B200000400004007
5820:106BA00081B200000400004081B2000004000040F7
5821:106BB00081B200000400004081B2000004000040E7
5822:106BC00081B200000400004081B2000004000040D7
5823:106BD00081B200000400004081B2000004000040C7
5824:106BE00081B200000400004081B2000004000040B7
5825:106BF00081B200000400004081B2000004000040A7
5826:106C000081B200000400004081B200000400004096
5827:106C100081B200000400004081B200000400004086
5828:106C200081B200000400004081B200000400004076
5829:106C300081B200000400004081B200000400004066
5830:106C400081B200000400004081B200000400004056
5831:106C500081B200000400004081B200000400004046
5832:106C600081B200000400004081B200000400004036
5833:106C700081B200000400004081B200000400004026
5834:106C800081B200000400004081B200000400004016
5835:106C900081B200000400004081B200000400004006
5836:106CA00081B200000400004081B2000004000040F6
5837:106CB00081B200000400004081B2000004000040E6
5838:106CC00081B200000400004081B2000004000040D6
5839:106CD00081B200000400004081B2000004000040C6
5840:106CE00081B200000400004081B2000004000040B6
5841:106CF00081B200000400004081B2000004000040A6
5842:106D000081B200000400004081B200000400004095
5843:106D100081B200000400004081B200000400004085
5844:106D200081B200000400004081B200000400004075
5845:106D300081B200000400004081B200000400004065
5846:106D400081B200000400004081B200000400004055
5847:106D500081B200000400004081B200000400004045
5848:106D600081B200000400004081B200000400004035
5849:106D700081B200000400004081B200000400004025
5850:106D800081B200000400004081B200000400004015
5851:106D900081B200000400004081B200000400004005
5852:106DA00081B200000400004081B2000004000040F5
5853:106DB00081B200000400004081B2000004000040E5
5854:106DC00081B200000400004081B2000004000040D5
5855:106DD00081B200000400004081B2000004000040C5
5856:106DE00081B200000400004081B2000004000040B5
5857:106DF00081B200000400004081B2000004000040A5
5858:106E000081B200000400004081B200000400004094
5859:106E100081B200000400004081B200000400004084
5860:106E200081B200000400004081B200000400004074
5861:106E300081B200000400004081B200000400004064
5862:106E400081B200000400004081B200000400004054
5863:106E500081B200000400004081B200000400004044
5864:106E600081B200000400004081B200000400004034
5865:106E700081B200000400004081B200000400004024
5866:106E800081B200000400004081B200000400004014
5867:106E900081B200000400004081B200000400004004
5868:106EA00081B200000400004081B2000004000040F4
5869:106EB00081B200000400004081B2000004000040E4
5870:106EC00081B200000400004081B2000004000040D4
5871:106ED00081B200000400004081B2000004000040C4
5872:106EE00081B200000400004081B2000004000040B4
5873:106EF00081B200000400004081B2000004000040A4
5874:106F000081B200000400004081B200000400004093
5875:106F100081B200000400004081B200000400004083
5876:106F200081B200000400004081B200000400004073
5877:106F300081B200000400004081B200000400004063
5878:106F400081B200000400004081B200000400004053
5879:106F500081B200000400004081B200000400004043
5880:106F600081B200000400004081B200000400004033
5881:106F700081B200000400004081B200000400004023
5882:106F800081B200000400004081B200000400004013
5883:106F900081B200000400004081B200000400004003
5884:106FA00081B200000400004081B2000004000040F3
5885:106FB00081B200000400004081B2000004000040E3
5886:106FC00081B200000400004081B2000004000040D3
5887:106FD00081B200000400004081B2000004000040C3
5888:106FE00081B200000400004081B2000004000040B3
5889:106FF00081B200000400004081B2000004000040A3
5890:1070000081B200000400004081B200000400004092
5891:1070100081B200000400004081B200000400004082
5892:1070200081B200000400004081B200000400004072
5893:1070300081B200000400004081B200000400004062
5894:1070400081B200000400004081B200000400004052
5895:1070500081B200000400004081B200000400004042
5896:1070600081B200000400004081B200000400004032
5897:1070700081B200000400004081B200000400004022
5898:1070800081B200000400004081B200000400004012
5899:1070900081B200000400004081B200000400004002
5900:1070A00081B200000400004081B2000004000040F2
5901:1070B00081B200000400004081B2000004000040E2
5902:1070C00081B200000400004081B2000004000040D2
5903:1070D00081B200000400004081B2000004000040C2
5904:1070E00081B200000400004081B2000004000040B2
5905:1070F00081B200000400004081B2000004000040A2
5906:1071000081B200000400004081B200000400004091
5907:1071100081B200000400004081B200000400004081
5908:1071200081B200000400004081B200000400004071
5909:1071300081B200000400004081B200000400004061
5910:1071400081B200000400004081B200000400004051
5911:1071500081B200000400004081B200000400004041
5912:1071600081B200000400004081B200000400004031
5913:1071700081B200000400004081B200000400004021
5914:1071800081B200000400004081B200000400004011
5915:1071900081B200000400004081B200000400004001
5916:1071A00081B200000400004081B2000004000040F1
5917:1071B00081B200000400004081B2000004000040E1
5918:1071C00081B200000400004081B2000004000040D1
5919:1071D00081B200000400004081B2000004000040C1
5920:1071E00081B200000400004081B2000004000040B1
5921:1071F00081B200000400004081B2000004000040A1
5922:1072000081B200000400004081B200000400004090
5923:1072100081B200000400004081B200000400004080
5924:1072200081B200000400004081B200000400004070
5925:1072300081B200000400004081B200000400004060
5926:1072400081B200000400004081B200000400004050
5927:1072500081B200000400004081B200000400004040
5928:1072600081B200000400004081B200000400004030
5929:1072700081B200000400004081B200000400004020
5930:1072800081B200000400004081B200000400004010
5931:1072900081B200000400004081B200000400004000
5932:1072A00081B200000400004081B2000004000040F0
5933:1072B00081B200000400004081B2000004000040E0
5934:1072C00081B200000400004081B2000004000040D0
5935:1072D00081B200000400004081B2000004000040C0
5936:1072E00081B200000400004081B2000004000040B0
5937:1072F00081B200000400004081B2000004000040A0
5938:1073000081B200000400004081B20000040000408F
5939:1073100081B200000400004081B20000040000407F
5940:1073200081B200000400004081B20000040000406F
5941:1073300081B200000400004081B20000040000405F
5942:1073400081B200000400004081B20000040000404F
5943:1073500081B200000400004081B20000040000403F
5944:1073600081B200000400004081B20000040000402F
5945:1073700081B200000400004081B20000040000401F
5946:1073800081B200000400004081B20000040000400F
5947:1073900081B200000400004081B2000004000040FF
5948:1073A00081B200000400004081B2000004000040EF
5949:1073B00081B200000400004081B2000004000040DF
5950:1073C00081B200000400004081B2000004000040CF
5951:1073D00081B200000400004081B2000004000040BF
5952:1073E00081B200000400004081B2000004000040AF
5953:1073F00081B200000400004081B20000040000409F
5954:1074000081B200000400004081B20000040000408E
5955:1074100081B200000400004081B20000040000407E
5956:1074200081B200000400004081B20000040000406E
5957:1074300081B200000400004081B20000040000405E
5958:1074400081B200000400004081B20000040000404E
5959:1074500081B200000400004081B20000040000403E
5960:1074600081B200000400004081B20000040000402E
5961:1074700081B200000400004081B20000040000401E
5962:1074800081B200000400004081B20000040000400E
5963:1074900081B200000400004081B2000004000040FE
5964:1074A00081B200000400004081B2000004000040EE
5965:1074B00081B200000400004081B2000004000040DE
5966:1074C00081B200000400004081B2000004000040CE
5967:1074D00081B200000400004081B2000004000040BE
5968:1074E00081B200000400004081B2000004000040AE
5969:1074F00081B200000400004081B20000040000409E
5970:1075000081B200000400004081B20000040000408D
5971:1075100081B200000400004081B20000040000407D
5972:1075200081B200000400004081B20000040000406D
5973:1075300081B200000400004081B20000040000405D
5974:1075400081B200000400004081B20000040000404D
5975:1075500081B200000400004081B20000040000403D
5976:1075600081B200000400004081B20000040000402D
5977:1075700081B200000400004081B20000040000401D
5978:1075800081B200000400004081B20000040000400D
5979:1075900081B200000400004081B2000004000040FD
5980:1075A00081B200000400004081B2000004000040ED
5981:1075B00081B200000400004081B2000004000040DD
5982:1075C00081B200000400004081B2000004000040CD
5983:1075D00081B200000400004081B2000004000040BD
5984:1075E00081B200000400004081B2000004000040AD
5985:1075F00081B200000400004081B20000040000409D
5986:1076000081B200000400004081B20000040000408C
5987:1076100081B200000400004081B20000040000407C
5988:1076200081B200000400004081B20000040000406C
5989:1076300081B200000400004081B20000040000405C
5990:1076400081B200000400004081B20000040000404C
5991:1076500081B200000400004081B20000040000403C
5992:1076600081B200000400004081B20000040000402C
5993:1076700081B200000400004081B20000040000401C
5994:1076800081B200000400004081B20000040000400C
5995:1076900081B200000400004081B2000004000040FC
5996:1076A00081B200000400004081B2000004000040EC
5997:1076B00081B200000400004081B2000004000040DC
5998:1076C00081B200000400004081B2000004000040CC
5999:1076D00081B200000400004081B2000004000040BC
6000:1076E00081B200000400004081B2000004000040AC
6001:1076F00081B200000400004081B20000040000409C
6002:1077000081B200000400004081B20000040000408B
6003:1077100081B200000400004081B20000040000407B
6004:1077200081B200000400004081B20000040000406B
6005:1077300081B200000400004081B20000040000405B
6006:1077400081B200000400004081B20000040000404B
6007:1077500081B200000400004081B20000040000403B
6008:1077600081B200000400004081B20000040000402B
6009:1077700081B200000400004081B20000040000401B
6010:1077800081B200000400004081B20000040000400B
6011:1077900081B200000400004081B2000004000040FB
6012:1077A00081B200000400004081B2000004000040EB
6013:1077B00081B200000400004081B2000004000040DB
6014:1077C00081B200000400004081B2000004000040CB
6015:1077D00081B200000400004081B2000004000040BB
6016:1077E00081B200000400004081B2000004000040AB
6017:1077F00081B200000400004081B20000040000409B
6018:1078000081B200000400004081B20000040000408A
6019:1078100081B200000400004081B20000040000407A
6020:1078200081B200000400004081B20000040000406A
6021:1078300081B200000400004081B20000040000405A
6022:1078400081B200000400004081B20000040000404A
6023:1078500081B200000400004081B20000040000403A
6024:1078600081B200000400004081B20000040000402A
6025:1078700081B200000400004081B20000040000401A
6026:1078800081B200000400004081B20000040000400A
6027:1078900081B200000400004081B2000004000040FA
6028:1078A00081B200000400004081B2000004000040EA
6029:1078B00081B200000400004081B2000004000040DA
6030:1078C00081B200000400004081B2000004000040CA
6031:1078D00081B200000400004081B2000004000040BA
6032:1078E00081B200000400004081B2000004000040AA
6033:1078F00081B200000400004081B20000040000409A
6034:1079000081B200000400004081B200000400004089
6035:1079100081B200000400004081B200000400004079
6036:1079200081B200000400004081B200000400004069
6037:1079300081B200000400004081B200000400004059
6038:1079400081B200000400004081B200000400004049
6039:1079500081B200000400004081B200000400004039
6040:1079600081B200000400004081B200000400004029
6041:1079700081B200000400004081B200000400004019
6042:1079800081B200000400004081B200000400004009
6043:1079900081B200000400004081B2000004000040F9
6044:1079A00081B200000400004081B2000004000040E9
6045:1079B00081B200000400004081B2000004000040D9
6046:1079C00081B200000400004081B2000004000040C9
6047:1079D00081B200000400004081B2000004000040B9
6048:1079E00081B200000400004081B2000004000040A9
6049:1079F00081B200000400004081B200000400004099
6050:107A000081B200000400004081B200000400004088
6051:107A100081B200000400004081B200000400004078
6052:107A200081B200000400004081B200000400004068
6053:107A300081B200000400004081B200000400004058
6054:107A400081B200000400004081B200000400004048
6055:107A500081B200000400004081B200000400004038
6056:107A600081B200000400004081B200000400004028
6057:107A700081B200000400004081B200000400004018
6058:107A800081B200000400004081B200000400004008
6059:107A900081B200000400004081B2000004000040F8
6060:107AA00081B200000400004081B2000004000040E8
6061:107AB00081B200000400004081B2000004000040D8
6062:107AC00081B200000400004081B2000004000040C8
6063:107AD00081B200000400004081B2000004000040B8
6064:107AE00081B200000400004081B2000004000040A8
6065:107AF00081B200000400004081B200000400004098
6066:107B000081B200000400004081B200000400004087
6067:107B100081B200000400004081B200000400004077
6068:107B200081B200000400004081B200000400004067
6069:107B300081B200000400004081B200000400004057
6070:107B400081B200000400004081B200000400004047
6071:107B500081B200000400004081B200000400004037
6072:107B600081B200000400004081B200000400004027
6073:107B700081B200000400004081B200000400004017
6074:107B800081B200000400004081B200000400004007
6075:107B900081B200000400004081B2000004000040F7
6076:107BA00081B200000400004081B2000004000040E7
6077:107BB00081B200000400004081B2000004000040D7
6078:107BC00081B200000400004081B2000004000040C7
6079:107BD00081B200000400004081B2000004000040B7
6080:107BE00081B200000400004081B2000004000040A7
6081:107BF00081B200000400004081B200000400004097
6082:107C000081B200000400004081B200000400004086
6083:107C100081B200000400004081B200000400004076
6084:107C200081B200000400004081B200000400004066
6085:107C300081B200000400004081B200000400004056
6086:107C400081B200000400004081B200000400004046
6087:107C500081B200000400004081B200000400004036
6088:107C600081B200000400004081B200000400004026
6089:107C700081B200000400004081B200000400004016
6090:107C800081B200000400004081B200000400004006
6091:107C900081B200000400004081B2000004000040F6
6092:107CA00081B200000400004081B2000004000040E6
6093:107CB00081B200000400004081B2000004000040D6
6094:107CC00081B200000400004081B2000004000040C6
6095:107CD00081B200000400004081B2000004000040B6
6096:107CE00081B200000400004081B2000004000040A6
6097:107CF00081B200000400004081B200000400004096
6098:107D000081B200000400004081B200000400004085
6099:107D100081B200000400004081B200000400004075
6100:107D200081B200000400004081B200000400004065
6101:107D300081B200000400004081B200000400004055
6102:107D400081B200000400004081B200000400004045
6103:107D500081B200000400004081B200000400004035
6104:107D600081B200000400004081B200000400004025
6105:107D700081B200000400004081B200000400004015
6106:107D800081B200000400004081B200000400004005
6107:107D900081B20000B69F00889AB00000B69F0088AC
6108:107DA0009AB00000B69F00889AB00000B69F008885
6109:107DB0009AB00000B69F00889AB0000000000088CA
6110:107DC0009AB00100B69F414081320000B99F224025
6111:107DD0007B6F0000B69F194081B20000000019417E
6112:107DE0007BB30100000000A4C4B30100000000A1A7
6113:107DF000C6B3010000002FA2C8B301000814004060
6114:107E000049990100B09F004D9ACC0100C29F2640C5
6115:107E1000813200000000004C49C10100C09FA24116
6116:107E20009B500000C69F80808032000000005249B5
6117:107E3000FD9301000000004AFD930100C99F00422C
6118:107E4000CD9300000000514AFD930100000000495D
6119:107E5000FD930100C99F0043CB93000000005040F8
6120:107E600081B20100D99F004019990100000000F083
6121:107E70009AB001000000004449D10100000040F028
6122:107E800080B201000000414D80B20100D19F00404E
6123:107E90001999010000004C4081B20100000000442B
6124:107EA00049D10100000000F09AB001000000004D2F
6125:107EB00010B10000000000E249B10100000000E341
6126:107EC00043B10100000000E445B1010000000040A2
6127:107ED0007BB301000000484F40B10100D99F004032
6128:107EE00081B200000400004081B2000004000040A4
6129:107EF00081B200000400004081B200000400004094
6130:107F000081B200000400004081B200000400004083
6131:107F100081B200000000804081B0010004000040F8
6132:107F200081B200000400004081B200000400004063
6133:107F300081B200000400004081B200000400004053
6134:107F400081B200000400004081B200000400004043
6135:107F500081B200000400004081B200000400004033
6136:107F600081B200000400004081B200000400004023
6137:107F700081B200000400004081B200000400004013
6138:107F800081B200000400004081B200000400004003
6139:107F900081B200006A84004081B20000319A004042
6140:107FA00081B200000400004081B200004D9A004000
6141:107FB00081B200000400004081B200000000804057
6142:107FC00081B20100000000A810B1000004000040D0
6143:107FD00081B200000400004081B2000004000040B3
6144:107FE00081B200000400004081B2000004000040A3
6145:107FF00081B200000400004081B200000400004093
6146:1080000081B200000400004081B200000400004082
6147:0480100081B2000039
6148:00000001FF
diff --git a/firmware/slicoss/gbrcvucode.sys.ihex b/firmware/slicoss/gbrcvucode.sys.ihex
deleted file mode 100644
index bc7a83989c08..000000000000
--- a/firmware/slicoss/gbrcvucode.sys.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
1:10000000000200004775010004A01301001CB75B4B
2:10001000093000B65F01001C00000020183B783A50
3:10002000001CA27701001C071D017018AD7BF1FFB9
4:100030001CB37BA9AA1EB47B010C1CB57B29061C32
5:1000400000005064080C315A70040C315A80040CC2
6:10005000314E90040C314AA000092555C0040C31E2
7:1000600052B000E92455C004CCB3001C1CEB2D0198
8:10007000001C065652D408079D00001C7BB70200E6
9:1000800010A00F51540906565EC004A0307403003E
10:10009000AC30750300CD033A001C7BB702001C6036
11:1000A0008E5154092925750300808E5154098C30D6
12:1000B000910004471C01001CA00F5154090000646A
13:1000C0000004471C65C004471C7503006C30010028
14:1000D0001C4D3402001C7BB702001CA00F515409B8
15:1000E000C88337001C800100001C0000640004A0CD
16:1000F0000F505409000074C3047BFBF2001CCC3386
17:100100000D001CB47BFD031C800E505409E0FB0560
18:10011000001C0000AC0300B30F5154090000EC7048
19:10012000040000EC80040000AC93006176ADC304D1
20:10013000C08D515409E07B00C01FA0FDC50100CC5B
21:100140003305001CD403003C1CD4D31B001CC0D3BB
22:1001500052001C00007C13048E8E5254095B807E7A
23:100160001304000000001C0000940100A00F515473
24:1001700009A00F515409C003FC7F1CA001A001007D
25:100180000000A40100A00F515409C003FC031CF59A
26:100190007701001C267A02061CA00F515409B30FE8
27:1001A000515409B50202001CA00F5154097A7E0275
28:1001B000001CB50202001C530F525409AF0301008A
29:1001C0001C7A0E525409B50202001C000002001CE9
30:1001D000A03DAA11040000AC1104D4D352001CB5F8
31:1001E0003EB2010020FBFDFF1F802C8C0300B93ABA
32:1001F0009E0100753B02001CA71C010010DB83164A
33:10020000001CC71D21C104B93B8DC1048B2C01000A
34:100210001C6B2C35C1040000781100CB2C79C10473
35:10022000A00F515409A00F51540954D002001C4989
36:1002300025B10100AB2C81C104A71D750300CC338F
37:1002400009001CEB2D01001CEA2901001CA00F5124
38:100250005409AE0F515409A00F515409D407FC039F
39:100260001C993A02001CBB3802001C003800001C1C
40:100270000000FC0104DB3B7E001CC71D01001C26A6
41:100280007A16061C271D01001CB30F5154097A0E63
42:10029000525409530F5254097A0E525409530F52B3
43:1002A00054097A0E525409530F525409A00F515455
44:1002B000097A0602001C530F525409AF0301001CB7
45:1002C0007A0E525409530F5254097A0E525409535C
46:1002D0000F5254097A0E525409530F5254097A0E90
47:1002E000525409003D02001C0000581200CB2C01A2
48:1002F000001C753B02001CA71C010010A67BFD051D
49:100300001C000090C204A67BFD051C0000A8C204CE
50:10031000CB2F05001C602C00001CC71CE90200A0AC
51:100320000F515409530702001CC083F1321C000016
52:10033000600204467AE6051C7A0E525409C083F125
53:10034000321C000068020440FA15001C0000A802DC
54:1003500004467AE6051CA00F515409A00F51540918
55:10036000A00F515409A00F515409B37B01C01F7451
56:100370000E505409C0039C001C8000F802000000CD
57:10038000F802040000CC1205071D01001CD4D32B79
58:10039000001CD4D352001C80769D1304000000037F
59:1003A00000A67BB50310C79C00001C802C00001C1D
60:1003B00000007C0204000074C304AB2DF912050791
61:1003C0001DD5C2048B2D01001C692501001CA67BD4
62:1003D000B50310CB2F09001C602C00001C00006826
63:1003E0000300530F525409467AE6051C7A0E525404
64:1003F0000940FA15001C0000300304467AE6051C8B
65:10040000B50F515409A00F51540973EC4A0304600D
66:100410002C00001C0000480300C71C01001C000049
67:10042000481305071D01001CC0D722001C75569EED
68:100430001304602C00001CE71C650304E79C00000B
69:100440001CA67BB50310802C00001C0000180304C0
70:10045000000074C304B97B01001C0000ACC304CBD2
71:10046000AFFC071CCB2F01041CC79F80031C00009E
72:10047000ACC304CBAFFC071CCB2F0D041CC79F8063
73:10048000031C0000ACC304CBAF00F81DCB2F010050
74:100490001DA67BB5031CC79CACC3040000AC1305B0
75:1004A000071D01001CC01DFCD308279D040400A0EB
76:1004B000EE66D400FB75291404207B06001CC01CCA
77:1004C0003C04000000D0D308000020F400C0EFF28C
78:1004D000001C20257C140460B7F2030000002C15DA
79:1004E00000CCB3FC031CCC3305021C00002CC5045B
80:1004F00060B72E050400002C150400007CC404C065
81:100500001DB8F304000088C404079D00001C1B7480
82:100510001DF404A67B11041CA00F895409E07B0084
83:10052000FC1F397F02001C071DBDC304A67BCD0341
84:100530001C000088C404E01C00001C0000C403046C
85:10054000CBAF00F81DCB2F01101D0000CCC3040061
86:1005500000CC0304CBAF00F81DCB2F01181DC79FA3
87:10056000000B1C0000CCC304FB7501001C071D011F
88:10057000001CCCB3FC031CCC3301021C0000CCC318
89:1005800004A01C00001CA0EEC20304CBAFFC071C9F
90:10059000CB2F09041CFB7501001C0000CCC304CC4C
91:1005A000B3FC031CCC3301021C00002CC50400006A
92:1005B000983405CCB3FC031CCC3315021C479D7446
93:1005C000C4040000984400801D9C5404871DAD04A1
94:1005D00000CE7601001CEF76BDC404A477AD2409DB
95:1005E000E47601001CC47601001C0000B85404D756
96:1005F00076015018F67601001C000000301800004B
97:10060000000010CC3061C504EB2D01001CEA29016B
98:10061000001CC05901001CF57749C504E030FC04FA
99:1006200000004CD00400204C140500000008050018
100:10063000CCB3FC031CCC3309021CEB2DD5C404CC79
101:10064000B3FC031CCC3319021CEB2DD5C404CCB372
102:10065000FC031CCC330D021CEB2DD5C404CCB3FC25
103:10066000031CCC3311021CEB2DD5C404007B00808D
104:100670001CAE77610500000004C004D38B00FC1F92
105:10068000607A3C001C604CE00400C02F20051FE095
106:1006900030D004008025D00400B55BD10404692665
107:1006A00001001C6A2B01001C801D00001CA9256193
108:1006B0000500EE3000001CAF77210500B45F01405B
109:1006C00018079D645504B77601001C967601001C3E
110:1006D000471D01001CA433016018A42F0160186499
111:1006E000770160182477016018447701001C648842
112:1006F00003001CA43F01001CA43B01001C537B0011
113:10070000C01CD3CF1B001C534F02001CDACF00C00B
114:100710001FD5570F001CD3D337001CD4530F001C18
115:10072000E02900001CF5D5CC05000000B855047781
116:100730005601001C565301001C0000001018000058
117:1007400004C004F55501001C0000D0550477560183
118:10075000001C565301001C0000001018000004C0CB
119:1007600004CB2F011810CB2F011010CB2F01081034
120:10077000CB2F010810CB2F012010CB2F010010CB65
121:100780002F012810892571C20400000CC304000049
122:1007900074C304000074C304000074C30400007038
123:1007A000C20400000CC304000074C304000074C33E
124:1007B00004000074C304401C6CC004401C9CC004B2
125:1007C000A77775C3040000C4C004271DF1C004004E
126:1007D0000074C304000074C304000074C304000068
127:1007E00048C604000048C604000048C6040000488B
128:1007F000C604000048C604000048C604000048C6FD
129:1008000004000048C604000048C604000048C604AE
130:10081000000048C604000048C604000048C60400A2
131:100820000048C604000048C604000048C604000092
132:1008300048C604000048C604000048C6040000483A
133:10084000C604000048C604000048C604000048C6AC
134:1008500004000048C604000048C604000048C6045E
135:10086000000048C604000048C604000048C6040052
136:100870000048C604000048C604000048C604000042
137:1008800048C604000048C604000048C604000048EA
138:10089000C604000048C604000048C604000048C65C
139:1008A00004000048C604000048C604000048C6040E
140:1008B000000048C604000048C604000048C6040002
141:1008C0000048C604000048C604000048C6040000F2
142:1008D00048C604000048C604000048C6040000489A
143:1008E000C604000048C604000048C604000048C60C
144:1008F00004000048C604000048C604000048C604BE
145:10090000000048C604000048C604000048C60400B1
146:100910000048C604000048C604000048C6040000A1
147:1009200048C604000048C604000048C60400004849
148:10093000C604000048C604000048C604000048C6BB
149:1009400004000048C604000048C604000048C6046D
150:10095000000048C604000048C604000048C6040061
151:100960000048C604000048C604000048C604000051
152:1009700048C604000048C604000048C604000048F9
153:10098000C604000048C604000048C604000048C66B
154:1009900004000048C604000048C604000048C6041D
155:1009A000000048C604000048C604000048C6040011
156:1009B0000048C604000048C604000048C604000001
157:1009C00048C604000048C604000048C604000048A9
158:1009D000C604000048C604000048C604000048C61B
159:1009E00004000048C604000048C604000048C604CD
160:1009F000000048C604000048C604000048C60400C1
161:040A00000048C604E0
162:00000001FF
diff --git a/firmware/slicoss/oasisdbgdownload.sys.ihex b/firmware/slicoss/oasisdbgdownload.sys.ihex
deleted file mode 100644
index 18b376a9f8ad..000000000000
--- a/firmware/slicoss/oasisdbgdownload.sys.ihex
+++ /dev/null
@@ -1,5124 +0,0 @@
1:1000000002000000004000000000010000000000AD
2:10001000008000001500004081B200001B0000407D
3:1000200081B200002100004081B2000003000040C6
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B2000000808F981831000010000098A5
10:1000900080E40100000041988094010000000040CD
11:1000A00081B201001000009880E401000E00409829
12:1000B000809400001100004081B200000000004068
13:1000C000A59901001900294081320000190014BCD3
14:1000D000803200000E0093BC8032000000005040CF
15:1000E00081B201000080004081B200001000004099
16:1000F000A59901001F002940813200001F0014BC97
17:1001000080320000120093BC80320000000050409A
18:1001100081B201000180004081B200002000004057
19:10012000A59901002500294081320000250014BC5A
20:1001300080320000140093BC8032000000000049AF
21:10014000DD810100120100408132010033010040D5
22:10015000813201002A0014BC80320000FE0013BC72
23:10016000803200005495004045990100FFFF004097
24:10017000E599010000002F4049B101000000004056
25:10018000E1B1010000000040FDB3010000000040AB
26:10019000FFB30100330018EE803200000000005071
27:1001A00089B001003200A24189500000990000404E
28:1001B000813201003094004043990100000000F8B2
29:1001C00020B10100000000FAE0B30100390098EE10
30:1001D00080320000000000FB80B001003B0080F393
31:1001E000DE33000000000047FD9301003E0083F372
32:1001F00080320000F00000F38088010001800040A0
33:100200002EDD0100009400404399010000000046EB
34:1002100043C10100000000FA24B101007C0018EE87
35:1002200080320000450095E880320000FFFF00E8C2
36:10023000808801007C0026408132000000000040E0
37:10024000D5990100000000F2ECB30100000000F8B5
38:10025000D6B1010008000040D5990100000000F06F
39:10026000D6B10100FF0000F8EE8B0100080100404C
40:10027000D5990100FF0000F0808C0100000000F71C
41:100280008194010000000040D6B10100FF0000F899
42:10029000808801003C000040D5990100FF0000F07B
43:1002A000D68D0100FFFF00F0F0DB010000000048E8
44:1002B00081E00100000000F8819401003C01004051
45:1002C000D599010000000040D6B10100FF0000F800
46:1002D000808801000000004881E00100000000F873
47:1002E000819401003C020040D599010000000040CB
48:1002F000D6B101002C000040D5990100000000F8A3
49:10030000D6B101001E0000F082F40100FF3F00F8AA
50:1003100080D80100640026408132000000000041C6
51:1003200081D00100FFFF004080D8010000000041A3
52:100330008094010000000040D8B10100680022FA5A
53:10034000803000000000004C81E00100010000400E
54:1003500080CC010000000040DEB10100000100403F
55:10036000D5990100100000FA80E40100000000F6B9
56:100370008194010000000040D6B10100000200405D
57:10038000D5990100100000FA80E40100000000F699
58:100390008194010000000040D6B101000600004039
59:1003A000D5990100100000FBD6E5010007000040D0
60:1003B000D5990100180000FBD6E501004800004077
61:1003C000D5990100100000FAD6E501005000004068
62:1003D000D5990100100000FBD6E50100030000FBE9
63:1003E0007A890100000000F0DCB101007C00004CC3
64:1003F000DD9100007C0095E88430000000002FE9CA
65:10040000FAB3010000000040D1B10100FF0000423A
66:10041000808801003400004080CE01007C00A640AE
67:1004200081320000850000408132010002802240BC
68:10043000803200007C00004081B200000000004FCC
69:1004400081B001008E0009F9813200008C0008F9AA
70:100450008132000098001FFDF93300008B009EFDE3
71:10046000813200000000004AF39301000000804840
72:10047000F3930100000000FDF7B301000000804984
73:10048000F3930100000000FC19B1010093000AF988
74:1004900081320000000040FB81B20100000041FDFC
75:1004A00081B20100000780F9F38F0100000742F9D3
76:1004B000F38F01009700A2FFF76F00000000434098
77:1004C00081B201000000A2FFFBEF0000000080FCF1
78:1004D000E1B101000000804081B0010000940040C3
79:1004E00047990100BB000040813201000000A24694
80:1004F000FD7F01000094004047990100CE000040BC
81:10050000813201000000A244FD7F01000094004000
82:100510004599010000000040F1B10100FF7F00405B
83:10052000F5990100FF7F0040F59901009A13004002
84:10053000F599010007000040F59901000100004015
85:10054000F599010000020040F59901000200004009
86:10055000F599010000020040F599010003010040F7
87:10056000F599010000000040F59901009A13004040
88:10057000F59901000B000040F59901008000004052
89:10058000F599010000000040F599010000000040CD
90:10059000F599010007000040F599010008000040AE
91:1005A000F5990100B0020040F599010000000040FB
92:1005B000F599010000000040F59901000229004072
93:1005C000F599010000000040F59901000067004026
94:1005D000F599010000000040F599010080000040FD
95:1005E000F599010000008040F599010000000045E8
96:1005F000FD83010000000046FD830100FF7F0040F5
97:1006000025990100C4000040813201000000A2448D
98:1006100080B2000000000045FD930100E2000040B0
99:10062000833001000000A2458032010000008046B6
100:10063000FD9301000010004083980100DD000040A0
101:100640002B3101000000A24688B0000000000041EC
102:1006500089B00100000000948CB00100FFFF00464B
103:1006600080880100A5A5A24080CE000000000048BF
104:100670008DF00100C90082418940000000008040E7
105:1006800089B0010000000044FD830100D400004057
106:10069000813201000000A24480B20000E2000008A4
107:1006A000833001000000A245803201000000804438
108:1006B000FD93010000300008839801008000004095
109:1006C0002B990100DB000040893001000000A246A8
110:1006D00080B20000FFFF009480880100A5A5A24021
111:1006E000804E01000000804389B001000384004176
112:1006F0002C990100DE00004081B200000388004117
113:100700002C990100000000208DB0010000009F9690
114:1007100080B20000DF00A2418D5000000000804048
115:1007200081B20100FF7F0040259901000000004CCC
116:1007300089E00100DD000044821401000000909473
117:100740008AB0000000000045F0B101001000004533
118:1007500088F401000000004489D00100DD0000445D
119:100760002B410100EC00084180320000ED000094B4
120:1007700024B100001000009424F501000000009452
121:10078000F0B10100F200A04489500000DD000044F7
122:100790002B41010000000094F0B10100EF00204463
123:1007A000895000001000004588F40100000000FAA4
124:1007B0008AB001000000A34289D00000F700A0FA2F
125:1007C0008A400000000000418BC00100F500A342F8
126:1007D00089500000FFFF0045888801001000004597
127:1007E0008AF40100FC0090448A40000000000041AF
128:1007F0008BC00100FFFF00458AA801000000805067
129:100800008BE00100FF7F0040259901007C00004043
130:100810002B9901000030004083980100DD000008A2
131:1008200083140100000000942AB101000080004000
132:10083000F99B0100DD0000FC19310100000040942B
133:1008400080B20100DD0000442B4101000000419412
134:1008500080B2010000000041F9C301000000004423
135:100860002BC1010004019F948032000002800040EF
136:1008700081B200001001005193B000001001004D42
137:1008800093B000001001004993B000000000004246
138:1008900093B001001001A24193500000000080407D
139:1008A00081B201000000104081B20100000011403F
140:1008B00081B201000000124081B20100000013402B
141:1008C00081B201000000144081B201000000154017
142:1008D00081B201000000164081B201000000174003
143:1008E00081B201000000184081B2010000001940EF
144:1008F00081B2010000001A4081B2010000001B40DB
145:1009000081B2010000001C4081B2010000001D40C6
146:1009100081B2010000001E4081B2010000001F40B2
147:1009200081B201000000704081B2010000007140FE
148:1009300081B201000000724081B2010000007340EA
149:1009400081B201000000744081B2010000007540D6
150:1009500081B201000000764081B2010000007740C2
151:1009600081B201000000784081B2010000007940AE
152:1009700081B2010000007A4081B2010000007B409A
153:1009800081B2010000007C4081B2010000007D4086
154:1009900081B2010000007E4081B2010000007F4072
155:1009A00081B201000000804081B2010000040040DB
156:1009B000A199010000000050A1D1010000000040F9
157:1009C0001BB001000000004019B001000000004011
158:1009D00017B001000000004015B001000000004009
159:1009E00013B001000000004011B001000000004001
160:1009F0000FB00100000000400DB0010000000040F9
161:100A00000BB001000000004009B0010000000040F0
162:100A100007B001000000004005B0010000000040E8
163:100A200003B001000000004001B001003B0120487C
164:100A3000A15100000000804081B201004701224B1B
165:100A4000747D00000000804081B201006000004B16
166:100A500060990100000000B17EB101004801A8408A
167:100A6000813200004501004081B200000500804055
168:100A700097980100180000AA9688010000008043A2
169:100A800097F00100070000AA96880100000080404E
170:100A900081B201000000005807900100D89F00407B
171:100AA00081B2000000000044A5B30100D80200405C
172:100AB00081320100F8020040813201000000005C38
173:100AC00007900100D89F0040BFB300005A0122CC1C
174:100AD000857F00000000005107900100D89F004072
175:100AE00081B200000000004049B10100AE0300CB1C
176:100AF000A3C90100D0140040A19B01000000002008
177:100B000046B1010000000048F1B10100000000D032
178:100B1000F1B10100000000CAF1B10100000000D5F0
179:100B2000E1B10100070000406199010020000020B0
180:100B300062DD01006301A84081320000000000CCAA
181:100B400085930100F802004081320100D01400407A
182:100B500043990100000000FABAB30100000000FA56
183:100B6000A4B30100000000F8BCB3010000142F4042
184:100B700081B00100000000E7A7B30100000000D829
185:100B8000A9B30100FF0000DD8188010002000040E0
186:100B900080F401007301004080C80100860100DD7F
187:100BA000813200000000004010B1000087010040C9
188:100BB00081B200008801004081B20000890100403C
189:100BC00081B200008A01004081B200008B01004028
190:100BD00081B200008D01004081B200008F01004011
191:100BE00081B200005001004081B20000B601004017
192:100BF00081B200005001004081B20000C4010040F9
193:100C000081B20000C501004081B2000082020040B4
194:100C100081B200008302004081B22800B802004087
195:100C200081B22800D49F004081B22800D59F0040A7
196:100C300081B22800D69F004081B22800D79F004093
197:100C400081B228007201004181C02800550151493C
198:100C5000FD9328005501524AFD932A00550155493C
199:100C6000FD832A005501564AFD832A0050019181D7
200:100C700080302A005501454081B22A0050019182FE
201:100C800080302A005501464081B22A000000004011
202:100C900089B02B0000002F4081B0010000140040FB
203:100CA00049990100B30122DEE16D00000000004C13
204:100CB00049C101000000004181C001009201A2442D
205:100CC000816C00000000004C49D101009A012240D3
206:100CD000E16D00009601A2418150000050010041E9
207:100CE000BFB3000000000042BFB301005001A00FDD
208:100CF000BD6F0000000000DEE1B101000000004413
209:100D000049C10100B50100401999010000004240AD
210:100D100081B20100000043FF85B00100000000DE49
211:100D200019B10100000042FF87B00100000043FF3D
212:100D3000E1B101000000004449C1010000002FFFA3
213:100D4000E1B10100081400A480CC0100AA012640F2
214:100D5000813200000000004185C00100A801A24CC2
215:100D600081500000B40122D281320000AF01224143
216:100D7000A56F00005001A2E081320000000000D207
217:100D8000C1B301000000005C8990010000004042F6
218:100D900080B201000000414380B20100000000F079
219:100DA0008894010055010044E0B10000B101004801
220:100DB00049C10000AF01005B89900000A89F00A01E
221:100DC0009EB000000000004083B00100001400400D
222:100DD000499901000000234081B00100BE0122DEDC
223:100DE000E16D00000000004C49C10100000000411D
224:100DF00081C00100B901A244816C00005001004390
225:100E0000BFB30000000000F818B10100000040F876
226:100E100080B20100000041F080B2010000000040FB
227:100E2000F1B1010000000040F1B1010055010040A6
228:100E3000E1B10000C601004091B000000000004197
229:100E400091B00100D0142E4049B1010005000040CE
230:100E5000A39B0100080000DD81F40100CB010040EC
231:100E600080C801000000004010B10000D101004026
232:100E700081B00000530100DEA1B30000E301004097
233:100E800081B20000E501004081B00000EB010040AC
234:100E900081B20000520100DFE1B10000000000D08B
235:100EA000BAB30100000000DEA1B10100020000D2CF
236:100EB000A5E70100000000D2C1B30100000000005E
237:100EC000F0B10100DB012244C1530000DA0184418A
238:100ED00081400000DE01004081320100000000D0AE
239:100EE00045B10100D5010041A1C10000DA02004076
240:100EF00081320100F802004081320100550100DD1D
241:100F0000A1B100000000004081B00100400000409D
242:100F1000A59B0100DA02004081320100400000D3AD
243:100F2000A7CB0100F80200E0A5B3000003000040D9
244:100F3000A39B0100530100DEA1B3000000000044A8
245:100F4000BFB30100000000DE819001005001A2BA91
246:100F500080040000600000DE61990100E801A8B192
247:100F60008030000052010040E0B10000000000D0DD
248:100F7000BAB301006B020040819801006002004D8D
249:100F80008330010000000044E1B301000000004490
250:100F9000E3B3010000000044E5B301000000004499
251:100FA000E9B3010000000044EBB30100000000447D
252:100FB000F5B3010000000044F7B301000000004455
253:100FC000F9B30100F90122408F6F00007802004060
254:100FD00081980100600200C7833001008002004058
255:100FE000819801006002004283300100000000E8A7
256:100FF000F1B10100000000E9F1B10100000000EAD8
257:10100000F1B10100000000EBF1B10100000000852A
258:10101000F0B10100000000ECF1B10100000000EDB2
259:10102000F1B10100000000B2F0B10100000000A920
260:10103000F0B10100000000ACF0B10100000000AB15
261:10104000F0B10100000000B8F0B10100000000B9EB
262:10105000F0B10100000000BAF0B10100000000BBD7
263:10106000F0B101000C02B8408130000000000040E7
264:10107000819001000E02B940813200000000004161
265:10108000819001001002BA4081320000000000424D
266:10109000819001001202BB40813200000000004339
267:1010A000819001001402BC40813200000000004425
268:1010B000819001001602BD40813200000000004511
269:1010C000819001001802BE408132000000000046FD
270:1010D000819001001A02BF408132000000000047E9
271:1010E000819001001C02C8408132000000000048CD
272:1010F000819001001E02C9408132000000000049B9
273:10110000819001002002CA40813200000000004AA4
274:10111000819001002202CB40813200000000004B90
275:10112000819001002402CC40813200000000004C7C
276:10113000819001002602CD40813200000000004D68
277:10114000819001002802CE40813200000000004E54
278:10115000819001002A02CF40813200000000004F40
279:10116000819001002C02F04081320000000000500C
280:10117000819001002E02F1408132000000000051F8
281:10118000819001003002F2408132000000000052E4
282:10119000819001003202F3408132000000000053D0
283:1011A000819001003402F4408132000000000054BC
284:1011B000819001003602F5408132000000000055A8
285:1011C000819001003802F640813200000000005694
286:1011D000819001003A02F740813200000000005780
287:1011E000819001003C02F84081320000000000586C
288:1011F000819001003E02F940813200000000005958
289:10120000819001004002FA40813200000000005A43
290:10121000819001004202FB40813200000000005B2F
291:10122000819001004402FC40813200000000005C1B
292:10123000819001004602FD40813200000000005D07
293:10124000819001004802FE40813200000000005EF3
294:10125000819001004A02FF40813200000000005FDF
295:101260008190010000000040F0B10100400000400A
296:10127000A59B0100D802004081320100F802004025
297:1012800081320100D0142E06A5B30100400000D326
298:10129000A7CB0100000000F0F1B10100000000F157
299:1012A000F1B10100000000F2F1B10100000000F412
300:1012B000F1B10100000000F5F1B10100000000FAF9
301:1012C000F1B10100000000FBF1B10100000000FCE1
302:1012D000F1B10100000000EBF1B10100000000EEEF
303:1012E000F1B10100000000EFF1B10100000000F3D6
304:1012F000F1B10100000000F6F1B10100000000FDB5
305:10130000F1B10100DB0100C7E1B100000000804045
306:1013100081B20100660200488032000000005140A6
307:101320001AB1010000004D4081B2010000004540AB
308:1013300081B201006302A241835000005F02494074
309:1013400081B20000000052401CB1010000004E407C
310:1013500081B201000000464081B201006802A24152
311:10136000835000005F024A4081B20000000000A0EC
312:101370009EB0010000000080D8B30100000000A171
313:10138000D0B30100000000A2D2B30100000000A40D
314:10139000D4B30100000000D0D6B30100000000D19A
315:1013A000DCB30100000000D2DEB3010000000088C1
316:1013B000DAB30100000000D48EB30100000000D3B6
317:1013C000E6B30100000000ACECB30100000000999E
318:1013D000FAB30100000000D5E0B30100000000D521
319:1013E000E2B30100000000D5E4B30100000000D525
320:1013F000E8B30100000000D5EAB30100000000D509
321:10140000F4B30100000000D5F6B30100000000D5E0
322:10141000F8B30100000000C7A9B101000000004FAF
323:1014200040B101008402004091B000000000004182
324:1014300091B0010007000040A39B0100080000DDFF
325:1014400081F401008802004080C8010000000040D3
326:1014500010B100008D02004081B2000098020040EF
327:1014600081B2000098020046A3B300009B02004036
328:1014700081B20000A102004081B200008F0223501F
329:10148000A56F000000000050A5B30100E802004273
330:10149000A5630100F802004081320100D0142D4004
331:1014A00049B10100000000D0BAB30100000000DE25
332:1014B000A1B10100000000F800B001009702224431
333:1014C000A553000094020041A1C10000550100DDB8
334:1014D000A1B10000E80200DEA1330100F8020040E3
335:1014E000813201005501004081B20000000000453A
336:1014F000BFB301005001A2D2777D0000000000D2EE
337:1015000061B10100000000DE63B101009E02A8404D
338:10151000813200005501004081B20000E802005411
339:10152000A5330100F802004081320100D0142D40A3
340:1015300049B10100000000F8D0B30100000000F83C
341:10154000D2B30100000000F8D4B30100000000F89D
342:10155000D6B30100000000F808B10100AC02004061
343:10156000819801006002004683300100550100406F
344:1015700081B20000000000A09EB00100000000E861
345:1015800043B10100000000E945B10100000000EA9C
346:1015900049B10100000000EBA1B101000000004FC3
347:1015A00040B101000400004081B20000040000408E
348:1015B00081B200000400004081B20000040000403D
349:1015C00081B200000400004081B20000040000402D
350:1015D00081B20000D0142E4049B101000500004046
351:1015E000A39B010000000040C1B30100080000DD22
352:1015F00081F40100BD02004010C90000C3020005D3
353:1016000081B000005001004081B20000CB02000513
354:1016100081B000005001004081B20000D0020044BF
355:10162000A5B30000D2020044A5B3000002000040B0
356:10163000A4E70100000000E081B10100FFFF00C14C
357:10164000F0890100C802224181500000C40200411B
358:10165000C1C30000DA02004081320100F8020040FC
359:10166000813201005501004081B2000002000040BB
360:10167000A4E70100000000E091B10100FFFF00C9F4
361:10168000F0890100C802224181500000CC020041D3
362:10169000C1C30000FFFF00DE85890100C80200C24F
363:1016A000E0B10000FFFF00DE95890100C80200CA1A
364:1016B000E0B100000400004081B2000004000040DE
365:1016C00081B200000400004081B20000040000402C
366:1016D00081B20000000000E7A7B30100000000D8BD
367:1016E000A9B301000000004049B10100AE0300CBE6
368:1016F000A3C901000000002046B10100000000D293
369:10170000F1B10100000000D3F1B10100000000D4EC
370:10171000F1B10100000000D0E1B10100000000D1F2
371:1017200061B101002000002062DD0100E202A8405A
372:1017300081320000000080CC85930100040000404D
373:1017400081B200000400004081B2000004000040AB
374:1017500081B20000000000E7A7B30100000000D83C
375:10176000A9B301000000004049B10100AE0300CB65
376:10177000A3C901000000002046B10100000000D212
377:10178000F1B10100000000D0F1B10100000000D370
378:10179000F1B10100E10200D4E1B100000400004019
379:1017A00081B200000400004081B20000040000404B
380:1017B00081B200000400004081B20000040000403B
381:1017C00081B200000400004081B20000040000402B
382:1017D00081B200000000A2CC85FF00000000005094
383:1017E00081B00100FA02A24181500000F902A2F288
384:1017F00080300000000080CC8583010004000040A0
385:1018000081B200000400004081B2000004000040EA
386:1018100081B20000B5030040A199010000002F41F2
387:1018200099B301000A032244816C0000120322488C
388:10183000816C00000C03224C816C000016032250C6
389:10184000816C000017032254816C00001903225898
390:10185000816C00001E03225C816C0000500100407E
391:1018600081B20000000000BC09B00100DD9F00CA89
392:1018700001B000000000004003B001000000004182
393:10188000F38301001003A242056C00000000004138
394:1018900005B00100DD9F22CA07140000DD9F00454E
395:1018A000F3930000DD9F2043956F0000DD9F80CA09
396:1018B00005300000DD9F220180300000DD9F00CB5D
397:1018C000DB910000570100BCABB30000000000BC7E
398:1018D000B1B30100DD9F00CACFB30000FF0000CA12
399:1018E00081880100DD9FA240747D000060002040DF
400:1018F000609901001B03A8B1823000001A03004068
401:1019000081B20000DD9F00CA79B3000004000040EE
402:1019100081B200000000004E81B0010000000043D1
403:10192000CB8301000000454081B201002203A241A7
404:10193000815000000000454081B201000000454098
405:1019400081B201002D039182823000000000008AE4
406:1019500080B00100AE9F004080CE01002B03A64066
407:10196000813200002D03564081B20000B5030040D3
408:10197000A19901000000005307900100B503004049
409:10198000A19901000000005207900100D89F00417A
410:101990008BB300000000004E81B001000000004247
411:1019A000CD8301000000464081B201003203A24114
412:1019B000815000000000464081B201000000464016
413:1019C00081B201003D039181823000000000008956
414:1019D00080B00100AE9F004080CE01003B03A640D6
415:1019E000813200003D03554081B20000B503004044
416:1019F000A19901000000005207900100B5030040CA
417:101A0000A19901000000005307900100D89F0041F8
418:101A10008BB30000B0030040A1990100C4142F4013
419:101A200099B301005701004049B100000400004093
420:101A300081B200000400004081B2000004000040B8
421:101A400081B200000400004081B2000004000040A8
422:101A500081B200003094004043990100009000F8EA
423:101A600080980100100000F288E40100200000408E
424:101A7000209901000000005F239101004D031F9198
425:101A80008032000030000040209901000000005F1B
426:101A90002391010050031F9180320000400000405C
427:101AA000209901000000005F2391010053031F9162
428:101AB000803200000000005F2391010055031F9158
429:101AC000803200000008804020990100040000409E
430:101AD00081B200000000004784B001000000A2486D
431:101AE000848400000000005F61B101000000005C20
432:101AF0008F9001000000004762B101005A03A84026
433:101B000081320000000800478EC801005803005CC5
434:101B10008F800000E00000406199010058152D40C1
435:101B20008DB00100D0142DF088B00100000000FA43
436:101B30008AB001000000004581B0010007000045A7
437:101B400082880100000000438BF001000000004883
438:101B500083E0010000000046829401002000004163
439:101B600060990100000000418DC001007403225FF4
440:101B70008D6C00006503A2418150000063030040AA
441:101B800081B2000008000040859801000000004478
442:101B900082B001000000004186B00100001C00433B
443:101BA00086D801000000A641855001007003004165
444:101BB00083E000006E030040813201000000004815
445:101BC00085E00100D0142F468494010020000042DB
446:101BD00060990100C0000040619901000000804050
447:101BE00081B201000400004081B200000400004006
448:101BF00081B200000400004081B2000004000040F7
449:101C000081B200000400004081B2000004000040E6
450:101C100081B20000070000458088010000000043F9
451:101C20008BF0010000040040839801008503A0416F
452:101C3000815000008303004182E8000000008041E1
453:101C40008EC001000400004081B20000040000408A
454:101C500081B200000000004049B1010000020040D4
455:101C600083980100003900404599010000000040C0
456:101C7000F1B101008B03A24183500000000000403D
457:101C800085B001000B00004482F401001A1500A683
458:101C900086B0010070150040459901000008004021
459:101CA000F199010000000042F0B10100003900404C
460:101CB000E1990100040000406199010070150043A2
461:101CC000629901009503A840813200009703225ACF
462:101CD000737D00007A000040619901009803A8B16B
463:101CE0007E3100000008004284C801009003A24138
464:101CF000835000000000804081B2010004000040D9
465:101D000081B200000400004081B2000004000040E5
466:101D100081B2000058152D408DB00100D0142DF077
467:101D200088B00100000000408FB00100010000A653
468:101D300090B0010000F800489098010000000045B4
469:101D400093B00100000000FA8AB001008003004057
470:101D500081320100020000A680B00100AC032240E5
471:101D6000826C0000B0030040813201005803004043
472:101D700081320100000000418DC00100B503225FE7
473:101D80008D6C0000A703A24193500000A503004002
474:101D900081B20000FF070047848801000000A640D0
475:101DA00081B20000ED9F0047803001000002004733
476:101DB0008EC80100B003004081B200000000004462
477:101DC00050B30100BB032018896C0000040000A67A
478:101DD00084B00100200000A686B001000010004081
479:101DE000559B0100BE03004081B20000040000A624
480:101DF00084B00100200000A686B001000010004061
481:101E0000559B01000000004250D30100000000A8D3
482:101E10004FB30100000000434ED301006E030040A9
483:101E2000813201008203004280300100B003004093
484:101E300081320100C70322A78F6C00005A030040C3
485:101E400081320100C403004081B2000000008040E4
486:101E500081B20100C8142EBB85B00100000000EE65
487:101E600082B0010000000041E0B10100000000A2CA
488:101E7000A0B3010000000044A5B30100E19F00CA27
489:101E8000A7330100E09F004081B200000400004041
490:101E900081B20000D6032242756F0000D8032241B0
491:101EA000756F0000DA031ECA81320000DC031FCA0E
492:101EB00081320000000000CAC9B10100DD9F00426C
493:101EC00075B30000000000CACDB10100DD9F0041E4
494:101ED00075B30000000000CACFB10100DD9F0040D3
495:101EE00075B30000008100A6C6B10100DD9F00406F
496:101EF00081B20000008000A6C6B10100DD9F004055
497:101F000075B300000400004081B2000004000040EE
498:101F100081B200004501004D933001004501004EA3
499:101F2000933001004501004C93300100EC9F0040CC
500:101F300081320100DD9F004081B2000004000040BA
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200005495004045990100DD9F00CA00
503:101F6000E5B100000400004081B200000400004020
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B20000CC142E4087B00100000000A2E6
507:101FA000A0B3010015040043B2330100000068DA59
508:101FB00089B001007C0000408B98010000000050B7
509:101FC00089F001000000004189D0010003000044B5
510:101FD000888C01000000004487C00100000000411F
511:101FE000A5B3010015040043B2330100000000DA7C
512:101FF000F1B101000000004487C001000000004171
513:10200000A5C301000B042244895000000B042244A4
514:102010008B500000FA03A250A56F000000000042A0
515:10202000A5E30100000000CAA7B30100E19F00BBC7
516:1020300085300100CC142ED295C30100AE0300CB35
517:10204000A3C901000000002042B1010000000050BF
518:1020500081B001000804A241815000000704A2F2EF
519:1020600080300000FA030040A5B3000000000042E9
520:10207000A5E30100000000CAA7B30100E19F00BB77
521:1020800085300100E09F004081B200000400004064
522:1020900081B20000000000D92BB101000010004007
523:1020A00083980100DB00004081320100FFFF0094B3
524:1020B000B48B01000000804081B20100000000D913
525:1020C0002BB101000010004083980100DD000040AA
526:1020D0008132010000008094B4B30100040000408C
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B20000000000D92BB10100000000DAFC
531:1021200027B1010006C000402D990100DE000040EB
532:1021300081320100001000408398010002C4004178
533:102140002C990100DE000040813201000040004077
534:1021500083980100058200412C990100DE000040B7
535:10216000813201002D048094803200000C01004077
536:10217000813201002804004081B200000480004048
537:102180002D990100DE0000408132010000008040F6
538:1021900081B201003104001210C9000000488040E3
539:1021A0000B980100C04980400B980100804B804093
540:1021B0000B980100404D80400B980100004F80407B
541:1021C0000B980100C05080400B9801008052804065
542:1021D0000B980100405480400B980100005680404D
543:1021E0000B980100C05780400B9801008059804037
544:1021F0000B980100405B80400B980100005D80401F
545:102200000B980100C05E80400B9801008060804008
546:102210000B980100406280400B98010000648040F0
547:102220000B980100C06580400B98010080678040DA
548:102230000B980100406980400B980100006B8040C2
549:102240000B980100C06C80400B980100806E8040AC
550:102250000B980100407080400B9801000072804094
551:102260000B980100C07380400B980100807580407E
552:102270000B980100407780400B9801000079804066
553:102280000B980100C07A80400B980100807C804050
554:102290000B980100407E80400B9801000400004034
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200005904001210C900000080804043
559:1022E0000B980100008280400B9801000084804020
560:1022F0000B980100008680400B9801000088804008
561:102300000B980100008A80400B980100008C8040EF
562:102310000B980100008E80400B98010000908040D7
563:102320000B980100009280400B98010000948040BF
564:102330000B980100009680400B98010000988040A7
565:102340000B980100009A80400B980100009C80408F
566:102350000B980100009E80400B98010000A0804077
567:102360000B98010000A280400B98010000A480405F
568:102370000B98010000A680400B98010000A8804047
569:102380000B98010000AA80400B98010000AC80402F
570:102390000B98010000AE80400B98010000B0804017
571:1023A0000B98010000B280400B98010000B48040FF
572:1023B0000B98010000B680400B98010000B88040E7
573:1023C0000B98010000BA80400B98010000BC8040CF
574:1023D0000B98010000BE80400B98010004000040F3
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000000004087B1010000000040D0
579:1024200097B001000000004B80B10100010000A640
580:1024300082B1010082048541974000000000004005
581:1024400097B101000000004097B001000000004B70
582:1024500090B10100010000A692B1010087048541FE
583:10246000974000000000804081B20100040000405D
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B2000090046040813200000000001210
587:1024A00080B10100FFFFF04B82890100930460407E
588:1024B000813200000000004A80B101000100F0A656
589:1024C00082B101009604604081320000FFFF004BA2
590:1024D000848901000000F0C224B001000000004A1D
591:1024E00090B10100FFFF804B928901000000004A7B
592:1024F00090B10100010080A692B10100FFFF004BE6
593:1025000094890100000080CA94B0010004000040DA
594:1025100081B200001000004E98E4010000000007A6
595:10252000989401000000004399E001000000008041
596:10253000989401000000004999E001000000004C5F
597:1025400088940100A604474081320000AD04222097
598:10255000876F000000001F4081B2010000000040B2
599:1025600081B201000000004081B201000000004083
600:1025700081B20100A604004081B2000000001F806B
601:1025800086B30100B004224F777D0000C0040040F4
602:10259000813201000000004F61B1010000000044E1
603:1025A00062B10100B104A84081320000B804224B9E
604:1025B000897C0000B604224F777D0000C0040040F3
605:1025C000813201000000004562B10100B604A8405C
606:1025D000813200000000802087B301000400004029
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000000005099B001006F0000403E
611:1026200061990100C104A8B152330000C604224BD5
612:10263000537F00006F00004061990100C404A8B1FD
613:102640007E310000C104A241995000000000A24F59
614:1026500077FD00000400004081B20000040000404B
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200001000004E98E401000000000725
619:1026A000989401000000004399E0010000000080C0
620:1026B000989401000000004899E00100D604004C05
621:1026C00088940000D604474081320000DD042220B7
622:1026D000876F000000001F4081B201000000004031
623:1026E00081B201000000004081B201000000004002
624:1026F00081B20100D604004081B2000000001F80BA
625:1027000086B30100E004224F777D0000F004004012
626:10271000813201000000004F61B10100000000445F
627:1027200062B10100E104A84081320000E804224ABD
628:10273000897C0000E604224F777D0000F004004011
629:10274000813201000000004562B10100E604A840AA
630:10275000813200000000802087B3010004000040A7
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000000005099B001006F000040BD
635:1027A00061990100F104A8B152330000F604224AF5
636:1027B000537F00006F00004061990100F404A8B14C
637:1027C0007E310000F104A241995000000000A24FA8
638:1027D00077FD00000400004081B2000004000040CA
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200007B000040619901000005A8B171
643:102820008030000012051D4080320000401800403A
644:1028300049990100040000A686B001001005A240DD
645:1028400086040000DE9F9C4080320000FFFF0040B5
646:1028500088880100300500504731010036000044EF
647:1028600088CC01000C055240813200003005004048
648:10287000473101000000004189B0010030050048E7
649:10288000473101003005000547310100DE9F00405F
650:1028900081B200002800004047991B00DE9F0041E4
651:1028A000E1C11A007818004049991B00190522540B
652:1028B000817C1A001405424081321A00008200B364
653:1028C00067DF1B0000001A4493931B0028000040A0
654:1028D00047991B00300500418930010027050F4052
655:1028E00080320000FF7F00408888010030050050E2
656:1028F000473101003600004488CC01001F05994093
657:10290000803200000000004889D0010021059B4072
658:10291000803200000000004C89D0010023051F44D4
659:1029200080320000300500404731010000000041C6
660:1029300089B00100300500484731010030050058DA
661:1029400047310100DE9F004081B2000010000040CE
662:1029500086F401006F00004386880100DE9F260593
663:10296000473100003005004189300100DE9F004002
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000000A044F041010000000040AE
667:1029A00081B2010000008041E1C10100040000404B
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200004C010007913001000000A240CC
671:1029E00097EC00000000800591C001000400004049
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200004C010040813201004405A24017
675:102A2000976C00003A000040B39B01004505004050
676:102A300081B2000040000040B39B01001004004040
677:102A400081320100000000DAF5B1010010040042FB
678:102A5000B3430100000000DAF5B1010010040042A8
679:102A6000B3430100000000DAF5B101004E00004060
680:102A7000B39B01001004004081320100080000DA1D
681:102A8000F7F5010050000040919801000000004758
682:102A90008FB0010010040048B2330100000000DADA
683:102AA000F7B10100080000DAF7F50100000000426C
684:102AB00091C001005005A2418F500000000000416C
685:102AC00045D1010008000040B39B01001004004004
686:102AD00081320100000000DAFDB101000A0000406F
687:102AE000B39B01001004004081320100000000DAB5
688:102AF000FDB101001A000040B39B0100100400402A
689:102B000081320100000000DAFDB101001800004030
690:102B1000B39B01001004004081320100000000DA84
691:102B2000FDB1010038050040813201001E0000485F
692:102B3000B2CB01001004004081320100000000DA35
693:102B400091C0010000000048B2CB01001004004019
694:102B50008132010000006EDA8FB0010002000048EF
695:102B6000B2CB01001004004081320100000000DA05
696:102B7000FDB1010004000048B2CB01001004004088
697:102B800081320100000080DAFDB101000400004044
698:102B900081B200007A052245FD7F0000401600400A
699:102BA00045990100DB9F00404931010008000048C1
700:102BB000B2CB010015040040813201007805A2402B
701:102BC0008F6C00007D052220B56F00007A05004063
702:102BD00081B20000DA9F004081321F007D05224053
703:102BE000976C1E007A05424081321E000000004FA3
704:102BF00067931F00DF9F005867931E005416004024
705:102C000047991F00000000FEF4B11F0000000040C3
706:102C100081B21F00000000FEF4B10100000000407E
707:102C200081B20100000000FEF4B10100000000408C
708:102C300081B20100000000FEF4B10100000000407C
709:102C400081B20100000000FEF4B10100000000406C
710:102C500081B20100000000FEF4B10100000000405C
711:102C600081B20100000000FEF4B101004600004006
712:102C7000B39B01001004004081320100080000DA1B
713:102C8000F7F501004800004095980100000000445D
714:102C900097B001001004004AB2330100000000DACE
715:102CA000F7B10100080000DAF7F50100000000426A
716:102CB00095C001009005A241975000002A000040F5
717:102CC000A59B010040160040A19B0100000000CA26
718:102CD000A7B30100E19F00BB85300100E09F0040E9
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B20000B8052245FD7F0000E0150040AB
723:102D2000479901001A0000A280DC01000000005059
724:102D3000F1B10100F0150040F1990100000000CA56
725:102D4000F1B101000700004061990100200000403E
726:102D500062DD0100A705A8BBE131000000000050C2
727:102D600083B00100AA05A24183500000A905A2F288
728:102D7000823000004C01004081320100B005A240C9
729:102D8000976C00003A000040B39B0100B105004081
730:102D900081B2000040000040B39B0100F0150040EC
731:102DA000439901001004004081320100B805A2FAE5
732:102DB000B46F000010040042B3430100B805A2FA4A
733:102DC000B46F000010040042B3430100BB0522FAB7
734:102DD000B46F0000B8054240813220000000004E70
735:102DE00067932100DF9F0058679320004016004042
736:102DF00045992100DB9F004049312100F615004034
737:102E0000439921005C1600404599210000006EFAAC
738:102E10008EB021000000004081B20100000000FEE1
739:102E2000F4B101000000004081B20100000000FE8A
740:102E3000F4B101000000004081B20100000000F088
741:102E4000B4B30100C905A2408F6C0000FC1520201E
742:102E5000E1B10100CE05004081B22400DA9F0040BC
743:102E600081322500CE052240976C2400CB054240DC
744:102E7000813224000000004F67932500DF9F005837
745:102E80006793240038050040813225001E00004869
746:102E9000B2CB25001004004081320100D30522503E
747:102EA000B56F00000000005091C001000000004814
748:102EB000B2CB0100F615004043990100200400F256
749:102EC000B433010002000048B2CB0100F815004005
750:102ED00043990100200400F2B433010004000048CB
751:102EE000B2CB0100FA15004043990100200400F222
752:102EF000B433010008000048B2CB0100FC150040CB
753:102F000043990100000000F094B00100FFFF004A67
754:102F1000B48B010020040040813201000A00004807
755:102F2000B2CB01001000004AB4F7010020040040B9
756:102F30008132010038050040813201001E00004846
757:102F4000B2CB01001004004081320100E90522509B
758:102F5000B56F0000EA050050B5B300000000004066
759:102F6000B5B301002004004081320100E09F004021
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B2000000160040479901003031004026
763:102FA000F599010032330040F599010034350040B5
764:102FB000F599010036370040F59901003839004095
765:102FC000F599010041420040F59901004344004059
766:102FD000F599010045460040F59901004748004039
767:102FE000F5990100494A0040F59901002C00004084
768:102FF0008398010000000040F7B10100FC05A241E8
769:103000008350000080162E0683B00100360000FBBE
770:10301000F6A90100FF05A2418350000022000040F4
771:1030200083980100000000FBF6B101000206A241F6
772:10303000835000006200004095980100DC9F004032
773:103040008132010000162D0683B001008016004079
774:10305000459901005C0000FBF6A901000806A241A9
775:103060008350000000000070F9B101000000007101
776:10307000F9B1010000000072F9B101000000007315
777:10308000F9B1010000000074F9B1010054000040E2
778:1030900095980100DC9F0040813201000000007023
779:1030A00095B0010014062270B56F00000000804149
780:1030B00097B001000000804097B00100040000407C
781:1030C00081B200000400004081B200000400004012
782:1030D00081B20000456700A6E0B201000123007044
783:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
784:1030F000E39A0100BA9800A6E4B20100FEDC007277
785:10310000E59A0100321000A6E6B201007654007381
786:10311000E79A0100D2C300A6E8B20100F0E1007412
787:10312000E99A01008016004A44C901000000000726
788:1031300081B001000000004A80D001000000004082
789:10314000F7B101002506A241815000008016004A17
790:1031500044C90100FC162A47E7B501000300004AF4
791:10316000E8E50100000000408DB001005003004080
792:10317000A399010080163D468DE00100000000503B
793:1031800089B00100000000FC40B0010000000041D7
794:10319000A3C101002E06A24189500000000000706A
795:1031A000EBB2010000000071EDB2010000000072FE
796:1031B000EFB2010000000073F1B2010000000074E2
797:1031C000F3B201000000004083B001000F00004195
798:1031D0008088010050030040A2C901004B06A050A6
799:1031E000836C00000D00004098C801000000004FF3
800:1031F000998401005003004CA2C901000000002086
801:1032000086B001000800004098C801000000004F8F
802:10321000998401005003004CA2C901000000002065
803:1032200086A401000200004098C801000000004F81
804:10323000998401005003004CA2C901000000002045
805:1032400086A4010050030040A2C901000000004311
806:1032500040A401000100002088E401000000005F9C
807:1032600041F0010000000044409401000500007599
808:1032700089E401001B00007585F401000000004492
809:10328000849401005506A353836C0000000000766F
810:1032900089B00100000000778984010000000076F9
811:1032A0008BB00100000000208BA40100000000781A
812:1032B0008B840100640600458894000027000041CB
813:1032C00080CE01005A06AA4081320000000000763C
814:1032D00089B001000000007789A40100640600782D
815:1032E00089A400003B00004180CE01005706AA409F
816:1032F000813200000000007689B0010000000077F4
817:1033000089840100000000768BB001000000007885
818:103310008B840100000000458894010000000077C4
819:103320008BB00100000000788B840100640600452A
820:10333000889400000000004484C00100000000796F
821:1033400085C001000000002084C001006B06A3536B
822:10335000836C0000825A00A684C001009979004263
823:1033600084C801007806004081B2000027000041B7
824:1033700080CE01007006AA4081320000D96E00A6FE
825:1033800084C00100A1EB004284C80100780600401F
826:1033900081B200003B00004180CE01007506AA40CA
827:1033A000813200001B8F00A684C00100DCBC0042FB
828:1033B00084C801007806004081B2000062CA00A6FD
829:1033C00084C00100D6C1004284C8010078060040D4
830:1033D00081B2000000000078F3B201000000007725
831:1033E000F1B201001E00007689E4010002000076BF
832:1033F000EFF6010000000044EE96010000000075A9
833:10340000EDB2010000000042EAB2010000000041FC
834:1034100083C001004F00004180CE010037062A40E2
835:103420008132000000000075E1C20100000000765A
836:10343000E3C2010000000077E5C20100000000784F
837:10344000E7C2010000000079E9C201002B068141BA
838:103450008D4000000000804081B201000400004067
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B2000000000050FD9301004016004082
843:1034A00045990100DB9F00404931010008000048B8
844:1034B000B2CB01001504004081320100B906224060
845:1034C0008F6C0000DA9F004081320100B906A240F3
846:1034D000976C00005E160040439901007C1620F6B0
847:1034E000E0B101000000004031B301009D06224F11
848:1034F0008F7C000000000051FD9301009F062240D8
849:103500008F7C0000A3060054FD930000A106224218
850:103510008F7C000000000052FD930100A3062241B1
851:103520008F7C000000000053FD930100B70622517C
852:10353000FD7F000038050040813201000C0000488A
853:10354000B2CB01001004004081320100B206A2405B
854:10355000B56F00001E000048B2CB01001004004807
855:1035600096300100000000DA97C001000400004B13
856:10357000B2CB010010040040813201000E0000486F
857:10358000B2CB010020040040813201000C00004851
858:10359000B2CB010000000030B5B3010020040040B0
859:1035A000813201000E000048B2CB0100100400403F
860:1035B00081320100B6062240B56F0000BA06005401
861:1035C000FD93000000000051FD8301001C0000FE7F
862:1035D0007FD90100BA06A6408132000000000055E4
863:1035E000FD9301000000804081B201000400004012
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B20000E79F004081320100C406225CB5
867:103620001F7C0000E39F00881CB00000E99F005C45
868:103630001F00010000002E0548B1010000000040FD
869:10364000E1B1010004002D0348B10100000000F0C9
870:103650003CB001002800001402C801000000000175
871:1036600034B0010000002D0532B001002200000539
872:103670000AC801001000000348C90100000000F85A
873:1036800018B00100000000F804B00100000000F8CC
874:103690000EB001000C0000A40CC80100EA9F00401D
875:1036A000813201000000004023B001000A0722011E
876:1036B0008032000000003C4423E0010000002EA402
877:1036C00080B001000000001048C10100D906A30726
878:1036D000026C0000DA0668011AB0000000006807FA
879:1036E0001AB001000000000D02D00100000000052A
880:1036F000F0B101000000000CF0B101000000000278
881:10370000E0B101000000000D0AC00100EC062240FB
882:10371000036C0000E6062242236C0000000000411A
883:1037200023C001000000004761B10100200000A497
884:1037300062DD01002307284081320000E3060040DB
885:1037400081B200000000001080C0010000000047AE
886:1037500061B101000000004062B10100E806A8402C
887:1037600023300000E39F00881CB0000023070040C6
888:1037700081B200000000001080C00100000000477E
889:1037800061B101000000004062B10100EE06A840F6
890:1037900023300000E39F00881CB0000022000019C5
891:1037A00048C9010000002D1448C101000F0000F2BB
892:1037B0003A880100000000423BE001000E000014C6
893:1037C00002C801000000001D02C00100FA06231A11
894:1037D000025000000000004603C001002307000162
895:1037E00034C000000C002D1D48C10100F00000F2A3
896:1037F000308801000000004231F001000000001498
897:1038000002B001000000001D02C00100000000180D
898:1038100002C001000207221A025000002307000123
899:1038200034C000002200001948C9010002002D1414
900:1038300048C10100000000F614B001000000001DA6
901:1038400014D001000000001814D001000000001E78
902:1038500024B001001200001710C801002307001A4D
903:1038600010C0000000003C4423E00100000000A460
904:1038700086B0010000002E1048C101000F07A312FE
905:103880000E6C0000100760071AB000000000601204
906:103890001AB001000000680D16940100FFFF000B34
907:1038A00016D8010000000008F0B101000000000C73
908:1038B000F0B1010000000002E0B1010000000010C2
909:1038C00086C001000000004661B1010020000043F5
910:1038D00062DD01001707A85C1F1000004007220DE1
911:1038E000145000004007220D245000000000000D7D
912:1038F00010C001001E072242236C00002307004174
913:1039000023C000000000004661B10100400000102B
914:1039100062DD01001F07A85C1F000000E39F008814
915:103920001CB000000000004023B001003F07A20DC2
916:103930000E5000002E0722461F7C000000000046AB
917:103940001F8001003080001042C901002C0722F2C4
918:10395000640600000000004761B101004000001053
919:1039600062DD01002907A84081320000E39F008842
920:103970001CB0000020800003469901000000005F99
921:10398000E191010000002D0648B10100000000F89F
922:1039900018B00100000000F804B0010033071FF068
923:1039A0000E300000D306004C0DC0000000002E5F5A
924:1039B0000F800100D3062307146C000030000010B4
925:1039C00048C9010024000040F199010000000003F3
926:1039D000F0B1010000000000F0B10100000000168D
927:1039E000F0B101002400000000C801000000004701
928:1039F00061B10100200000A462DD01003C07A8467F
929:103A00001F100000D30600030CB00000D306000D09
930:103A100018C000005F07A2441F7C000000000019CE
931:103A20000AB001002200000548C901000A002D1457
932:103A300048C1010002002040E5B10100040020401F
933:103A4000E5B101000D002D1D48C10100090000F382
934:103A5000388801000D002050E7B1010004002D401E
935:103A60003FB00100000000F432B00100040020402B
936:103A7000E1B101002200000548C9010000002D1439
937:103A800048C101000200001D94F401000000004044
938:103A900091B001005207A0FC9040000000000041DE
939:103AA00091C001005007A24195500000000000A401
940:103AB00096B0010004002E0548B101000000004846
941:103AC000F0B101000000004B48B1010000000018F7
942:103AD00048C101000200001894F4010000002D18F4
943:103AE00090B001005C07A0FC904000000000004185
944:103AF00091C001005A07A241955000000000004803
945:103B0000E0B1010010002040E5B1010004002D05E6
946:103B100048B10100000000F880B02D00000000F066
947:103B200016B02D002200000548C92D000000001429
948:103B300048C12D00640743303D072C000000009E63
949:103B400085B02D0000001B413DC32D000400204224
950:103B5000ECB12D000000001E82B0010002002E1DFD
951:103B600082C001000000661882C00100000000420F
952:103B700080C001006E07A0418044000000000041A9
953:103B800081C001001000004092F401000A002E30B4
954:103B900081840100720790409240000000000041C3
955:103BA00093C001000000662093A401000000001DE6
956:103BB00048C1010004002019E8B101000000001E06
957:103BC00016C001007807A01916440000000000414B
958:103BD00017C001000D002F1E32C001007D07A2405A
959:103BE000156C00007C07A01C16400000000000417E
960:103BF00017C00100000063F33894010010000005B5
961:103C000048C9010004002E1E98B001000000601A8F
962:103C100098C001000C002040E1B101008B07224652
963:103C20001F7C0000000000461F8001003080001053
964:103C300042C90100890722F2640600000000004723
965:103C400061B101004000001062DD01008607A8405C
966:103C500081320000E39F00881CB000002080000338
967:103C6000469901000000005FE191010030800010E2
968:103C700044C901001200001AF0C901000000001739
969:103C8000F0B1010010000005E0C901003000001093
970:103C900080C801000000004461B101002000004024
971:103CA00062DD01009107A840813200009B07225C81
972:103CB0001F7C000000003C4423E0010000002D10A8
973:103CC00048C101009B0722F2640600000000004684
974:103CD00061B101004000001062DD01009807A840BA
975:103CE00081320000E39F00881CB00000EB9F005C65
976:103CF0001F00010020002F0548B101000000000B4B
977:103D0000E4B101000000005017F00100A10790F29B
978:103D1000164000000000004117C0010000006620AE
979:103D200017A40100100000142AC801000000001DA3
980:103D30002AC00100000000502BE00100000000F24A
981:103D40002A9401003080001042C90100AC0722F221
982:103D5000640600000000004461B101004000001052
983:103D600062DD0100A907A84081320000E39F0088BE
984:103D70001CB000000080001710DC0100C9072240C1
985:103D8000156C0000B407A2441F7C00000000004432
986:103D90001F900100B307229F136C000002000088EF
987:103DA0001CCC0100E49F004081B2000000000041F3
988:103DB0003FC30100E69F004081320100B707A241E6
989:103DC000877C00000000001E3EC00100C9072240A1
990:103DD000156C0000BA07201E146C00000000000AD9
991:103DE0003CB00100E59F001E24300100BF072208FF
992:103DF0002E3000000000005211C001000000001A27
993:103E000010C001002307004017B00000E49F0088A5
994:103E10001CB00000E59F004081320100BC07A208F1
995:103E20002E300000808000A604B001000600004093
996:103E300087980100008000034499010004002204D7
997:103E4000E0310000E89F001F8C30010000000040BE
998:103E50000FB00100E29F005C1F9000000080000393
999:103E60004499010004002204E0310000E69F004074
1000:103E700081320100CE07A241877C0000CF07001EDF
1001:103E80003EC000000000001F8CB001000000004098
1002:103E900005B00100E89F00400F300100E29F005C88
1003:103EA0001F9000000400004081B2000004000040A8
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B20000F70700BC8D
1022:103FD00080B200000380004081B2000003800040F6
1023:103FE00081B200000380004081B2000003800040E5
1024:103FF00081B200000380004081B2000003800040D5
1025:1040000081B200000380004081B2000003800040C4
1026:1040100081B200003180004081B200003480004055
1027:1040200081B200003580004081B2000004000040F1
1028:1040300081B200001B80818080320000E787A240AF
1029:10404000916F00000000004C90B301005C952EA21F
1030:1040500080B00100FF000080F489010090952AC81B
1031:10406000E5B10100000000A1F0B101000000004036
1032:10407000F0B10100000000A4F0B10100000000D088
1033:10408000F0B10100000000D1F0B10100000000D249
1034:10409000F0B101000000004CF0B10100000000D4BC
1035:1040A000F0B10100000000D3F0B10100000000EE0B
1036:1040B000F0B101000000004EF0B10100000000402E
1037:1040C00044B1010018801181983000000000514077
1038:1040D00081B201001A801182983000000000524025
1039:1040E00081B20100E7870048FD930000B60300405D
1040:1040F000A19901002380A242FD7F00002080008062
1041:1041000080320000228011818230000022805140E4
1042:1041100081B2000022801182823000002280524051
1043:1041200081B200002C800048FD93000027800080B1
1044:10413000803200002680A253077C0000000051530B
1045:10414000079001002A800052079000002980A252A7
1046:10415000077C00000000525207900100000000534D
1047:104160000790010000000048FD9301000000004698
1048:10417000F39301005C952EA252B30100FF00008072
1049:10418000F48901000000004CE4B10100000000A926
1050:1041900045B101003080004C80B200000000454075
1051:1041A00081B201000000554081B20100C682054085
1052:1041B00049B10000C682054049B100000000054039
1053:1041C00049B101004C010040813201000000004B68
1054:1041D000DEB2010000000040FD9301000000004835
1055:1041E000FD830100020000409B9B0100000000A530
1056:1041F0009CB30100480300408132010058952044DF
1057:10420000E0B101000494004043990100000000F275
1058:1042100024B10100000C00EE968801000000004A65
1059:1042200097F001004480A243976C00000000004218
1060:10423000FD93010000C000A636B10100D01400407B
1061:104240004799010005000040F59901000038004041
1062:10425000F599010000060040F599010003000040B7
1063:10426000F599010005100040F59901000209004090
1064:10427000F599010004000040F59901006003004039
1065:10428000813201008803004081320100A003004018
1066:1042900081320100B982004081320100B1820040C8
1067:1042A0008132010060952040E1B10100709520400D
1068:1042B000E1B1010000000049DD9101000000004073
1069:1042C00091B30100000000407BB30100A0980040C2
1070:1042D000813201000000004085B301005C95204060
1071:1042E000E1B101003C8200408132010090060040B3
1072:1042F000813201000000005F2F810100A281004097
1073:1043000081320100A5980040813201000000454043
1074:1043100081B201000000554081B2010001830040DC
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200002800004047990100C682004158
1079:10436000E1C1000078180040499901001905225464
1080:10437000817C00006C80424081320000008200B4E9
1081:1043800069DF010000001A449393010028000040F7
1082:10439000479901001805004081B200000400004068
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B2000055820040813201007D80224080
1087:1043E000976C00007A804240813200000000004F4C
1088:1043F00069930100438100586993000054160040FE
1089:1044000047990100000000FEF4B101008005004062
1090:1044100081B2000080804240813200000000004EE6
1091:1044200069930100438100586993000040160040E1
1092:10443000459901004005004049310100F615004052
1093:10444000439901005C1600404599010000006EFA96
1094:104450008EB00100C105004081B2000004000040A0
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200009680004081B200005582004049
1099:1044A0008132010096802240976C00009380424048
1100:1044B000813200000000004F6993010043810058E1
1101:1044C0006993000038050040813201001E00004859
1102:1044D000B2CB0100D005004081B2000004000040D2
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200008302004081B20000B802004076
1107:1045200081B20000D49F004081B20000D59F0040BE
1108:1045300081B20000D69F004081B20000D79F0040AA
1109:1045400081B200007201004181C000005501514953
1110:10455000FD9300005501524AFD9300005501554955
1111:10456000FD8300005501564AFD83000050019181F2
1112:10457000803000005501454081B200005001918219
1113:10458000803000005501464081B20000000000402C
1114:1045900089B00100000000F880B00100000000F0C8
1115:1045A00016B001002200000548C9010000000014F7
1116:1045B00048C10100B48043303D0700000000009E68
1117:1045C00085B0010000001B413DC3010004002042F2
1118:1045D000ECB101000000A240916F0100000000401A
1119:1045E00049B10100AE0300CBA3C9010000000020C7
1120:1045F00046B10100C480A240E16D0000000000D27D
1121:10460000F1B10100000000D3F1B10100000000424F
1122:10461000F0B101000000004561B101002000002060
1123:1046200062DD01000000A8D0E1B10000C1800040BF
1124:1046300081B20000000000A898B001000480004092
1125:104640008BB30000B1030040A1990100C980A242D0
1126:10465000976F000000000045A1C1010000000000AC
1127:1046600080B001000000A2048094000080153F4249
1128:1046700097E301000000004049B101000000600321
1129:10468000029401000000004007B00100040000CBCC
1130:1046900099CB0100000000CCF3830100D380A2423B
1131:1046A000976F0000000000CBF3930100AE0300CB36
1132:1046B000A3C901000000002044B101000000004433
1133:1046C000F1B1010000000000F0B1010000000004A1
1134:1046D000F0B10100000000A1E0B1010005000040C0
1135:1046E000619901002000002062DD0100DA80A8400D
1136:1046F00081320000F9020020423101000000A24195
1137:10470000056C0100000080CBDB9101000000194125
1138:104710008BB301006000004061990100E080A8B106
1139:104720008C3300006000004061990100E280A8B174
1140:1047300094330000E88014C681320000180000C6DF
1141:1047400083F401002283224F83040000C4800040D0
1142:1047500081B20000FF0100C681880100000000C690
1143:1047600097A30100C4801F5C975300006D821EC692
1144:1047700081320000F2802248FD7F0000F280225842
1145:10478000816C0000F2802248816C0000C000004073
1146:1047900084CC0100F2809F428032000022830040DE
1147:1047A00081B20000C480A2C68F060000C4801EC66D
1148:1047B0008132000000002F4381F00100F6800040AC
1149:1047C00010C900004481004081B200007E81004099
1150:1047D00081B20000398200CA63B3000075810040D5
1151:1047E00081B200005581004D83B000006081004E11
1152:1047F00061B100004C81004085B000005581004C43
1153:1048000083B000002E81004085B00000F881004098
1154:1048100049B1000086810040C1B10000F481004030
1155:1048200081B200004C81004085B00000F0030040E0
1156:1048300049B10000228300CA9BB300009081004070
1157:10484000C1B1000094810040C1B100009B810040D3
1158:10485000C1B100009C810040C1B100009D810040B9
1159:10486000C1B100009E810040C1B100009F810040A5
1160:1048700081B000009F81004181B000002D82004086
1161:1048800081B20000AE8200BBABB300003A8200CA26
1162:10489000CFB30000C803004049B10000E803004066
1163:1048A00081B20000C480004081B200002283004039
1164:1048B00081B20000E003004081B20000228300CA00
1165:1048C00077B300005681004D83B000005E81004E3A
1166:1048D00061B100004C8100BB85B000005681004CE6
1167:1048E00083B000004C8100BB85B000002E8100BB6E
1168:1048F00085B000002081004081B20000228300CA00
1169:104900004DB300007005004049B10000A005004013
1170:1049100049B10000268122428F6F00002881224188
1171:104920008F6F00002A811ECA813200002C811FCAAD
1172:1049300081320000000000CAC9B101002283004298
1173:104940008FB30000000000CACDB1010022830041F6
1174:104950008FB30000000000CACFB1010022830040E5
1175:104960008FB30000008100A6C6B101002283004081
1176:1049700081B20000008000A6C6B101002283004081
1177:104980008FB30000781800404999010010002F9C57
1178:1049900089B00100468100403933010018002F9B87
1179:1049A00089B00100468100403733010000002F9A92
1180:1049B00089B00100468100403533010008002F997D
1181:1049C00089B001004681004033330100008000AE11
1182:1049D00047C90100C480A240E16D00008000004092
1183:1049E000F1990100000000CAF1B10100000000428D
1184:1049F000F0B1010040180040E199010000000045BD
1185:104A000061B10100200000AE63DD0100418128405A
1186:104A1000813200003E81004081B20000418142406D
1187:104A2000813200000000005C6993010022831A4477
1188:104A3000939300004481424081320000438100583A
1189:104A40006993000000000044F0D101000000A44080
1190:104A500081B200004B81A240E16D000000000044E3
1191:104A600045D1010000008040E1B10100000080411B
1192:104A7000E1D101004C81375C61310000000000424F
1193:104A800062B1010052812840813200004D81225CD8
1194:104A9000777D0000C480174081B200004D81004046
1195:104AA00081B20000000000CA63B101005281A84039
1196:104AB000813200002283174081B2000057810040FC
1197:104AC00081B00000578100BB81B0000000000041B0
1198:104AD00060B10100C480A241767D0000000000406A
1199:104AE00062B101005981A84081320000000000CA73
1200:104AF00063B1010022832840813200005B810040C5
1201:104B000081B200005095004047990100618100BBCF
1202:104B100087B0000050952F4087B00100658122408A
1203:104B2000957F0000C480A240E16D0000C480224057
1204:104B3000956F0000228360409583000002002DF0F5
1205:104B400084B00100C4802240856C0000C480A24073
1206:104B5000857C0000C480A24E777D000069813640CC
1207:104B6000813200000000004262B101006A81A84069
1208:104B7000813200000000004362B101006C81A84056
1209:104B800081320000000000CA63B101006E81A840BC
1210:104B9000813200000000164081B201007481224180
1211:104BA00043510000000800CA95CB01006881004114
1212:104BB00085C0000022830040E1B100007781A2425D
1213:104BC000676F00000000004167B301007781424039
1214:104BD000813200000000004065B301000000004089
1215:104BE0009383010000001ACA6997010022832640BE
1216:104BF000813200007C8142408132000022831A44CD
1217:104C000093930000C4802043956F0000228380CAE4
1218:104C10006733000022832240656F0000C480A248F1
1219:104C2000DB7D00002283006FDB91000085000040E7
1220:104C30008132010035802240803200002283004012
1221:104C400081B2000000000058959301000000005F51
1222:104C5000959301008C81A244216F00000000005F49
1223:104C6000958301000000005E95930100000000574D
1224:104C700095930100000000CAC3B101008F81225B3F
1225:104C8000957F00000000004BFD930100228300404F
1226:104C900081B200001BFD00CA959B01000D0100CAF6
1227:104CA000C53101000000005F95830100228300CA26
1228:104CB000C5B10000DF6F00CA959B010000000055E0
1229:104CC00095930100000000CAC7B101002283225F52
1230:104CD000957F00000D010040813201000000005F5F
1231:104CE00095830100228300CAC7B10000228300CA55
1232:104CF000C9B10000228300CACBB10000228300CAE0
1233:104D0000CDB10000228300CACFB1000000002E42C6
1234:104D100081E001009814004048C90100228300CAC4
1235:104D2000E1B100000000004009B10100200000A630
1236:104D300082B00100A481A25E0B7D000000800041D2
1237:104D400008990100A681A25E0B7D0000208000A6CC
1238:104D500008B10100A8819F8582300000000000306A
1239:104D600083840100DD812230836C0000A781A24F83
1240:104D70000B7D00000000004121B30100028000A66D
1241:104D800082B0010028820040813201001000004101
1242:104D900084E40100038000A682B001002882004064
1243:104DA00081320100F0FF00418688010000000043CD
1244:104DB000849401000F0000A686B0010010C40043D7
1245:104DC00086980100BD81A243846C0000000000436E
1246:104DD00021B30100200000A682B001001C000041A8
1247:104DE00082DC0100BA81A25E0B7D0000040000415C
1248:104DF00008990100CF81004081B20000410100A666
1249:104E000086B00100500C004386980100C281A24385
1250:104E1000846C00000000004121B30100CF810040FC
1251:104E200081B20000410100A686B00100600C004381
1252:104E300086980100CF81A243846C000000000042EC
1253:104E400021B30100188000A682B001002882004032
1254:104E500081320100FFFF004182880100007700419C
1255:104E6000828C010001020041829801002000004173
1256:104E700082DC01001800004182DC0100CD81A25ECD
1257:104E80000B7D00000000004108B10100200000A6D9
1258:104E900082B00100D081A25E0B7D00004013004172
1259:104EA00008990100D8812243216F0000200000A64C
1260:104EB00082B001001200004182DC0100D581A25EB7
1261:104EC0000B7D00000004004108990100F3810040BF
1262:104ED00081B20000200000A682B00100190000414C
1263:104EE00082DC0100DA81A25E0B7D000000A000419F
1264:104EF00008990100F381004081B2000000000044E5
1265:104F000021B301000000004083B001000000005FF9
1266:104F1000839001000000005E8390010000000057B4
1267:104F20008390010000000041C2B101000C0100406B
1268:104F3000813201000000005F838001000000004119
1269:104F4000C2B101000C01004081320100200000A626
1270:104F500082B001000400004182DC01002000004119
1271:104F600008990100200000A682B001001100004154
1272:104F700082DC0100EC81A25E0B7D0000010000419B
1273:104F800008990100200000A682B00100EF81A25E16
1274:104F90000B7D00004013004108990100010000A6AC
1275:104FA00082B00100400000412E99010000008040C5
1276:104FB00081B20100200000A680B00100000000CAFC
1277:104FC00081940100F681A25E0B7D000022830040E7
1278:104FD00008B10000C8142EBB85B00100F981A25EA3
1279:104FE0000B7D00000000004087B0010008822243D2
1280:104FF000216F000017822244216F0000118000A65B
1281:1050000082B0010028820040813201001F82224AC2
1282:10501000837C000000000040879001000382224D45
1283:10502000837C000000000041879001000582224F30
1284:10503000837C000000000043879001000782224E1D
1285:10504000837C000000000042879001001F82004026
1286:1050500081B20000018000A682B0010028820040D9
1287:1050600081320100018000A682B001002882004048
1288:10507000813201001F822242837C00000000004038
1289:10508000879001001C8000A682B0010028820040A9
1290:105090008132010012822245837C00000000004121
1291:1050A0008790010014822244837C000000000043AA
1292:1050B0008790010016822243837C0000000000429A
1293:1050C000879001001F82004081B20000018000A68D
1294:1050D00082B001002882004081320100018000A6D8
1295:1050E00082B0010028820040813201001F822242EA
1296:1050F000837C000000000040879001000000004316
1297:10510000879001000000004187900100008000A608
1298:1051100082B0010028820040813201002382224BAC
1299:10512000837C0000000000408780010000000043F5
1300:10513000E0B10100FF7F00A2A08B0100000000444D
1301:10514000A5B30100B88000CAA73301004181004027
1302:1051500081B200002000004182DC01002982A25EB1
1303:105160000B7D00000000004108B101002B829F85EB
1304:10517000823000000000804081B20100308214F7CC
1305:10518000813000003082A249FD7F0000000000480D
1306:10519000FD930100338215F8811400003382A24A86
1307:1051A000FD7F000000000048FD9301003582A2C889
1308:1051B000813200004000004080DC0100001000400F
1309:1051C00080DC010000000040EFB301003782424064
1310:1051D000F13300004381004068970000228300BB48
1311:1051E0006BB30000228300BBB1B3000022830040F8
1312:1051F00081B20000000300408198010000000040DF
1313:1052000018B101008000004083980100001900409F
1314:10521000459901000000424081B20100000043FFB7
1315:10522000F1B10100000000FFF1B1010000000041F8
1316:1052300081C001000000004018B101004082A2417D
1317:1052400083500000001600404599010000190040FD
1318:10525000439901000000004743C1010000000040E5
1319:1052600083B00100000000F380B001000000005B8B
1320:1052700081D001000000004180D00100000000400A
1321:10528000F6B101000000005B43C1010000000041D5
1322:1052900083C001004A82A254836C000000000040D9
1323:1052A000F7B101000000004183C001005182A20655
1324:1052B000836C00000000804081B2010000160040B5
1325:1052C0004399010080162E0683B00100360000FBD2
1326:1052D000F6A901005782A24183500000220000403D
1327:1052E00083980100000000FBF6B101005A82A24140
1328:1052F000835000006200004095980100DC9F004050
1329:105300008132010000162D0683B001008016004096
1330:10531000459901005C0000FBF6A901006082A241F2
1331:105320008350000000000070F9B10100000000711E
1332:10533000F9B1010000000072F9B101000000007332
1333:10534000F9B1010000000074F9B1010054000040FF
1334:1053500095980100DC9F0040813201000000007040
1335:1053600095B001006C822270B56F00000000804192
1336:1053700097B001000000804097B00100C480A242B5
1337:10538000976F0000B6030040A199010000002F4272
1338:1053900099B3010078822244816C00008082224807
1339:1053A000816C00007A82224C816C00008582225040
1340:1053B000816C000086822254816C00008882225811
1341:1053C000816C00008D82225C816C000050010040E5
1342:1053D00081B20000000000BC09B00100228300CAB5
1343:1053E00001B000000000004003B0010000000041D7
1344:1053F000F38301007E82A242056C000000000041A0
1345:1054000005B00100228322CA07140000228300464F
1346:10541000F393000022832043956F0000228380CA0B
1347:10542000053000002283220180300000C480A248A1
1348:10543000DB7D0000228300CBDB910000570100BC24
1349:10544000ABB30000000000BCB1B30100228300CA6E
1350:10545000CFB30000FF0000CA818801002283A24070
1351:10546000747D000060002040609901008A82A8B12C
1352:10547000823000008982004081B20000228300CA8D
1353:1054800079B300000000004E81B00100000000432D
1354:10549000CB8301000000454081B201009082A2410F
1355:1054A000815000000000454081B2010000004540ED
1356:1054B00081B201009B829182823000000000008A4C
1357:1054C00080B00100AE9F004080CE01009982A640CE
1358:1054D000813200009B82564081B20000B60300403A
1359:1054E000A19901000000005307900100B60300409D
1360:1054F000A19901000000005207900100D89F0041CF
1361:105500008BB300000000004E81B00100000000429B
1362:10551000CD8301000000464081B20100A082A2417B
1363:10552000815000000000464081B20100000046406A
1364:1055300081B20100AB8291818230000000000089BD
1365:1055400080B00100AE9F004080CE0100A982A6403D
1366:1055500081320000AB82554081B20000B6030040AA
1367:10556000A19901000000005207900100B60300401D
1368:10557000A19901000000005307900100D89F00414D
1369:105580008BB30000B1030040A1990100C4142F4067
1370:1055900099B301005701004049B10000A0942E4387
1371:1055A00097B0010000000040F1B10100B282A241B9
1372:1055B0009750000050952040E1B10100AC942E437B
1373:1055C00097B0010000000040F1B10100B682A24195
1374:1055D000975000000000804081B20100AE030040FF
1375:1055E000A39901000000004081B001006015004057
1376:1055F000859801000800004040E4010000000059C7
1377:10560000419401000000005041E001000000004210
1378:10561000409401000000005741900100000000414B
1379:1056200081C001000000A342816C01000000004124
1380:10563000A3C10100BC82A042816C0000BC8200506A
1381:1056400085C000000183A241017D0000CF82225865
1382:10565000737D00007800004061990100C782A8B105
1383:105660009C300000300038459DE001000400A25F3E
1384:105670001F7C00000400225E1F7C000000C000A60A
1385:105680001EA401000100000E10C90000CF8233C427
1386:1056900081300000D282A1AD9D200000C68213405F
1387:1056A00081B200000000134E5A83010030003845DB
1388:1056B0009DE001000400A25F1F7C00000400A25EC8
1389:1056C0001F7C00000400A240056C0000DD8222ABBC
1390:1056D00080040000DB82A240017D0000DD82225FA9
1391:1056E000577D00001288005F1FB40000DD82225E3B
1392:1056F000577D00008088005F1FB40000E3822254C1
1393:10570000737D00007400004061990100DD82A8B142
1394:10571000003000000000005F1FB40100F784A25FAA
1395:10572000017C00009587004081B20000E582A25F05
1396:1057300059270000E782A25C737D0000EE82A25E22
1397:10574000737D0000FA82225C737D0000FB8237408B
1398:10575000813200007C00004061990100E882A8B11C
1399:10576000363000007C00004061990100EA82A8B157
1400:10577000003000001F000000028801003785175F1D
1401:105780001FB40000FB823440813200007E000040E4
1402:1057900061990100EF82A8B112300000F782522116
1403:1057A00013040000000014412FC301000000005F3B
1404:1057B0001FB40100FF3F0009008C010000000043FE
1405:1057C00001F001004F83003413840000FF3F1409EF
1406:1057D000008C01000000005F1FB40100C48300437F
1407:1057E00001F000000000004081B20100FB82334064
1408:1057F000813200000400A24E5A7F00000700004ED4
1409:1058000080E401000039004080C801000400A2408B
1410:10581000066C0000C682134E5A930000E787A24828
1411:10582000FD7F0000058302E681320000068383E5E8
1412:10583000813200008E82004297B300009E820042B7
1413:1058400097B3000009832246F37F00000C83A24136
1414:10585000F37F0000C6800042973301000C8322448E
1415:10586000F37F00000C83A241F37F0000C680006F2D
1416:10587000973301000400A2AC803200001183225A49
1417:10588000737D00007A000040619901000E83A8B189
1418:105890007E310000010000CF11C900001783A24033
1419:1058A000937F000017832244937F0000138342A557
1420:1058B000803000001683A240937F000038831A4096
1421:1058C0009393000000001A4081B20100DF80A240E3
1422:1058D000737D0000E2872244216F0000D9872240B7
1423:1058E000657D00000005A25B737D00000400A249F5
1424:1058F000337D000021832248337D0000FF010099A1
1425:1059000080D801000000005081E00100A8982F40DD
1426:1059100033B1010000000040E0C1010001830040FC
1427:1059200081B20000C68200408BB300000400A25E7A
1428:105930001F7C00000400225F1F7C00000000005E4E
1429:105940001F900100C682005F1F8000000400A25E5D
1430:105950001F7C00000400225F1F7C00000000005E2E
1431:105960001F9001000000005F1F8001000000005830
1432:1059700061B101000000004E62B10100C682284002
1433:10598000813200002C83004081B200000000004002
1434:105990000FB001000400A25E1F7C00000400225F23
1435:1059A0001F7C0000328333401F3000000400A24EF1
1436:1059B0005A7F00000700004E80E4010000390040DB
1437:1059C00080C801000400A240066C0000C682134E8D
1438:1059D0005A9300003A83A0CE815000004D83A0CDA1
1439:1059E000816C0000000000A59CB30100000000B124
1440:1059F00081B001004D8322B58114000080152F4035
1441:105A000049B101003E83424081320000000060B491
1442:105A100065970100D0152E4069B3010000001A44BB
1443:105A20009383010004002240E16D00001A0000A2EF
1444:105A300080DC010000000044F1B10100000000B171
1445:105A4000F1B10100000000B5F1B101000500004016
1446:105A5000619901008000004062DD01004883A8A137
1447:105A6000E0310000178300889EB300001783A24135
1448:105A7000676F00001783006FDB9100004D83424089
1449:105A80008132000017831A40938300000004004015
1450:105A900089980100099900008A3001000400A25A87
1451:105AA000017C000004002240016C00000099000904
1452:105AB00046C901003F0000F30C8801005C83A64248
1453:105AC000136000009B9600950330010057836140EE
1454:105AD0008132000075000040619901005883A8B12F
1455:105AE0000C300000A9967110943001005D830058BD
1456:105AF0001F9000008D9600950330010023830088DD
1457:105B00001CB0000000002D0348B1010004002DF07E
1458:105B10002EB0010080040017968801000400A64002
1459:105B2000813200004AC1001796D801000400A64047
1460:105B300081320000EE070040979801006883234BF4
1461:105B4000E46D00006883224BFD7F000000000040F0
1462:105B50001F90010022002F4081B201006B83831748
1463:105B60008032000026000040479901006D838517B0
1464:105B7000803200000000004847C1010073832255B5
1465:105B80002F7C00000000004243D101000F0000FA0A
1466:105B9000968801000000004297E0010000000042EA
1467:105BA00097D001007483004B44C10000120000A292
1468:105BB00044C90100280000F602CC01000A0000A13F
1469:105BC00042C90100000000F816B00100000028F0F2
1470:105BD00010B00100000000F01AB00100000000A2A7
1471:105BE0002AB00100C0283C460DE0010000002D4411
1472:105BF00095B001008083A2F80E300000908322410E
1473:105C00009550000000002D5049C101007C830040E8
1474:105C100081B200007D83A2F8166C00007D83A2F89B
1475:105C2000106C00007D83A2F01A6C00008E83225855
1476:105C30001F7C000000993F4213F0010085836540FE
1477:105C4000813200008983A2F3740600000000000680
1478:105C5000E69501008E83754081B2000000000006C9
1479:105C600096B001003F0075F30C880100000000555C
1480:105C700061B101000000004B62B101008C83A840BB
1481:105C8000813200008E836740813200009683774125
1482:105C90002DC30000948322581F7C00000000005593
1483:105CA00061B101000000000662B101009283A840CA
1484:105CB000813200009483674081320000D5837741B0
1485:105CC0002DC30000030000071AF401001895000717
1486:105CD00016300100A8832241816C00009C8322427F
1487:105CE000816C0000238300881CB00000A783225F22
1488:105CF0000F7C00004E96005F01100100A28322403D
1489:105D0000956C00000480000342C90100000000F20D
1490:105D100002B00100A595005295300100AC95004BF2
1491:105D200002B000000000005F0F800100010400408D
1492:105D300089980100099900008A300100B496000991
1493:105D400096300100F08700400FB00000B783A25AE0
1494:105D50001F7C00000400A25A1F7C000000B5000D4B
1495:105D600042C901000400220BE67D000000B7000DCF
1496:105D700042C901000400220BE67D0000709400403F
1497:105D800081320100B7832220856C0000B2839C0F12
1498:105D900080320000238300881CB000008D95005CD9
1499:105DA0001F000100C8970042613101002383008871
1500:105DB0001CB00000900400079630010000002D0583
1501:105DC00048B101000400A24BE17D00000400A25C88
1502:105DD0001F7C000000002D0548B10100BB8382F04C
1503:105DE000183000006C8900458FB00000282000A604
1504:105DF00096B00100C18322179604000034040040CD
1505:105E000089980100099900008A3001005B97004BD6
1506:105E1000953001006C89004B8FB000005D96000347
1507:105E200048310100AF930040813001006C8900408F
1508:105E300081B20000000000400FB0010000040040EB
1509:105E400089980100099900008A300100040022406D
1510:105E5000016C000000002E1048B1010000006850E5
1511:105E600003B0010000000003F0B101004000000099
1512:105E7000E0C9010000002E5049C10100000000509F
1513:105E8000F1B1010000000003F0B101000000004288
1514:105E900061B101002000001062DD0100D083A84044
1515:105EA000813200001000001062C90100D283A800F6
1516:105EB000E0310000238300881CB0000000002D03A7
1517:105EC00048B10100000000400FB00100000000F8E0
1518:105ED0002EB00100000000F202B0010000000040FE
1519:105EE00017B00100004100A696B00100EE072E4752
1520:105EF00097900100E883221796040000E683224B66
1521:105F0000FD7F0000E68323A2026C0000A5950052ED
1522:105F10009530010004002241975000000C002D0034
1523:105F200012B00100000000F000B001000000005CB1
1524:105F300001800100AC95004B02B000000000000998
1525:105F400000B001000000005003B001000584005CB7
1526:105F500017900000FA8322432F7C000000000045C8
1527:105F60001F900100F383225F2F7C000000002E10A1
1528:105F700048B1010000000058F1B101001000000319
1529:105F8000F0C9010010000000E0C90100EF83624287
1530:105F9000613100000000001062B10100F083A840F0
1531:105FA00081320000238372881CB0000020002D0382
1532:105FB00048B10100FF0F00F680880100F783A2A618
1533:105FC000816C0000FA8300F23AB00000F484A24B26
1534:105FD000FD7F0000C9940040813201000688004026
1535:105FE00081B200000584224A2F7C000005842248EB
1536:105FF0002F7C00000A002D0348B101003F0000F291
1537:10600000868801001F0000438488010005000043CA
1538:1060100080F4010098943D4281E001000584A24291
1539:10602000E07D0000F484A24BFD7F0000C994004095
1540:10603000813201000688004081B200000204004065
1541:1060400089980100099900008A300100078469409D
1542:1060500081320000000000A309B001000000794176
1543:1060600047C301000400A0A1096C00000E8422A116
1544:10607000096C0000278300881CB000000A8400031C
1545:1060800048B100004884A392036C00002B980040A4
1546:10609000953001000000004143C3010000000016DC
1547:1060A00080B2010006882708803200001584225C37
1548:1060B000177C0000168400002AB0000012000000C7
1549:1060C0002AC801000200000880C801001A84A24307
1550:1060D0002F7C00005E970040813201003684005E14
1551:1060E00017900000040000018CCC01005E97004C6A
1552:1060F0000330010000002E4602B001001000001025
1553:1061000048C901000C000001F0CD01002C00004046
1554:10611000F0C9010000000016F0B1010010000015E8
1555:10612000E0C901000000004361B10100A00000A42B
1556:1061300062DD01002384A854171000003684005E3D
1557:1061400017900000120000002AC801003584224385
1558:106150002F7C0000040000018CCC01000000004CEA
1559:1061600003B001007F9700436131010000002E461B
1560:1061700002B001001000001048C901000C0000012D
1561:10618000F0CD01000C000009F0C90100000000186A
1562:10619000F0B1010010000015E0C90100000000434B
1563:1061A00061B10100A00000A462DD01003684285422
1564:1061B000171000003284004081B200007F97004336
1565:1061C00061310100388422502F7C0000000000560D
1566:1061D0001790010007000017988801003B84A24136
1567:1061E000996C00000000005517900100000000436A
1568:1061F00061B101004000001062DD01003C84A84054
1569:1062000081320000238300881CB0000066970040A4
1570:1062100081320100438422432F7C0000168000035A
1571:1062200044C901000000001DE4B101000097005EB8
1572:10623000051001004684A25F2F7C000086930001B8
1573:1062400038430100C99400408132010006880040B3
1574:1062500081B200004A84A24BFD7F0000F18400411E
1575:1062600043C300000000004027B0010000000040D0
1576:106270002DB001000000004011B001004D84350137
1577:10628000863000006D00004061990100568428B1FD
1578:10629000303000004E84224D757D00000000001655
1579:1062A00080B20100DD84A740116C000000000041B5
1580:1062B00043C301000400A240276C0000F0840040AA
1581:1062C00081B200006D000040619901005684A8B1C0
1582:1062D000123000000000001680B201006084A74068
1583:1062E000116C00000000004143C3010000000009E0
1584:1062F00010B00100000000182CB00100DE070043C0
1585:1063000080CE01004E84AA408132000065840040A6
1586:1063100081B2000040003E4327E001000000000978
1587:10632000F0B1010000000018E0B1010000000041E0
1588:1063300027C001004E84A30B8750000000001540C9
1589:106340001BB001000000004023B001000400A203C4
1590:10635000486D0000120000002AC8010040002D40D6
1591:1063600039B001006F84A240276C000022000008B1
1592:1063700012C801000400A216306C0000DE070040C5
1593:10638000259801007284004081B20000000000F8EE
1594:1063900012B00100000000F030B001000000000B5E
1595:1063A00025B001000000001032B0010014002001EF
1596:1063B000E0B10100EE070040379801007784230127
1597:1063C000366C00000000000136B00100828482417A
1598:1063D000234000002080001042C901007E8422403A
1599:1063E000E36D00000000004361B1010040000010B7
1600:1063F00062DD01007B84A840813200002383008895
1601:106400001CB00000F3940043233001000000001092
1602:1064100032B001000000004123B001000000000381
1603:1064200048B101000080001944C90100938422454D
1604:106430001F7C00000400A241236C00000400A20B9A
1605:10644000256C00000000004CF1B1010000000009C3
1606:10645000F0B1010000000018F0B10100000000439D
1607:1064600061B101002000001962DD01008A84A815D5
1608:10647000E03100000000005003D001000000005097
1609:1064800033C001000000004C25D001000C002D4C51
1610:1064900013C001000000005037D001000000005080
1611:1064A0002BC00100778400451F8000009584A31253
1612:1064B000366C00009684681B28B00000000068124B
1613:1064C00028B0010000000009F0B101000000001830
1614:1064D000F0B101000000004361B10100200000198B
1615:1064E00062DD01009984A815E0310000C184221406
1616:1064F000025000000000005033C0010000000014F2
1617:1065000024D001000C002D1412C00100B984A21483
1618:1065100036500000A984225C1F7C000030800010EF
1619:1065200042C90100A7842240E36D00000000004240
1620:1065300061B101004000001062DD0100A484A840A8
1621:1065400081320000238300881CB00000000000039B
1622:1065500048B101000C002D5C1F800100100000F00C
1623:106560002AC801000000005C2B80010004002250BA
1624:106570002B6C0000F007004037980100AF84230126
1625:10658000366C00000000000136B00100BA84221B06
1626:10659000026C00003000001048C9010000002E5CB1
1627:1065A0001F90010000000050F1B101000000000345
1628:1065B000F0B10100FF070015E08D0100000000426E
1629:1065C00061B10100A00000A462DD0100B684A84012
1630:1065D00081320000BA84000348B1000000000014BA
1631:1065E0002AC001007784A240256C00000000004111
1632:1065F00039C0010004002013386C000040003D4306
1633:1066000039E001000000000B25B00100000000F897
1634:1066100012B00100778400F030B000000400A25CEA
1635:106620001F7C00000080001942C90100C88422407C
1636:10663000E36D00000000004361B10100400000195B
1637:1066400062DD0100C584A8408132000023830088F8
1638:106650001CB00000F39400402B30010018002E0302
1639:1066600048B10100CC8422502F7C0000000000566D
1640:10667000179001000700001798880100CF84A241FD
1641:10668000996C00000000005517900100D28422434D
1642:106690002F7C000000000054179001001600201D00
1643:1066A000E4B10100D484A340276C0000D684605F6D
1644:1066B000179000000084000B16DC0100000060133E
1645:1066C000169401000097005E051001000400A2402E
1646:1066D0000F6C00000688A25F2F7C0000148000036E
1647:1066E00042C90100000000F202B0010086930001DF
1648:1066F000384301000688004081B200000400A20374
1649:10670000486D00000400224D757D0000000000402F
1650:1067100083B001000000004D61B1010000000016CF
1651:1067200080B2010004002740116C00000000001638
1652:1067300062B10100E384A84081320000000000083B
1653:1067400062B10100E584A84081320000F084221388
1654:10675000826C000040003D4383E00100000000F82F
1655:1067600010B00100000000F02CB001000000001685
1656:1067700062B10100EB84A8408132000000000008F3
1657:1067800062B10100ED84A84081320000E78400413D
1658:1067900083C000000000154081B20100008200A605
1659:1067A00004B00100A0980040479901003005004165
1660:1067B00089300100A595005295300100AC95004B41
1661:1067C00002B00000068800400FB000000000005F2B
1662:1067D00001800100100000000EF4010004002640BA
1663:1067E000813200003F0000000088010005040040E5
1664:1067F00089980100099900008A3001000300000710
1665:106800001AF401001895000716300100088522418E
1666:10681000816C000003852242816C00002383008884
1667:106820001CB000000785225F0F7C00000000005FA5
1668:106830000F800100060400408998010009990000BA
1669:106840008A300100F08700400FB000001785A25A7F
1670:106850001F7C00000400A25A1F7C000000B5000D40
1671:1068600042C901000400220BE67D000000B7000DC4
1672:1068700042C901000400220BE67D00007094004034
1673:106880008132010017852220856C000012859C0F43
1674:1068900080320000238300881CB000008D95005CCE
1675:1068A0001F000100C8970042613101002383008866
1676:1068B0001CB00000900400079630010000002D0578
1677:1068C00048B101000400A24BE17D000000002D054D
1678:1068D00048B10100000000F018B001001C85223A08
1679:1068E000016C0000000000008EB001006C890040C7
1680:1068F00001B000000000004081B201002E002D0513
1681:1069000048B101002185A240E76D00000A00004067
1682:106910008F9801006C89004001B000001D94004078
1683:106920008132010004002200803200003504004062
1684:1069300089980100099900008A3001008D96009520
1685:1069400003300100238300881CB0000000002D03E9
1686:1069500048B1010022002DF02EB0010004001F17E5
1687:1069600080320000282000A696B001002E85221754
1688:10697000960400005B97004B953001006C89004C39
1689:106980008FB0000030858317803200000000004483
1690:1069900043C10100328585178032000000000048A5
1691:1069A00043C10100280000F602CC0100120000A142
1692:1069B0002AC801005D96004081320100AF9300417A
1693:1069C000813001006C89004081B2000000000001AC
1694:1069D00000D0010000002E1048B101002800004046
1695:1069E000F199010000000003F0B101000000000077
1696:1069F000F0B101003C8564476131000000000010E7
1697:106A000062B101003D85A81BE0310000238374883A
1698:106A10001CB000000000004503E001000400A005D8
1699:106A2000036C00000400A309036C000008002D03A0
1700:106A300048B101006E8501FB08300000D88587FB56
1701:106A400022300000000000FA0EB00100000000F843
1702:106A500014B00100030000071AF4010018950007A4
1703:106A6000163001005F852241816C00004E85224274
1704:106A7000816C0000238300881CB000005E85225FCB
1705:106A80000F7C0000380000047E8901005485A65F59
1706:106A90000F00000031940040053001000A0400405E
1707:106AA00089980100099900008A3001005B85004047
1708:106AB00081B20000130000408798010000002D0300
1709:106AC00048B101000C002DF082B00100000000F080
1710:106AD00084B001002C9600400530010008040040FD
1711:106AE00089980100099900008A3001000400A25C25
1712:106AF0001F7C00000000005C1F900100F087004038
1713:106B00000FB000006C85A25A1F7C00000400A25A3E
1714:106B10001F7C000000B5000D42C901000400220BDB
1715:106B2000E67D000000B7000D42C901000400220B01
1716:106B3000E67D000070940040813201006C852220C7
1717:106B4000856C000069859C0F8032000023830088DB
1718:106B50001CB000008D95005C1F000100C89700422A
1719:106B600061310100238300881CB0000090040007FD
1720:106B70009630010000002D0548B10100000000F032
1721:106B800018B001007085210480200000718500404C
1722:106B900010C90000A488004B81B000009F8500430D
1723:106BA00081B00000A38500FB22B00000A488004152
1724:106BB00081B000006C89004E8FB000009485005AAF
1725:106BC0008FB00000798500478FB00000A488005383
1726:106BD00081B00000A488005681B0000032002D056D
1727:106BE00048B101000704004089980100099900009C
1728:106BF0008A3001003C040040899801000999000A8C
1729:106C00008A3001003D0400408998010018000011FD
1730:106C10008AE40100099900F28A1401000000004092
1731:106C200081B201006C89A00AE46D00008785A24151
1732:106C3000197C00008685220A803200006C8900538E
1733:106C40008FB000006C8900548FB000009085220A3C
1734:106C5000803200008A85A20AE46D00006C89005D24
1735:106C60008FB00000000000F280B001000000000AB8
1736:106C700080D001008E85A091816C00006C89005E3F
1737:106C80008FB00000250000408F9801006C89004003
1738:106C900081B2000092852091E56D00006C8900545E
1739:106CA0008FB00000210000408F9801006C890040E7
1740:106CB00081B2000032002D0548B1010007040040F8
1741:106CC00089980100099900008A3001003C040040C5
1742:106CD000899801000999000A8A3001003D040040AA
1743:106CE00089980100099900F28A30010000000040F3
1744:106CF00081B201006C89A00AE46D0000240000400C
1745:106D00008F9801006C89004081B2000037002D058A
1746:106D100048B10100040000F382F40100A488A042FD
1747:106D2000836C0000A488005481B00000000000F2D1
1748:106D30000EB00100040023400F6C0000040020AAE4
1749:106D40000F6C0000090400408998010009990000B7
1750:106D50008A300100030000071AF4010000B5000D9D
1751:106D600042C901000700000716880100B185220B07
1752:106D7000E67D00000A000040879801007F980040EF
1753:106D80008132010004001C0F80320000000000402E
1754:106D90000FB00100F087005C1F900000C3852250F7
1755:106DA000FD7F0000BE85A254FD7F0000B685225500
1756:106DB000FD7F00008200004087980100AD85004003
1757:106DC00081B2000004002253FD7F00001480000304
1758:106DD00042C90100000000F096B001001000004B15
1759:106DE00080F401000CBC004087980100BE8522435E
1760:106DF000806C0000FFFF004B80880100AD85A2433E
1761:106E0000806C00007C96004047990100BF85464099
1762:106E100081320000C285A0F0306F0000B4851E40B2
1763:106E200081B2000000001E4131C301007F94004088
1764:106E300025300100C7859C0F803200002383008825
1765:106E40001CB000008D95005C1F0001001480000341
1766:106E500042C901000400225A1F7C0000000000F01B
1767:106E600096B0010000002F0548B101001000000796
1768:106E700018E401000008000CE099010090040007EC
1769:106E80009630010000B5000D46C90100CF853040A5
1770:106E9000813200000400A20BE67D00000000000B20
1771:106EA000E6910100000200A146C901000400A20B06
1772:106EB000E67D00000000000BE691010004002E05B5
1773:106EC00048B1010000001040E1B10100A488004079
1774:106ED00081B00000000000FB28B00100000000FBB2
1775:106EE00086B00100000000F814B00100E3852246DE
1776:106EF000237C000004002240876C0000DF852240D4
1777:106F0000877C0000000000481F900100E1852241BD
1778:106F1000877C0000000000471F900100E3852242AB
1779:106F2000877C0000000000451F9001000400224003
1780:106F3000097C0000E485661B2C300000000000A0E6
1781:106F400013B001000000764141C301001686239270
1782:106F5000156C00001686A2451F7C00001C86224B83
1783:106F6000FD7F0000170000D0A2C901000000004012
1784:106F700027B001000200000A24C80100BF940040AD
1785:106F80000F3001001486220840300000000000414C
1786:106F9000A3C10100F007001224CC0100ED85AA4135
1787:106FA000274000000400A349276C000001000013E3
1788:106FB00080CC01000E8626402330000000000040F7
1789:106FC00083B001006000000384C8010010000010BD
1790:106FD00048CD0100170000D0A2C90100FB85A240E6
1791:106FE000836C00000786004183B0000000800042EF
1792:106FF00044990100000068213896010000002E50DD
1793:1070000049C101000086A244236C00003000000347
1794:1070100048C9010000000044F1B101000C0000204B
1795:10702000F0C901000000004461B10100A00000A40B
1796:1070300062DD01000386A842E03100000000004448
1797:1070400085C001000000004123C001000000004194
1798:10705000A3C10100F985A241815000000E862240A3
1799:10706000236C00000000004461B1010040000010EA
1800:1070700062DD01000B86A840813200002383008876
1801:107080001CB000000B040040899801000999000021
1802:107090008A3001000000000348B10100EE07004003
1803:1070A00025980100170000D02AC801002786001784
1804:1070B00010B000000A970040813201001C86004099
1805:1070C00081B20000BF940092253001000000004012
1806:1070D00031B001000B0400408998010009990000BB
1807:1070E0008A3001001C8622082E30000027860041CD
1808:1070F00027B00000808000A604B001000600004018
1809:10710000879801007F98000A8C30010004001C0F52
1810:1071100080320000000000400FB001000000005C61
1811:107120001F9001000400A09F136C00002686229F80
1812:10713000136C0000020000881CCC01002783004073
1813:1071400081B20000F08700413FC300000000004012
1814:107150000FB001002800000180CE01003B862A40CC
1815:10716000813000000080001044C901004000004050
1816:10717000819801003086A2481F7C00003086A2471B
1817:107180001F7C00003086A307036C000080000040D5
1818:10719000819801003386A340026C000028000001A2
1819:1071A000F0CD0100358600400FB0000028000040FF
1820:1071B000F0CD0100040000400ECC010028000003C7
1821:1071C000F0C9010028000000F0C90100000000160D
1822:1071D000E0B101000000004761B101002000001093
1823:1071E00062DD01003986A85C1F1000000400220A3D
1824:1071F000803200000400A203486D0000000000403F
1825:1072000043990100000000F008B00100A0012D40EA
1826:1072100000C001001C87220F420500004E869C0F13
1827:10722000803200000000005C1F8001000080001020
1828:1072300042C9010049862240E36D0000000000477A
1829:1072400061B101004000001062DD01004686A840E7
1830:1072500081320000238300881CB000004E86220784
1831:10726000803200000000000342B10100000000076E
1832:1072700042C10100008000A1469901000000005FAA
1833:10728000E1910100C006A2451F7C00001000000330
1834:1072900048C9010000002D5429C00100000000F879
1835:1072A00018B00100000000F804B00100000000F870
1836:1072B0000EB0010004002640813200000400A25FED
1837:1072C0000F7C00003E00001480CE01000400AA40A4
1838:1072D00081320000420000030AC801000C0000A433
1839:1072E0000CC8010016950040813201000000001416
1840:1072F00002B001000000001424D0010000000014BE
1841:1073000010C001001200000810C801000000004079
1842:1073100023B00100FE7F000544C901000400A2A2C1
1843:10732000860600000000000AE4B101007C8622010C
1844:107330008032000000003C4423E0010000002EA445
1845:1073400080B001000000001048C101006986A30759
1846:10735000026C00006A8668011AB00000000068072D
1847:107360001AB001000000000D02D00100000000056D
1848:10737000F0B101000000000CF0B1010000000002BB
1849:10738000E0B101000000000D0AC001007686224035
1850:10739000036C000076862242236C0000000000414E
1851:1073A00023C001000000004761B10100A00000A45B
1852:1073B00062DD01009C862840813200007386004017
1853:1073C00081B200000000001080C0010000000047F2
1854:1073D00061B101000000004062B101007886A84060
1855:1073E00023300000238300881CB000009C860040EE
1856:1073F00081B2000000003C4423E00100000000A432
1857:1074000086B0010000002E1048C101008186A31241
1858:107410000E6C0000828660071AB000000000601247
1859:107420001AB001000000680D16940100FFFF000B68
1860:1074300016D801001B990008983001000000680868
1861:107440003E9601000000000CF0B1010000000002B7
1862:10745000E0B101000000001086C0010000000046FD
1863:1074600061B101002000004362DD01008A86A85C52
1864:107470001F100000BC86220D146C00009086220DA7
1865:10748000246C00000000000D10C001009586000D66
1866:1074900024D000000400224BFD7F000000000041CA
1867:1074A0002BC0010000000015A2B101001000002057
1868:1074B00010C80100F007004025980100978622427D
1869:1074C000236C00009C86004123C0000000000046A1
1870:1074D00061B101004000001062DD01009886A85CE7
1871:1074E0001F000000238300881CB000000000004043
1872:1074F00023B00100BC86220D14500000BB86A20DF3
1873:107500000E500000A88622461F7C000000000046A6
1874:107510001F8001003080001042C90100A686224071
1875:10752000E36D00000000004761B101004000001061
1876:1075300062DD0100A386A840813200002383008819
1877:107540001CB0000020800003469901000000005F8D
1878:10755000E191010000002D0648B10100000000F893
1879:1075600018B00100000000F804B00100040022F08F
1880:107570000E300000AE86A25F0F7C00006386004CD8
1881:107580000DC0000000002E5F0F80010063862307FE
1882:10759000146C00000400A2461F7C000030000010A4
1883:1075A00048C9010024000040F199010000000003D7
1884:1075B000F0B1010000000000F0B101000000001671
1885:1075C000F0B101002400000000C8010000000047E5
1886:1075D00061B10100A00000A462DD0100B886A846E8
1887:1075E0001F100000638600030CB000006386000DCE
1888:1075F00018C0000004002E140AD00100120000057B
1889:1076000048CD0100FE7F000542C901000400A2A48C
1890:10761000860600000400A2A1860600000C002AF2E3
1891:10762000E0B10100C4862240316C00000000601807
1892:10763000389601001E00004043990100008100F6C9
1893:1076400080CE0100C886A6408132000000000044C0
1894:1076500043C10100CA86220BED6D0000080000A1A5
1895:1076600042C90100020000A146C901000400A2A114
1896:10767000860600000F0000FA948801000400A2456D
1897:10768000956C00000200004A86E40100000000F64C
1898:107690000EB00100D48622471F7C000004001F4367
1899:1076A0000E500000D486A0460F40000000000041AC
1900:1076B0000FC00100D88622481F7C00000000004057
1901:1076C00091B0010004000FA242310000DB860040AF
1902:1076D00089B000000C0000A242C901000000004374
1903:1076E00089B001000000004395D00100000000FCBB
1904:1076F00082B00100DE86A041904000000000004101
1905:1077000091C00100E38622471F7C0000E386A0436E
1906:10771000896C0000E3862045896C0000E386A04167
1907:107720000E400000000000410FC0010000000041B9
1908:1077300089C00100DB86A24195500000F0862248F6
1909:107740001F7C00001000004892F40100FFFF004879
1910:1077500090880100EA8690489240000000000041B5
1911:1077600093C001000A0000A244C901000000662085
1912:1077700093A401000A00004380CC0100000000A295
1913:1077800080C001000400A240426D00000400A2A1DC
1914:10779000860600000400A2461F7C00001B9900170B
1915:1077A00098300100FF0700177E8901000400A64001
1916:1077B000813200003080001044C901001200001422
1917:1077C000F0C9010000000017F0B10100120000052F
1918:1077D000E0CD01003000001080C80100000000442E
1919:1077E00061B101002000004062DD0100FA86A8407E
1920:1077F000813200000587225C1F7C000000003C44B1
1921:1078000023E0010000002D1048C101000487224040
1922:10781000E36D00000000004661B10100400000106F
1923:1078200062DD01000187A8408132000023830088C7
1924:107830001CB000000000005C1F8001000887A24708
1925:107840001F7C00000C9500408132010088870017E2
1926:1078500010B00000139500408132010000002F039A
1927:1078600048B101000C87A00716400000000000414D
1928:1078700017C001000000000BE4B10100000000503F
1929:1078800017F00100108790F2164000000000004140
1930:1078900017C001000000662017A4010010000014AA
1931:1078A0002AC80100000000502BE00100000000F297
1932:1078B0002A9401003080001042C901001A8722403A
1933:1078C000E36D00000000004461B1010040000010C1
1934:1078D00062DD01001787A840813200002383008801
1935:1078E0001CB000000080001710DC010088870040F9
1936:1078F00081B2000024879C0F803200000000005CF1
1937:107900001F8001000080001042C90100248722402E
1938:10791000E36D00000000004761B10100400000106D
1939:1079200062DD01002187A8408132000023830088A6
1940:107930001CB00000298722078032000000000003ED
1941:1079400042B101000000000742C10100008000A117
1942:10795000469901000000005FE191010004002E0340
1943:1079600048B101000000000AE0B101002E8722406A
1944:10797000316C00000C0000404599010000006018C7
1945:107980003896010000002E1048B1010000000050A0
1946:10799000F1B1010000000008F0B101000000000397
1947:1079A000E0B101000000004461B1010000000010DE
1948:1079B00062B101003387A840233000002383008890
1949:1079C0001CB0000000002D5211C001001000000387
1950:1079D00048C90100000000F818B00100000000F8DC
1951:1079E00004B00100000000F80EB001000C0000A47B
1952:1079F0000CC8010004002240156C000000003C444B
1953:107A000023E00100000000A486B0010000002E1059
1954:107A100048C101004287A3120E6C0000438768072B
1955:107A20001AB00000000068121AB001001B9900088B
1956:107A3000983001000000004081B2010000000010F9
1957:107A400086C00100000068083E9601000000000C9E
1958:107A5000F0B1010000000002E0B1010000000046AA
1959:107A600061B101002000004362DD01004A87A85C8B
1960:107A70001F1000007C87220D146C00005087220D1F
1961:107A8000246C00000000000D10C001005587000D9F
1962:107A900024D000000400224BFD7F000000000041C4
1963:107AA0002BC0010000000015A2B101001000002051
1964:107AB00010C80100F00700402598010057872242B6
1965:107AC000236C00005C87004123C0000000000046DA
1966:107AD00061B101004000001062DD01005887A85C20
1967:107AE0001F000000238300881CB00000000000403D
1968:107AF00023B001000400220D145000007B87A20D6A
1969:107B00000E500000688722461F7C000000000046DF
1970:107B10001F8001003080001042C9010066872240AA
1971:107B2000E36D00000000004761B10100400000105B
1972:107B300062DD01006387A840813200002383008852
1973:107B40001CB0000020800003469901000000005F87
1974:107B5000E191010000002D0648B10100000000F88D
1975:107B600018B00100000000F804B00100040022F089
1976:107B70000E3000006E87A25F0F7C00003C87004C37
1977:107B80000DC0000000002E5F0F8001003C8723071E
1978:107B9000146C00000400A2461F7C0000300000109E
1979:107BA00048C9010024000040F199010000000003D1
1980:107BB000F0B1010000000000F0B10100000000166B
1981:107BC000F0B101002400000000C8010000000047DF
1982:107BD00061B10100A00000A462DD01007887A84621
1983:107BE0001F1000003C8700030CB000003C87000D14
1984:107BF00018C000000400A2461F7C00008687225C9B
1985:107C00001F7C00000000005C1F80010000003C445D
1986:107C100023E0010000002D1048C1010086872240AA
1987:107C2000E36D00000000004661B10100400000105B
1988:107C300062DD01008387A840813200002383008831
1989:107C40001CB000000000001710B001008887004041
1990:107C50002BB00000008000034499010000000004E4
1991:107C6000E0B1010004002640813200000400A09F22
1992:107C7000136C00008F87229F136C000002000088A5
1993:107C80001CCC01002783004081B200009498004181
1994:107C90003F430100000000408DB0010000000040A3
1995:107CA00005B001007F9800400F3001000400A25C85
1996:107CB0001F7C00000688005C1F9000001000000080
1997:107CC0000EF4010004002640813200000000003A5A
1998:107CD000018401009B872250016C00000D040040CC
1999:107CE00089980100099900008A300100030000070B
2000:107CF0001AF401001895000716300100A6872241EA
2001:107D0000816C0000A1872242816C000023830088DF
2002:107D10001CB00000A587225F0F7C00000000005F00
2003:107D20000F8001000E0400408998010009990000AD
2004:107D30008A300100F08700400FB00000B387A25ADC
2005:107D40001F7C00000400A25A1F7C000000B5000D3B
2006:107D500042C901000400220BE67D000000B7000DBF
2007:107D600042C901000400220BE67D0000709400402F
2008:107D700081320100B3872220856C0000B0879C0F00
2009:107D800080320000238300881CB000008D95005CC9
2010:107D90001F000100C8970042613101002383008861
2011:107DA0001CB00000900400079630010000002D0573
2012:107DB00048B10100000000F018B001000000000010
2013:107DC00080B00100A488A25F816C0000A8002D4350
2014:107DD0001980010037002DF024B00100040000F3E9
2015:107DE0008EF401000F0000F3908801000400A3430B
2016:107DF0008F6C00000400A343916C0000C4872248EC
2017:107E00008E6C0000360000404399010058003D434D
2018:107E1000E7E10100C4871FF0246C0000C387234101
2019:107E20008F6C0000A488004781B00000A48800483F
2020:107E300081B000004000004043990100B0002DF0E7
2021:107E400014B00100C987220A904000005F980040EA
2022:107E500091300100A488A24080320000B0002D457E
2023:107E600081B00100D58722F02C300000A3002D3016
2024:107E700083B00100AC002DF382E00100CF87A34165
2025:107E80002C6C00000000001682B0010098002DF05C
2026:107E900082C0010088002DF082D00100000000F2B5
2027:107EA00098E80100A488204C826C00007C002D41E1
2028:107EB00098E80100A48820F0986C0000F087220A5E
2029:107EC000803200004002000C7E890100F087A6404D
2030:107ED00081320000A488004981B00000200000A683
2031:107EE00080B00100DD872243216F00001380004035
2032:107EF00080DC0100DE87004081B200001A80004073
2033:107F000080DC0100DE87A25E0B7D000000000040E7
2034:107F100008B10100E0879F8580320000E4870040BF
2035:107F200081B200001A832240577D0000010000400A
2036:107F300057990100E487424081320000000000446C
2037:107F40009393010001831A5B69930000EA8722463C
2038:107F5000F37F0000EA87A241F37F0000C680004261
2039:107F600097330100040000CB81C80100ED87224057
2040:107F7000F27F0000C680006F97330100EF87224038
2041:107F8000737D0000E08000418BB30000E787004074
2042:107F900081B20000F7879C0F803200000080001043
2043:107FA00042C90100F7872240E36D00000000004550
2044:107FB00061B101004000001062DD0100F487A840BB
2045:107FC00081320000238300881CB000003494220218
2046:107FD00080320000F88742408132000000000044F7
2047:107FE0009393010034941A026897000002889C0F52
2048:107FF000803200000080001042C901000288224047
2049:10800000E36D00000000004561B101004000001078
2050:1080100062DD0100FF87A8408132000023830088D1
2051:108020001CB00000449422028032000003884240C9
2052:1080300081320000000000449393010044941A022E
2053:10804000689700000D889C0F8032000000800010AF
2054:1080500042C901000D882240E36D00000000004588
2055:1080600061B101004000001062DD01000A88A840F3
2056:1080700081320000238300881CB000002F8322027D
2057:10808000803200000E88424081320000000000442F
2058:108090009393010000001A02689701002F830040AB
2059:1080A00005B00000008000A656B1010056952F4093
2060:1080B00005B001000400A240E76D0000B89429411A
2061:1080C000E7B1010000000054EF930100000000F24E
2062:1080D0000EB001000400A30C556F00002900004001
2063:1080E0000D9801000900000712E40100000000A73C
2064:1080F00013C00100030000071AF401000700000785
2065:1081000016880100FFFF001034D8010000000003B2
2066:10811000349401000000004023B00100201800400A
2067:1081200011980100040020AA0F6C000000B5000D9A
2068:1081300042C901004688220BE67D00002588604088
2069:1081400081320000FFFF0007848901002E8805C2EC
2070:1081500024300000580400408132010000002D0549
2071:1081600048B10100638870F0183001001000000C65
2072:1081700082F401000400A2410E6C00004688004019
2073:1081800081B200000000704081B201003D88A0482B
2074:10819000236C00000000005035D001000080001A60
2075:1081A00042C9010037882240E36D00000000004210
2076:1081B00061B101004000001A62DD01003488A8406E
2077:1081C00081320000238300881CB00000209800400A
2078:1081D00043990100638800F8183001003888A241F3
2079:1081E00023500000FFFF001034D8010000000003FE
2080:1081F00034940100201800401198010000002E1A4C
2081:1082000048B1010000000044F1B101000000000885
2082:10821000F0B101000000004261B101002000001A2D
2083:1082200062DD01004188A809E03100000000004142
2084:1082300023C001000000005035C0010000000044D0
2085:1082400011C00100528822410D5000000000004181
2086:108250000FC001004E88A0AA0F6C00000000004172
2087:108260000FB001000900000712E40100000000A7A0
2088:1082700013C00100000000401BB001002288004133
2089:1082800017B000000002000912C8010022888341D3
2090:10829000174000000000004017B001002288004194
2091:1082A0001BC000005D882340236C000000000050CC
2092:1082B00035D001000080001A42C901005A882240CE
2093:1082C000E36D00000000004261B101004000001AAF
2094:1082D00062DD01005788A8408132000023830088B6
2095:1082E0001CB000002098004043990100638800F80A
2096:1082F000183001005B88A2412350000000000041BB
2097:108300000FC001006088A0AA0F6C000000000041AF
2098:108310000FB00100B8942007E4B101005695204049
2099:10832000E7B10100F08700400FB00000FFFF000C34
2100:1083300080D801000400264081320000C002000CF9
2101:108340007E8901007C882654613100006F88870C8B
2102:10835000803200001F040040899801000999000C38
2103:108360008A3001000000005461B101000F0000409C
2104:10837000629901006F882840813200000400A254F5
2105:10838000777D00006B88004081B20000778822462C
2106:10839000197C00002A040040899801000999000C0A
2107:1083A0008A3001000000005461B101000D0000405E
2108:1083B000629901000000A84081B200000400A254AC
2109:1083C000777D00007088004081B200007C882249DF
2110:1083D000197C00000E000040629901000000A840D6
2111:1083E00081B200000400A254777D0000778800402D
2112:1083F00081B2000010000040629901000000A84016
2113:1084000081B200000400A254777D00007C88004007
2114:1084100081B2000030942F55F1930100004000A676
2115:1084200056B101002F83A241E551000064000040D5
2116:10843000E599010084884440813200008788A29336
2117:10844000576F00000000004157C3010000001CAB43
2118:1084500027B301002F832250FD7F00002F8322517C
2119:10846000FD7F00002F83A2411D53000050460040B5
2120:108470001D9B010038050040813201000E000048BC
2121:10848000B2CB010010040040493101009388224022
2122:10849000B56F00000E000048B2CB0100200400417F
2123:1084A000B55301002F83004081B20000000000514D
2124:1084B000FD83010040160040459901004005004041
2125:1084C000493101001E000048B2CB010010040040F9
2126:1084D00081320100000000DA91C001000400004870
2127:1084E000B2CB010020040040B533010060162040EB
2128:1084F000E5B1010055820040B53301000800004895
2129:10850000B2CB0100FFFF004AB48B01002004004001
2130:10851000813201000A000048B2CB01001000004A7D
2131:10852000B4F7010020040040813201002F83004095
2132:1085300081B200000400A205486D00000200004066
2133:10854000439901000400A2F20E6C00000400A20294
2134:10855000803200000500004043990100000000F354
2135:1085600008B00100AE882250816C00000F0400406A
2136:1085700089980100100000408AE401000999000474
2137:108580008A14010004002048096C000004002057F0
2138:10859000816C000004002040E6B1010003000040AF
2139:1085A00096E401000000000496C00100B488004B6E
2140:1085B00010C90000E48B004109B000000400002055
2141:1085C0008FB00000040000208FB0000004000020E5
2142:1085D0008FB00000040000208FB0000004000020D5
2143:1085E0008FB00000040000208FB0000004000020C5
2144:1085F0008FB00000040000208FB00000198C0041F3
2145:1086000009B00000040000208FB00000040000202A
2146:108610008FB00000040000208FB000000400002094
2147:108620008FB00000040000208FB000000400002084
2148:108630008FB00000040000208FB000000400002074
2149:108640008FB00000558C004509B00000558C0045E6
2150:1086500009B00000558C004509B00000558C00455C
2151:1086600009B00000040000208FB0000004000020CA
2152:108670008FB00000040000208FB000000400002034
2153:108680008FB000009C8C004309B00000CB8C0043ED
2154:1086900009B00000CF8C004409B000003E8E0045B8
2155:1086A00009B00000040000208FB00000040000208A
2156:1086B0008FB00000040000208FB0000004000020F4
2157:1086C0008FB00000040000208FB00000DF8C00435A
2158:1086D00009B00000DD8C004309B00000E08B0045CC
2159:1086E00009B00000040000208FB00000040000204A
2160:1086F0008FB00000040000208FB0000004000020B4
2161:108700008FB00000988D004209B00000988D0043A2
2162:1087100009B00000988D004409B00000E08B0045CE
2163:1087200009B00000040000208FB000000400002009
2164:108730008FB00000040000208FB000000400002073
2165:108740008FB00000040000208FB00000B88D0043FF
2166:1087500009B00000040000208FB00000E08B00454D
2167:1087600009B00000040000208FB0000004000020C9
2168:108770008FB00000040000208FB000000400002033
2169:108780008FB00000040000208FB00000E08D004397
2170:1087900009B00000E08D004409B00000E08B004506
2171:1087A00009B00000040000208FB000000400002089
2172:1087B0008FB00000040000208FB0000004000020F3
2173:1087C0008FB00000040000208FB00000E08D004258
2174:1087D00009B00000040000208FB00000E08B0045CD
2175:1087E00009B00000040000208FB000000400002049
2176:1087F0008FB00000040000208FB0000004000020B3
2177:108800008FB00000040000208FB000000F8E0044E5
2178:1088100009B00000040000208FB00000E08B00458C
2179:1088200009B00000040000208FB000000400002008
2180:108830008FB00000040000208FB000000400002072
2181:108840008FB00000E08B004209B00000228E00458E
2182:1088500009B00000228E004509B00000E08B004501
2183:1088600009B00000040000208FB0000004000020C8
2184:108870008FB00000040000208FB000000400002032
2185:108880008FB00000248E004209B00000248E004307
2186:1088900009B00000248E004409B00000248E004579
2187:1088A00009B00000040000208FB000000400002088
2188:1088B0008FB00000040000208FB0000004000020F2
2189:1088C0008FB00000040000208FB0000004000020E2
2190:1088D0008FB000002F8E004409B00000E08B0045EF
2191:1088E00009B00000040000208FB000000400002048
2192:1088F0008FB00000040000208FB0000004000020B2
2193:108900008FB00000418E004209B00000308E00435D
2194:1089100009B00000418E004409B00000E08B004522
2195:1089200009B00000040000208FB000000400002007
2196:108930008FB00000040000208FB000000400002071
2197:108940008FB00000040000208FB00000438E004371
2198:1089500009B00000378E004409B00000E08B0045EC
2199:1089600009B00000040000208FB0000004000020C7
2200:108970008FB00000040000208FB00000E08B0041A9
2201:1089800009B00000968D004209B00000968D0043AA
2202:1089900009B00000968D004409B00000E08B00454E
2203:1089A00009B00000040000208FB000000400002087
2204:1089B0008FB00000040000208FB00000E08B004169
2205:1089C00009B00000458E004209B00000458E00430A
2206:1089D00009B00000458E004409B00000E08B00455E
2207:1089E00009B00000040000208FB000000400002047
2208:1089F0008FB00000040000208FB0000004000020B1
2209:108A00008FB00000040000208FB0000004000020A0
2210:108A10008FB00000040000208FB000004C8E004595
2211:108A200009B00000040000208FB000000400002006
2212:108A30008FB00000040000208FB000004E8E004276
2213:108A400009B00000040000208FB0000004000020E6
2214:108A50008FB00000040000208FB000000400002050
2215:108A60008FB00000040000208FB000000400002040
2216:108A70008FB00000040000208FB000000400002030
2217:108A80008FB000005B8E004309B00000C18E004330
2218:108A900009B00000CF8C004409B000003E8E0045B4
2219:108AA00009B00000040000208FB000000400002086
2220:108AB0008FB00000040000208FB0000004000020F0
2221:108AC0008FB00000040000208FB00000C98E00436A
2222:108AD00009B00000CF8C004409B000003E8E004574
2223:108AE00009B00000040000208FB000000400002046
2224:108AF0008FB00000040000208FB0000004000020B0
2225:108B00008FB00000040000208FB00000DD8E004315
2226:108B100009B00000040000208FB00000E08B004589
2227:108B200009B00000040000208FB000000400002005
2228:108B30008FB00000040000208FB00000040000206F
2229:108B40008FB00000968C004309B00000C58E004332
2230:108B500009B00000CF8C004409B000003E8E0045F3
2231:108B600009B00000040000208FB0000004000020C5
2232:108B70008FB0000002002D0548B101000400A2F2F0
2233:108B80000E6C00000400A2028032000007002D409D
2234:108B900081B20100000000F308B0010010040040A1
2235:108BA00089980100100000478AE401000999000437
2236:108BB0008A1401000400204E096C00002A000047BE
2237:108BC00080CE0100040024408132000006002047CE
2238:108BD000E6B101000400004796E4010000000047F0
2239:108BE00096D001000000004796D00100000000046C
2240:108BF00096C001007D89004B10C90000F98E004924
2241:108C000009B000000400002085B00000040000202E
2242:108C100085B000000400002085B0000004000020A2
2243:108C200085B000000400002085B000000400002092
2244:108C300085B000000400002085B000000400002082
2245:108C400085B000000400002085B000000400002072
2246:108C500085B000000400002085B000000400002062
2247:108C600085B000000400002085B000000400002052
2248:108C700085B00000328F004209B0000004000020DF
2249:108C800085B000000400002085B000000400002032
2250:108C900085B000000400002085B000000400002022
2251:108CA00085B000000400002085B000000400002012
2252:108CB00085B000000400002085B000000400002002
2253:108CC00085B000000400002085B0000004000020F2
2254:108CD00085B000000400002085B0000004000020E2
2255:108CE00085B00000398F004609B000000400002064
2256:108CF00085B000000400002085B0000004000020C2
2257:108D000085B000000400002085B0000004000020B1
2258:108D100085B000000400002085B0000004000020A1
2259:108D200085B000000400002085B000000400002091
2260:108D300085B000000400002085B000000400002081
2261:108D400085B000000400002085B000000400002071
2262:108D500085B000000400002085B000004A8F00426A
2263:108D600009B000000400002085B000006D8F0042B3
2264:108D700009B000000400002085B0000004000020BD
2265:108D800085B000000400002085B000000400002031
2266:108D900085B000000400002085B000000400002021
2267:108DA00085B00000678F004A09B000000400002071
2268:108DB00085B000000400002085B000000400002001
2269:108DC00085B000000400002085B00000748F0043CF
2270:108DD00009B000000400002085B00000DF8F0044CF
2271:108DE00009B000000400002085B00000040000204D
2272:108DF00085B000000400002085B0000004000020C1
2273:108E000085B000000400002085B0000004000020B0
2274:108E100085B00000DD8F004B09B000000400002089
2275:108E200085B000000400002085B000000400002090
2276:108E300085B000003D8F004109B000000400002013
2277:108E400085B000003D8F004309B000003D8F004415
2278:108E500009B000003D8F004509B000003D8F00467D
2279:108E600009B000003D8F004709B000003D8F004869
2280:108E700009B000003D8F004909B000003D8F004A55
2281:108E800009B000003D8F004B09B000003D8F004C41
2282:108E900009B000003D8F004D09B000000400002023
2283:108EA00085B000000400002085B00000489000421A
2284:108EB00009B000000400002085B000004890004484
2285:108EC00009B000000400002085B00000040000206C
2286:108ED00085B000000400002085B0000004000020E0
2287:108EE00085B000000400002085B0000004000020D0
2288:108EF00085B000004890004B09B00000040000203D
2289:108F000085B000000400002085B0000004000020AF
2290:108F100085B000000400002085B00000040000209F
2291:108F200085B000006590004509B0000004000020F5
2292:108F300085B000000400002085B00000040000207F
2293:108F400085B000000400002085B000007D9000473F
2294:108F500009B000000400002085B0000056900045D4
2295:108F600009B000000400002085B0000004000020CB
2296:108F700085B000001593004609B0000004000020F1
2297:108F800085B000000400002085B00000040000202F
2298:108F900085B000000400002085B00000040000201F
2299:108FA00085B000006D8F004609B000004A8F004672
2300:108FB00009B00000658F004709B00000658F0048C8
2301:108FC00009B000000400002085B00000040000206B
2302:108FD00085B000000400002085B00000678F004AC3
2303:108FE00009B000000400002085B00000040000204B
2304:108FF00085B000000400002085B0000004000020BF
2305:1090000085B000000400002085B0000004000020AE
2306:1090100085B00000DF8F004509B00000748F004369
2307:1090200009B00000658F004709B00000658F004857
2308:1090300009B000000400002085B0000004000020FA
2309:1090400085B000000400002085B00000DD8F004CDA
2310:1090500009B000000400002085B0000004000020DA
2311:1090600085B000000400002085B00000040000204E
2312:1090700085B000000400002085B00000040000203E
2313:1090800085B000008490004409B000008490004244
2314:1090900009B00000C98B004709B00000C98B004827
2315:1090A00009B000000400002085B00000040000208A
2316:1090B00085B000000400002085B000008490004BC3
2317:1090C00009B000000400002085B00000040000206A
2318:1090D00085B000003D8F004109B00000AF9000470F
2319:1090E00009B000000400002085B000009290004705
2320:1090F00009B000000400002085B00000040000203A
2321:1091000085B000000400002085B0000004000020AD
2322:1091100085B000000400002085B00000040000209D
2323:1091200085B000009290004709B0000004000020C4
2324:1091300085B000000400002085B00000040000207D
2325:1091400085B000000400002085B00000040000206D
2326:1091500085B000000400002085B00000040000205D
2327:1091600085B000009290004709B00000AF90004722
2328:1091700009B00000658F004709B00000658F004806
2329:1091800009B000000400002085B0000004000020A9
2330:1091900085B000000400002085B0000092900047D8
2331:1091A00009B000000400002085B000000400002089
2332:1091B00085B000000400002085B0000004000020FD
2333:1091C00085B000000400002085B0000004000020ED
2334:1091D00085B000000400002085B0000004000020DD
2335:1091E00085B00000BE90004709B00000BE90004866
2336:1091F00009B000000400002085B000000400002039
2337:1092000085B000000400002085B0000004000020AC
2338:1092100085B000000400002085B00000040000209C
2339:1092200085B000002F91004009B000005191004727
2340:1092300009B000004391004809B000008A9000473F
2341:1092400009B000008A90004709B000005191004722
2342:1092500009B000005A91004709B000005A91004837
2343:1092600009B000000400002085B0000043910048D0
2344:1092700009B000008A90004709B000008A900047BA
2345:1092800009B000004391004809B00000040000202C
2346:1092900085B000000400002085B00000040000201C
2347:1092A00085B000004890004309B000000400002091
2348:1092B00085B000004890004509B000004890004685
2349:1092C00009B00000658F004709B00000658F0048B5
2350:1092D00009B000000400002085B000004890004A5A
2351:1092E00009B000000400002085B000004890004C48
2352:1092F00009B000000400002085B000000400002038
2353:1093000085B000000400002085B00000AE9000474A
2354:1093100009B00000A090004809B0000091900047FB
2355:1093200009B000009190004709B00000AE900047DE
2356:1093300009B00000C98B004709B00000C98B004884
2357:1093400009B000000400002085B00000A090004893
2358:1093500009B000009190004709B0000091900047CB
2359:1093600009B00000A090004809B0000004000020EF
2360:1093700085B000000400002085B000005D9100422F
2361:1093800009B000000400002085B000005D91004499
2362:1093900009B000000400002085B000000400002097
2363:1093A00085B000000400002085B00000040000200B
2364:1093B00085B000000400002085B0000004000020FB
2365:1093C00085B000005D91004B09B000000400002052
2366:1093D00085B000000400002085B0000004000020DB
2367:1093E00085B000000400002085B0000004000020CB
2368:1093F00085B000005D91004309B00000040000202A
2369:1094000085B000005D91004509B000005D91004607
2370:1094100009B000005D91004709B000005D9100486F
2371:1094200009B000000400002085B000005D91004AF2
2372:1094300009B000000400002085B000005D91004CE0
2373:1094400009B000005D91004C09B00000040000204C
2374:1094500085B000000400002085B00000040000205A
2375:1094600085B000007A91004609B000000400002099
2376:1094700085B000000400002085B00000040000203A
2377:1094800085B000000400002085B000007D900047FA
2378:1094900009B000000400002085B000007A91004669
2379:1094A00009B000000400002085B000000400002086
2380:1094B00085B000000400002085B0000004000020FA
2381:1094C00085B000000400002085B0000004000020EA
2382:1094D00085B000009C92004609B000000400002006
2383:1094E00085B000000400002085B0000004000020CA
2384:1094F00085B000000400002085B000007D9000478A
2385:1095000009B000000400002085B000009C920046D5
2386:1095100009B000000400002085B000000400002015
2387:1095200085B000009C92004609B0000004000020B5
2388:1095300085B000000400002085B000000400002079
2389:1095400085B000000400002085B00000C5920042F4
2390:1095500009B000000400002085B0000004000020D5
2391:1095600085B000000400002085B000000400002049
2392:1095700085B000000400002085B000000400002039
2393:1095800085B00000C392004A09B00000040000202A
2394:1095900085B000000400002085B000000400002019
2395:1095A00085B000000400002085B000000400002009
2396:1095B00085B000000400002085B0000004000020F9
2397:1095C00085B00000C592004609B0000004000020EC
2398:1095D00085B00000658F004709B00000658F004826
2399:1095E00009B000000400002085B000000400002045
2400:1095F00085B000000400002085B00000C392004A3E
2401:1096000009B000000400002085B000000400002024
2402:1096100085B000000400002085B000000400002098
2403:1096200085B000000400002085B000000400002088
2404:1096300085B000000400002085B000000400002078
2405:1096400085B000000400002085B000000400002068
2406:1096500085B000006A91004109B0000004000020BC
2407:1096600085B000000400002085B000000400002048
2408:1096700085B000000400002085B000000400002038
2409:1096800085B000000400002085B000007791004202
2410:1096900009B000000400002085B00000779100446C
2411:1096A00009B000000400002085B000000400002084
2412:1096B00085B000000400002085B0000004000020F8
2413:1096C00085B000000400002085B0000004000020E8
2414:1096D00085B000007791004B09B000000400002025
2415:1096E00085B000000400002085B0000004000020C8
2416:1096F00085B000000400002085B0000004000020B8
2417:1097000085B000007791004309B0000004000020FC
2418:1097100085B000007791004509B0000077910046C0
2419:1097200009B000007791004709B000007791004828
2420:1097300009B000000400002085B0000004000020F3
2421:1097400085B000000400002085B000007791004C37
2422:1097500009B000000400002085B0000004000020D3
2423:1097600085B000000400002085B000000400002047
2424:1097700085B000006590004C09B000000400002096
2425:1097800085B000000400002085B000000400002027
2426:1097900085B000000400002085B000007D900047E7
2427:1097A00009B000000400002085B000005690004C75
2428:1097B00009B000000400002085B000000400002073
2429:1097C00085B000008393004609B00000040000202B
2430:1097D00085B000000400002085B000000A9300421C
2431:1097E00009B000000400002085B000000A93004486
2432:1097F00009B000000400002085B000000400002033
2433:1098000085B000000400002085B0000004000020A6
2434:1098100085B000000400002085B000000400002096
2435:1098200085B000000A93004B09B00000040000203E
2436:1098300085B000000400002085B000000400002076
2437:1098400085B000000400002085B000000400002066
2438:1098500085B000000400002085B000000400002056
2439:1098600085B000000A93004509B000000A93004645
2440:1098700009B00000658F004709B00000658F0048FF
2441:1098800009B000000400002085B0000004000020A2
2442:1098900085B000000400002085B000000A93004C51
2443:1098A00009B000000400002085B000000400002082
2444:1098B00085B000000400002085B0000056900042F2
2445:1098C00009B000001593004609B000000400002014
2446:1098D00085B000000400002085B0000056900046CE
2447:1098E00009B000000400002085B000007D90004712
2448:1098F00009B000000400002085B000001593004668
2449:1099000009B000000400002085B000000400002021
2450:1099100085B000001593004609B000000400002047
2451:1099200085B000000400002085B000000400002085
2452:1099300085B000001C93004309B000000400002023
2453:1099400085B000000400002085B000000400002065
2454:1099500085B000000400002085B000007D90004725
2455:1099600009B000000400002085B000001C930043F3
2456:1099700009B000000400002085B0000004000020B1
2457:1099800085B000001C93004D09B0000004000020C9
2458:1099900085B000000400002085B000000400002015
2459:1099A00085B000000400002085B000003293004321
2460:1099B00009B000000400002085B000000400002071
2461:1099C00085B000000400002085B0000004000020E5
2462:1099D00085B000000400002085B0000004000020D5
2463:1099E00085B000000393004A09B000000400002085
2464:1099F00085B000000400002085B0000004000020B5
2465:109A000085B000000400002085B0000004000020A4
2466:109A100085B000000400002085B000000400002094
2467:109A200085B000003293004309B00000040000201C
2468:109A300085B00000658F004709B00000658F0048C1
2469:109A400009B000000400002085B0000004000020E0
2470:109A500085B000000400002085B000000393004A98
2471:109A600009B000000400002085B0000004000020C0
2472:109A700085B000000400002085B000000400002034
2473:109A800085B000004A93004309B0000004000020A4
2474:109A900085B000000400002085B000000400002014
2475:109AA00085B000000400002085B000007D900047D4
2476:109AB00009B000000400002085B000004A93004374
2477:109AC00009B000000400002085B000000400002060
2478:109AD00085B000004A93004D09B00000040000204A
2479:109AE00085B000000400002085B000004A8F0042CD
2480:109AF00009B000000400002085B000006D8F004216
2481:109B000009B000000400002085B00000040000201F
2482:109B100085B000000400002085B000000400002093
2483:109B200085B000000400002085B000000400002083
2484:109B300085B000006D93004209B0000004000020D1
2485:109B400085B000000400002085B000000400002063
2486:109B500085B000000400002085B000000400002053
2487:109B600085B000000400002085B000000400002043
2488:109B700085B000006D8F004609B000004A8F004696
2489:109B800009B00000658F004709B00000658F0048EC
2490:109B900009B000000400002085B00000040000208F
2491:109BA00085B000000400002085B000006D930046E1
2492:109BB00009B000000400002085B00000040000206F
2493:109BC00085B000000400002085B0000004000020E3
2494:109BD00085B000007493004A09B000000400002022
2495:109BE00085B000000400002085B0000004000020C3
2496:109BF00085B000000400002085B000007D90004783
2497:109C000009B000000400002085B000007493004AF1
2498:109C100009B000000400002085B00000040000200E
2499:109C200085B000001693004609B000000400002033
2500:109C300085B000000400002085B000000400002072
2501:109C400085B000001693004609B000000400002013
2502:109C500085B000000400002085B000000400002052
2503:109C600085B000000400002085B000007D90004712
2504:109C700009B000000400002085B0000016930046E3
2505:109C800009B000000400002085B00000040000209E
2506:109C900085B000001693004609B0000004000020C3
2507:109CA00085B000000400002085B000000400002002
2508:109CB00085B000000400002085B000007D930042C4
2509:109CC00009B000000400002085B00000040000205E
2510:109CD00085B000000400002085B0000004000020D2
2511:109CE00085B000000400002085B0000004000020C2
2512:109CF00085B000000393004A09B000000400002072
2513:109D000085B000000400002085B0000004000020A1
2514:109D100085B000000400002085B000000400002091
2515:109D200085B000000400002085B000000400002081
2516:109D300085B000007D93004609B0000004000020BB
2517:109D400085B00000658F004709B00000658F0048AE
2518:109D500009B000000400002085B0000004000020CD
2519:109D600085B000000400002085B000000393004A85
2520:109D700009B000000400002085B0000004000020AD
2521:109D800085B000000400002085B00000748F004DF5
2522:109D900009B000000400002085B00000040000208D
2523:109DA00085B000000400002085B000000400002001
2524:109DB00085B000000400002085B0000004000020F1
2525:109DC00085B000000400002085B0000004000020E1
2526:109DD00085B000000400002085B0000004000020D1
2527:109DE00085B000000400002085B0000004000020C1
2528:109DF00085B000000400002085B0000004000020B1
2529:109E000085B000000400002085B0000004000020A0
2530:109E100085B000000400002085B00000748F004D64
2531:109E200009B00000658F004709B00000658F004849
2532:109E300009B000000400002085B0000004000020EC
2533:109E400085B000000400002085B000000400002060
2534:109E500085B000000400002085B000000400A205C9
2535:109E6000486D0000040022078032000007002E4BDE
2536:109E700019900100FB870004E6B10000C98B224263
2537:109E8000197C00000F97003A81300100C98B004017
2538:109E900081B20000C98B2242197C0000FF1F000F15
2539:109EA0001E8C01007396004081320100DB8B9C0FF9
2540:109EB000803200000000005C1F8001000080001064
2541:109EC00042C90100DB8B2240E36D00000000004529
2542:109ED00061B101004000001062DD0100D88BA84094
2543:109EE00081320000238300881CB000001D852202FF
2544:109EF00080320000DC8B42408132000000000044D0
2545:109F00009393010000001A02689701001D8500402C
2546:109F100005B000000400A205486D000004002207FF
2547:109F20008032000005002E4B19900100FB870004D1
2548:109F3000E6B100000000004087B0010000000040D2
2549:109F40008DB001000080000342C90100400000A163
2550:109F500044C90100000000F0E0B101007F98000654
2551:109F6000074001000400A25C1F7C00000000000606
2552:109F700007D00100D4002E5C1F90010000000007F4
2553:109F8000F0B101000C80000342C90100000000F0A4
2554:109F9000F0B101000000004081B20100000000FEAD
2555:109FA00096B00100000000FE96C00100000000F025
2556:109FB000F0B101000000004081B20100000000FE8D
2557:109FC00096C00100000000FE96C00100000000F0F5
2558:109FD000F0B101000000004081B20100000000FA71
2559:109FE00096C00100000000FE96C001000030004B4A
2560:109FF000948801000000004695F001000000004A2E
2561:10A0000096C001005E012E34978401000200004BCF
2562:10A01000E4E5010064012040E1B10100090000070E
2563:10A0200086E4010000002EA787C001001000001088
2564:10A0300048C9010010000040F19901005801004397
2565:10A04000F0C9010058010005E0C90100000000440A
2566:10A0500061B10100A00000A462DD0100088CA840ED
2567:10A06000813200000000000548B101001A000040E4
2568:10A070009798010008002E4095B00100108C204BED
2569:10A08000946C000000000040F1B101000D8C004113
2570:10A0900095C000001080001042C90100178C2240BA
2571:10A0A000E36D00000000004461B1010040000010B9
2572:10A0B00062DD0100138CA8408132000023830088F8
2573:10A0C0001CB000000000000548B101000F970040DF
2574:10A0D00081300100E08B004081B200000C80000361
2575:10A0E00042C90100000000F886B00100000000F83D
2576:10A0F00088B001001480000398C801000400A2A1E8
2577:10A10000986C00001E8C444081320000218CA24CCF
2578:10A11000FD7F0000228C004CFD930000238C20F07A
2579:10A12000566F0000000000F056B3010000001C4014
2580:10A1300081B2010064000040819801006400004089
2581:10A1400080CC01000400A64081320000D80000400D
2582:10A15000819801000400A2438104000000800010E7
2583:10A1600044C9010064000040F1990100700000053D
2584:10A17000F0C9010000000043F0B1010000000047F9
2585:10A1800061B101002000001062DD01002E8CA844A6
2586:10A19000E0310000100000108CC801000080004673
2587:10A1A00044C9010040000040F19901006801000528
2588:10A1B000F0C9010064000043F0C90100040024401C
2589:10A1C000813200000000004761B10100000000463C
2590:10A1D00062B10100378CA844E0310000238300887D
2591:10A1E0001CB000000900000786E4010038002EA71B
2592:10A1F00087C001008B002D0548B101003F8C224330
2593:10A20000E77D00000000004445C10100428C22446B
2594:10A21000E77D00000000004C45C101000000004A3D
2595:10A2200019900100680120A2E4B1010088000040FB
2596:10A2300043990100468C230BE56D000000000041AE
2597:10A24000199001000080001044C901005000004036
2598:10A25000F199010058010043F0C9010058010005BF
2599:10A26000E0C901000000004461B1010000000010DD
2600:10A2700062B101004B8CA84081320000238300882A
2601:10A280001CB000005C002E0548B1010000800003F6
2602:10A2900042C90100000060F096B00100A00000403B
2603:10A2A000439901000400A2F2803200000F970041A0
2604:10A2B00081300100E08B004081B20000588CA2493F
2605:10A2C000197C000086000040479901005C8C00402A
2606:10A2D000E5B1000086002F49198001005C8CA2F2D4
2607:10A2E000803200008B0000404799010000000042CE
2608:10A2F000E79101005F8CA246197C0000A00000409D
2609:10A3000047990100638C0040E5B10000A0002F4692
2610:10A3100019800100638CA2F2803200008B000040A3
2611:10A320004799010000000041E79101000700004E3D
2612:10A3300080E401000039004080C801000400A24010
2613:10A34000066C0000A80000404399010034002DF085
2614:10A3500024B00100000000FB0CB00100000000FB75
2615:10A3600010B00100000000FB12B001000F0000F36C
2616:10A3700016880100040000F314F40100938C2640B9
2617:10A3800081320000798C220A166C000058003D438F
2618:10A3900013E00100000000F882B00100040022F088
2619:10A3A000843000001B980040813201002383008824
2620:10A3B0001CB000000000000548B101000000004191
2621:10A3C00013C00100788CA043136C00000000004013
2622:10A3D00013B001006E8C004115D00000938C220A4E
2623:10A3E000803200000400A208126C000058003D43B7
2624:10A3F00013E00100000000F882B00100040022F028
2625:10A40000843000001B980040813201004000204051
2626:10A41000E1B10100238300881CB0000000000005AA
2627:10A4200048B10100938C224115500000000000410A
2628:10A4300011C00100868CA043116C00000000004098
2629:10A4400011B0010004002206106C000058003D43CA
2630:10A4500011E00100000000F836B00100040022F015
2631:10A46000003000000000005083B001005497004706
2632:10A4700061310100238300881CB000003194000585
2633:10A48000483101000000004561B1010040000010AA
2634:10A4900062DD01008F8CA840813200002383008898
2635:10A4A0001CB00000828C000548B10000370020403D
2636:10A4B000E7B101008697005181300100E08B004038
2637:10A4C00081B2000037000040439901000400A2F36C
2638:10A4D0008032000034002E41F5B10100001100402F
2639:10A4E000E59901000400A248197C0000A08C0048F6
2640:10A4F0001990000037000040439901000400A2F3C6
2641:10A500008032000034002E41F5B1010000110040FE
2642:10A51000E59901000080000342C90100000000F835
2643:10A5200094B00100A78C2245237C0000B0002FF0DE
2644:10A530008CB00100000060F08CC001007C00004085
2645:10A54000439901000400A3F08C6C000090000040CF
2646:10A550004399010035002DF08CB0010034002DF33B
2647:10A5600084B00100040022F3846C000058003E43D4
2648:10A5700085E00100AE8C2248197C000000000041FB
2649:10A580008DC001000000680A8CC0010038002A4A12
2650:10A59000E0B1010028000000E0C901003C00201BE0
2651:10A5A000E0B101001080000342C90100000000F882
2652:10A5B00038B00100000000F826B00100040022F8C5
2653:10A5C00002300000BC8C2301146C0000000000F875
2654:10A5D00080B00100000000F882B001004C0020F0C3
2655:10A5E000E4B1010044002040E0B1010048002041F6
2656:10A5F000E0B10100A8002D1032B001005F9800F01A
2657:10A6000024300100C58CA244816C0000C38C22411F
2658:10A61000197C0000BC9500403B300100ED8CA20885
2659:10A620003C300000C58C004081B20000BF94004067
2660:10A6300081320100ED8CA2083C3000005000201C4B
2661:10A64000E0B1010054002013E0B101004E002001F0
2662:10A65000E4B101004000200AE0B101008697005FEC
2663:10A6600081300100E08B004081B2000037000040E3
2664:10A6700047990100959500F394300100A08C224A7F
2665:10A6800080320000D18C004081B2000037000040D1
2666:10A6900047990100959500F3943001000400204390
2667:10A6A000976C000058003E4397E001000000001B3B
2668:10A6B000F0B101001F006000008C0100E08B8511EB
2669:10A6C000803200000480000342C90100B0002FF076
2670:10A6D0008CB00100000060F08CC001007C000040E4
2671:10A6E000439901000400A3F08C6C00008697005F82
2672:10A6F00081300100E08B004081B20000040022495B
2673:10A70000197C0000DF8C004919800000E48C224194
2674:10A71000197C0000BC9500403B300100E88CA20889
2675:10A720003C3000008697005F81300100E08B0040E4
2676:10A7300081B20000BF94004081320100E88CA20881
2677:10A740003C3000008697005F81300100E08B0040C4
2678:10A7500081B2000050002D1032B0010054002DF0E5
2679:10A7600038B001004E002DF026B0010040002DF25F
2680:10A7700002B00100000000F014B001003000001031
2681:10A780008CC801000080004644C9010068012D44C6
2682:10A7900061B10100100068F280C8010000000008EB
2683:10A7A000F0B1010058010005E0C901000000000BF4
2684:10A7B00037B001000000004036D001005C012E409F
2685:10A7C00010C001000000000680C00100000000521F
2686:10A7D00081D0010018970040E431010020000046BC
2687:10A7E00062DD0100F98CA840233000000E95004086
2688:10A7F000813201001695004081320100078D8241AF
2689:10A80000234000002080001042C90100048D224036
2690:10A81000E36D00000000004661B10100400000103F
2691:10A8200062DD0100018DA840813200002383008891
2692:10A830001CB000000000000548B10100000000103D
2693:10A8400032B001000000004123B001000080001977
2694:10A8500044C901000F8D2241197C00000B8DA3011A
2695:10A860000C6C00000C8D000604B00000000000011C
2696:10A8700004B001000E8D2002366C00000000001BA9
2697:10A8800004B00100128D0002E0B10000118DA3019F
2698:10A890000C6C0000128D000604B0000000000001E6
2699:10A8A00004B001000000680216940100FFFF000BD5
2700:10A8B00016D80100000068083E9601000000001C48
2701:10A8C000F0B101000000004661B101002000001954
2702:10A8D00062DD0100178DA813E0310000548D2202C3
2703:10A8E0001450000044002D020CD001003F8DA20244
2704:10A8F00002500000258D225C1F7C00002080000398
2705:10A9000042C90100248D2240E36D00000000004791
2706:10A9100061B101004000001062DD0100208DA840FF
2707:10A9200081320000238300881CB000000000000575
2708:10A9300048B1010044002D5C1F80010048002DF04B
2709:10A9400038B001004C002DF026B0010038002FF285
2710:10A9500002B00100418D2201146C00000400A440EB
2711:10A9600081320000338D22461F7C0000000000462B
2712:10A970001F80010020002D0348B10100328D2240CC
2713:10A98000E36D00000000004461B1010040000010D0
2714:10A9900062DD01002F8DA8408132000023830088F2
2715:10A9A0001CB0000038002F0548B10100000000F87D
2716:10A9B00094B0010038002DF096B001000000004C6A
2717:10A9C000E1C101002000000348C901000000224A43
2718:10A9D000F1B1010044000005F0C901000000004A87
2719:10A9E000F0B101000000004BE0B1010000000047A1
2720:10A9F00061B10100A00000A462DD01003C8DA85CF3
2721:10AA00001F100000418D000548B100000000000249
2722:10AA100038C0010004002440813200004F8D22061E
2723:10AA2000803200000000005033C001004D8DA202B2
2724:10AA3000366C000004002241197C000004008F0DD8
2725:10AA400042310000040022F0803200000400225C49
2726:10AA5000E17D00000400A2F06A060000100000F88A
2727:10AA600010C801000000005C11800100F0070040E8
2728:10AA700037980100FD8C00A11AB000000000000210
2729:10AA800010C00100FD8C000236D000005000201CD8
2730:10AA9000E0B1010054002013E0B101004E0020019C
2731:10AAA000E4B101004000200AE0B101005B8D005FCD
2732:10AAB00001B000000400A202026C00000400A20227
2733:10AAC0000C6C000037002D4601B00100040000F3BB
2734:10AAD00080F401005A8DA043816C000000000055F5
2735:10AAE00001B0010040002040E1B1010000800019E8
2736:10AAF00042C90100618D2240E36D00000000004664
2737:10AB000061B101004000001962DD01005E8DA840C6
2738:10AB100081320000238300881CB0000013950040A0
2739:10AB2000813201003080001042C90100688D22404E
2740:10AB3000E36D00000000004461B10100400000101E
2741:10AB400062DD0100658DA84081320000238300880A
2742:10AB50001CB0000060012F0548B101000000000B8F
2743:10AB6000E4B101000000005017F001006D8D90F27B
2744:10AB7000164000000000004117C0010000006620E0
2745:10AB800017A40100320000A62AC00100000000F254
2746:10AB90002A940100708D45486131000000D0001EEC
2747:10ABA00062DD0100758D284005300000718D22485E
2748:10ABB000777D0000788D004081B200000000001514
2749:10ABC00062B10100838D284081320000758D004004
2750:10ABD00081B2000000001D0092B00100808D224172
2751:10ABE000197C0000040022403B6C00000400A348D4
2752:10ABF0003B6C00000080000342C90100C99400F8CA
2753:10AC0000003001007D8DA2413B500000848D004941
2754:10AC100000B00000FF07001E008C0100C994004036
2755:10AC200081320100848D004900B0000000001D4702
2756:10AC300019800100878D225F016C00008E98004012
2757:10AC400081320100AA88000080B000008E8D225C55
2758:10AC50001F7C00002080000342C901008E8D22402D
2759:10AC6000E36D00000000004761B1010040000010EA
2760:10AC700062DD01008B8DA8408132000023830088B3
2761:10AC80001CB000008E8D400548310000FFFF00071A
2762:10AC900094890100948D85CA943000008E98185CC8
2763:10ACA0001F0001000E00000F1E8C0100B78700403E
2764:10ACB00081B200008697180080300100E08B0047C9
2765:10ACC000198000000000004019800100E08B22473D
2766:10ACD000197C0000BF940040813201009B8DA208C6
2767:10ACE00080320000E08B004081B2000018970040E5
2768:10ACF0000D3001009C01004045990100FFFF000B51
2769:10AD0000988801008B002D5017F00100A18D904C08
2770:10AD1000164000000000004117C00100A38D22432F
2771:10AD2000E77D00000000004445C1010000006620EE
2772:10AD300017A4010068010040439901005C012EF254
2773:10AD400080B00100020062407ECD0100000000578B
2774:10AD500081C0010000002E1048B101000300004036
2775:10AD6000F08D010000000008F0B10100580100055D
2776:10AD7000E0C901000000004461B1010000000010C2
2777:10AD800062B10100AD8DA8408132000023830088AC
2778:10AD90001CB000000000000548B10100B18D45481D
2779:10ADA000613100000050000862DD0100B78D2840CD
2780:10ADB00005300000B28D2248777D0000C9941D083F
2781:10ADC00000300100E08B004081B20000E08B1D47A5
2782:10ADD000198000000400A205486D00003500004005
2783:10ADE00047990100010063F384C80100BD8DA043B1
2784:10ADF000856C00000000634085B00100A8000040A1
2785:10AE00004399010037002FF024B00100040022F321
2786:10AE10009E060000010063F382CC0100CB8DA241AD
2787:10AE20009E060000E08B224483700000A8000040D2
2788:10AE3000439901000400A2F0246C00003600004099
2789:10AE40004399010058003D43E7E10100E08B1FF00A
2790:10AE5000246C00008E98004881300100AA882341AC
2791:10AE6000836C0000AA88004781B0000034000040D5
2792:10AE70004399010004002242E66D000058003D4362
2793:10AE800085E00100000000F836B00100000000F08D
2794:10AE900000B0010004002200803200000400A20083
2795:10AEA000BE06000028000040839801005497004728
2796:10AEB00061310100238300881CB0000000002D03D5
2797:10AEC00048B1010008002DF094B00100000000F826
2798:10AED0008EB0010090002DF014B0010000000005BC
2799:10AEE00048B10100A88CA2408F7C0000DE8D224773
2800:10AEF0008F7C00000400A248197C0000A88C004848
2801:10AF000019900000040022468F7C0000608E0040F3
2802:10AF100081B200000400A205486D000036002D5DDE
2803:10AF200005B4010037002DF380B00100000000F3EC
2804:10AF30008EB00100F00000477E8901000400264029
2805:10AF4000813200005C003D4381E00100A8002DF04B
2806:10AF500094B001000400224A80320000000000F09A
2807:10AF600024B001002000001086DC010040800003B6
2808:10AF700044C901009293004AF03101000400A25C30
2809:10AF80001F7C000036002F5C1F900100F28DA25044
2810:10AF90008F50000034002040E1B10100E08B004000
2811:10AFA00081B20000F00000477E89010004002640C5
2812:10AFB000813200000000634181C00100F78DA04391
2813:10AFC000816C00000000634081B001003700204721
2814:10AFD000E6B10100E08B2247803200000400004708
2815:10AFE0000CF401000000004F8F8401000C8E2247FA
2816:10AFF0000C6C000058003D4381E001000C8E1FF0F6
2817:10B00000246C00000000005C1F8001000080001024
2818:10B0100042C90100058E2240E36D0000000000459A
2819:10B0200061B101004000001062DD0100028EA84005
2820:10B0300081320000238300881CB00000058E42404E
2821:10B0400005300000000000449393010000001A5DE9
2822:10B05000699301000A8E23410D6C0000E08D00050C
2823:10B0600048B100008E98000548310100AA880048C8
2824:10B0700081B00000E08B22408F6C00008697005F5B
2825:10B0800081300100E08B004081B200004002000CE2
2826:10B090007E8901000400A64081320000A200004029
2827:10B0A00043990100000000F384B00100A6002D497F
2828:10B0B00019900100020000F280F40100B8002D4058
2829:10B0C00081B20100000000F280C0010000000040D9
2830:10B0D00082F8010019000040819801001D8EA040F7
2831:10B0E000826C00002C010040819801001D8EA3405D
2832:10B0F000826C00000000004180B001001F8E204CD7
2833:10B10000856C00000000004185C0010086002040E1
2834:10B11000E4B10100A2002042E6B10100E08B004052
2835:10B1200081B200000F97005081300100E08B004099
2836:10B1300081B200000480000342C90100040022F033
2837:10B1400080300000000000408DB001007F9800407A
2838:10B15000873001000400A25C1F7C0000B0002F5C5F
2839:10B160001F900100000060F080C001007C000040E2
2840:10B17000439901000400A3F0806C00008697005FF3
2841:10B1800081300100E08B004081B2000004000040EB
2842:10B1900081B20000E08B2246197C0000A000004034
2843:10B1A00047990100010062F296CC0100E08BA640B5
2844:10B1B000813200008697004A813001005B9700468B
2845:10B1C00095300100E08B004081B20000E08B224905
2846:10B1D000197C00008600004047990100010062F2DE
2847:10B1E00080CC0100E08BA640813200008697004AA7
2848:10B1F000813001005B97004795300100E08B0040F3
2849:10B2000081B2000031940040813201000400A25C50
2850:10B210001F7C0000E08B005C1F9000000400A24631
2851:10B22000197C0000E08B004081B200000400A249BC
2852:10B23000197C0000E08B004081B20000BA000040A1
2853:10B2400047990100010062F280C80100498E9040D8
2854:10B2500080320000FFFF624081980100A40000409E
2855:10B2600047990100E08B2240E56D0000E08B004132
2856:10B27000E5C100000F97004D81300100E08B0040D8
2857:10B2800081B200005C00004047990100040022F0F8
2858:10B290009630000000000040E1B101000080000392
2859:10B2A00044C901000000004BE0B101000000004073
2860:10B2B0008DB001007F980040873001008B00004076
2861:10B2C00047990100598E80F396300000000000403D
2862:10B2D000E781010000000047199001000400A25C12
2863:10B2E0001F7C0000E08B005C1F90000037000040D6
2864:10B2F000439901000400A2F38032000034000040B2
2865:10B300004599010001000040F5990100001100403D
2866:10B31000E5990100BF94004081320100718EA208BE
2867:10B32000803200003700004047990100000000F320
2868:10B3300082B001000000635183D00100340000405E
2869:10B3400047990100010063F384CC0100698E9F429C
2870:10B35000803200000000634285B00100000000451B
2871:10B3600003F001000000000100C001006B8E375C9B
2872:10B37000613100000000001B62B101006C8EA84B1F
2873:10B38000191000000000000062B101006E8EA8409C
2874:10B3900081320000F087174081B200000080000376
2875:10B3A00042C9010090002DF094B00100AC002DF0D6
2876:10B3B00030B0010035002DF028B0010034002DF32D
2877:10B3C00084B00100040022F3846C000058003E4366
2878:10B3D00085E0010001000018F0C901000000004AEA
2879:10B3E000E0B1010038002000E0B101003C00201B6A
2880:10B3F000E0B1010040002040E1B101000000004048
2881:10B400002BB001006A9700400D30010000000018C9
2882:10B4100016C00100828EA0141644000000000041F6
2883:10B4200017C001000E0000A244C90100000000186E
2884:10B43000F8B10100B0002D14F8B101001050004027
2885:10B44000879801008B8E224A197C0000003000434F
2886:10B4500086C801000030000B16C801008B8EA44086
2887:10B46000813200000000004117C0010001006E435E
2888:10B4700086980100AE970030813001008F8EA04188
2889:10B48000174000000000004117C00100968E224ABC
2890:10B49000197C0000080000A244C90100CC002DABBB
2891:10B4A000F9B10100000000AB17C00100958EA0F0BB
2892:10B4B000164400000000004117C00100000064F0C5
2893:10B4C00082B00100900000404599010000006041F9
2894:10B4D00031C00100BC000040439901009C8E060C65
2895:10B4E00080320000A00020F2E4B10100040009460F
2896:10B4F000191000009C01004045990100FFFF000B5E
2897:10B50000988801008B002D5017F00100A18E904CFF
2898:10B51000164000000000004117C00100A38E224326
2899:10B52000E77D00000000004445C1010000006620E6
2900:10B5300017A4010068010040439901005C012EF24C
2901:10B5400080B00100020062407ECD01000000005783
2902:10B5500081C0010000002E1048B10100030000402E
2903:10B56000F08D010000000008F0B101005801000555
2904:10B57000E0C901000000004461B1010000000010BA
2905:10B5800062B10100AD8EA8408132000023830088A3
2906:10B590001CB000000000000548B10100B18E454814
2907:10B5A000613100000050000862DD0100B28EA84049
2908:10B5B0000530000035001D4047990100010063F38C
2909:10B5C00084C80100B88EA043856C00000000634071
2910:10B5D00085B001003700004047990100040022F3C4
2911:10B5E0009E060000010063F382CC01000400A2412A
2912:10B5F0009E0600008B000040479901000400A24510
2913:10B60000E77D000000000045E79101008697005F9C
2914:10B6100081300100E08B004081B200003700004023
2915:10B6200047990100959500F394300100608E224AFD
2916:10B6300080320000D18C004081B200003700004011
2917:10B6400047990100959500F3943001009A8C224AA5
2918:10B6500080320000D18C004081B2000036000040F2
2919:10B6600043990100000000FB12B001000F0000F33D
2920:10B6700090880100040000F30CF40100040026404F
2921:10B6800081320000CB8C2206906C00000400AA409E
2922:10B69000813200005C003D4313E00100A8002DF062
2923:10B6A00094B0010004002240956C000037002FF098
2924:10B6B00024B0010036002A50E7D1010000006341A8
2925:10B6C00013C00100D88EA043136C0000000000409E
2926:10B6D000E7B101008F9300108630010023830088BA
2927:10B6E0001CB00000DA8E4205483100000000004422
2928:10B6F00093930100CB8C1A5D699300000400A205AE
2929:10B70000486D000036002D1086B001005C003D43FE
2930:10B71000E7E10100A8002DF094B001000400224AE6
2931:10B720008032000035002FF024B0010001006BFBD7
2932:10B7300084C80100E78EA043856C000035002040DE
2933:10B74000E7B101000000004081B20100010063F395
2934:10B7500012C80100EA8EA043136C000000000040F4
2935:10B76000E7B101004080000344C901009293004A00
2936:10B77000F0310100238300881CB00000ED8E4205EB
2937:10B7800048310000000000449393010000001A5D5E
2938:10B79000699301003700004047990100040022F33B
2939:10B7A0009E060000110063F382CC010004001F41DB
2940:10B7B00080320000C28D22419E060000350000400C
2941:10B7C0004399010058003D43E7E10100000000F803
2942:10B7D00036B00100D08D00F000B000005E012D05F4
2943:10B7E00048B10100FA8E65F21230000000993F4224
2944:10B7F00013F00100FF8E2247E77D00002783758844
2945:10B800001CB00000F98E004081B20000000000472B
2946:10B81000E791010000007542199001007500004099
2947:10B8200061990100018FA8B10C300000A9960010A9
2948:10B8300094300100238300881CB000005E012E05B7
2949:10B8400048B10100C0A83D460DE0010000000040E5
2950:10B8500097B001000B8F2240E16D0000040002410F
2951:10B8600097400000088F005043C10000178F224B03
2952:10B87000803200000000624B1294010009000007B2
2953:10B8800096E40100000000A797C0010030000010FE
2954:10B8900094C801000080004A449901000000004261
2955:10B8A000F1B101005E01004BF0C901005E0100052D
2956:10B8B000E0C901000000004461B101002000004A1D
2957:10B8C00062DD0100158FA840813200000080001069
2958:10B8D00044C9010000000050F1B10100040000095A
2959:10B8E00096E40100000068A897C00100D40000059C
2960:10B8F000E0C901000000004461B101000000001037
2961:10B9000062B101001D8FA8408132000023830088AE
2962:10B910001CB0000000993F4213F00100218F6540E8
2963:10B92000813200003F0000F39688010000000040D3
2964:10B93000E7B101000000755561B10100000000068B
2965:10B9400062B10100258FA840813200002A8F224B6E
2966:10B95000803200000000004B62B10100288FA84037
2967:10B96000813200000000009713B001000000009633
2968:10B9700097B00100308F2009966C0000308F1F09AE
2969:10B9800096240000278300881CB000002B8F004005
2970:10B9900081B200000F97005781300100C98B00056C
2971:10B9A00048B1000004002242197C00002E00004033
2972:10B9B00043990100378F22F3803200000F97004235
2973:10B9C00081300100F087004081B20000869700526C
2974:10B9D00081300100C98B004219800000040022421E
2975:10B9E000197C00000F97003A8130010086970052C1
2976:10B9F00081300100C98B004081B20000000000408E
2977:10BA000005B001000596004095300100C98B224029
2978:10BA1000956C0000240400408998010009990000F9
2979:10BA20008A300100458FA2401F7C0000C99400406D
2980:10BA300081320100F087004081B2000004800003E1
2981:10BA400042C90100000000F202B00100A5950052B9
2982:10BA500095300100AC95004B02B00000F08700402B
2983:10BA600081B200002B98004095300100518FA20850
2984:10BA700080320000518FA21680320000F0872242EF
2985:10BA8000197C00000000004B199001000F97003A4C
2986:10BA900081300100F087004081B20000002300A641
2987:10BAA00016B00100548F831E803200000008000B86
2988:10BAB00016DC0100000000002AC001005E970008AB
2989:10BAC00080300100588F005E179000007F97004380
2990:10BAD000613101009E9300408D30010066970007A0
2991:10BAE000161401000080001042C90100608F22403E
2992:10BAF000E36D00000000004361B101004000001050
2993:10BB000062DD01005D8FA840813200002383008840
2994:10BB10001CB000000097005E05100100C9940040B1
2995:10BB200081320100648F2209803000008697004036
2996:10BB300013300100D08B000548B100003C96004056
2997:10BB400081320100C98B004081B200000400A24A8A
2998:10BB50001F7C00000000004A1F9001006C8F2243F0
2999:10BB60003D7C0000000000441990010000000043EB
3000:10BB70003D8001006D8F0042199000000400A24F2B
3001:10BB80002B7C00000400A2451F7C000014002D4502
3002:10BB90001F9001000400A2F0146C00000400A0013A
3003:10BBA000146C0000DF8F831E80320000DF8F0044A2
3004:10BBB000199000002F000040439901000400A247A3
3005:10BBC000E77D0000B494004081320100878FA20815
3006:10BBD00080320000878FA21680320000838FA2423D
3007:10BBE000197C00000082000204DC0100A0980040E3
3008:10BBF000479901003005004189300100808FA24142
3009:10BC0000197C0000C994004081320100F087004097
3010:10BC100081B20000A595001594300100AC95004B51
3011:10BC200002B00000F087004081B200003C96004066
3012:10BC3000813201000000004B199001000F97003A7B
3013:10BC400081300100F087004081B200008A8F2242DB
3014:10BC5000197C00003C960040813201008B8F00402F
3015:10BC600081B200000596004081320100C38F22415D
3016:10BC7000197C0000C000001598C80100C38FA00BFC
3017:10BC8000996C0000040022441F7C0000FF070000A4
3018:10BC90007E8901000400A6408132000030000010BF
3019:10BCA00080C801000080004044990100000000505D
3020:10BCB000F1B1010000000003F0B1010000000042FA
3021:10BCC00061B101000000004062B10100968FA80040
3022:10BCD000E0310000238300881CB000000000000554
3023:10BCE00048B10100C000001598C8010030002E0BBB
3024:10BCF00099D0010000006A5099C001000400200B97
3025:10BD0000996C0000C000620180CC01000C8000032F
3026:10BD100042C901002D002DF022B001000000004CAE
3027:10BD200080C001000000005C23800100D4003F417E
3028:10BD3000E7E1010004002242197C00000B0000F240
3029:10BD400098E401000000005A998001000400A2005C
3030:10BD5000986C0000200400408998010009990011A6
3031:10BD60008A3001000B000011E4F501002F0020478C
3032:10BD7000E7B50100AE8F230B816C00000000004F7F
3033:10BD8000E59101000000000880B00100C100000141
3034:10BD900080CE01000400A440813200000000000BAE
3035:10BDA00003B001000000001502D001005E97000002
3036:10BDB0002A4001000000004361B101004000001072
3037:10BDC00062DD0100B58FA840813200002383008826
3038:10BDD0001CB00000C994000548310100C0000001FA
3039:10BDE00080CE0100C18F261100300000100000003D
3040:10BDF0002AC801000000000880B001000000000116
3041:10BE000080C00100C00000409998010000000001BE
3042:10BE100098D001005E97004C02300100C000004045
3043:10BE200003980100CB8F004081B2000030002F0842
3044:10BE300080B00100C0000015F4C90100C00000017D
3045:10BE4000E4CD0100C100000180CE01000400A44047
3046:10BE5000813200000400200BE56D0000C0000040AE
3047:10BE6000039801005E9700002A400100D08F224411
3048:10BE70001F7C0000AC002F4013B001000000000147
3049:10BE8000E0C10100B000004047990100D18F0001DE
3050:10BE9000E0D100009E9300408D300100806300A639
3051:10BEA00016B001006697000716140100008000100C
3052:10BEB00042C90100D98F2240E36D00000000004319
3053:10BEC00061B101004000001062DD0100D68FA84082
3054:10BED00081320000238300881CB000000097005EC0
3055:10BEE00005100100DC8F2209803000008697004099
3056:10BEF00081320100C98B000548B100000400A24A4C
3057:10BF00001F7C0000DF8F004A1F9000000400A24F3A
3058:10BF10002B7C00000400A25C1F7C00000400A244F3
3059:10BF20001F7C00000000000010B0010024002D154F
3060:10BF300010C0010028002DF016B0010022002DF0E5
3061:10BF400026B0010014002FF20CB001000000000127
3062:10BF5000E0D101000000001032B001000000000B31
3063:10BF60001BB0010004001F151A5000000000004023
3064:10BF700023B00100000000012AB00100BE9600407D
3065:10BF800035B000002F002040E7B101002990A24504
3066:10BF90001F7C00000400A205486D00002400200B57
3067:10BFA000E0B1010028002013E0B1010022002006CA
3068:10BFB000E4B10100FD8F225C1F7C00000000005CEA
3069:10BFC0001F8001003080001042C90100FD8F224017
3070:10BFD000E36D00000000004761B101004000001067
3071:10BFE00062DD0100F98FA8408132000023830088C0
3072:10BFF0001CB000000000000548B101001400004022
3073:10C00000439901000400A2F0146C000000800019A4
3074:10C0100042C9010022902240E36D000010902242AC
3075:10C02000197C000073960040813201005A94004050
3076:10C03000813201001D90224B80320000000000433D
3077:10C0400061B101004000001062DD01000690A840CF
3078:10C0500081320000238300881CB000000C90224134
3079:10C06000197C0000E7940040113001000D9000059C
3080:10C0700048B10000C9940040813201000F902209AC
3081:10C080008030000086970040813201002F830040FD
3082:10C0900005B0000073960040813201004F940040CB
3083:10C0A000813201000000004361B101004000001036
3084:10C0B00062DD01001390A8408132000023830088D4
3085:10C0C0001CB0000019902241197C0000E794004048
3086:10C0D000113001001A90000548B10000C9940040D9
3087:10C0E000813201001C9022098030000086970040B8
3088:10C0F000813201002F83004005B0000000000043A2
3089:10C1000061B101004000001062DD01001E90A840F6
3090:10C1100081320000238300881CB00000000000056D
3091:10C1200048B1010025902241197C0000E7940040AD
3092:10C13000113001002690000548B10000C99400406C
3093:10C14000813201002890220980300000869700404B
3094:10C1500013300100D08B004005B0000014000040F7
3095:10C16000439901000400A2F0146C00000080001943
3096:10C1700042C9010032902240E36D000000000043FC
3097:10C1800061B101004000001062DD01002E90A84066
3098:10C1900081320000238300881CB0000000000005ED
3099:10C1A00048B101000000004005B001003690224176
3100:10C1B000197C0000E7940040113001003790000521
3101:10C1C00048B10000C99400408132010008002D0AE6
3102:10C1D00084B00100000000F082B00100040026409D
3103:10C1E0008132000014002040E1B101003D90031EA7
3104:10C1F000803200003E90004187B0000021000040E6
3105:10C20000879801002C960040813201000400A25C56
3106:10C210001F7C00000000005C1F9001004390220979
3107:10C220008030000086970040133001004690224481
3108:10C23000197C00008697004F813001000000004407
3109:10C2400019800100C98BA24A1F7C0000D08B0040DE
3110:10C2500081B200000400A205486D0000BA00204031
3111:10C26000E5B101004E909C17803200000400224A84
3112:10C27000197C0000CC000040439901003698004032
3113:10C2800081320100D497004013300100C00000400B
3114:10C2900043990100C4002DF082B001000B9800F01A
3115:10C2A00084300100C994004081320100D08B220902
3116:10C2B000803000008697004013300100D08B004092
3117:10C2C00081B200002E000040439901005A902240A4
3118:10C2D000E76D000032000040439901006590A240E4
3119:10C2E000E56D0000F2950040813201002400200B32
3120:10C2F000E0B1010028002013E0B101002200200677
3121:10C30000E4B1010004002242197C00001400004046
3122:10C31000439901000400A2F0803200001400200ABA
3123:10C32000E0B10100D08B22098030000086970040E8
3124:10C3300013300100D08B004081B20000F295004024
3125:10C34000813201009D9500408132010073902241AD
3126:10C35000197C00000000000B99B0010004001F15BB
3127:10C360009850000073902001986C0000700000034A
3128:10C3700048C9010000002E461F9001000000005037
3129:10C38000F1B1010000000003F0B101000000004223
3130:10C3900061B10100A00000A462DD01007090A8005E
3131:10C3A000E03100000000000548B10100AC002F00A2
3132:10C3B00010B0010000000001E0C1010014002F15C1
3133:10C3C00010C001000400A2F0803200000000000A4A
3134:10C3D00080B001000000600180D001000000004733
3135:10C3E00019900100E98F2209803200008697000928
3136:10C3F00080300100E98F004013B00000008000038E
3137:10C4000042C90100000000F082B0010013000040AA
3138:10C41000879801000000004C43C101002C9600F0F9
3139:10C42000843001000400A25C1F7C0000C98B005C0A
3140:10C430001F9000002C002040E7B101002D0020409B
3141:10C44000E7B101002E000040439901000400A2F36F
3142:10C450008032000004002242197C0000C98B004297
3143:10C46000198000001C960040813201005B97004853
3144:10C47000953001000000004561B10100400000104E
3145:10C4800062DD01008D90A8401330000023830088F6
3146:10C490001CB000009390000548B10000929000404D
3147:10C4A00013B000000000000012B0010008000040BE
3148:10C4B0004399010014002DF082B0010004002640D1
3149:10C4C00081320000040022F084300000130000409C
3150:10C4D000879801002C960040813201000400A25C84
3151:10C4E0001F7C00000000005C1F900100B09000095C
3152:10C4F00000B000000400A205486D0000C98B87420F
3153:10C50000191000008B002F4719800100C98B0040D3
3154:10C51000E79100000400A2401F7C00002F000040B3
3155:10C5200047990100AE902247E77D000004002241B8
3156:10C53000197C00001D940040E7310100AE902200FC
3157:10C5400080320000A990A2401F7C0000C9940040E6
3158:10C5500081320100AE90004081B200003000004006
3159:10C560004399010032002DF294B00100A59500F22C
3160:10C5700002300100AC95004B02B000000000000545
3161:10C5800048B10100AF90004001B000000000004041
3162:10C5900005B00100B590220080320000B490A242A4
3163:10C5A000197C00000596004081320100B5900040E2
3164:10C5B00081B200003C960040813201005491225C1F
3165:10C5C0001F7C00000000005C1F8001000080001044
3166:10C5D00042C90100BD902240E36D0000000000450B
3167:10C5E00061B101004000001062DD0100BA90A84076
3168:10C5F00081320000238300881CB0000054910005A4
3169:10C6000048B10000B494004081320100C490A208F7
3170:10C6100080320000C490A216803200000F97004DB7
3171:10C62000813001000082000204DC0100F08700403C
3172:10C6300081B200007400004043990100000000F83E
3173:10C6400082B00100000000F084B001000000004151
3174:10C6500096B00100D5902242961400000080001090
3175:10C6600044C9010064006840979801006400004BD1
3176:10C6700080CE01000400A64081320000000000418D
3177:10C68000F0B1010000000042F0B1010070000005AF
3178:10C69000E0C901000000004561B101002000001068
3179:10C6A00062DD0100D190A840813200000400A25C4C
3180:10C6B0001F7C00000000005C1F900100000000458E
3181:10C6C00061B101004000001062DD0100D690A85C5D
3182:10C6D0001F000000238300881CB000005E012D05B0
3183:10C6E00048B10100DA9065F21230000000993F4233
3184:10C6F00013F00100DF902247E77D00002783758853
3185:10C700001CB00000D990004081B20000000000473A
3186:10C71000E79101000400750996E401000080001013
3187:10C7200044C9010000000044F1B10100000068A804
3188:10C7300097C0010000000003E0B101000080000389
3189:10C74000449901000000004461B1010000000010A4
3190:10C7500062B10100E790A840E13100002383008826
3191:10C760001CB0000000993F4213F00100EB906505FA
3192:10C77000483100003F0000F39688010000000040AF
3193:10C78000E7B101000000754081B20100F390224B37
3194:10C79000803200000000005561B101000000004B34
3195:10C7A00062B10100F190A840813200000000000752
3196:10C7B00016B001000062000B16DC01002F000040E3
3197:10C7C000439901000400A247E77D00001D9400404A
3198:10C7D0008132010010912200803200004E96005FED
3199:10C7E00001100100F7902240956C000004002241E6
3200:10C7F000197C0000040022401F7C00000080001013
3201:10C8000044C9010000000050F1B101000000000324
3202:10C81000F0B101000000004261B101000000001011
3203:10C8200062B101000191A800E0310000238300887B
3204:10C830001CB000000000000548B1010004800003A6
3205:10C8400042C90100000000F202B0010004002031E2
3206:10C85000036C0000A595005295300100C99400407A
3207:10C8600081320100F7902241975000000C800003B4
3208:10C8700042C90100000000F000B001000000005CAF
3209:10C8800001800100AC95004B02B00000F79000055C
3210:10C8900048B1000066970040033001001780000394
3211:10C8A00044C9010000F0000C968801000000634CB0
3212:10C8B00097F001000400204D976C00000400224016
3213:10C8C000976C00001080000344C90100000000AB19
3214:10C8D000E1B101000097005E0510010003000007B0
3215:10C8E0001AF40100070000071688010000B5000DCA
3216:10C8F00046C901001C913040813200000400220B27
3217:10C90000E67D00000000000BE681010000B7000D8D
3218:10C9100046C901000400220BE67D00000000000B68
3219:10C92000E68101001000100F94F401009304005FF1
3220:10C930009504010076950040813201002A91225031
3221:10C94000FD7F000026914640813200002991A240DF
3222:10C95000316F000004001E4081B2000000001E4143
3223:10C9600031D3010000002E0548B101000000004055
3224:10C97000E1B10100000000400FB00100AB940041A4
3225:10C9800081300100F087004081B20000B494004083
3226:10C99000813201003D91A208803200003D91A21633
3227:10C9A000803200000082000204DC0100000000452B
3228:10C9B00003F001000000000100C001003591375C68
3229:10C9C000613100000000001B62B101003A91284073
3230:10C9D000813200000400A25C777D000036910040A7
3231:10C9E00081B200000000000062B101003A91A8404D
3232:10C9F00081320000F087174081B2000074002240AD
3233:10CA0000F1B1010000000040E1B101005B97004A74
3234:10CA1000953001000400A25C1F7C00001C96005CA5
3235:10CA20001F100100C490004081B200000400A24029
3236:10CA30001F7C00002F0000404799010051912247C0
3237:10CA4000E77D000004002241197C00001D94004095
3238:10CA5000E731010051912200803200004C91A24048
3239:10CA60001F7C0000C99400408132010051910040B8
3240:10CA700081B20000300000404399010032002DF2E5
3241:10CA800094B00100A59500F202300100AC95004B76
3242:10CA900002B000000000000548B101005B970048AB
3243:10CAA000953001000400A25C1F7C00001C96005C15
3244:10CAB0001F1001000400A205486D00005891874234
3245:10CAC000191000008B002F47198001000000004062
3246:10CAD000E79101008697004281300100C98B004038
3247:10CAE00081B200001C960040813201000400A25C6B
3248:10CAF0001F7C0000C98B005C1F900000B00000404C
3249:10CB0000439901000400A2F080320000BA002040E6
3250:10CB1000E5B10100D497004081320100C00000401F
3251:10CB200043990100C4002DF082B001000B9800F081
3252:10CB300084300100C994004081320100869700458D
3253:10CB400081300100C98B2242197C00000F97003A06
3254:10CB500081300100C98B004081B200000400004018
3255:10CB600081B20000B4940040813201007091A208AB
3256:10CB7000803200007091A216803200000F970047AB
3257:10CB8000803001000082000204DC0100F0870040D8
3258:10CB900081B200001080000344C9010000E100A63A
3259:10CBA00084B0010000000040F1B10100000000402D
3260:10CBB000F1B1010000006007849401000097005E5D
3261:10CBC00005100100C98B004081B200008A000040BE
3262:10CBD00047990100C9940041E7410100D08B004012
3263:10CBE00081B200000400A205486D00000400A241CB
3264:10CBF000197C00000400A2481F7C0000F295004050
3265:10CC0000813201000400A30A0C6C00009D950040D5
3266:10CC100081320100000000012CB00100000000156D
3267:10CC200010B001000000000010C0010004001F0A45
3268:10CC30002C50000014000040439901000400A2F0B1
3269:10CC4000803200000000001032B00100A197000601
3270:10CC5000043001008E91A2481F7C00008C91844812
3271:10CC60001F100000AC000040479901008E91000A9F
3272:10CC7000E0C100000000000A02B001009E93000124
3273:10CC80008C3001000000004361B101004000001041
3274:10CC900062DD01008F91A84081320000238300886B
3275:10CCA0001CB000000000000548B1010000000002B7
3276:10CCB00010C001009C91220214500000799600459A
3277:10CCC0001F0001008691225C1F7C000000000047CD
3278:10CCD00061B101004000001062DD01009891A85C84
3279:10CCE0001F000000238300881CB00000869100050F
3280:10CCF00048B100000000000B1BB0010008002D40EF
3281:10CD000085B00100000000F082B00100000000408A
3282:10CD100005B001002C96004187300100000000455D
3283:10CD200061B101004000001062DD0100A291A84045
3284:10CD300081320000238300881CB000000000000541
3285:10CD400048B10100A8912209803000008697004078
3286:10CD500013300100AC912244197C00008697004FEB
3287:10CD600081300100AC91A2471F7C0000000000440C
3288:10CD700019800100FF070008008C01000400264014
3289:10CD800081320000BB91224A1F7C0000B391A216A1
3290:10CD900002300000C9940040813201002F00204081
3291:10CDA000E7B10100C98B004081B200002D002D08C1
3292:10CDB0002AB00100B7912242197C00003C96004045
3293:10CDC00081320100B891004081B200000596004018
3294:10CDD0008132010030002E002AD0010032002A15D5
3295:10CDE000E4B10100C98B0016E4B10000D191221614
3296:10CDF000023000000400A2471F7C00000000000871
3297:10CE00002AB001002B98004095300100C191A2404A
3298:10CE1000116C0000D29122402D6C00000400A2058C
3299:10CE2000486D0000040022441F7C0000AC0000405C
3300:10CE300047990100B0002B01E0C10100002B00A6C2
3301:10CE400016B0010000000001E0D101005E9700086B
3302:10CE500080300100CA91005E179000007F97004368
3303:10CE6000613101000000004361B101004000001089
3304:10CE700062DD0100CB91A84081320000238300884D
3305:10CE80001CB000000000000548B1010066970007D3
3306:10CE9000161401000097005E05100100C9940040BF
3307:10CEA000813201002F002040E7B10100D08B00400B
3308:10CEB00081B200000000000B1BB0010004001F1530
3309:10CEC0001A500000E09120161A6C00000400224065
3310:10CED0001F7C00007000000348C9010000002250C0
3311:10CEE000F1B1010000000003F0B1010000000000FA
3312:10CEF000E0B101000000004261B10100A00000A407
3313:10CF000062DD0100DD91A8461F1000000000000551
3314:10CF100048B101000000000010B001000000001541
3315:10CF200010C001000000000A2AB001000000000A41
3316:10CF30002CD0010004001F168032000014000040B5
3317:10CF4000439901000400A2F080320000AC002F40A1
3318:10CF500023B00100EA9184451F100000EB91000A04
3319:10CF6000E0C100000000000A02B00100BE960040CF
3320:10CF700035B000000400A25C1F7C00000080001996
3321:10CF800042C90100F4912240E36D0000000000431B
3322:10CF900061B101004000001062DD0100F091A84085
3323:10CFA00081320000238300881CB0000000000005CF
3324:10CFB00048B101000592A2021A5000000A922240D4
3325:10CFC0002D6C0000040022401F7C00000080001037
3326:10CFD00044C9010000000050F1B10100000000034D
3327:10CFE000F0B10100FF070008E08D010000000042E1
3328:10CFF00061B101000000001062B10100FC91A84085
3329:10D0000081320000238300881CB00000000000056E
3330:10D0100048B101002F002047E7B501000C80000354
3331:10D0200042C90100100000F010C80100F0070040E4
3332:10D030001B9801000A92005C118000000400A25FAE
3333:10D040001B7C0000FF070008988801000000000218
3334:10D0500098C001000400200B996C00000000000241
3335:10D0600010C0010004002240236C00000400A34310
3336:10D07000236C0000E79400401F0001000000000541
3337:10D0800048B101001092230D2C6C000000000040FC
3338:10D090001F900100199222461F7C000000000046EC
3339:10D0A0001F8001007080000342C9010019922240D4
3340:10D0B000E36D00000000004261B10100400000107B
3341:10D0C00062DD01001592A8408132000023830088B0
3342:10D0D0001CB000000000000548B1010008002D4010
3343:10D0E00085B00100000000F082B0010000000040A7
3344:10D0F00005B001002C96004187300100000000457A
3345:10D1000061B101004000001062DD01001E92A840E4
3346:10D1100081320000238300881CB00000000000055D
3347:10D1200048B1010024922209803000008697004017
3348:10D130001330010028922244197C00008697004F8A
3349:10D14000813001002892A2471F7C000000000044AB
3350:10D1500019800100FF070008008C01000400264030
3351:10D16000813200003E92224A1F7C00002F92A216BC
3352:10D1700002300000C9940040813201002F0020409D
3353:10D18000E7B10100C98B004081B200002D002D08DD
3354:10D190002AB001003A922242197C00003392A2F395
3355:10D1A00084300000000000A585B0010000000041AF
3356:10D1B00085D00100D4003E4185E001003792224035
3357:10D1C0001F7C00000000005A119001000B000008B5
3358:10D1D000E4F501003C960040813201003B920040A2
3359:10D1E00081B20000059600408132010030002E001F
3360:10D1F0002AD0010032002A15E4B10100C98B0016C3
3361:10D20000E4B100004192A21602300000C99400402F
3362:10D21000813201009A92004081B200002D002D0859
3363:10D220002AB00100549222471F7C00000400A09104
3364:10D23000036C00004E922242197C00004792A2F338
3365:10D2400084300000000000A585B00100000000410E
3366:10D2500085D00100D4003E4185E001004B92224080
3367:10D260001F7C00000000005A119001000B00000814
3368:10D27000E4F50100200400408998010009990008A4
3369:10D280008A30010058012D002AD0010060012DF0E4
3370:10D2900010B00100000000F02CB0010000000016EA
3371:10D2A00080B2010004002740116C0000878F00400D
3372:10D2B00081B200000400A391036C00002B98004190
3373:10D2C000953001005D92A208803200005D92A216A6
3374:10D2D000803200000000004197B001005B92230DF6
3375:10D2E000026C00000000004197C00100AC95004BAB
3376:10D2F00002B000009A92000548B100000400A205A7
3377:10D30000486D0000040022441F7C0000AC002F0187
3378:10D3100014B00100B0002B01E0C10100002B00A6F9
3379:10D3200016B0010004002241197C00000000000139
3380:10D33000E0D101007092230D026C0000008000100B
3381:10D3400044C9010000000050F1B1010000000003D9
3382:10D35000F0B101000000004261B1010000000010C6
3383:10D3600062B101006992A800E031000023830088C7
3384:10D370001CB000000000000548B101000C80000353
3385:10D3800042C90100100000F022C801000000005C4A
3386:10D39000238001000000000184B001007392230D7E
3387:10D3A000026C00000000000D02B001000000000847
3388:10D3B00080B00100789222401B6C00005E97000153
3389:10D3C0008450010081922240856C00000000000121
3390:10D3D00080C001001080001046C901000000004F0D
3391:10D3E0004381010000000042F0B101002000004034
3392:10D3F000F0C9010000000016F0B101000000004378
3393:10D4000061B10100A00000A162DD01007E92A811BF
3394:10D41000E031000004002240236C00009092005E86
3395:10D42000179000008492230D026C00000000000D94
3396:10D4300002B001000000000184D001008992224066
3397:10D440001B6C00007F9700436131010090922240E5
3398:10D45000856C00000000000112C001001080001067
3399:10D4600046C901000000004F438101000000004256
3400:10D47000F0B1010000000009F0B101000000001847
3401:10D48000F0B10100A00000A162DD01008E92A811A0
3402:10D49000E03100000000004361B1010040000010D5
3403:10D4A00062DD01009192A80A023000002383008807
3404:10D4B0001CB00000C9940005483101009892230D6A
3405:10D4C000026C0000FF070011008C0100C9940040AD
3406:10D4D0008132010066970007161401000097005E74
3407:10D4E000051001002F002040E7B10100D08B004063
3408:10D4F00081B200000080000342C90100000000F872
3409:10D5000082B001000400264081320000000000F8D3
3410:10D510008CB00100000000F08EB00100EC950040DE
3411:10D520001330010004000C4780320000000000406E
3412:10D5300085B001002C960041873001009D95004088
3413:10D540008132010004002091036C00000080001073
3414:10D5500042C90100AE922240E36D00000000004588
3415:10D5600061B101004000001062DD0100AA92A840F4
3416:10D5700081320000238300881CB0000000000005F9
3417:10D5800048B10100B0922209803000008697004027
3418:10D59000133001000000000B1BB00100000000155B
3419:10D5A0001AD00100B792A241197C00002B980040CC
3420:10D5B000953001000000001680B20100C0922708DB
3421:10D5C00080320000C19100002AC000002B98004169
3422:10D5D000953001000000001680B20100BB922708C0
3423:10D5E000803200005D9200002AC00000000000416F
3424:10D5F00097B00100BE92230D026C000000000041B4
3425:10D6000097C00100AC95004B02B00000000000057F
3426:10D6100048B10100C98B2242197C00000F97003AE3
3427:10D6200081300100C98B004081B200000400A24A91
3428:10D630001F7C0000C592004A1F9000000400A24118
3429:10D64000197C00000400A24F2B7C00000400A244BF
3430:10D650001F7C00000400A2451F7C0000FF94000016
3431:10D66000103001000000001510C001000000001083
3432:10D6700032B00100A197000604300100D292A2440A
3433:10D680001F7C00000000000B1BB001000000000A1E
3434:10D690002CD001000000000A02B001009E9300019E
3435:10D6A0008C3001000080001942C90100D99222404B
3436:10D6B000E36D00000000004361B101004000001074
3437:10D6C00062DD0100D592A8408132000023830088EA
3438:10D6D0001CB000000000000548B10100000000027D
3439:10D6E00010C00100E2922202145000007996004519
3440:10D6F0001F000100CB92225C1F7C0000000000474D
3441:10D7000061B101004000001062DD0100DE92A85C02
3442:10D710001F000000238300881CB00000CB9200058E
3443:10D7200048B1000008002D4085B00100000000F065
3444:10D7300082B001000000004005B001002C960041BD
3445:10D74000873001000000004561B101004000001079
3446:10D7500062DD0100E792A840813200002383008847
3447:10D760001CB000000000000548B10100ED92220944
3448:10D77000803000008697004013300100F092224470
3449:10D78000197C00008697004F8130010000000044A2
3450:10D7900019800100FF070008008C010004002640EA
3451:10D7A00081320000FF92224A1F7C0000F792A216ED
3452:10D7B00002300000C9940040813201002F00204057
3453:10D7C000E7B10100C98B004081B200002D002D0897
3454:10D7D0002AB00100FB922242197C00003C960040D6
3455:10D7E00081320100FC92004081B2000005960040A9
3456:10D7F0008132010030002E002AD0010032002A15AB
3457:10D80000E4B10100C98B0016E4B10000BC91A2167E
3458:10D8100002300000C9940040813201002F002040F6
3459:10D82000E7B10100D08B004081B20000040022412A
3460:10D83000197C00000400A24F2B7C00000400A244CD
3461:10D840001F7C00000400A2451F7C00000400A24AC7
3462:10D850001F7C0000FF94004A1F100100D4910010AB
3463:10D8600032B000008A002040E7B101000E93A241CF
3464:10D87000197C0000C99400408132010011930040DE
3465:10D8800081B20000A595001594300100AC95004BC5
3466:10D8900002B000000000000548B1010013932242CD
3467:10D8A000197C00000F97003A8130010086970045EF
3468:10D8B00081300100C98B004081B2000065900045B5
3469:10D8C0001F90000004002241197C00000400A247C0
3470:10D8D0001F7C0000F2950040813201000400A30A81
3471:10D8E0000C6C00009D95004081320100D491000134
3472:10D8F0002CB0000004002241197C00000400A24862
3473:10D900001F7C0000B4940040813201002C93A208D7
3474:10D91000803200002C93A2168032000000820002A8
3475:10D9200004DC01000000004503F0010000000001DC
3476:10D9300000C001002493375C613100000000001B2F
3477:10D9400062B1010029932840813200000400A25CEA
3478:10D95000777D00002593004081B2000000000000A8
3479:10D9600062B101002993A84081320000F08717407E
3480:10D9700081B2000058012008E0B1010060012016CA
3481:10D98000E0B10100F29500471F1001000400A30A56
3482:10D990000C6C00009D95004081320100D491000183
3483:10D9A0002CB0000004002241197C00000400A247B2
3484:10D9B0001F7C0000B49400471F1001004393A2088D
3485:10D9C000803200004393A216803200003F93A242AF
3486:10D9D000197C00000082000204DC0100A0980040D5
3487:10D9E00047990100300500418930010004002241BF
3488:10D9F000197C0000A595001594300100AC95004BF2
3489:10DA000002B00000F087004081B200003C96004068
3490:10DA1000813201000000004B199001000F97003A7D
3491:10DA200081300100F087004081B2000058012008D9
3492:10DA3000E0B1010060012016E0B101000400A24F36
3493:10DA40002B7C00000400A2441F7C00000400A245BF
3494:10DA50001F7C0000FF94001032300100D491004080
3495:10DA600013B00000B4940040813201005893A20822
3496:10DA7000803200005893A21680320000008200021B
3497:10DA800004DC01000000004503F00100000000017B
3498:10DA900000C001005093375C613100000000001BA2
3499:10DAA00062B1010055932840813200000400A25C5D
3500:10DAB000777D00005193004081B20000000000001B
3501:10DAC00062B101005593A84081320000F0871740F1
3502:10DAD00081B200000080000342C90100000000F88C
3503:10DAE00082B001000400264081320000000000F8EE
3504:10DAF0008CB00100000000F08EB00100EC950040F9
3505:10DB00001330010004000C47803200000000004088
3506:10DB100085B001002C960041873001009D950040A2
3507:10DB2000813201000400A091036C0000008000100D
3508:10DB300042C901006A932240E36D000000000045E5
3509:10DB400061B101004000001062DD01006693A84051
3510:10DB500081320000238300881CB000000000000513
3511:10DB600048B10100878F220980300000869700406D
3512:10DB700013300100878F004081B200000400831E33
3513:10DB8000803200000400A24F2B7C00000400A2455C
3514:10DB90001F7C000014002D451F9001000400A2F01E
3515:10DBA000146C00000400A001146C0000DF8F00441E
3516:10DBB000199000000400A24A1F7C00007893A24143
3517:10DBC000197C00000000004A1F9001007A9100407B
3518:10DBD00081B200000400A2481F7C0000F295004AB8
3519:10DBE0001F1001000400A30A0C6C00009D9500406A
3520:10DBF00081320100D49100012CB0000004002241C8
3521:10DC0000197C00000400A24F2B7C00000400A244F9
3522:10DC10001F7C00000400A2451F7C0000FF94004010
3523:10DC200081320100D491001032B000008B0000401E
3524:10DC3000439901000400A246E77D0000659000457D
3525:10DC40001F9000000000004137C3010000000041A8
3526:10DC500033C301003600000102CC01000000D240B5
3527:10DC600081B200008C9385178032000000009F482D
3528:10DC700003D000008E939C178032000000009F4C60
3529:10DC800003D000000000800134C301004080000385
3530:10DC900044C901000000004AF0B101000400264020
3531:10DCA0008132000000000040F1B1010000000012CC
3532:10DCB000F0B10100D1940041E13101000080004346
3533:10DCC00044C9010010000040F19901000000004823
3534:10DCD000F0B1010000000049F0B101004000000374
3535:10DCE000E0C901000000004561B1010000000043EF
3536:10DCF00062B101000000A84081B200009B93004087
3537:10DD000081B200002D04004089980100099900A506
3538:10DD10008A300100BA002040E5B10100B0002F01B7
3539:10DD20008CD0010004001FF080320000000000468B
3540:10DD3000E0C10100AC002F4013B00100CC002D0168
3541:10DD4000E0C10100A9939C17803200000400224A20
3542:10DD5000197C00003698004081320100AB932247C5
3543:10DD6000197C00000000005F13900100D497004769
3544:10DD700019100100C0002D441F900100C4002DF0B7
3545:10DD800082B001000B9800F084B0000090002D05D7
3546:10DD900048B10100C093A24B1F7C00001594A24C17
3547:10DDA0001F7C0000C0931F1CE06D0000C393A20104
3548:10DDB00080320000A8002D468FB00100B9931F1CCF
3549:10DDC000E06D0000B400004043990100BB9322F0D5
3550:10DDD0003A6C000012941FF03A6C00000000A24060
3551:10DDE00080B200000000804F8FB001008A00004028
3552:10DDF0004399010013942042E76D0000BF93224035
3553:10DE000080320000000080598FB00100000080586F
3554:10DE10008FB00100C2932240803200000000805C7D
3555:10DE20008FB001000000805B8FB00100AC000040AB
3556:10DE300043990100B0002DF084B00100C793A242C5
3557:10DE4000246C0000D29323F0026C0000B00000A10B
3558:10DE500080CE01000400A64081320000CF93A2F0E2
3559:10DE6000803200001494A242246C00001494A24159
3560:10DE7000036C0000CE93A24080320000000080516D
3561:10DE80008FB00100000080528FB0010014941F1267
3562:10DE9000845000001494A001846C0000C0930040E2
3563:10DEA00081B200008B00004043990100FD93A2461F
3564:10DEB000E77D00001400004043990100EF9322F039
3565:10DEC00014300000DB93200A026C0000EC93031E68
3566:10DED00080320000DA93A2408032000000008044CB
3567:10DEE0008FB00100000080498FB00100E093220A4A
3568:10DEF000026C0000E393A241197C0000DF93A24072
3569:10DF000080320000000080558FB001000000805674
3570:10DF10008FB00100E293A2408032000000008043F5
3571:10DF20008FB00100000080488FB0010000000001A8
3572:10DF300082B001000000000A82D00100E993209124
3573:10DF4000836C0000E893A2408032000026008040ED
3574:10DF50008F980100270080408F980100EB93A2402A
3575:10DF6000803200001F0080408F9801002000804018
3576:10DF70008F980100EE93A240803200002200804082
3577:10DF80008F980100230080408F98010088002D4465
3578:10DF90008FB00100F893A241197C0000F593A243D1
3579:10DFA0003D7C0000F593A2F2026C00000000A2404C
3580:10DFB00080B20000000080498FB00100F793A240BA
3581:10DFC00080320000000080438FB0010000008048D4
3582:10DFD0008FB00100F593A091036C0000F3932243EE
3583:10DFE0003D7C0000FC93A24080320000280080406D
3584:10DFF0008F980100290080408F9801001400004094
3585:10E00000439901000694A2F01430000088002D44CA
3586:10E010008FB001000394A2F2026C00000000A24045
3587:10E0200080B20000000080498FB00100F5932241CA
3588:10E03000197C0000F3932091036C0000F5930040DD
3589:10E0400081B200000A94200A026C00000994A240E8
3590:10E0500080320000000080448FB001000000804941
3591:10E060008FB001000F94220A026C0000E393A241DA
3592:10E07000197C00000E94A240803200000000805500
3593:10E080008FB00100000080568FB001001194A240B3
3594:10E0900080320000000080438FB001000000804803
3595:10E0A0008FB001001794004395B000001794004111
3596:10E0B00095B000001794004295B0000017940044FA
3597:10E0C00095B000001794004C95B00000300400405B
3598:10E0D000899801000999004A8A3001005B97004045
3599:10E0E000813201001C94A240803200000000804B6D
3600:10E0F0008FB001000000804C8FB001000400A20529
3601:10E10000486D00002D000040439901002E002FF3C0
3602:10E1100084B001002294A2F39630000000008040F9
3603:10E1200001B001002D002A41E7D10100D4003D419A
3604:10E1300085E001000B0000F200E401002894225A5F
3605:10E14000017C0000000000401F9001002994005A4B
3606:10E1500001800000000000401F80010000006341BA
3607:10E1600085C001002C94A0A5856C000000006340D0
3608:10E1700085B001001204004089980100099900004F
3609:10E180008A3001000000804081B201000000A0A59B
3610:10E19000856C01000000E34085B001000C800003A5
3611:10E1A00042C9010012000040879801007F9800F0EA
3612:10E1B0008CB000000400225F1F7C000041942240CC
3613:10E1C0000F6C000000002F0548B101000400225A26
3614:10E1D0001F7C0000100000F098F401000400A2076A
3615:10E1E000986C00001000000C98F401000400A207D5
3616:10E1F000986C00003E94A24B197C00003F9422F0E2
3617:10E20000186C00000000604B199001004395000756
3618:10E21000103001002F83004005B000004394225AC3
3619:10E220001F7C0000AB940040813001002F83004030
3620:10E2300005B000000400225F1F7C000000002F05D5
3621:10E2400048B101000000604B199001000400225AFF
3622:10E250001F7C0000040022400F6C0000100000F042
3623:10E2600096F401000400A207966C00001000000C58
3624:10E2700096F401000400A207966C00004395000785
3625:10E28000103001002F83004005B000000400225F21
3626:10E290001F7C000000002F0548B101000000604B0A
3627:10E2A000199001000400225A1F7C00000400224043
3628:10E2B0000F6C0000100000F096F401000400A207AB
3629:10E2C000966C00001000000C96F401000400A207F8
3630:10E2D000966C00004395000710300100000080405C
3631:10E2E00005B001005A943340813200005D94A1AD25
3632:10E2F000952000006F94134081B200000000134A83
3633:10E300005A8301003000394595E001000400A25F06
3634:10E310005F7C00000400A25E5F7C00001F00000F15
3635:10E320005ED801000000005A5F9001000000005E0E
3636:10E330005F9001000000004045B0010000000004B3
3637:10E3400048B00100000000054AB001000000000CC8
3638:10E3500058B00100000000074EB001001C850040CD
3639:10E360005D9801000400A2445F7C0000000000589A
3640:10E3700061B101000000004A62B101000000A84143
3641:10E3800097B000006C94004081B200000000804013
3642:10E3900097B001000400A240056C00001C990040E9
3643:10E3A000813201007294600796300000FFFF004B3D
3644:10E3B00084890100000070C224B001007F94A2454E
3645:10E3C000257C000076943120853000008094221254
3646:10E3D000487F000058041112480301001000001289
3647:10E3E00096E401000000004B1E9401001704004059
3648:10E3F00089980100000000128AB001000999005FAD
3649:10E400008B1001000000805A1F9001007F94314062
3650:10E4100081320000000000B424B001008094221278
3651:10E42000487F00005804004081320100170400407A
3652:10E4300089980100099900128A30010000002F0517
3653:10E4400048B101008F940BF08430000000001112DD
3654:10E45000488301008C942250857000005E010040CA
3655:10E4600043990100B49600F2963001009304001223
3656:10E47000943001000000005A1F90010010000012AB
3657:10E4800096E401000000804B1E9401001000004241
3658:10E4900010F40100040022088032000000B73F435E
3659:10E4A00011F00100070000088A880100939430A150
3660:10E4B0000C30000096942245E67D000080941040C8
3661:10E4C00081B2000000002A45E69101000000101210
3662:10E4D000488301000400A205486D000000001140BF
3663:10E4E00081B201000000604B858001005E010040A8
3664:10E4F00043990100B49600F29630010000800010AC
3665:10E5000044C90100D8000040819801002E002D056B
3666:10E5100048B10100A2942240E76D00008000004055
3667:10E5200080C8010000000040F0B1010009000008AF
3668:10E5300086E40100000068A787C0010000000044D5
3669:10E5400061B101000000001062B10100A694A805AD
3670:10E55000E03100001000001296E401000014004BAE
3671:10E5600096DC01000000804B1E9401000400225A3A
3672:10E570001F7C00001000000F84F401001F00004207
3673:10E5800084880100B094224080320000B19400429F
3674:10E5900068B10000000000426AB10100B194315A34
3675:10E5A0001F0000000400A242487F000000009142CA
3676:10E5B00048930100B4943540813200006D00004062
3677:10E5C00061990100BA9428B12C300000B594224D15
3678:10E5D000757D0000000000402DB001000000954056
3679:10E5E00011B001006D00004061990100BA94A8B11A
3680:10E5F000103000000000001680B20100040027085F
3681:10E60000803200000000954081B201007F00004090
3682:10E6100061990100C59428B110300000BF949FBAE1
3683:10E6200080320000150000408998010009990040DF
3684:10E63000813201000000804011B001000400225C22
3685:10E64000117C00000400A25A117C00000400220882
3686:10E650004806000000008024118401000400A25C30
3687:10E66000017C00000400A25A017C0000040022008A
3688:10E670004806000004001FBB803200000000005F5D
3689:10E6800061B101000010000062DD01000000A8403F
3690:10E6900081B20000CE94004081B20000AC940040F2
3691:10E6A00047990100D294324081320000DA9422F876
3692:10E6B00096300000000000F890B00100000000F06B
3693:10E6C00092B001000000004880B201000400274918
3694:10E6D000803200000100004BF0CD01002000924884
3695:10E6E000E0C901006C00004061990100DE9428B18E
3696:10E6F00092300000DA94224C757D00000400124034
3697:10E7000091B000006C00004061990100DE94A8B156
3698:10E71000903000000000004980B20100040027484A
3699:10E7200080320000FF000048968801000000004B86
3700:10E7300090D001000100004BF0CD01002000004806
3701:10E74000F0C9010000009249E0B101000C002D1059
3702:10E7500048B10100FF070008828C01000400A25CA0
3703:10E76000837C0000FF0700F0008C01000400A25C25
3704:10E77000017C000004002240016C00000000A24166
3705:10E7800000EC0000F094221A006C0000C994000014
3706:10E79000343001000000005049C10100EA94A24158
3707:10E7A000235000000000804081B201000C002D10B9
3708:10E7B00048B10100FF070015828C01000400A25C33
3709:10E7C000837C0000FF0700F0008C01000400A25CC5
3710:10E7D000017C000004002240016C00000000A24106
3711:10E7E00000EC0000FC94220D006C0000C9940000B5
3712:10E7F0001A3001000000005049C10100F694A24106
3713:10E80000235000000000804081B201000195831E6A
3714:10E8100080320000000000441990010024002D0106
3715:10E820002CB0010028002DF016B0010022002DF0C0
3716:10E8300026B0010014002FF20CB001000400A2F079
3717:10E84000146C000004002001146C000000008040E3
3718:10E85000E1B10100300000409798010060972E4020
3719:10E8600081B2010000000040F1B101000A95A2410F
3720:10E870009750000064973E439DE0010000008040F7
3721:10E88000E1B1010064973E439DE001000000800B70
3722:10E89000E8B1010064973F439DE00100000000F0F3
3723:10E8A00016C0010000008040E1B1010064973F43C1
3724:10E8B0009DE00100000000F416B00100000080405F
3725:10E8C000E1B1010060173D439DE00100100080A10F
3726:10E8D00016E401000400A207166C00001A040040B0
3727:10E8E000899801001000000B8AE401000999000DCD
3728:10E8F0008A14010000B5000D42C901001D95304782
3729:10E90000170400002095A20BE67D00000000904255
3730:10E9100081B0010000B7000D46C901002495A20B8B
3731:10E92000E67D00000000000BE69101000000904130
3732:10E9300081B001000000104081B201002595400720
3733:10E94000963000009D040040813201002F95A245C1
3734:10E95000957C000001973F4195E00100000000F325
3735:10E9600096B001000000004EE6B1010040973E4025
3736:10E9700097E001000000004EE6B1010040973E40E4
3737:10E980009DE001004295003BE7B100002F9530402B
3738:10E99000813200003995A20BE67D000000B5000D24
3739:10E9A00046C901003595A20BE67D0000000010402D
3740:10E9B00081B201000000984281B0010000B7000D53
3741:10E9C00046C901000000000BE69101000000104064
3742:10E9D00081B201000000984181B00100040021A231
3743:10E9E000952000000000104A4483010000973E413A
3744:10E9F00095E001000000004EF6B101000000004E5D
3745:10EA0000E6B1010040973E409DE001000000003B60
3746:10EA1000E7B101000000004A90B10100FFFF0007CC
3747:10EA2000928901000000984081B00100110400406B
3748:10EA300089980100099900088A3001000300000844
3749:10EA400086F4010000B7004346C901000700000832
3750:10EA50008288010004002208803200000400224164
3751:10EA6000E67D00004A954008963000009D04004075
3752:10EA70008132010058952245957C00005395225A19
3753:10EA80001F7C00001000000F96F401004F95315FCD
3754:10EA9000970400000400A24B487F00000000114BC7
3755:10EAA000489301000000004B6AB1010053953040CB
3756:10EAB0008132000004002241E67D00000000004198
3757:10EAC000E68101000000104081B201000000984082
3758:10EAD00081B2010000973F4195E00100000000F382
3759:10EAE00096B0010040973D4097E00100000063F3BD
3760:10EAF00088B001006195A23B896C00000000004ACB
3761:10EB000090B10100010000A692B101000400A24AE8
3762:10EB1000447F00006295184A4493000000001840AA
3763:10EB200081B201003F0400408998010016000012E4
3764:10EB30008AE401000999004B8A140100300039452C
3765:10EB400097E001000400A25F5F7C00000400225EE9
3766:10EB50005F7C00001F04002F7ED901000400A64046
3767:10EB6000813200006E95225A1F7C00001F04000FA6
3768:10EB700098D801000000004C5E94010070950005DB
3769:10EB80004AB000001F0400A75E840100000000409E
3770:10EB90004BB001000000005E5F9001000400A2087D
3771:10EBA0004E6C00000000005861B101000000004BF5
3772:10EBB00062B101000000A84081B2000073950040DE
3773:10EBC00081B20000330400408998010009990007D0
3774:10EBD0008A30010078954007963000009D0400407F
3775:10EBE000813201007C952245957C00000000984010
3776:10EBF00081B201000400A24A447F00009B04004A45
3777:10EC00004413010000973F4195E00100000000F32C
3778:10EC100096B0010040973D4097E00100000063F38B
3779:10EC200088B001003000384597E001000400A25F81
3780:10EC30001F7C00000400225E1F7C0000040020AA4C
3781:10EC40000F6C00000000005F0F90010000000058F2
3782:10EC500061B101000000004B62B101008895A8403D
3783:10EC6000813200007E95A23B896C0000300038455F
3784:10EC70009DE001000000984081B2010004002208DC
3785:10EC8000803200000300000894F4010000B7004A3D
3786:10EC900046C9010007000008968801000400224BC5
3787:10ECA000E67D000093040012943001004395005A61
3788:10ECB0001F0001000000805A1F9001001100004A4F
3789:10ECC000E6C901003000004A80CE01000400244063
3790:10ECD0008132000034002F4F95840100000000F3C2
3791:10ECE00096B001000100634B84C801000000A043FE
3792:10ECF000856C01000000E34085B0010030002D4428
3793:10ED00001F90010032002DF22AB0010004002640BD
3794:10ED100081320000040022F2023000001D94001035
3795:10ED20003230010004002200803200000400224240
3796:10ED3000197C00003200A040E5B101000000004055
3797:10ED400097B00100F0070040999801000000004AC8
3798:10ED500002C001000000005003D00100000000418B
3799:10ED600097C001000000A34C02D00000A99500400C
3800:10ED700081B20000000000A836B00100BA9522411F
3801:10ED8000035000000080001044C901000000005042
3802:10ED9000F1B1010070000003F0C901000000004261
3803:10EDA00061B101000000001062B10100B295A8003D
3804:10EDB000E0310000238300881CB00000C9940040AB
3805:10EDC000813201007C80000342C90100040022401E
3806:10EDD000E16D0000000000F000B00100AD95005CA6
3807:10EDE00001800000C9940040813201000000001B36
3808:10EDF00010B1000068012D0682B00100000000F291
3809:10EE000082C001000080000346C90100BF94004099
3810:10EE100081320100E8952240116C00000000680872
3811:10EE2000389601003A0400408998010009990008C9
3812:10EE30008A300100F007004182CC0100BF95AA4151
3813:10EE40003B400000000000F810B001000000005C32
3814:10EE5000118001000400A3483B6C00000100001D6C
3815:10EE600004CC0100E695264623300000080000038C
3816:10EE700012C801000480000398C801000400A24CDD
3817:10EE8000426D00000400A205486D0000640120F0FE
3818:10EE9000E0B10100E595224105500000200000038B
3819:10EEA00048C901000C0000F886C801000000224497
3820:10EEB000F1B1010000000043F0B1010000000009C1
3821:10EEC000E0B101000000004461B10100A00000A415
3822:10EED00062DD0100D795A8461F100000E49522418D
3823:10EEE00005500000E295A24123500000000000A15F
3824:10EEF0001AB001000000004461B1010040000010A0
3825:10EF000062DD0100DD95A8462330000023830088E0
3826:10EF10001CB000001000000348C901000000000DF3
3827:10EF200042B101000000004413C00100D29500501E
3828:10EF300049C100000000000548B101000480000341
3829:10EF40001AC801000400A205486D000000008040BE
3830:10EF500081B20100E69522403B6C0000000000F801
3831:10EF600000B00100C994005C01000100E895004177
3832:10EF70003BD0000000008D4780320100B0002F5FC1
3833:10EF800013B00100000060F08CC001007C00004064
3834:10EF9000439901000400A3F08C6C00000000804045
3835:10EFA00081B201000080000342C90100000000F8A6
3836:10EFB00094B00100000000F88CB00100F7958CF8C7
3837:10EFC0008E3000000000004419900100040022F877
3838:10EFD00014300000000000F816B00100000000F836
3839:10EFE00026B0010008002EF80CB001000C002A4ADF
3840:10EFF000E0B1010028000000E0C901001000201B62
3841:10F00000E0B101000496200A0C6C0000000000F83A
3842:10F0100094B00100000000F896B00100200020F03C
3843:10F02000E4B101001800204AE0B101001C00204BAF
3844:10F03000E0B10100EC95004013B000000400A2050F
3845:10F04000486D00002C002D42199001002E002FF376
3846:10F0500082B00100000000F396B001000B96A2A55B
3847:10F06000976C00000000804195B001000E96A24010
3848:10F07000976C00000000004083B001002D0020408C
3849:10F08000E7B101000000634197C00100D4003E4198
3850:10F0900083E001000000004183C001001396A0A599
3851:10F0A000836C00000000004083B001002C00204170
3852:10F0B000E6B10100189622401F7C00000004000009
3853:10F0C00098DC01000B00004CE4F5010019960040AB
3854:10F0D0001F8000000B000000E4F501001E0400404A
3855:10F0E00089980100099900008A30010000008040E1
3856:10F0F00081B20100D1940040813201000080000300
3857:10F1000042C9010004002240E16D000004800003B8
3858:10F1100044C9010000000040F1B1010000000040BE
3859:10F12000F1B101000000604187B0010000800010D3
3860:10F1300044C9010000000050F1B101000000004886
3861:10F14000F0B1010000000049F0B10100000000032F
3862:10F15000E0B101000000004561B101002000001095
3863:10F1600062DD01000000A85D0590000029960040C6
3864:10F1700081B20000D1940040813201000080000380
3865:10F1800044C9010000000041F0B101000400264024
3866:10F190008132000000000042F0B101000000004098
3867:10F1A000F1B1010000000043F0B101000080001047
3868:10F1B00044C9010000000050F1B101000000004806
3869:10F1C000F0B1010000000049F0B1010000000003AF
3870:10F1D000E0B101000000004561B101002000001015
3871:10F1E00062DD01000000A85D059000003996004036
3872:10F1F00081B200000400A205486D00000400820CEA
3873:10F20000803200002D000040439901002E002FF3B2
3874:10F2100084B00100010063F396C8010043969F414A
3875:10F2200085500000010000A585CC01002D00204282
3876:10F23000E6B101000400A3A5976C0000D4003D4195
3877:10F2400085E001000B0000F298E401004A9622409C
3878:10F250001F7C00000400225A997C00000000005A24
3879:10F26000998001000400A200986C00002004004076
3880:10F2700089980100099900008A300100000080404F
3881:10F2800081B2010021040040899801000999000021
3882:10F290008A3001000400A2006A0600005E012D0011
3883:10F2A00080B001005596524381600000020000F2D8
3884:10F2B00082F4010056960041809400000000005F37
3885:10F2C000819001000000005E61B10100000000407B
3886:10F2D00062B101000000A84095B0000057969EBBA7
3887:10F2E000803200005C96A2401F7C0000C994004060
3888:10F2F00081B200000000804195B0010004000015BB
3889:10F3000042C90100000000542BC00100000000FCB5
3890:10F3100024B00100000000FC38B00100000000FE35
3891:10F320003CB00100000000FE3AB0010071969C174D
3892:10F33000803200006696A24A197C00000000804CD2
3893:10F340001F9001000C00001E98F401006596A24871
3894:10F35000996C00000000001542B101006596A28A78
3895:10F36000F16D00000C00000102CC0100000000FC67
3896:10F370003EB00100010000F428CC0100CC002D05B6
3897:10F3800048B10100709620F03E6C00000000004B78
3898:10F390001F9001000000004C2BC00100BF002D0594
3899:10F3A00048B10100000080F33AE001000400A2052A
3900:10F3B000486D00001000000C96F401000400A20744
3901:10F3C000966C000000002E4B1990010007002A0CDB
3902:10F3D000E4B1010000008004E6B101001800004023
3903:10F3E000439901001C002DF016B0010020002DF003
3904:10F3F00026B001000C002FF20CB001000000A206A4
3905:10F4000014EC0000809622451F7C00000000A3063B
3906:10F410002AEC0000000000F894B00100000000F0A9
3907:10F4200096B001000C002D4081B2010000002A4C72
3908:10F43000E1C101003000001048C901000A0000408D
3909:10F44000F199010018000005F0C901000000004A10
3910:10F45000F0B101000000004BE0B1010000000047E6
3911:10F4600061B10100A00000A462DD01008A96A85CE1
3912:10F470001F1000000000800548B101000400A295A3
3913:10F48000036C000000002E1048B101004000000194
3914:10F49000F0CD010040000003F0C901004000000071
3915:10F4A000E0C9010000002E5049C101000000000623
3916:10F4B000F1B1010000000003F0B101009596624235
3917:10F4C000613100002000001062DD01009696A84026
3918:10F4D000813200001000001062C901009896A80057
3919:10F4E000E03100000000F24081B201000400A2956A
3920:10F4F000036C000000002E1048B101004000000124
3921:10F50000F0CD010040000003F0C901004000000000
3922:10F51000E0C9010000002E5049C1010000000006B2
3923:10F52000F1B1010000000003F0B10100A3966242B6
3924:10F53000613100002000001062DD0100A496A840A7
3925:10F5400081320000A00000A462DD0100A696A800A0
3926:10F55000E03100000000F24081B201003080004A3A
3927:10F5600044C9010000000006F1B10100C0A83D46F9
3928:10F570000DE00100FF7F00A1F089010002000009F9
3929:10F5800096F401000000004697E00100000060A82A
3930:10F5900097C00100B0966342613100003000004A1C
3931:10F5A00062C90100B196A840813200000000F3401A
3932:10F5B00081B2010000993F4297F00100B596654085
3933:10F5C00081320000BD9622F3740600003F0000F374
3934:10F5D0009488010000000007E785010000007555D0
3935:10F5E00061B101000000004A62B101000000A840C2
3936:10F5F00081B20000BA96004081B200000000F540E0
3937:10F6000081B20100000000A836B00100CD96824111
3938:10F6100023400000C296A2441F7C00009E9300017C
3939:10F620008C3001002080001042C90100C8962240A1
3940:10F63000E36D00000000004361B1010040000010D4
3941:10F6400062DD0100C596A840813200002383008856
3942:10F650001CB000000000004123B0010000000010B9
3943:10F6600032B00100CD962241197C0000E79400439E
3944:10F67000233001000000004123B00100CF96A31504
3945:10F680000C6C0000D096000604B0000000000015CD
3946:10F6900004B00100D29620021A6C00000000000D98
3947:10F6A00004B00100A197000548310100FD96220237
3948:10F6B00014500000D696A2022A500000FD96A245E2
3949:10F6C0001F7C0000D89622020C500000E196000238
3950:10F6D00016C00000E096225C1F7C00003080001005
3951:10F6E00042C90100E0962240E36D0000000000479F
3952:10F6F00061B101004000001062DD0100DC96A8400D
3953:10F7000081320000238300881CB000000000000547
3954:10F7100048B101007996005C1F000100FD9622159A
3955:10F72000803200000000005033C00100FC96A202AD
3956:10F730001A500000ED9622461F7C000070800003E6
3957:10F7400042C90100000000461F800100ED962240E2
3958:10F75000E36D00000000004261B1010040000010B4
3959:10F7600062DD0100E996A840813200002383008811
3960:10F770001CB000000000000548B101000C8000032F
3961:10F7800042C90100040022F080320000100000F0A5
3962:10F7900010C801002F002F5C1180010000000047FD
3963:10F7A000E7910100F00700401B980100BF9620156B
3964:10F7B0001A6C00007000000348C9010000002250CC
3965:10F7C000F1B1010000000003F0B10100FF070008E3
3966:10F7D000E08D01000000004261B10100A00000A422
3967:10F7E00062DD0100F996A8461F100000BF960005D3
3968:10F7F00048B10000BF96000210C00000FF96A2446E
3969:10F800001F7C00009E9300018C3001000000001B53
3970:10F8100010B100000080001044C901000C0000403D
3971:10F82000F199010010000008F0C901000000001665
3972:10F83000F0B1010010000003E0C901000400A25C67
3973:10F840001F7C00000000004561B101002000001095
3974:10F8500062DD01000000A85C1F90000007970040D7
3975:10F8600081B20000170000D0A2C901000000A24030
3976:10F8700027EC00000000002000B00100C994004106
3977:10F88000A34101000B97004127D00000360400403F
3978:10F8900089980100099900408A3001001000000792
3979:10F8A00096E401000000004B809401000000005429
3980:10F8B00061B101000080004062DD01000000A8404D
3981:10F8C00081B20000040014BB803200001497004095
3982:10F8D00081B200000400A205486D00006A97004054
3983:10F8E0002B300100AC002D0616C0010090002DF059
3984:10F8F00016C401001E97A0F016440000000000414D
3985:10F9000017C001000E0000A244C9010000006CF005
3986:10F9100030B00100AC002D4087B0010000006CF059
3987:10F9200028B001002797224A197C000000300043CC
3988:10F9300086C801000030000B16C801002797A440BC
3989:10F94000813200000000004117C001004A972206E2
3990:10F95000803200003597A206146C000032972248CE
3991:10F96000197C00002C97A0411740000000000041C6
3992:10F9700017C001000000004131C0010090002018B4
3993:10F98000E0B101008B002D48198001000400A24560
3994:10F99000E77D00008B002045E7910100359700408E
3995:10F9A0008790000008000043869801003597A04822
3996:10F9B000174000000000004117C00100B0000040E7
3997:10F9C0004399010010500043FCC90100AE9700307C
3998:10F9D0008130010000000040E5B101004097224A5B
3999:10F9E000197C0000080000A244C90100CC002DAB26
4000:10F9F000F9B10100000000AB17C001003F97A0F073
4001:10FA0000164400000000004117C00100449764F054
4002:10FA100082B00000A4000040479901004497A2F280
4003:10FA20008032000000000041E5B101008C00201888
4004:10FA3000E0B101009000004045990100000060061F
4005:10FA400030C001000000860C80B200000400A24912
4006:10FA5000197C0000BC002D4619900100A000A0F206
4007:10FA6000E4B10100B0000040439901001050004390
4008:10FA7000FCC90100AE970030813001000000A24AAD
4009:10FA800019FC0000080000A244C90100CC002DAB05
4010:10FA9000F9B10100000000AB17C001005397A0F0BE
4011:10FAA000164400000000004117C001000000E4F00F
4012:10FAB00082B001000080001044C901000000004134
4013:10FAC000F0B1010000000003F0B1010000000000EF
4014:10FAD000F0B101000000001062B101000000A81B9D
4015:10FAE000E0B100005897004081B2000000F0000C27
4016:10FAF0007E8901000000A64C956001000000804A4C
4017:10FB0000189401000080001044C901000400220183
4018:10FB1000F031000020000040F0C901000000001694
4019:10FB2000F0B101000000004361B1010020000010AD
4020:10FB300062DD01000000A815E0B1000063970040FD
4021:10FB400081B200001080000344C9010000000006DB
4022:10FB5000F0B1010000000001F0B101000000E85F19
4023:10FB60001790010070000040439901007A012EFEB9
4024:10FB700092B001008B002DF616B001007097224361
4025:10FB8000E77D00000000004445C10100040000A61C
4026:10FB90002AB0010028006E0682C801007497224A2C
4027:10FBA000197C00000000004245D1010000006E4CAD
4028:10FBB00083C001000000004192C0010075974330EE
4029:10FBC0003D0700000000669E83B0010000001B415D
4030:10FBD0003DC301000000004192C00100060000A2E8
4031:10FBE00044C901001000004998F401007E972630B6
4032:10FBF000930400007E97904C92400000000000416A
4033:10FC000093C00100FFFF8049ECA9010000800010B3
4034:10FC100044C9010004002201F03100000000000985
4035:10FC2000F0B1010000000018F0B101002000001048
4036:10FC300062DD01000000A815E0B1000083970040DC
4037:10FC400081B2000004002220816C000004002240E8
4038:10FC5000816C00009597225F817C00009297A24002
4039:10FC6000197C0000000000401990010000000054C1
4040:10FC700061B101001000000796E401000000004F90
4041:10FC8000979401000000004B62B101009297284058
4042:10FC9000813200000400A254777D00008E9700405E
4043:10FCA00081B20000250400408998010009990040B4
4044:10FCB0008A3001000000A221818400009897A25F91
4045:10FCC000816C00000000A243197C01000000004389
4046:10FCD000199001002504004089980100099900400D
4047:10FCE0008A3001000000005461B1010010000007DB
4048:10FCF00096E4010000000040969401000000004BD3
4049:10FD000062B101000000A84081B200000400A254CA
4050:10FD1000777D00009D97004081B20000040022081A
4051:10FD2000803200000400220280320000A697A24B1D
4052:10FD3000FD7F0000B405000280CE01000400AA404F
4053:10FD4000813200000080001944C901000400220231
4054:10FD5000F03100000000000BF0B1010000000013C2
4055:10FD6000F0B101000000004361B101002000001962
4056:10FD700062DD01000000A808E0B10000AB97004080
4057:10FD800081B200000400A205486D0000B00000A18F
4058:10FD900080CE01000400A640813200007C002DF0DE
4059:10FDA00084B00100020000F098F40100B797204CE5
4060:10FDB000846C00008800004043990100B79720F24E
4061:10FDC000846C00000000004085B0010098002D14F4
4062:10FDD00082B00100000000F098B00100A3002D14D3
4063:10FDE00098D00100BC97204C846C00000000004CAF
4064:10FDF00084B001000400A230816C0000000000F318
4065:10FE000080E00100C0972340846C000000000040A7
4066:10FE100084B00100D0002014E0B101009800254218
4067:10FE200080B0010000006EF380F001000000A642E7
4068:10FE300082C00000C697A0401640000000000041AC
4069:10FE400017C0010000009FF082EC00009800A04164
4070:10FE5000E0B101000400A25C1F7C000037040040F8
4071:10FE600089980100099900058A30010000000042CC
4072:10FE700061B1010000002E1048B10100A80100404E
4073:10FE8000F199010000000005F0B101000900000730
4074:10FE900096E40100000060A797C001000000001078
4075:10FEA00062B101000000A84081B20000D19700407B
4076:10FEB00081B20000A8002D1C8AB0010000009FF054
4077:10FEC0008AD000000000A2408BEC00008A00204095
4078:10FED000E7B10100B400004047990100A4002D459E
4079:10FEE000E0D10100DF979C17803200000400224A15
4080:10FEF000197C0000BE002FAB83B001003C980014B9
4081:10FF000082500100E497004081B20000E49722F2A1
4082:10FF1000823000008C00004043990100E4979F1C50
4083:10FF2000E06D0000BE000040479901003C98004091
4084:10FF300081320100A800201CE0B101009C002D309E
4085:10FF400081B0010088002DF084B0010094002DF2F2
4086:10FF500086B00100F89723F0846C0000EC972392A0
4087:10FF6000876C0000C90400A694B00100EE97004021
4088:10FF700081B20000200000A694B001006089004A10
4089:10FF800094980100EE9768408132000004002240FE
4090:10FF9000BD7D00000000004AB0B10100BF002D424D
4091:10FFA000B2B1010090002DF380E00100F397D4403E
4092:10FFB00081320000000078DA84C00100FD97234000
4093:10FFC000846C00009400209DE1B10100FD97004089
4094:10FFD00084B00000BF002D4384C0010090002DF3C9
4095:10FFE00080E00100FD972340846C00009400209D78
4096:10FFF000E1B101000000004084B001000198A2F0CE
4097:020000021000EC
4098:10000000386C00009C002042E0B101000000005F5D
4099:100010001394010000008046198001009C002042DA
4100:10002000E0B101003700004043990100040000F3F3
4101:1000300080F401000F0000F382880100079823413B
4102:10004000806C00000000005F139401000000890C28
4103:1000500080B200000400860C80320000BC0000402A
4104:1000600043990100A000A0F2E4B1010000009F410B
4105:1000700024EC00001398A6408132000000009F424B
4106:1000800038EC00001398A64081320000B400004014
4107:10009000439901001598A3F03A6C00000400A440B5
4108:1000A000813200000000804081B20100B4000040B5
4109:1000B00043990100199822F03A6C0000B400201D09
4110:1000C000E0B1010080002D5F13940100199823F026
4111:1000D0003A6C00008000201DE0B10100C000201239
4112:1000E000E0B10100C400A01CE0B101002704004001
4113:1000F00089980100099900428A3001000400A20594
4114:10010000486D00000080000344C901000000004267
4115:10011000E0B10100120000408798010025989F413E
4116:10012000246C0000000000418CB0010000000012AF
4117:100130008CD001002698004124B00000000000404F
4118:100140008DB001007F980040813201000000004521
4119:1001500061B101004000001062DD01000000A84014
4120:1001600081B200002898004081B20000B4940040A1
4121:10017000813201000000001680B201000000A708D3
4122:10018000803201003204004089980100099900087A
4123:100190008A3001003298A240956C0000C99400405A
4124:1001A00081320100008200A604B00100000000407E
4125:1001B0002DB00100A0982F4011B001003005004182
4126:1001C00089B00000CC0000A180CE01000400A64050
4127:1001D0008132000000009FF83EEC000000009F12FA
4128:1001E000E0ED0000C80020ABE1B10100CC00A01F91
4129:1001F000E0B101000400A205486D00003F98A35F34
4130:10020000E76D000000000041E7C10100A6000040CA
4131:1002100047990100539822F2863000000300004302
4132:1002200084F401000100004180CC0100B8002D429F
4133:1002300080D001000000624086C0010047981F4343
4134:10024000803200004898A240876C000000006241A4
4135:1002500087B001004C989F408032000000000040B1
4136:1002600085B001000000004084D001000000004281
4137:1002700080B00100000000F288B0010002000044DC
4138:1002800084F40100B8002E4280D0010000006240DA
4139:1002900088C0010052981F44803200005698A24046
4140:1002A000896C00005698624189B0000003006241E9
4141:1002B00086E40100B8000040459901000100624158
4142:1002C00088E40100A4002040E5B10100A200204024
4143:1002D000E7B10100BC002E4387F00100000000449C
4144:1002E00086C001005C982043876C000000008043BA
4145:1002F000E5B101004001004380CE01000000A443AD
4146:10030000E43101004001E240879801000400A205A9
4147:10031000486D00000400220A8032000088002D444D
4148:1003200081B0010090002DF22EB001009C002DF054
4149:1003300086B0010090002DF082B00100BA002DF0CF
4150:1003400098B001006B98A212986C0000BC002DF2CE
4151:1003500098B001006B98A0F2986C000000000017A4
4152:1003600082B001009C002041E0B10100B4002D12D8
4153:1003700086D001006E98A341E06D00006F9800F0F8
4154:1003800084B000000000004184B0010080002D43D3
4155:1003900084D0010072989F4280320000000000402B
4156:1003A00085B001007498A342146C00007598000A8F
4157:1003B0000CB00000000000420CB001007798A017BC
4158:1003C0000C6C0000000080170CB001007C982240EB
4159:1003D0000D6C00000000A00A0CEC0000010000F011
4160:1003E00082F401007C98A0410C6C00000000A2F097
4161:1003F00080320100290000408998010009990040DD
4162:10040000813201000000804081B00100D1940040A1
4163:1004100081320100040022038032000004800003C6
4164:1004200044C9010000000046F0B101000000004096
4165:10043000F1B10100000060418794010000800010CC
4166:1004400044C9010000000050F1B101000000004863
4167:10045000F0B1010000000049F0B10100000000030C
4168:10046000E0B101000000004561B101002000001072
4169:1004700062DD01000000A85D059000008B9800403F
4170:1004800081B200000400A205486D00001000000CBD
4171:1004900096F401000400A207966C000000002E4BA9
4172:1004A0001990010005002A0CE4B10100000080044D
4173:1004B000E6B101003E040040899801000999000856
4174:1004C0008A3001009698454861310000001000080C
4175:1004D00062DD01009C9828408730000097982248F0
4176:1004E000777D000004002240276C00000A971D461B
4177:1004F00087B000009F98225F117C00000400221545
4178:10050000623100009D98A8408132000000009D40AB
4179:1005100081B201000000004049B1010000142F4CDD
4180:1005200083B0010000000040F1B10100A298A24197
4181:10053000835000000000804081B2010000000040B4
4182:1005400049B1010030000040A199010000000040C5
4183:1005500093B00100000000401FB00100F698004970
4184:10056000963001000700004906E40100003900034D
4185:1005700006C801000000004005B00100200000D0C6
4186:10058000A0C901000000004193C00100A998A05437
4187:10059000936C000000002E0597B001000080004021
4188:1005A0004999010000000040E1B10100000200A2F1
4189:1005B00044C90100B298A2419750000000000020F9
4190:1005C00049B30100FC980040493101000895004002
4191:1005D0008132010000B52E0897B0010000000040F4
4192:1005E000F1B10100B998A2419750000018000040F5
4193:1005F0009798010000972E4081B201000000004052
4194:10060000F1B10100BD98A2419750000000000040E8
4195:1006100049B1010040182E0597B0010000000040CC
4196:10062000F1B10100C198A2419750000057952040B8
4197:10063000E7B101003094004045990100640000409A
4198:10064000E599010056952040E7B10100B89420419A
4199:10065000E5B10100BA942041E5B101009894004051
4200:1006600045990100020000409798010000000040F9
4201:10067000F1B10100CB98A24197500000000000406A
4202:1006800097B00100000000406FB101000000004B76
4203:1006900068B10100CF988541974000008004004078
4204:1006A000813201000000004039B301000000004029
4205:1006B00037B301000000004035B3010000000040E6
4206:1006C00033B301000000004041B3010000000040CE
4207:1006D0003FB30100EE050040259B010042000040B1
4208:1006E0004B9B0100000000402FB3010000000040C0
4209:1006F0002DB301000000004047B30100000000409E
4210:1007000043B30100600000402B9B01000000005437
4211:10071000EF93010000000055F1930100FFFF00A5D9
4212:100720003C8B01000000002C5BB301000000002C9A
4213:1007300045B301000000004059B301000000004033
4214:1007400057B301000000004027B301000000004043
4215:1007500053B30100EB98A250FD7F0000EB98A2512B
4216:10076000FD7F0000EC9800401DB3000050460040A3
4217:100770001D9B010000C000A688B30100FF3F00A63A
4218:100780003AB3010000C0009D3B9B0100B40500404E
4219:10079000239B0100000000404DB30100080A00A6A1
4220:1007A00014B301000101008A159B01000000002024
4221:1007B00087B30100008000A656B101000000805EF2
4222:1007C00057B501001800004B20E401000600004B63
4223:1007D00096E401000043004B96C801001800001089
4224:1007E00020DC01000000004B209401000000805735
4225:1007F0002190010000992E0A97B0010000000040EE
4226:10080000F1B10100FD98A2419750000000030040A3
4227:100810009798010000A900404599010000000040A0
4228:10082000F1B101000199A241975000003000004051
4229:10083000979801000000005561B101000000004BD5
4230:1008400062B101000599A840813200000599A241DA
4231:10085000975000000000804081B201001000004E5F
4232:1008600098E4010000000007989401000000004394
4233:1008700099E0010000000080989401000000004809
4234:1008800099E001000000004C889401000F996A4033
4235:10089000813200001299224F777D0000F004004061
4236:1008A000813201000000004F61B1010000000044EE
4237:1008B00062B101001399A840813200001A99224ABE
4238:1008C000897C00001899224F777D0000F0040040D9
4239:1008D000813201000000004562B101001899A84072
4240:1008E000813200000000FA4081B201000000804027
4241:1008F00081B201000400A25A1F7C00001000000F0A
4242:1009000098F401000400A25F9904000000008040F8
4243:1009100081B201000000804081B20100040000406B
4244:1009200081B200000400004081B2000004000040D9
4245:1009300081B200000400004081B2000004000040C9
4246:1009400081B200000400004081B2000004000040B9
4247:1009500081B200000400004081B2000004000040A9
4248:1009600081B200000400004081B200000400004099
4249:1009700081B200000400004081B200000400004089
4250:1009800081B200000400004081B200000400004079
4251:1009900081B200000400004081B200000400004069
4252:1009A00081B200000400004081B200000400004059
4253:1009B00081B200000400004081B200000400004049
4254:1009C00081B200000400004081B200000400004039
4255:1009D00081B200000400004081B200000400004029
4256:1009E00081B200000400004081B200000400004019
4257:1009F00081B200000400004081B200000400004009
4258:100A000081B200000400004081B2000004000040F8
4259:100A100081B200000400004081B2000004000040E8
4260:100A200081B200000400004081B2000004000040D8
4261:100A300081B200000400004081B2000004000040C8
4262:100A400081B200000400004081B2000004000040B8
4263:100A500081B200000400004081B2000004000040A8
4264:100A600081B200000400004081B200000400004098
4265:100A700081B200000400004081B200000400004088
4266:100A800081B200000400004081B200000400004078
4267:100A900081B200000400004081B200000400004068
4268:100AA00081B200000400004081B200000400004058
4269:100AB00081B200000400004081B200000400004048
4270:100AC00081B200000400004081B200000400004038
4271:100AD00081B200000400004081B200000400004028
4272:100AE00081B200000400004081B200000400004018
4273:100AF00081B200000400004081B200000400004008
4274:100B000081B200000400004081B2000004000040F7
4275:100B100081B200000400004081B2000004000040E7
4276:100B200081B200000400004081B2000004000040D7
4277:100B300081B200000400004081B2000004000040C7
4278:100B400081B200000400004081B2000004000040B7
4279:100B500081B200000400004081B2000004000040A7
4280:100B600081B200000400004081B200000400004097
4281:100B700081B200000400004081B200000400004087
4282:100B800081B200000400004081B200000400004077
4283:100B900081B200000400004081B200000400004067
4284:100BA00081B200000400004081B200000400004057
4285:100BB00081B200000400004081B200000400004047
4286:100BC00081B200000400004081B200000400004037
4287:100BD00081B200000400004081B200000400004027
4288:100BE00081B200000400004081B200000400004017
4289:100BF00081B200000400004081B200000400004007
4290:100C000081B200000400004081B2000004000040F6
4291:100C100081B200000400004081B2000004000040E6
4292:100C200081B200000400004081B2000004000040D6
4293:100C300081B200000400004081B2000004000040C6
4294:100C400081B200000400004081B2000004000040B6
4295:100C500081B200000400004081B2000004000040A6
4296:100C600081B200000400004081B200000400004096
4297:100C700081B200000400004081B200000400004086
4298:100C800081B200000400004081B200000400004076
4299:100C900081B200000400004081B200000400004066
4300:100CA00081B200000400004081B200000400004056
4301:100CB00081B200000400004081B200000400004046
4302:100CC00081B200000400004081B200000400004036
4303:100CD00081B200000400004081B200000400004026
4304:100CE00081B200000400004081B200000400004016
4305:100CF00081B200000400004081B200000400004006
4306:100D000081B200000400004081B2000004000040F5
4307:100D100081B200000400004081B2000004000040E5
4308:100D200081B200000400004081B2000004000040D5
4309:100D300081B200000400004081B2000004000040C5
4310:100D400081B200000400004081B2000004000040B5
4311:100D500081B200000400004081B2000004000040A5
4312:100D600081B200000400004081B200000400004095
4313:100D700081B200000400004081B200000400004085
4314:100D800081B200000400004081B200000400004075
4315:100D900081B200000400004081B200000400004065
4316:100DA00081B200000400004081B200000400004055
4317:100DB00081B200000400004081B200000400004045
4318:100DC00081B200000400004081B200000400004035
4319:100DD00081B200000400004081B200000400004025
4320:100DE00081B200000400004081B200000400004015
4321:100DF00081B200000400004081B200000400004005
4322:100E000081B200000400004081B2000004000040F4
4323:100E100081B200000400004081B2000004000040E4
4324:100E200081B200000400004081B2000004000040D4
4325:100E300081B200000400004081B2000004000040C4
4326:100E400081B200000400004081B2000004000040B4
4327:100E500081B200000400004081B2000004000040A4
4328:100E600081B200000400004081B200000400004094
4329:100E700081B200000400004081B200000400004084
4330:100E800081B200000400004081B200000400004074
4331:100E900081B200000400004081B200000400004064
4332:100EA00081B200000400004081B200000400004054
4333:100EB00081B200000400004081B200000400004044
4334:100EC00081B200000400004081B200000400004034
4335:100ED00081B200000400004081B200000400004024
4336:100EE00081B200000400004081B200000400004014
4337:100EF00081B200000400004081B200000400004004
4338:100F000081B200000400004081B2000004000040F3
4339:100F100081B200000400004081B2000004000040E3
4340:100F200081B200000400004081B2000004000040D3
4341:100F300081B200000400004081B2000004000040C3
4342:100F400081B200000400004081B2000004000040B3
4343:100F500081B200000400004081B2000004000040A3
4344:100F600081B200000400004081B200000400004093
4345:100F700081B200000400004081B200000400004083
4346:100F800081B200000400004081B200000400004073
4347:100F900081B200000400004081B200000400004063
4348:100FA00081B200000400004081B200000400004053
4349:100FB00081B200000400004081B200000400004043
4350:100FC00081B200000400004081B200000400004033
4351:100FD00081B200000400004081B200000400004023
4352:100FE00081B200000400004081B200000400004013
4353:100FF00081B200000400004081B200000400004003
4354:1010000081B200000400004081B2000004000040F2
4355:1010100081B200000400004081B2000004000040E2
4356:1010200081B200000400004081B2000004000040D2
4357:1010300081B200000400004081B2000004000040C2
4358:1010400081B200000400004081B2000004000040B2
4359:1010500081B200000400004081B2000004000040A2
4360:1010600081B200000400004081B200000400004092
4361:1010700081B200000400004081B200000400004082
4362:1010800081B200000400004081B200000400004072
4363:1010900081B200000400004081B200000400004062
4364:1010A00081B200000400004081B200000400004052
4365:1010B00081B200000400004081B200000400004042
4366:1010C00081B200000400004081B200000400004032
4367:1010D00081B200000400004081B200000400004022
4368:1010E00081B200000400004081B200000400004012
4369:1010F00081B200000400004081B200000400004002
4370:1011000081B200000400004081B2000004000040F1
4371:1011100081B200000400004081B2000004000040E1
4372:1011200081B200000400004081B2000004000040D1
4373:1011300081B200000400004081B2000004000040C1
4374:1011400081B200000400004081B2000004000040B1
4375:1011500081B200000400004081B2000004000040A1
4376:1011600081B200000400004081B200000400004091
4377:1011700081B200000400004081B200000400004081
4378:1011800081B200000400004081B200000400004071
4379:1011900081B200000400004081B200000400004061
4380:1011A00081B200000400004081B200000400004051
4381:1011B00081B200000400004081B200000400004041
4382:1011C00081B200000400004081B200000400004031
4383:1011D00081B200000400004081B200000400004021
4384:1011E00081B200000400004081B200000400004011
4385:1011F00081B200000400004081B200000400004001
4386:1012000081B200000400004081B2000004000040F0
4387:1012100081B200000400004081B2000004000040E0
4388:1012200081B200000400004081B2000004000040D0
4389:1012300081B200000400004081B2000004000040C0
4390:1012400081B200000400004081B2000004000040B0
4391:1012500081B200000400004081B2000004000040A0
4392:1012600081B200000400004081B200000400004090
4393:1012700081B200000400004081B200000400004080
4394:1012800081B200000400004081B200000400004070
4395:1012900081B200000400004081B200000400004060
4396:1012A00081B200000400004081B200000400004050
4397:1012B00081B200000400004081B200000400004040
4398:1012C00081B200000400004081B200000400004030
4399:1012D00081B200000400004081B200000400004020
4400:1012E00081B200000400004081B200000400004010
4401:1012F00081B200000400004081B200000400004000
4402:1013000081B200000400004081B2000004000040EF
4403:1013100081B200000400004081B2000004000040DF
4404:1013200081B200000400004081B2000004000040CF
4405:1013300081B200000400004081B2000004000040BF
4406:1013400081B200000400004081B2000004000040AF
4407:1013500081B200000400004081B20000040000409F
4408:1013600081B200000400004081B20000040000408F
4409:1013700081B200000400004081B20000040000407F
4410:1013800081B200000400004081B20000040000406F
4411:1013900081B200000400004081B20000040000405F
4412:1013A00081B200000400004081B20000040000404F
4413:1013B00081B200000400004081B20000040000403F
4414:1013C00081B200000400004081B20000040000402F
4415:1013D00081B200000400004081B20000040000401F
4416:1013E00081B200000400004081B20000040000400F
4417:1013F00081B200000400004081B2000004000040FF
4418:1014000081B200000400004081B2000004000040EE
4419:1014100081B200000400004081B2000004000040DE
4420:1014200081B200000400004081B2000004000040CE
4421:1014300081B200000400004081B2000004000040BE
4422:1014400081B200000400004081B2000004000040AE
4423:1014500081B200000400004081B20000040000409E
4424:1014600081B200000400004081B20000040000408E
4425:1014700081B200000400004081B20000040000407E
4426:1014800081B200000400004081B20000040000406E
4427:1014900081B200000400004081B20000040000405E
4428:1014A00081B200000400004081B20000040000404E
4429:1014B00081B200000400004081B20000040000403E
4430:1014C00081B200000400004081B20000040000402E
4431:1014D00081B200000400004081B20000040000401E
4432:1014E00081B200000400004081B20000040000400E
4433:1014F00081B200000400004081B2000004000040FE
4434:1015000081B200000400004081B2000004000040ED
4435:1015100081B200000400004081B2000004000040DD
4436:1015200081B200000400004081B2000004000040CD
4437:1015300081B200000400004081B2000004000040BD
4438:1015400081B200000400004081B2000004000040AD
4439:1015500081B200000400004081B20000040000409D
4440:1015600081B200000400004081B20000040000408D
4441:1015700081B200000400004081B20000040000407D
4442:1015800081B200000400004081B20000040000406D
4443:1015900081B200000400004081B20000040000405D
4444:1015A00081B200000400004081B20000040000404D
4445:1015B00081B200000400004081B20000040000403D
4446:1015C00081B200000400004081B20000040000402D
4447:1015D00081B200000400004081B20000040000401D
4448:1015E00081B200000400004081B20000040000400D
4449:1015F00081B200000400004081B2000004000040FD
4450:1016000081B200000400004081B2000004000040EC
4451:1016100081B200000400004081B2000004000040DC
4452:1016200081B200000400004081B2000004000040CC
4453:1016300081B200000400004081B2000004000040BC
4454:1016400081B200000400004081B2000004000040AC
4455:1016500081B200000400004081B20000040000409C
4456:1016600081B200000400004081B20000040000408C
4457:1016700081B200000400004081B20000040000407C
4458:1016800081B200000400004081B20000040000406C
4459:1016900081B200000400004081B20000040000405C
4460:1016A00081B200000400004081B20000040000404C
4461:1016B00081B200000400004081B20000040000403C
4462:1016C00081B200000400004081B20000040000402C
4463:1016D00081B200000400004081B20000040000401C
4464:1016E00081B200000400004081B20000040000400C
4465:1016F00081B200000400004081B2000004000040FC
4466:1017000081B200000400004081B2000004000040EB
4467:1017100081B200000400004081B2000004000040DB
4468:1017200081B200000400004081B2000004000040CB
4469:1017300081B200000400004081B2000004000040BB
4470:1017400081B200000400004081B2000004000040AB
4471:1017500081B200000400004081B20000040000409B
4472:1017600081B200000400004081B20000040000408B
4473:1017700081B200000400004081B20000040000407B
4474:1017800081B200000400004081B20000040000406B
4475:1017900081B200000400004081B20000040000405B
4476:1017A00081B200000400004081B20000040000404B
4477:1017B00081B200000400004081B20000040000403B
4478:1017C00081B200000400004081B20000040000402B
4479:1017D00081B200000400004081B20000040000401B
4480:1017E00081B200000400004081B20000040000400B
4481:1017F00081B200000400004081B2000004000040FB
4482:1018000081B200000400004081B2000004000040EA
4483:1018100081B200000400004081B2000004000040DA
4484:1018200081B200000400004081B2000004000040CA
4485:1018300081B200000400004081B2000004000040BA
4486:1018400081B200000400004081B2000004000040AA
4487:1018500081B200000400004081B20000040000409A
4488:1018600081B200000400004081B20000040000408A
4489:1018700081B200000400004081B20000040000407A
4490:1018800081B200000400004081B20000040000406A
4491:1018900081B200000400004081B20000040000405A
4492:1018A00081B200000400004081B20000040000404A
4493:1018B00081B200000400004081B20000040000403A
4494:1018C00081B200000400004081B20000040000402A
4495:1018D00081B200000400004081B20000040000401A
4496:1018E00081B200000400004081B20000040000400A
4497:1018F00081B200000400004081B2000004000040FA
4498:1019000081B200000400004081B2000004000040E9
4499:1019100081B200000400004081B2000004000040D9
4500:1019200081B200000400004081B2000004000040C9
4501:1019300081B200000400004081B2000004000040B9
4502:1019400081B200000400004081B2000004000040A9
4503:1019500081B200000400004081B200000400004099
4504:1019600081B200000400004081B200000400004089
4505:1019700081B200000400004081B200000400004079
4506:1019800081B200000400004081B200000400004069
4507:1019900081B200000400004081B200000400004059
4508:1019A00081B200000400004081B200000400004049
4509:1019B00081B200000400004081B200000400004039
4510:1019C00081B200000400004081B200000400004029
4511:1019D00081B200000400004081B200000400004019
4512:1019E00081B200000400004081B200000400004009
4513:1019F00081B200000400004081B2000004000040F9
4514:101A000081B200000400004081B2000004000040E8
4515:101A100081B200000400004081B2000004000040D8
4516:101A200081B200000400004081B2000004000040C8
4517:101A300081B200000400004081B2000004000040B8
4518:101A400081B200000400004081B2000004000040A8
4519:101A500081B200000400004081B200000400004098
4520:101A600081B200000400004081B200000400004088
4521:101A700081B200000400004081B200000400004078
4522:101A800081B200000400004081B200000400004068
4523:101A900081B200000400004081B200000400004058
4524:101AA00081B200000400004081B200000400004048
4525:101AB00081B200000400004081B200000400004038
4526:101AC00081B200000400004081B200000400004028
4527:101AD00081B200000400004081B200000400004018
4528:101AE00081B200000400004081B200000400004008
4529:101AF00081B200000400004081B2000004000040F8
4530:101B000081B200000400004081B2000004000040E7
4531:101B100081B200000400004081B2000004000040D7
4532:101B200081B200000400004081B2000004000040C7
4533:101B300081B200000400004081B2000004000040B7
4534:101B400081B200000400004081B2000004000040A7
4535:101B500081B200000400004081B200000400004097
4536:101B600081B200000400004081B200000400004087
4537:101B700081B200000400004081B200000400004077
4538:101B800081B200000400004081B200000400004067
4539:101B900081B200000400004081B200000400004057
4540:101BA00081B200000400004081B200000400004047
4541:101BB00081B200000400004081B200000400004037
4542:101BC00081B200000400004081B200000400004027
4543:101BD00081B200000400004081B200000400004017
4544:101BE00081B200000400004081B200000400004007
4545:101BF00081B200000400004081B2000004000040F7
4546:101C000081B200000400004081B2000004000040E6
4547:101C100081B200000400004081B2000004000040D6
4548:101C200081B200000400004081B2000004000040C6
4549:101C300081B200000400004081B2000004000040B6
4550:101C400081B200000400004081B2000004000040A6
4551:101C500081B200000400004081B200000400004096
4552:101C600081B200000400004081B200000400004086
4553:101C700081B200000400004081B200000400004076
4554:101C800081B200000400004081B200000400004066
4555:101C900081B200000400004081B200000400004056
4556:101CA00081B200000400004081B200000400004046
4557:101CB00081B200000400004081B200000400004036
4558:101CC00081B200000400004081B200000400004026
4559:101CD00081B200000400004081B200000400004016
4560:101CE00081B200000400004081B200000400004006
4561:101CF00081B200000400004081B2000004000040F6
4562:101D000081B200000400004081B2000004000040E5
4563:101D100081B200000400004081B2000004000040D5
4564:101D200081B200000400004081B2000004000040C5
4565:101D300081B200000400004081B2000004000040B5
4566:101D400081B200000400004081B2000004000040A5
4567:101D500081B200000400004081B200000400004095
4568:101D600081B200000400004081B200000400004085
4569:101D700081B200000400004081B200000400004075
4570:101D800081B200000400004081B200000400004065
4571:101D900081B200000400004081B200000400004055
4572:101DA00081B200000400004081B200000400004045
4573:101DB00081B200000400004081B200000400004035
4574:101DC00081B200000400004081B200000400004025
4575:101DD00081B200000400004081B200000400004015
4576:101DE00081B200000400004081B200000400004005
4577:101DF00081B200000400004081B2000004000040F5
4578:101E000081B200000400004081B2000004000040E4
4579:101E100081B200000400004081B2000004000040D4
4580:101E200081B200000400004081B2000004000040C4
4581:101E300081B200000400004081B2000004000040B4
4582:101E400081B200000400004081B2000004000040A4
4583:101E500081B200000400004081B200000400004094
4584:101E600081B200000400004081B200000400004084
4585:101E700081B200000400004081B200000400004074
4586:101E800081B200000400004081B200000400004064
4587:101E900081B200000400004081B200000400004054
4588:101EA00081B200000400004081B200000400004044
4589:101EB00081B200000400004081B200000400004034
4590:101EC00081B200000400004081B200000400004024
4591:101ED00081B200000400004081B200000400004014
4592:101EE00081B200000400004081B200000400004004
4593:101EF00081B200000400004081B2000004000040F4
4594:101F000081B200000400004081B2000004000040E3
4595:101F100081B200000400004081B2000004000040D3
4596:101F200081B200000400004081B2000004000040C3
4597:101F300081B200000400004081B2000004000040B3
4598:101F400081B200000400004081B2000004000040A3
4599:101F500081B200000400004081B200000400004093
4600:101F600081B200000400004081B200000400004083
4601:101F700081B200000400004081B200000400004073
4602:101F800081B200000400004081B200000400004063
4603:101F900081B200000400004081B200000400004053
4604:101FA00081B200000400004081B200000400004043
4605:101FB00081B200000400004081B200000400004033
4606:101FC00081B200000400004081B200000400004023
4607:101FD00081B200000400004081B200000400004013
4608:101FE00081B200000400004081B200000400004003
4609:101FF00081B200000400004081B2000004000040F3
4610:1020000081B200000400004081B2000004000040E2
4611:1020100081B200000400004081B2000004000040D2
4612:1020200081B200000400004081B2000004000040C2
4613:1020300081B200000400004081B2000004000040B2
4614:1020400081B200000400004081B2000004000040A2
4615:1020500081B200000400004081B200000400004092
4616:1020600081B200000400004081B200000400004082
4617:1020700081B200000400004081B200000400004072
4618:1020800081B200000400004081B200000400004062
4619:1020900081B200000400004081B200000400004052
4620:1020A00081B200000400004081B200000400004042
4621:1020B00081B200000400004081B200000400004032
4622:1020C00081B200000400004081B200000400004022
4623:1020D00081B200000400004081B200000400004012
4624:1020E00081B200000400004081B200000400004002
4625:1020F00081B200000400004081B2000004000040F2
4626:1021000081B200000400004081B2000004000040E1
4627:1021100081B200000400004081B2000004000040D1
4628:1021200081B200000400004081B2000004000040C1
4629:1021300081B200000400004081B2000004000040B1
4630:1021400081B200000400004081B2000004000040A1
4631:1021500081B200000400004081B200000400004091
4632:1021600081B200000400004081B200000400004081
4633:1021700081B200000400004081B200000400004071
4634:1021800081B200000400004081B200000400004061
4635:1021900081B200000400004081B200000400004051
4636:1021A00081B200000400004081B200000400004041
4637:1021B00081B200000400004081B200000400004031
4638:1021C00081B200000400004081B200000400004021
4639:1021D00081B200000400004081B200000400004011
4640:1021E00081B200000400004081B200000400004001
4641:1021F00081B200000400004081B2000004000040F1
4642:1022000081B200000400004081B2000004000040E0
4643:1022100081B200000400004081B2000004000040D0
4644:1022200081B200000400004081B2000004000040C0
4645:1022300081B200000400004081B2000004000040B0
4646:1022400081B200000400004081B2000004000040A0
4647:1022500081B200000400004081B200000400004090
4648:1022600081B200000400004081B200000400004080
4649:1022700081B200000400004081B200000400004070
4650:1022800081B200000400004081B200000400004060
4651:1022900081B200000400004081B200000400004050
4652:1022A00081B200000400004081B200000400004040
4653:1022B00081B200000400004081B200000400004030
4654:1022C00081B200000400004081B200000400004020
4655:1022D00081B200000400004081B200000400004010
4656:1022E00081B200000400004081B200000400004000
4657:1022F00081B200000400004081B2000004000040F0
4658:1023000081B200000400004081B2000004000040DF
4659:1023100081B200000400004081B2000004000040CF
4660:1023200081B200000400004081B2000004000040BF
4661:1023300081B200000400004081B2000004000040AF
4662:1023400081B200000400004081B20000040000409F
4663:1023500081B200000400004081B20000040000408F
4664:1023600081B200000400004081B20000040000407F
4665:1023700081B200000400004081B20000040000406F
4666:1023800081B200000400004081B20000040000405F
4667:1023900081B200000400004081B20000040000404F
4668:1023A00081B200000400004081B20000040000403F
4669:1023B00081B200000400004081B20000040000402F
4670:1023C00081B200000400004081B20000040000401F
4671:1023D00081B200000400004081B20000040000400F
4672:1023E00081B200000400004081B2000004000040FF
4673:1023F00081B200000400004081B2000004000040EF
4674:1024000081B200000400004081B2000004000040DE
4675:1024100081B200000400004081B2000004000040CE
4676:1024200081B200000400004081B2000004000040BE
4677:1024300081B200000400004081B2000004000040AE
4678:1024400081B200000400004081B20000040000409E
4679:1024500081B200000400004081B20000040000408E
4680:1024600081B200000400004081B20000040000407E
4681:1024700081B200000400004081B20000040000406E
4682:1024800081B200000400004081B20000040000405E
4683:1024900081B200000400004081B20000040000404E
4684:1024A00081B200000400004081B20000040000403E
4685:1024B00081B200000400004081B20000040000402E
4686:1024C00081B200000400004081B20000040000401E
4687:1024D00081B200000400004081B20000040000400E
4688:1024E00081B200000400004081B2000004000040FE
4689:1024F00081B200000400004081B2000004000040EE
4690:1025000081B200000400004081B2000004000040DD
4691:1025100081B200000400004081B2000004000040CD
4692:1025200081B200000400004081B2000004000040BD
4693:1025300081B200000400004081B2000004000040AD
4694:1025400081B200000400004081B20000040000409D
4695:1025500081B200000400004081B20000040000408D
4696:1025600081B200000400004081B20000040000407D
4697:1025700081B200000400004081B20000040000406D
4698:1025800081B200000400004081B20000040000405D
4699:1025900081B200000400004081B20000040000404D
4700:1025A00081B200000400004081B20000040000403D
4701:1025B00081B200000400004081B20000040000402D
4702:1025C00081B200000400004081B20000040000401D
4703:1025D00081B200000400004081B20000040000400D
4704:1025E00081B200000400004081B2000004000040FD
4705:1025F00081B200000400004081B2000004000040ED
4706:1026000081B200000400004081B2000004000040DC
4707:1026100081B200000400004081B2000004000040CC
4708:1026200081B200000400004081B2000004000040BC
4709:1026300081B200000400004081B2000004000040AC
4710:1026400081B200000400004081B20000040000409C
4711:1026500081B200000400004081B20000040000408C
4712:1026600081B200000400004081B20000040000407C
4713:1026700081B200000400004081B20000040000406C
4714:1026800081B200000400004081B20000040000405C
4715:1026900081B200000400004081B20000040000404C
4716:1026A00081B200000400004081B20000040000403C
4717:1026B00081B200000400004081B20000040000402C
4718:1026C00081B200000400004081B20000040000401C
4719:1026D00081B200000400004081B20000040000400C
4720:1026E00081B200000400004081B2000004000040FC
4721:1026F00081B200000400004081B2000004000040EC
4722:1027000081B200000400004081B2000004000040DB
4723:1027100081B200000400004081B2000004000040CB
4724:1027200081B200000400004081B2000004000040BB
4725:1027300081B200000400004081B2000004000040AB
4726:1027400081B200000400004081B20000040000409B
4727:1027500081B200000400004081B20000040000408B
4728:1027600081B200000400004081B20000040000407B
4729:1027700081B200000400004081B20000040000406B
4730:1027800081B200000400004081B20000040000405B
4731:1027900081B200000400004081B20000040000404B
4732:1027A00081B200000400004081B20000040000403B
4733:1027B00081B200000400004081B20000040000402B
4734:1027C00081B200000400004081B20000040000401B
4735:1027D00081B200000400004081B20000040000400B
4736:1027E00081B200000400004081B2000004000040FB
4737:1027F00081B200000400004081B2000004000040EB
4738:1028000081B200000400004081B2000004000040DA
4739:1028100081B200000400004081B2000004000040CA
4740:1028200081B200000400004081B2000004000040BA
4741:1028300081B200000400004081B2000004000040AA
4742:1028400081B200000400004081B20000040000409A
4743:1028500081B200000400004081B20000040000408A
4744:1028600081B200000400004081B20000040000407A
4745:1028700081B200000400004081B20000040000406A
4746:1028800081B200000400004081B20000040000405A
4747:1028900081B200000400004081B20000040000404A
4748:1028A00081B200000400004081B20000040000403A
4749:1028B00081B200000400004081B20000040000402A
4750:1028C00081B200000400004081B20000040000401A
4751:1028D00081B200000400004081B20000040000400A
4752:1028E00081B200000400004081B2000004000040FA
4753:1028F00081B200000400004081B2000004000040EA
4754:1029000081B200000400004081B2000004000040D9
4755:1029100081B200000400004081B2000004000040C9
4756:1029200081B200000400004081B2000004000040B9
4757:1029300081B200000400004081B2000004000040A9
4758:1029400081B200000400004081B200000400004099
4759:1029500081B200000400004081B200000400004089
4760:1029600081B200000400004081B200000400004079
4761:1029700081B200000400004081B200000400004069
4762:1029800081B200000400004081B200000400004059
4763:1029900081B200000400004081B200000400004049
4764:1029A00081B200000400004081B200000400004039
4765:1029B00081B200000400004081B200000400004029
4766:1029C00081B200000400004081B200000400004019
4767:1029D00081B200000400004081B200000400004009
4768:1029E00081B200000400004081B2000004000040F9
4769:1029F00081B200000400004081B2000004000040E9
4770:102A000081B200000400004081B2000004000040D8
4771:102A100081B200000400004081B2000004000040C8
4772:102A200081B200000400004081B2000004000040B8
4773:102A300081B200000400004081B2000004000040A8
4774:102A400081B200000400004081B200000400004098
4775:102A500081B200000400004081B200000400004088
4776:102A600081B200000400004081B200000400004078
4777:102A700081B200000400004081B200000400004068
4778:102A800081B200000400004081B200000400004058
4779:102A900081B200000400004081B200000400004048
4780:102AA00081B200000400004081B200000400004038
4781:102AB00081B200000400004081B200000400004028
4782:102AC00081B200000400004081B200000400004018
4783:102AD00081B200000400004081B200000400004008
4784:102AE00081B200000400004081B2000004000040F8
4785:102AF00081B200000400004081B2000004000040E8
4786:102B000081B200000400004081B2000004000040D7
4787:102B100081B200000400004081B2000004000040C7
4788:102B200081B200000400004081B2000004000040B7
4789:102B300081B200000400004081B2000004000040A7
4790:102B400081B200000400004081B200000400004097
4791:102B500081B200000400004081B200000400004087
4792:102B600081B200000400004081B200000400004077
4793:102B700081B200000400004081B200000400004067
4794:102B800081B200000400004081B200000400004057
4795:102B900081B200000400004081B200000400004047
4796:102BA00081B200000400004081B200000400004037
4797:102BB00081B200000400004081B200000400004027
4798:102BC00081B200000400004081B200000400004017
4799:102BD00081B200000400004081B200000400004007
4800:102BE00081B200000400004081B2000004000040F7
4801:102BF00081B200000400004081B2000004000040E7
4802:102C000081B200000400004081B2000004000040D6
4803:102C100081B200000400004081B2000004000040C6
4804:102C200081B200000400004081B2000004000040B6
4805:102C300081B200000400004081B2000004000040A6
4806:102C400081B200000400004081B200000400004096
4807:102C500081B200000400004081B200000400004086
4808:102C600081B200000400004081B200000400004076
4809:102C700081B200000400004081B200000400004066
4810:102C800081B200000400004081B200000400004056
4811:102C900081B200000400004081B200000400004046
4812:102CA00081B200000400004081B200000400004036
4813:102CB00081B200000400004081B200000400004026
4814:102CC00081B200000400004081B200000400004016
4815:102CD00081B200000400004081B200000400004006
4816:102CE00081B200000400004081B2000004000040F6
4817:102CF00081B200000400004081B2000004000040E6
4818:102D000081B200000400004081B2000004000040D5
4819:102D100081B200000400004081B2000004000040C5
4820:102D200081B200000400004081B2000004000040B5
4821:102D300081B200000400004081B2000004000040A5
4822:102D400081B200000400004081B200000400004095
4823:102D500081B200000400004081B200000400004085
4824:102D600081B200000400004081B200000400004075
4825:102D700081B200000400004081B200000400004065
4826:102D800081B200000400004081B200000400004055
4827:102D900081B200000400004081B200000400004045
4828:102DA00081B200000400004081B200000400004035
4829:102DB00081B200000400004081B200000400004025
4830:102DC00081B200000400004081B200000400004015
4831:102DD00081B200000400004081B200000400004005
4832:102DE00081B200000400004081B2000004000040F5
4833:102DF00081B200000400004081B2000004000040E5
4834:102E000081B200000400004081B2000004000040D4
4835:102E100081B200000400004081B2000004000040C4
4836:102E200081B200000400004081B2000004000040B4
4837:102E300081B200000400004081B2000004000040A4
4838:102E400081B200000400004081B200000400004094
4839:102E500081B200000400004081B200000400004084
4840:102E600081B200000400004081B200000400004074
4841:102E700081B200000400004081B200000400004064
4842:102E800081B200000400004081B200000400004054
4843:102E900081B200000400004081B200000400004044
4844:102EA00081B200000400004081B200000400004034
4845:102EB00081B200000400004081B200000400004024
4846:102EC00081B200000400004081B200000400004014
4847:102ED00081B200000400004081B200000400004004
4848:102EE00081B200000400004081B2000004000040F4
4849:102EF00081B200000400004081B2000004000040E4
4850:102F000081B200000400004081B2000004000040D3
4851:102F100081B200000400004081B2000004000040C3
4852:102F200081B200000400004081B2000004000040B3
4853:102F300081B200000400004081B2000004000040A3
4854:102F400081B200000400004081B200000400004093
4855:102F500081B200000400004081B200000400004083
4856:102F600081B200000400004081B200000400004073
4857:102F700081B200000400004081B200000400004063
4858:102F800081B200000400004081B200000400004053
4859:102F900081B200000400004081B200000400004043
4860:102FA00081B200000400004081B200000400004033
4861:102FB00081B200000400004081B200000400004023
4862:102FC00081B200000400004081B200000400004013
4863:102FD00081B200000400004081B200000400004003
4864:102FE00081B200000400004081B2000004000040F3
4865:102FF00081B200000400004081B2000004000040E3
4866:1030000081B200000400004081B2000004000040D2
4867:1030100081B200000400004081B2000004000040C2
4868:1030200081B200000400004081B2000004000040B2
4869:1030300081B200000400004081B2000004000040A2
4870:1030400081B200000400004081B200000400004092
4871:1030500081B200000400004081B200000400004082
4872:1030600081B200000400004081B200000400004072
4873:1030700081B200000400004081B200000400004062
4874:1030800081B200000400004081B200000400004052
4875:1030900081B200000400004081B200000400004042
4876:1030A00081B200000400004081B200000400004032
4877:1030B00081B200000400004081B200000400004022
4878:1030C00081B200000400004081B200000400004012
4879:1030D00081B200000400004081B200000400004002
4880:1030E00081B200000400004081B2000004000040F2
4881:1030F00081B200000400004081B2000004000040E2
4882:1031000081B200000400004081B2000004000040D1
4883:1031100081B200000400004081B2000004000040C1
4884:1031200081B200000400004081B2000004000040B1
4885:1031300081B200000400004081B2000004000040A1
4886:1031400081B200000400004081B200000400004091
4887:1031500081B200000400004081B200000400004081
4888:1031600081B200000400004081B200000400004071
4889:1031700081B200000400004081B200000400004061
4890:1031800081B200000400004081B200000400004051
4891:1031900081B200000400004081B200000400004041
4892:1031A00081B200000400004081B200000400004031
4893:1031B00081B200000400004081B200000400004021
4894:1031C00081B200000400004081B200000400004011
4895:1031D00081B200000400004081B200000400004001
4896:1031E00081B200000400004081B2000004000040F1
4897:1031F00081B200000400004081B2000004000040E1
4898:1032000081B200000400004081B2000004000040D0
4899:1032100081B200000400004081B2000004000040C0
4900:1032200081B200000400004081B2000004000040B0
4901:1032300081B200000400004081B2000004000040A0
4902:1032400081B200000400004081B200000400004090
4903:1032500081B200000400004081B200000400004080
4904:1032600081B200000400004081B200000400004070
4905:1032700081B200000400004081B200000400004060
4906:1032800081B200000400004081B200000400004050
4907:1032900081B200000400004081B200000400004040
4908:1032A00081B200000400004081B200000400004030
4909:1032B00081B200000400004081B200000400004020
4910:1032C00081B200000400004081B200000400004010
4911:1032D00081B200000400004081B200000400004000
4912:1032E00081B200000400004081B2000004000040F0
4913:1032F00081B200000400004081B2000004000040E0
4914:1033000081B200000400004081B2000004000040CF
4915:1033100081B200000400004081B2000004000040BF
4916:1033200081B200000400004081B2000004000040AF
4917:1033300081B200000400004081B20000040000409F
4918:1033400081B200000400004081B20000040000408F
4919:1033500081B200000400004081B20000040000407F
4920:1033600081B200000400004081B20000040000406F
4921:1033700081B200000400004081B20000040000405F
4922:1033800081B200000400004081B20000040000404F
4923:1033900081B200000400004081B20000040000403F
4924:1033A00081B200000400004081B20000040000402F
4925:1033B00081B200000400004081B20000040000401F
4926:1033C00081B200000400004081B20000040000400F
4927:1033D00081B200000400004081B2000004000040FF
4928:1033E00081B200000400004081B2000004000040EF
4929:1033F00081B200000400004081B2000004000040DF
4930:1034000081B200000400004081B2000004000040CE
4931:1034100081B200000400004081B2000004000040BE
4932:1034200081B200000400004081B2000004000040AE
4933:1034300081B200000400004081B20000040000409E
4934:1034400081B200000400004081B20000040000408E
4935:1034500081B200000400004081B20000040000407E
4936:1034600081B200000400004081B20000040000406E
4937:1034700081B200000400004081B20000040000405E
4938:1034800081B200000400004081B20000040000404E
4939:1034900081B200000400004081B20000040000403E
4940:1034A00081B200000400004081B20000040000402E
4941:1034B00081B200000400004081B20000040000401E
4942:1034C00081B200000400004081B20000040000400E
4943:1034D00081B200000400004081B2000004000040FE
4944:1034E00081B200000400004081B2000004000040EE
4945:1034F00081B200000400004081B2000004000040DE
4946:1035000081B200000400004081B2000004000040CD
4947:1035100081B200000400004081B2000004000040BD
4948:1035200081B200000400004081B2000004000040AD
4949:1035300081B200000400004081B20000040000409D
4950:1035400081B200000400004081B20000040000408D
4951:1035500081B200000400004081B20000040000407D
4952:1035600081B200000400004081B20000040000406D
4953:1035700081B200000400004081B20000040000405D
4954:1035800081B200000400004081B20000040000404D
4955:1035900081B200000400004081B20000040000403D
4956:1035A00081B200000400004081B20000040000402D
4957:1035B00081B200000400004081B20000040000401D
4958:1035C00081B200000400004081B20000040000400D
4959:1035D00081B200000400004081B2000004000040FD
4960:1035E00081B200000400004081B2000004000040ED
4961:1035F00081B200000400004081B2000004000040DD
4962:1036000081B200000400004081B2000004000040CC
4963:1036100081B200000400004081B2000004000040BC
4964:1036200081B200000400004081B2000004000040AC
4965:1036300081B200000400004081B20000040000409C
4966:1036400081B200000400004081B20000040000408C
4967:1036500081B200000400004081B20000040000407C
4968:1036600081B200000400004081B20000040000406C
4969:1036700081B200000400004081B20000040000405C
4970:1036800081B200000400004081B20000040000404C
4971:1036900081B200000400004081B20000040000403C
4972:1036A00081B200000400004081B20000040000402C
4973:1036B00081B200000400004081B20000040000401C
4974:1036C00081B200000400004081B20000040000400C
4975:1036D00081B200000400004081B2000004000040FC
4976:1036E00081B200000400004081B2000004000040EC
4977:1036F00081B200000400004081B2000004000040DC
4978:1037000081B200000400004081B2000004000040CB
4979:1037100081B200000400004081B2000004000040BB
4980:1037200081B200000400004081B2000004000040AB
4981:1037300081B200000400004081B20000040000409B
4982:1037400081B200000400004081B20000040000408B
4983:1037500081B200000400004081B20000040000407B
4984:1037600081B200000400004081B20000040000406B
4985:1037700081B200000400004081B20000040000405B
4986:1037800081B200000400004081B20000040000404B
4987:1037900081B200000400004081B20000040000403B
4988:1037A00081B200000400004081B20000040000402B
4989:1037B00081B200000400004081B20000040000401B
4990:1037C00081B200000400004081B20000040000400B
4991:1037D00081B200000400004081B2000004000040FB
4992:1037E00081B200000400004081B2000004000040EB
4993:1037F00081B200000400004081B2000004000040DB
4994:1038000081B200000400004081B2000004000040CA
4995:1038100081B200000400004081B2000004000040BA
4996:1038200081B200000400004081B2000004000040AA
4997:1038300081B200000400004081B20000040000409A
4998:1038400081B200000400004081B20000040000408A
4999:1038500081B200000400004081B20000040000407A
5000:1038600081B200000400004081B20000040000406A
5001:1038700081B200000400004081B20000040000405A
5002:1038800081B200000400004081B20000040000404A
5003:1038900081B200000400004081B20000040000403A
5004:1038A00081B200000400004081B20000040000402A
5005:1038B00081B200000400004081B20000040000401A
5006:1038C00081B200000400004081B20000040000400A
5007:1038D00081B200000400004081B2000004000040FA
5008:1038E00081B200000400004081B2000004000040EA
5009:1038F00081B200000400004081B2000004000040DA
5010:1039000081B200000400004081B2000004000040C9
5011:1039100081B200000400004081B2000004000040B9
5012:1039200081B200000400004081B2000004000040A9
5013:1039300081B200000400004081B200000400004099
5014:1039400081B200000400004081B200000400004089
5015:1039500081B200000400004081B200000400004079
5016:1039600081B200000400004081B200000400004069
5017:1039700081B200000400004081B200000400004059
5018:1039800081B200000400004081B200000400004049
5019:1039900081B200000400004081B200000400004039
5020:1039A00081B200000400004081B200000400004029
5021:1039B00081B200000400004081B200000400004019
5022:1039C00081B200000400004081B200000400004009
5023:1039D00081B200000400004081B2000004000040F9
5024:1039E00081B200000400004081B2000004000040E9
5025:1039F00081B200000400004081B2000004000040D9
5026:103A000081B200000400004081B2000004000040C8
5027:103A100081B200000400004081B2000004000040B8
5028:103A200081B200000400004081B2000004000040A8
5029:103A300081B200000400004081B200000400004098
5030:103A400081B200000400004081B200000400004088
5031:103A500081B200000400004081B200000400004078
5032:103A600081B200000400004081B200000400004068
5033:103A700081B200000400004081B200000400004058
5034:103A800081B200000400004081B200000400004048
5035:103A900081B200000400004081B200000400004038
5036:103AA00081B200000400004081B200000400004028
5037:103AB00081B200000400004081B200000400004018
5038:103AC00081B200000400004081B200000400004008
5039:103AD00081B200000400004081B2000004000040F8
5040:103AE00081B200000400004081B2000004000040E8
5041:103AF00081B200000400004081B2000004000040D8
5042:103B000081B200000400004081B2000004000040C7
5043:103B100081B200000400004081B2000004000040B7
5044:103B200081B200000400004081B2000004000040A7
5045:103B300081B200000400004081B200000400004097
5046:103B400081B200000400004081B200000400004087
5047:103B500081B200000400004081B200000400004077
5048:103B600081B200000400004081B200000400004067
5049:103B700081B200000400004081B200000400004057
5050:103B800081B200000400004081B200000400004047
5051:103B900081B200000400004081B200000400004037
5052:103BA00081B200000400004081B200000400004027
5053:103BB00081B200000400004081B200000400004017
5054:103BC00081B200000400004081B200000400004007
5055:103BD00081B200000400004081B2000004000040F7
5056:103BE00081B200000400004081B2000004000040E7
5057:103BF00081B200000400004081B2000004000040D7
5058:103C000081B200000400004081B2000004000040C6
5059:103C100081B200000400004081B2000004000040B6
5060:103C200081B200000400004081B2000004000040A6
5061:103C300081B200000400004081B200000400004096
5062:103C400081B200000400004081B200000400004086
5063:103C500081B200000400004081B200000400004076
5064:103C600081B200000400004081B200000400004066
5065:103C700081B200000400004081B200000400004056
5066:103C800081B200000400004081B200000400004046
5067:103C900081B200000400004081B200000400004036
5068:103CA00081B200000400004081B200000400004026
5069:103CB00081B200000400004081B200000400004016
5070:103CC00081B200000400004081B200000400004006
5071:103CD00081B200000400004081B2000004000040F6
5072:103CE00081B200000400004081B2000004000040E6
5073:103CF00081B200000400004081B2000004000040D6
5074:103D000081B200000400004081B2000004000040C5
5075:103D100081B200000400004081B2000004000040B5
5076:103D200081B200000400004081B2000004000040A5
5077:103D300081B200000400004081B200000400004095
5078:103D400081B200000400004081B200000400004085
5079:103D500081B20000AE9F00889AB00000AE9F00883C
5080:103D60009AB00000AE9F00889AB00000AE9F008815
5081:103D70009AB00000AE9F00889AB000000000008852
5082:103D80009AB00100AE9F414081320000B29F2240B4
5083:103D90007B6F00000000194081B20100AE9F00401F
5084:103DA00081B20000000019417BB30100000000A4B3
5085:103DB000C4B30100000000A1C6B3010000002FA29F
5086:103DC000C8B301000814004049990100A89F004DA4
5087:103DD0009ACC0100BB9F2640813200000000004CBD
5088:103DE00049C10100B99FA2419B500000BF9F808044
5089:103DF0008032000000005249FD9301000000004A9B
5090:103E0000FD930100C29F0042CD9300000000514A83
5091:103E1000FD93010000000049FD930100C29F004393
5092:103E2000CB9300000000504081B20100D29F0040BF
5093:103E300019990100000000F09AB001000000004450
5094:103E400049D10100000040F080B201000000414D66
5095:103E500080B20100CA9F00401999010000004C4047
5096:103E600081B201000000004449D10100000000F0CF
5097:103E70009AB001000000004D10B10000000000E207
5098:103E800049B10100000000E343B10100000000E47B
5099:103E900045B10100000000407BB301000000484F25
5100:103EA00040B10100D29F004081B2000004000040F8
5101:103EB00081B200000400004081B200000400004014
5102:103EC00081B200000400004081B200000400004004
5103:103ED00081B20000040000CB81C8010022830040B1
5104:103EE000F29300005582004081B20000400500407E
5105:103EF00081B200001806004081B200002283004019
5106:103F000081B20000C682004081B2000043810040BF
5107:103F100081B200004181004081B20000B8800040C1
5108:103F200081B20000F087004081B20000238300408E
5109:103F300081B200002783004081B20000BF9400409E
5110:103F400081B200009498004081B200007F9400404C
5111:103F500081B200007F98004081B200008D95004042
5112:103F600081B200001695004081B20000109500401B
5113:103F700081B20000B182004081B20000209900406F
5114:103F800081B200000400004081B200000400004043
5115:103F900081B200000400004081B200000400004033
5116:103FA00081B200000400004081B200000400004023
5117:103FB00081B200000400004081B200000400004013
5118:103FC00081B200000400004081B200000400004003
5119:103FD00081B200000400004081B2000004000040F3
5120:103FE00081B200000400004081B2000004000040E3
5121:103FF00081B200000400004081B2000004000040D3
5122:1040000081B200000400004081B2000004000040C2
5123:0440100081B2000079
5124:00000001FF
diff --git a/firmware/slicoss/oasisdownload.sys.ihex b/firmware/slicoss/oasisdownload.sys.ihex
deleted file mode 100644
index 82026c2cd957..000000000000
--- a/firmware/slicoss/oasisdownload.sys.ihex
+++ /dev/null
@@ -1,5124 +0,0 @@
1:1000000002000000004000000000010000000000AD
2:10001000008000001500004081B200001B0000407D
3:1000200081B200002100004081B2000003000040C6
4:1000300081B20000000000A898B001000480A24036
5:10004000FD7F00000900A249DD7D00000000004C9A
6:1000500080B2010007000040D1B100000000004C58
7:1000600080B201000900A240757D000060000040E0
8:10007000619901000B00A8B17E3100000900004029
9:1000800081B2000000808F981831000010000098A5
10:1000900080E40100000041988094010000000040CD
11:1000A00081B201001000009880E401000E00409829
12:1000B000809400001100004081B200000000004068
13:1000C000A59901001900294081320000190014BCD3
14:1000D000803200000E0093BC8032000000005040CF
15:1000E00081B201000080004081B200001000004099
16:1000F000A59901001F002940813200001F0014BC97
17:1001000080320000120093BC80320000000050409A
18:1001100081B201000180004081B200002000004057
19:10012000A59901002500294081320000250014BC5A
20:1001300080320000140093BC8032000000000049AF
21:10014000DD810100120100408132010033010040D5
22:10015000813201002A0014BC80320000FE0013BC72
23:10016000803200005495004045990100FFFF004097
24:10017000E599010000002F4049B101000000004056
25:10018000E1B1010000000040FDB3010000000040AB
26:10019000FFB30100330018EE803200000000005071
27:1001A00089B001003200A24189500000990000404E
28:1001B000813201003094004043990100000000F8B2
29:1001C00020B10100000000FAE0B30100390098EE10
30:1001D00080320000000000FB80B001003B0080F393
31:1001E000DE33000000000047FD9301003E0083F372
32:1001F00080320000F00000F38088010001800040A0
33:100200002EDD0100009400404399010000000046EB
34:1002100043C10100000000FA24B101007C0018EE87
35:1002200080320000450095E880320000FFFF00E8C2
36:10023000808801007C0026408132000000000040E0
37:10024000D5990100000000F2ECB30100000000F8B5
38:10025000D6B1010008000040D5990100000000F06F
39:10026000D6B10100FF0000F8EE8B0100080100404C
40:10027000D5990100FF0000F0808C0100000000F71C
41:100280008194010000000040D6B10100FF0000F899
42:10029000808801003C000040D5990100FF0000F07B
43:1002A000D68D0100FFFF00F0F0DB010000000048E8
44:1002B00081E00100000000F8819401003C01004051
45:1002C000D599010000000040D6B10100FF0000F800
46:1002D000808801000000004881E00100000000F873
47:1002E000819401003C020040D599010000000040CB
48:1002F000D6B101002C000040D5990100000000F8A3
49:10030000D6B101001E0000F082F40100FF3F00F8AA
50:1003100080D80100640026408132000000000041C6
51:1003200081D00100FFFF004080D8010000000041A3
52:100330008094010000000040D8B10100680022FA5A
53:10034000803000000000004C81E00100010000400E
54:1003500080CC010000000040DEB10100000100403F
55:10036000D5990100100000FA80E40100000000F6B9
56:100370008194010000000040D6B10100000200405D
57:10038000D5990100100000FA80E40100000000F699
58:100390008194010000000040D6B101000600004039
59:1003A000D5990100100000FBD6E5010007000040D0
60:1003B000D5990100180000FBD6E501004800004077
61:1003C000D5990100100000FAD6E501005000004068
62:1003D000D5990100100000FBD6E50100030000FBE9
63:1003E0007A890100000000F0DCB101007C00004CC3
64:1003F000DD9100007C0095E88430000000002FE9CA
65:10040000FAB3010000000040D1B10100FF0000423A
66:10041000808801003400004080CE01007C00A640AE
67:1004200081320000850000408132010002802240BC
68:10043000803200007C00004081B200000000004FCC
69:1004400081B001008E0009F9813200008C0008F9AA
70:100450008132000098001FFDF93300008B009EFDE3
71:10046000813200000000004AF39301000000804840
72:10047000F3930100000000FDF7B301000000804984
73:10048000F3930100000000FC19B1010093000AF988
74:1004900081320000000040FB81B20100000041FDFC
75:1004A00081B20100000780F9F38F0100000742F9D3
76:1004B000F38F01009700A2FFF76F00000000434098
77:1004C00081B201000000A2FFFBEF0000000080FCF1
78:1004D000E1B101000000804081B0010000940040C3
79:1004E00047990100BB000040813201000000A24694
80:1004F000FD7F01000094004047990100CE000040BC
81:10050000813201000000A244FD7F01000094004000
82:100510004599010000000040F1B10100FF7F00405B
83:10052000F5990100FF7F0040F59901009A13004002
84:10053000F599010007000040F59901000100004015
85:10054000F599010000020040F59901000200004009
86:10055000F599010000020040F599010003010040F7
87:10056000F599010000000040F59901009A13004040
88:10057000F59901000B000040F59901008000004052
89:10058000F599010000000040F599010000000040CD
90:10059000F599010007000040F599010008000040AE
91:1005A000F5990100B0020040F599010000000040FB
92:1005B000F599010000000040F59901000229004072
93:1005C000F599010000000040F59901000067004026
94:1005D000F599010000000040F599010080000040FD
95:1005E000F599010000008040F599010000000045E8
96:1005F000FD83010000000046FD830100FF7F0040F5
97:1006000025990100C4000040813201000000A2448D
98:1006100080B2000000000045FD930100E2000040B0
99:10062000833001000000A2458032010000008046B6
100:10063000FD9301000010004083980100DD000040A0
101:100640002B3101000000A24688B0000000000041EC
102:1006500089B00100000000948CB00100FFFF00464B
103:1006600080880100A5A5A24080CE000000000048BF
104:100670008DF00100C90082418940000000008040E7
105:1006800089B0010000000044FD830100D400004057
106:10069000813201000000A24480B20000E2000008A4
107:1006A000833001000000A245803201000000804438
108:1006B000FD93010000300008839801008000004095
109:1006C0002B990100DB000040893001000000A246A8
110:1006D00080B20000FFFF009480880100A5A5A24021
111:1006E000804E01000000804389B001000384004176
112:1006F0002C990100DE00004081B200000388004117
113:100700002C990100000000208DB0010000009F9690
114:1007100080B20000DF00A2418D5000000000804048
115:1007200081B20100FF7F0040259901000000004CCC
116:1007300089E00100DD000044821401000000909473
117:100740008AB0000000000045F0B101001000004533
118:1007500088F401000000004489D00100DD0000445D
119:100760002B410100EC00084180320000ED000094B4
120:1007700024B100001000009424F501000000009452
121:10078000F0B10100F200A04489500000DD000044F7
122:100790002B41010000000094F0B10100EF00204463
123:1007A000895000001000004588F40100000000FAA4
124:1007B0008AB001000000A34289D00000F700A0FA2F
125:1007C0008A400000000000418BC00100F500A342F8
126:1007D00089500000FFFF0045888801001000004597
127:1007E0008AF40100FC0090448A40000000000041AF
128:1007F0008BC00100FFFF00458AA801000000805067
129:100800008BE00100FF7F0040259901007C00004043
130:100810002B9901000030004083980100DD000008A2
131:1008200083140100000000942AB101000080004000
132:10083000F99B0100DD0000FC19310100000040942B
133:1008400080B20100DD0000442B4101000000419412
134:1008500080B2010000000041F9C301000000004423
135:100860002BC1010004019F948032000002800040EF
136:1008700081B200001001005193B000001001004D42
137:1008800093B000001001004993B000000000004246
138:1008900093B001001001A24193500000000080407D
139:1008A00081B201000000104081B20100000011403F
140:1008B00081B201000000124081B20100000013402B
141:1008C00081B201000000144081B201000000154017
142:1008D00081B201000000164081B201000000174003
143:1008E00081B201000000184081B2010000001940EF
144:1008F00081B2010000001A4081B2010000001B40DB
145:1009000081B2010000001C4081B2010000001D40C6
146:1009100081B2010000001E4081B2010000001F40B2
147:1009200081B201000000704081B2010000007140FE
148:1009300081B201000000724081B2010000007340EA
149:1009400081B201000000744081B2010000007540D6
150:1009500081B201000000764081B2010000007740C2
151:1009600081B201000000784081B2010000007940AE
152:1009700081B2010000007A4081B2010000007B409A
153:1009800081B2010000007C4081B2010000007D4086
154:1009900081B2010000007E4081B2010000007F4072
155:1009A00081B201000000804081B2010000040040DB
156:1009B000A199010000000050A1D1010000000040F9
157:1009C0001BB001000000004019B001000000004011
158:1009D00017B001000000004015B001000000004009
159:1009E00013B001000000004011B001000000004001
160:1009F0000FB00100000000400DB0010000000040F9
161:100A00000BB001000000004009B0010000000040F0
162:100A100007B001000000004005B0010000000040E8
163:100A200003B001000000004001B001003B0120487C
164:100A3000A15100000000804081B201004701224B1B
165:100A4000747D00000000804081B201006000004B16
166:100A500060990100000000B17EB101004801A8408A
167:100A6000813200004501004081B200000500804055
168:100A700097980100180000AA9688010000008043A2
169:100A800097F00100070000AA96880100000080404E
170:100A900081B201000000005807900100D89F00407B
171:100AA00081B2000000000044A5B30100D80200405C
172:100AB00081320100F8020040813201000000005C38
173:100AC00007900100D89F0040BFB300005A0122CC1C
174:100AD000857F00000000005107900100D89F004072
175:100AE00081B200000000004049B10100AE0300CB1C
176:100AF000A3C90100D0140040A19B01000000002008
177:100B000046B1010000000048F1B10100000000D032
178:100B1000F1B10100000000CAF1B10100000000D5F0
179:100B2000E1B10100070000406199010020000020B0
180:100B300062DD01006301A84081320000000000CCAA
181:100B400085930100F802004081320100D01400407A
182:100B500043990100000000FABAB30100000000FA56
183:100B6000A4B30100000000F8BCB3010000142F4042
184:100B700081B00100000000E7A7B30100000000D829
185:100B8000A9B30100FF0000DD8188010002000040E0
186:100B900080F401007301004080C80100860100DD7F
187:100BA000813200000000004010B1000087010040C9
188:100BB00081B200008801004081B20000890100403C
189:100BC00081B200008A01004081B200008B01004028
190:100BD00081B200008D01004081B200008F01004011
191:100BE00081B200005001004081B20000B601004017
192:100BF00081B200005001004081B20000C4010040F9
193:100C000081B20000C501004081B2000082020040B4
194:100C100081B200008302004081B22800B802004087
195:100C200081B22800D49F004081B22800D59F0040A7
196:100C300081B22800D69F004081B22800D79F004093
197:100C400081B228007201004181C02800550151493C
198:100C5000FD9328005501524AFD932A00550155493C
199:100C6000FD832A005501564AFD832A0050019181D7
200:100C700080302A005501454081B22A0050019182FE
201:100C800080302A005501464081B22A000000004011
202:100C900089B02B0000002F4081B0010000140040FB
203:100CA00049990100B30122DEE16D00000000004C13
204:100CB00049C101000000004181C001009201A2442D
205:100CC000816C00000000004C49D101009A012240D3
206:100CD000E16D00009601A2418150000050010041E9
207:100CE000BFB3000000000042BFB301005001A00FDD
208:100CF000BD6F0000000000DEE1B101000000004413
209:100D000049C10100B50100401999010000004240AD
210:100D100081B20100000043FF85B00100000000DE49
211:100D200019B10100000042FF87B00100000043FF3D
212:100D3000E1B101000000004449C1010000002FFFA3
213:100D4000E1B10100081400A480CC0100AA012640F2
214:100D5000813200000000004185C00100A801A24CC2
215:100D600081500000B40122D281320000AF01224143
216:100D7000A56F00005001A2E081320000000000D207
217:100D8000C1B301000000005C8990010000004042F6
218:100D900080B201000000414380B20100000000F079
219:100DA0008894010055010044E0B10000B101004801
220:100DB00049C10000AF01005B89900000A89F00A01E
221:100DC0009EB000000000004083B00100001400400D
222:100DD000499901000000234081B00100BE0122DEDC
223:100DE000E16D00000000004C49C10100000000411D
224:100DF00081C00100B901A244816C00005001004390
225:100E0000BFB30000000000F818B10100000040F876
226:100E100080B20100000041F080B2010000000040FB
227:100E2000F1B1010000000040F1B1010055010040A6
228:100E3000E1B10000C601004091B000000000004197
229:100E400091B00100D0142E4049B1010005000040CE
230:100E5000A39B0100080000DD81F40100CB010040EC
231:100E600080C801000000004010B10000D101004026
232:100E700081B00000530100DEA1B30000E301004097
233:100E800081B20000E501004081B00000EB010040AC
234:100E900081B20000520100DFE1B10000000000D08B
235:100EA000BAB30100000000DEA1B10100020000D2CF
236:100EB000A5E70100000000D2C1B30100000000005E
237:100EC000F0B10100DB012244C1530000DA0184418A
238:100ED00081400000DE01004081320100000000D0AE
239:100EE00045B10100D5010041A1C10000DA02004076
240:100EF00081320100F802004081320100550100DD1D
241:100F0000A1B100000000004081B00100400000409D
242:100F1000A59B0100DA02004081320100400000D3AD
243:100F2000A7CB0100F80200E0A5B3000003000040D9
244:100F3000A39B0100530100DEA1B3000000000044A8
245:100F4000BFB30100000000DE819001005001A2BA91
246:100F500080040000600000DE61990100E801A8B192
247:100F60008030000052010040E0B10000000000D0DD
248:100F7000BAB301006B020040819801006002004D8D
249:100F80008330010000000044E1B301000000004490
250:100F9000E3B3010000000044E5B301000000004499
251:100FA000E9B3010000000044EBB30100000000447D
252:100FB000F5B3010000000044F7B301000000004455
253:100FC000F9B30100F90122408F6F00007802004060
254:100FD00081980100600200C7833001008002004058
255:100FE000819801006002004283300100000000E8A7
256:100FF000F1B10100000000E9F1B10100000000EAD8
257:10100000F1B10100000000EBF1B10100000000852A
258:10101000F0B10100000000ECF1B10100000000EDB2
259:10102000F1B10100000000B2F0B10100000000A920
260:10103000F0B10100000000ACF0B10100000000AB15
261:10104000F0B10100000000B8F0B10100000000B9EB
262:10105000F0B10100000000BAF0B10100000000BBD7
263:10106000F0B101000C02B8408130000000000040E7
264:10107000819001000E02B940813200000000004161
265:10108000819001001002BA4081320000000000424D
266:10109000819001001202BB40813200000000004339
267:1010A000819001001402BC40813200000000004425
268:1010B000819001001602BD40813200000000004511
269:1010C000819001001802BE408132000000000046FD
270:1010D000819001001A02BF408132000000000047E9
271:1010E000819001001C02C8408132000000000048CD
272:1010F000819001001E02C9408132000000000049B9
273:10110000819001002002CA40813200000000004AA4
274:10111000819001002202CB40813200000000004B90
275:10112000819001002402CC40813200000000004C7C
276:10113000819001002602CD40813200000000004D68
277:10114000819001002802CE40813200000000004E54
278:10115000819001002A02CF40813200000000004F40
279:10116000819001002C02F04081320000000000500C
280:10117000819001002E02F1408132000000000051F8
281:10118000819001003002F2408132000000000052E4
282:10119000819001003202F3408132000000000053D0
283:1011A000819001003402F4408132000000000054BC
284:1011B000819001003602F5408132000000000055A8
285:1011C000819001003802F640813200000000005694
286:1011D000819001003A02F740813200000000005780
287:1011E000819001003C02F84081320000000000586C
288:1011F000819001003E02F940813200000000005958
289:10120000819001004002FA40813200000000005A43
290:10121000819001004202FB40813200000000005B2F
291:10122000819001004402FC40813200000000005C1B
292:10123000819001004602FD40813200000000005D07
293:10124000819001004802FE40813200000000005EF3
294:10125000819001004A02FF40813200000000005FDF
295:101260008190010000000040F0B10100400000400A
296:10127000A59B0100D802004081320100F802004025
297:1012800081320100D0142E06A5B30100400000D326
298:10129000A7CB0100000000F0F1B10100000000F157
299:1012A000F1B10100000000F2F1B10100000000F412
300:1012B000F1B10100000000F5F1B10100000000FAF9
301:1012C000F1B10100000000FBF1B10100000000FCE1
302:1012D000F1B10100000000EBF1B10100000000EEEF
303:1012E000F1B10100000000EFF1B10100000000F3D6
304:1012F000F1B10100000000F6F1B10100000000FDB5
305:10130000F1B10100DB0100C7E1B100000000804045
306:1013100081B20100660200488032000000005140A6
307:101320001AB1010000004D4081B2010000004540AB
308:1013300081B201006302A241835000005F02494074
309:1013400081B20000000052401CB1010000004E407C
310:1013500081B201000000464081B201006802A24152
311:10136000835000005F024A4081B20000000000A0EC
312:101370009EB0010000000080D8B30100000000A171
313:10138000D0B30100000000A2D2B30100000000A40D
314:10139000D4B30100000000D0D6B30100000000D19A
315:1013A000DCB30100000000D2DEB3010000000088C1
316:1013B000DAB30100000000D48EB30100000000D3B6
317:1013C000E6B30100000000ACECB30100000000999E
318:1013D000FAB30100000000D5E0B30100000000D521
319:1013E000E2B30100000000D5E4B30100000000D525
320:1013F000E8B30100000000D5EAB30100000000D509
321:10140000F4B30100000000D5F6B30100000000D5E0
322:10141000F8B30100000000C7A9B101000000004FAF
323:1014200040B101008402004091B000000000004182
324:1014300091B0010007000040A39B0100080000DDFF
325:1014400081F401008802004080C8010000000040D3
326:1014500010B100008D02004081B2000098020040EF
327:1014600081B2000098020046A3B300009B02004036
328:1014700081B20000A102004081B200008F0223501F
329:10148000A56F000000000050A5B30100E802004273
330:10149000A5630100F802004081320100D0142D4004
331:1014A00049B10100000000D0BAB30100000000DE25
332:1014B000A1B10100000000F800B001009702224431
333:1014C000A553000094020041A1C10000550100DDB8
334:1014D000A1B10000E80200DEA1330100F8020040E3
335:1014E000813201005501004081B20000000000453A
336:1014F000BFB301005001A2D2777D0000000000D2EE
337:1015000061B10100000000DE63B101009E02A8404D
338:10151000813200005501004081B20000E802005411
339:10152000A5330100F802004081320100D0142D40A3
340:1015300049B10100000000F8D0B30100000000F83C
341:10154000D2B30100000000F8D4B30100000000F89D
342:10155000D6B30100000000F808B10100AC02004061
343:10156000819801006002004683300100550100406F
344:1015700081B20000000000A09EB00100000000E861
345:1015800043B10100000000E945B10100000000EA9C
346:1015900049B10100000000EBA1B101000000004FC3
347:1015A00040B101000400004081B20000040000408E
348:1015B00081B200000400004081B20000040000403D
349:1015C00081B200000400004081B20000040000402D
350:1015D00081B20000D0142E4049B101000500004046
351:1015E000A39B010000000040C1B30100080000DD22
352:1015F00081F40100BD02004010C90000C3020005D3
353:1016000081B000005001004081B20000CB02000513
354:1016100081B000005001004081B20000D0020044BF
355:10162000A5B30000D2020044A5B3000002000040B0
356:10163000A4E70100000000E081B10100FFFF00C14C
357:10164000F0890100C802224181500000C40200411B
358:10165000C1C30000DA02004081320100F8020040FC
359:10166000813201005501004081B2000002000040BB
360:10167000A4E70100000000E091B10100FFFF00C9F4
361:10168000F0890100C802224181500000CC020041D3
362:10169000C1C30000FFFF00DE85890100C80200C24F
363:1016A000E0B10000FFFF00DE95890100C80200CA1A
364:1016B000E0B100000400004081B2000004000040DE
365:1016C00081B200000400004081B20000040000402C
366:1016D00081B20000000000E7A7B30100000000D8BD
367:1016E000A9B301000000004049B10100AE0300CBE6
368:1016F000A3C901000000002046B10100000000D293
369:10170000F1B10100000000D3F1B10100000000D4EC
370:10171000F1B10100000000D0E1B10100000000D1F2
371:1017200061B101002000002062DD0100E202A8405A
372:1017300081320000000080CC85930100040000404D
373:1017400081B200000400004081B2000004000040AB
374:1017500081B20000000000E7A7B30100000000D83C
375:10176000A9B301000000004049B10100AE0300CB65
376:10177000A3C901000000002046B10100000000D212
377:10178000F1B10100000000D0F1B10100000000D370
378:10179000F1B10100E10200D4E1B100000400004019
379:1017A00081B200000400004081B20000040000404B
380:1017B00081B200000400004081B20000040000403B
381:1017C00081B200000400004081B20000040000402B
382:1017D00081B200000000A2CC85FF00000000005094
383:1017E00081B00100FA02A24181500000F902A2F288
384:1017F00080300000000080CC8583010004000040A0
385:1018000081B200000400004081B2000004000040EA
386:1018100081B20000B5030040A199010000002F41F2
387:1018200099B301000A032244816C0000120322488C
388:10183000816C00000C03224C816C000016032250C6
389:10184000816C000017032254816C00001903225898
390:10185000816C00001E03225C816C0000500100407E
391:1018600081B20000000000BC09B00100DD9F00CA89
392:1018700001B000000000004003B001000000004182
393:10188000F38301001003A242056C00000000004138
394:1018900005B00100DD9F22CA07140000DD9F00454E
395:1018A000F3930000DD9F2043956F0000DD9F80CA09
396:1018B00005300000DD9F220180300000DD9F00CB5D
397:1018C000DB910000570100BCABB30000000000BC7E
398:1018D000B1B30100DD9F00CACFB30000FF0000CA12
399:1018E00081880100DD9FA240747D000060002040DF
400:1018F000609901001B03A8B1823000001A03004068
401:1019000081B20000DD9F00CA79B3000004000040EE
402:1019100081B200000000004E81B0010000000043D1
403:10192000CB8301000000454081B201002203A241A7
404:10193000815000000000454081B201000000454098
405:1019400081B201002D039182823000000000008AE4
406:1019500080B00100AE9F004080CE01002B03A64066
407:10196000813200002D03564081B20000B5030040D3
408:10197000A19901000000005307900100B503004049
409:10198000A19901000000005207900100D89F00417A
410:101990008BB300000000004E81B001000000004247
411:1019A000CD8301000000464081B201003203A24114
412:1019B000815000000000464081B201000000464016
413:1019C00081B201003D039181823000000000008956
414:1019D00080B00100AE9F004080CE01003B03A640D6
415:1019E000813200003D03554081B20000B503004044
416:1019F000A19901000000005207900100B5030040CA
417:101A0000A19901000000005307900100D89F0041F8
418:101A10008BB30000B0030040A1990100C4142F4013
419:101A200099B301005701004049B100000400004093
420:101A300081B200000400004081B2000004000040B8
421:101A400081B200000400004081B2000004000040A8
422:101A500081B200003094004043990100009000F8EA
423:101A600080980100100000F288E40100200000408E
424:101A7000209901000000005F239101004D031F9198
425:101A80008032000030000040209901000000005F1B
426:101A90002391010050031F9180320000400000405C
427:101AA000209901000000005F2391010053031F9162
428:101AB000803200000000005F2391010055031F9158
429:101AC000803200000008804020990100040000409E
430:101AD00081B200000000004784B001000000A2486D
431:101AE000848400000000005F61B101000000005C20
432:101AF0008F9001000000004762B101005A03A84026
433:101B000081320000000800478EC801005803005CC5
434:101B10008F800000E00000406199010058152D40C1
435:101B20008DB00100D0142DF088B00100000000FA43
436:101B30008AB001000000004581B0010007000045A7
437:101B400082880100000000438BF001000000004883
438:101B500083E0010000000046829401002000004163
439:101B600060990100000000418DC001007403225FF4
440:101B70008D6C00006503A2418150000063030040AA
441:101B800081B2000008000040859801000000004478
442:101B900082B001000000004186B00100001C00433B
443:101BA00086D801000000A641855001007003004165
444:101BB00083E000006E030040813201000000004815
445:101BC00085E00100D0142F468494010020000042DB
446:101BD00060990100C0000040619901000000804050
447:101BE00081B201000400004081B200000400004006
448:101BF00081B200000400004081B2000004000040F7
449:101C000081B200000400004081B2000004000040E6
450:101C100081B20000070000458088010000000043F9
451:101C20008BF0010000040040839801008503A0416F
452:101C3000815000008303004182E8000000008041E1
453:101C40008EC001000400004081B20000040000408A
454:101C500081B200000000004049B1010000020040D4
455:101C600083980100003900404599010000000040C0
456:101C7000F1B101008B03A24183500000000000403D
457:101C800085B001000B00004482F401001A1500A683
458:101C900086B0010070150040459901000008004021
459:101CA000F199010000000042F0B10100003900404C
460:101CB000E1990100040000406199010070150043A2
461:101CC000629901009503A840813200009703225ACF
462:101CD000737D00007A000040619901009803A8B16B
463:101CE0007E3100000008004284C801009003A24138
464:101CF000835000000000804081B2010004000040D9
465:101D000081B200000400004081B2000004000040E5
466:101D100081B2000058152D408DB00100D0142DF077
467:101D200088B00100000000408FB00100010000A653
468:101D300090B0010000F800489098010000000045B4
469:101D400093B00100000000FA8AB001008003004057
470:101D500081320100020000A680B00100AC032240E5
471:101D6000826C0000B0030040813201005803004043
472:101D700081320100000000418DC00100B503225FE7
473:101D80008D6C0000A703A24193500000A503004002
474:101D900081B20000FF070047848801000000A640D0
475:101DA00081B20000ED9F0047803001000002004733
476:101DB0008EC80100B003004081B200000000004462
477:101DC00050B30100BB032018896C0000040000A67A
478:101DD00084B00100200000A686B001000010004081
479:101DE000559B0100BE03004081B20000040000A624
480:101DF00084B00100200000A686B001000010004061
481:101E0000559B01000000004250D30100000000A8D3
482:101E10004FB30100000000434ED301006E030040A9
483:101E2000813201008203004280300100B003004093
484:101E300081320100C70322A78F6C00005A030040C3
485:101E400081320100C403004081B2000000008040E4
486:101E500081B20100C8142EBB85B00100000000EE65
487:101E600082B0010000000041E0B10100000000A2CA
488:101E7000A0B3010000000044A5B30100E19F00CA27
489:101E8000A7330100E09F004081B200000400004041
490:101E900081B20000D6032242756F0000D8032241B0
491:101EA000756F0000DA031ECA81320000DC031FCA0E
492:101EB00081320000000000CAC9B10100DD9F00426C
493:101EC00075B30000000000CACDB10100DD9F0041E4
494:101ED00075B30000000000CACFB10100DD9F0040D3
495:101EE00075B30000008100A6C6B10100DD9F00406F
496:101EF00081B20000008000A6C6B10100DD9F004055
497:101F000075B300000400004081B2000004000040EE
498:101F100081B200004501004D933001004501004EA3
499:101F2000933001004501004C93300100EC9F0040CC
500:101F300081320100DD9F004081B2000004000040BA
501:101F400081B200000400004081B2000004000040A3
502:101F500081B200005495004045990100DD9F00CA00
503:101F6000E5B100000400004081B200000400004020
504:101F700081B200000400004081B200000400004073
505:101F800081B200000400004081B200000400004063
506:101F900081B20000CC142E4087B00100000000A2E6
507:101FA000A0B3010015040043B2330100000068DA59
508:101FB00089B001007C0000408B98010000000050B7
509:101FC00089F001000000004189D0010003000044B5
510:101FD000888C01000000004487C00100000000411F
511:101FE000A5B3010015040043B2330100000000DA7C
512:101FF000F1B101000000004487C001000000004171
513:10200000A5C301000B042244895000000B042244A4
514:102010008B500000FA03A250A56F000000000042A0
515:10202000A5E30100000000CAA7B30100E19F00BBC7
516:1020300085300100CC142ED295C30100AE0300CB35
517:10204000A3C901000000002042B1010000000050BF
518:1020500081B001000804A241815000000704A2F2EF
519:1020600080300000FA030040A5B3000000000042E9
520:10207000A5E30100000000CAA7B30100E19F00BB77
521:1020800085300100E09F004081B200000400004064
522:1020900081B20000000000D92BB101000010004007
523:1020A00083980100DB00004081320100FFFF0094B3
524:1020B000B48B01000000804081B20100000000D913
525:1020C0002BB101000010004083980100DD000040AA
526:1020D0008132010000008094B4B30100040000408C
527:1020E00081B200000400004081B200000400004002
528:1020F00081B200000400004081B2000004000040F2
529:1021000081B200000400004081B2000004000040E1
530:1021100081B20000000000D92BB10100000000DAFC
531:1021200027B1010006C000402D990100DE000040EB
532:1021300081320100001000408398010002C4004178
533:102140002C990100DE000040813201000040004077
534:1021500083980100058200412C990100DE000040B7
535:10216000813201002D048094803200000C01004077
536:10217000813201002804004081B200000480004048
537:102180002D990100DE0000408132010000008040F6
538:1021900081B201003104001210C9000000488040E3
539:1021A0000B980100C04980400B980100804B804093
540:1021B0000B980100404D80400B980100004F80407B
541:1021C0000B980100C05080400B9801008052804065
542:1021D0000B980100405480400B980100005680404D
543:1021E0000B980100C05780400B9801008059804037
544:1021F0000B980100405B80400B980100005D80401F
545:102200000B980100C05E80400B9801008060804008
546:102210000B980100406280400B98010000648040F0
547:102220000B980100C06580400B98010080678040DA
548:102230000B980100406980400B980100006B8040C2
549:102240000B980100C06C80400B980100806E8040AC
550:102250000B980100407080400B9801000072804094
551:102260000B980100C07380400B980100807580407E
552:102270000B980100407780400B9801000079804066
553:102280000B980100C07A80400B980100807C804050
554:102290000B980100407E80400B9801000400004034
555:1022A00081B200000400004081B200000400004040
556:1022B00081B200000400004081B200000400004030
557:1022C00081B200000400004081B200000400004020
558:1022D00081B200005904001210C900000080804043
559:1022E0000B980100008280400B9801000084804020
560:1022F0000B980100008680400B9801000088804008
561:102300000B980100008A80400B980100008C8040EF
562:102310000B980100008E80400B98010000908040D7
563:102320000B980100009280400B98010000948040BF
564:102330000B980100009680400B98010000988040A7
565:102340000B980100009A80400B980100009C80408F
566:102350000B980100009E80400B98010000A0804077
567:102360000B98010000A280400B98010000A480405F
568:102370000B98010000A680400B98010000A8804047
569:102380000B98010000AA80400B98010000AC80402F
570:102390000B98010000AE80400B98010000B0804017
571:1023A0000B98010000B280400B98010000B48040FF
572:1023B0000B98010000B680400B98010000B88040E7
573:1023C0000B98010000BA80400B98010000BC8040CF
574:1023D0000B98010000BE80400B98010004000040F3
575:1023E00081B200000400004081B2000004000040FF
576:1023F00081B200000400004081B2000004000040EF
577:1024000081B200000400004081B2000004000040DE
578:1024100081B200000000004087B1010000000040D0
579:1024200097B001000000004B80B10100010000A640
580:1024300082B1010082048541974000000000004005
581:1024400097B101000000004097B001000000004B70
582:1024500090B10100010000A692B1010087048541FE
583:10246000974000000000804081B20100040000405D
584:1024700081B200000400004081B20000040000406E
585:1024800081B200000400004081B20000040000405E
586:1024900081B2000090046040813200000000001210
587:1024A00080B10100FFFFF04B82890100930460407E
588:1024B000813200000000004A80B101000100F0A656
589:1024C00082B101009604604081320000FFFF004BA2
590:1024D000848901000000F0C224B001000000004A1D
591:1024E00090B10100FFFF804B928901000000004A7B
592:1024F00090B10100010080A692B10100FFFF004BE6
593:1025000094890100000080CA94B0010004000040DA
594:1025100081B200001000004E98E4010000000007A6
595:10252000989401000000004399E001000000008041
596:10253000989401000000004999E001000000004C5F
597:1025400088940100A604474081320000AD04222097
598:10255000876F000000001F4081B2010000000040B2
599:1025600081B201000000004081B201000000004083
600:1025700081B20100A604004081B2000000001F806B
601:1025800086B30100B004224F777D0000C0040040F4
602:10259000813201000000004F61B1010000000044E1
603:1025A00062B10100B104A84081320000B804224B9E
604:1025B000897C0000B604224F777D0000C0040040F3
605:1025C000813201000000004562B10100B604A8405C
606:1025D000813200000000802087B301000400004029
607:1025E00081B200000400004081B2000004000040FD
608:1025F00081B200000400004081B2000004000040ED
609:1026000081B200000400004081B2000004000040DC
610:1026100081B200000000005099B001006F0000403E
611:1026200061990100C104A8B152330000C604224BD5
612:10263000537F00006F00004061990100C404A8B1FD
613:102640007E310000C104A241995000000000A24F59
614:1026500077FD00000400004081B20000040000404B
615:1026600081B200000400004081B20000040000407C
616:1026700081B200000400004081B20000040000406C
617:1026800081B200000400004081B20000040000405C
618:1026900081B200001000004E98E401000000000725
619:1026A000989401000000004399E0010000000080C0
620:1026B000989401000000004899E00100D604004C05
621:1026C00088940000D604474081320000DD042220B7
622:1026D000876F000000001F4081B201000000004031
623:1026E00081B201000000004081B201000000004002
624:1026F00081B20100D604004081B2000000001F80BA
625:1027000086B30100E004224F777D0000F004004012
626:10271000813201000000004F61B10100000000445F
627:1027200062B10100E104A84081320000E804224ABD
628:10273000897C0000E604224F777D0000F004004011
629:10274000813201000000004562B10100E604A840AA
630:10275000813200000000802087B3010004000040A7
631:1027600081B200000400004081B20000040000407B
632:1027700081B200000400004081B20000040000406B
633:1027800081B200000400004081B20000040000405B
634:1027900081B200000000005099B001006F000040BD
635:1027A00061990100F104A8B152330000F604224AF5
636:1027B000537F00006F00004061990100F404A8B14C
637:1027C0007E310000F104A241995000000000A24FA8
638:1027D00077FD00000400004081B2000004000040CA
639:1027E00081B200000400004081B2000004000040FB
640:1027F00081B200000400004081B2000004000040EB
641:1028000081B200000400004081B2000004000040DA
642:1028100081B200007B000040619901000005A8B171
643:102820008030000012051D4080320000401800403A
644:1028300049990100040000A686B001001005A240DD
645:1028400086040000DE9F9C4080320000FFFF0040B5
646:1028500088880100300500504731010036000044EF
647:1028600088CC01000C055240813200003005004048
648:10287000473101000000004189B0010030050048E7
649:10288000473101003005000547310100DE9F00405F
650:1028900081B200002800004047991B00DE9F0041E4
651:1028A000E1C11A007818004049991B00190522540B
652:1028B000817C1A001405424081321A00008200B364
653:1028C00067DF1B0000001A4493931B0028000040A0
654:1028D00047991B00300500418930010027050F4052
655:1028E00080320000FF7F00408888010030050050E2
656:1028F000473101003600004488CC01001F05994093
657:10290000803200000000004889D0010021059B4072
658:10291000803200000000004C89D0010023051F44D4
659:1029200080320000300500404731010000000041C6
660:1029300089B00100300500484731010030050058DA
661:1029400047310100DE9F004081B2000010000040CE
662:1029500086F401006F00004386880100DE9F260593
663:10296000473100003005004189300100DE9F004002
664:1029700081B200000400004081B200000400004069
665:1029800081B200000400004081B200000400004059
666:1029900081B200000000A044F041010000000040AE
667:1029A00081B2010000008041E1C10100040000404B
668:1029B00081B200000400004081B200000400004029
669:1029C00081B200000400004081B200000400004019
670:1029D00081B200004C010007913001000000A240CC
671:1029E00097EC00000000800591C001000400004049
672:1029F00081B200000400004081B2000004000040E9
673:102A000081B200000400004081B2000004000040D8
674:102A100081B200004C010040813201004405A24017
675:102A2000976C00003A000040B39B01004505004050
676:102A300081B2000040000040B39B01001004004040
677:102A400081320100000000DAF5B1010010040042FB
678:102A5000B3430100000000DAF5B1010010040042A8
679:102A6000B3430100000000DAF5B101004E00004060
680:102A7000B39B01001004004081320100080000DA1D
681:102A8000F7F5010050000040919801000000004758
682:102A90008FB0010010040048B2330100000000DADA
683:102AA000F7B10100080000DAF7F50100000000426C
684:102AB00091C001005005A2418F500000000000416C
685:102AC00045D1010008000040B39B01001004004004
686:102AD00081320100000000DAFDB101000A0000406F
687:102AE000B39B01001004004081320100000000DAB5
688:102AF000FDB101001A000040B39B0100100400402A
689:102B000081320100000000DAFDB101001800004030
690:102B1000B39B01001004004081320100000000DA84
691:102B2000FDB1010038050040813201001E0000485F
692:102B3000B2CB01001004004081320100000000DA35
693:102B400091C0010000000048B2CB01001004004019
694:102B50008132010000006EDA8FB0010002000048EF
695:102B6000B2CB01001004004081320100000000DA05
696:102B7000FDB1010004000048B2CB01001004004088
697:102B800081320100000080DAFDB101000400004044
698:102B900081B200007A052245FD7F0000401600400A
699:102BA00045990100DB9F00404931010008000048C1
700:102BB000B2CB010015040040813201007805A2402B
701:102BC0008F6C00007D052220B56F00007A05004063
702:102BD00081B20000DA9F004081321F007D05224053
703:102BE000976C1E007A05424081321E000000004FA3
704:102BF00067931F00DF9F005867931E005416004024
705:102C000047991F00000000FEF4B11F0000000040C3
706:102C100081B21F00000000FEF4B10100000000407E
707:102C200081B20100000000FEF4B10100000000408C
708:102C300081B20100000000FEF4B10100000000407C
709:102C400081B20100000000FEF4B10100000000406C
710:102C500081B20100000000FEF4B10100000000405C
711:102C600081B20100000000FEF4B101004600004006
712:102C7000B39B01001004004081320100080000DA1B
713:102C8000F7F501004800004095980100000000445D
714:102C900097B001001004004AB2330100000000DACE
715:102CA000F7B10100080000DAF7F50100000000426A
716:102CB00095C001009005A241975000002A000040F5
717:102CC000A59B010040160040A19B0100000000CA26
718:102CD000A7B30100E19F00BB85300100E09F0040E9
719:102CE00081B200000400004081B2000004000040F6
720:102CF00081B200000400004081B2000004000040E6
721:102D000081B200000400004081B2000004000040D5
722:102D100081B20000B8052245FD7F0000E0150040AB
723:102D2000479901001A0000A280DC01000000005059
724:102D3000F1B10100F0150040F1990100000000CA56
725:102D4000F1B101000700004061990100200000403E
726:102D500062DD0100A705A8BBE131000000000050C2
727:102D600083B00100AA05A24183500000A905A2F288
728:102D7000823000004C01004081320100B005A240C9
729:102D8000976C00003A000040B39B0100B105004081
730:102D900081B2000040000040B39B0100F0150040EC
731:102DA000439901001004004081320100B805A2FAE5
732:102DB000B46F000010040042B3430100B805A2FA4A
733:102DC000B46F000010040042B3430100BB0522FAB7
734:102DD000B46F0000B8054240813220000000004E70
735:102DE00067932100DF9F0058679320004016004042
736:102DF00045992100DB9F004049312100F615004034
737:102E0000439921005C1600404599210000006EFAAC
738:102E10008EB021000000004081B20100000000FEE1
739:102E2000F4B101000000004081B20100000000FE8A
740:102E3000F4B101000000004081B20100000000F088
741:102E4000B4B30100C905A2408F6C0000FC1520201E
742:102E5000E1B10100CE05004081B22400DA9F0040BC
743:102E600081322500CE052240976C2400CB054240DC
744:102E7000813224000000004F67932500DF9F005837
745:102E80006793240038050040813225001E00004869
746:102E9000B2CB25001004004081320100D30522503E
747:102EA000B56F00000000005091C001000000004814
748:102EB000B2CB0100F615004043990100200400F256
749:102EC000B433010002000048B2CB0100F815004005
750:102ED00043990100200400F2B433010004000048CB
751:102EE000B2CB0100FA15004043990100200400F222
752:102EF000B433010008000048B2CB0100FC150040CB
753:102F000043990100000000F094B00100FFFF004A67
754:102F1000B48B010020040040813201000A00004807
755:102F2000B2CB01001000004AB4F7010020040040B9
756:102F30008132010038050040813201001E00004846
757:102F4000B2CB01001004004081320100E90522509B
758:102F5000B56F0000EA050050B5B300000000004066
759:102F6000B5B301002004004081320100E09F004021
760:102F700081B200000400004081B200000400004063
761:102F800081B200000400004081B200000400004053
762:102F900081B2000000160040479901003031004026
763:102FA000F599010032330040F599010034350040B5
764:102FB000F599010036370040F59901003839004095
765:102FC000F599010041420040F59901004344004059
766:102FD000F599010045460040F59901004748004039
767:102FE000F5990100494A0040F59901002C00004084
768:102FF0008398010000000040F7B10100FC05A241E8
769:103000008350000080162E0683B00100360000FBBE
770:10301000F6A90100FF05A2418350000022000040F4
771:1030200083980100000000FBF6B101000206A241F6
772:10303000835000006200004095980100DC9F004032
773:103040008132010000162D0683B001008016004079
774:10305000459901005C0000FBF6A901000806A241A9
775:103060008350000000000070F9B101000000007101
776:10307000F9B1010000000072F9B101000000007315
777:10308000F9B1010000000074F9B1010054000040E2
778:1030900095980100DC9F0040813201000000007023
779:1030A00095B0010014062270B56F00000000804149
780:1030B00097B001000000804097B00100040000407C
781:1030C00081B200000400004081B200000400004012
782:1030D00081B20000456700A6E0B201000123007044
783:1030E000E19A0100CDEF00A6E2B2010089AB0071C8
784:1030F000E39A0100BA9800A6E4B20100FEDC007277
785:10310000E59A0100321000A6E6B201007654007381
786:10311000E79A0100D2C300A6E8B20100F0E1007412
787:10312000E99A01008016004A44C901000000000726
788:1031300081B001000000004A80D001000000004082
789:10314000F7B101002506A241815000008016004A17
790:1031500044C90100FC162A47E7B501000300004AF4
791:10316000E8E50100000000408DB001005003004080
792:10317000A399010080163D468DE00100000000503B
793:1031800089B00100000000FC40B0010000000041D7
794:10319000A3C101002E06A24189500000000000706A
795:1031A000EBB2010000000071EDB2010000000072FE
796:1031B000EFB2010000000073F1B2010000000074E2
797:1031C000F3B201000000004083B001000F00004195
798:1031D0008088010050030040A2C901004B06A050A6
799:1031E000836C00000D00004098C801000000004FF3
800:1031F000998401005003004CA2C901000000002086
801:1032000086B001000800004098C801000000004F8F
802:10321000998401005003004CA2C901000000002065
803:1032200086A401000200004098C801000000004F81
804:10323000998401005003004CA2C901000000002045
805:1032400086A4010050030040A2C901000000004311
806:1032500040A401000100002088E401000000005F9C
807:1032600041F0010000000044409401000500007599
808:1032700089E401001B00007585F401000000004492
809:10328000849401005506A353836C0000000000766F
810:1032900089B00100000000778984010000000076F9
811:1032A0008BB00100000000208BA40100000000781A
812:1032B0008B840100640600458894000027000041CB
813:1032C00080CE01005A06AA4081320000000000763C
814:1032D00089B001000000007789A40100640600782D
815:1032E00089A400003B00004180CE01005706AA409F
816:1032F000813200000000007689B0010000000077F4
817:1033000089840100000000768BB001000000007885
818:103310008B840100000000458894010000000077C4
819:103320008BB00100000000788B840100640600452A
820:10333000889400000000004484C00100000000796F
821:1033400085C001000000002084C001006B06A3536B
822:10335000836C0000825A00A684C001009979004263
823:1033600084C801007806004081B2000027000041B7
824:1033700080CE01007006AA4081320000D96E00A6FE
825:1033800084C00100A1EB004284C80100780600401F
826:1033900081B200003B00004180CE01007506AA40CA
827:1033A000813200001B8F00A684C00100DCBC0042FB
828:1033B00084C801007806004081B2000062CA00A6FD
829:1033C00084C00100D6C1004284C8010078060040D4
830:1033D00081B2000000000078F3B201000000007725
831:1033E000F1B201001E00007689E4010002000076BF
832:1033F000EFF6010000000044EE96010000000075A9
833:10340000EDB2010000000042EAB2010000000041FC
834:1034100083C001004F00004180CE010037062A40E2
835:103420008132000000000075E1C20100000000765A
836:10343000E3C2010000000077E5C20100000000784F
837:10344000E7C2010000000079E9C201002B068141BA
838:103450008D4000000000804081B201000400004067
839:1034600081B200000400004081B20000040000406E
840:1034700081B200000400004081B20000040000405E
841:1034800081B200000400004081B20000040000404E
842:1034900081B2000000000050FD9301004016004082
843:1034A00045990100DB9F00404931010008000048B8
844:1034B000B2CB01001504004081320100B906224060
845:1034C0008F6C0000DA9F004081320100B906A240F3
846:1034D000976C00005E160040439901007C1620F6B0
847:1034E000E0B101000000004031B301009D06224F11
848:1034F0008F7C000000000051FD9301009F062240D8
849:103500008F7C0000A3060054FD930000A106224218
850:103510008F7C000000000052FD930100A3062241B1
851:103520008F7C000000000053FD930100B70622517C
852:10353000FD7F000038050040813201000C0000488A
853:10354000B2CB01001004004081320100B206A2405B
854:10355000B56F00001E000048B2CB01001004004807
855:1035600096300100000000DA97C001000400004B13
856:10357000B2CB010010040040813201000E0000486F
857:10358000B2CB010020040040813201000C00004851
858:10359000B2CB010000000030B5B3010020040040B0
859:1035A000813201000E000048B2CB0100100400403F
860:1035B00081320100B6062240B56F0000BA06005401
861:1035C000FD93000000000051FD8301001C0000FE7F
862:1035D0007FD90100BA06A6408132000000000055E4
863:1035E000FD9301000000804081B201000400004012
864:1035F00081B200000400004081B2000004000040DD
865:1036000081B200000400004081B2000004000040CC
866:1036100081B20000E79F004081320100C406225CB5
867:103620001F7C0000E39F00881CB00000E99F005C45
868:103630001F00010000002E0548B1010000000040FD
869:10364000E1B1010004002D0348B10100000000F0C9
870:103650003CB001002800001402C801000000000175
871:1036600034B0010000002D0532B001002200000539
872:103670000AC801001000000348C90100000000F85A
873:1036800018B00100000000F804B00100000000F8CC
874:103690000EB001000C0000A40CC80100EA9F00401D
875:1036A000813201000000004023B001000A0722011E
876:1036B0008032000000003C4423E0010000002EA402
877:1036C00080B001000000001048C10100D906A30726
878:1036D000026C0000DA0668011AB0000000006807FA
879:1036E0001AB001000000000D02D00100000000052A
880:1036F000F0B101000000000CF0B101000000000278
881:10370000E0B101000000000D0AC00100EC062240FB
882:10371000036C0000E6062242236C0000000000411A
883:1037200023C001000000004761B10100200000A497
884:1037300062DD01002307284081320000E3060040DB
885:1037400081B200000000001080C0010000000047AE
886:1037500061B101000000004062B10100E806A8402C
887:1037600023300000E39F00881CB0000023070040C6
888:1037700081B200000000001080C00100000000477E
889:1037800061B101000000004062B10100EE06A840F6
890:1037900023300000E39F00881CB0000022000019C5
891:1037A00048C9010000002D1448C101000F0000F2BB
892:1037B0003A880100000000423BE001000E000014C6
893:1037C00002C801000000001D02C00100FA06231A11
894:1037D000025000000000004603C001002307000162
895:1037E00034C000000C002D1D48C10100F00000F2A3
896:1037F000308801000000004231F001000000001498
897:1038000002B001000000001D02C00100000000180D
898:1038100002C001000207221A025000002307000123
899:1038200034C000002200001948C9010002002D1414
900:1038300048C10100000000F614B001000000001DA6
901:1038400014D001000000001814D001000000001E78
902:1038500024B001001200001710C801002307001A4D
903:1038600010C0000000003C4423E00100000000A460
904:1038700086B0010000002E1048C101000F07A312FE
905:103880000E6C0000100760071AB000000000601204
906:103890001AB001000000680D16940100FFFF000B34
907:1038A00016D8010000000008F0B101000000000C73
908:1038B000F0B1010000000002E0B1010000000010C2
909:1038C00086C001000000004661B1010020000043F5
910:1038D00062DD01001707A85C1F1000004007220DE1
911:1038E000145000004007220D245000000000000D7D
912:1038F00010C001001E072242236C00002307004174
913:1039000023C000000000004661B10100400000102B
914:1039100062DD01001F07A85C1F000000E39F008814
915:103920001CB000000000004023B001003F07A20DC2
916:103930000E5000002E0722461F7C000000000046AB
917:103940001F8001003080001042C901002C0722F2C4
918:10395000640600000000004761B101004000001053
919:1039600062DD01002907A84081320000E39F008842
920:103970001CB0000020800003469901000000005F99
921:10398000E191010000002D0648B10100000000F89F
922:1039900018B00100000000F804B0010033071FF068
923:1039A0000E300000D306004C0DC0000000002E5F5A
924:1039B0000F800100D3062307146C000030000010B4
925:1039C00048C9010024000040F199010000000003F3
926:1039D000F0B1010000000000F0B10100000000168D
927:1039E000F0B101002400000000C801000000004701
928:1039F00061B10100200000A462DD01003C07A8467F
929:103A00001F100000D30600030CB00000D306000D09
930:103A100018C000005F07A2441F7C000000000019CE
931:103A20000AB001002200000548C901000A002D1457
932:103A300048C1010002002040E5B10100040020401F
933:103A4000E5B101000D002D1D48C10100090000F382
934:103A5000388801000D002050E7B1010004002D401E
935:103A60003FB00100000000F432B00100040020402B
936:103A7000E1B101002200000548C9010000002D1439
937:103A800048C101000200001D94F401000000004044
938:103A900091B001005207A0FC9040000000000041DE
939:103AA00091C001005007A24195500000000000A401
940:103AB00096B0010004002E0548B101000000004846
941:103AC000F0B101000000004B48B1010000000018F7
942:103AD00048C101000200001894F4010000002D18F4
943:103AE00090B001005C07A0FC904000000000004185
944:103AF00091C001005A07A241955000000000004803
945:103B0000E0B1010010002040E5B1010004002D05E6
946:103B100048B10100000000F880B02D00000000F066
947:103B200016B02D002200000548C92D000000001429
948:103B300048C12D00640743303D072C000000009E63
949:103B400085B02D0000001B413DC32D000400204224
950:103B5000ECB12D000000001E82B0010002002E1DFD
951:103B600082C001000000661882C00100000000420F
952:103B700080C001006E07A0418044000000000041A9
953:103B800081C001001000004092F401000A002E30B4
954:103B900081840100720790409240000000000041C3
955:103BA00093C001000000662093A401000000001DE6
956:103BB00048C1010004002019E8B101000000001E06
957:103BC00016C001007807A01916440000000000414B
958:103BD00017C001000D002F1E32C001007D07A2405A
959:103BE000156C00007C07A01C16400000000000417E
960:103BF00017C00100000063F33894010010000005B5
961:103C000048C9010004002E1E98B001000000601A8F
962:103C100098C001000C002040E1B101008B07224652
963:103C20001F7C0000000000461F8001003080001053
964:103C300042C90100890722F2640600000000004723
965:103C400061B101004000001062DD01008607A8405C
966:103C500081320000E39F00881CB000002080000338
967:103C6000469901000000005FE191010030800010E2
968:103C700044C901001200001AF0C901000000001739
969:103C8000F0B1010010000005E0C901003000001093
970:103C900080C801000000004461B101002000004024
971:103CA00062DD01009107A840813200009B07225C81
972:103CB0001F7C000000003C4423E0010000002D10A8
973:103CC00048C101009B0722F2640600000000004684
974:103CD00061B101004000001062DD01009807A840BA
975:103CE00081320000E39F00881CB00000EB9F005C65
976:103CF0001F00010020002F0548B101000000000B4B
977:103D0000E4B101000000005017F00100A10790F29B
978:103D1000164000000000004117C0010000006620AE
979:103D200017A40100100000142AC801000000001DA3
980:103D30002AC00100000000502BE00100000000F24A
981:103D40002A9401003080001042C90100AC0722F221
982:103D5000640600000000004461B101004000001052
983:103D600062DD0100A907A84081320000E39F0088BE
984:103D70001CB000000080001710DC0100C9072240C1
985:103D8000156C0000B407A2441F7C00000000004432
986:103D90001F900100B307229F136C000002000088EF
987:103DA0001CCC0100E49F004081B2000000000041F3
988:103DB0003FC30100E69F004081320100B707A241E6
989:103DC000877C00000000001E3EC00100C9072240A1
990:103DD000156C0000BA07201E146C00000000000AD9
991:103DE0003CB00100E59F001E24300100BF072208FF
992:103DF0002E3000000000005211C001000000001A27
993:103E000010C001002307004017B00000E49F0088A5
994:103E10001CB00000E59F004081320100BC07A208F1
995:103E20002E300000808000A604B001000600004093
996:103E300087980100008000034499010004002204D7
997:103E4000E0310000E89F001F8C30010000000040BE
998:103E50000FB00100E29F005C1F9000000080000393
999:103E60004499010004002204E0310000E69F004074
1000:103E700081320100CE07A241877C0000CF07001EDF
1001:103E80003EC000000000001F8CB001000000004098
1002:103E900005B00100E89F00400F300100E29F005C88
1003:103EA0001F9000000400004081B2000004000040A8
1004:103EB00081B200000400004081B200000400004014
1005:103EC00081B200000400004081B200000400004004
1006:103ED00081B200000400004081B2000004000040F4
1007:103EE00081B200000400004081B2000004000040E4
1008:103EF00081B200000400004081B2000004000040D4
1009:103F000081B200000400004081B2000004000040C3
1010:103F100081B200000400004081B2000004000040B3
1011:103F200081B200000400004081B2000004000040A3
1012:103F300081B200000400004081B200000400004093
1013:103F400081B200000400004081B200000400004083
1014:103F500081B200000400004081B200000400004073
1015:103F600081B200000400004081B200000400004063
1016:103F700081B200000400004081B200000400004053
1017:103F800081B200000400004081B200000400004043
1018:103F900081B200000400004081B200000400004033
1019:103FA00081B200000400004081B200000400004023
1020:103FB00081B200000400004081B200000400004013
1021:103FC00081B200000400004081B20000F70700BC8D
1022:103FD00080B200000380004081B2000003800040F6
1023:103FE00081B200000380004081B2000003800040E5
1024:103FF00081B200000380004081B2000003800040D5
1025:1040000081B200000380004081B2000003800040C4
1026:1040100081B200003180004081B200003480004055
1027:1040200081B200003580004081B2000004000040F1
1028:1040300081B200001B808180803200001487A24082
1029:10404000916F00000000004C90B301005C952EA21F
1030:1040500080B00100FF000080F489010090952AC81B
1031:10406000E5B10100000000A1F0B101000000004036
1032:10407000F0B10100000000A4F0B10100000000D088
1033:10408000F0B10100000000D1F0B10100000000D249
1034:10409000F0B101000000004CF0B10100000000D4BC
1035:1040A000F0B10100000000D3F0B10100000000EE0B
1036:1040B000F0B101000000004EF0B10100000000402E
1037:1040C00044B1010018801181983000000000514077
1038:1040D00081B201001A801182983000000000524025
1039:1040E00081B2010014870048FD930000B603004030
1040:1040F000A19901002380A242FD7F00002080008062
1041:1041000080320000228011818230000022805140E4
1042:1041100081B2000022801182823000002280524051
1043:1041200081B200002C800048FD93000027800080B1
1044:10413000803200002680A253077C0000000051530B
1045:10414000079001002A800052079000002980A252A7
1046:10415000077C00000000525207900100000000534D
1047:104160000790010000000048FD9301000000004698
1048:10417000F39301005C952EA252B30100FF00008072
1049:10418000F48901000000004CE4B10100000000A926
1050:1041900045B101003080004C80B200000000454075
1051:1041A00081B201000000554081B20100AF8205409C
1052:1041B00049B10000AF82054049B100000000054050
1053:1041C00049B101004C010040813201000000004B68
1054:1041D000DEB2010000000040FD9301000000004835
1055:1041E000FD830100020000409B9B0100000000A530
1056:1041F0009CB30100480300408132010058952044DF
1057:10420000E0B101000494004043990100000000F275
1058:1042100024B10100000C00EE968801000000004A65
1059:1042200097F001004480A243976C00000000004218
1060:10423000FD93010000C000A636B10100D01400407B
1061:104240004799010005000040F59901000038004041
1062:10425000F599010000060040F599010000000040BA
1063:10426000F599010005100040F59901000209004090
1064:10427000F599010004000040F59901006003004039
1065:10428000813201008803004081320100A003004018
1066:1042900081320100A2820040813201009A820040F6
1067:1042A0008132010060952040E1B10100709520400D
1068:1042B000E1B1010000000049DD9101000000004073
1069:1042C00091B30100F99500408132010000000040E7
1070:1042D00085B301005C952040E1B1010027820040D8
1071:1042E0008132010090060040813201000000005F31
1072:1042F0002F8101008D81004081320100FE95004038
1073:10430000813201000000454081B2010000005540AB
1074:1043100081B20100DD82004081B200000400004053
1075:1043200081B200000400004081B20000040000409F
1076:1043300081B200000400004081B20000040000408F
1077:1043400081B200000400004081B20000040000407F
1078:1043500081B200002800004047990100AF8200416F
1079:10436000E1C1000078180040499901001905225464
1080:10437000817C00006C80424081320000008200B4E9
1081:1043800069DF010000001A449393010028000040F7
1082:10439000479901001805004081B200000400004068
1083:1043A00081B200000400004081B20000040000401F
1084:1043B00081B200000400004081B20000040000400F
1085:1043C00081B200000400004081B2000004000040FF
1086:1043D00081B2000040820040813201007D80224095
1087:1043E000976C00007A804240813200000000004F4C
1088:1043F0006993010038810058699300005416004009
1089:1044000047990100000000FEF4B101008005004062
1090:1044100081B2000080804240813200000000004EE6
1091:1044200069930100388100586993000040160040EC
1092:10443000459901004005004049310100F615004052
1093:10444000439901005C1600404599010000006EFA96
1094:104450008EB00100C105004081B2000004000040A0
1095:1044600081B200000400004081B20000040000405E
1096:1044700081B200000400004081B20000040000404E
1097:1044800081B200000400004081B20000040000403E
1098:1044900081B200009680004081B20000408200405E
1099:1044A0008132010096802240976C00009380424048
1100:1044B000813200000000004F6993010038810058EC
1101:1044C0006993000038050040813201001E00004859
1102:1044D000B2CB0100D005004081B2000004000040D2
1103:1044E00081B200000400004081B2000004000040DE
1104:1044F00081B200000400004081B2000004000040CE
1105:1045000081B200000400004081B2000004000040BD
1106:1045100081B200008302004081B20000B802004076
1107:1045200081B20000D49F004081B20000D59F0040BE
1108:1045300081B20000D69F004081B20000D79F0040AA
1109:1045400081B200007201004181C000005501514854
1110:10455000FD93000055015248FD9300005501554957
1111:10456000FD8300005501564AFD83000050019181F2
1112:10457000803000005501454081B200005001918219
1113:10458000803000005501464081B20000000000402C
1114:1045900089B00100000000F880B00100000000F0C8
1115:1045A00016B001002200000548C9010000000014F7
1116:1045B00048C10100B48043303D0700000000009E68
1117:1045C00085B0010000001B413DC3010004002042F2
1118:1045D000ECB101000000004049B10100AE0300CB86
1119:1045E000A3C901000000002046B10100000000D274
1120:1045F000F1B10100000000D3F1B101000000004260
1121:10460000F0B101000000004561B101002000002070
1122:1046100062DD01000000A8D0E1B10000BF800040D1
1123:1046200081B20000000000A898B0010004800040A2
1124:104630008BB30000B1030040A1990100C780A242E2
1125:10464000976F000000000045A1C1010000000000BC
1126:1046500080B001000000A2048094000080153F4259
1127:1046600097E301000000004049B101000000600331
1128:10467000029401000000004007B00100040000CBDC
1129:1046800099CB0100000000CCF3830100D180A2424D
1130:10469000976F0000000000CBF3930100AE0300CB46
1131:1046A000A3C901000000002044B101000000004443
1132:1046B000F1B1010000000000F0B1010000000004B1
1133:1046C000F0B10100000000A1E0B1010005000040D0
1134:1046D000619901002000002062DD0100D880A8401F
1135:1046E00081320000F9020020423101000000A241A5
1136:1046F000056C0100000080CBDB9101000000194136
1137:104700008BB301006000004061990100DE80A8B118
1138:104710008C3300006000004061990100E080A8B186
1139:1047200094330000E68014C681320000180000C6F1
1140:1047300083F40100F482224F83040000C280004011
1141:1047400081B20000FF0100C681880100000000C6A0
1142:1047500097A30100C2801F5C9753000058821EC6B9
1143:104760008132000000002F4381F00100EC80004006
1144:1047700010C900003981004081B200006A81004008
1145:1047800081B20000248200CA63B30000618100404E
1146:1047900081B200004881004D83B000005281004E7C
1147:1047A00061B100004181004085B000004881004CAB
1148:1047B00083B000002481004085B00000E381004008
1149:1047C00049B1000071810040C1B10000DF810040AB
1150:1047D00081B200004181004085B00000F00300403C
1151:1047E00049B10000F48200CA9BB300007B81004005
1152:1047F000C1B100007F810040C1B10000868100404E
1153:10480000C1B1000087810040C1B100008881004033
1154:10481000C1B1000089810040C1B100008A8100401F
1155:1048200081B000008A81004181B000001882004000
1156:1048300081B20000978200BBABB30000258200CAA2
1157:10484000CFB30000C803004049B10000E8030040B6
1158:1048500081B200002682004081B20000F482004054
1159:1048600081B20000E003004081B20000F48200CA7F
1160:1048700077B300004981004D83B000005081004EA5
1161:1048800061B10000418100BB85B000004981004C4E
1162:1048900083B00000418100BB85B00000248100BBD3
1163:1048A00085B000001681004081B20000F48200CA89
1164:1048B0004DB300007005004049B10000A005004064
1165:1048C00049B100001C8122428F6F00001E812241ED
1166:1048D0008F6F000020811ECA8132000022811FCA12
1167:1048E00081320000000000CAC9B10100F482004218
1168:1048F0008FB30000000000CACDB10100F482004176
1169:104900008FB30000000000CACFB10100F482004064
1170:104910008FB30000008100A6C6B10100F482004000
1171:1049200081B20000008000A6C6B10100F482004000
1172:104930008FB30000781800404999010010002F9CA7
1173:1049400089B001003B8100403933010018002F9BE2
1174:1049500089B001003B8100403733010000002F9AED
1175:1049600089B001003B8100403533010008002F99D8
1176:1049700089B001003B81004033330100008000AE6C
1177:1049800047C9010080000040F1990100000000CA01
1178:10499000F1B1010000000042F0B1010040180040F8
1179:1049A000E19901000000004561B10100200000AE66
1180:1049B00063DD0100368128408132000033810040F0
1181:1049C00081B2000036814240813200000000005C6C
1182:1049D00069930100F4821A449393000039814240A4
1183:1049E00081320000388100586993000000000044C3
1184:1049F000F0D101000000A44081B200004081A2403B
1185:104A0000E16D00000000004445D10100000080403D
1186:104A1000E1B1010000008041E1D101004181375C3A
1187:104A2000613100000000004262B101004581284070
1188:104A3000813200004281004081B20000000000CAC3
1189:104A400063B101004581A84081320000F482174023
1190:104A500081B200004A81004081B000004A8100BB61
1191:104A600081B000000000004160B101000000004082
1192:104A700062B101004B81A84081320000000000CAF1
1193:104A800063B10100F4822840813200004D81004072
1194:104A900081B200005095004047990100538100BB4E
1195:104AA00087B0000050952F4087B00100558122400B
1196:104AB000957F0000F48260409583000002002DF095
1197:104AC00084B001005681364081320000000000426F
1198:104AD00062B101005781A84081320000000000430C
1199:104AE00062B101005981A84081320000000000CA73
1200:104AF00063B101005B81A8408132000000001640D4
1201:104B000081B20100F482224143510000000800CA32
1202:104B100095CB01005681004185C000006381A2420F
1203:104B2000676F00000000004167B3010063814240ED
1204:104B3000813200000000004065B301000000004029
1205:104B40009383010000001ACA69970100F48226408D
1206:104B5000813200006881424081320000F4821A44B0
1207:104B600093930000F4822043956F0000F48280CA82
1208:104B700067330000F4822240656F0000F482006F0A
1209:104B8000DB91000085000040813201003580224029
1210:104B900080320000F482004081B200000000005822
1211:104BA000959301000000005F959301007781A24476
1212:104BB000216F00000000005F958301000000005E8F
1213:104BC000959301000000005795930100000000CA72
1214:104BD000C3B101007A81225B957F00000000004B89
1215:104BE000FD930100F482004081B200001BFD00CA69
1216:104BF000959B01000D0100CAC53101000000005F56
1217:104C000095830100F48200CAC5B10000DF6F00CABD
1218:104C1000959B01000000005595930100000000CA1B
1219:104C2000C7B10100F482225F957F00000D010040B2
1220:104C3000813201000000005F95830100F48200CA08
1221:104C4000C7B10000F48200CAC9B10000F48200CAF2
1222:104C5000CBB10000F48200CACDB10000F48200CADA
1223:104C6000CFB1000000002E4281E001009814004006
1224:104C700048C90100F48200CAE1B100000000004010
1225:104C800009B10100200000A682B001008F81A25E60
1226:104C90000B7D000000800041089901009181A25E17
1227:104CA0000B7D0000208000A608B1010093819F8544
1228:104CB000823000000000003083840100C88122306F
1229:104CC000836C00009281A24F0B7D00000000004128
1230:104CD00021B30100028000A682B0010013820040CF
1231:104CE000813201001000004184E40100038000A62D
1232:104CF00082B001001382004081320100F0FF0041C8
1233:104D00008688010000000043849401000F0000A683
1234:104D100086B0010010C4004386980100A881A24318
1235:104D2000846C00000000004321B30100200000A6B5
1236:104D300082B001001C00004182DC0100A581A25E5E
1237:104D40000B7D00000400004108990100BA81004079
1238:104D500081B20000410100A686B00100500C004362
1239:104D600086980100AD81A243846C000000000041E0
1240:104D700021B30100BA81004081B20000410100A6C8
1241:104D800086B00100600C004386980100BA81A243FE
1242:104D9000846C00000000004221B30100188000A6CE
1243:104DA00082B001001382004081320100FFFF004108
1244:104DB0008288010000770041828C010001020041DD
1245:104DC000829801002000004182DC010018000041AF
1246:104DD00082DC0100B881A25E0B7D00000000004172
1247:104DE00008B10100200000A682B00100BB81A25ED4
1248:104DF0000B7D00004013004108990100C38122434C
1249:104E0000216F0000200000A682B0010012000041C6
1250:104E100082DC0100C081A25E0B7D00000004004125
1251:104E200008990100DE81004081B20000200000A648
1252:104E300082B001001900004182DC0100C581A25E40
1253:104E40000B7D000000A0004108990100DE810040B8
1254:104E500081B200000000004421B3010000000040C6
1255:104E600083B001000000005F839001000000005E3D
1256:104E70008390010000000057839001000000004172
1257:104E8000C2B101000C010040813201000000005F4E
1258:104E90008380010000000041C2B101000C0100400C
1259:104EA00081320100200000A682B001000400004110
1260:104EB00082DC01002000004108990100200000A6CA
1261:104EC00082B001001100004182DC0100D781A25EA6
1262:104ED0000B7D00000100004108990100200000A6A0
1263:104EE00082B00100DA81A25E0B7D00004013004118
1264:104EF00008990100010000A682B0010040000041B5
1265:104F00002E9901000000804081B20100200000A61F
1266:104F100080B00100000000CA81940100E181A25E1E
1267:104F20000B7D0000F482004008B10000C8142EBBC5
1268:104F300085B00100E481A25E0B7D0000000000400E
1269:104F400087B00100F3812243216F000002822244D6
1270:104F5000216F0000118000A682B001001382004082
1271:104F6000813201000A82224A837C00000000004056
1272:104F700087900100EE81224D837C000000000041FB
1273:104F800087900100F081224F837C000000000043E5
1274:104F900087900100F281224E837C000000000042D5
1275:104FA000879001000A82004081B20000018000A6C3
1276:104FB00082B001001382004081320100018000A60E
1277:104FC00082B0010013820040813201000A82224235
1278:104FD000837C000000000040879001001C8000A638
1279:104FE00082B001001382004081320100FD81224520
1280:104FF000837C00000000004187900100FF81224473
1281:10500000837C00000000004387900100018222435E
1282:10501000837C000000000042879001000A8200406B
1283:1050200081B20000018000A682B00100138200401E
1284:1050300081320100018000A682B00100138200408D
1285:10504000813201000A822242837C0000000000407D
1286:10505000879001000000004387900100000000419C
1287:1050600087900100008000A682B0010013820040FA
1288:10507000813201000E82224B837C00000000004040
1289:105080008780010000000043E0B10100FF7F00A223
1290:10509000A08B010000000044A5B30100B88000CA45
1291:1050A000A73301003681004081B20000200000419A
1292:1050B00082DC01001482A25E0B7D00000000004132
1293:1050C00008B1010016829F858230000000008040F8
1294:1050D00081B201001B8214F7813000001B82A249BB
1295:1050E000FD7F000000000048FD9301001E8215F8BE
1296:1050F000811400001E82A24AFD7F000000000048CB
1297:10510000FD9301002082A2C88132000040000040CF
1298:1051100080DC01000010004080DC01000000004045
1299:10512000EFB3010022824240F13300003881004099
1300:1051300068970000F48200BB6BB30000F48200BBF0
1301:10514000B1B30000F482004081B2000000030040CF
1302:10515000819801000000004018B10100800000406B
1303:105160008398010000190040459901000000424069
1304:1051700081B20100000043FFF1B10100000000FF17
1305:10518000F1B101000000004181C0010000000040B9
1306:1051900018B101002B82A24183500000001600408C
1307:1051A00045990100001900404399010000000047A3
1308:1051B00043C101000000004083B00100000000F383
1309:1051C00080B001000000005B81D0010000000041C0
1310:1051D00080D0010000000040F6B101000000005B3B
1311:1051E00043C101000000004183C001003582A25488
1312:1051F000836C000000000040F7B101000000004196
1313:1052000083C001003C82A206836C00000000804045
1314:1052100081B20100001600404399010080162E065D
1315:1052200083B00100360000FBF6A901004282A241D2
1316:10523000835000002200004083980100000000FB22
1317:10524000F6B101004582A241835000006200004097
1318:1052500095980100DC9F00408132010000162D0668
1319:1052600083B0010080160040459901005C0000FBFE
1320:10527000F6A901004B82A24183500000000000709B
1321:10528000F9B1010000000071F9B1010000000072E5
1322:10529000F9B1010000000073F9B1010000000074D1
1323:1052A000F9B101005400004095980100DC9F0040D6
1324:1052B000813201000000007095B001005782227019
1325:1052C000B56F00000000804197B0010000008040F1
1326:1052D00097B00100B6030040A199010000002F42E1
1327:1052E00099B3010062822244816C00006A822248E4
1328:1052F000816C00006482224C816C00006E8222501E
1329:10530000816C00006F822254816C000071822258EF
1330:10531000816C00007682225C816C000050010040AC
1331:1053200081B20000000000BC09B00100F48200CA94
1332:1053300001B000000000004003B001000000004187
1333:10534000F38301006882A242056C00000000004166
1334:1053500005B00100F48222CA07140000F48200465E
1335:10536000F3930000F4822043956F0000F48280CA1A
1336:1053700005300000F482220180300000F48200CB6E
1337:10538000DB910000570100BCABB30000000000BC83
1338:10539000B1B30100F48200CACFB30000FF0000CA1D
1339:1053A00081880100F482A240747D000060002040EA
1340:1053B000609901007382A8B18230000072820040BF
1341:1053C00081B20000F48200CA79B300000000004EF0
1342:1053D00081B0010000000043CB8301000000454084
1343:1053E00081B201007982A241815000000000454055
1344:1053F00081B201000000454081B2010084829182A7
1345:10540000823000000000008A80B00100AE9F0040A2
1346:1054100080CE01008282A640813200008482564004
1347:1054200081B20000B6030040A199010000000053C2
1348:1054300007900100B6030040A1990100000000524E
1349:1054400007900100D89F00418BB300000000004E80
1350:1054500081B0010000000042CD8301000000464001
1351:1054600081B201008982A2418150000000004640C3
1352:1054700081B201000000464081B201009482918116
1353:10548000823000000000008980B00100AE9F004023
1354:1054900080CE01009282A640813200009482554065
1355:1054A00081B20000B6030040A19901000000005243
1356:1054B00007900100B6030040A199010000000053CD
1357:1054C00007900100D89F00418BB30000B10300405A
1358:1054D000A1990100C4142F4099B301005701004065
1359:1054E00049B10000A0942E4397B001000000004095
1360:1054F000F1B101009B82A2419750000050952040DD
1361:10550000E1B10100AC942E4397B0010000000040CF
1362:10551000F1B101009F82A24197500000000080403D
1363:1055200081B20100AE030040A399010000000040D9
1364:1055300081B001006015004085980100080000401E
1365:1055400040E40100000000594194010000000050B7
1366:1055500041E00100000000424094010000000057BB
1367:10556000419001000000004181C001000000A34201
1368:10557000816C010000000041A3C10100A582A0428E
1369:10558000816C0000A582005085C00000DD82A24130
1370:10559000017D0000B5822258737D00007800004034
1371:1055A00061990100B082A8B19C30000030003845FC
1372:1055B0009DE001000100000E10C90000B58233C457
1373:1055C00081300000B882A1AD9D200000AF82134061
1374:1055D00081B200000000134E5A83010030003845AC
1375:1055E0009DE00100C08222AB80040000BE82A24088
1376:1055F000017D0000C082225F577D00003C87004093
1377:1056000081B20000C082225E577D00009F8700406B
1378:1056100081B20000C5822254737D000074000040F6
1379:1056200061990100C082A8B1003000009084A25F9F
1380:10563000017C0000D086004081B20000C782A25FDA
1381:1056400059270000C982A25C737D0000D082A25E4F
1382:10565000737D0000DA82225C737D0000DB823740BC
1383:10566000813200007C00004061990100CA82A8B12B
1384:10567000363000007C00004061990100CC82A8B166
1385:10568000003000001F00000002880100BF841740A6
1386:1056900081B20000DB823440813200007E00004095
1387:1056A00061990100D182A8B112300000D882522144
1388:1056B00013040000000014412FC30100FF3F000944
1389:1056C000008C01000000004301F001001183003450
1390:1056D00013840000FF3F1409008C01007183004314
1391:1056E00001F000000000004081B20100DB82334085
1392:1056F00081320000AF82134E5A9300001487A248F3
1393:10570000FD7F00000400A2AC80320000E382225A38
1394:10571000737D00007A00004061990100E082A8B129
1395:105720007E310000010000CF11C90000E982A240D3
1396:10573000937F0000E9822244937F0000E58242A526
1397:1057400080300000E882A240937F0000FB821A4074
1398:105750009393000000001A4081B20100DD80A24056
1399:10576000737D00000F872244216F000006872240CE
1400:10577000657D00000005A25B737D00000400A24966
1401:10578000337D0000F3822248337D0000FF01009941
1402:1057900080D801000000005081E00100A8982F404F
1403:1057A00033B1010000000040E0C10100DD82004093
1404:1057B00081B20000AF8200408BB3000000000058AF
1405:1057C00061B101000000004E62B10100AF822840CB
1406:1057D00081320000F682004081B20000F98233403D
1407:1057E0001F300000AF82134E5A930000FD82A0CEFE
1408:1057F000815000000F83A0CD816C0000000000A547
1409:105800009CB30100000000B181B001000F8322B5FC
1410:105810008114000080152F4049B1010001834240EE
1411:1058200081320000000060B465970100D0152E4061
1412:1058300069B3010000001A44938301001A0000A21A
1413:1058400080DC010000000044F1B10100000000B163
1414:10585000F1B10100000000B5F1B101000500004008
1415:10586000619901008000004062DD01000A83A8A167
1416:10587000E0310000E98200889EB30000E982A24185
1417:10588000676F0000E982006FDB9100000F834240E8
1418:1058900081320000E9821A409383000000990009D8
1419:1058A00046C901003F0000F30C8801001A83A6429C
1420:1058B00013600000299400950330010015836140B6
1421:1058C0008132000075000040619901001683A8B183
1422:1058D0000C30000036947110943001001B83005886
1423:1058E0001F9000001C94009503300100AF820088D7
1424:1058F0001CB0000000002D0348B1010004002DF091
1425:105900002EB00100EE070040979801002283234B40
1426:10591000E46D00002283224BFD7F00000000004068
1427:105920001F90010022002F4081B2010025838317C0
1428:105930008032000026000040479901002783851728
1429:10594000803200000000004847C101002D8322552D
1430:105950002F7C00000000004243D101000F0000FA3C
1431:10596000968801000000004297E00100000000421C
1432:1059700097D001002E83004B44C10000120000A20A
1433:1059800044C90100280000F602CC01000A0000A171
1434:1059900042C90100000000F816B00100000028F024
1435:1059A00010B00100000000F01AB00100000000A2D9
1436:1059B0002AB00100C0283C460DE0010000002D4443
1437:1059C00095B001003A83A2F80E3000004A832241CC
1438:1059D0009550000000002D5049C101003683004061
1439:1059E00081B200003783A2F8166C00003783A2F85A
1440:1059F000106C00003783A2F01A6C00004883225814
1441:105A00001F7C000000993F4213F001003F83654076
1442:105A1000813200004383A2F37406000000000006F8
1443:105A2000E69501004883754081B200000000000641
1444:105A300096B001003F0075F30C880100000000558E
1445:105A400061B101000000004B62B101004683A84033
1446:105A500081320000488367408132000050837741E3
1447:105A60002DC300004E8322581F7C0000000000550B
1448:105A700061B101000000000662B101004C83A84042
1449:105A8000813200004E836740813200007E8377417F
1450:105A90002DC30000030000071AF40100EF92000775
1451:105AA000163001005F832241816C00005683224240
1452:105AB000816C0000AF8200881CB000005E83225F12
1453:105AC0000F7C0000E393005F011001005C83224023
1454:105AD000956C00000480000342C90100000000F240
1455:105AE00002B0010058930052953001005F93004BC3
1456:105AF00002B0000041940009963001001A8700406E
1457:105B00000FB000006783A25A1F7C0000699200401A
1458:105B10008132010067832220856C000064839C0F22
1459:105B200080320000AF8200881CB000004A93005C05
1460:105B30001F0001003C95004261310100AF820088E6
1461:105B40001CB00000900400079630010000002D05F5
1462:105B500048B101006A8382F0183000008188004556
1463:105B60008FB00000282000A696B001006E83221797
1464:105B700096040000E094004B953001008188004BB2
1465:105B80008FB00000EF93000348310100CA9100403C
1466:105B9000813001008188004081B2000000002E1099
1467:105BA00048B101000000685003B00100000000038C
1468:105BB000F0B1010040000000E0C9010000002E50DB
1469:105BC00049C1010000000050F1B1010000000003D4
1470:105BD000F0B101000000004261B10100200000109E
1471:105BE00062DD01007983A8408132000010000010BE
1472:105BF00062C901007B83A800E0310000AF82008809
1473:105C00001CB0000000002D0348B10100000000405E
1474:105C10000FB00100000000F82EB00100000000F2FB
1475:105C200002B001000000004017B00100004100A6D2
1476:105C300096B00100EE072E4797900100918322173E
1477:105C4000960400008F83224BFD7F00008F8323A2E8
1478:105C5000026C00005893005295300100040022416C
1479:105C6000975000000C002D0012B00100000000F061
1480:105C700000B001000000005C018001005F93004B58
1481:105C800002B000000000000900B001000000005058
1482:105C900003B00100AE83005C17900000A383224391
1483:105CA0002F7C0000000000451F9001009C83225FB4
1484:105CB0002F7C000000002E1048B1010000000058A9
1485:105CC000F1B1010010000003F0C901001000000054
1486:105CD000E0C90100988362426131000000000010B9
1487:105CE00062B101009983A84081320000AF827288BE
1488:105CF0001CB0000020002D0348B10100FF0F00F68A
1489:105D000080880100A083A2A6816C0000A38300F21A
1490:105D10003AB000008D84A24BFD7F0000B09200409D
1491:105D2000813201003087004081B20000AE83224AF8
1492:105D30002F7C0000AE8322482F7C00000A002D0338
1493:105D400048B101003F0000F2868801001F000043B7
1494:105D5000848801000500004380F4010098943D42CE
1495:105D600081E00100AE83A242E07D00008D84A24B61
1496:105D7000FD7F0000B092004081320100308700407A
1497:105D800081B20000AE83694081320000000000A3B0
1498:105D900009B001000000794147C30100B48322A18A
1499:105DA000096C0000F58200881CB00000B18300037C
1500:105DB00048B10000EE83A392036C0000949500406C
1501:105DC000953001000000004143C3010000000016AF
1502:105DD00080B201003087270880320000BB83225C3C
1503:105DE000177C0000BC8300002AB0000012000000F5
1504:105DF0002AC801000200000880C80100C083A24335
1505:105E00002F7C0000E394004081320100DC83005EBF
1506:105E100017900000040000018CCC0100E394004CBA
1507:105E20000330010000002E4602B0010010000010F7
1508:105E300048C901000C000001F0CD01002C00004019
1509:105E4000F0C9010000000016F0B1010010000015BB
1510:105E5000E0C901000000004361B10100A00000A4FE
1511:105E600062DD0100C983A85417100000DC83005EC6
1512:105E700017900000120000002AC80100DB832243B3
1513:105E80002F7C0000040000018CCC01000000004CBD
1514:105E900003B00100049500436131010000002E466B
1515:105EA00002B001001000001048C901000C00000100
1516:105EB000F0CD01000C000009F0C90100000000183D
1517:105EC000F0B1010010000015E0C90100000000431E
1518:105ED00061B10100A00000A462DD0100DC83285450
1519:105EE00017100000D883004081B2000004950043E1
1520:105EF00061310100DE8322502F7C0000000000563B
1521:105F0000179001000700001798880100E183A24163
1522:105F1000996C00000000005517900100000000433C
1523:105F200061B101004000001062DD0100E283A84081
1524:105F300081320000AF8200881CB00000EB9400406A
1525:105F400081320100E98322432F7C00001680000388
1526:105F500044C901000000001DE4B101008C94005E02
1527:105F600005100100EC83A25F2F7C0000A6910001C8
1528:105F700038430100B0920040813201003087004078
1529:105F800081B20000F083A24BFD7F00008A840041B3
1530:105F900043C300000000004027B0010000000040A3
1531:105FA0002DB001000000004011B00100F383350165
1532:105FB000863000006D00004061990100FB8328B12C
1533:105FC00030300000F483224D757D00000000001683
1534:105FD00080B201007A84A740116C000000000041EB
1535:105FE00043C301008984004081B200006D0000407D
1536:105FF00061990100FB83A8B1123000000000001677
1537:1060000080B201000584A740116C0000000000412F
1538:1060100043C301000000000910B001000000001897
1539:106020002CB00100DE07004380CE0100F483AA40BB
1540:10603000813200000A84004081B2000040003E43EB
1541:1060400027E0010000000009F0B101000000001885
1542:10605000E0B101000000004127C00100F483A30B60
1543:1060600087500000000015401BB0010000000040F8
1544:1060700023B00100120000002AC8010040002D409A
1545:1060800039B001001284A240276C000022000008F1
1546:1060900012C80100DE070040259801001584004069
1547:1060A00081B20000000000F812B00100000000F012
1548:1060B00030B001000000000B25B00100000000100E
1549:1060C00032B0010014002001E0B10100EE070040F1
1550:1060D000379801001A842301366C0000000000018B
1551:1060E00036B001002584824123400000208000104A
1552:1060F00042C9010021842240E36D000000000043FA
1553:1061000061B101004000001062DD01001E84A84062
1554:1061100081320000AF8200881CB00000CF920043A3
1555:10612000233001000000001032B0010000000041E7
1556:1061300023B001000000000348B1010000800019F5
1557:1061400044C90100348422451F7C00000000004C3B
1558:10615000F1B1010000000009F0B1010000000018D9
1559:10616000F0B101000000004361B1010020000019FE
1560:1061700062DD01002B84A815E03100000000005012
1561:1061800003D001000000005033C001000000004CAB
1562:1061900025D001000C002D4C13C001000000005060
1563:1061A00037D00100000000502BC001001A840045C8
1564:1061B0001F8000003684A312366C00003784681BF1
1565:1061C00028B000000000681228B00100000000099B
1566:1061D000F0B1010000000018F0B101000000004320
1567:1061E00061B101002000001962DD01003A84A815A8
1568:1061F000E0310000608422140250000000000050D2
1569:1062000033C001000000001424D001000C002D1444
1570:1062100012C001005984A214365000004A84225C46
1571:106220001F7C00003080001042C9010048842240D9
1572:10623000E36D00000000004261B101004000001069
1573:1062400062DD01004584A84081320000AF820088F1
1574:106250001CB000000000000348B101000C002D5CE0
1575:106260001F800100100000F02AC801000000005C3F
1576:106270002B800100F0070040379801004F84230174
1577:10628000366C00000000000136B001005A84221B69
1578:10629000026C00003000001048C9010000002E5CB4
1579:1062A0001F90010000000050F1B101000000000348
1580:1062B000F0B10100FF070015E08D01000000004271
1581:1062C00061B10100A00000A462DD01005684A84075
1582:1062D000813200005A84000348B10000000000141D
1583:1062E0002AC001001A84A240256C00000000004171
1584:1062F00039C0010040003D4339E001000000000BBF
1585:1063000025B00100000000F812B001001A8400F06E
1586:1063100030B000000080001942C9010066842240AC
1587:10632000E36D00000000004361B10100400000196E
1588:1063300062DD01006384A84081320000AF820088E2
1589:106340001CB00000CF9200402B30010018002E033B
1590:1063500048B101006A8422502F7C000000000056E2
1591:106360001790010007000017988801006D84A24172
1592:10637000996C0000000000551790010070842243C2
1593:106380002F7C000000000054179001001600201D13
1594:10639000E4B101007284A340276C00007484605F44
1595:1063A000179000000084000B16DC01000000601351
1596:1063B000169401008C94005E051001003087A25FE6
1597:1063C0002F7C00001480000342C90100000000F28D
1598:1063D00002B00100A691000138430100308700405F
1599:1063E00081B200000000004083B001000000004DB9
1600:1063F00061B101000000001662B101007C84A84078
1601:10640000813200000000000862B101007E84A840D3
1602:106410008132000089842213826C000040003D43D9
1603:1064200083E00100000000F810B00100000000F05F
1604:106430002CB001000000001662B101008484A84065
1605:10644000813200000000000862B101008684A8408B
1606:10645000813200008084004183C0000000001540AC
1607:1064600081B20100008200A604B00100A0980040A3
1608:1064700047990100300500418930010058930052CE
1609:10648000953001005F93004B02B000003087004060
1610:106490000FB000000000005F01800100100000004C
1611:1064A0000EF401003F000000008801000300000717
1612:1064B0001AF40100EF920007163001009B8422417C
1613:1064C000816C000099842242816C0000AF820088B8
1614:1064D0001CB000009A84225F0F7C00001A870040E5
1615:1064E0000FB00000A384A25A1F7C000069920040F4
1616:1064F00081320100A3842220856C0000A0849C0FBF
1617:1065000080320000AF8200881CB000004A93005C1B
1618:106510001F0001003C95004261310100AF820088FC
1619:106520001CB00000900400079630010000002D050B
1620:1065300048B10100000000F018B00100A984223A1F
1621:10654000016C0000000000008EB001008188004056
1622:1065500001B000000000004081B201002E002D05B6
1623:1065600048B10100AD84A240E76D00000A00004080
1624:106570008F9801008188004001B0000034920040F3
1625:10658000813201001C94009503300100AF82008825
1626:106590001CB0000000002D0348B1010022002DF0C6
1627:1065A0002EB00100282000A696B00100B684221764
1628:1065B00096040000E094004B953001008188004C67
1629:1065C0008FB00000B88483178032000000000044C0
1630:1065D00043C10100BA8485178032000000000048E2
1631:1065E00043C10100280000F602CC0100120000A106
1632:1065F0002AC80100EF93004081320100CA91004196
1633:10660000813001008188004081B20000000000015B
1634:1066100000D0010000002E1048B101002800004009
1635:10662000F199010000000003F0B10100000000003A
1636:10663000F0B10100C4846447613100000000001023
1637:1066400062B10100C584A81BE0310000AF827488EC
1638:106650001CB000000000004503E0010008002D030D
1639:1066600048B10100EA8401FB083000003D8587FB4A
1640:1066700022300000000000FA0EB00100000000F817
1641:1066800014B00100030000071AF40100EF920007A4
1642:1066900016300100E0842241816C0000D484224243
1643:1066A000816C0000AF8200881CB00000DF84225F94
1644:1066B0000F7C0000380000047E890100D884A65FAA
1645:1066C0000F0000004292004005300100DD840040D0
1646:1066D00081B20000130000408798010000002D03E4
1647:1066E00048B101000C002DF082B00100000000F064
1648:1066F00084B00100CE930040053001000000005C32
1649:106700001F9001001A8700400FB00000E884A25AD1
1650:106710001F7C00006992004081320100E884222041
1651:10672000856C0000E5849C0F80320000AF820088F9
1652:106730001CB000004A93005C1F0001003C95004221
1653:1067400061310100AF8200881CB000009004000796
1654:106750009630010000002D0548B10100000000F056
1655:1067600018B00100EC84210480200000ED8400407A
1656:1067700010C90000C387004B81B000000C850043A6
1657:1067800081B00000108500FB22B00000C3870041EB
1658:1067900081B000008188004E8FB000000885005A4B
1659:1067A0008FB00000F58400478FB00000C38700530E
1660:1067B00081B00000C387005681B0000032002D0573
1661:1067C00048B101008188A00AE46D0000FB84A24169
1662:1067D000197C0000FA84220A80320000818800536C
1663:1067E0008FB00000818800548FB000000485220A19
1664:1067F00080320000FE84A20AE46D00008188005D02
1665:106800008FB00000000000F280B001000000000A1C
1666:1068100080D001000285A091816C00008188005E1B
1667:106820008FB00000250000408F9801008188004053
1668:1068300081B2000006852091E56D0000818800543A
1669:106840008FB00000210000408F9801008188004037
1670:1068500081B2000032002D0548B101008188A00AF4
1671:10686000E46D0000240000408F9801008188004002
1672:1068700081B2000037002D0548B10100040000F38B
1673:1068800082F40100C387A042836C0000C3870054D8
1674:1068900081B00000000000F20EB00100030000070C
1675:1068A0001AF4010000B5000D42C9010007000007FD
1676:1068B000168801001985220BE67D00000A000040C1
1677:1068C00087980100DF950040813201000000004000
1678:1068D0000FB001001A87005C1F9000002B8522502A
1679:1068E000FD7F00002685A254FD7F00001E852255F5
1680:1068F000FD7F00008200004087980100168500405F
1681:1069000081B2000016852253FD7F00001480000331
1682:1069100042C90100000000F096B001001000004BD9
1683:1069200080F401000CBC00408798010026852243BA
1684:10693000806C0000FFFF004B808801001685A24399
1685:10694000806C00007C9600404799010027854640F6
1686:10695000813200002A85A0F0306F00001C851E40A7
1687:1069600081B2000000001E4131C30100739200405B
1688:10697000253001002F859C0F80320000AF820088F7
1689:106980001CB000004A93005C1F000100148000034B
1690:1069900042C90100000000F096B0010000002F0580
1691:1069A00048B101001000000718E401000008000CC5
1692:1069B000E0990100900400079630010000B5000D39
1693:1069C00046C9010036853040813200000000000BCE
1694:1069D000E6910100000200A146C901000000000B81
1695:1069E000E691010004002E0548B1010000001040AE
1696:1069F000E1B10100C387004081B00000000000FB4E
1697:106A000028B00100000000FB86B00100000000F883
1698:106A100014B0010047852246237C000043852240B4
1699:106A2000877C0000000000481F900100458522413E
1700:106A3000877C0000000000471F900100478522422C
1701:106A4000877C0000000000451F9001004785661B01
1702:106A50002C300000000000A013B0010000007641BF
1703:106A600041C3010076852392156C00007685A2450E
1704:106A70001F7C00007A85224BFD7F0000170000D0AC
1705:106A8000A2C901000000004027B001000200000A76
1706:106A900024C80100AB9200400F3001007485220829
1707:106AA0004030000000000041A3C10100F0070012C7
1708:106AB00024CC01005085AA412740000001000013AA
1709:106AC00080CC01007085264023300000000000408B
1710:106AD00083B001006000000384C8010010000010B2
1711:106AE00048CD0100170000D0A2C901005D85A24079
1712:106AF000836C00006985004183B000000080004283
1713:106B000044990100000068213896010000002E50D1
1714:106B100049C101006285A244236C000030000003DB
1715:106B200048C9010000000044F1B101000C00002040
1716:106B3000F0C901000000004461B10100A00000A400
1717:106B400062DD01006585A842E031000000000044DC
1718:106B500085C001000000004123C001000000004189
1719:106B6000A3C101005B85A2418150000070852240D5
1720:106B7000236C00000000004461B1010040000010DF
1721:106B800062DD01006D85A84081320000AF8200887F
1722:106B90001CB000000000000348B10100EE070040F7
1723:106BA00025980100170000D02AC80100838500172E
1724:106BB00010B0000095940040813201007A850040B9
1725:106BC00081B20000AB92009225300100000000402D
1726:106BD00031B001007A8522082E3000008385004103
1727:106BE00027B00000808000A604B00100060000402D
1728:106BF00087980100DF95000A8C30010000000040FA
1729:106C00000FB001000000005C1F9001008285229FF0
1730:106C1000136C0000020000881CCC0100F5820040CB
1731:106C200081B200001A8700413FC30000000000400D
1732:106C30000FB001002800000180CE010097852A4096
1733:106C4000813000000080001044C901004000004075
1734:106C5000819801008C85A2481F7C00008C85A2478A
1735:106C60001F7C00008C85A307036C0000800000409F
1736:106C7000819801008F85A340026C0000280000016C
1737:106C8000F0CD0100918500400FB0000028000040C9
1738:106C9000F0CD0100040000400ECC010028000003EC
1739:106CA000F0C9010028000000F0C901000000001632
1740:106CB000E0B101000000004761B1010020000010B8
1741:106CC00062DD01009585A85C1F10000000000040F7
1742:106CD00043990100000000F008B00100A0012D4020
1743:106CE00000C001006186220F42050000A8859C0FAC
1744:106CF000803200000000005C1F8001000080001056
1745:106D000042C90100A3852240E36D00000000004756
1746:106D100061B101004000001062DD0100A085A840C3
1747:106D200081320000AF8200881CB00000A8852207D5
1748:106D3000803200000000000342B1010000000007A3
1749:106D400042C10100008000A1469901000000005FDF
1750:106D5000E1910100C006A2451F7C00001000000365
1751:106D600048C9010000002D5429C00100000000F8AE
1752:106D700018B00100000000F804B00100000000F8A5
1753:106D80000EB00100420000030AC801000C0000A47C
1754:106D90000CC80100ED920040813201000000001497
1755:106DA00002B001000000001424D001000000001413
1756:106DB00010C001001200000810C8010000000040CF
1757:106DC00023B00100FE7F000544C901000000000A55
1758:106DD000E4B10100D18522018032000000003C4472
1759:106DE00023E0010000002EA480B00100000000108C
1760:106DF00048C10100BE85A307026C0000BF85680181
1761:106E00001AB00000000068071AB001000000000D71
1762:106E100002D0010000000005F0B101000000000CEC
1763:106E2000F0B1010000000002E0B101000000000D1F
1764:106E30000AC00100CB852240036C0000CB852242B2
1765:106E4000236C00000000004123C001000000004747
1766:106E500061B10100A00000A462DD0100EF852840BF
1767:106E600081320000C885004081B20000000000109F
1768:106E700080C001000000004761B101000000004037
1769:106E800062B10100CD85A84023300000AF820088A8
1770:106E90001CB00000EF85004081B2000000003C44BF
1771:106EA00023E00100000000A486B0010000002E10C5
1772:106EB00048C10100D685A3120E6C0000D78560077B
1773:106EC0001AB00000000060121AB001000000680D46
1774:106ED00016940100FFFF000B16D80100000068089F
1775:106EE0003E9601000000000CF0B10100000000021D
1776:106EF000E0B101000000001086C001000000004663
1777:106F000061B101002000004362DD0100DE85A85C64
1778:106F10001F1000000D86220D146C0000E485220D68
1779:106F2000246C00000000000D10C00100E885000D79
1780:106F300024D00000000000412BC00100000000151B
1781:106F4000A2B101001000002010C80100F0070040AD
1782:106F500025980100EA852242236C0000EF8500415C
1783:106F600023C000000000004661B101004000001095
1784:106F700062DD0100EB85A85C1F000000AF82008885
1785:106F80001CB000000000004023B001000D86220D5F
1786:106F9000145000000C86A20D0E500000FB85224606
1787:106FA0001F7C0000000000461F80010030800010A0
1788:106FB00042C90100F9852240E36D0000000000474E
1789:106FC00061B101004000001062DD0100F685A840BB
1790:106FD00081320000AF8200881CB0000020800003D6
1791:106FE000469901000000005FE191010000002D06BC
1792:106FF00048B10100000000F818B00100000000F8DE
1793:1070000004B0010000861FF00E300000B885004C6F
1794:107010000DC0000000002E5F0F800100B88523071F
1795:10702000146C00003000001048C90100240000402A
1796:10703000F199010000000003F0B101000000000020
1797:10704000F0B1010000000016F0B1010024000000C2
1798:1070500000C801000000004761B10100A00000A4C9
1799:1070600062DD01000986A8461F100000B8850003F4
1800:107070000CB00000B885000D18C0000004002E14EC
1801:107080000AD001001200000548CD0100FE7F000576
1802:1070900042C901000C002AF2E0B10100138622402F
1803:1070A000316C000000006018389601001E0000409E
1804:1070B00043990100008100F680CE01001786A640AA
1805:1070C000813200000000004443C101001986220BF8
1806:1070D000ED6D0000080000A142C90100020000A1FE
1807:1070E00046C901000F0000FA948801000200004A1E
1808:1070F00086E40100000000F60EB001002186224760
1809:107100001F7C000004001F430E5000002186A04693
1810:107110000F400000000000410FC0010025862248FA
1811:107120001F7C00000000004091B0010004000FA28D
1812:10713000423100002886004089B000000C0000A207
1813:1071400042C901000000004389B001000000004373
1814:1071500095D00100000000FC82B001002B86A04108
1815:10716000904000000000004191C00100308622479D
1816:107170001F7C00003086A043896C000030862045CB
1817:10718000896C00003086A0410E40000000000041E4
1818:107190000FC001000000004189C001002886A24103
1819:1071A00095500000398622481F7C000010000048DE
1820:1071B00092F40100FFFF0048908801003786904854
1821:1071C000924000000000004193C001000A0000A2AC
1822:1071D00044C901000000662093A401003080001023
1823:1071E00044C9010012000014F0C90100000000179A
1824:1071F000F0B1010012000005E0CD010030000010E8
1825:1072000080C801000000004461B10100200000407E
1826:1072100062DD01003F86A840813200004A86225C80
1827:107220001F7C000000003C4423E0010000002D1002
1828:1072300048C1010049862240E36D0000000000467D
1829:1072400061B101004000001062DD01004686A840E7
1830:1072500081320000AF8200881CB000000000005C9A
1831:107260001F8001004D86A2471F7C0000E392004072
1832:1072700081320100C686001710B00000EA9200407B
1833:107280008132010000002F0348B101005186A007A0
1834:10729000164000000000004117C001000000000B74
1835:1072A000E4B101000000005017F00100558690F293
1836:1072B000164000000000004117C0010000006620D9
1837:1072C00017A40100100000142AC80100000000509B
1838:1072D0002BE00100000000F22A9401003080001031
1839:1072E00042C901005F862240E36D000000000044B7
1840:1072F00061B101004000001062DD01005C86A84021
1841:1073000081320000AF8200881CB0000000800017AE
1842:1073100010DC0100C686004081B2000069869C0F27
1843:10732000803200000000005C1F800100008000101F
1844:1073300042C9010069862240E36D00000000004759
1845:1073400061B101004000001062DD01006686A840C6
1846:1073500081320000AF8200881CB000006E862207D8
1847:10736000803200000000000342B10100000000076D
1848:1073700042C10100008000A1469901000000005FA9
1849:10738000E191010004002E0348B101000000000A51
1850:10739000E0B1010073862240316C00000C00004017
1851:1073A00045990100000060183896010000002E1079
1852:1073B00048B1010000000050F1B1010000000008D8
1853:1073C000F0B1010000000003E0B101000000004442
1854:1073D00061B101000000001062B101007886A84090
1855:1073E00023300000AF8200881CB0000000002D5246
1856:1073F00011C001001000000348C90100000000F89E
1857:1074000018B00100000000F804B00100000000F80E
1858:107410000EB001000C0000A40CC8010000003C44A8
1859:1074200023E00100000000A486B0010000002E103F
1860:1074300048C101008686A3120E6C0000878668078B
1861:107440001AB00000000068121AB00100000000101D
1862:1074500086C00100000068083E9601000000000C94
1863:10746000F0B1010000000002E0B1010000000046A0
1864:1074700061B101002000004362DD01008C86A85C40
1865:107480001F100000BB86220D146C00009286220D96
1866:10749000246C00000000000D10C001009686000D55
1867:1074A00024D00000000000412BC0010000000015A6
1868:1074B000A2B101001000002010C80100F007004038
1869:1074C0002598010098862242236C00009D86004189
1870:1074D00023C000000000004661B101004000001020
1871:1074E00062DD01009986A85C1F000000AF82008861
1872:1074F0001CB000000000004023B001000400220D79
1873:1075000014500000BA86A20D0E500000A986224633
1874:107510001F7C0000000000461F800100308000102A
1875:1075200042C90100A7862240E36D00000000004729
1876:1075300061B101004000001062DD0100A486A84096
1877:1075400081320000AF8200881CB000002080000360
1878:10755000469901000000005FE191010000002D0646
1879:1075600048B10100000000F818B00100000000F868
1880:1075700004B00100AE861FF00E3000008186004C82
1881:107580000DC0000000002E5F0F80010081862307E0
1882:10759000146C00003000001048C9010024000040B5
1883:1075A000F199010000000003F0B1010000000000AB
1884:1075B000F0B1010000000016F0B10100240000004D
1885:1075C00000C801000000004761B10100A00000A454
1886:1075D00062DD0100B786A8461F1000008186000307
1887:1075E0000CB000008186000D18C00000C486225C2B
1888:1075F0001F7C00000000005C1F80010000003C4474
1889:1076000023E0010000002D1048C10100C486224083
1890:10761000E36D00000000004661B101004000001071
1891:1076200062DD0100C186A84081320000AF8200887F
1892:107630001CB000000000001710B00100C68600401A
1893:107640002BB00000008000034499010000000004FA
1894:10765000E0B10100CB86229F136C0000020000887D
1895:107660001CCC0100F582004081B20000F095004181
1896:107670003F430100000000408DB0010000000040C9
1897:1076800005B00100DF9500400F3001003087005C3D
1898:107690001F900000100000000EF401000000003AEE
1899:1076A00001840100030000071AF40100EF920007B3
1900:1076B00016300100DA862241816C0000D886224211
1901:1076C000816C0000AF8200881CB00000D986225F68
1902:1076D0000F7C00001A8700400FB00000E286A25A1B
1903:1076E0001F7C00006992004081320100E286222066
1904:1076F000856C0000DF869C0F80320000AF8200881E
1905:107700001CB000004A93005C1F0001003C95004241
1906:1077100061310100AF8200881CB0000090040007B6
1907:107720009630010000002D0548B10100000000F076
1908:1077300018B001000000000080B00100C387A25F04
1909:10774000816C0000A8002D431980010037002DF046
1910:1077500024B00100040000F38EF401000F0000F3D8
1911:1077600090880100F18622488E6C000036000040AF
1912:107770004399010058003D43E7E10100F1861FF005
1913:10778000246C0000F08623418F6C0000C387004703
1914:1077900081B00000C387004881B000004000004075
1915:1077A00043990100B0002DF014B00100F686220AC2
1916:1077B00090400000C395004091300100C387A24073
1917:1077C00080320000B0002D4581B00100028722F018
1918:1077D0002C300000A3002D3083B00100AC002DF34D
1919:1077E00082E00100FC86A3412C6C00000000001622
1920:1077F00082B0010098002DF082C0010088002DF0B9
1921:1078000082D00100000000F298E80100C387204CFC
1922:10781000826C00007C002D4198E80100C38720F0B5
1923:10782000986C00001A87220A803200004002000C87
1924:107830007E8901001A87A64081320000C387004973
1925:1078400081B00000200000A680B001000A8722431A
1926:10785000216F00001380004080DC01000B87004096
1927:1078600081B200001A80004080DC01000B87A25E1C
1928:107870000B7D00000000004008B101000D879F85CE
1929:10788000803200001187004081B20000EC8222406B
1930:10789000577D0000010000405799010011874240C8
1931:1078A000813200000000004493930100DD821A5BE6
1932:1078B00069930000040000CB81C8010017872240B3
1933:1078C000F27F0000C480006F9733010019872240C7
1934:1078D000737D0000DE8000418BB300001487004000
1935:1078E00081B2000021879C0F8032000000800010D0
1936:1078F00042C9010021872240E36D000000000045DD
1937:1079000061B101004000001062DD01001E87A84047
1938:1079100081320000AF8200881CB000004592220234
1939:107920008032000022874240813200000000004483
1940:107930009393010045921A02689700002C879C0FD0
1941:10794000803200000080001042C901002C872240D4
1942:10795000E36D00000000004561B10100400000102F
1943:1079600062DD01002987A84081320000AF820088D3
1944:107970001CB000004F922202803200002D8742404E
1945:107980008132000000000044939301004F921A02DC
1946:107990006897000037879C0F80320000008000103D
1947:1079A00042C9010037872240E36D00000000004516
1948:1079B00061B101004000001062DD01003487A84081
1949:1079C00081320000AF8200881CB00000F9822202E0
1950:1079D00080320000388742408132000000000044BD
1951:1079E0009393010000001A0268970100F982004099
1952:1079F00005B00000008000A656B1010056952F404A
1953:107A000005B001008887A240E76D0000B8942941C5
1954:107A1000E7B1010000000054EF930100000000F204
1955:107A20000EB00100290000400D9801000900000778
1956:107A300012E40100000000A713C0010003000007CA
1957:107A40001AF401000700000716880100FFFF00106C
1958:107A500034D801000000000334940100000000400D
1959:107A600023B00100201800401198010000B5000D5E
1960:107A700042C901006C87220BE67D00004D87604003
1961:107A800081320000FFFF000784890100548705C28E
1962:107A900024300000580400408132010000002D0510
1963:107AA00048B10100898770F0183001006C870040F0
1964:107AB00081B200000000704081B201006387A048DD
1965:107AC000236C00000000005035D001000080001A37
1966:107AD00042C901005D872240E36D000000000042C2
1967:107AE00061B101004000001A62DD01005A87A84020
1968:107AF00081320000AF8200881CB000002098004056
1969:107B000043990100898700F8183001005E87A2417F
1970:107B100023500000FFFF001034D8010000000003D4
1971:107B200034940100201800401198010000002E1A22
1972:107B300048B1010000000044F1B10100000000085C
1973:107B4000F0B101000000004261B101002000001A04
1974:107B500062DD01006787A809E031000000000041F4
1975:107B600023C001000000005035C0010000000044A7
1976:107B700011C00100788722410D5000000000004133
1977:107B80000FC001007487A0AA0F6C00000000004124
1978:107B90000FB001000900000712E40100000000A777
1979:107BA00013C00100000000401BB001004B870041E2
1980:107BB00017B000000002000912C801004B87834182
1981:107BC000174000000000004017B001004B87004143
1982:107BD0001BC0000083872340236C0000000000507E
1983:107BE00035D001000080001A42C901008087224080
1984:107BF000E36D00000000004261B101004000001A86
1985:107C000062DD01007D87A84081320000AF820088DC
1986:107C10001CB000002098004043990100898700F8BB
1987:107C2000183001008187A24123500000000000416C
1988:107C30000FC001008687A0AA0F6C00000000004161
1989:107C40000FB00100B8942007E4B101005695204020
1990:107C5000E7B101001A8700400FB00000FFFF000CE1
1991:107C600080D80100C002000C7E8901009B87265449
1992:107C7000613100009187870C803200000F000040C6
1993:107C80006299010091872840813200009187A254B7
1994:107C9000777D00008D87004081B2000096872246E4
1995:107CA000197C00000D000040629901000000A8400E
1996:107CB00081B200000000A254777D0100928700404D
1997:107CC00081B200009B872249197C00000E00004011
1998:107CD000629901000000A84081B200000000A25497
1999:107CE000777D01009687004081B2000010000040BF
2000:107CF000629901000000A84081B200000000A25477
2001:107D0000777D01009B87004081B2000030942F55A1
2002:107D1000F1930100004000A656B10100F982A24192
2003:107D2000E551000064000040E5990100A38744404C
2004:107D300081320000A687A293576F00000000004127
2005:107D400057C3010000001CAB27B30100F982225089
2006:107D5000FD7F0000F9822251FD7F0000F982A241DF
2007:107D60001D530000504600401D9B01003805004097
2008:107D7000813201000E000048B2CB01001004004027
2009:107D800049310100B2872240B56F00000E00004863
2010:107D9000B2CB010020040041B5530100F98200403C
2011:107DA00081B2000000000051FD8301004016004038
2012:107DB0004599010040050040493101001E0000487E
2013:107DC000B2CB01001004004081320100000000DA53
2014:107DD00091C0010004000048B2CB01002004004023
2015:107DE000B533010060162040E5B10100408200403B
2016:107DF000B533010008000048B2CB0100FFFF004A84
2017:107E0000B48B010020040040813201000A000048C8
2018:107E1000B2CB01001000004AB4F70100200400407A
2019:107E200081320100F982004081B20000050000406B
2020:107E300043990100000000F308B001000400204055
2021:107E4000E6B101000300004096E4010000000004D8
2022:107E500096C00100C987004B10C90000EC8A0041A0
2023:107E600009B00000040000208FB0000004000020D2
2024:107E70008FB00000040000208FB00000040000203C
2025:107E80008FB00000040000208FB00000040000202C
2026:107E90008FB00000040000208FB00000040000201C
2027:107EA0008FB00000208B004109B0000004000020CA
2028:107EB0008FB00000040000208FB0000004000020FC
2029:107EC0008FB00000040000208FB0000004000020EC
2030:107ED0008FB00000040000208FB0000004000020DC
2031:107EE0008FB00000040000208FB00000528B0045CE
2032:107EF00009B00000528B004509B00000528B0045CC
2033:107F000009B00000528B004509B0000004000020B9
2034:107F10008FB00000040000208FB00000040000209B
2035:107F20008FB00000040000208FB00000918B004350
2036:107F300009B00000BA8B004309B00000BE8B0044BA
2037:107F400009B00000098D004509B0000004000020C0
2038:107F50008FB00000040000208FB00000040000205B
2039:107F60008FB00000040000208FB00000040000204B
2040:107F70008FB00000CA8B004309B00000C98B0043DA
2041:107F800009B00000EA8A004509B0000004000020A2
2042:107F90008FB00000040000208FB00000040000201B
2043:107FA0008FB00000040000208FB00000798C0042E8
2044:107FB00009B00000798C004309B00000798C0044BE
2045:107FC00009B00000EA8A004509B000000400002062
2046:107FD0008FB00000040000208FB0000004000020DB
2047:107FE0008FB00000040000208FB0000004000020CB
2048:107FF0008FB00000998C004309B0000004000020FD
2049:108000008FB00000EA8A004509B00000040000209B
2050:108010008FB00000040000208FB00000040000209A
2051:108020008FB00000040000208FB00000040000208A
2052:108030008FB00000B78C004309B00000B78C00443B
2053:1080400009B00000EA8A004509B0000004000020E1
2054:108050008FB00000040000208FB00000040000205A
2055:108060008FB00000040000208FB00000040000204A
2056:108070008FB00000B78C004209B00000040000205F
2057:108080008FB00000EA8A004509B00000040000201B
2058:108090008FB00000040000208FB00000040000201A
2059:1080A0008FB00000040000208FB00000040000200A
2060:1080B0008FB00000DF8C004409B0000004000020F5
2061:1080C0008FB00000EA8A004509B0000004000020DB
2062:1080D0008FB00000040000208FB0000004000020DA
2063:1080E0008FB00000040000208FB00000EA8A004238
2064:1080F00009B00000F08C004509B00000F08C00458C
2065:1081000009B00000EA8A004509B000000400002020
2066:108110008FB00000040000208FB000000400002099
2067:108120008FB00000040000208FB00000F28C0042ED
2068:1081300009B00000F28C004309B00000F28C00444A
2069:1081400009B00000F28C004509B0000004000020D6
2070:108150008FB00000040000208FB000000400002059
2071:108160008FB00000040000208FB000000400002049
2072:108170008FB00000040000208FB00000FA8C004493
2073:1081800009B00000EA8A004509B0000004000020A0
2074:108190008FB00000040000208FB000000400002019
2075:1081A0008FB00000040000208FB000000B8D004253
2076:1081B00009B00000FB8C004309B000000B8D0044A7
2077:1081C00009B00000EA8A004509B000000400002060
2078:1081D0008FB00000040000208FB0000004000020D9
2079:1081E0008FB00000040000208FB0000004000020C9
2080:1081F0008FB000000C8D004309B00000028D0044D8
2081:1082000009B00000EA8A004509B00000040000201F
2082:108210008FB00000040000208FB000000400002098
2083:108220008FB00000EA8A004109B00000778C00425C
2084:1082300009B00000778C004309B00000778C00443F
2085:1082400009B00000EA8A004509B0000004000020DF
2086:108250008FB00000040000208FB000000400002058
2087:108260008FB00000EA8A004109B000000D8D004285
2088:1082700009B000000D8D004309B000000D8D0044D1
2089:1082800009B00000EA8A004509B00000040000209F
2090:108290008FB00000040000208FB000000400002018
2091:1082A0008FB00000040000208FB000000400002008
2092:1082B0008FB00000040000208FB0000004000020F8
2093:1082C0008FB00000148D004509B0000004000020AC
2094:1082D0008FB00000040000208FB0000004000020D8
2095:1082E0008FB00000168D004209B00000040000208D
2096:1082F0008FB00000040000208FB0000004000020B8
2097:108300008FB00000040000208FB0000004000020A7
2098:108310008FB00000040000208FB000000400002097
2099:108320008FB00000040000208FB00000228D0043B9
2100:1083300009B00000818D004309B00000BE8B0044ED
2101:1083400009B00000098D004509B0000004000020BC
2102:108350008FB00000040000208FB000000400002057
2103:108360008FB00000040000208FB000000400002047
2104:108370008FB00000898D004309B00000BE8B00441F
2105:1083800009B00000098D004509B00000040000207C
2106:108390008FB00000040000208FB000000400002017
2107:1083A0008FB00000040000208FB000000400002007
2108:1083B0008FB000009A8D004309B000000400002037
2109:1083C0008FB00000EA8A004509B0000004000020D8
2110:1083D0008FB00000040000208FB0000004000020D7
2111:1083E0008FB00000040000208FB000008E8B00438F
2112:1083F00009B00000858D004309B00000BE8B004429
2113:1084000009B00000098D004509B0000004000020FB
2114:108410008FB00000040000208FB0000007002D0581
2115:1084200048B10100000000F308B001000600204739
2116:10843000E6B101000400004796E401000000004797
2117:1084400096D001000000004796D001000000000413
2118:1084500096C001008988004B10C90000B28D004908
2119:1084600009B000000400002085B0000004000020D6
2120:1084700085B000000400002085B00000040000204A
2121:1084800085B000000400002085B00000040000203A
2122:1084900085B000000400002085B00000040000202A
2123:1084A00085B000000400002085B00000040000201A
2124:1084B00085B000000400002085B00000040000200A
2125:1084C00085B000000400002085B0000004000020FA
2126:1084D00085B00000EB8D004209B0000004000020D0
2127:1084E00085B000000400002085B0000004000020DA
2128:1084F00085B000000400002085B0000004000020CA
2129:1085000085B000000400002085B0000004000020B9
2130:1085100085B000000400002085B0000004000020A9
2131:1085200085B000000400002085B000000400002099
2132:1085300085B000000400002085B000000400002089
2133:1085400085B00000F18D004609B000000400002055
2134:1085500085B000000400002085B000000400002069
2135:1085600085B000000400002085B000000400002059
2136:1085700085B000000400002085B000000400002049
2137:1085800085B000000400002085B000000400002039
2138:1085900085B000000400002085B000000400002029
2139:1085A00085B000000400002085B000000400002019
2140:1085B00085B000000400002085B00000FF8D00425F
2141:1085C00009B000000400002085B00000218E0042A8
2142:1085D00009B000000400002085B000000400002065
2143:1085E00085B000000400002085B0000004000020D9
2144:1085F00085B000000400002085B0000004000020C9
2145:1086000085B000001C8E004A09B000000400002064
2146:1086100085B000000400002085B0000004000020A8
2147:1086200085B000000400002085B00000248E0043C7
2148:1086300009B000000400002085B000007D8E0044D9
2149:1086400009B000000400002085B0000004000020F4
2150:1086500085B000000400002085B000000400002068
2151:1086600085B000000400002085B000000400002058
2152:1086700085B000007C8E004B09B000000400002093
2153:1086800085B000000400002085B000000400002038
2154:1086900085B00000F48D004109B000000400002006
2155:1086A00085B00000F48D004309B00000F48D004453
2156:1086B00009B00000F48D004509B00000F48D0046BB
2157:1086C00009B00000F48D004709B00000F48D0048A7
2158:1086D00009B00000F48D004909B00000F48D004A93
2159:1086E00009B00000F48D004B09B00000F48D004C7F
2160:1086F00009B00000F48D004D09B000000400002016
2161:1087000085B000000400002085B00000DC8E00422F
2162:1087100009B000000400002085B00000DC8E004499
2163:1087200009B000000400002085B000000400002013
2164:1087300085B000000400002085B000000400002087
2165:1087400085B000000400002085B000000400002077
2166:1087500085B00000DC8E004B09B000000400002052
2167:1087600085B000000400002085B000000400002057
2168:1087700085B000000400002085B000000400002047
2169:1087800085B00000F48E004509B000000400002010
2170:1087900085B000000400002085B000000400002027
2171:1087A00085B000000400002085B000000B8F00475A
2172:1087B00009B000000400002085B00000E88E0045EC
2173:1087C00009B000000400002085B000000400002073
2174:1087D00085B000005491004609B00000040000205C
2175:1087E00085B000000400002085B0000004000020D7
2176:1087F00085B000000400002085B0000004000020C7
2177:1088000085B00000218E004609B00000FF8D0046B3
2178:1088100009B000001A8E004709B000001A8E004807
2179:1088200009B000000400002085B000000400002012
2180:1088300085B000000400002085B000001C8E004AB6
2181:1088400009B000000400002085B0000004000020F2
2182:1088500085B000000400002085B000000400002066
2183:1088600085B000000400002085B000000400002056
2184:1088700085B000007D8E004509B00000248E0043C5
2185:1088800009B000001A8E004709B000001A8E004897
2186:1088900009B000000400002085B0000004000020A2
2187:1088A00085B000000400002085B000007C8E004CE4
2188:1088B00009B000000400002085B000000400002082
2189:1088C00085B000000400002085B0000004000020F6
2190:1088D00085B000000400002085B0000004000020E6
2191:1088E00085B00000118F004409B00000118F0042D4
2192:1088F00009B00000D58A004709B00000D58A0048B9
2193:1089000009B000000400002085B000000400002031
2194:1089100085B000000400002085B00000118F004BDE
2195:1089200009B000000400002085B000000400002011
2196:1089300085B00000F48D004109B00000348F00477D
2197:1089400009B000000400002085B000001C8F004723
2198:1089500009B000000400002085B0000004000020E1
2199:1089600085B000000400002085B000000400002055
2200:1089700085B000000400002085B000000400002045
2201:1089800085B000001C8F004709B0000004000020E3
2202:1089900085B000000400002085B000000400002025
2203:1089A00085B000000400002085B000000400002015
2204:1089B00085B000000400002085B000000400002005
2205:1089C00085B000001C8F004709B00000348F0047BD
2206:1089D00009B000001A8E004709B000001A8E004846
2207:1089E00009B000000400002085B000000400002051
2208:1089F00085B000000400002085B000001C8F0047F7
2209:108A000009B000000400002085B000000400002030
2210:108A100085B000000400002085B0000004000020A4
2211:108A200085B000000400002085B000000400002094
2212:108A300085B000000400002085B000000400002084
2213:108A400085B00000438F004709B00000438F004805
2214:108A500009B000000400002085B0000004000020E0
2215:108A600085B000000400002085B000000400002054
2216:108A700085B000000400002085B000000400002044
2217:108A800085B00000A68F004009B00000C48F0047E9
2218:108A900009B00000B88F004809B00000148F0047EB
2219:108AA00009B00000148F004709B00000C48F0047D0
2220:108AB00009B00000CB8F004709B00000CB8F004801
2221:108AC00009B000000400002085B00000B88F004805
2222:108AD00009B00000148F004709B00000148F004750
2223:108AE00009B00000B88F004809B000000400002061
2224:108AF00085B000000400002085B0000004000020C4
2225:108B000085B00000DC8E004309B0000004000020A6
2226:108B100085B00000DC8E004509B00000DC8E004608
2227:108B200009B000001A8E004709B000001A8E0048F4
2228:108B300009B000000400002085B00000DC8E004A6F
2229:108B400009B000000400002085B00000DC8E004C5D
2230:108B500009B000000400002085B0000004000020DF
2231:108B600085B000000400002085B00000338F00476E
2232:108B700009B00000278F004809B000001B8F004794
2233:108B800009B000001B8F004709B00000338F004779
2234:108B900009B00000D58A004709B00000D58A004816
2235:108BA00009B000000400002085B00000278F0048B5
2236:108BB00009B000001B8F004709B000001B8F004761
2237:108BC00009B00000278F004809B000000400002011
2238:108BD00085B000000400002085B00000CD8F004269
2239:108BE00009B000000400002085B00000CD8F0044D3
2240:108BF00009B000000400002085B00000040000203F
2241:108C000085B000000400002085B0000004000020B2
2242:108C100085B000000400002085B0000004000020A2
2243:108C200085B00000CD8F004B09B00000040000208B
2244:108C300085B000000400002085B000000400002082
2245:108C400085B000000400002085B000000400002072
2246:108C500085B00000CD8F004309B000000400002063
2247:108C600085B00000CD8F004509B00000CD8F0046D3
2248:108C700009B00000CD8F004709B00000CD8F00483B
2249:108C800009B000000400002085B00000CD8F004A2C
2250:108C900009B000000400002085B00000CD8F004C1A
2251:108CA00009B00000CD8F004C09B000000400002086
2252:108CB00085B000000400002085B000000400002002
2253:108CC00085B00000E88F004609B0000004000020D5
2254:108CD00085B000000400002085B0000004000020E2
2255:108CE00085B000000400002085B000000B8F004715
2256:108CF00009B000000400002085B00000E88F0046A5
2257:108D000009B000000400002085B00000040000202D
2258:108D100085B000000400002085B0000004000020A1
2259:108D200085B000000400002085B000000400002091
2260:108D300085B00000E990004609B000000400002062
2261:108D400085B000000400002085B000000400002071
2262:108D500085B000000400002085B000000B8F0047A4
2263:108D600009B000000400002085B00000E990004632
2264:108D700009B000000400002085B0000004000020BD
2265:108D800085B00000E990004609B000000400002012
2266:108D900085B000000400002085B000000400002021
2267:108DA00085B000000400002085B000000E91004254
2268:108DB00009B000000400002085B00000040000207D
2269:108DC00085B000000400002085B0000004000020F1
2270:108DD00085B000000400002085B0000004000020E1
2271:108DE00085B000000D91004A09B000000400002089
2272:108DF00085B000000400002085B0000004000020C1
2273:108E000085B000000400002085B0000004000020B0
2274:108E100085B000000400002085B0000004000020A0
2275:108E200085B000000E91004609B00000040000204B
2276:108E300085B000001A8E004709B000001A8E004865
2277:108E400009B000000400002085B0000004000020EC
2278:108E500085B000000400002085B000000D91004A9C
2279:108E600009B000000400002085B0000004000020CC
2280:108E700085B000000400002085B000000400002040
2281:108E800085B000000400002085B000000400002030
2282:108E900085B000000400002085B000000400002020
2283:108EA00085B000000400002085B000000400002010
2284:108EB00085B00000D88F004109B0000004000020F8
2285:108EC00085B000000400002085B0000004000020F0
2286:108ED00085B000000400002085B0000004000020E0
2287:108EE00085B000000400002085B00000E58F00423E
2288:108EF00009B000000400002085B00000E58F0044A8
2289:108F000009B000000400002085B00000040000202B
2290:108F100085B000000400002085B00000040000209F
2291:108F200085B000000400002085B00000040000208F
2292:108F300085B00000E58F004B09B000000400002060
2293:108F400085B000000400002085B00000040000206F
2294:108F500085B000000400002085B00000040000205F
2295:108F600085B00000E58F004309B000000400002038
2296:108F700085B00000E58F004509B00000E58F004690
2297:108F800009B00000E58F004709B00000E58F0048F8
2298:108F900009B000000400002085B00000040000209B
2299:108FA00085B000000400002085B00000E58F004C73
2300:108FB00009B000000400002085B00000040000207B
2301:108FC00085B000000400002085B0000004000020EF
2302:108FD00085B00000F48E004C09B0000004000020B1
2303:108FE00085B000000400002085B0000004000020CF
2304:108FF00085B000000400002085B000000B8F004702
2305:1090000009B000000400002085B00000E88E004C8C
2306:1090100009B000000400002085B00000040000201A
2307:1090200085B00000A591004609B0000004000020B2
2308:1090300085B000000400002085B000004991004286
2309:1090400009B000000400002085B0000049910044F0
2310:1090500009B000000400002085B0000004000020DA
2311:1090600085B000000400002085B00000040000204E
2312:1090700085B000000400002085B00000040000203E
2313:1090800085B000004991004B09B0000004000020A9
2314:1090900085B000000400002085B00000040000201E
2315:1090A00085B000000400002085B00000040000200E
2316:1090B00085B000000400002085B0000004000020FE
2317:1090C00085B000004991004509B000004991004673
2318:1090D00009B000001A8E004709B000001A8E00483F
2319:1090E00009B000000400002085B00000040000204A
2320:1090F00085B000000400002085B000004991004CBC
2321:1091000009B000000400002085B000000400002029
2322:1091100085B000000400002085B00000E88E004209
2323:1091200009B000005491004609B00000040000207E
2324:1091300085B000000400002085B00000E88E0046E5
2325:1091400009B000000400002085B000000B8F00472C
2326:1091500009B000000400002085B0000054910046D2
2327:1091600009B000000400002085B0000004000020C9
2328:1091700085B000005491004609B0000004000020B2
2329:1091800085B000000400002085B00000040000202D
2330:1091900085B000005891004309B000000400002091
2331:1091A00085B000000400002085B00000040000200D
2332:1091B00085B000000400002085B000000B8F004740
2333:1091C00009B000000400002085B000005891004361
2334:1091D00009B000000400002085B000000400002059
2335:1091E00085B000005891004D09B000000400002037
2336:1091F00085B000000400002085B0000004000020BD
2337:1092000085B000000400002085B000006A91004392
2338:1092100009B000000400002085B000000400002018
2339:1092200085B000000400002085B00000040000208C
2340:1092300085B000000400002085B00000040000207C
2341:1092400085B000004791004A09B0000004000020EA
2342:1092500085B000000400002085B00000040000205C
2343:1092600085B000000400002085B00000040000204C
2344:1092700085B000000400002085B00000040000203C
2345:1092800085B000006A91004309B00000040000208E
2346:1092900085B000001A8E004709B000001A8E004801
2347:1092A00009B000000400002085B000000400002088
2348:1092B00085B000000400002085B000004791004AFE
2349:1092C00009B000000400002085B000000400002068
2350:1092D00085B000000400002085B0000004000020DC
2351:1092E00085B000007C91004309B00000040000201C
2352:1092F00085B000000400002085B0000004000020BC
2353:1093000085B000000400002085B000000B8F0047EE
2354:1093100009B000000400002085B000007C910043EB
2355:1093200009B000000400002085B000000400002007
2356:1093300085B000007C91004D09B0000004000020C1
2357:1093400085B000000400002085B00000FF8D0042C1
2358:1093500009B000000400002085B00000218E00420A
2359:1093600009B000000400002085B0000004000020C7
2360:1093700085B000000400002085B00000040000203B
2361:1093800085B000000400002085B00000040000202B
2362:1093900085B000009B91004209B00000040000204D
2363:1093A00085B000000400002085B00000040000200B
2364:1093B00085B000000400002085B0000004000020FB
2365:1093C00085B000000400002085B0000004000020EB
2366:1093D00085B00000218E004609B00000FF8D0046D8
2367:1093E00009B000001A8E004709B000001A8E00482C
2368:1093F00009B000000400002085B000000400002037
2369:1094000085B000000400002085B000009B9100465C
2370:1094100009B000000400002085B000000400002016
2371:1094200085B000000400002085B00000040000208A
2372:1094300085B000009D91004A09B0000004000020A2
2373:1094400085B000000400002085B00000040000206A
2374:1094500085B000000400002085B000000B8F00479D
2375:1094600009B000000400002085B000009D91004A72
2376:1094700009B000000400002085B0000004000020B6
2377:1094800085B000005591004609B00000040000209E
2378:1094900085B000000400002085B00000040000201A
2379:1094A00085B000005591004609B00000040000207E
2380:1094B00085B000000400002085B0000004000020FA
2381:1094C00085B000000400002085B000000B8F00472D
2382:1094D00009B000000400002085B00000559100464E
2383:1094E00009B000000400002085B000000400002046
2384:1094F00085B000005591004609B00000040000202E
2385:1095000085B000000400002085B0000004000020A9
2386:1095100085B000000400002085B00000A391004247
2387:1095200009B000000400002085B000000400002005
2388:1095300085B000000400002085B000000400002079
2389:1095400085B000000400002085B000000400002069
2390:1095500085B000004791004A09B0000004000020D7
2391:1095600085B000000400002085B000000400002049
2392:1095700085B000000400002085B000000400002039
2393:1095800085B000000400002085B000000400002029
2394:1095900085B00000A391004609B00000040000203F
2395:1095A00085B000001A8E004709B000001A8E0048EE
2396:1095B00009B000000400002085B000000400002075
2397:1095C00085B000000400002085B000004791004AEB
2398:1095D00009B000000400002085B000000400002055
2399:1095E00085B000000400002085B00000248E004DEE
2400:1095F00009B000000400002085B000000400002035
2401:1096000085B000000400002085B0000004000020A8
2402:1096100085B000000400002085B000000400002098
2403:1096200085B000000400002085B000000400002088
2404:1096300085B000000400002085B000000400002078
2405:1096400085B000000400002085B000000400002068
2406:1096500085B000000400002085B000000400002058
2407:1096600085B000000400002085B000000400002048
2408:1096700085B000000400002085B00000248E004D5D
2409:1096800009B000001A8E004709B000001A8E004889
2410:1096900009B000000400002085B000000400002094
2411:1096A00085B000000400002085B000000400002008
2412:1096B00085B000000400002085B0000007002E4B9C
2413:1096C0001990010025870004E6B10000D58A2242E6
2414:1096D000197C00009A94003A81300100D58A00403C
2415:1096E00081B20000D58A2242197C0000FF1F000FC2
2416:1096F0001E8C01000594004081320100E58A9C0F18
2417:10970000803200000000005C1F800100008000101B
2418:1097100042C90100E58A2240E36D000000000045D7
2419:1097200061B101004000001062DD0100E28AA84042
2420:1097300081320000AF8200881CB00000A9842202A0
2421:1097400080320000E68A424081320000000000447E
2422:109750009393010000001A0268970100A984004059
2423:1097600005B0000005002E4B19900100258700046C
2424:10977000E6B100000000004087B00100000000409A
2425:109780008DB001000080000342C90100400000A12B
2426:1097900044C90100000000F0E0B10100DF950006BF
2427:1097A000074001000000000607D00100D4002E5C35
2428:1097B0001F90010000000007F0B101000C800003C1
2429:1097C00042C90100000000F0F0B1010000000040BB
2430:1097D00081B20100000000FE96B00100000000FE12
2431:1097E00096C00100000000F0F0B101000000004050
2432:1097F00081B20100000000FE96C00100000000FEE2
2433:1098000096C00100000000F0F0B10100000000402F
2434:1098100081B20100000000FA96C00100000000FEC5
2435:1098200096C001000030004B948801000000004603
2436:1098300095F001000000004A96C001005E012E3440
2437:10984000978401000200004BE4E501006401204020
2438:10985000E1B101000900000786E4010000002EA725
2439:1098600087C001001000001048C90100100000402E
2440:10987000F199010058010043F0C9010058010005A9
2441:10988000E0C901000000004461B10100A00000A493
2442:1098900062DD01000F8BA84081320000000000054E
2443:1098A00048B101001A0000409798010008002E40BE
2444:1098B00095B00100178B204B946C00000000004015
2445:1098C000F1B10100148B004195C000001080001020
2446:1098D00042C901001E8B2240E36D000000000044DD
2447:1098E00061B101004000001062DD01001A8BA84048
2448:1098F00081320000AF8200881CB00000000000052B
2449:1099000048B101009A94004081300100EA8A004089
2450:1099100081B200000C80000342C90100000000F881
2451:1099200086B00100000000F888B00100238B44409D
2452:1099300081320000268BA24CFD7F0000278B004C5B
2453:10994000FD930000288B20F0566F0000000000F00F
2454:1099500056B3010000001C4081B2010000800010DD
2455:1099600044C9010064000040F19901007000000545
2456:10997000F0C9010000000043F0B101000000004701
2457:1099800061B101002000001062DD01002E8BA844AF
2458:10999000E0310000100000108CC80100008000467B
2459:1099A00044C9010040000040F19901006801000530
2460:1099B000F0C9010064000043F0C901000000004745
2461:1099C00061B101000000004662B10100368BA8447D
2462:1099D000E0310000AF8200881CB0000009000007E1
2463:1099E00086E4010038002EA787C001008B002D05FA
2464:1099F00048B101003E8B2243E77D00000000004497
2465:109A000045C10100418B2244E77D00000000004C6D
2466:109A100045C101000000004A19900100680120A220
2467:109A2000E4B101008800004043990100458B230BFD
2468:109A3000E56D000000000041199001000080001059
2469:109A400044C9010050000040F19901005801004351
2470:109A5000F0C9010058010005E0C901000000004400
2471:109A600061B101000000001062B101004A8BA84002
2472:109A700081320000AF8200881CB000005C002E051F
2473:109A800048B101000080000342C90100000060F0FD
2474:109A900096B001009A94004181300100EA8A0040AA
2475:109AA00081B20000558BA249197C0000860000405D
2476:109AB00047990100598B0040E5B1000086002F490D
2477:109AC00019800100598BA2F2803200008B00004007
2478:109AD0004799010000000042E79101005C8BA2461B
2479:109AE000197C0000A000004047990100608B0040F5
2480:109AF000E5B10000A0002F4619800100608BA2F2A2
2481:109B0000803200008B0000404799010000000041B6
2482:109B1000E7910100A80000404399010034002DF0B6
2483:109B200024B00100000000FB0CB00100000000FBAD
2484:109B300010B00100000000FB12B001000F0000F3A4
2485:109B400016880100040000F314F401008B8B2640FA
2486:109B500081320000738B220A166C000058003D43CE
2487:109B600013E00100000000F882B00100040022F0C0
2488:109B7000843000008795004081320100AF82008868
2489:109B80001CB000000000000548B1010000000041C9
2490:109B900013C00100728BA043136C00000000004052
2491:109BA00013B00100688B004115D000008B8B220A96
2492:109BB0008032000058003D4313E00100000000F82F
2493:109BC00082B00100040022F084300000879500403C
2494:109BD0008132010040002040E1B10100AF820088E5
2495:109BE0001CB000000000000548B101008B8B224131
2496:109BF000155000000000004111C001007F8BA04300
2497:109C0000116C00000000004011B0010058003D43FD
2498:109C100011E00100000000F836B00100040022F05D
2499:109C2000003000000000005083B00100D9940047CC
2500:109C300061310100AF8200881CB000004292000533
2501:109C4000483101000000004561B1010040000010F2
2502:109C500062DD0100878BA84081320000AF8200885E
2503:109C60001CB000007B8B000548B10000370020408D
2504:109C7000E7B101000B95005181300100EA8A0040F4
2505:109C800081B2000034002E41F5B101000011004006
2506:109C9000E5990100938B00481990000034002E4193
2507:109CA000F5B1010000110040E599010000800003BA
2508:109CB00042C90100000000F894B00100988B2245D1
2509:109CC000237C0000B0002FF08CB00100000060F099
2510:109CD0008CC00100900000404399010035002DF038
2511:109CE0008CB0010058003E43E7E101009D8B224803
2512:109CF000197C0000000000418DC001000000680ACE
2513:109D00008CC0010038002A4AE0B1010028000000A0
2514:109D1000E0C901003C00201BE0B1010010800003FD
2515:109D200042C90100000000F838B00100000000F84E
2516:109D300026B00100040022F802300000AB8B2301A2
2517:109D4000146C0000000000F880B00100000000F872
2518:109D500082B001004C0020F0E4B10100440020403A
2519:109D6000E0B1010048002041E0B10100A8002D1041
2520:109D700032B00100C39500F024300100B48BA2443E
2521:109D8000816C0000B28B2241197C00006E93004070
2522:109D90003B300100D88BA2083C300000B48B00405F
2523:109DA00081B20000AB92004081320100D88BA20842
2524:109DB0003C3000005000201CE0B101005400201392
2525:109DC000E0B101004E002001E4B101004000200A92
2526:109DD000E0B101000B95005F81300100EA8A00408C
2527:109DE00081B2000037000040479901004D9300F315
2528:109DF00094300100938B224A80320000C08B0040D7
2529:109E000081B2000037000040479901004D9300F3F4
2530:109E10009430010058003E4397E001000000001B11
2531:109E2000F0B101001F006000008C0100EA8A85117A
2532:109E3000803200000480000342C90100B0002FF00E
2533:109E40008CB00100000060F08CC001000B95005F39
2534:109E500081300100EA8A004081B20000CA8B0049CB
2535:109E600019800000CF8B2241197C00006E930040C6
2536:109E70003B300100D38BA2083C3000000B95005F03
2537:109E800081300100EA8A004081B20000AB920040BC
2538:109E900081320100D38BA2083C3000000B95005F9B
2539:109EA00081300100EA8A004081B2000050002D108C
2540:109EB00032B0010054002DF038B001004E002DF0FA
2541:109EC00026B0010040002DF202B00100000000F0B9
2542:109ED00014B00100300000108CC801000080004662
2543:109EE00044C9010068012D4461B10100100068F20D
2544:109EF00080C8010000000008F0B101005801000511
2545:109F0000E0C901000000000B37B001000000004074
2546:109F100036D001005C012E4010C001000000000698
2547:109F200080C001000000005281D00100A0940040D8
2548:109F3000E43101002000004662DD0100E48BA8400E
2549:109F400023300000E592004081320100ED92004094
2550:109F500081320100F28B82412340000020800010FA
2551:109F600042C90100EF8B2240E36D00000000004673
2552:109F700061B101004000001062DD0100EC8BA840DF
2553:109F800081320000AF8200881CB000000000000594
2554:109F900048B101000000001032B001000000004193
2555:109FA00023B001000080001944C90100FA8B22414E
2556:109FB000197C0000F68BA3010C6C0000F78B0006E7
2557:109FC00004B000000000000104B00100F98B200281
2558:109FD000366C00000000001B04B00100FD8B000285
2559:109FE000E0B10000FC8BA3010C6C0000FD8B0006AF
2560:109FF00004B000000000000104B00100000068028D
2561:10A0000016940100FFFF000B16D80100000068083D
2562:10A010003E9601000000001CF0B101000000004667
2563:10A0200061B101002000001962DD0100028CA8135B
2564:10A03000E0310000398C22021450000044002D024F
2565:10A040000CD00100298CA20202500000108C225C6E
2566:10A050001F7C00002080000342C901000F8C2240B9
2567:10A06000E36D00000000004761B1010040000010F6
2568:10A0700062DD01000B8CA84081320000AF820088B5
2569:10A080001CB000000000000548B1010044002D5C38
2570:10A090001F80010048002DF038B001004C002DF069
2571:10A0A00026B0010038002FF202B001002A8C2201F4
2572:10A0B000146C00001D8C22461F7C0000000000462E
2573:10A0C0001F80010020002D0348B101001C8C22409C
2574:10A0D000E36D00000000004461B101004000001089
2575:10A0E00062DD0100198CA84081320000AF82008837
2576:10A0F0001CB0000038002F0548B10100000000F836
2577:10A1000094B0010038002DF096B001000000004C22
2578:10A11000E1C101002000000348C901000000224AFB
2579:10A12000F1B1010044000005F0C901000000004A3F
2580:10A13000F0B101000000004BE0B101000000004759
2581:10A1400061B10100A00000A462DD0100268CA85CC2
2582:10A150001F1000002A8C000548B10000000000021A
2583:10A1600038C00100348C220680320000000000500C
2584:10A1700033C00100328CA202366C000004008F0D47
2585:10A1800042310000100000F810C801000000005C1F
2586:10A1900011800100F007004037980100E88B00A112
2587:10A1A0001AB000000000000210C00100E88B00029D
2588:10A1B00036D000005000201CE0B1010054002013F4
2589:10A1C000E0B101004E002001E4B101004000200A8E
2590:10A1D000E0B101003E8C005F01B0000037002D4669
2591:10A1E00001B00100040000F380F401003D8CA043A5
2592:10A1F000816C00000000005501B0010040002040CB
2593:10A20000E1B101000080001942C90100448C2240E4
2594:10A21000E36D00000000004661B10100400000193C
2595:10A2200062DD0100418CA84081320000AF820088CD
2596:10A230001CB00000EA920040813201003080001022
2597:10A2400042C901004B8C2240E36D00000000004435
2598:10A2500061B101004000001062DD0100488CA8409F
2599:10A2600081320000AF8200881CB0000060012F0521
2600:10A2700048B101000000000BE4B1010000000050F3
2601:10A2800017F00100508C90F21640000000000041D1
2602:10A2900017C001000000662017A40100320000A6CC
2603:10A2A0002AC00100000000F22A940100538C4548A6
2604:10A2B0006131000000D0001E62DD0100588C284092
2605:10A2C00005300000548C2248777D00005B8C0040F4
2606:10A2D00081B200000000001562B10100648C2840CA
2607:10A2E00081320000588C004081B2000000001D0047
2608:10A2F00092B00100618C2241197C000000800003B3
2609:10A3000042C90100B09200F8003001005E8CA24109
2610:10A310003B500000658C004900B00000FF07001EA4
2611:10A32000008C0100B092004081320100658C004930
2612:10A3300000B0000000001D4719800100688C225FFA
2613:10A34000016C0000ED95004081320100C5870000DE
2614:10A3500080B000006F8C225C1F7C00002080000316
2615:10A3600042C901006F8C2240E36D000000000047ED
2616:10A3700061B101004000001062DD01006C8CA8405A
2617:10A3800081320000AF8200881CB000006F8C400555
2618:10A3900048310000FFFF000794890100758C85CAD1
2619:10A3A00094300000ED95185C1F0001000E00000FB6
2620:10A3B0001E8C0100E686004081B200000B9518005B
2621:10A3C00080300100EA8A0047198000000000004048
2622:10A3D00019800100EA8A2247197C0000AB920040F4
2623:10A3E000813201007C8CA20880320000EA8A0040A1
2624:10A3F00081B20000A09400400D3001009C0100409B
2625:10A4000045990100FFFF000B988801008B002D503B
2626:10A4100017F00100828C904C1640000000000041B3
2627:10A4200017C00100848C2243E77D00000000004437
2628:10A4300045C101000000662017A40100680100402A
2629:10A44000439901005C012EF280B0010002006240DD
2630:10A450007ECD01000000005781C0010000002E10D9
2631:10A4600048B1010003000040F08D01000000000829
2632:10A47000F0B1010058010005E0C9010000000044EE
2633:10A4800061B101000000001062B101008E8CA84093
2634:10A4900081320000AF8200881CB00000000000057F
2635:10A4A00048B10100928C454861310000005000081D
2636:10A4B00062DD0100988C284005300000938C224812
2637:10A4C000777D0000B0921D0800300100EA8A00404C
2638:10A4D00081B20000EA8A1D47198000003500004063
2639:10A4E00047990100010063F384C801009D8CA043DB
2640:10A4F000856C00000000634085B00100A8000040AA
2641:10A500004399010037002FF024B00100010063F3EC
2642:10A5100082CC0100A88CA2419E060000EA8A224457
2643:10A5200083700000360000404399010058003D430D
2644:10A53000E7E10100EA8A1FF0246C0000ED95004875
2645:10A5400081300100C5872341836C0000C587004727
2646:10A5500081B0000058003D4385E00100000000F894
2647:10A5600036B00100000000F000B0010028000040FB
2648:10A5700083980100D994004761310100AF820088BF
2649:10A580001CB0000000002D0348B1010008002DF0B0
2650:10A5900094B00100000000F88EB0010090002DF092
2651:10A5A00014B001000000000548B10100998BA240E1
2652:10A5B0008F7C0000B68C22478F7C0000998B00486E
2653:10A5C00019900000258D004081B2000036002D5DFD
2654:10A5D00005B4010037002DF380B00100000000F346
2655:10A5E0008EB001005C003D4381E00100A8002DF029
2656:10A5F00094B00100000000F024B001002000001021
2657:10A6000086DC01004080000344C90100B191004A8A
2658:10A61000F031010036002F5C1F900100C48CA25065
2659:10A620008F50000034002040E1B10100EA8A004070
2660:10A6300081B200000000634181C00100C78CA043CB
2661:10A64000816C00000000634081B0010037002047AA
2662:10A65000E6B10100EA8A2247803200000400004788
2663:10A660000CF401000000004F8F840100DC8C2247B5
2664:10A670000C6C000058003D4381E00100DC8C1FF0B1
2665:10A68000246C00000000005C1F80010000800010AE
2666:10A6900042C90100D58C2240E36D00000000004556
2667:10A6A00061B101004000001062DD0100D28CA840C1
2668:10A6B00081320000AF8200881CB00000D58C42407F
2669:10A6C00005300000000000449393010000001A5D73
2670:10A6D00069930100DA8C23410D6C0000B78C0005F2
2671:10A6E00048B10000ED95000548310100C5870048DC
2672:10A6F00081B00000EA8A22408F6C00000B95005F59
2673:10A7000081300100EA8A004081B20000A2000040CE
2674:10A7100043990100000000F384B00100A6002D4918
2675:10A7200019900100020000F280F40100B8002D40F1
2676:10A7300081B20100000000F280C001000000004072
2677:10A7400082F801001900004081980100EB8CA040C4
2678:10A75000826C00002C01004081980100EB8CA3402A
2679:10A76000826C00000000004180B00100ED8C204CA4
2680:10A77000856C00000000004185C00100860020407B
2681:10A78000E4B10100A2002042E6B10100EA8A0040E3
2682:10A7900081B200009A94005081300100EA8A0040A2
2683:10A7A00081B200000480000342C90100040022F0CD
2684:10A7B00080300000000000408DB00100DF950040B7
2685:10A7C00087300100B0002F5C1F900100000060F096
2686:10A7D00080C001000B95005F81300100EA8A0040D3
2687:10A7E00081B200000400004081B20000EA8A2246E3
2688:10A7F000197C0000A000004047990100010062F2AE
2689:10A8000096CC0100EA8AA640813200000B95004AEE
2690:10A8100081300100E094004695300100EA8A004052
2691:10A8200081B20000EA8A2249197C000086000040BB
2692:10A8300047990100010062F280CC0100EA8AA6403B
2693:10A84000813200000B95004A81300100E0940047FE
2694:10A8500095300100EA8A004081B200004292004037
2695:10A8600081320100EA8A005C1F900000EA8A004001
2696:10A8700081B20000EA8A004081B20000BA000040C4
2697:10A8800047990100010062F280C80100118D9040DB
2698:10A8900080320000FFFF624081980100A400004068
2699:10A8A00047990100EA8A2240E56D0000EA8A0041EA
2700:10A8B000E5C100009A94004D81300100EA8A004011
2701:10A8C00081B200005C00004047990100040022F0C2
2702:10A8D0009630000000000040E1B10100008000035C
2703:10A8E00044C901000000004BE0B10100000000403D
2704:10A8F0008DB00100DF950040873001008B000040E3
2705:10A9000047990100218D80F396300000000000403F
2706:10A91000E78101000000004719900100EA8A005C0D
2707:10A920001F900000340000404599010001000040E4
2708:10A93000F599010000110040E5990100AB9200403B
2709:10A9400081320100368DA2088032000037000040BD
2710:10A9500047990100000000F382B00100000063513C
2711:10A9600083D001003400004047990100010063F3E7
2712:10A9700084CC01002E8D9F42803200000000634293
2713:10A9800085B001000000004503F001000000000157
2714:10A9900000C00100308D375C613100000000001BF9
2715:10A9A00062B10100318DA84B1910000000000000B9
2716:10A9B00062B10100338DA840813200001A87174030
2717:10A9C00081B200000080000342C9010090002DF018
2718:10A9D00094B00100AC002DF030B0010035002DF036
2719:10A9E00028B0010058003E43E7E1010001000018D3
2720:10A9F000F0C901000000004AE0B101003800200069
2721:10AA0000E0B101003C00201BE0B10100400020400B
2722:10AA1000E1B10100000000402BB00100EF940040C4
2723:10AA20000D3001000000001816C00100458DA01473
2724:10AA3000164400000000004117C001000E0000A2F3
2725:10AA400044C9010000000018F8B10100B0002D1445
2726:10AA5000F8B1010010500040879801004E8D224A45
2727:10AA6000197C00000030004386C801000030000B54
2728:10AA700016C801004E8DA440813200000000004144
2729:10AA800017C0010001006E43869801002695003032
2730:10AA900081300100528DA0411740000000000041AC
2731:10AAA00017C00100598D224A197C0000080000A23D
2732:10AAB00044C90100CC002DABF9B10100000000AB8E
2733:10AAC00017C00100588DA0F016440000000000419E
2734:10AAD00017C00100000064F082B001009000004047
2735:10AAE000459901000000604131C00100BC000040F8
2736:10AAF000439901005F8D060C80320000A00020F217
2737:10AB0000E4B1010004000946191000009C01004056
2738:10AB100045990100FFFF000B988801008B002D5024
2739:10AB200017F00100648D904C1640000000000041B9
2740:10AB300017C00100668D2243E77D0000000000443D
2741:10AB400045C101000000662017A401006801004013
2742:10AB5000439901005C012EF280B0010002006240C6
2743:10AB60007ECD01000000005781C0010000002E10C2
2744:10AB700048B1010003000040F08D01000000000812
2745:10AB8000F0B1010058010005E0C9010000000044D7
2746:10AB900061B101000000001062B10100708DA84099
2747:10ABA00081320000AF8200881CB000000000000568
2748:10ABB00048B10100748D4548613100000050000823
2749:10ABC00062DD0100758DA8400530000035001D4094
2750:10ABD00047990100010063F384C801007B8DA04305
2751:10ABE000856C00000000634085B001003700004024
2752:10ABF00047990100010063F382CC01008B00004003
2753:10AC00004799010000000045E79101000B95005FA6
2754:10AC100081300100EA8A004081B200003700004024
2755:10AC2000479901004D9300F394300100258D224A8D
2756:10AC300080320000C08B004081B20000370000402D
2757:10AC4000479901004D9300F394300100908B224A04
2758:10AC500080320000C08B004081B20000360000400E
2759:10AC600043990100000000FB12B001000F0000F347
2760:10AC700090880100040000F30CF40100BA8B220656
2761:10AC8000906C00005C003D4313E00100A8002DF033
2762:10AC900094B0010037002FF024B0010036002A5094
2763:10ACA000E7D101000000634113C00100958DA0436E
2764:10ACB000136C000000000040E7B10100AF910010EC
2765:10ACC00086300100AF8200881CB00000978D4205DD
2766:10ACD000483100000000004493930100BA8B1A5DD4
2767:10ACE0006993000036002D1086B001005C003D43E2
2768:10ACF000E7E10100A8002DF094B0010035002FF02D
2769:10AD000024B0010001006BFB84C80100A28DA043A8
2770:10AD1000856C000035002040E7B1010000000040D4
2771:10AD200081B20100010063F312C80100A58DA043A8
2772:10AD3000136C000000000040E7B1010040800003F8
2773:10AD400044C90100B191004AF0310100AF8200888E
2774:10AD50001CB00000A88D42054831000000000044EE
2775:10AD60009393010000001A5D6993010037000040D1
2776:10AD700047990100110063F382CC0100A18C2241AC
2777:10AD80009E060000350000404399010058003D43F5
2778:10AD9000E7E10100000000F836B00100AB8C00F0E4
2779:10ADA00000B000005E012D0548B10100B38D65F2D1
2780:10ADB0001230000000993F4213F00100B88D224785
2781:10ADC000E77D0000F58275881CB00000B28D004060
2782:10ADD00081B2000000000047E791010000007542C9
2783:10ADE000199001007500004061990100BA8DA8B169
2784:10ADF0000C3000003694001094300100AF820088BF
2785:10AE00001CB000005E012E0548B10100C0A83D46FF
2786:10AE10000DE001000000004097B00100C48D224009
2787:10AE2000E16D00000400024197400000C18D005018
2788:10AE300043C10000D08D224B803200000000624BE5
2789:10AE4000129401000900000796E40100000000A729
2790:10AE500097C001003000001094C801000080004A33
2791:10AE60004499010000000042F1B101005E01004B75
2792:10AE7000F0C901005E010005E0C9010000000044C6
2793:10AE800061B101002000004A62DD0100CE8DA840C2
2794:10AE9000813200000080001044C901000000005011
2795:10AEA000F1B101000400000996E40100000068A867
2796:10AEB00097C00100D4000005E0C901000000004473
2797:10AEC00061B101000000001062B10100D68DA84000
2798:10AED00081320000AF8200881CB0000000993F4220
2799:10AEE00013F00100DA8D6540813200003F0000F36D
2800:10AEF0009688010000000040E7B101000000755590
2801:10AF000061B101000000000662B10100DE8DA840C1
2802:10AF100081320000E38D224B803200000000004BA4
2803:10AF200062B10100E18DA84081320000000000976D
2804:10AF300013B001000000009697B00100E98D2009D0
2805:10AF4000966C0000E98D1F0996240000F5820088A8
2806:10AF50001CB00000E48D004081B200009A940057BC
2807:10AF600081300100D58A000548B100002E00004064
2808:10AF700043990100EF8D22F3803200009A94004241
2809:10AF8000813001001A87004081B200000B95005209
2810:10AF900081300100D58A0042198000009A94003A5D
2811:10AFA000813001000B95005281300100D58A0040AC
2812:10AFB00081B200000000004005B00100AD930040E8
2813:10AFC00095300100D58A2240956C0000FA8DA24090
2814:10AFD0001F7C0000B0920040813201001A870040BF
2815:10AFE00081B200000480000342C90100000000F2A9
2816:10AFF00002B0010058930052953001005F93004B5E
2817:10B0000002B000001A87004081B200009495004011
2818:10B0100095300100068EA20880320000068EA2162E
2819:10B02000803200001A872242197C00000000004B89
2820:10B03000199001009A94003A813001001A8700406B
2821:10B0400081B20000002300A616B00100098E831E05
2822:10B05000803200000008000B16DC01000000000038
2823:10B060002AC00100E3940008803001000D8E005ECC
2824:10B07000179000000495004361310100BD9100402C
2825:10B080008D300100EB9400071614010000800010C1
2826:10B0900042C90100158E2240E36D0000000000430C
2827:10B0A00061B101004000001062DD0100128EA84075
2828:10B0B00081320000AF8200881CB000008C94005EDA
2829:10B0C00005100100B092004081320100198E220962
2830:10B0D000803000000B95004013300100DA8A000533
2831:10B0E00048B10000DD93004081320100D58A004064
2832:10B0F00081B200000000004A1F900100208E224310
2833:10B100003D7C000000000044199001000000004355
2834:10B110003D800100218E00421990000014002D4551
2835:10B120001F9001007D8E831E803200007D8E0044C2
2836:10B1300019900000A292004081320100358EA208D1
2837:10B1400080320000358EA21680320000318EA2427D
2838:10B15000197C00000082000204DC0100A09800407D
2839:10B160004799010030050041893001002E8EA2412F
2840:10B17000197C0000B0920040813201001A87004023
2841:10B1800081B2000058930015943001005F93004B8A
2842:10B1900002B000001A87004081B20000DD93004039
2843:10B1A000813201000000004B199001009A94003A8E
2844:10B1B000813001001A87004081B20000388E22429F
2845:10B1C000197C0000DD93004081320100398E00407F
2846:10B1D00081B20000AD93004081320100658E2241B2
2847:10B1E000197C0000C000001598C80100658EA00BF6
2848:10B1F000996C00003000001080C801000080004001
2849:10B200004499010000000050F1B10100000000036A
2850:10B21000F0B101000000004261B1010000000040F7
2851:10B2200062B10100418EA800E0310000AF820088C9
2852:10B230001CB000000000000548B10100C00000156E
2853:10B2400098C8010030002E0B99D0010000006A5010
2854:10B2500099C00100C000620180CC01000C80000395
2855:10B2600042C901002D002DF022B001000000004C69
2856:10B2700080C001000000005C23800100D4003F4139
2857:10B28000E7E101000B000011E4F501002F00204769
2858:10B29000E7B50100528E230B816C00000000004FC7
2859:10B2A000E59101000000000880B001000000000BE3
2860:10B2B00003B001000000001502D00100E39400007B
2861:10B2C0002A4001000000004361B10100400000106D
2862:10B2D00062DD0100578EA84081320000AF820088F5
2863:10B2E0001CB00000B092000548310100C000000110
2864:10B2F00080CE0100638E2611003000001000000097
2865:10B300002AC801000000000880B001000000000110
2866:10B3100080C00100C00000409998010000000001B9
2867:10B3200098D00100E394004C02300100C0000040BE
2868:10B33000039801006A8E004081B2000030002F089F
2869:10B3400080B00100C0000015F4C90100C000000178
2870:10B35000E4CD0100C000004003980100E394000028
2871:10B360002A4001006F8E22441F7C0000AC002F4059
2872:10B3700013B0010000000001E0C10100B000004076
2873:10B3800047990100708E0001E0D10000BD9100409E
2874:10B390008D300100806300A616B00100EB94000719
2875:10B3A000161401000080001042C90100788E22406E
2876:10B3B000E36D00000000004361B101004000001097
2877:10B3C00062DD0100758EA84081320000AF820088E6
2878:10B3D0001CB000008C94005E051001007B8E2209D9
2879:10B3E000803000000B95004081320100D58A0005B5
2880:10B3F00048B100007D8E004A1F9000000000000050
2881:10B4000010B0010024002D1510C0010028002DF0FF
2882:10B4100016B0010022002DF026B0010014002FF21A
2883:10B420000CB0010000000001E0D10100000000109C
2884:10B4300032B001000000000B1BB0010004001F151A
2885:10B440001A5000000000004023B00100000000017D
2886:10B450002AB001004B94004035B000002F0020407E
2887:10B46000E7B10100C18EA2451F7C00002400200B23
2888:10B47000E0B1010028002013E0B101002200200605
2889:10B48000E4B10100978E225C1F7C00000000005C8C
2890:10B490001F8001003080001042C90100978E2240B9
2891:10B4A000E36D00000000004761B1010040000010A2
2892:10B4B00062DD0100938EA84081320000AF820088D7
2893:10B4C0001CB000000000000548B101000080001918
2894:10B4D00042C90100BA8E2240E36D0000A88E2242CC
2895:10B4E000197C000005940040813201005792004011
2896:10B4F00081320100B58E224B8032000000000043F3
2897:10B5000061B101004000001062DD01009E8EA84084
2898:10B5100081320000AF8200881CB00000A48E22415E
2899:10B52000197C0000C692004011300100A58E000574
2900:10B5300048B10000B092004081320100A78E22097C
2901:10B54000803000000B95004081320100F9820040FC
2902:10B5500005B0000005940040813201005392004084
2903:10B56000813201000000004361B101004000001081
2904:10B5700062DD0100AB8EA84081320000AF820088FE
2905:10B580001CB00000B18E2241197C0000C692004020
2906:10B5900011300100B28E000548B10000B0920040A9
2907:10B5A00081320100B48E2209803000000B950040EA
2908:10B5B00081320100F982004005B000000000004324
2909:10B5C00061B101004000001062DD0100B68EA840AC
2910:10B5D00081320000AF8200881CB00000000000052E
2911:10B5E00048B10100BD8E2241197C0000C692004086
2912:10B5F00011300100BE8E000548B10000B09200403D
2913:10B6000081320100C08E2209803000000B9500407D
2914:10B6100013300100DA8A004005B0000000800019F4
2915:10B6200042C90100C88E2240E36D000000000043C3
2916:10B6300061B101004000001062DD0100C48EA8402D
2917:10B6400081320000AF8200881CB0000000000005BD
2918:10B6500048B101000000004005B00100CC8E22413D
2919:10B66000197C0000C692004011300100CD8E00050B
2920:10B6700048B10000B09200408132010008002D0A5C
2921:10B6800084B00100000000F082B0010014002040EE
2922:10B69000E1B10100D28E031E80320000D38E004142
2923:10B6A00087B000002100004087980100CE93004041
2924:10B6B000813201000000005C1F900100D78E22093A
2925:10B6C000803000000B95004013300100DA8E2244D8
2926:10B6D000197C00000B95004F8130010000000044F0
2927:10B6E00019800100D58AA24A1F7C0000DA8A004036
2928:10B6F00081B20000BA002040E5B10100E08E9C1745
2929:10B7000080320000CC000040439901009D9500402C
2930:10B71000813201004495004013300100C000004018
2931:10B7200043990100C4002DF082B00100789500F02B
2932:10B7300084300100B092004081320100DA8A22098F
2933:10B74000803000000B95004013300100DA8A004081
2934:10B7500081B200002E00004043990100EC8E22408F
2935:10B76000E76D00003200004043990100F48EA240D2
2936:10B77000E56D00009A930040813201002400200B07
2937:10B78000E0B1010028002013E0B1010022002006F2
2938:10B79000E4B101001400200AE0B10100DA8A2209B4
2939:10B7A000803000000B95004013300100DA8A004021
2940:10B7B00081B200009A93004081320100539300400F
2941:10B7C00081320100028F2241197C00000000000B31
2942:10B7D00099B0010004001F1598500000028F20014D
2943:10B7E000986C00007000000348C9010000002E465C
2944:10B7F0001F90010000000050F1B1010000000003A3
2945:10B80000F0B101000000004261B10100A00000A4FD
2946:10B8100062DD0100FF8EA800E0310000000000059D
2947:10B8200048B10100AC002F0010B001000000000181
2948:10B83000E0C1010014002F1510C001000000000A33
2949:10B8400080B001000000600180D0010000000047CE
2950:10B8500019900100848E2209803200000B950009A6
2951:10B8600080300100848E004013B00000008000038F
2952:10B8700042C90100000000F082B001001300004046
2953:10B88000879801000000004C43C10100CE9300F0F6
2954:10B8900084300100D58A005C1F9000002C002040FD
2955:10B8A000E7B101002D002040E7B10100D58A004238
2956:10B8B00019800000C093004081320100E0940048EC
2957:10B8C000953001000000004561B10100400000100A
2958:10B8D00062DD0100178FA84013300000AF8200889E
2959:10B8E0001CB000001D8F000548B100001C8F0040F7
2960:10B8F00013B000000000000012B00100080000407A
2961:10B900004399010014002DF082B00100040022F0E0
2962:10B91000843000001300004087980100CE9300405F
2963:10B92000813201000000005C1F900100358F00098A
2964:10B9300000B00000D58A8742191000008B002F4705
2965:10B9400019800100D58A0040E79100002F000040D7
2966:10B9500047990100338F2247E77D00003492004071
2967:10B96000E7310100338F2200803200002E8FA24089
2968:10B970001F7C0000B092004081320100338F0040F4
2969:10B9800081B20000300000404399010032002DF2E6
2970:10B9900094B00100589300F2023001005F93004B15
2971:10B9A00002B000000000000548B10100348F0040E3
2972:10B9B00001B000000000004005B001003A8F2200F5
2973:10B9C00080320000398FA242197C0000AD93004004
2974:10B9D000813201003A8F004081B20000DD930040C7
2975:10B9E00081320100C68F225C1F7C00000000005CD9
2976:10B9F0001F8001000080001042C90100428F2240D8
2977:10BA0000E36D00000000004561B10100400000103E
2978:10BA100062DD01003F8FA84081320000AF820088C4
2979:10BA20001CB00000C68F000548B10000A292004083
2980:10BA300081320100498FA20880320000498FA2168E
2981:10BA4000803200009A94004D813001000082000293
2982:10BA500004DC01001A87004081B20000740000403D
2983:10BA600043990100000000F882B00100000000F0DE
2984:10BA700084B001000000004196B00100578F2242BF
2985:10BA8000961400000080001044C901006400684062
2986:10BA90009798010000000041F0B101000000004251
2987:10BAA000F0B1010070000005E0C901000000004590
2988:10BAB00061B101002000001062DD0100548FA84038
2989:10BAC000813200000000005C1F9001000000004572
2990:10BAD00061B101004000001062DD0100588FA85CD8
2991:10BAE0001F000000AF8200881CB000005E012D0521
2992:10BAF00048B101005C8F65F21230000000993F42AE
2993:10BB000013F00100618F2247E77D0000F582758800
2994:10BB10001CB000005B8F004081B2000000000047B5
2995:10BB2000E79101000400750996E40100008000100F
2996:10BB300044C9010000000044F1B10100000068A800
2997:10BB400097C0010000000003E0B101000080000385
2998:10BB5000449901000000004461B1010000000010A0
2999:10BB600062B10100698FA840E1310000AF82008816
3000:10BB70001CB0000000993F4213F001006D8F650575
3001:10BB8000483100003F0000F39688010000000040AB
3002:10BB9000E7B101000000754081B20100758F224BB2
3003:10BBA000803200000000005561B101000000004B30
3004:10BBB00062B10100738FA8408132000000000007CD
3005:10BBC00016B001000062000B16DC01003492004048
3006:10BBD000813201008D8F220080320000E393005FEC
3007:10BBE00001100100778F2240956C0000008000104A
3008:10BBF00044C9010000000050F1B101000000000341
3009:10BC0000F0B101000000004261B10100000000102D
3010:10BC100062B101007F8FA800E0310000AF82008890
3011:10BC20001CB000000000000548B1010004800003C2
3012:10BC300042C90100000000F202B001005893005216
3013:10BC400095300100B092004081320100778F22418F
3014:10BC5000975000000C80000342C90100000000F072
3015:10BC600000B001000000005C018001005F93004B08
3016:10BC700002B00000778F000548B10000EB9400404F
3017:10BC8000033001001780000344C9010000F0000CDC
3018:10BC9000968801000000634C97F0010010800003BB
3019:10BCA00044C90100000000ABE1B101008C94005ECA
3020:10BCB00005100100030000071AF401000700000747
3021:10BCC0001688010000B5000D46C90100978F30406D
3022:10BCD000813200000000000BE681010000B7000D7A
3023:10BCE00046C901000000000BE68101001000100FA2
3024:10BCF00094F401009304005F95040100399300401F
3025:10BD000081320100A18F2250FD7F00009F8F4640AD
3026:10BD10008132000000001E4131D3010000002E05D9
3027:10BD200048B1010000000040E1B101000000004006
3028:10BD30000FB001009B920041813001001A87004042
3029:10BD400081B20000A292004081320100B38FA208AC
3030:10BD500080320000B38FA216803200000082000201
3031:10BD600004DC01000000004503F0010000000001B8
3032:10BD700000C00100AC8F375C613100000000001B87
3033:10BD800062B10100B08F284081320000AD8F0040C9
3034:10BD900081B200000000000062B10100B08FA84035
3035:10BDA000813200001A87174081B2000074002240DF
3036:10BDB000F1B1010000000040E1B10100E094004A4F
3037:10BDC00095300100C093005C1F100100498F0040B6
3038:10BDD00081B200002F00004047990100C48F224724
3039:10BDE000E77D000034920040E7310100C48F22005B
3040:10BDF00080320000BF8FA2401F7C0000B092004044
3041:10BE000081320100C48F004081B200003000004048
3042:10BE10004399010032002DF294B00100589300F2D2
3043:10BE2000023001005F93004B02B0000000000005EB
3044:10BE300048B10100E094004895300100C093005CD7
3045:10BE40001F100100C98F8742191000008B002F4777
3046:10BE50001980010000000040E79101000B950042AD
3047:10BE600081300100D58A004081B20000C0930040BB
3048:10BE700081320100D58A005C1F900000BA0020408A
3049:10BE8000E5B101004495004081320100C00000404E
3050:10BE900043990100C4002DF082B00100789500F0B4
3051:10BEA00084300100B0920040813201000B950045C2
3052:10BEB00081300100D58A2242197C00009A94003A10
3053:10BEC00081300100D58A004081B2000004000040AA
3054:10BED00081B20000A292004081320100DE8FA208F0
3055:10BEE00080320000DE8FA216803200009A94004754
3056:10BEF000803001000082000204DC01001A8700404B
3057:10BF000081B200001080000344C9010000E100A6D6
3058:10BF100084B0010000000040F1B1010000000040C9
3059:10BF2000F1B1010000006007849401008C94005E70
3060:10BF300005100100D58A004081B200008A0000404F
3061:10BF400047990100B0920041E7410100DA8A0040C0
3062:10BF500081B200009A930040813201005393004067
3063:10BF600081320100000000012CB00100000000152A
3064:10BF700010B001000000000010C0010004001F0A02
3065:10BF80002C5000000000001032B001001E95000689
3066:10BF900004300100F68FA2481F7C0000F48F844813
3067:10BFA0001F100000AC00004047990100F68F000A06
3068:10BFB000E0C100000000000A02B00100BD910001D4
3069:10BFC0008C3001000000004361B10100400000100E
3070:10BFD00062DD0100F78FA84081320000AF82008847
3071:10BFE0001CB000000000000548B101000000000284
3072:10BFF00010C0010004902202145000000894004573
3073:10C000001F000100EE8F225C1F7C00000000004733
3074:10C0100061B101004000001062DD01000090A85CE9
3075:10C020001F000000AF8200881CB00000EE8F0005EA
3076:10C0300048B100000000000B1BB0010008002D40BB
3077:10C0400085B00100000000F082B001000000004057
3078:10C0500005B00100CE93004187300100000000458B
3079:10C0600061B101004000001062DD01000A90A840AB
3080:10C0700081320000AF8200881CB000000000000583
3081:10C0800048B1010010902209803000000B9500405B
3082:10C090001330010014902244197C00000B95004FCE
3083:10C0A000813001001490A2471F7C00000000004472
3084:10C0B00019800100FF070008008C01002290224A2D
3085:10C0C0001F7C00001A90A21602300000B0920040BF
3086:10C0D000813201002F002040E7B10100D58A0040E5
3087:10C0E00081B200002D002D082AB001001E902242CE
3088:10C0F000197C0000DD930040813201001F90004058
3089:10C1000081B20000AD9300408132010030002E006A
3090:10C110002AD0010032002A15E4B10100D58A0016A8
3091:10C12000E4B1000035902216023000000000000843
3092:10C130002AB0010094950040953001002790A2405C
3093:10C14000116C0000369022402D6C0000AC000040C5
3094:10C1500047990100B0002B01E0C10100002B00A6AF
3095:10C1600016B0010000000001E0D10100E3940008D6
3096:10C17000803001002E90005E17900000049500436F
3097:10C18000613101000000004361B101004000001076
3098:10C1900062DD01002F90A84081320000AF8200884C
3099:10C1A0001CB000000000000548B10100EB9400073E
3100:10C1B000161401008C94005E05100100B09200403E
3101:10C1C000813201002F002040E7B10100DA8A0040EF
3102:10C1D00081B200000000000B1BB0010004001F151D
3103:10C1E0001A500000439020161A6C000070000003E3
3104:10C1F00048C9010000002250F1B101000000000315
3105:10C20000F0B1010000000000E0B1010000000042B8
3106:10C2100061B10100A00000A462DD01004090A846C9
3107:10C220001F1000000000000548B1010000000000E0
3108:10C2300010B001000000001510C001000000000A4D
3109:10C240002AB001000000000A2CD00100AC002F40F1
3110:10C2500023B001004A9084451F1000004B90000A53
3111:10C26000E0C100000000000A02B001004B94004051
3112:10C2700035B000000080001942C9010053902240EF
3113:10C28000E36D00000000004361B1010040000010B8
3114:10C2900062DD01004F90A84081320000AF8200882B
3115:10C2A0001CB000000000000548B101006390A2022C
3116:10C2B0001A500000649022402D6C00000080001095
3117:10C2C00044C9010000000050F1B10100000000036A
3118:10C2D000F0B10100FF070008E08D010000000042FE
3119:10C2E00061B101000000001062B101005A90A84045
3120:10C2F00081320000AF8200881CB000000000000501
3121:10C3000048B101002F002047E7B501000C80000371
3122:10C3100042C90100100000F010C80100F007004001
3123:10C320001B9801006490005C118000000000000276
3124:10C3300010C00100C69200401F000100000000056F
3125:10C3400048B101006890230D2C6C000000000040F3
3126:10C350001F900100719022461F7C000000000046E3
3127:10C360001F8001007080000342C9010071902240CB
3128:10C37000E36D00000000004261B1010040000010C8
3129:10C3800062DD01006D90A84081320000AF8200881C
3130:10C390001CB000000000000548B1010008002D405D
3131:10C3A00085B00100000000F082B0010000000040F4
3132:10C3B00005B00100CE930041873001000000004528
3133:10C3C00061B101004000001062DD01007690A840DC
3134:10C3D00081320000AF8200881CB000000000000520
3135:10C3E00048B101007C902209803000000B9500408C
3136:10C3F0001330010080902244197C00000B95004FFF
3137:10C40000813001008090A2471F7C000000000044A2
3138:10C4100019800100FF070008008C01009590224A56
3139:10C420001F7C00008690A21602300000B0920040EF
3140:10C43000813201002F002040E7B10100D58A004081
3141:10C4400081B200002D002D082AB0010091902242F7
3142:10C45000197C00008A90A2F384300000000000A53F
3143:10C4600085B001000000004185D00100D4003E41AC
3144:10C4700085E001008E9022401F7C00000000005AE1
3145:10C48000119001000B000008E4F50100DD9300406D
3146:10C49000813201009290004081B20000AD930040D3
3147:10C4A0008132010030002E002AD0010032002A150E
3148:10C4B000E4B10100D58A0016E4B100009890A216FC
3149:10C4C00002300000B092004081320100E79000404D
3150:10C4D00081B200002D002D082AB00100A69022474D
3151:10C4E0001F7C0000A2902242197C00009D90A2F3C4
3152:10C4F00084300000000000A585B00100000000416C
3153:10C5000085D00100D4003E4185E00100A190224089
3154:10C510001F7C00000000005A119001000B00000871
3155:10C52000E4F5010058012D002AD0010060012DF032
3156:10C5300010B00100000000F02CB00100358E00406A
3157:10C5400081B200009495004195300100AE90A208A0
3158:10C5500080320000AE90A216803200000000004140
3159:10C5600097B00100AC90230D026C00000000004168
3160:10C5700097C001005F93004B02B00000E7900005F8
3161:10C5800048B10000AC002F0114B00100B0002B0135
3162:10C59000E0C10100002B00A616B001000000000160
3163:10C5A000E0D10100BE90230D026C0000008000105D
3164:10C5B00044C9010000000050F1B101000000000377
3165:10C5C000F0B101000000004261B101000000001064
3166:10C5D00062B10100B790A800E0310000AF8200888E
3167:10C5E0001CB000000000000548B101000C800003F1
3168:10C5F00042C90100100000F022C801000000005CE8
3169:10C60000238001000000000184B00100C190230DCF
3170:10C61000026C00000000000D02B0010000000008E4
3171:10C6200080B00100C69022401B6C0000E394000122
3172:10C6300084500100CE902240856C00000000000173
3173:10C6400080C001001080001046C901000000004FAA
3174:10C650004381010000000042F0B1010020000040D1
3175:10C66000F0C9010000000016F0B101000000004315
3176:10C6700061B10100A00000A162DD0100CC90A81111
3177:10C68000E0310000DD90005E17900000D190230D96
3178:10C69000026C00000000000D02B00100000000016B
3179:10C6A00084D00100D69022401B6C0000049500430A
3180:10C6B00061310100DD902240856C00000000000126
3181:10C6C00012C001001080001046C901000000004F98
3182:10C6D0004381010000000042F0B1010000000009A8
3183:10C6E000F0B1010000000018F0B10100A00000A1AD
3184:10C6F00062DD0100DB90A811E03100000000004382
3185:10C7000061B101004000001062DD0100DE90A80A66
3186:10C7100002300000AF8200881CB00000B09200051B
3187:10C7200048310100E590230D026C0000FF07001165
3188:10C73000008C0100B092004081320100EB940007B0
3189:10C74000161401008C94005E051001002F0020409B
3190:10C75000E7B10100DA8A004081B2000000800003E6
3191:10C7600042C90100000000F882B00100000000F89A
3192:10C770008CB00100000000F08EB0010097930040E3
3193:10C78000133001000000004085B00100CE9300414D
3194:10C790008730010053930040813201000080001077
3195:10C7A00042C90100F8902240E36D000000000045FE
3196:10C7B00061B101004000001062DD0100F490A8406A
3197:10C7C00081320000AF8200881CB00000000000052C
3198:10C7D00048B10100FA902209803000000B9500401A
3199:10C7E000133001000000000B1BB001000000001519
3200:10C7F0001AD001000191A241197C000094950040DB
3201:10C80000953001000000001680B201000A9127084F
3202:10C8100080320000279000002AC00000949500415B
3203:10C82000953001000000001680B201000591270834
3204:10C8300080320000AE9000002AC0000000000041DD
3205:10C8400097B001000891230D026C00000000004128
3206:10C8500097C001005F93004B02B00000000000058C
3207:10C8600048B10100D58A2242197C00009A94003A0E
3208:10C8700081300100D58A004081B200000E91004A4B
3209:10C880001F900000D8920000103001000000001539
3210:10C8900010C001000000001032B001001E9500061B
3211:10C8A000043001001791A2441F7C00000000000B1F
3212:10C8B0001BB001000000000A2CD001000000000A9B
3213:10C8C00002B00100BD9100018C3001000080001910
3214:10C8D00042C901001E912240E36D000000000043A8
3215:10C8E00061B101004000001062DD01001A91A84012
3216:10C8F00081320000AF8200881CB0000000000005FB
3217:10C9000048B101000000000210C00100279122027E
3218:10C9100014500000089400451F0001001091225C93
3219:10C920001F7C00000000004761B1010040000010C2
3220:10C9300062DD01002391A85C1F000000AF82008827
3221:10C940001CB000001091000548B1000008002D4007
3222:10C9500085B00100000000F082B00100000000403E
3223:10C9600005B00100CE930041873001000000004572
3224:10C9700061B101004000001062DD01002C91A8406F
3225:10C9800081320000AF8200881CB00000000000056A
3226:10C9900048B1010032912209803000000B9500401F
3227:10C9A0001330010035912244197C00000B95004F93
3228:10C9B000813001000000004419800100FF070008D9
3229:10C9C000008C01004391224A1F7C00003B91A2167B
3230:10C9D00002300000B0920040813201002F00204060
3231:10C9E000E7B10100D58A004081B200002D002D087A
3232:10C9F0002AB001003F912242197C0000DD930040E3
3233:10CA0000813201004091004081B20000AD930040AE
3234:10CA10008132010030002E002AD0010032002A1598
3235:10CA2000E4B10100D58A0016E4B100002390A216FB
3236:10CA300002300000B0920040813201002F002040FF
3237:10CA4000E7B10100DA8A004081B20000D892004AC2
3238:10CA50001F1001003890001032B000008A00204002
3239:10CA6000E7B101004D91A241197C0000B092004055
3240:10CA7000813201005091004081B2000058930015AE
3241:10CA8000943001005F93004B02B0000000000005ED
3242:10CA900048B1010052912242197C00009A94003A58
3243:10CAA000813001000B95004581300100D58A00409E
3244:10CAB00081B20000F48E00451F9000009A93004060
3245:10CAC000813201005393004081320100389000010F
3246:10CAD0002CB00000A2920040813201006591A208B2
3247:10CAE000803200006591A2168032000000820002B0
3248:10CAF00004DC01000000004503F00100000000011B
3249:10CB000000C001005E91375C613100000000001B35
3250:10CB100062B1010062912840813200005F910040C3
3251:10CB200081B200000000000062B101006291A840E3
3252:10CB3000813200001A87174081B200005801200896
3253:10CB4000E0B1010060012016E0B101009A930047B6
3254:10CB50001F10010053930040813201003890000102
3255:10CB60002CB00000A29200471F1001007891A2088B
3256:10CB7000803200007891A216803200007491A242A7
3257:10CB8000197C00000082000204DC0100A098004033
3258:10CB90004799010030050041893001005893001584
3259:10CBA000943001005F93004B02B000001A870040F0
3260:10CBB00081B20000DD930040813201000000004B93
3261:10CBC000199001009A94003A813001001A870040C0
3262:10CBD00081B2000058012008E0B101006001201678
3263:10CBE000E0B10100D89200103230010038900040CE
3264:10CBF00013B00000A2920040813201008991A20886
3265:10CC0000803200008991A21680320000008200026A
3266:10CC100004DC01000000004503F0010000000001F9
3267:10CC200000C001008291375C613100000000001BF0
3268:10CC300062B101008691284081320000839100405A
3269:10CC400081B200000000000062B101008691A8409E
3270:10CC5000813200001A87174081B200000080000373
3271:10CC600042C90100000000F882B00100000000F895
3272:10CC70008CB00100000000F08EB0010097930040DE
3273:10CC8000133001000000004085B00100CE93004148
3274:10CC90008730010053930040813201000080001072
3275:10CCA00042C9010098912240E36D00000000004558
3276:10CCB00061B101004000001062DD01009491A840C4
3277:10CCC00081320000AF8200881CB000000000000527
3278:10CCD00048B10100358E2209803000000B950040DC
3279:10CCE00013300100358E004081B2000014002D4544
3280:10CCF0001F9001007D8E004419900000A091A24178
3281:10CD0000197C00000000004A1F900100E88F0040DD
3282:10CD100081B200009A93004A1F1001005393004013
3283:10CD200081320100389000012CB00000D892004000
3284:10CD3000813201003890001032B00000F48E0045BE
3285:10CD40001F9000000000004137C3010000000041B7
3286:10CD500033C301003600000102CC01000000D240C4
3287:10CD600081B20000AC9185178032000000009F481E
3288:10CD700003D00000AE919C178032000000009F4C51
3289:10CD800003D000000000800134C301004080000394
3290:10CD900044C901000000004AF0B101000000004059
3291:10CDA000F1B1010000000012F0B10100B4920041A5
3292:10CDB000E13101000080004344C90100100000403F
3293:10CDC000F199010000000048F0B1010000000049A5
3294:10CDD000F0B1010040000003E0C90100000000457F
3295:10CDE00061B101000000004362B101000000A840F1
3296:10CDF00081B20000BA91004081B20000BA00204028
3297:10CE0000E5B10100B0002F018CD001000000004608
3298:10CE1000E0C10100AC002F4013B00100CC002D0197
3299:10CE2000E0C10100C4919C17803200009D95004034
3300:10CE300081320100C6912247197C00000000005F8A
3301:10CE4000139001004495004719100100C0002D44C3
3302:10CE50001F900100C4002DF082B00100789500F011
3303:10CE600084B0000090002D0548B10100DB91A24B79
3304:10CE70001F7C00002E92A24C1F7C0000DB911F1C27
3305:10CE8000E06D0000DE91A20180320000A8002D4676
3306:10CE90008FB00100D4911F1CE06D0000B400004071
3307:10CEA00043990100D69122F03A6C00002B921FF0BA
3308:10CEB0003A6C00000000A24080B200000000804FE9
3309:10CEC0008FB001008A000040439901002C9220425B
3310:10CED000E76D0000DA9122408032000000008059A6
3311:10CEE0008FB00100000080588FB00100DD9122401A
3312:10CEF000803200000000805C8FB001000000805B89
3313:10CF00008FB00100AC00004043990100B0002DF04B
3314:10CF100084B00100E291A242246C0000EB9123F066
3315:10CF2000026C0000E891A2F0803200002D92A24233
3316:10CF3000246C00002D92A241036C0000E791A240F6
3317:10CF400080320000000080518FB00100000080524C
3318:10CF50008FB001002D921F12845000002D92A0016D
3319:10CF6000846C0000DB91004081B200008B00004027
3320:10CF7000439901001692A246E77D0000140000408C
3321:10CF800043990100089222F014300000F491200A25
3322:10CF9000026C00000592031E80320000F391A24053
3323:10CFA00080320000000080448FB001000000804902
3324:10CFB0008FB00100F991220A026C0000FC91A2419D
3325:10CFC000197C0000F891A2408032000000008055DA
3326:10CFD0008FB00100000080568FB00100FB91A2408D
3327:10CFE00080320000000080438FB0010000008048C4
3328:10CFF0008FB001000000000182B001000000000AB3
3329:10D0000082D0010002922091836C00000192A24024
3330:10D0100080320000260080408F9801002700804069
3331:10D020008F9801000492A240803200001F008040CF
3332:10D030008F980100200080408F9801000792A24045
3333:10D0400080320000220080408F9801002300804041
3334:10D050008F98010088002D448FB001001192A241E9
3335:10D06000197C00000E92A2433D7C00000E92A2F2B9
3336:10D07000026C00000000A24080B200000000804965
3337:10D080008FB001001092A240803200000000804367
3338:10D090008FB00100000080488FB001000E92A09177
3339:10D0A000036C00000C9222433D7C00001592A240CC
3340:10D0B00080320000280080408F98010029008040C5
3341:10D0C0008F98010014000040439901001F92A2F0C4
3342:10D0D0001430000088002D448FB001001C92A2F291
3343:10D0E000026C00000000A24080B2000000008049F5
3344:10D0F0008FB001000E922241197C00000C92209109
3345:10D10000036C00000E92004081B200002392200ABE
3346:10D11000026C00002292A240803200000000804495
3347:10D120008FB00100000080498FB001002892220AD0
3348:10D13000026C0000FC91A241197C00002792A240E1
3349:10D1400080320000000080558FB001000000805642
3350:10D150008FB001002A92A24080320000000080437C
3351:10D160008FB00100000080488FB001003092004372
3352:10D1700095B000003092004195B00000309200421E
3353:10D1800095B000003092004495B000003092004C01
3354:10D1900095B00000E0940040813201003392A2403B
3355:10D1A000803200000000804B8FB001000000804CF6
3356:10D1B0008FB001002D000040439901002E002FF395
3357:10D1C00084B001003892A2F3963000000000804045
3358:10D1D00001B001002D002A41E7D10100D4003D41FA
3359:10D1E00085E001000B0000F200E401003E92225AAB
3360:10D1F000017C0000000000401F9001003F92005A97
3361:10D2000001800000000000401F8001000000634119
3362:10D2100085C001000000A0A5856C01000000E3406E
3363:10D2200085B001000C80000342C9010012000040DB
3364:10D2300087980100DF9500F08CB000004C922240EE
3365:10D240000F6C000000002F0548B101004992A24B6D
3366:10D25000197C00004A9222F0186C00000000604B1C
3367:10D26000199001001693000710300100F982004068
3368:10D2700005B000004E92225A1F7C00009B92004095
3369:10D2800081300100F982004005B0000000002F0548
3370:10D2900048B101000000604B19900100169300078F
3371:10D2A00010300100F982004005B0000000002F0599
3372:10D2B00048B101000000604B19900100169300076F
3373:10D2C000103001000000804005B00100579233404B
3374:10D2D000813200005A92A1AD95200000689213405F
3375:10D2E00081B200000000134A5A8301003000394522
3376:10D2F00095E001001F00000F5ED801000000005AF9
3377:10D300005F9001000000004045B0010000000004F3
3378:10D3100048B00100000000054AB001000000000C08
3379:10D3200058B00100000000074EB00100A884004082
3380:10D330005D9801000000005861B101000000004A42
3381:10D3400062B101000000A84197B000006592004062
3382:10D3500081B200000000804097B001006992600730
3383:10D3600096300000FFFF004B84890100000070C26E
3384:10D3700024B001007392A245257C00006D923120FB
3385:10D380008530000074922212487F00005804111268
3386:10D39000480301001000001296E401000000004B59
3387:10D3A0001E9401000000805A1F90010073923140CA
3388:10D3B00081320000000000B424B0010074922212F7
3389:10D3C000487F0000580400408132010000002F0512
3390:10D3D00048B1010081920BF084300000000011126E
3391:10D3E000488301007E922250857000005E0100405B
3392:10D3F00043990100419400F2963001009304001219
3393:10D40000943001000000005A1F900100100000122B
3394:10D4100096E401000000804B1E94010010000042C1
3395:10D4200010F4010000B73F4311F0010007000008AD
3396:10D430008A880100849230A10C3000008792224536
3397:10D44000E67D00007492104081B2000000002A4581
3398:10D45000E691010000001012488301000000114015
3399:10D4600081B201000000604B858001005E01004038
3400:10D4700043990100419400F29630010000800010B1
3401:10D4800044C90100D8000040819801002E002D05FC
3402:10D4900048B1010092922240E76D000080000040F8
3403:10D4A00080C8010000000040F0B101000900000840
3404:10D4B00086E40100000068A787C001000000004466
3405:10D4C00061B101000000001062B101009692A80550
3406:10D4D000E03100001000001296E401000014004B3F
3407:10D4E00096DC01000000804B1E9401001000000F2C
3408:10D4F00084F401001F000042848801009F922240B2
3409:10D5000080320000A092004268B10000000000429A
3410:10D510006AB10100A092315A1F0000000000914240
3411:10D5200048930100A2923540813200006D00004016
3412:10D5300061990100A89228B12C300000A392224DDD
3413:10D54000757D0000000000402DB0010000009540F6
3414:10D5500011B001006D00004061990100A892A8B1CE
3415:10D56000103000000000954081B201007F000040B3
3416:10D5700061990100AF9228B110300000AB929FBAC0
3417:10D58000803200000000804011B0010000008024C3
3418:10D59000118401000000005F61B101000010000073
3419:10D5A00062DD01000000A84081B20000B19200409D
3420:10D5B00081B20000AC94004047990100B59232401E
3421:10D5C00081320000BB9222F896300000000000F883
3422:10D5D00090B00100000000F092B001000100004B8B
3423:10D5E000F0CD010020009248E0C901006C0000402D
3424:10D5F00061990100BF9228B192300000BB92224C89
3425:10D60000757D00000400124091B000006C000040E5
3426:10D6100061990100BF92A8B190300000FF0000485E
3427:10D62000968801000000004B90D001000100004BE3
3428:10D63000F0CD010020000048F0C90100000092492F
3429:10D64000E0B101000C002D1048B10100FF070008F7
3430:10D65000828C0100FF0700F0008C01000000A24155
3431:10D6600000EC0000CC92221A006C0000B092000086
3432:10D67000343001000000005049C10100C892A241AD
3433:10D68000235000000000804081B201000C002D10EA
3434:10D6900048B10100FF070015828C0100FF0700F070
3435:10D6A000008C01000000A24100EC0000D592220D88
3436:10D6B000006C0000B09200001A3001000000005021
3437:10D6C00049C10100D192A2412350000000008040D6
3438:10D6D00081B20100DA92831E803200000000004413
3439:10D6E0001990010024002D012CB0010028002DF01C
3440:10D6F00016B0010022002DF026B0010014002FF218
3441:10D700000CB0010000008040E1B101003000004099
3442:10D710009798010060972E4081B201000000004000
3443:10D72000F1B10100E192A2419750000064973E439D
3444:10D730009DE0010000008040E1B1010064973E439C
3445:10D740009DE001000000800BE8B1010064973F43B9
3446:10D750009DE00100000000F016C0010000008040C4
3447:10D76000E1B1010064973F439DE00100000000F437
3448:10D7700016B0010000008040E1B1010060173D4398
3449:10D780009DE00100100080A116E4010000B5000D2D
3450:10D7900042C90100F092304717040000F392A20B37
3451:10D7A000E67D00000000904281B0010000B7000D4E
3452:10D7B00046C90100F792A20BE67D00000000000BB5
3453:10D7C000E69101000000904181B00100000010408E
3454:10D7D00081B20100F8924007963000009D0400409D
3455:10D7E000813201000293A245957C000001973F41E0
3456:10D7F00095E00100000000F396B001000000004E2B
3457:10D80000E6B1010040973E4097E001000000004E65
3458:10D81000E6B1010040973E409DE001001593003BBA
3459:10D82000E7B1000002933040813200000C93A20B5C
3460:10D83000E67D000000B5000D46C901000893A20B6B
3461:10D84000E67D00000000104081B201000000984217
3462:10D8500081B0010000B7000D46C901000000000BB7
3463:10D86000E69101000000104081B2010000009841E3
3464:10D8700081B00100040021A2952000000000104AA0
3465:10D880004483010000973E4195E001000000004EF6
3466:10D89000F6B101000000004EE6B1010040973E40A5
3467:10D8A0009DE001000000003BE7B101000000004ADC
3468:10D8B00090B10100FFFF000792890100000098402D
3469:10D8C00081B001000300000886F4010000B70043A6
3470:10D8D00046C901000700000882880100199340082A
3471:10D8E000963000009D0400408132010025932245BE
3472:10D8F000957C00002193225A1F7C00001000000F2D
3473:10D9000096F401001E93315F970400000000114B54
3474:10D91000489301000000004B6AB1010021933040A0
3475:10D920008132000000000041E6810100000010404B
3476:10D9300081B201000000984081B2010000973F4190
3477:10D9400095E00100000000F396B0010040973D40D3
3478:10D9500097E00100000063F388B001002D93A23B23
3479:10D96000896C00000000004A90B10100010000A68F
3480:10D9700092B101002E93184A449300000000184011
3481:10D9800081B201003000394597E001003393225AFB
3482:10D990001F7C00001F04000F98D801000000004CFD
3483:10D9A0005E940100359300054AB000001F0400A7F3
3484:10D9B0005E840100000000404BB0010000000058F0
3485:10D9C00061B101000000004B62B101000000A840FD
3486:10D9D00081B200003693004081B2000039934007C5
3487:10D9E000963000009D040040813201003D932245A5
3488:10D9F000957C00000000984081B201009B04004A21
3489:10DA00004413010000973F4195E00100000000F33E
3490:10DA100096B0010040973D4097E00100000063F39D
3491:10DA200088B001003000384597E001000000005F39
3492:10DA30000F9001000000005861B101000000004B90
3493:10DA400062B101004593A840813200003E93A23BA1
3494:10DA5000896C0000300038459DE0010000009840CE
3495:10DA600081B2010093040012943001001693005A11
3496:10DA70001F0001000000805A1F9001001100004AA1
3497:10DA8000E6C9010034002F4F95840100000000F327
3498:10DA900096B001000100634B84C801000000A04360
3499:10DAA000856C01000000E34085B0010030002D448A
3500:10DAB0001F90010032002DF22AB00100040022F272
3501:10DAC0000230000034920010323001003200A040D9
3502:10DAD000E5B101000000004097B00100F0070040F0
3503:10DAE000999801000000004A02C0010000000050A7
3504:10DAF00003D001000000004197C001000000A34CCA
3505:10DB000002D000005C93004081B20000000000A839
3506:10DB100036B001006C9322410350000000800010D9
3507:10DB200044C9010000000050F1B101007000000381
3508:10DB3000F0C901000000004261B1010000000010C6
3509:10DB400062B101006593A800E0310000AF82008857
3510:10DB50001CB00000B0920040813201007C800003C4
3511:10DB600042C90100000000F000B001006093005CB9
3512:10DB700001800000B0920040813201000000001BD3
3513:10DB800010B1000068012D0682B00100000000F213
3514:10DB900082C001000080000346C90100AB92004032
3515:10DBA0008132010093932240116C0000000068084C
3516:10DBB00038960100F007004182CC01007193AA4120
3517:10DBC0003B400000000000F810B001000000005CC5
3518:10DBD000118001000100001D04CC01009293264633
3519:10DBE000233000000800000312C80100640120F087
3520:10DBF000E0B1010091932241055000002000000394
3521:10DC000048C901000C0000F886C801000000224449
3522:10DC1000F1B1010000000043F0B101000000000973
3523:10DC2000E0B101000000004461B10100A00000A4C7
3524:10DC300062DD01008393A8461F10000090932241EB
3525:10DC4000055000008E93A24123500000000000A167
3526:10DC50001AB001000000004461B101004000001052
3527:10DC600062DD01008993A84623300000AF8200885E
3528:10DC70001CB000001000000348C901000000000DA6
3529:10DC800042B101000000004413C001007E93005027
3530:10DC900049C100000000000548B1010004800003F4
3531:10DCA0001AC801000000804081B201009293224016
3532:10DCB0003B6C0000000000F800B00100B092005C76
3533:10DCC00001000100939300413BD0000000008D470C
3534:10DCD00080320100B0002F5F13B001000000E0F0BF
3535:10DCE0008CC001000080000342C90100000000F860
3536:10DCF00094B00100000000F88CB001009F938CF8F4
3537:10DD00008E3000000000004419900100040022F849
3538:10DD100014300000000000F816B00100000000F808
3539:10DD200026B0010008002EF80CB001000C002A4AB1
3540:10DD3000E0B1010028000000E0C901001000201B34
3541:10DD4000E0B10100AC93200A0C6C0000000000F868
3542:10DD500094B00100000000F896B00100200020F00F
3543:10DD6000E4B101001800204AE0B101001C00204B82
3544:10DD7000E0B101009793004013B000002C002D4249
3545:10DD8000199001002E002FF382B00100000000F373
3546:10DD900096B00100B293A2A5976C000000008041EC
3547:10DDA00095B00100B593A240976C000000000040C0
3548:10DDB00083B001002D002040E7B101000000634165
3549:10DDC00097C00100D4003E4183E001000000004103
3550:10DDD00083C00100BA93A0A5836C0000000000403E
3551:10DDE00083B001002C002041E6B10100BF93224026
3552:10DDF0001F7C00000004000098DC01000B00004CB8
3553:10DE0000E4F50100000080401F8001000B0080004D
3554:10DE1000E4F50100B4920040813201000480000367
3555:10DE200044C9010000000040F1B1010000000040C1
3556:10DE3000F1B101000000604187B0010000800010D6
3557:10DE400044C9010000000050F1B101000000004889
3558:10DE5000F0B1010000000049F0B101000000000332
3559:10DE6000E0B101000000004561B101002000001098
3560:10DE700062DD01000000A85D05900000CB9300402A
3561:10DE800081B20000B49200408132010000800003A2
3562:10DE900044C9010000000041F0B10100000000424F
3563:10DEA000F0B1010000000040F1B1010000000043AA
3564:10DEB000F0B101000080001044C9010000000050D2
3565:10DEC000F1B1010000000048F0B10100000000497C
3566:10DED000F0B1010000000003E0B1010000000045C6
3567:10DEE00061B101002000001062DD01000000A85DAA
3568:10DEF00005900000DA93004081B200002D00004040
3569:10DF0000439901002E002FF384B00100010063F358
3570:10DF100096C80100E2939F4185500000010000A5D2
3571:10DF200085CC01002D00A042E6B101005E012D006C
3572:10DF300080B00100E793524381600000020000F2CC
3573:10DF400082F40100E8930041809400000000005F2B
3574:10DF5000819001000000005E61B1010000000040FE
3575:10DF600062B101000000A84095B00000E9939EBB9B
3576:10DF700080320000EE93A2401F7C0000B09200406F
3577:10DF800081B200000000804195B00100040000153E
3578:10DF900042C90100000000542BC00100000000FC39
3579:10DFA00024B00100000000FC38B00100000000FEB9
3580:10DFB0003CB00100000000FE3AB0010003949C1741
3581:10DFC00080320000F893A24A197C00000000804CC7
3582:10DFD0001F9001000C00001E98F40100F793A24866
3583:10DFE000996C00000000001542B10100F793A28A6D
3584:10DFF000F16D00000C00000102CC0100000000FCEB
3585:10E000003EB00100010000F428CC0100CC002D0539
3586:10E0100048B10100029420F03E6C00000000004B6B
3587:10E020001F9001000000004C2BC00100BF002D0517
3588:10E0300048B10100000080F33AE0010000002E4BDF
3589:10E040001990010007002A0CE4B1010000008004CF
3590:10E05000E6B1010018000040439901001C002DF0BA
3591:10E0600016B0010020002DF026B001000C002FF2A8
3592:10E070000CB001000000A20614EC00000F94224531
3593:10E080001F7C00000000A3062AEC0000000000F83E
3594:10E0900094B00100000000F096B001000C002D408B
3595:10E0A00081B2010000002A4CE1C1010030000010E3
3596:10E0B00048C901000A000040F1990100180000055C
3597:10E0C000F0C901000000004AF0B101000000004B5F
3598:10E0D000E0B101000000004761B10100A00000A410
3599:10E0E00062DD01001994A85C1F100000000080058B
3600:10E0F00048B1010000002E1048B1010040000001AD
3601:10E10000F0CD010040000003F0C901004000000014
3602:10E11000E0C9010000002E5049C1010000000006C6
3603:10E12000F1B1010000000003F0B10100239462424C
3604:10E13000613100002000001062DD01002494A8403D
3605:10E14000813200001000001062C901002694A8006E
3606:10E15000E03100000000F24081B2010000002E100A
3607:10E1600048B1010040000001F0CD01004000000373
3608:10E17000F0C9010040000000E0C9010000002E507D
3609:10E1800049C1010000000006F1B1010000000003D8
3610:10E19000F0B10100309462426131000020000010B3
3611:10E1A00062DD01003194A84081320000A00000A48B
3612:10E1B00062DD01003394A800E03100000000F2406D
3613:10E1C00081B201003080004A44C90100000000060D
3614:10E1D000F1B10100C0A83D460DE00100FF7F00A1A4
3615:10E1E000F08901000200000996F4010000000046D9
3616:10E1F00097E00100000060A897C001003D946342D1
3617:10E20000613100003000004A62C901003E94A8401C
3618:10E21000813200000000F34081B2010000993F42CA
3619:10E2200097F0010042946540813200004A9422F345
3620:10E23000740600003F0000F394880100000000070E
3621:10E24000E78501000000755561B101000000004A3A
3622:10E2500062B101000000A84081B200004794004074
3623:10E2600081B200000000F54081B20100000000A86A
3624:10E2700036B001005A948241234000004F94A244DA
3625:10E280001F7C0000BD9100018C3001002080001037
3626:10E2900042C9010055942240E36D00000000004394
3627:10E2A00061B101004000001062DD01005294A840FD
3628:10E2B00081320000AF8200881CB0000000000041E5
3629:10E2C00023B001000000001032B001005A94224136
3630:10E2D000197C0000C6920043233001000000004179
3631:10E2E00023B001005C94A3150C6C00005D94000643
3632:10E2F00004B000000000001504B001005F9420028B
3633:10E300001A6C00000000000D04B001001E9500050D
3634:10E310004831010089942202145000006394A20243
3635:10E320002A5000008994A2451F7C000065942202B7
3636:10E330000C5000006E94000216C000006D94225C28
3637:10E340001F7C00003080001042C901006D94224003
3638:10E35000E36D00000000004761B1010040000010C3
3639:10E3600062DD01006994A84081320000AF8200881C
3640:10E370001CB000000000000548B101000894005CDA
3641:10E380001F00010089942215803200000000005017
3642:10E3900033C001008894A2021A5000007A942246E9
3643:10E3A0001F7C00007080000342C90100000000468D
3644:10E3B0001F8001007A942240E36D000000000042BB
3645:10E3C00061B101004000001062DD01007694A840B8
3646:10E3D00081320000AF8200881CB000000000000500
3647:10E3E00048B101000C80000342C90100100000F098
3648:10E3F00010C801002F002F5C1180010000000047B1
3649:10E40000E7910100F00700401B9801004C94201593
3650:10E410001A6C00007000000348C90100000022507F
3651:10E42000F1B1010000000003F0B10100FF07000896
3652:10E43000E08D01000000004261B10100A00000A4D5
3653:10E4400062DD01008594A8461F1000004C94000571
3654:10E4500048B100004C94000210C000008B94A2440C
3655:10E460001F7C0000BD9100018C3001000000001BEA
3656:10E4700010B100000080001044C901000C000040F1
3657:10E48000F199010010000008F0C901000000001619
3658:10E49000F0B1010010000003E0C9010000000045D8
3659:10E4A00061B101002000001062DD01000000A85CE5
3660:10E4B0001F9000009294004081B20000170000D02D
3661:10E4C000A2C901000000A24027EC000000000020CB
3662:10E4D00000B00100B0920041A341010096940041B8
3663:10E4E00027D000001000000796E401000000004B58
3664:10E4F000809401000000005461B1010000800040E0
3665:10E5000062DD01000000A84081B200009D9400403F
3666:10E5100081B20000EF9400402B300100AC002D06CA
3667:10E5200016C0010090002DF016C40100A594A0F0C3
3668:10E53000164400000000004117C001000E0000A2B8
3669:10E5400044C9010000006CF030B00100AC002D4067
3670:10E5500087B0010000006CF028B00100AE94224AA0
3671:10E56000197C00000030004386C801000030000B19
3672:10E5700016C80100AE94A4408132000000000041A2
3673:10E5800017C00100CF94220680320000BB94A2067F
3674:10E59000146C0000B8942248197C0000B394A04188
3675:10E5A000174000000000004117C0010000000041BA
3676:10E5B00031C0010090002018E0B101008B002D480F
3677:10E5C000198001008B002045E7910100BB940040B9
3678:10E5D000879000000800004386980100BB94A04883
3679:10E5E000174000000000004117C00100B0000040CB
3680:10E5F0004399010010500043FCC9010026950030EA
3681:10E600008130010000000040E5B10100C694224ABB
3682:10E61000197C0000080000A244C90100CC002DAB09
3683:10E62000F9B10100000000AB17C00100C594A0F0D3
3684:10E63000164400000000004117C00100CA9464F0B5
3685:10E6400082B00000A400004047990100CA94A2F2E1
3686:10E650008032000000000041E5B101008C0020186C
3687:10E66000E0B1010090000040459901000000600603
3688:10E6700030C001000000860C80B20000BC002D46B6
3689:10E6800019900100A000A0F2E4B10100B000004028
3690:10E690004399010010500043FCC901002695003049
3691:10E6A000813001000000A24A19FC0000080000A20D
3692:10E6B00044C90100CC002DABF9B10100000000AB52
3693:10E6C00017C00100D894A0F01644000000000041DB
3694:10E6D00017C001000000E4F082B0010000800010CB
3695:10E6E00044C9010000000041F0B101000000000336
3696:10E6F000F0B1010000000000F0B1010000000010C6
3697:10E7000062B101000000A81BE0B10000DD940040F0
3698:10E7100081B2000000F0000C7E8901000000A64CD0
3699:10E72000956001000000804A1894010000800010EC
3700:10E7300044C9010004002201F03100002000004023
3701:10E74000F0C9010000000016F0B101000000004314
3702:10E7500061B101002000001062DD01000000A81579
3703:10E76000E0B10000E894004081B200001080000396
3704:10E7700044C9010000000006F0B1010000000001E2
3705:10E78000F0B101000000E85F179001007000004048
3706:10E79000439901007A012EFE92B001008B002DF604
3707:10E7A00016B00100F5942243E77D0000000000440C
3708:10E7B00045C10100040000A62AB0010028006E0631
3709:10E7C00082C80100F994224A197C0000000000422E
3710:10E7D00045D1010000006E4C83C0010000000041E3
3711:10E7E00092C00100FA9443303D0700000000669E8D
3712:10E7F00083B0010000001B413DC301000000004147
3713:10E8000092C00100060000A244C9010010000049A6
3714:10E8100098F4010003952630930400000395904C72
3715:10E82000924000000000004193C00100FFFF8049BA
3716:10E83000ECA901000080001044C90100040022017D
3717:10E84000F031000000000009F0B1010000000018E4
3718:10E85000F0B101002000001062DD01000000A815E9
3719:10E86000E0B100000895004081B200001595225FDC
3720:10E87000817C00001495A240197C0000000000403B
3721:10E88000199001000000005461B101001000000760
3722:10E8900096E401000000004F979401000000004B37
3723:10E8A00062B10100149528408132000011950040AA
3724:10E8B00081B200000000A221818400001895A25FAF
3725:10E8C000816C00000000A243197C0100000000439D
3726:10E8D000199001000000005461B101001000000710
3727:10E8E00096E4010000000040969401000000004BF7
3728:10E8F00062B101000000A84081B200001B950040F9
3729:10E9000081B200000080001944C901000400220205
3730:10E91000F03100000000000BF0B101000000001316
3731:10E92000F0B101000000004361B1010020000019B6
3732:10E9300062DD01000000A808E0B10000239500405E
3733:10E9400081B200007C002DF084B00100020000F0D4
3734:10E9500098F401002C95204C846C00008800004045
3735:10E96000439901002C9520F2846C000000000040C7
3736:10E9700085B0010098002D1482B00100000000F065
3737:10E9800098B00100A3002D1498D001003195204CBF
3738:10E99000846C00000000004C84B00100000000F313
3739:10E9A00080E0010034952340846C000000000040AA
3740:10E9B00084B00100D0002014E0B10100980025428D
3741:10E9C00080B0010000006EF380F001000000A6425C
3742:10E9D00082C000003A95A0401640000000000041AF
3743:10E9E00017C0010000009FF082EC00009800A041D9
3744:10E9F000E0B1010000002E1048B10100A801004064
3745:10EA0000F199010000000005F0B1010009000007C4
3746:10EA100096E40100000060A797C00100000000100C
3747:10EA200062B101000000A84081B2000041950040A1
3748:10EA300081B20000A8002D1C8AB0010000009FF0E8
3749:10EA40008AD000000000A2408BEC00008A00204029
3750:10EA5000E7B10100B400004047990100A4002D4532
3751:10EA6000E0D101004E959C1780320000BE002FAB14
3752:10EA700083B00100A195001482500100539500401D
3753:10EA800081B20000539522F2823000008C000040D9
3754:10EA90004399010053959F1CE06D0000BE000040AB
3755:10EAA00047990100A195004081320100A800201C77
3756:10EAB000E0B101009C002D3081B0010088002DF0F4
3757:10EAC00084B0010094002DF286B00100669523F019
3758:10EAD000846C00005B952392876C0000C90400A63B
3759:10EAE00094B001005D95004081B20000200000A6B6
3760:10EAF00094B001006089004A949801005D956840D7
3761:10EB0000813200000000004AB0B10100BF002D4278
3762:10EB1000B2B1010090002DF380E001006195D44076
3763:10EB200081320000000078DA84C001006B95234038
3764:10EB3000846C00009400209DE1B101006B950040C1
3765:10EB400084B00000BF002D4384C0010090002DF36D
3766:10EB500080E001006B952340846C00009400209DB0
3767:10EB6000E1B101000000004084B001006F95A2F007
3768:10EB7000386C00009C002042E0B101000000005F02
3769:10EB80001394010000008046198001009C0020427F
3770:10EB9000E0B101003700004043990100040000F398
3771:10EBA00080F401000F0000F3828801007595234175
3772:10EBB000806C00000000005F139401000000890CCD
3773:10EBC00080B20000BC00004043990100A000A0F208
3774:10EBD000E4B1010000009F4124EC00007F95A640B5
3775:10EBE0008132000000009F4238EC00007F95A64073
3776:10EBF00081320000B4000040439901008195A3F0E8
3777:10EC00003A6C00000000804081B20100B400004076
3778:10EC100043990100859522F03A6C0000B400201D54
3779:10EC2000E0B1010080002D5F13940100859523F071
3780:10EC30003A6C00008000201DE0B10100C0002012ED
3781:10EC4000E0B10100C400A01CE0B10100008000039D
3782:10EC500044C9010000000042E0B101001200004080
3783:10EC6000879801008E959F41246C000000000041B0
3784:10EC70008CB00100000000128CD001008F95004183
3785:10EC800024B00000000000408DB00100DF9500407E
3786:10EC9000813201000000004561B101004000001018
3787:10ECA00062DD01000000A84081B2000091950040A3
3788:10ECB00081B20000A29200408132010000000016E3
3789:10ECC00080B201000000A708803201009995A2409F
3790:10ECD000956C0000B092004081320100008200A6D5
3791:10ECE00004B00100000000402DB00100A0982F40AA
3792:10ECF00011B001003005004189B0000000009FF80C
3793:10ED00003EEC000000009F12E0ED0000C80020ABC8
3794:10ED1000E1B10100CC00A01FE0B10100A395A35F09
3795:10ED2000E76D000000000041E7C10100A6000040BF
3796:10ED300047990100B79522F2863000000300004396
3797:10ED400084F401000100004180CC0100B8002D4294
3798:10ED500080D001000000624086C00100AB951F43D7
3799:10ED600080320000AC95A240876C00000000624138
3800:10ED700087B00100B0959F40803200000000004045
3801:10ED800085B001000000004084D001000000004276
3802:10ED900080B00100000000F288B0010002000044D1
3803:10EDA00084F40100B8002E4280D0010000006240CF
3804:10EDB00088C00100B6951F4480320000BA95A24079
3805:10EDC000896C0000BA95624189B00000030062417D
3806:10EDD00086E40100B800004045990100010062414D
3807:10EDE00088E40100A4002040E5B10100A200204019
3808:10EDF000E7B10100BC002E4387F001000000004491
3809:10EE000086C00100C0952043876C0000000080434D
3810:10EE1000E5B101004001004380CE01000000A443A1
3811:10EE2000E43101004001E2408798010088002D4450
3812:10EE300081B0010090002DF22EB001009C002DF059
3813:10EE400086B0010090002DF082B00100BA002DF0D4
3814:10EE500098B00100CD95A212986C0000BC002DF274
3815:10EE600098B00100CD95A0F2986C0000000000174A
3816:10EE700082B001009C002041E0B10100B4002D12DD
3817:10EE800086D00100D095A341E06D0000D19500F03F
3818:10EE900084B000000000004184B0010080002D43D8
3819:10EEA00084D00100D4959F428032000000000040D1
3820:10EEB00085B00100D695A342146C0000D795000AD6
3821:10EEC0000CB00000000000420CB00100D995A01762
3822:10EED0000C6C0000000080170CB00100DE95224091
3823:10EEE0000D6C00000000A00A0CEC0000010000F016
3824:10EEF00082F40100DE95A0410C6C00000000A2F03D
3825:10EF0000803201000000804081B00100B4920040D6
3826:10EF1000813201000480000344C901000000004662
3827:10EF2000F0B1010000000040F1B1010000006041BB
3828:10EF3000879401000080001044C9010000000050C7
3829:10EF4000F1B1010000000048F0B1010000000049EB
3830:10EF5000F0B1010000000003E0B101000000004535
3831:10EF600061B101002000001062DD01000000A85D19
3832:10EF700005900000EA95004081B2000000002E4B91
3833:10EF80001990010005002A0CE4B101000000800482
3834:10EF9000E6B10100F095454861310000001000081D
3835:10EFA00062DD0100F595284087300000F195224888
3836:10EFB000777D000095941D4687B00000F895225F8C
3837:10EFC000117C00000400221562310000F695A84073
3838:10EFD0008132000000009D4081B20100000000402D
3839:10EFE00049B1010000142F4C83B001000000004023
3840:10EFF000F1B10100FB95A241835000000000804068
3841:10F0000081B201000000004049B101003000004021
3842:10F01000A19901000000004093B0010000000040F1
3843:10F020001FB001004E9600499630010007000049CC
3844:10F0300006E401000039000306C80100000000409A
3845:10F0400005B00100200000D0A0C90100000000416F
3846:10F0500093C001000296A054936C000000002E059E
3847:10F0600097B0010000800040499901000000004075
3848:10F07000E1B10100000200A244C901000B96A241C7
3849:10F08000975000000000002049B301005496004052
3850:10F0900049310100DF9200408132010000B52E08A5
3851:10F0A00097B0010000000040F1B101001296A241AA
3852:10F0B00097500000180000409798010000972E40DC
3853:10F0C00081B2010000000040F1B101001696A2419A
3854:10F0D000975000000000004049B1010040182E0583
3855:10F0E00097B0010000000040F1B101001A96A24162
3856:10F0F0009750000057952040E7B101003094004040
3857:10F100004599010064000040E599010056952040B2
3858:10F11000E7B10100B8942041E5B10100BA94204163
3859:10F12000E5B10100989400404599010002000040BB
3860:10F130009798010000000040F1B101002496A2411F
3861:10F14000975000000000004097B001000000004010
3862:10F150006FB101000000004B68B1010028968541A5
3863:10F160009740000080040040813201000000004010
3864:10F1700039B301000000004037B301000000004037
3865:10F1800035B301000000004033B30100000000402F
3866:10F1900041B30100000000403FB30100EE05004014
3867:10F1A000259B0100420000404B9B010000000040F5
3868:10F1B0002FB30100000000402DB30100000000400B
3869:10F1C00047B301000000004043B30100600000406D
3870:10F1D0002B9B010000000054EF930100000000553C
3871:10F1E000F1930100FFFF00A53C8B01000000002C03
3872:10F1F0005BB301000000002C45B30100000000409B
3873:10F2000059B301000000004057B301000000004066
3874:10F2100027B301000000004053B301004496A25000
3875:10F22000FD7F00004496A251FD7F000045960040FE
3876:10F230001DB30000504600401D9B010000C000A609
3877:10F2400088B30100FF3F00A63AB3010000C0009D53
3878:10F250003B9B0100B4050040239B010000000040DF
3879:10F260004DB30100080A00A614B301000101008A91
3880:10F27000159B0100008000A656B101000000805ED1
3881:10F2800057B501001800004B20E401000600004BB8
3882:10F2900096E401000043004B96C8010018000010DE
3883:10F2A00020DC01000000004B20940100000080578A
3884:10F2B0002190010000992E0A97B001000000004043
3885:10F2C000F1B101005596A2419750000000030040A3
3886:10F2D0009798010000A900404599010000000040F6
3887:10F2E000F1B101005996A241975000003000004052
3888:10F2F000979801000000005561B101000000004B2B
3889:10F3000062B101005D96A840813200005D96A24185
3890:10F31000975000000000804081B201000000804052
3891:10F3200081B201000400004081B2000004000040EE
3892:10F3300081B200000400004081B2000004000040DF
3893:10F3400081B200000400004081B2000004000040CF
3894:10F3500081B200000400004081B2000004000040BF
3895:10F3600081B200000400004081B2000004000040AF
3896:10F3700081B200000400004081B20000040000409F
3897:10F3800081B200000400004081B20000040000408F
3898:10F3900081B200000400004081B20000040000407F
3899:10F3A00081B200000400004081B20000040000406F
3900:10F3B00081B200000400004081B20000040000405F
3901:10F3C00081B200000400004081B20000040000404F
3902:10F3D00081B200000400004081B20000040000403F
3903:10F3E00081B200000400004081B20000040000402F
3904:10F3F00081B200000400004081B20000040000401F
3905:10F4000081B200000400004081B20000040000400E
3906:10F4100081B200000400004081B2000004000040FE
3907:10F4200081B200000400004081B2000004000040EE
3908:10F4300081B200000400004081B2000004000040DE
3909:10F4400081B200000400004081B2000004000040CE
3910:10F4500081B200000400004081B2000004000040BE
3911:10F4600081B200000400004081B2000004000040AE
3912:10F4700081B200000400004081B20000040000409E
3913:10F4800081B200000400004081B20000040000408E
3914:10F4900081B200000400004081B20000040000407E
3915:10F4A00081B200000400004081B20000040000406E
3916:10F4B00081B200000400004081B20000040000405E
3917:10F4C00081B200000400004081B20000040000404E
3918:10F4D00081B200000400004081B20000040000403E
3919:10F4E00081B200000400004081B20000040000402E
3920:10F4F00081B200000400004081B20000040000401E
3921:10F5000081B200000400004081B20000040000400D
3922:10F5100081B200000400004081B2000004000040FD
3923:10F5200081B200000400004081B2000004000040ED
3924:10F5300081B200000400004081B2000004000040DD
3925:10F5400081B200000400004081B2000004000040CD
3926:10F5500081B200000400004081B2000004000040BD
3927:10F5600081B200000400004081B2000004000040AD
3928:10F5700081B200000400004081B20000040000409D
3929:10F5800081B200000400004081B20000040000408D
3930:10F5900081B200000400004081B20000040000407D
3931:10F5A00081B200000400004081B20000040000406D
3932:10F5B00081B200000400004081B20000040000405D
3933:10F5C00081B200000400004081B20000040000404D
3934:10F5D00081B200000400004081B20000040000403D
3935:10F5E00081B200000400004081B20000040000402D
3936:10F5F00081B200000400004081B20000040000401D
3937:10F6000081B200000400004081B20000040000400C
3938:10F6100081B200000400004081B2000004000040FC
3939:10F6200081B200000400004081B2000004000040EC
3940:10F6300081B200000400004081B2000004000040DC
3941:10F6400081B200000400004081B2000004000040CC
3942:10F6500081B200000400004081B2000004000040BC
3943:10F6600081B200000400004081B2000004000040AC
3944:10F6700081B200000400004081B20000040000409C
3945:10F6800081B200000400004081B20000040000408C
3946:10F6900081B200000400004081B20000040000407C
3947:10F6A00081B200000400004081B20000040000406C
3948:10F6B00081B200000400004081B20000040000405C
3949:10F6C00081B200000400004081B20000040000404C
3950:10F6D00081B200000400004081B20000040000403C
3951:10F6E00081B200000400004081B20000040000402C
3952:10F6F00081B200000400004081B20000040000401C
3953:10F7000081B200000400004081B20000040000400B
3954:10F7100081B200000400004081B2000004000040FB
3955:10F7200081B200000400004081B2000004000040EB
3956:10F7300081B200000400004081B2000004000040DB
3957:10F7400081B200000400004081B2000004000040CB
3958:10F7500081B200000400004081B2000004000040BB
3959:10F7600081B200000400004081B2000004000040AB
3960:10F7700081B200000400004081B20000040000409B
3961:10F7800081B200000400004081B20000040000408B
3962:10F7900081B200000400004081B20000040000407B
3963:10F7A00081B200000400004081B20000040000406B
3964:10F7B00081B200000400004081B20000040000405B
3965:10F7C00081B200000400004081B20000040000404B
3966:10F7D00081B200000400004081B20000040000403B
3967:10F7E00081B200000400004081B20000040000402B
3968:10F7F00081B200000400004081B20000040000401B
3969:10F8000081B200000400004081B20000040000400A
3970:10F8100081B200000400004081B2000004000040FA
3971:10F8200081B200000400004081B2000004000040EA
3972:10F8300081B200000400004081B2000004000040DA
3973:10F8400081B200000400004081B2000004000040CA
3974:10F8500081B200000400004081B2000004000040BA
3975:10F8600081B200000400004081B2000004000040AA
3976:10F8700081B200000400004081B20000040000409A
3977:10F8800081B200000400004081B20000040000408A
3978:10F8900081B200000400004081B20000040000407A
3979:10F8A00081B200000400004081B20000040000406A
3980:10F8B00081B200000400004081B20000040000405A
3981:10F8C00081B200000400004081B20000040000404A
3982:10F8D00081B200000400004081B20000040000403A
3983:10F8E00081B200000400004081B20000040000402A
3984:10F8F00081B200000400004081B20000040000401A
3985:10F9000081B200000400004081B200000400004009
3986:10F9100081B200000400004081B2000004000040F9
3987:10F9200081B200000400004081B2000004000040E9
3988:10F9300081B200000400004081B2000004000040D9
3989:10F9400081B200000400004081B2000004000040C9
3990:10F9500081B200000400004081B2000004000040B9
3991:10F9600081B200000400004081B2000004000040A9
3992:10F9700081B200000400004081B200000400004099
3993:10F9800081B200000400004081B200000400004089
3994:10F9900081B200000400004081B200000400004079
3995:10F9A00081B200000400004081B200000400004069
3996:10F9B00081B200000400004081B200000400004059
3997:10F9C00081B200000400004081B200000400004049
3998:10F9D00081B200000400004081B200000400004039
3999:10F9E00081B200000400004081B200000400004029
4000:10F9F00081B200000400004081B200000400004019
4001:10FA000081B200000400004081B200000400004008
4002:10FA100081B200000400004081B2000004000040F8
4003:10FA200081B200000400004081B2000004000040E8
4004:10FA300081B200000400004081B2000004000040D8
4005:10FA400081B200000400004081B2000004000040C8
4006:10FA500081B200000400004081B2000004000040B8
4007:10FA600081B200000400004081B2000004000040A8
4008:10FA700081B200000400004081B200000400004098
4009:10FA800081B200000400004081B200000400004088
4010:10FA900081B200000400004081B200000400004078
4011:10FAA00081B200000400004081B200000400004068
4012:10FAB00081B200000400004081B200000400004058
4013:10FAC00081B200000400004081B200000400004048
4014:10FAD00081B200000400004081B200000400004038
4015:10FAE00081B200000400004081B200000400004028
4016:10FAF00081B200000400004081B200000400004018
4017:10FB000081B200000400004081B200000400004007
4018:10FB100081B200000400004081B2000004000040F7
4019:10FB200081B200000400004081B2000004000040E7
4020:10FB300081B200000400004081B2000004000040D7
4021:10FB400081B200000400004081B2000004000040C7
4022:10FB500081B200000400004081B2000004000040B7
4023:10FB600081B200000400004081B2000004000040A7
4024:10FB700081B200000400004081B200000400004097
4025:10FB800081B200000400004081B200000400004087
4026:10FB900081B200000400004081B200000400004077
4027:10FBA00081B200000400004081B200000400004067
4028:10FBB00081B200000400004081B200000400004057
4029:10FBC00081B200000400004081B200000400004047
4030:10FBD00081B200000400004081B200000400004037
4031:10FBE00081B200000400004081B200000400004027
4032:10FBF00081B200000400004081B200000400004017
4033:10FC000081B200000400004081B200000400004006
4034:10FC100081B200000400004081B2000004000040F6
4035:10FC200081B200000400004081B2000004000040E6
4036:10FC300081B200000400004081B2000004000040D6
4037:10FC400081B200000400004081B2000004000040C6
4038:10FC500081B200000400004081B2000004000040B6
4039:10FC600081B200000400004081B2000004000040A6
4040:10FC700081B200000400004081B200000400004096
4041:10FC800081B200000400004081B200000400004086
4042:10FC900081B200000400004081B200000400004076
4043:10FCA00081B200000400004081B200000400004066
4044:10FCB00081B200000400004081B200000400004056
4045:10FCC00081B200000400004081B200000400004046
4046:10FCD00081B200000400004081B200000400004036
4047:10FCE00081B200000400004081B200000400004026
4048:10FCF00081B200000400004081B200000400004016
4049:10FD000081B200000400004081B200000400004005
4050:10FD100081B200000400004081B2000004000040F5
4051:10FD200081B200000400004081B2000004000040E5
4052:10FD300081B200000400004081B2000004000040D5
4053:10FD400081B200000400004081B2000004000040C5
4054:10FD500081B200000400004081B2000004000040B5
4055:10FD600081B200000400004081B2000004000040A5
4056:10FD700081B200000400004081B200000400004095
4057:10FD800081B200000400004081B200000400004085
4058:10FD900081B200000400004081B200000400004075
4059:10FDA00081B200000400004081B200000400004065
4060:10FDB00081B200000400004081B200000400004055
4061:10FDC00081B200000400004081B200000400004045
4062:10FDD00081B200000400004081B200000400004035
4063:10FDE00081B200000400004081B200000400004025
4064:10FDF00081B200000400004081B200000400004015
4065:10FE000081B200000400004081B200000400004004
4066:10FE100081B200000400004081B2000004000040F4
4067:10FE200081B200000400004081B2000004000040E4
4068:10FE300081B200000400004081B2000004000040D4
4069:10FE400081B200000400004081B2000004000040C4
4070:10FE500081B200000400004081B2000004000040B4
4071:10FE600081B200000400004081B2000004000040A4
4072:10FE700081B200000400004081B200000400004094
4073:10FE800081B200000400004081B200000400004084
4074:10FE900081B200000400004081B200000400004074
4075:10FEA00081B200000400004081B200000400004064
4076:10FEB00081B200000400004081B200000400004054
4077:10FEC00081B200000400004081B200000400004044
4078:10FED00081B200000400004081B200000400004034
4079:10FEE00081B200000400004081B200000400004024
4080:10FEF00081B200000400004081B200000400004014
4081:10FF000081B200000400004081B200000400004003
4082:10FF100081B200000400004081B2000004000040F3
4083:10FF200081B200000400004081B2000004000040E3
4084:10FF300081B200000400004081B2000004000040D3
4085:10FF400081B200000400004081B2000004000040C3
4086:10FF500081B200000400004081B2000004000040B3
4087:10FF600081B200000400004081B2000004000040A3
4088:10FF700081B200000400004081B200000400004093
4089:10FF800081B200000400004081B200000400004083
4090:10FF900081B200000400004081B200000400004073
4091:10FFA00081B200000400004081B200000400004063
4092:10FFB00081B200000400004081B200000400004053
4093:10FFC00081B200000400004081B200000400004043
4094:10FFD00081B200000400004081B200000400004033
4095:10FFE00081B200000400004081B200000400004023
4096:10FFF00081B200000400004081B200000400004013
4097:020000021000EC
4098:1000000081B200000400004081B200000400004002
4099:1000100081B200000400004081B2000004000040F2
4100:1000200081B200000400004081B2000004000040E2
4101:1000300081B200000400004081B2000004000040D2
4102:1000400081B200000400004081B2000004000040C2
4103:1000500081B200000400004081B2000004000040B2
4104:1000600081B200000400004081B2000004000040A2
4105:1000700081B200000400004081B200000400004092
4106:1000800081B200000400004081B200000400004082
4107:1000900081B200000400004081B200000400004072
4108:1000A00081B200000400004081B200000400004062
4109:1000B00081B200000400004081B200000400004052
4110:1000C00081B200000400004081B200000400004042
4111:1000D00081B200000400004081B200000400004032
4112:1000E00081B200000400004081B200000400004022
4113:1000F00081B200000400004081B200000400004012
4114:1001000081B200000400004081B200000400004001
4115:1001100081B200000400004081B2000004000040F1
4116:1001200081B200000400004081B2000004000040E1
4117:1001300081B200000400004081B2000004000040D1
4118:1001400081B200000400004081B2000004000040C1
4119:1001500081B200000400004081B2000004000040B1
4120:1001600081B200000400004081B2000004000040A1
4121:1001700081B200000400004081B200000400004091
4122:1001800081B200000400004081B200000400004081
4123:1001900081B200000400004081B200000400004071
4124:1001A00081B200000400004081B200000400004061
4125:1001B00081B200000400004081B200000400004051
4126:1001C00081B200000400004081B200000400004041
4127:1001D00081B200000400004081B200000400004031
4128:1001E00081B200000400004081B200000400004021
4129:1001F00081B200000400004081B200000400004011
4130:1002000081B200000400004081B200000400004000
4131:1002100081B200000400004081B2000004000040F0
4132:1002200081B200000400004081B2000004000040E0
4133:1002300081B200000400004081B2000004000040D0
4134:1002400081B200000400004081B2000004000040C0
4135:1002500081B200000400004081B2000004000040B0
4136:1002600081B200000400004081B2000004000040A0
4137:1002700081B200000400004081B200000400004090
4138:1002800081B200000400004081B200000400004080
4139:1002900081B200000400004081B200000400004070
4140:1002A00081B200000400004081B200000400004060
4141:1002B00081B200000400004081B200000400004050
4142:1002C00081B200000400004081B200000400004040
4143:1002D00081B200000400004081B200000400004030
4144:1002E00081B200000400004081B200000400004020
4145:1002F00081B200000400004081B200000400004010
4146:1003000081B200000400004081B2000004000040FF
4147:1003100081B200000400004081B2000004000040EF
4148:1003200081B200000400004081B2000004000040DF
4149:1003300081B200000400004081B2000004000040CF
4150:1003400081B200000400004081B2000004000040BF
4151:1003500081B200000400004081B2000004000040AF
4152:1003600081B200000400004081B20000040000409F
4153:1003700081B200000400004081B20000040000408F
4154:1003800081B200000400004081B20000040000407F
4155:1003900081B200000400004081B20000040000406F
4156:1003A00081B200000400004081B20000040000405F
4157:1003B00081B200000400004081B20000040000404F
4158:1003C00081B200000400004081B20000040000403F
4159:1003D00081B200000400004081B20000040000402F
4160:1003E00081B200000400004081B20000040000401F
4161:1003F00081B200000400004081B20000040000400F
4162:1004000081B200000400004081B2000004000040FE
4163:1004100081B200000400004081B2000004000040EE
4164:1004200081B200000400004081B2000004000040DE
4165:1004300081B200000400004081B2000004000040CE
4166:1004400081B200000400004081B2000004000040BE
4167:1004500081B200000400004081B2000004000040AE
4168:1004600081B200000400004081B20000040000409E
4169:1004700081B200000400004081B20000040000408E
4170:1004800081B200000400004081B20000040000407E
4171:1004900081B200000400004081B20000040000406E
4172:1004A00081B200000400004081B20000040000405E
4173:1004B00081B200000400004081B20000040000404E
4174:1004C00081B200000400004081B20000040000403E
4175:1004D00081B200000400004081B20000040000402E
4176:1004E00081B200000400004081B20000040000401E
4177:1004F00081B200000400004081B20000040000400E
4178:1005000081B200000400004081B2000004000040FD
4179:1005100081B200000400004081B2000004000040ED
4180:1005200081B200000400004081B2000004000040DD
4181:1005300081B200000400004081B2000004000040CD
4182:1005400081B200000400004081B2000004000040BD
4183:1005500081B200000400004081B2000004000040AD
4184:1005600081B200000400004081B20000040000409D
4185:1005700081B200000400004081B20000040000408D
4186:1005800081B200000400004081B20000040000407D
4187:1005900081B200000400004081B20000040000406D
4188:1005A00081B200000400004081B20000040000405D
4189:1005B00081B200000400004081B20000040000404D
4190:1005C00081B200000400004081B20000040000403D
4191:1005D00081B200000400004081B20000040000402D
4192:1005E00081B200000400004081B20000040000401D
4193:1005F00081B200000400004081B20000040000400D
4194:1006000081B200000400004081B2000004000040FC
4195:1006100081B200000400004081B2000004000040EC
4196:1006200081B200000400004081B2000004000040DC
4197:1006300081B200000400004081B2000004000040CC
4198:1006400081B200000400004081B2000004000040BC
4199:1006500081B200000400004081B2000004000040AC
4200:1006600081B200000400004081B20000040000409C
4201:1006700081B200000400004081B20000040000408C
4202:1006800081B200000400004081B20000040000407C
4203:1006900081B200000400004081B20000040000406C
4204:1006A00081B200000400004081B20000040000405C
4205:1006B00081B200000400004081B20000040000404C
4206:1006C00081B200000400004081B20000040000403C
4207:1006D00081B200000400004081B20000040000402C
4208:1006E00081B200000400004081B20000040000401C
4209:1006F00081B200000400004081B20000040000400C
4210:1007000081B200000400004081B2000004000040FB
4211:1007100081B200000400004081B2000004000040EB
4212:1007200081B200000400004081B2000004000040DB
4213:1007300081B200000400004081B2000004000040CB
4214:1007400081B200000400004081B2000004000040BB
4215:1007500081B200000400004081B2000004000040AB
4216:1007600081B200000400004081B20000040000409B
4217:1007700081B200000400004081B20000040000408B
4218:1007800081B200000400004081B20000040000407B
4219:1007900081B200000400004081B20000040000406B
4220:1007A00081B200000400004081B20000040000405B
4221:1007B00081B200000400004081B20000040000404B
4222:1007C00081B200000400004081B20000040000403B
4223:1007D00081B200000400004081B20000040000402B
4224:1007E00081B200000400004081B20000040000401B
4225:1007F00081B200000400004081B20000040000400B
4226:1008000081B200000400004081B2000004000040FA
4227:1008100081B200000400004081B2000004000040EA
4228:1008200081B200000400004081B2000004000040DA
4229:1008300081B200000400004081B2000004000040CA
4230:1008400081B200000400004081B2000004000040BA
4231:1008500081B200000400004081B2000004000040AA
4232:1008600081B200000400004081B20000040000409A
4233:1008700081B200000400004081B20000040000408A
4234:1008800081B200000400004081B20000040000407A
4235:1008900081B200000400004081B20000040000406A
4236:1008A00081B200000400004081B20000040000405A
4237:1008B00081B200000400004081B20000040000404A
4238:1008C00081B200000400004081B20000040000403A
4239:1008D00081B200000400004081B20000040000402A
4240:1008E00081B200000400004081B20000040000401A
4241:1008F00081B200000400004081B20000040000400A
4242:1009000081B200000400004081B2000004000040F9
4243:1009100081B200000400004081B2000004000040E9
4244:1009200081B200000400004081B2000004000040D9
4245:1009300081B200000400004081B2000004000040C9
4246:1009400081B200000400004081B2000004000040B9
4247:1009500081B200000400004081B2000004000040A9
4248:1009600081B200000400004081B200000400004099
4249:1009700081B200000400004081B200000400004089
4250:1009800081B200000400004081B200000400004079
4251:1009900081B200000400004081B200000400004069
4252:1009A00081B200000400004081B200000400004059
4253:1009B00081B200000400004081B200000400004049
4254:1009C00081B200000400004081B200000400004039
4255:1009D00081B200000400004081B200000400004029
4256:1009E00081B200000400004081B200000400004019
4257:1009F00081B200000400004081B200000400004009
4258:100A000081B200000400004081B2000004000040F8
4259:100A100081B200000400004081B2000004000040E8
4260:100A200081B200000400004081B2000004000040D8
4261:100A300081B200000400004081B2000004000040C8
4262:100A400081B200000400004081B2000004000040B8
4263:100A500081B200000400004081B2000004000040A8
4264:100A600081B200000400004081B200000400004098
4265:100A700081B200000400004081B200000400004088
4266:100A800081B200000400004081B200000400004078
4267:100A900081B200000400004081B200000400004068
4268:100AA00081B200000400004081B200000400004058
4269:100AB00081B200000400004081B200000400004048
4270:100AC00081B200000400004081B200000400004038
4271:100AD00081B200000400004081B200000400004028
4272:100AE00081B200000400004081B200000400004018
4273:100AF00081B200000400004081B200000400004008
4274:100B000081B200000400004081B2000004000040F7
4275:100B100081B200000400004081B2000004000040E7
4276:100B200081B200000400004081B2000004000040D7
4277:100B300081B200000400004081B2000004000040C7
4278:100B400081B200000400004081B2000004000040B7
4279:100B500081B200000400004081B2000004000040A7
4280:100B600081B200000400004081B200000400004097
4281:100B700081B200000400004081B200000400004087
4282:100B800081B200000400004081B200000400004077
4283:100B900081B200000400004081B200000400004067
4284:100BA00081B200000400004081B200000400004057
4285:100BB00081B200000400004081B200000400004047
4286:100BC00081B200000400004081B200000400004037
4287:100BD00081B200000400004081B200000400004027
4288:100BE00081B200000400004081B200000400004017
4289:100BF00081B200000400004081B200000400004007
4290:100C000081B200000400004081B2000004000040F6
4291:100C100081B200000400004081B2000004000040E6
4292:100C200081B200000400004081B2000004000040D6
4293:100C300081B200000400004081B2000004000040C6
4294:100C400081B200000400004081B2000004000040B6
4295:100C500081B200000400004081B2000004000040A6
4296:100C600081B200000400004081B200000400004096
4297:100C700081B200000400004081B200000400004086
4298:100C800081B200000400004081B200000400004076
4299:100C900081B200000400004081B200000400004066
4300:100CA00081B200000400004081B200000400004056
4301:100CB00081B200000400004081B200000400004046
4302:100CC00081B200000400004081B200000400004036
4303:100CD00081B200000400004081B200000400004026
4304:100CE00081B200000400004081B200000400004016
4305:100CF00081B200000400004081B200000400004006
4306:100D000081B200000400004081B2000004000040F5
4307:100D100081B200000400004081B2000004000040E5
4308:100D200081B200000400004081B2000004000040D5
4309:100D300081B200000400004081B2000004000040C5
4310:100D400081B200000400004081B2000004000040B5
4311:100D500081B200000400004081B2000004000040A5
4312:100D600081B200000400004081B200000400004095
4313:100D700081B200000400004081B200000400004085
4314:100D800081B200000400004081B200000400004075
4315:100D900081B200000400004081B200000400004065
4316:100DA00081B200000400004081B200000400004055
4317:100DB00081B200000400004081B200000400004045
4318:100DC00081B200000400004081B200000400004035
4319:100DD00081B200000400004081B200000400004025
4320:100DE00081B200000400004081B200000400004015
4321:100DF00081B200000400004081B200000400004005
4322:100E000081B200000400004081B2000004000040F4
4323:100E100081B200000400004081B2000004000040E4
4324:100E200081B200000400004081B2000004000040D4
4325:100E300081B200000400004081B2000004000040C4
4326:100E400081B200000400004081B2000004000040B4
4327:100E500081B200000400004081B2000004000040A4
4328:100E600081B200000400004081B200000400004094
4329:100E700081B200000400004081B200000400004084
4330:100E800081B200000400004081B200000400004074
4331:100E900081B200000400004081B200000400004064
4332:100EA00081B200000400004081B200000400004054
4333:100EB00081B200000400004081B200000400004044
4334:100EC00081B200000400004081B200000400004034
4335:100ED00081B200000400004081B200000400004024
4336:100EE00081B200000400004081B200000400004014
4337:100EF00081B200000400004081B200000400004004
4338:100F000081B200000400004081B2000004000040F3
4339:100F100081B200000400004081B2000004000040E3
4340:100F200081B200000400004081B2000004000040D3
4341:100F300081B200000400004081B2000004000040C3
4342:100F400081B200000400004081B2000004000040B3
4343:100F500081B200000400004081B2000004000040A3
4344:100F600081B200000400004081B200000400004093
4345:100F700081B200000400004081B200000400004083
4346:100F800081B200000400004081B200000400004073
4347:100F900081B200000400004081B200000400004063
4348:100FA00081B200000400004081B200000400004053
4349:100FB00081B200000400004081B200000400004043
4350:100FC00081B200000400004081B200000400004033
4351:100FD00081B200000400004081B200000400004023
4352:100FE00081B200000400004081B200000400004013
4353:100FF00081B200000400004081B200000400004003
4354:1010000081B200000400004081B2000004000040F2
4355:1010100081B200000400004081B2000004000040E2
4356:1010200081B200000400004081B2000004000040D2
4357:1010300081B200000400004081B2000004000040C2
4358:1010400081B200000400004081B2000004000040B2
4359:1010500081B200000400004081B2000004000040A2
4360:1010600081B200000400004081B200000400004092
4361:1010700081B200000400004081B200000400004082
4362:1010800081B200000400004081B200000400004072
4363:1010900081B200000400004081B200000400004062
4364:1010A00081B200000400004081B200000400004052
4365:1010B00081B200000400004081B200000400004042
4366:1010C00081B200000400004081B200000400004032
4367:1010D00081B200000400004081B200000400004022
4368:1010E00081B200000400004081B200000400004012
4369:1010F00081B200000400004081B200000400004002
4370:1011000081B200000400004081B2000004000040F1
4371:1011100081B200000400004081B2000004000040E1
4372:1011200081B200000400004081B2000004000040D1
4373:1011300081B200000400004081B2000004000040C1
4374:1011400081B200000400004081B2000004000040B1
4375:1011500081B200000400004081B2000004000040A1
4376:1011600081B200000400004081B200000400004091
4377:1011700081B200000400004081B200000400004081
4378:1011800081B200000400004081B200000400004071
4379:1011900081B200000400004081B200000400004061
4380:1011A00081B200000400004081B200000400004051
4381:1011B00081B200000400004081B200000400004041
4382:1011C00081B200000400004081B200000400004031
4383:1011D00081B200000400004081B200000400004021
4384:1011E00081B200000400004081B200000400004011
4385:1011F00081B200000400004081B200000400004001
4386:1012000081B200000400004081B2000004000040F0
4387:1012100081B200000400004081B2000004000040E0
4388:1012200081B200000400004081B2000004000040D0
4389:1012300081B200000400004081B2000004000040C0
4390:1012400081B200000400004081B2000004000040B0
4391:1012500081B200000400004081B2000004000040A0
4392:1012600081B200000400004081B200000400004090
4393:1012700081B200000400004081B200000400004080
4394:1012800081B200000400004081B200000400004070
4395:1012900081B200000400004081B200000400004060
4396:1012A00081B200000400004081B200000400004050
4397:1012B00081B200000400004081B200000400004040
4398:1012C00081B200000400004081B200000400004030
4399:1012D00081B200000400004081B200000400004020
4400:1012E00081B200000400004081B200000400004010
4401:1012F00081B200000400004081B200000400004000
4402:1013000081B200000400004081B2000004000040EF
4403:1013100081B200000400004081B2000004000040DF
4404:1013200081B200000400004081B2000004000040CF
4405:1013300081B200000400004081B2000004000040BF
4406:1013400081B200000400004081B2000004000040AF
4407:1013500081B200000400004081B20000040000409F
4408:1013600081B200000400004081B20000040000408F
4409:1013700081B200000400004081B20000040000407F
4410:1013800081B200000400004081B20000040000406F
4411:1013900081B200000400004081B20000040000405F
4412:1013A00081B200000400004081B20000040000404F
4413:1013B00081B200000400004081B20000040000403F
4414:1013C00081B200000400004081B20000040000402F
4415:1013D00081B200000400004081B20000040000401F
4416:1013E00081B200000400004081B20000040000400F
4417:1013F00081B200000400004081B2000004000040FF
4418:1014000081B200000400004081B2000004000040EE
4419:1014100081B200000400004081B2000004000040DE
4420:1014200081B200000400004081B2000004000040CE
4421:1014300081B200000400004081B2000004000040BE
4422:1014400081B200000400004081B2000004000040AE
4423:1014500081B200000400004081B20000040000409E
4424:1014600081B200000400004081B20000040000408E
4425:1014700081B200000400004081B20000040000407E
4426:1014800081B200000400004081B20000040000406E
4427:1014900081B200000400004081B20000040000405E
4428:1014A00081B200000400004081B20000040000404E
4429:1014B00081B200000400004081B20000040000403E
4430:1014C00081B200000400004081B20000040000402E
4431:1014D00081B200000400004081B20000040000401E
4432:1014E00081B200000400004081B20000040000400E
4433:1014F00081B200000400004081B2000004000040FE
4434:1015000081B200000400004081B2000004000040ED
4435:1015100081B200000400004081B2000004000040DD
4436:1015200081B200000400004081B2000004000040CD
4437:1015300081B200000400004081B2000004000040BD
4438:1015400081B200000400004081B2000004000040AD
4439:1015500081B200000400004081B20000040000409D
4440:1015600081B200000400004081B20000040000408D
4441:1015700081B200000400004081B20000040000407D
4442:1015800081B200000400004081B20000040000406D
4443:1015900081B200000400004081B20000040000405D
4444:1015A00081B200000400004081B20000040000404D
4445:1015B00081B200000400004081B20000040000403D
4446:1015C00081B200000400004081B20000040000402D
4447:1015D00081B200000400004081B20000040000401D
4448:1015E00081B200000400004081B20000040000400D
4449:1015F00081B200000400004081B2000004000040FD
4450:1016000081B200000400004081B2000004000040EC
4451:1016100081B200000400004081B2000004000040DC
4452:1016200081B200000400004081B2000004000040CC
4453:1016300081B200000400004081B2000004000040BC
4454:1016400081B200000400004081B2000004000040AC
4455:1016500081B200000400004081B20000040000409C
4456:1016600081B200000400004081B20000040000408C
4457:1016700081B200000400004081B20000040000407C
4458:1016800081B200000400004081B20000040000406C
4459:1016900081B200000400004081B20000040000405C
4460:1016A00081B200000400004081B20000040000404C
4461:1016B00081B200000400004081B20000040000403C
4462:1016C00081B200000400004081B20000040000402C
4463:1016D00081B200000400004081B20000040000401C
4464:1016E00081B200000400004081B20000040000400C
4465:1016F00081B200000400004081B2000004000040FC
4466:1017000081B200000400004081B2000004000040EB
4467:1017100081B200000400004081B2000004000040DB
4468:1017200081B200000400004081B2000004000040CB
4469:1017300081B200000400004081B2000004000040BB
4470:1017400081B200000400004081B2000004000040AB
4471:1017500081B200000400004081B20000040000409B
4472:1017600081B200000400004081B20000040000408B
4473:1017700081B200000400004081B20000040000407B
4474:1017800081B200000400004081B20000040000406B
4475:1017900081B200000400004081B20000040000405B
4476:1017A00081B200000400004081B20000040000404B
4477:1017B00081B200000400004081B20000040000403B
4478:1017C00081B200000400004081B20000040000402B
4479:1017D00081B200000400004081B20000040000401B
4480:1017E00081B200000400004081B20000040000400B
4481:1017F00081B200000400004081B2000004000040FB
4482:1018000081B200000400004081B2000004000040EA
4483:1018100081B200000400004081B2000004000040DA
4484:1018200081B200000400004081B2000004000040CA
4485:1018300081B200000400004081B2000004000040BA
4486:1018400081B200000400004081B2000004000040AA
4487:1018500081B200000400004081B20000040000409A
4488:1018600081B200000400004081B20000040000408A
4489:1018700081B200000400004081B20000040000407A
4490:1018800081B200000400004081B20000040000406A
4491:1018900081B200000400004081B20000040000405A
4492:1018A00081B200000400004081B20000040000404A
4493:1018B00081B200000400004081B20000040000403A
4494:1018C00081B200000400004081B20000040000402A
4495:1018D00081B200000400004081B20000040000401A
4496:1018E00081B200000400004081B20000040000400A
4497:1018F00081B200000400004081B2000004000040FA
4498:1019000081B200000400004081B2000004000040E9
4499:1019100081B200000400004081B2000004000040D9
4500:1019200081B200000400004081B2000004000040C9
4501:1019300081B200000400004081B2000004000040B9
4502:1019400081B200000400004081B2000004000040A9
4503:1019500081B200000400004081B200000400004099
4504:1019600081B200000400004081B200000400004089
4505:1019700081B200000400004081B200000400004079
4506:1019800081B200000400004081B200000400004069
4507:1019900081B200000400004081B200000400004059
4508:1019A00081B200000400004081B200000400004049
4509:1019B00081B200000400004081B200000400004039
4510:1019C00081B200000400004081B200000400004029
4511:1019D00081B200000400004081B200000400004019
4512:1019E00081B200000400004081B200000400004009
4513:1019F00081B200000400004081B2000004000040F9
4514:101A000081B200000400004081B2000004000040E8
4515:101A100081B200000400004081B2000004000040D8
4516:101A200081B200000400004081B2000004000040C8
4517:101A300081B200000400004081B2000004000040B8
4518:101A400081B200000400004081B2000004000040A8
4519:101A500081B200000400004081B200000400004098
4520:101A600081B200000400004081B200000400004088
4521:101A700081B200000400004081B200000400004078
4522:101A800081B200000400004081B200000400004068
4523:101A900081B200000400004081B200000400004058
4524:101AA00081B200000400004081B200000400004048
4525:101AB00081B200000400004081B200000400004038
4526:101AC00081B200000400004081B200000400004028
4527:101AD00081B200000400004081B200000400004018
4528:101AE00081B200000400004081B200000400004008
4529:101AF00081B200000400004081B2000004000040F8
4530:101B000081B200000400004081B2000004000040E7
4531:101B100081B200000400004081B2000004000040D7
4532:101B200081B200000400004081B2000004000040C7
4533:101B300081B200000400004081B2000004000040B7
4534:101B400081B200000400004081B2000004000040A7
4535:101B500081B200000400004081B200000400004097
4536:101B600081B200000400004081B200000400004087
4537:101B700081B200000400004081B200000400004077
4538:101B800081B200000400004081B200000400004067
4539:101B900081B200000400004081B200000400004057
4540:101BA00081B200000400004081B200000400004047
4541:101BB00081B200000400004081B200000400004037
4542:101BC00081B200000400004081B200000400004027
4543:101BD00081B200000400004081B200000400004017
4544:101BE00081B200000400004081B200000400004007
4545:101BF00081B200000400004081B2000004000040F7
4546:101C000081B200000400004081B2000004000040E6
4547:101C100081B200000400004081B2000004000040D6
4548:101C200081B200000400004081B2000004000040C6
4549:101C300081B200000400004081B2000004000040B6
4550:101C400081B200000400004081B2000004000040A6
4551:101C500081B200000400004081B200000400004096
4552:101C600081B200000400004081B200000400004086
4553:101C700081B200000400004081B200000400004076
4554:101C800081B200000400004081B200000400004066
4555:101C900081B200000400004081B200000400004056
4556:101CA00081B200000400004081B200000400004046
4557:101CB00081B200000400004081B200000400004036
4558:101CC00081B200000400004081B200000400004026
4559:101CD00081B200000400004081B200000400004016
4560:101CE00081B200000400004081B200000400004006
4561:101CF00081B200000400004081B2000004000040F6
4562:101D000081B200000400004081B2000004000040E5
4563:101D100081B200000400004081B2000004000040D5
4564:101D200081B200000400004081B2000004000040C5
4565:101D300081B200000400004081B2000004000040B5
4566:101D400081B200000400004081B2000004000040A5
4567:101D500081B200000400004081B200000400004095
4568:101D600081B200000400004081B200000400004085
4569:101D700081B200000400004081B200000400004075
4570:101D800081B200000400004081B200000400004065
4571:101D900081B200000400004081B200000400004055
4572:101DA00081B200000400004081B200000400004045
4573:101DB00081B200000400004081B200000400004035
4574:101DC00081B200000400004081B200000400004025
4575:101DD00081B200000400004081B200000400004015
4576:101DE00081B200000400004081B200000400004005
4577:101DF00081B200000400004081B2000004000040F5
4578:101E000081B200000400004081B2000004000040E4
4579:101E100081B200000400004081B2000004000040D4
4580:101E200081B200000400004081B2000004000040C4
4581:101E300081B200000400004081B2000004000040B4
4582:101E400081B200000400004081B2000004000040A4
4583:101E500081B200000400004081B200000400004094
4584:101E600081B200000400004081B200000400004084
4585:101E700081B200000400004081B200000400004074
4586:101E800081B200000400004081B200000400004064
4587:101E900081B200000400004081B200000400004054
4588:101EA00081B200000400004081B200000400004044
4589:101EB00081B200000400004081B200000400004034
4590:101EC00081B200000400004081B200000400004024
4591:101ED00081B200000400004081B200000400004014
4592:101EE00081B200000400004081B200000400004004
4593:101EF00081B200000400004081B2000004000040F4
4594:101F000081B200000400004081B2000004000040E3
4595:101F100081B200000400004081B2000004000040D3
4596:101F200081B200000400004081B2000004000040C3
4597:101F300081B200000400004081B2000004000040B3
4598:101F400081B200000400004081B2000004000040A3
4599:101F500081B200000400004081B200000400004093
4600:101F600081B200000400004081B200000400004083
4601:101F700081B200000400004081B200000400004073
4602:101F800081B200000400004081B200000400004063
4603:101F900081B200000400004081B200000400004053
4604:101FA00081B200000400004081B200000400004043
4605:101FB00081B200000400004081B200000400004033
4606:101FC00081B200000400004081B200000400004023
4607:101FD00081B200000400004081B200000400004013
4608:101FE00081B200000400004081B200000400004003
4609:101FF00081B200000400004081B2000004000040F3
4610:1020000081B200000400004081B2000004000040E2
4611:1020100081B200000400004081B2000004000040D2
4612:1020200081B200000400004081B2000004000040C2
4613:1020300081B200000400004081B2000004000040B2
4614:1020400081B200000400004081B2000004000040A2
4615:1020500081B200000400004081B200000400004092
4616:1020600081B200000400004081B200000400004082
4617:1020700081B200000400004081B200000400004072
4618:1020800081B200000400004081B200000400004062
4619:1020900081B200000400004081B200000400004052
4620:1020A00081B200000400004081B200000400004042
4621:1020B00081B200000400004081B200000400004032
4622:1020C00081B200000400004081B200000400004022
4623:1020D00081B200000400004081B200000400004012
4624:1020E00081B200000400004081B200000400004002
4625:1020F00081B200000400004081B2000004000040F2
4626:1021000081B200000400004081B2000004000040E1
4627:1021100081B200000400004081B2000004000040D1
4628:1021200081B200000400004081B2000004000040C1
4629:1021300081B200000400004081B2000004000040B1
4630:1021400081B200000400004081B2000004000040A1
4631:1021500081B200000400004081B200000400004091
4632:1021600081B200000400004081B200000400004081
4633:1021700081B200000400004081B200000400004071
4634:1021800081B200000400004081B200000400004061
4635:1021900081B200000400004081B200000400004051
4636:1021A00081B200000400004081B200000400004041
4637:1021B00081B200000400004081B200000400004031
4638:1021C00081B200000400004081B200000400004021
4639:1021D00081B200000400004081B200000400004011
4640:1021E00081B200000400004081B200000400004001
4641:1021F00081B200000400004081B2000004000040F1
4642:1022000081B200000400004081B2000004000040E0
4643:1022100081B200000400004081B2000004000040D0
4644:1022200081B200000400004081B2000004000040C0
4645:1022300081B200000400004081B2000004000040B0
4646:1022400081B200000400004081B2000004000040A0
4647:1022500081B200000400004081B200000400004090
4648:1022600081B200000400004081B200000400004080
4649:1022700081B200000400004081B200000400004070
4650:1022800081B200000400004081B200000400004060
4651:1022900081B200000400004081B200000400004050
4652:1022A00081B200000400004081B200000400004040
4653:1022B00081B200000400004081B200000400004030
4654:1022C00081B200000400004081B200000400004020
4655:1022D00081B200000400004081B200000400004010
4656:1022E00081B200000400004081B200000400004000
4657:1022F00081B200000400004081B2000004000040F0
4658:1023000081B200000400004081B2000004000040DF
4659:1023100081B200000400004081B2000004000040CF
4660:1023200081B200000400004081B2000004000040BF
4661:1023300081B200000400004081B2000004000040AF
4662:1023400081B200000400004081B20000040000409F
4663:1023500081B200000400004081B20000040000408F
4664:1023600081B200000400004081B20000040000407F
4665:1023700081B200000400004081B20000040000406F
4666:1023800081B200000400004081B20000040000405F
4667:1023900081B200000400004081B20000040000404F
4668:1023A00081B200000400004081B20000040000403F
4669:1023B00081B200000400004081B20000040000402F
4670:1023C00081B200000400004081B20000040000401F
4671:1023D00081B200000400004081B20000040000400F
4672:1023E00081B200000400004081B2000004000040FF
4673:1023F00081B200000400004081B2000004000040EF
4674:1024000081B200000400004081B2000004000040DE
4675:1024100081B200000400004081B2000004000040CE
4676:1024200081B200000400004081B2000004000040BE
4677:1024300081B200000400004081B2000004000040AE
4678:1024400081B200000400004081B20000040000409E
4679:1024500081B200000400004081B20000040000408E
4680:1024600081B200000400004081B20000040000407E
4681:1024700081B200000400004081B20000040000406E
4682:1024800081B200000400004081B20000040000405E
4683:1024900081B200000400004081B20000040000404E
4684:1024A00081B200000400004081B20000040000403E
4685:1024B00081B200000400004081B20000040000402E
4686:1024C00081B200000400004081B20000040000401E
4687:1024D00081B200000400004081B20000040000400E
4688:1024E00081B200000400004081B2000004000040FE
4689:1024F00081B200000400004081B2000004000040EE
4690:1025000081B200000400004081B2000004000040DD
4691:1025100081B200000400004081B2000004000040CD
4692:1025200081B200000400004081B2000004000040BD
4693:1025300081B200000400004081B2000004000040AD
4694:1025400081B200000400004081B20000040000409D
4695:1025500081B200000400004081B20000040000408D
4696:1025600081B200000400004081B20000040000407D
4697:1025700081B200000400004081B20000040000406D
4698:1025800081B200000400004081B20000040000405D
4699:1025900081B200000400004081B20000040000404D
4700:1025A00081B200000400004081B20000040000403D
4701:1025B00081B200000400004081B20000040000402D
4702:1025C00081B200000400004081B20000040000401D
4703:1025D00081B200000400004081B20000040000400D
4704:1025E00081B200000400004081B2000004000040FD
4705:1025F00081B200000400004081B2000004000040ED
4706:1026000081B200000400004081B2000004000040DC
4707:1026100081B200000400004081B2000004000040CC
4708:1026200081B200000400004081B2000004000040BC
4709:1026300081B200000400004081B2000004000040AC
4710:1026400081B200000400004081B20000040000409C
4711:1026500081B200000400004081B20000040000408C
4712:1026600081B200000400004081B20000040000407C
4713:1026700081B200000400004081B20000040000406C
4714:1026800081B200000400004081B20000040000405C
4715:1026900081B200000400004081B20000040000404C
4716:1026A00081B200000400004081B20000040000403C
4717:1026B00081B200000400004081B20000040000402C
4718:1026C00081B200000400004081B20000040000401C
4719:1026D00081B200000400004081B20000040000400C
4720:1026E00081B200000400004081B2000004000040FC
4721:1026F00081B200000400004081B2000004000040EC
4722:1027000081B200000400004081B2000004000040DB
4723:1027100081B200000400004081B2000004000040CB
4724:1027200081B200000400004081B2000004000040BB
4725:1027300081B200000400004081B2000004000040AB
4726:1027400081B200000400004081B20000040000409B
4727:1027500081B200000400004081B20000040000408B
4728:1027600081B200000400004081B20000040000407B
4729:1027700081B200000400004081B20000040000406B
4730:1027800081B200000400004081B20000040000405B
4731:1027900081B200000400004081B20000040000404B
4732:1027A00081B200000400004081B20000040000403B
4733:1027B00081B200000400004081B20000040000402B
4734:1027C00081B200000400004081B20000040000401B
4735:1027D00081B200000400004081B20000040000400B
4736:1027E00081B200000400004081B2000004000040FB
4737:1027F00081B200000400004081B2000004000040EB
4738:1028000081B200000400004081B2000004000040DA
4739:1028100081B200000400004081B2000004000040CA
4740:1028200081B200000400004081B2000004000040BA
4741:1028300081B200000400004081B2000004000040AA
4742:1028400081B200000400004081B20000040000409A
4743:1028500081B200000400004081B20000040000408A
4744:1028600081B200000400004081B20000040000407A
4745:1028700081B200000400004081B20000040000406A
4746:1028800081B200000400004081B20000040000405A
4747:1028900081B200000400004081B20000040000404A
4748:1028A00081B200000400004081B20000040000403A
4749:1028B00081B200000400004081B20000040000402A
4750:1028C00081B200000400004081B20000040000401A
4751:1028D00081B200000400004081B20000040000400A
4752:1028E00081B200000400004081B2000004000040FA
4753:1028F00081B200000400004081B2000004000040EA
4754:1029000081B200000400004081B2000004000040D9
4755:1029100081B200000400004081B2000004000040C9
4756:1029200081B200000400004081B2000004000040B9
4757:1029300081B200000400004081B2000004000040A9
4758:1029400081B200000400004081B200000400004099
4759:1029500081B200000400004081B200000400004089
4760:1029600081B200000400004081B200000400004079
4761:1029700081B200000400004081B200000400004069
4762:1029800081B200000400004081B200000400004059
4763:1029900081B200000400004081B200000400004049
4764:1029A00081B200000400004081B200000400004039
4765:1029B00081B200000400004081B200000400004029
4766:1029C00081B200000400004081B200000400004019
4767:1029D00081B200000400004081B200000400004009
4768:1029E00081B200000400004081B2000004000040F9
4769:1029F00081B200000400004081B2000004000040E9
4770:102A000081B200000400004081B2000004000040D8
4771:102A100081B200000400004081B2000004000040C8
4772:102A200081B200000400004081B2000004000040B8
4773:102A300081B200000400004081B2000004000040A8
4774:102A400081B200000400004081B200000400004098
4775:102A500081B200000400004081B200000400004088
4776:102A600081B200000400004081B200000400004078
4777:102A700081B200000400004081B200000400004068
4778:102A800081B200000400004081B200000400004058
4779:102A900081B200000400004081B200000400004048
4780:102AA00081B200000400004081B200000400004038
4781:102AB00081B200000400004081B200000400004028
4782:102AC00081B200000400004081B200000400004018
4783:102AD00081B200000400004081B200000400004008
4784:102AE00081B200000400004081B2000004000040F8
4785:102AF00081B200000400004081B2000004000040E8
4786:102B000081B200000400004081B2000004000040D7
4787:102B100081B200000400004081B2000004000040C7
4788:102B200081B200000400004081B2000004000040B7
4789:102B300081B200000400004081B2000004000040A7
4790:102B400081B200000400004081B200000400004097
4791:102B500081B200000400004081B200000400004087
4792:102B600081B200000400004081B200000400004077
4793:102B700081B200000400004081B200000400004067
4794:102B800081B200000400004081B200000400004057
4795:102B900081B200000400004081B200000400004047
4796:102BA00081B200000400004081B200000400004037
4797:102BB00081B200000400004081B200000400004027
4798:102BC00081B200000400004081B200000400004017
4799:102BD00081B200000400004081B200000400004007
4800:102BE00081B200000400004081B2000004000040F7
4801:102BF00081B200000400004081B2000004000040E7
4802:102C000081B200000400004081B2000004000040D6
4803:102C100081B200000400004081B2000004000040C6
4804:102C200081B200000400004081B2000004000040B6
4805:102C300081B200000400004081B2000004000040A6
4806:102C400081B200000400004081B200000400004096
4807:102C500081B200000400004081B200000400004086
4808:102C600081B200000400004081B200000400004076
4809:102C700081B200000400004081B200000400004066
4810:102C800081B200000400004081B200000400004056
4811:102C900081B200000400004081B200000400004046
4812:102CA00081B200000400004081B200000400004036
4813:102CB00081B200000400004081B200000400004026
4814:102CC00081B200000400004081B200000400004016
4815:102CD00081B200000400004081B200000400004006
4816:102CE00081B200000400004081B2000004000040F6
4817:102CF00081B200000400004081B2000004000040E6
4818:102D000081B200000400004081B2000004000040D5
4819:102D100081B200000400004081B2000004000040C5
4820:102D200081B200000400004081B2000004000040B5
4821:102D300081B200000400004081B2000004000040A5
4822:102D400081B200000400004081B200000400004095
4823:102D500081B200000400004081B200000400004085
4824:102D600081B200000400004081B200000400004075
4825:102D700081B200000400004081B200000400004065
4826:102D800081B200000400004081B200000400004055
4827:102D900081B200000400004081B200000400004045
4828:102DA00081B200000400004081B200000400004035
4829:102DB00081B200000400004081B200000400004025
4830:102DC00081B200000400004081B200000400004015
4831:102DD00081B200000400004081B200000400004005
4832:102DE00081B200000400004081B2000004000040F5
4833:102DF00081B200000400004081B2000004000040E5
4834:102E000081B200000400004081B2000004000040D4
4835:102E100081B200000400004081B2000004000040C4
4836:102E200081B200000400004081B2000004000040B4
4837:102E300081B200000400004081B2000004000040A4
4838:102E400081B200000400004081B200000400004094
4839:102E500081B200000400004081B200000400004084
4840:102E600081B200000400004081B200000400004074
4841:102E700081B200000400004081B200000400004064
4842:102E800081B200000400004081B200000400004054
4843:102E900081B200000400004081B200000400004044
4844:102EA00081B200000400004081B200000400004034
4845:102EB00081B200000400004081B200000400004024
4846:102EC00081B200000400004081B200000400004014
4847:102ED00081B200000400004081B200000400004004
4848:102EE00081B200000400004081B2000004000040F4
4849:102EF00081B200000400004081B2000004000040E4
4850:102F000081B200000400004081B2000004000040D3
4851:102F100081B200000400004081B2000004000040C3
4852:102F200081B200000400004081B2000004000040B3
4853:102F300081B200000400004081B2000004000040A3
4854:102F400081B200000400004081B200000400004093
4855:102F500081B200000400004081B200000400004083
4856:102F600081B200000400004081B200000400004073
4857:102F700081B200000400004081B200000400004063
4858:102F800081B200000400004081B200000400004053
4859:102F900081B200000400004081B200000400004043
4860:102FA00081B200000400004081B200000400004033
4861:102FB00081B200000400004081B200000400004023
4862:102FC00081B200000400004081B200000400004013
4863:102FD00081B200000400004081B200000400004003
4864:102FE00081B200000400004081B2000004000040F3
4865:102FF00081B200000400004081B2000004000040E3
4866:1030000081B200000400004081B2000004000040D2
4867:1030100081B200000400004081B2000004000040C2
4868:1030200081B200000400004081B2000004000040B2
4869:1030300081B200000400004081B2000004000040A2
4870:1030400081B200000400004081B200000400004092
4871:1030500081B200000400004081B200000400004082
4872:1030600081B200000400004081B200000400004072
4873:1030700081B200000400004081B200000400004062
4874:1030800081B200000400004081B200000400004052
4875:1030900081B200000400004081B200000400004042
4876:1030A00081B200000400004081B200000400004032
4877:1030B00081B200000400004081B200000400004022
4878:1030C00081B200000400004081B200000400004012
4879:1030D00081B200000400004081B200000400004002
4880:1030E00081B200000400004081B2000004000040F2
4881:1030F00081B200000400004081B2000004000040E2
4882:1031000081B200000400004081B2000004000040D1
4883:1031100081B200000400004081B2000004000040C1
4884:1031200081B200000400004081B2000004000040B1
4885:1031300081B200000400004081B2000004000040A1
4886:1031400081B200000400004081B200000400004091
4887:1031500081B200000400004081B200000400004081
4888:1031600081B200000400004081B200000400004071
4889:1031700081B200000400004081B200000400004061
4890:1031800081B200000400004081B200000400004051
4891:1031900081B200000400004081B200000400004041
4892:1031A00081B200000400004081B200000400004031
4893:1031B00081B200000400004081B200000400004021
4894:1031C00081B200000400004081B200000400004011
4895:1031D00081B200000400004081B200000400004001
4896:1031E00081B200000400004081B2000004000040F1
4897:1031F00081B200000400004081B2000004000040E1
4898:1032000081B200000400004081B2000004000040D0
4899:1032100081B200000400004081B2000004000040C0
4900:1032200081B200000400004081B2000004000040B0
4901:1032300081B200000400004081B2000004000040A0
4902:1032400081B200000400004081B200000400004090
4903:1032500081B200000400004081B200000400004080
4904:1032600081B200000400004081B200000400004070
4905:1032700081B200000400004081B200000400004060
4906:1032800081B200000400004081B200000400004050
4907:1032900081B200000400004081B200000400004040
4908:1032A00081B200000400004081B200000400004030
4909:1032B00081B200000400004081B200000400004020
4910:1032C00081B200000400004081B200000400004010
4911:1032D00081B200000400004081B200000400004000
4912:1032E00081B200000400004081B2000004000040F0
4913:1032F00081B200000400004081B2000004000040E0
4914:1033000081B200000400004081B2000004000040CF
4915:1033100081B200000400004081B2000004000040BF
4916:1033200081B200000400004081B2000004000040AF
4917:1033300081B200000400004081B20000040000409F
4918:1033400081B200000400004081B20000040000408F
4919:1033500081B200000400004081B20000040000407F
4920:1033600081B200000400004081B20000040000406F
4921:1033700081B200000400004081B20000040000405F
4922:1033800081B200000400004081B20000040000404F
4923:1033900081B200000400004081B20000040000403F
4924:1033A00081B200000400004081B20000040000402F
4925:1033B00081B200000400004081B20000040000401F
4926:1033C00081B200000400004081B20000040000400F
4927:1033D00081B200000400004081B2000004000040FF
4928:1033E00081B200000400004081B2000004000040EF
4929:1033F00081B200000400004081B2000004000040DF
4930:1034000081B200000400004081B2000004000040CE
4931:1034100081B200000400004081B2000004000040BE
4932:1034200081B200000400004081B2000004000040AE
4933:1034300081B200000400004081B20000040000409E
4934:1034400081B200000400004081B20000040000408E
4935:1034500081B200000400004081B20000040000407E
4936:1034600081B200000400004081B20000040000406E
4937:1034700081B200000400004081B20000040000405E
4938:1034800081B200000400004081B20000040000404E
4939:1034900081B200000400004081B20000040000403E
4940:1034A00081B200000400004081B20000040000402E
4941:1034B00081B200000400004081B20000040000401E
4942:1034C00081B200000400004081B20000040000400E
4943:1034D00081B200000400004081B2000004000040FE
4944:1034E00081B200000400004081B2000004000040EE
4945:1034F00081B200000400004081B2000004000040DE
4946:1035000081B200000400004081B2000004000040CD
4947:1035100081B200000400004081B2000004000040BD
4948:1035200081B200000400004081B2000004000040AD
4949:1035300081B200000400004081B20000040000409D
4950:1035400081B200000400004081B20000040000408D
4951:1035500081B200000400004081B20000040000407D
4952:1035600081B200000400004081B20000040000406D
4953:1035700081B200000400004081B20000040000405D
4954:1035800081B200000400004081B20000040000404D
4955:1035900081B200000400004081B20000040000403D
4956:1035A00081B200000400004081B20000040000402D
4957:1035B00081B200000400004081B20000040000401D
4958:1035C00081B200000400004081B20000040000400D
4959:1035D00081B200000400004081B2000004000040FD
4960:1035E00081B200000400004081B2000004000040ED
4961:1035F00081B200000400004081B2000004000040DD
4962:1036000081B200000400004081B2000004000040CC
4963:1036100081B200000400004081B2000004000040BC
4964:1036200081B200000400004081B2000004000040AC
4965:1036300081B200000400004081B20000040000409C
4966:1036400081B200000400004081B20000040000408C
4967:1036500081B200000400004081B20000040000407C
4968:1036600081B200000400004081B20000040000406C
4969:1036700081B200000400004081B20000040000405C
4970:1036800081B200000400004081B20000040000404C
4971:1036900081B200000400004081B20000040000403C
4972:1036A00081B200000400004081B20000040000402C
4973:1036B00081B200000400004081B20000040000401C
4974:1036C00081B200000400004081B20000040000400C
4975:1036D00081B200000400004081B2000004000040FC
4976:1036E00081B200000400004081B2000004000040EC
4977:1036F00081B200000400004081B2000004000040DC
4978:1037000081B200000400004081B2000004000040CB
4979:1037100081B200000400004081B2000004000040BB
4980:1037200081B200000400004081B2000004000040AB
4981:1037300081B200000400004081B20000040000409B
4982:1037400081B200000400004081B20000040000408B
4983:1037500081B200000400004081B20000040000407B
4984:1037600081B200000400004081B20000040000406B
4985:1037700081B200000400004081B20000040000405B
4986:1037800081B200000400004081B20000040000404B
4987:1037900081B200000400004081B20000040000403B
4988:1037A00081B200000400004081B20000040000402B
4989:1037B00081B200000400004081B20000040000401B
4990:1037C00081B200000400004081B20000040000400B
4991:1037D00081B200000400004081B2000004000040FB
4992:1037E00081B200000400004081B2000004000040EB
4993:1037F00081B200000400004081B2000004000040DB
4994:1038000081B200000400004081B2000004000040CA
4995:1038100081B200000400004081B2000004000040BA
4996:1038200081B200000400004081B2000004000040AA
4997:1038300081B200000400004081B20000040000409A
4998:1038400081B200000400004081B20000040000408A
4999:1038500081B200000400004081B20000040000407A
5000:1038600081B200000400004081B20000040000406A
5001:1038700081B200000400004081B20000040000405A
5002:1038800081B200000400004081B20000040000404A
5003:1038900081B200000400004081B20000040000403A
5004:1038A00081B200000400004081B20000040000402A
5005:1038B00081B200000400004081B20000040000401A
5006:1038C00081B200000400004081B20000040000400A
5007:1038D00081B200000400004081B2000004000040FA
5008:1038E00081B200000400004081B2000004000040EA
5009:1038F00081B200000400004081B2000004000040DA
5010:1039000081B200000400004081B2000004000040C9
5011:1039100081B200000400004081B2000004000040B9
5012:1039200081B200000400004081B2000004000040A9
5013:1039300081B200000400004081B200000400004099
5014:1039400081B200000400004081B200000400004089
5015:1039500081B200000400004081B200000400004079
5016:1039600081B200000400004081B200000400004069
5017:1039700081B200000400004081B200000400004059
5018:1039800081B200000400004081B200000400004049
5019:1039900081B200000400004081B200000400004039
5020:1039A00081B200000400004081B200000400004029
5021:1039B00081B200000400004081B200000400004019
5022:1039C00081B200000400004081B200000400004009
5023:1039D00081B200000400004081B2000004000040F9
5024:1039E00081B200000400004081B2000004000040E9
5025:1039F00081B200000400004081B2000004000040D9
5026:103A000081B200000400004081B2000004000040C8
5027:103A100081B200000400004081B2000004000040B8
5028:103A200081B200000400004081B2000004000040A8
5029:103A300081B200000400004081B200000400004098
5030:103A400081B200000400004081B200000400004088
5031:103A500081B200000400004081B200000400004078
5032:103A600081B200000400004081B200000400004068
5033:103A700081B200000400004081B200000400004058
5034:103A800081B200000400004081B200000400004048
5035:103A900081B200000400004081B200000400004038
5036:103AA00081B200000400004081B200000400004028
5037:103AB00081B200000400004081B200000400004018
5038:103AC00081B200000400004081B200000400004008
5039:103AD00081B200000400004081B2000004000040F8
5040:103AE00081B200000400004081B2000004000040E8
5041:103AF00081B200000400004081B2000004000040D8
5042:103B000081B200000400004081B2000004000040C7
5043:103B100081B200000400004081B2000004000040B7
5044:103B200081B200000400004081B2000004000040A7
5045:103B300081B200000400004081B200000400004097
5046:103B400081B200000400004081B200000400004087
5047:103B500081B200000400004081B200000400004077
5048:103B600081B200000400004081B200000400004067
5049:103B700081B200000400004081B200000400004057
5050:103B800081B200000400004081B200000400004047
5051:103B900081B200000400004081B200000400004037
5052:103BA00081B200000400004081B200000400004027
5053:103BB00081B200000400004081B200000400004017
5054:103BC00081B200000400004081B200000400004007
5055:103BD00081B200000400004081B2000004000040F7
5056:103BE00081B200000400004081B2000004000040E7
5057:103BF00081B200000400004081B2000004000040D7
5058:103C000081B200000400004081B2000004000040C6
5059:103C100081B200000400004081B2000004000040B6
5060:103C200081B200000400004081B2000004000040A6
5061:103C300081B200000400004081B200000400004096
5062:103C400081B200000400004081B200000400004086
5063:103C500081B200000400004081B200000400004076
5064:103C600081B200000400004081B200000400004066
5065:103C700081B200000400004081B200000400004056
5066:103C800081B200000400004081B200000400004046
5067:103C900081B200000400004081B200000400004036
5068:103CA00081B200000400004081B200000400004026
5069:103CB00081B200000400004081B200000400004016
5070:103CC00081B200000400004081B200000400004006
5071:103CD00081B200000400004081B2000004000040F6
5072:103CE00081B200000400004081B2000004000040E6
5073:103CF00081B200000400004081B2000004000040D6
5074:103D000081B200000400004081B2000004000040C5
5075:103D100081B200000400004081B2000004000040B5
5076:103D200081B200000400004081B2000004000040A5
5077:103D300081B200000400004081B200000400004095
5078:103D400081B200000400004081B200000400004085
5079:103D500081B20000AE9F00889AB00000AE9F00883C
5080:103D60009AB00000AE9F00889AB00000AE9F008815
5081:103D70009AB00000AE9F00889AB000000000008852
5082:103D80009AB00100AE9F414081320000B29F2240B4
5083:103D90007B6F00000000194081B20100AE9F00401F
5084:103DA00081B20000000019417BB30100000000A4B3
5085:103DB000C4B30100000000A1C6B3010000002FA29F
5086:103DC000C8B301000814004049990100A89F004DA4
5087:103DD0009ACC0100BB9F2640813200000000004CBD
5088:103DE00049C10100B99FA2419B500000BF9F808044
5089:103DF0008032000000005249FD9301000000004A9B
5090:103E0000FD930100C29F0042CD9300000000514A83
5091:103E1000FD93010000000049FD930100C29F004393
5092:103E2000CB9300000000504081B20100D29F0040BF
5093:103E300019990100000000F09AB001000000004450
5094:103E400049D10100000040F080B201000000414D66
5095:103E500080B20100CA9F00401999010000004C4047
5096:103E600081B201000000004449D10100000000F0CF
5097:103E70009AB001000000004D10B10000000000E207
5098:103E800049B10100000000E343B10100000000E47B
5099:103E900045B10100000000407BB301000000484F25
5100:103EA00040B10100D29F004081B2000004000040F8
5101:103EB00081B200000400004081B200000400004014
5102:103EC00081B200000400004081B200000400004004
5103:103ED00081B20000040000CB81C80100F4820040E0
5104:103EE000F29300004082004081B200004005004093
5105:103EF00081B200001806004081B20000F482004048
5106:103F000081B20000AF82004081B2000038810040E1
5107:103F100081B200003681004081B20000B8800040CC
5108:103F200081B200001A87004081B20000AF820040D9
5109:103F300081B20000F582004081B20000AB920040E7
5110:103F400081B20000F095004081B200007392004001
5111:103F500081B20000DF95004081B200004A9300402A
5112:103F600081B20000ED92004081B20000E792004073
5113:103F700081B200009A82004081B2000000008040BF
5114:103F800081B201000400004081B200000400004042
5115:103F900081B200000400004081B200000400004033
5116:103FA00081B200000400004081B200000400004023
5117:103FB00081B200000400004081B200000400004013
5118:103FC00081B200000400004081B200000400004003
5119:103FD00081B200000400004081B2000004000040F3
5120:103FE00081B200000400004081B2000004000040E3
5121:103FF00081B200000400004081B2000004000040D3
5122:1040000081B200000400004081B2000004000040C2
5123:0440100081B2000079
5124:00000001FF
diff --git a/firmware/slicoss/oasisrcvucode.sys.ihex b/firmware/slicoss/oasisrcvucode.sys.ihex
deleted file mode 100644
index 813bea4e133e..000000000000
--- a/firmware/slicoss/oasisrcvucode.sys.ihex
+++ /dev/null
@@ -1,162 +0,0 @@
1:10000000000200004775010004A01301001CB75B4B
2:10001000093000B65F01001C00000020183B783A50
3:10002000001CA27701001C071D017018AD7BF1FFB9
4:100030001CB37BA9AA1EB47B010C1CB57B0D061C4E
5:1000400000003064080C315A70040C315A80040CE2
6:10005000314E90040C314AA000092555C0040C31E2
7:1000600052B000E92455C004CCB3001C1CEB2D0198
8:10007000001C065632D408079D00001C7BB7020006
9:1000800010A00F31540906565EC004A0305403007E
10:10009000AC30550300CD033A001C7BB702001C6056
11:1000A0008E3154092925550300808E3154098C3036
12:1000B000910004471C01001CA00F3154090000648A
13:1000C0000004471C65C004471C5503006C30010048
14:1000D0001C4D3402001C7BB702001CA00F315409D8
15:1000E000C88337001C800100001C0000640004A0CD
16:1000F0000F305409000054C3047BFBF2001CCC33C6
17:100100000D001CB47BFD031C800E305409E0FB0580
18:10011000001C00008C0300B30F3154090000EC7088
19:10012000040000EC800400008C930061768DC30411
20:10013000C08D315409E07B00C01FA0FDC50100CC7B
21:100140003305001CD403003C1CD4D31B001CC0D3BB
22:1001500052001C00005C13048E8E3254095B805EDA
23:100160001304000000001C0000940100A00F315493
24:1001700009A00F315409C003FC7F1CA001A001009D
25:100180000000A40100A00F315409C003FC031CF5BA
26:100190007701001C267AE6051CA00F315409B30F25
27:1001A000315409B50202001CA00F3154097A7E02B5
28:1001B000001CB50202001C530F325409AF030100AA
29:1001C0001C7A0E325409B50202001C000002001C09
30:1001D000A03DAA11040000AC1104D4D352001CB5F8
31:1001E0003EB2010020FBFDFF1F802C6C0300B93ADA
32:1001F0009E0100753B02001CA71C010010DB83164A
33:10020000001CC71D21C104B93B8DC1048B2C01000A
34:100210001C6B2C35C1040000781100CB2C79C10473
35:10022000A00F315409A00F31540954D002001C49C9
36:1002300025B10100AB2C81C104A71D550300CC33AF
37:1002400009001CEB2D01001CEA2901001CA00F3144
38:100250005409AE0F315409A00F315409D407FC03DF
39:100260001C993A02001CBB3802001C003800001C1C
40:100270000000FC0104DB3B7E001CC71D01001C26A6
41:100280007AFA051C271D01001CB30F3154097A0EA0
42:10029000325409530F3254097A0E325409530F3233
43:1002A00054097A0E325409530F325409A00F3154B5
44:1002B000097A0602001C530F325409AF0301001CD7
45:1002C0007A0E325409530F3254097A0E32540953BC
46:1002D0000F3254097A0E325409530F3254097A0EF0
47:1002E000325409003D02001C0000581200CB2C01C2
48:1002F000001C753B02001CA71C010010CB2F050041
49:100300001C602C00001CC71CC90200A00F3154093E
50:10031000530702001C467ACA051C7A0E3254094063
51:10032000FA19001C0000880204467ACA051CA00FB6
52:10033000315409A00F315409A00F315409A00F31D5
53:100340005409B37B01C01F740E305409C0039C00D4
54:100350001C8000D802000000D802040000AC120586
55:10036000071D01001CD4D32B001CD4D352001C80C9
56:10037000767D13040000E00200A67B950310C79C65
57:1003800000001C802C00001C00006C0204000054C3
58:10039000C304AB2DD91205071DB5C2048B2D010076
59:1003A0001C692501001CA67B950310CB2F09001C9E
60:1003B000602C00001C0000480300530F3254094613
61:1003C0007ACA051C7A0E32540940FA19001C000042
62:1003D000100304467ACA051CB50F315409A00F3129
63:1003E000540973EC2A0304602C00001C000028034D
64:1003F00000C71C01001C0000281305071D01001C7C
65:10040000C0D722001C75567E1304602C00001CE728
66:100410001C450304E79C00001CA67B950310802C60
67:1004200000001C0000F80204000054C304B97B0162
68:10043000001C00008CC304CBAFFC071CCB2F0104B5
69:100440001CC79F80031C00008CC304CBAFFC071C9F
70:10045000CB2F0D041CC79F80031C00008CC304CB52
71:10046000AF00F81DCB2F01001DA67B95031CC79C78
72:100470008CC30400008C1305071D01001CC01DDC8B
73:10048000D308279DE40300A0EE46D400FB750914B1
74:1004900004207B06001CC01C1C04000000B0D30814
75:1004A000000000F400C0EFF2001C20255C14046082
76:1004B000B7D2030000000C1500CCB3FC031CCC33F6
77:1004C00005021C00000CC50460B70E050400000CFA
78:1004D000150400005CC404C01D98F304000068C447
79:1004E00004079D00001C1B74FDF304A67BF1031C94
80:1004F000A00F695409E07B00FC1F397F02001C0734
81:100500001D9DC304A67BAD031C000068C404E01C51
82:1005100000001C0000A40304CBAF00F81DCB2F018A
83:10052000101D0000ACC3040000AC0304CBAF00F806
84:100530001DCB2F01181DC79F000B1C0000ACC3046E
85:10054000FB7501001C071D01001CCCB3FC031CCC77
86:100550003301021C0000ACC304A01C00001CA0EE70
87:10056000A20304CBAFFC071CCB2F09041CFB7501B5
88:10057000001C0000ACC304CCB3FC031CCC33010250
89:100580001C00000CC5040000783405CCB3FC031C2F
90:10059000CC3315021C479D54C404000078440080ED
91:1005A0001D7C5404871D8D0400CE7601001CEF765F
92:1005B0009DC404A4778D2409E47601001CC476014F
93:1005C000001C0000985404D776015018F6760100FC
94:1005D0001C00000030180000000010CC3045C5049D
95:1005E000EB2D01001CEA2901001CC05901001CF57B
96:1005F0007729C504E030DC0400004CB00400204C36
97:10060000F404000000E80400CCB3FC031CCC330964
98:10061000021CEB2DB5C404CCB3FC031CCC33190273
99:100620001CEB2DB5C404CCB3FC031CCC330D021C55
100:10063000EB2DB5C404CCB3FC031CCC3311021CEB72
101:100640002DB5C404007B00801CAE7745050000007A
102:1006500004C004D38B00FC1F607A3C001C604CC0BB
103:100660000400C02F20051FE030B004008025B00436
104:1006700000B55BB10404692601001C6A2B01001C53
105:10068000801D00001CA925450500EE3000001CAFB0
106:10069000770105000000AC2404B45F014018079DF9
107:1006A000485504B77601001C967601001C471D01D1
108:1006B000001CA433016018A42F0160186477016046
109:1006C000182477016018447701001C648803001C1B
110:1006D000A43F01001CA43B01001C537B00C01CD3A1
111:1006E000CF1B001C534F02001CDACF00C01FD55790
112:1006F0000F001CD3D337001CD4530F001CE029007B
113:10070000001CF5D5B0050000009C5504775601008B
114:100710001C565301001C0000001018000004C00407
115:10072000F55501001C0000B45504775601001C5615
116:100730005301001C0000001018000004C004CB2F5F
117:10074000011810CB2F011010CB2F010810CB2F0157
118:100750000810CB2F012010CB2F012810CB2F010028
119:1007600010892561C2040000ECC204000054C304D7
120:10077000000054C304000054C304000060C204001D
121:1007800000ECC204000054C304000054C304000081
122:1007900054C304401C6CC004401C9CC004A7775583
123:1007A000C3040000C4C004271DF1C004000054C3EA
124:1007B00004000054C304000054C30400002CC60409
125:1007C00000002CC60400002CC60400002CC6040047
126:1007D000002CC60400002CC60400002CC604000037
127:1007E0002CC60400002CC60400002CC60400002CFB
128:1007F000C60400002CC60400002CC60400002CC651
129:100800000400002CC60400002CC60400002CC60402
130:1008100000002CC60400002CC60400002CC60400F6
131:10082000002CC60400002CC60400002CC6040000E6
132:100830002CC60400002CC60400002CC60400002CAA
133:10084000C60400002CC60400002CC60400002CC600
134:100850000400002CC60400002CC60400002CC604B2
135:1008600000002CC60400002CC60400002CC60400A6
136:10087000002CC60400002CC60400002CC604000096
137:100880002CC60400002CC60400002CC60400002C5A
138:10089000C60400002CC60400002CC60400002CC6B0
139:1008A0000400002CC60400002CC60400002CC60462
140:1008B00000002CC60400002CC60400002CC6040056
141:1008C000002CC60400002CC60400002CC604000046
142:1008D0002CC60400002CC60400002CC60400002C0A
143:1008E000C60400002CC60400002CC60400002CC660
144:1008F0000400002CC60400002CC60400002CC60412
145:1009000000002CC60400002CC60400002CC6040005
146:10091000002CC60400002CC60400002CC6040000F5
147:100920002CC60400002CC60400002CC60400002CB9
148:10093000C60400002CC60400002CC60400002CC60F
149:100940000400002CC60400002CC60400002CC604C1
150:1009500000002CC60400002CC60400002CC60400B5
151:10096000002CC60400002CC60400002CC6040000A5
152:100970002CC60400002CC60400002CC60400002C69
153:10098000C60400002CC60400002CC60400002CC6BF
154:100990000400002CC60400002CC60400002CC60471
155:1009A00000002CC60400002CC60400002CC6040065
156:1009B000002CC60400002CC60400002CC604000055
157:1009C0002CC60400002CC60400002CC60400002C19
158:1009D000C60400002CC60400002CC60400002CC66F
159:1009E0000400002CC60400002CC60400002CC60421
160:1009F00000002CC60400002CC60400002CC6040015
161:040A0000002CC604FC
162:00000001FF
diff --git a/firmware/sxg/saharadbgdownloadB.sys.ihex b/firmware/sxg/saharadbgdownloadB.sys.ihex
deleted file mode 100644
index e3016d34feee..000000000000
--- a/firmware/sxg/saharadbgdownloadB.sys.ihex
+++ /dev/null
@@ -1,3937 +0,0 @@
1:1000000002000000DCF500000C0000000000000011
2:10001000FF1F00000100000000000088824D293A07
3:1000200000000404000000800200009000000900AD
4:100030000000008002000090000009000000008025
5:100040000200009000000900000000800200009003
6:10005000000009000000008002000090000009007C
7:1000600000000080020000900000090000000080F5
8:1000700002000090000009000000008002000090D3
9:10008000FEFF0000000000AC020036320000360027
10:10009000000000A80200009200001613000000807B
11:1000A0000200009000001613000000800200009083
12:1000B00000001613000000800200009000001613DC
13:1000C0000000008002000090000016130000008075
14:1000D0000200009000002000000000D80F8028924D
15:1000E00000002100000000D80F80289200002200AC
16:1000F000000000D80F80289200002300000000D8E4
17:100100000F402B9200002400000000D80F8028929E
18:1001100000002500000000D80F8028920000260073
19:10012000000000D80F80289200002700000000D8AF
20:100130000F80289200002800000000D80F8028922D
21:1001400000002900000000D80F80289200002A003B
22:10015000000000D80F8028920000360000000098B0
23:100160001E80E99A00002C00000000D80F80289221
24:1001700000002D00000000D80F80289200002E0003
25:10018000000000D80F80289200002F00000000D847
26:100190000F80289200003000000000D40F00009271
27:1001A00000003000000000D40F400092000030003A
28:1001B000000000D40F80009200003400000000D442
29:1001C0000FC0009200003000000000D40F00019228
30:1001D00000003000000000D40F4001920000300009
31:1001E000000000D40F80019200003000000000D415
32:1001F0000FC0019200003000000000D40F000292F6
33:1002000000003000000000D40F40029200003000D7
34:10021000000000D40F80029200001613000000803E
35:100220000200009000003000000000D40F00039294
36:1002300000003000000000D40F40039200003000A6
37:10024000000000D40F80039200003000000000D4B2
38:100250000FC0039200000000000000D05F3F003498
39:10026000000016130400008042FFFCB000000000F4
40:10027000000000881280FD3A000016130000008084
41:10028000020000901613161302010080828DFDBC3F
42:1002900000000000000000881280FD3A000000000D
43:1002A000000000F803C001323800000000010084A3
44:1002B000824D281A000036000000007409400092A8
45:1002C00000004F00000000FC020000920000480007
46:1002D000000000800200009000004D00000000902F
47:1002E0000E80189200001B030000000008C020923E
48:1002F000000089000000000008002192000019039E
49:10030000000000000840219200008600000000006C
50:100310000885219000009B03000000EC02C022929F
51:1003200000009404000000800200009000005800CB
52:10033000000000FC0240189D00005100000000D0A9
53:10034000020000920000E003000000800200009024
54:100350000000161300000080020000900000000062
55:10036000000100800200007000004C00000000004E
56:1003700009C0219200004A0012010000088522B045
57:1003800018003600000000F8738A029900008E0001
58:100390006A000080020000B008008E00000000F833
59:1003A0002340019900000000000100E80200907263
60:1003B0000000161380010080B200E9B600000204BC
61:1003C0000000007C1EC0E79A08000000000000F852
62:1003D000134001390000F60300000008B801009442
63:1003E000000016130300007809401ABD0000161320
64:1003F00004010080E28097BC00000000000000A023
65:10040000E125003408000000000000F8B340013985
66:1004100000000204B20000D8020000B2000016136F
67:1004200017010080020000B000001F06001001F854
68:1004300002006E9200005B000A0100CC020000B2D4
69:1004400000007000030100FC024019BD0800020416
70:10045000000000F8A34001990000000000000084A3
71:1004600001C02F320000000000000090F1010034B4
72:10047000000000000000009401C02F320000600066
73:10048000800100801281FCB6000016130401008078
74:1004900002C02FBC02006000B00000A0F20B00B947
75:1004A000000063000401008002C0B0BC00006E00C8
76:1004B000A000008002000090000065008001008024
77:1004C000F24BD0B600006E00A00000800200009049
78:1004D00000000000A0000004FD4BD03400006B00C1
79:1004E000800100801281FCB60000C211000000D81B
80:1004F000020000D20000161304000080028092BCAB
81:1005000018000000000000F8730A03396E0036007E
82:10051000000000C00200369200009611000000D8D2
83:10052000020000D20000161304000080028092BC7A
84:1005300018003600000000F8730A03F900005B00A1
85:10054000030100FC024018BD00008500030000FC10
86:10055000024019BD000000000000009401C02F32CD
87:100560000000000000000080F101003400000000E5
88:100570000000008401C02F3200007500800100805F
89:100580001281FCB6000016130401008002C02FBCCB
90:1005900002007500B00000A0F20B00B90000780066
91:1005A0000401008002C0B0BC00008300A0000080F5
92:1005B0000200009000007A0080010080F24BD0B66B
93:1005C00000008300A00000800200009000000000F6
94:1005D000A0000004FD4BD0340000800080010080AA
95:1005E0001281FCB60000C211000000D8020000D247
96:1005F0000000161304000080028092BC1800000066
97:10060000000000F8730A033983003600000000C0C0
98:100610000200369200009611000000D8020000D2BD
99:100620000000161304000080028092BC18003600FF
100:10063000000000F8730A03F900007000030100FCD9
101:10064000024019BD00005B00030100FC024018BD20
102:1006500008000204000000F8A3400199080000000F
103:10066000000000F87340013900008E008001008016
104:10067000E20180B600008B000000008002000090C4
105:10068000080091030C0000F8534001B900008D00F0
106:1006900080010080E20180B600001613120000689D
107:1006A000020580B00000F6030000006C1FC0F69A3F
108:1006B000000000000000000008058030000000007D
109:1006C000000000FC020001320000000000000010E9
110:1006D00008803D3200000000000000CC0200003223
111:1006E00000000000000000100900363200008012F7
112:1006F00000000014090080D2000016138000008062
113:1007000062802FB60000161302010080823A80BC7E
114:100710000000161306010080923A80BC0090161368
115:1007200004010080A20D80B000001613120100BC6D
116:1007300008C021B200000000000000D40200003216
117:1007400002A0000000000000A90D80320000161376
118:100750001200005402A438B2000200800000002CF5
119:100760000800373218003600000000F8730A03F959
120:100770000000000000080004088072320000A2009F
121:100780009F00005C080072B28300A100800100801D
122:1007900082CD85B00000B6000000002CD8C1829444
123:1007A0000000B6000000002C88C1829400001613DF
124:1007B00006010080827D80BC000FAC000401008037
125:1007C00082CD85B00000AC00800000803281FCB694
126:1007D0000000161312000068020580B0000000003F
127:1007E0000000006C1FC0F63A00000000000000FC92
128:1007F000020001320000AA00040100DC43603DB3A6
129:100800000000F603000000FC020000921800000047
130:10081000000000F8738A0339A7003600000000C00A
131:10082000020036920000AE0080010080F2C085B662
132:100830000000BE000000002C98C182941000C3008C
133:1008400087000000792116B80000C30080010078FD
134:10085000390090B08300C3008700007889CD85B04F
135:100860000000B30080000080028097B60000B60050
136:100870000000002C88C182940000B5008000008038
137:1008800022C185B60000B6000000002CD8C18294B9
138:100890000000C3000000002C98C182940000BC003E
139:1008A00080010080D2C182B60000C30080010080B8
140:1008B0007280FCB600000000001800A8423D7230B3
141:1008C00000000000541809FEF2C07C300000EA006D
142:1008D00080010080F2C185B60000C50000000080E4
143:1008E00002000090000016138001008082C182B6D1
144:1008F0000000B800800000808280FCB60900C300C0
145:10090000040000B428BF17B88300C500870000ACFE
146:1009100088CD85B00000C30004000080D2E28AB018
147:1009200000000000001800A8423D72300000C50021
148:10093000541809FEF2C07C9000000000540000FC36
149:100940000200003200000000001800200700003202
150:100950008000802000000080C2CD85300000DA00D9
151:100960000B000080020000B01800000000000078BA
152:1009700079A116382000EA0004000080828D97BC1F
153:100980000000D100800100806280FCB68300D100AD
154:100990008700007889CD85B00000CD008000008000
155:1009A000028097B60000D10080010080128097B6C7
156:1009B0000000D1008001008072C185B610000000E7
157:1009C00000000078796116380000D800040100802A
158:1009D000328097BC0000EA000000002CB8C182946D
159:1009E0000000D800800100805280FCB60000D800D2
160:1009F0008000008072C185B60000D80080010080B0
161:100A000002C185B60000D80080010080D2C185B641
162:100A1000180000000000007879E116380000D800C6
163:100A200004010080328097BC0000EA000000002C26
164:100A3000C8C18294000000000000000408000432D5
165:100A40000000EA000000002CA8C182940800000009
166:100A500000000078792117380000EA0004000080C7
167:100A6000328097BC0000EA0004010080228097BC1D
168:100A70001F0000000012000889CD72300500000040
169:100A800000120000B9DC173800000000000000A8C8
170:100A9000220090370000EA008000868022247CB685
171:100AA00000000000000000780905803000001613E7
172:100AB0000201008082BA97BC000016130601008074
173:100AC00092BA97BC0000161312000068020580B0AD
174:100AD00000000000000000FC020001320000E800FD
175:100AE000040100DC43603DB30000F603000000FC9D
176:100AF0000200009218000000000000F8738A033919
177:100B0000E5003600000000C002003692020000003E
178:100B100000000010090036320000801200000014AE
179:100B2000090080D20000F10012010060084023B2E9
180:100B30003200000000000010090036320000801270
181:100B400000000014090080D20082000000000008AC
182:100B5000088036320000E100000000641F40F69A71
183:100B60000000161312000024080023B20000161320
184:100B70001200002008C023B2000016131200001853
185:100B8000088023B200000000000000FC02000132D7
186:100B90000000F800040000DC43603DB318000000D2
187:100BA000000000F8738A0339F4003600000000C02A
188:100BB0000200369200000000000000FC02008532B6
189:100BC00000000000000000D8028001320000000098
190:100BD000000000D00200003200C007011801000C24
191:100BE000A8CD3EB20000F80012000038028081B2A9
192:100BF000000000000000003C020082320000000003
193:100C0000000000300240823200000000000000348A
194:100C10000200863220800000000000080880363282
195:100C2000000000000000005C1FC0F53A000000005A
196:100C300000000078090580300000161302010080D2
197:100C400082BA97BC000016130601008092BA97BCC6
198:100C50000000F60312010068020580B000001613C0
199:100C600000000080020000900000000000180078E2
200:100C70000900723200230A0104010080A2CD82B073
201:100C800000000B0100000000090000920000161394
202:100C90009F16000029C172BC00000000001800006F
203:100CA000078081320000000000200000070082322F
204:100CB00000000000002800000780973210000000AC
205:100CC00000300000172090390000000000380000BC
206:100CD00007C0823200000000000000D8020000328D
207:100CE00000000000000000000740803200001401F6
208:100CF00080010080A2C182B600001501000800003A
209:100D000057008097050000000008000007A0043984
210:100D10000000161304100000074082B2000000001B
211:100D20000018000007008632000016131200005061
212:100D3000F2C138B418003600000000F8730A03F955
213:100D40000000161312000068020580B000000000C9
214:100D500000000078090580300000161302010080B1
215:100D600082BA97BC000016130601008092BA97BCA5
216:100D7000000016131200004802C080B20000F60303
217:100D8000CA010008E8818094000000000000008093
218:100D9000024590300000161304010080120028BCA8
219:100DA00000001613120100BC08C021B208000000A8
220:100DB000000000F89340013910000000540000FCCE
221:100DC000824D9036000016130200008042C02FBCF6
222:100DD00000002501F00100D8020000B20000000070
223:100DE000620401A802C06E3200000000000401008D
224:100DF00059C06E37000000000004017819C06E3A37
225:100E0000000000004E0401EC06BD97300000000019
226:100E1000E00000F41E40EF3A0000161304190B82A4
227:100E200002C07CBC0000000000180BCE074000325E
228:100E30000000000000000000074009320000161307
229:100E400004010080020036BC000000000008000021
230:100E500077C029370000161304100000173D90BA20
231:100E600000000000001800000780F4320000161394
232:100E700012000040F2C138B40B0000000000001066
233:100E8000090036320000801200000014098083D26D
234:100E900000000000000000FC32C02F300000000005
235:100EA0000000001008803D3218003600000000F8F5
236:100EB000730A03F900000000000000D402000032B1
237:100EC000000016130401008002802DBC0000CE013A
238:100ED0008038008022C072B600003E01120000C8B7
239:100EE000020020B2000045011201005C088020B21F
240:100EF000000016131200006002802CB218000000DF
241:100F0000000000F8738A03393B013600000000C07E
242:100F10000200369200000000000000F81F80FF3A37
243:100F200000000000000000FC320085300000A3013A
244:100F30000400008042603DB318000000000000F88B
245:100F4000738A033941013600000000C00200369266
246:100F5000080000000000000088CD85370000000078
247:100F60000000002008007232000000000008002489
248:100F700008007232000016130410006C080072B2F0
249:100F8000000000000018004C080072320000161328
250:100F900004200018080072B2000000000030002891
251:100FA00008007232000016130200008082BD82BC6D
252:100FB000000000000028003008007232000000002D
253:100FC00000000060088082320000560106000080A8
254:100FD00062A082BC000016139F3C0014288072BCE3
255:100FE00000000000000000000700063207000000BB
256:100FF00000080000774A09390000161304100000A9
257:10100000070082B200000000CA19000007408232C7
258:101010000000161312000040F2C138B400000000B6
259:10102000000000D80240003200007D010438007842
260:10103000D9C572B000005A0180010080028097B6C5
261:1010400000000000000000F882802F3400005C01E6
262:1010500080010080128097B600000000000000F8B8
263:1010600092802F34000016130401008002402DBC32
264:10107000040000000038003CB81C173800000000D5
265:101080000000003C28C0833700000000003A002C1C
266:1010900008C07232000000000000001CB8E0833A73
267:1010A00000000000CB2900200700003200007C0176
268:1010B0000400008002C081BC000000000000003479
269:1010C00078A0813E000000000000001CD8E0813CB8
270:1010D00000006A01063A0080B25C83BC0000000098
271:1010E000003A000089C17237070069012B01000432
272:1010F000790A04B900000000CB00000419419034C3
273:1011000000006D01003A002C070000920000000072
274:10111000003A002CD7E0723C000000000000000004
275:101120000900003200000000000000040900003245
276:10113000000000000000000007648332000000008F
277:1011400000080000070080320000161304100000A1
278:1011500007C086B2000000000018000007C08432FB
279:1011600000008C0104000028D8A082BC00001613E7
280:1011700009010080020000B0000000000000000033
281:10118000D820803A000077010400008072802DBCD6
282:10119000000016131200004412E438B20000780177
283:1011A000000000D812802D9A000075120000000483
284:1011B000F94190F400007A0104000018D8A081BC25
285:1011C000000062010000006CD8E0869A0000201246
286:1011D0000000004408802DF2000062010000003091
287:1011E0000800009200000000CB1900200700003228
288:1011F00007007F012B010004790A02B900000000FA
289:10120000CB00000419419034000000004D000000A4
290:10121000A7A0813E00000000000800000700803207
291:10122000000016130410000007C086B20000000082
292:101230000018000007C0843200008C010400002860
293:10124000D8A082BC0000161304010080626083BC39
294:101250000000000000000000D820803A0000890152
295:101260000400008072802DBC0000161312000044A0
296:1012700012E438B200008A01000000D812802D9AD2
297:101280000000751200000004F94190F400002012E3
298:101290000000004408802DF200007D0100000030B5
299:1012A000080000920000161380000080A2802FB674
300:1012B0000000000000000004F94190340000161303
301:1012C0001200004412E438B218003600000000F8A2
302:1012D000730A03F9000016130400008002802DBC7D
303:1012E00000000000001800040980733200000000B4
304:1012F000002800088980733700000000000000808B
305:1013000007008632410000000006008C07003632DC
306:10131000000098012908008007C085B200009B01E9
307:101320002810008C070000B200009C01001200840D
308:1013300007000092000000000010008CF7E0823AE5
309:1013400000009B0128180080074090B200009C011B
310:1013500000120084070000920000000000120084C8
311:1013600027E4823200000000000000783900853058
312:101370000000161304010080F28B97BC0000A1014D
313:101380000400008042603DB318000000000000F837
314:10139000738A03399C013600000000C002003692B7
315:1013A00000000000000000FC02008532000016135F
316:1013B0001200005C52812CB400000000000000D834
317:1013C00002800132000000000000008002003B3279
318:1013D0000840A501F0010008088036B200000000B6
319:1013E0000004013808C06E3200000000E00000F484
320:1013F0001E40EF3C0000AC010B01008C080000B265
321:101400000000A901F2010080020000B0000000000D
322:10141000000000F00E003A320000BE01E200008041
323:101420000E8083920000AC01F2010078C93B3ABC07
324:101430000000B60102010080828097BC000000001D
325:10144000000000A80200E8320000B10104000080A2
326:1014500022A22ABC0000B50104190B8202C07CBC88
327:10146000000000000000008C18C0883A0000000056
328:10147000000000A812802A3A00000000000000A826
329:1014800002BD2A300000AF0104010080E2A02ABCA6
330:101490000000BB010200008082C088BC0000000088
331:1014A000E20000080800003200000000000000A870
332:1014B000028088320000161304190B8212C07CBC13
333:1014C0000000000000180BCE070000320000F603F9
334:1014D000000000DC03000092000000000000003863
335:1014E00008802A3200000000000000F00E003A32AE
336:1014F00000000000E20000800E802A3200000000A0
337:10150000000000A8028088320000161304190B8224
338:1015100012C07CBC0000000000180BCE0700003297
339:1015200000000000000000DC030000320000161381
340:1015300004000080227AE8BA0000000000000000E9
341:1015400007808332000000000000000079C02937C6
342:101550006020000000000000890D903A00000000AB
343:10156000CA0100D812802D3A0000000000000000DF
344:101570000700013200000000000800000700903260
345:1015800000000000001000000740E83200000000EA
346:10159000001800000780E83200000000000000FC96
347:1015A000020000320000F60312010048F2C138B414
348:1015B00000001613000000800200009000001613C7
349:1015C0000401008002402DBC0000161304010080BD
350:1015D00002802DBC000016138000008072802FB6A0
351:1015E0000000000000300078088072320400000023
352:1015F00000380054A85C16380B0000000038002C9E
353:10160000A8DC1638140000000000001C884D853A44
354:101610002200000000000010090036321000801285
355:1016200000380014A99C87D90000000000000020A9
356:101630000800723200000000000800240800723226
357:10164000000000000010006C080072320000000072
358:101650000018004C08007232000016130420001815
359:10166000080072B20000000000280030080072324A
360:10167000000016139F3C0014188072BC0000E501A6
361:1016800004000080024081BC000000000000001443
362:101690001840813C000000000000000007000632F6
363:1016A0000700000000080000774A093900001613FF
364:1016B00004100000070082B200000000CA190000F8
365:1016C000074082320000161312000040F2C138B405
366:1016D00000000000000000D80240003200000000BE
367:1016E0000000006478C02937021000000000006488
368:1016F000884D863A0000000000000080080000329B
369:10170000000000000000004008000032000000005F
370:101710004D00000077A0813E00000000000800009E
371:1017200007408632000016130410000007C086B27E
372:10173000000000000018000007C084320000000212
373:101740000400001CD8E081BC0000161309010080D1
374:10175000020000B00000000000000064D860863A7B
375:101760000000F4010400008072802DBC00001613FC
376:101770001200004002C038B20000FC01000000D896
377:1017800012802D9A0000161312000040F2C138B4E6
378:1017900018003600000000F8730A03F90000FA018F
379:1017A0000401008002802DBC00001613800100801F
380:1017B000A2802FB60000F501670000F8A2802FB5C7
381:1017C00000001613120000E802C021B20000161338
382:1017D0000401008072802DBC00000000000000D8D1
383:1017E000024000320000FE0104000018D8A081BCB5
384:1017F0000000EA010000006CD8E0869A0000C910E1
385:101800000000004408802DF20000EA0100000030D2
386:10181000080000920000161312000040F2C138B414
387:1018200018003600000000F8730A03F900000602F1
388:101830000401008002802DBC00001613800100808E
389:10184000A2802FB600000102670000F8A2802FB529
390:1018500000001613120000E802C021B200001202BC
391:1018600004010080020084BC00000000000000D4DD
392:101870000240003200000000000000A42240853A2F
393:10188000040000000018004088CD743600000000FD
394:10189000000000402800843700000000000000D451
395:1018A00002000032140012020400001C880D84BCE7
396:1018B0000000161309010080020000B000000000C3
397:1018C000000000780961853A800016130601008047
398:1018D000828D97BC0000000000000064D860863A4A
399:1018E0000000FC01000000D8024000920000140239
400:1018F00004000018D8A081BC000016020000006C93
401:10190000D8E0869A0000C9100000004408802DF23B
402:10191000000000000000003008000032000000005D
403:10192000000000D40240003200000000000000A4CB
404:1019300022C0823A000000000000003CB860853CF4
405:1019400004001C028100006088CD74B60000000015
406:1019500000040028F8A0753C00001D020008007477
407:10196000088075920000000000080028F8A0753C6F
408:10197000000000000000002808A1823C00000000D8
409:10198000000000A4F2602A3A0000000000080048AD
410:1019900008007532000000000020007C08807532CD
411:1019A00009002302041A007088CD74B009000000F9
412:1019B000001A004C87CD74317F00000000000064E5
413:1019C000884D863100000000000000642840863AFF
414:1019D00023000000000000100900363200008012D1
415:1019E00000000014098082D20C00000000000010EA
416:1019F000090036320000801200000014098084D2F1
417:101A000000000000000000D802400032000000008A
418:101A1000001000000740863200000000000000D8DF
419:101A20000280003200000000001000005761863A7A
420:101A300000003002120000C8020020B20000330291
421:101A40001201005C088020B2000016131200006032
422:101A500002802CB2000040012A0100D4020000B232
423:101A600018003600CA0000F8730A03F900004101AB
424:101A7000000000F81F80FF9A00000000000000D462
425:101A800002400032080000000000000088CD8537C9
426:101A9000000000000000001CE8A1823E00000000E1
427:101AA000000000A42240853A000000000008005019
428:101AB0000780843200003A020401008072A082BCD8
429:101AC00000000000001A004CC7E174320000000062
430:101AD0000000006808E1813A00003D0290010078B2
431:101AE000F9A186BA00000000000000781980973A3A
432:101AF000000000000020005807809732000000001E
433:101B0000000000D802800032000000000000000049
434:101B10000700843200000000400800005721803A8E
435:101B2000000041021200004CF2C138B40000000075
436:101B3000000000000821803A0000000000000004BE
437:101B400008C0813200000000510000D802C00032FD
438:101B500000000000000000D402000032000000007D
439:101B6000CB1900200700003200001613020100808C
440:101B700032802DBC07004A022B010084780A02B98A
441:101B800000000000CB0000841841883400000000F1
442:101B90004D00000077A0813E00000000000800001A
443:101BA00007008032000016130410000007C086B240
444:101BB000000000000018000007C084320000161367
445:101BC0009F000028D8A082BC000068020400001C0E
446:101BD000D8E081BC0000161304010080626083BC61
447:101BE000000059022D000000D82080BA00005402E5
448:101BF000120100E802C021B218003600000000F80F
449:101C0000730A03F9000056020401008022802DBCF3
450:101C100000005902CD0100D8024084920000161342
451:101C20000401008002802DBC00001613800100809A
452:101C3000A2802FB600005302000000F8A2802F956A
453:101C400000005C020400008072802DBC00001613AE
454:101C50001200004412E238B200006602000000D810
455:101C600012802D9A0000000000000084F8418834A2
456:101C7000000016131200004412E238B218003600B9
457:101C8000000000F8730A03F90000640206010080F6
458:101C900022802DBC000016130401008002802DBCA0
459:101CA0000000161380010080A2802FB600005E02A3
460:101CB000670000F8A2802FB500005F02000000E876
461:101CC00002C02192000016130401008072802DBC16
462:101CD00000000000000000D802C000320000C9105F
463:101CE0000000004408802DF2000047020000003090
464:101CF000080000920000700280000080D2802FB6A1
465:101D000000006B02120100E802C021B21800360088
466:101D1000000000F8730A03F900006D02040100805E
467:101D200022802DBC00007002000000D80240849286
468:101D3000000016130401008002802DBC0000161361
469:101D400080010080A2802FB600006A02000000F827
470:101D5000A2802F9500000000CD000084F841883457
471:101D6000000016131200004412E238B20000000016
472:101D7000000000D40240003200000000000000A477
473:101D800022C0823A0000790204010080420086BC31
474:101D90000000000000080058074087320000780269
475:101DA0008F010074184087BA000000000000007422
476:101DB0000800003200007B0200040058F7A0869A59
477:101DC0000000000000000078F9A0863A280000001A
478:101DD00000080058878D973C00000000000000D8E4
479:101DE000024000321800000000000000B760853992
480:101DF000080000000008000087CD853700007E0243
481:101E00001200004CF2C138B400000000000000488D
482:101E100018A0843A00000000000000D40200003244
483:101E2000000000000000008057A1863A4100000039
484:101E30000006008C07003632000000000008008019
485:101E400007C08532000000000010008C074085327A
486:101E500000000000000000D80280003200001613CD
487:101E600004000058088071B20000000000000080EB
488:101E70000880003218003600000000F8730A03F9E9
489:101E800000008C020401008002802DBC00001613AB
490:101E900080010080A2802FB600008802000000F8B8
491:101EA000A2802F950000880204010080180088BCE1
492:101EB00000008F0290190058E89C85BA00000000CD
493:101EC000000000581880853A0000000000180080CB
494:101ED000078585300000940204010080420086BC22
495:101EE00000000000000000D80240003200000000A6
496:101EF00000000008898071370000950200120084FC
497:101F000027E48292000000000012008407000032E3
498:101F100000009902270000FC020085B2000099022F
499:101F20000400008042603DB318000000000000F88B
500:101F3000738A033995023600000000C00200369211
501:101F4000000016131200005C52812CB400009D02A8
502:101F500004010080028082BC000016138000008013
503:101F6000A2802FB60000A301000000D4020000925E
504:101F70000000A00204010018D8A081BC0000C91014
505:101F80000000004408802DF200002D02C70100303F
506:101F90000800009200002D02C701006CD8E0869A6C
507:101FA00008000000C60100F8934001391900000044
508:101FB00000000010090036320000801200000014FA
509:101FC000094081D200000000000000140845813063
510:101FD00000001613120100BC08C021B20000161345
511:101FE00080000080A2802FB60000F6038001808070
512:101FF000320B6AB600006A100000003C030038F2A1
513:102000000000AC020406018002C06EBC0000161382
514:10201000870601EC56E06EBA0000F3030000008072
515:102020000200009000001613870601EC56E06EBA1D
516:1020300000000000000000F842802F3408C0161392
517:1020400012000040A2CD39B218003600000000F89E
518:10205000730A03F90000161303B8000009C06EBD2F
519:10206000B202000000000088820D903A2F005E0648
520:102070000000001C080036920000161300000080CB
521:10208000020000902C005E060000001C0800369242
522:1020900000001613000000800200009000001613DC
523:1020A0000000008002000090000016130000008075
524:1020B0000200009038005E060000001C0800369206
525:1020C00039005E060000001C08003692080000007F
526:1020D000000000F89340013900001613120100BC03
527:1020E00008C021B20000161380000080A2802FB625
528:1020F0000000161380008080320B6AB600006A1060
529:102100000000003C030038F20000C102040000801F
530:10211000524082BC0000161304010080624082BC61
531:10212000000016130405018002C06EBC0000000010
532:10213000000000F842802F3408C01613120000403F
533:10214000A2CD39B218003600000000F8730A03F976
534:10215000000000000004017809C06E320000000099
535:10216000006201EC068097320900000000000010B8
536:1021700009003632000080120004011409C06ED23A
537:102180000200CB0204B8008082CD6EBC080016139A
538:1021900004B9008082CD6EBC00000000000601EC96
539:1021A000064000320000CC02B50000D8020000B2A8
540:1021B00000000000A50080A0360B6A34000000007B
541:1021C000003002E806C02C320000000000000000D1
542:1021D000078000320000000000000078A9002D37C1
543:1021E0001805010000080000C78D973A00000000A4
544:1021F0000000007899C02C3718010000000000781A
545:10220000898D973A000016130210000087BF97BA15
546:1022100000000000001800000740FE320000161306
547:1022200012000048F2C138B418003600000000F86F
548:10223000730A03F900000000001801E006000032F4
549:1022400000000000000000F882852F3000006806C2
550:102250000000001C0800369208000000000000F892
551:102260009340013900001613120100BC08C021B2CE
552:102270000000161380000080A2802FB660001613A5
553:10228000040100F8828D2FB007000000000000104C
554:10229000090036320000801200000014094081D28B
555:1022A0000000E50280008080320B6AB61700000053
556:1022B00000000010090036320000801200380014BF
557:1022C00009C06ED20000F6030000008002000090FA
558:1022D00000006A1000000038030038F20000E80235
559:1022E0000402018002C06EBC0000F303000201EC96
560:1022F00056E06E9A00000000C00301EC56E06E3A12
561:10230000000016138001008002802FB600C0161353
562:1023100012000040A28D39B218003600000000F80B
563:10232000730A03F9200016130439008082CD6EBCB5
564:102330001200000000000010090036320000801278
565:102340000030001409006ED21500000000000010DB
566:1023500009003632180000000002011489CD6E37E2
567:102360000000801200200114895B91D21B00F4024E
568:1023700038010010090036B200008012003001144C
569:1023800009006ED21800000000000010090036326B
570:102390000800000000000014790B143810008012AF
571:1023A00000500114A95B91D90000F902042801141E
572:1023B00009006EB21C00801200000010090036D225
573:1023C000000005033828001809006EB20000FD0265
574:1023D0000421010869246EBC000016130901008065
575:1023E000020000B0030068060000001C08003692DE
576:1023F0000000010302300080829B90BC00000003BB
577:102400000603018012C06EBC040068060000001CB8
578:1024100008003692050068060000001C080036928D
579:10242000000016130430008002006EB200000403A6
580:102430000603018012C06EBC0B0068060000001C81
581:10244000080036920C0068060000001C0800369256
582:10245000000008030421010869246EBC0000161363
583:1024600009010080020000B0030068060000001CA3
584:102470000800369200000C0302300080829B90BC62
585:1024800000000B030603018012C06EBC0400680646
586:102490000000001C08003692050068060000001CC1
587:1024A0000800369200000E039F31010C69246EBCB7
588:1024B000000000000000000C0900003200001203C0
589:1024C00004310004899B90BC0000110306030180C5
590:1024D00012C06EBC200068060000001C0800369286
591:1024E000210068060000001C080036920000161348
592:1024F0009F000080024090B200001503040201809A
593:1025000012C06EBC220068060000001C0800369253
594:10251000000017030401000039A490BC23006806E2
595:102520000000001C08003692000016139F00008077
596:10253000020090B2240068060000001C08003692D9
597:10254000080016130C0000F8634001B910001D03C9
598:10255000C50100CC02201598080091030C0000F87A
599:10256000434001B910000000C50100CC022015381D
600:102570000000000000000010090036320000801248
601:1025800000000014090080D200001613120100BCE4
602:1025900008C021B200006A100000003C030038F2BD
603:1025A000000000000000005C0805803000001613E9
604:1025B0000401008002402DBC0000161302010080BF
605:1025C00082FA85BC000016130601008092FA85BCD1
606:1025D0000000270336010080020000B00F006806EB
607:1025E0000000001C0800369210000000002C0200C1
608:1025F000A9DB8539000016131200005402A438B27A
609:10260000000000000008028C08C06E3200000000CC
610:10261000000C029828806E37000000000000009C2B
611:1026200038221437000032030430002808006EB24C
612:10263000000016130410006C08006EB200000000C9
613:102640000018004C08006E32000016130420001819
614:1026500008006EB200000000003C001408806E32DA
615:10266000050035030038020078E16E990000000093
616:10267000510000D80200003200000000003802784B
617:1026800009C06E32050000006808000077A1973984
618:10269000000037031201000009C021B21800360003
619:1026A000000000F8730A03F900000000545401FC14
620:1026B00002C06E3214103B0304000080A20D72B001
621:1026C0000000F3110000002809C002F20E006806A5
622:1026D0000000001C08003692000016130609008056
623:1026E00082BD72BC00004F03331500A402C072B259
624:1026F00000008C0380010080B20172B60101420328
625:1027000004290080828D74BC080A8C03042D00808B
626:10271000828D74BC000000000030007C080075321F
627:1027200000004903003800881800759C080A8C03D3
628:1027300004290080828D74BC10000000002C007CF5
629:10274000888D7537000000000030007C68DD87321E
630:10275000000048039F390088188075BC10000000F5
631:1027600000340088888D7537000049030000008818
632:102770001880889C1000000000340088689D88390B
633:1027800037000000000000100900363200008012FF
634:102790000000001409C087D23B00000000000010B8
635:1027A000090036320000801200000014098088D22F
636:1027B000000050039FF1018082DB87BC00008C0386
637:1027C000000000800200009000008C038000008068
638:1027D000B20172B60000000000080048080075321F
639:1027E00000000000001000700800753200000000BA
640:1027F000001C007438A2753700005503831B007855
641:1028000008C074B200000000000000F8C2802F343D
642:102810002F00000000000010090036320000801276
643:1028200000000014098084D2340000000000001071
644:10283000090036320000801200000014090087D21F
645:1028400000006B039F780180C2216EBC00005D0315
646:102850009F990164881B87BC00006C039F6801641A
647:10286000885B86BA000000000000006408000032A7
648:1028700000000000001600A402C072320000000038
649:10288000003C02A4B25B2A3A00000000003A027841
650:1028900009C06E3200006D0308010004E8A575BC94
651:1028A0003F000000000000100900363210008012C6
652:1028B00000040014695D80D910008C030B01001C1A
653:1028C000080036B200006B0304A10180829B84BC27
654:1028D000000068069F980180C2216EBC0000680657
655:1028E00006B10180825B87BC00008B030B01008076
656:1028F000020000B000006C0304990180C2216EBC8C
657:102900000000890302D4018092FB6EBC16006806A9
658:102910000000001C08003692170068060000001C2A
659:10292000080036921C0068060000001C0800369261
660:102930003F00000000000010090036321000801235
661:1029400000040014695D80D90000710304A10180B6
662:10295000829B84BC0000780306A80180825B80BC57
663:102960000000750304A9018002006EBC00008A0308
664:1029700004A10180829B84BC00008A0304010080C2
665:10298000124080BC140068060000001C080036924B
666:1029900000008A039FA0017829216EBC00008A03F1
667:1029A0000201008012A097BC00006B0300000080B1
668:1029B000020000900000850304000080028082BCB9
669:1029C000000016130402018002C06EBC00007E03EA
670:1029D00002000080A26080BC060068062C01001C7A
671:1029E000080036B200C0820304010080A28D2FB01F
672:1029F000060068060000001C0800369200008203F2
673:102A000004000080A26080BC0000810306030180F6
674:102A100012C06EBC090068060000001C0800369257
675:102A20000A0068060000001C0800369200008403BB
676:102A30000603018012C06EBC070068060000001C7F
677:102A400008003692080068060000001C0800369254
678:102A5000020068063801001C080036B20000880336
679:102A6000020C0280A25B80BC1F0068060000001CF4
680:102A7000080036921E0068060000001C080036920E
681:102A800000008D03000000280940009200008D0323
682:102A9000000000280980009200008D03000000283B
683:102AA00009C0009200008D03000000280900019277
684:102AB00030000000000000100900363200008012D3
685:102AC00000000014098092D20E00F3110000001CD7
686:102AD000080036F200006806000000800200009046
687:102AE000100016132A0000CC022015B80D000000BB
688:102AF00000000010090036320000801200000014AF
689:102B0000090080D200001613120100BC08C021B2D7
690:102B100000006A100000003C030038F21D00990319
691:102B20008001007809E000B800001613040100805D
692:102B3000328097BC1D0068060000001C0800369219
693:102B40000000161304010080228097BC150068065F
694:102B50000000001C08003692000000000000001C6D
695:102B6000A8052830000016130400008002C02CBC09
696:102B700000001613120100BC08C021B20000161399
697:102B800080000080A2802FB660001613040100F8B8
698:102B9000828D2FB008000000000000F8834001394A
699:102BA0003600A4030400008082CD81BC0500000033
700:102BB00000000010090036320000801200000014EE
701:102BC00009C081D20000020480018080320B6AB605
702:102BD00000006A1000000038030038F22C0068067C
703:102BE0000201008082CD81BC00005E0600000080F2
704:102BF0000200009000001613120100BC08C021B2B0
705:102C00000000AB031D41025CF80168B44100F3030E
706:102C1000000000F8A28D2F91350000000000001088
707:102C200009003632000080120000001409C085D26D
708:102C300010000000D02C0200A9DB85390000290318
709:102C40001201005402A438B20000161300000080E4
710:102C5000020000900000B40304B0008002006EBCCB
711:102C60000000B40380B9008082806EB600000013BB
712:102C70000078016008006EF230005E06D700001C8C
713:102C8000080036920000B60380010080D2812FB682
714:102C900031005E06D700001C080036920000B80321
715:102CA0008001008042812FB635005E06D700001CEF
716:102CB000080036920000C50304A8010809006EB29E
717:102CC0000000000000200208899B903E00000000E8
718:102CD00000A00108899B903A0000C5039F88010865
719:102CE000899B90BC000000000034020009C06E3DCA
720:102CF00000000000000C020409A46E370000C103AC
721:102D00000200008012A490BC000000000000000837
722:102D1000198090370000C50302010280829B90BC9D
723:102D200031005E06D700001C080036920000C50383
724:102D300004B0008002006EBC0012C50304010080D4
725:102D4000A28D2FB032005E06D700001C080036921C
726:102D50000000F303000000F872812F9500000000CE
727:102D6000000000F842802F3408C0AF02120100407A
728:102D7000A2CD39B2000016130000008002000090BE
729:102D800008000000000000F893400139080000002E
730:102D9000000000100900363200008012000000140C
731:102DA00009C081D2000016130400008002C02CBCB0
732:102DB0000000161380000080A2802FB6600016135A
733:102DC000040100F8828D2FB0000002048001808091
734:102DD000320B6AB600000000000000140840903278
735:102DE00000006A1000000038030038F22C0068066A
736:102DF0000201008082CD81BC00005E0600000080E0
737:102E00000200009008000000000000F89340013923
738:102E10000800000000000010090036321000801287
739:102E200000000014894D81D70000161304000080B3
740:102E300002C02CBC0000161380000080A2802FB6B8
741:102E400060001613040100F8828D2FB00000020408
742:102E500080018080320B6AB600006A1000000038E2
743:102E6000030038F20000DF030420018052206EBC12
744:102E70000000161309010080020000B02600680659
745:102E80000000001C08003692250068060000001CA7
746:102E9000080036920000E503040100D81E80EDBC56
747:102EA0000000E103B70000D80EC0EDB20000E4035B
748:102EB00004010080423BEEBC00000000000000E086
749:102EC0001E00EE3A00000000A70000D00E00EE3217
750:102ED00000000000007486CC02806C32000000000C
751:102EE000000000000940E7320000E9038001808013
752:102EF000320B6AB6360016131200002C82CD2EB2A9
753:102F00000000EB030401008042C52CBC0000EC0370
754:102F1000000000CC0200009200000000000000CC85
755:102F200012C02C3A0000E70304010000190090BC15
756:102F300000000000007486C806C02C32080002049D
757:102F4000000000F8C34001990000F1030400008074
758:102F5000028080BC0000161304550180B2DB2FBC38
759:102F6000000054100000002C090000F20000F603DD
760:102F700000000080020000900000F50304000080C3
761:102F8000028080BC0000161304550180B2DB2FBC08
762:102F9000000054100000002CF90100F40000FF03B1
763:102FA00004000028098080B200000000000000D862
764:102FB000020000320000811100000008080000D269
765:102FC0000000FF0304000080028092BC180036005D
766:102FD000000000F8730A03F9000002048001008079
767:102FE000A2802FB6000002041201000009C021B225
768:102FF00018000000000000F8730A033902043600CC
769:10300000000000C00200369200000204800100802F
770:10301000A2802FB6000002041201000009C021B2F4
771:1030200018003600000000F8730A03F900000000E1
772:10303000000000F80200003218003600000000F81E
773:10304000738A029910000000000000E40300363289
774:1030500002000001000000E0030037320000000021
775:10306000000000E40300363204000001000000E02C
776:1030700003003732AA040000000000E403003632E7
777:1030800009000001000000E00300373200000000EA
778:10309000000000CC0F00003200070000000000E438
779:1030A0000300363206000001000000E00300373262
780:1030B00020000000000000E4030036320800000198
781:1030C000000000E00300373200010000000000E4CF
782:1030D0000300363205000001000000E00300373233
783:1030E00030000000000000E4030036320700000159
784:1030F000000000E00300373200A00000000000E400
785:103100000300363208000008000000E003003732F8
786:1031100000000000000000A00200003200000000DB
787:10312000000000000B000032000016048B0100A01C
788:1031300012002ABA00000000000000A802000032BD
789:1031400000000000000000E0070000320000190449
790:103150000601008002802ABC000000000000009CE4
791:103160000200003200000000000000D40200003223
792:1031700000000000000000CC02000032000000004F
793:10318000000000D80200003200000000000000D063
794:103190000200003200000000000000DC02000032EB
795:1031A00000000000000000F80200003200000000F3
796:1031B000000000C80200003200000000000000C44F
797:1031C0000200003200001C048501009C12C029BAD4
798:1031D00000000000000000E4030036320B00000491
799:1031E000000000E00300373280000000000000E42F
800:1031F0000300363213000004000000E00300373201
801:1032000000200000000000E4030036320C0000043F
802:10321000000000E00300373200000000000000E47E
803:10322000030006320F000004000000E00300373204
804:1032300000040100000000E4030037320D00000428
805:10324000000000E00300373200040000000000E44A
806:103250000300363214000004000000E0030037329F
807:103260009F000000000000E4030036321500000457
808:10327000000000E00300373200000000000000E41E
809:103280000300363218000004000000E0030037326B
810:1032900060000000000000E4030036321D0000045E
811:1032A000000000E00300373200000000000000E4EE
812:1032B000030004321E000004000000E00300373267
813:1032C00070000000000000E4030036321F0000041C
814:1032D000000000E00300373200000000000000E4BE
815:1032E0000300003220000004000000E00300373239
816:1032F000A0030000000000E40300363217000004C1
817:10330000000000E00300373240000000000000E44D
818:10331000030036321B000004000000E003003732D7
819:1033200060000000000000E4030036321C000004CE
820:10333000000000E00300373200000000000000E45D
821:103340000340003216000004000000E003003732A2
822:1033500000010000000000E4030036321A000004FF
823:10336000000000E00300373220010000000000E40C
824:103370000300363219000004000000E00300373279
825:1033800080000000000000E4030036320B00000162
826:10339000000000E00300373200010000000000E4FC
827:1033A000030036320C000001000000E00300373259
828:1033B000FEFF0000000000AC0200363200000000FA
829:1033C000000000000900003218000000000000F8B2
830:1033D0000364023900004F0485010000190090BA0F
831:1033E00025260000000000E4030036320100000141
832:1033F000000000E003003732000000000000008001
833:103400000F00003200000000000000840F000032B6
834:1034100008000000000000F8F34001390800000037
835:10342000000000F8E340013908000000000000F847
836:10343000C340013908000000000000F8B340013922
837:1034400008000000000000F8A34001390800000057
838:10345000000000F89340013908000000000000F867
839:103460008340013908000000000000F87340013972
840:1034700008000000000000F8634001390800000067
841:10348000000000F85340013908000000000000F877
842:103490004340013908000000000000F833400139C2
843:1034A00008000000000000F813400139000000008F
844:1034B000000000F80380003200000000000000C897
845:1034C0003F80FC35000000000000009C020000323C
846:1034D0000000000000000000030000323E00000079
847:1034E000000000D00200363200000000000000287A
848:1034F000034038320000161304010080D20130B6B8
849:1035000000006704040100D012002DBCA0040000DC
850:10351000000000E40300363203000001000000E078
851:103520000300373200000000170000D00200003214
852:1035300000000000000000ACE100003400000000CA
853:10354000000001E00600003200000000000801E475
854:103550000600003200000000000E01EC0600003200
855:1035600000000000001001E0060000320000000032
856:10357000000000D012002D3A3E006F0402010080CE
857:10358000820D2DBC020000000000009CAE0D023236
858:1035900000000000000000A802000032300000001F
859:1035A000008886CC0700363200000000008A86CCF6
860:1035B0000700003A002400000000000409803632B1
861:1035C0000000161312000064024090B200000000D8
862:1035D000000000042940903A00007B0412000078AB
863:1035E00009C020B20000161380010080F28197B656
864:1035F0001D00161380010078E9E500B80000000006
865:103600000000007809459030000079040201008034
866:10361000C28297BC0000000000000084020000325B
867:1036200000000000000000CC030000320000810414
868:103630008E010080024028B20000BD10000000D8BA
869:10364000020000D2AA1100000000008C0E003632E9
870:1036500052000000000000740E0036321800000016
871:10366000000000E40300363209000002000000E020
872:1036700003003732FECA0000000000E403003632C7
873:103680000A000002000000E00300373200008C0452
874:1036900012010000094020B200008A0400000080EE
875:1036A0000200009000008C0412000004094020B2C7
876:1036B00000008F049F010080020090B200008E0481
877:1036C00012000008094020B202008A0404010078B8
878:1036D000092417B8060000000000007809641638B5
879:1036E00000008A0404010080028197BCFE000000F3
880:1036F0000000004403003632FE003600000000489F
881:10370000030036920000161312000000094020B298
882:103710000000950412000004094020B20000980443
883:103720009F010080020090B2000097041200000880
884:10373000094020B200000000000000B402009032F6
885:103740000000161300000080020000900000161315
886:1037500000000080020000900000161300000080AE
887:10376000020000900000161300000080020000908C
888:1037700000001613000000800200009000001613E5
889:10378000000000800200009000001613000000807E
890:10379000020000900600AA040000000C09641698BC
891:1037A0000000A10200000014084090920000DB021B
892:1037B00000000014084090923400C9030000001C6F
893:1037C000080036921200C9030000001C080036925F
894:1037D0003A00C9030000001C0800369200001613CE
895:1037E00000000080020000900000BA0200000014F7
896:1037F000084090920000DE0400000080020000906B
897:103800000000D4030000001408409092AB040000B4
898:103810000000008882CD903A0D00CD04000000FC2D
899:1038200002E416980D00DF04000000FC02E4169884
900:103830000D00E804000000FC02E416980000F60405
901:103840000000008002000090000000050000000061
902:103850000940909D000006050000008002000090D5
903:1038600000001005000000800200009000001A0512
904:10387000000000800200009000002405000000000D
905:103880000940909D00002B05000000800200009080
906:1038900000003405000000000940909D00003B0539
907:1038A00000000080020000900000AA050000000057
908:1038B000090000920000AA050000000009400092E3
909:1038C0001D07AC05000000A0020036920000BA05FA
910:1038D000000000800200009000001613000000802D
911:1038E000020000900000DE04000000DC0F40909217
912:1038F00000007E05000000800200009000008305AB
913:10390000000000D40200009210009805000000841E
914:103910001F6414980000DE04000000EC0E4090923A
915:103920000000A40500000080020000900000DE04FA
916:10393000000000D40E4090920000A7050000008017
917:103940000200009000004E06000000DC0E40909245
918:103950000000CB0500000080020000900800D005A8
919:10396000000000501F2416980000E805000000D851
920:10397000020000920D00F305000000FC02E416981E
921:103980000000F405000000D00200009200001F01BA
922:10399000000000D00200009200001513000000801B
923:1039A000020000900000161300000080020000904A
924:1039B00008000000000000F89340013900000000FA
925:1039C00000000078094590300000161306010080C1
926:1039D000228097BC3F00161304010080820D00B0C6
927:1039E0000200D104B00000A0F20B00B900000000FA
928:1039F000A00000046B4190340000020480010080AC
929:103A00000240B0B600000204040000800280B0BC96
930:103A100000000000000000D802000032000000009A
931:103A2000000000A822C02F370000000000000000A6
932:103A3000670100340042000000080000878D2A3A28
933:103A400000001613041000000700B0B200000000D0
934:103A5000001800000700D0320000161312000048C2
935:103A6000F2C138B418000000000000F8730A0339EE
936:103A700002043600000000C0020036920800020472
937:103A8000000000F8934001990000E2049F000080CC
938:103A9000020090B2000000000000000809409032CF
939:103AA000000000000000000409C0FD320200E20432
940:103AB000B00000A0F20B00B9000000000000000000
941:103AC0000B80903200000000000000000D4090329A
942:103AD00000000000A00000043B40B0310000DE0404
943:103AE0000400008002C02FBC8411DE040000008CA2
944:103AF0000E003692000016130200008002C12FBC97
945:103B000008000000000000F8934001390200EA04B8
946:103B1000B00000A0F20B00B90000ED0480010080AD
947:103B20001240B0B600000000000000043B40B0337B
948:103B30000000000000000004FD4BD0350000000034
949:103B4000000000080B00003200000000A000000C84
950:103B50001BE4B032000002040B000080020000B041
951:103B60000000F30404000080024090B21F00020431
952:103B700000000080114000990000F2040400008061
953:103B8000123EF8BA00000000000000800100F83288
954:103B900000000204000000900140F892000016139B
955:103BA000800000800281FCB60000FA049F000080C3
956:103BB000020090B2000000000000000809409032AE
957:103BC000000000000000000409C0FD3200001613D0
958:103BD00004010080428590B000000000000000E475
959:103BE0000380903209000004000000E00300373237
960:103BF00000000000000000E4034090320A000004CE
961:103C0000000000E0030037320000DE04000000C8BE
962:103C10000F81FC940000161302010080724290BCD8
963:103C20000000161306010080E24290BC000016134B
964:103C300004010078096490B500000000000000E471
965:103C40007300903C10000004000000E003003732D5
966:103C50000000DE0400000080020000900000090562
967:103C60009F000080020090B20000000000000008E9
968:103C700009409032000000000000000409C0FD323D
969:103C80000000161304010080428590B0000000007F
970:103C9000000000E40380903201000004000000E016
971:103CA0000300373200000000000000E00F80903277
972:103CB00000000000000000E4034090320200000415
973:103CC000000000E0030037320000DE04000000E4E2
974:103CD0000F409092000013059F000080020090B2F8
975:103CE00000000000000000080940903200000000C1
976:103CF0000000000409C0FD3200001613040100801A
977:103D0000428590B000000000000000E40380903283
978:103D100003000004000000E0030037320000000050
979:103D2000000000A80E80903200000000000000E4B7
980:103D30000340903204000004000000E0030037322A
981:103D40000000DE04000000AC0E40909200001D0553
982:103D50009F000080020090B20000000000000008F8
983:103D600009409032000000000000000409C0FD324C
984:103D70000000161304010080428590B0000000008E
985:103D8000000000E40380903205000004000000E021
986:103D90000300373200000000000000E403409032CE
987:103DA00006000004000000E00300373200000000BD
988:103DB000000000440F8090320000DE040000004844
989:103DC0000F4090920000161306010080824290BCC2
990:103DD0000000161304010078096490B5000028055E
991:103DE00004010080824290BC00000000000000003E
992:103DF0000900003200000000000000E403009032DF
993:103E000012000004000000E0030037320000DE046E
994:103E1000000000401F40909C00002E059F00008085
995:103E2000020090B20000000000000008094090323B
996:103E3000000000000000000409C0FD32000016135D
997:103E400004010080428590B000000000000000E402
998:103E50000380903207000004000000E003003732C6
999:103E600000000000000000E403409032080000045D
1000:103E7000000000E0030037320000DE040000008094
1001:103E8000020000900000161306010080824290BCE0
1002:103E90000000161304010078096490B5000038058D
1003:103EA00004010080824290BC00000000000000007D
1004:103EB0000900003200000000000000E4030090321E
1005:103EC00011000004000000E0030037320000DE04AF
1006:103ED000000000FC1F40909C00003E059F000080F9
1007:103EE000020090B20000000000000008094090327B
1008:103EF000000000000000000409C0FD3203090000BA
1009:103F0000000000280800363200005705000000308D
1010:103F1000080036D20000610500000044088000D28D
1011:103F20000000470504010080020084B2030E000077
1012:103F300000000028080036328000570500000030DD
1013:103F4000080036D2000061050000004408C000D21D
1014:103F50000000470504010080020084B200004E0505
1015:103F600000000044080001928002000000000000F0
1016:103F7000070036328C0501000008000007003732C8
1017:103F80000000161304100000078090B2000000002B
1018:103F900000180000074090320000000000000048B8
1019:103FA000F2C138340000161312000080020000B085
1020:103FB00018003600000000F8730A03F92000000022
1021:103FC000000000E40300363209000002000000E0B7
1022:103FD0000300373200000000000000E40340843298
1023:103FE0000A000002000000E0030037328C050100E7
1024:103FF000000000A802003732A0000000000000000E
1025:104000000900363200000000000000E00700003226
1026:104010000000540506010000190090BC0000DE04F9
1027:1040200000000080020000908C050100000000C824
1028:1040300002003732800200000000003C08003632E7
1029:1040400000000000000000340800013200005C05A0
1030:1040500002000080D2E083BC0000000000000034B9
1031:1040600008C083320000720500000080020000F0EA
1032:1040700000000000000000A0078083320000000064
1033:1040800000000030D820833A00005A050401003CAB
1034:10409000D8E083BC00000000000100800200005056
1035:1040A0000000000000000040080000320000000096
1036:1040B00000000048080000328C050100000000C824
1037:1040C0000200373200020000000000C8828D2C3A46
1038:1040D000800000000000003C0800363200000000B4
1039:1040E00000000078098078325A5A000004010080EC
1040:1040F000828D975C00006A0502010048A89E84BA80
1041:1041000000000000000000481880843A00006805A4
1042:104110000601003C28C083BC0000000000000078BD
1043:10412000098584301000000000000048888D843626
1044:1041300000006F0590010048E8A584BA0000000067
1045:10414000000000481880843A000000000000004889
1046:104150000885843000000000040100800285845C32
1047:104160000000000000010040084000520000000074
1048:10417000000000E40300833201000002000000E0C0
1049:10418000030037320C0078050000002CD8A082F91B
1050:1041900005000002000000E00300373200000000CC
1051:1041A0000000008002000030000000000001003824
1052:1041B00008403E7200000000000000E403C08232AC
1053:1041C00002000002000000E003003732020000029B
1054:1041D000000000E003003732000000000000008013
1055:1041E0000200003000007A0580000080F2403EB6F8
1056:1041F0000000000000010080020000700000810546
1057:104200009F000080020090B2000000000000000843
1058:1042100009409032000000000000000409C0FD3297
1059:1042200000000000000000840E8090320000DE04D8
1060:10423000000000880E40909208000000000000F886
1061:1042400093400139000087059F000080020090B272
1062:10425000000000000000000809409032000000004B
1063:104260000000000409C0FD32000000000000002032
1064:104270000740F5320000000000080020070000326F
1065:10428000000000000010002007C0F5320000000010
1066:10429000001800200740F632000000000020002037
1067:1042A0000780F632000000000028002007C0F63228
1068:1042B00000000000003000200700F732000000007E
1069:1042C000003800200780FF3200000000000000D806
1070:1042D0000200003200000000000000000740093228
1071:1042E000000000000008000077C02937000000002F
1072:1042F000001000000780903200000000001800004D
1073:10430000074090320000161312000048F2C138B482
1074:1043100018003600000000F8730A03F900000000DE
1075:1043200000000008C80100340000F603000000FC93
1076:104330000200009200009A0580010080F24190B6D0
1077:1043400000009B05000000C82F81FC9400000000C5
1078:10435000000000C82F81FC35000000000000008034
1079:104360000F45903000009E0502000080027EF8BCE0
1080:1043700000000000000000840F00F8320000000080
1081:10438000000000001940F837000000000000008421
1082:104390003F40F83700000000000000840F64F83A46
1083:1043A00000000000000000001900F83700000000C5
1084:1043B000000000803F00F8370000DE0400000080AD
1085:1043C0000F24F89A0000A60580010080F24190B603
1086:1043D0000000DE04000000C83F81FC940000DE0401
1087:1043E000000000C83F81FC950000A9050401008081
1088:1043F000024090BC000000000000000409C0003230
1089:104400000000DE04000000E41E40909C000000005C
1090:10441000000000A8220090370000DE04000086C0E3
1091:104420000740909208000000000000F89340013916
1092:104430000D000000000000FC02E41638000000003F
1093:1044400000000000090002320000B40504000080F2
1094:104450000200B0B200000000000000000B000032BB
1095:1044600020000000000000A0820D2A3A0000AF05E5
1096:1044700004010000190090BC0000B60500000028EF
1097:104480007901009400000000000000C83F80FC3467
1098:1044900040800000000000280980363200008111B1
1099:1044A000000000D8020000D20000020404000080D6
1100:1044B000028092BC18000000000000F8730A033963
1101:1044C00002043600000000C002003692EA05C00572
1102:1044D00004010080824D90BC00000000000000EC50
1103:1044E0000F00153200FE1F00000000F00F003732F1
1104:1044F000F0FF0000000000E80F00363298050000D1
1105:10450000000000F40F0036320000C605000000C8AD
1106:104510004F80FC953623161304010080824D90BC19
1107:1045200000000000000000EC0F80143200F81F00B3
1108:10453000000000F00F003732C0FF0000000000E86C
1109:104540000F00363298270000000000F40F003632CA
1110:1045500000000000000000C84F80FC340400000090
1111:10456000000000608F4D903A00001613600100803B
1112:10457000020000B0000016137A010080020000B0B3
1113:104580000000421100000080020000D00000DE04A4
1114:1045900000000080020000900000CD058001008036
1115:1045A000024090B600000000000000C86F80FC349C
1116:1045B0000000CF0580010080124090B6000000008E
1117:1045C000000000C85F80FC340000DE0400000080B2
1118:1045D000020000900000D20504010080B24190B0BA
1119:1045E0008007DE04000000C88F8DFC910000D40518
1120:1045F00080000080124090B60000D505000000C881
1121:104600007F80FC9500000000000000C87F80FC3423
1122:104610000000D70580000080024090B60000D80559
1123:10462000000000C88F80FC9500000000000000C85A
1124:104630008F80FC340000DA0580000080424090B694
1125:104640000000DB05000000C89F80FC950000000012
1126:10465000000000C89F80FC340000DD058000008061
1127:10466000324090B60000DE05000000C8AF80FC9527
1128:1046700000000000000000C8AF80FC340000E1052D
1129:1046800080000080224090B6841100000000008C61
1130:104690000E0036320000E305000000C81F81FC95C3
1131:1046A000AA1100000000008C0E003632000000004D
1132:1046B000000000C81F81FC340000161306010080B2
1133:1046C0008202F5BC00001613030000780900F5BD56
1134:1046D0000000161304010080E225F5B5100000006B
1135:1046E0000000004C1F2416380000DE0400000050BB
1136:1046F0001F00F59C8007161304000080828DFCB01B
1137:104700000000EC059F000080020090B20000000055
1138:104710000000000809409032000000000000000482
1139:1047200009C0FD3200000000000000001700F53A4B
1140:104730008C04010000080000070037320000161347
1141:1047400004100000078090B2000000000018000074
1142:10475000074090320000161312000040F2C138B436
1143:1047600018003600000000F8730A03F90000DE04A8
1144:1047700000000080020000900000DE04000000EC59
1145:10478000034090920000161304000080024090BC89
1146:104790000000F505B20000D8020000B200000000E1
1147:1047A000000201EC16E46E3A08000000000000F878
1148:1047B0009340013900001F06171001F802006EB285
1149:1047C0000600000604010080828D2FB00300000067
1150:1047D000000000F8828D2F3200C061100000002818
1151:1047E000098036D200000000000201EC16C06E3CC9
1152:1047F00000000000001886C80600003218003600CD
1153:10480000000000F8730A03F900000106000000D060
1154:1048100002000092000007060419868002806CBC2A
1155:10482000000016138001008012802FB600000000E7
1156:104830000000000009006E3200000000C108000402
1157:1048400009006E3200000000C01586780FC06C327F
1158:1048500000000D068001008022802FB600000D06AA
1159:10486000001886C8064000920000161380010080E0
1160:1048700022802FB6000000000040000009006E32C8
1161:1048800000000000C248000409006E320000000071
1162:10489000C01686780FC06C3200000D0680010080C3
1163:1048A00012802FB600000000001886C806000032F3
1164:1048B0000040000000000028098036320000150684
1165:1048C0000402018002C06EBC00006110000201EC15
1166:1048D00016C06EDC000013068000008002802FB638
1167:1048E00000001506810000F822802FB40000150694
1168:1048F000001886C80640009200001506820000F8E5
1169:1049000012802FB400000000001886C80600003294
1170:10491000000016130401008002002DBC00001613D5
1171:104920000401008002802DBC00000000001086C839
1172:1049300006000032000000000000000007C00A323C
1173:10494000003800000008000007003632000016138F
1174:1049500004100000070090B20000000000180000E2
1175:10496000074090320000161312000040F2C138B424
1176:1049700018003600000000F8730A03F90000000078
1177:10498000170100F8A2802F34000016130210868051
1178:1049900072826CBC00000000001086A842806C3758
1179:1049A00000002A061200703802007EB200001613C2
1180:1049B0001200703C02007EB200001613120070302C
1181:1049C00002007EB2000016131200703402007EB2A4
1182:1049D0000000210602010080B2822ABC0000000013
1183:1049E000170000D00200003206000006040100801B
1184:1049F000828D2FB00000FA050403018002C06EBC56
1185:104A000000003506000000800200009000002C0627
1186:104A10000403018002C06EBC00003506001086C889
1187:104A200046802A9600000000001086C846802A367C
1188:104A3000000030068000008012802FB6030032068E
1189:104A4000220000F8828D2FB200003206001886C8BE
1190:104A500006000092000035068000008022802FB6FC
1191:104A600000000000C20100F802802F3500C0611074
1192:104A700000000028098036D200000000000201EC8E
1193:104A800016C06E3C18003600000000F8730A03F9E7
1194:104A900000000000001001E006802F32000000003E
1195:104AA000000000A8E100003400000000A20000FCAB
1196:104AB000020000320000F60380010080A2802FB6C1
1197:104AC00000003B06B90100D8028001B20000F603E5
1198:104AD000000000F802000092000000000000003812
1199:104AE0001880F73A0000000000000038F8BF83305B
1200:104AF00000003F0604010080F2BD83BC0000F60305
1201:104B0000A90000F80200009200C046061801000C3F
1202:104B1000A8CD3EB200004206840000741F40F7BAE0
1203:104B20000000F603A90000F8020000920000000057
1204:104B3000000000740F00003200C046061801000C8F
1205:104B4000A8CD3EB218003600000000F8738A03F9C1
1206:104B500000004306000000B00200009200000000C8
1207:104B60000000007C0F80833200000000002800005D
1208:104B70000700003200000000003000000700003293
1209:104B800000010080003800000700373200000000FC
1210:104B9000003C000C0780833200001613120000480E
1211:104BA00002C080B20000161380010080A2802FB6E0
1212:104BB0000000F603A9000008E80100940000540674
1213:104BC00004010080A2C0EDBC52000000000000748F
1214:104BD0000E00363200000000000000C00E4001321E
1215:104BE000407E0500000000B40E00373200000000D7
1216:104BF000000000C40E80073264005A06000000CC9A
1217:104C00000E003692640016130401008082CDEDBCC4
1218:104C100029000000000000740E0036320000000081
1219:104C2000000000C00E400032A08C0000000000B464
1220:104C30000E00363200000000000000C40EC000323A
1221:104C400000000000000000CC0E80023210000000C6
1222:104C5000000000E4337BEC391E000001000000E09E
1223:104C60000300373200000000000000C86EC0EC37BF
1224:104C70000000DE04000000D80EC0ED920000161304
1225:104C800004310280A2DB2CBC00001613040100805A
1226:104C9000028080B200001613021C018052C06EBC5C
1227:104CA0002C0016130201008082CD81BC3F00161338
1228:104CB0000200008082CD81BC3600670604000080BF
1229:104CC00082CD81BC0F0000000000001009003632C8
1230:104CD0002C0000000000001489CD813C10008012DF
1231:104CE000001C011459E46ED96F0600000000008812
1232:104CF00082CD813A0000161304010080028080B248
1233:104D00000000161304310280A2DB2CBC0000161335
1234:104D10000218018092C06EBC2C00161302000080A5
1235:104D200082CD81BC10000000000000100900363266
1236:104D3000100080120018011479E06ED96F0600008F
1237:104D40000000008882CD813AAE060000001801887C
1238:104D500082CD6E3AB70600000018018882CD6E3A07
1239:104D6000C00600000018018882CD6E3AC906000016
1240:104D70000018018882CD6E3AD20600000018018822
1241:104D800082CD6E3ADB0600000018018882CD6E3AB3
1242:104D9000E40600000018018882CD6E3AED0600009E
1243:104DA0000018018882CD6E3AF606000000180188CE
1244:104DB00082CD6E3AFF0600000018018882CD6E3A5F
1245:104DC000080700000018018882CD6E3A1107000024
1246:104DD0000018018882CD6E3A1A0700000018018879
1247:104DE00082CD6E3A230700000018018882CD6E3A0A
1248:104DF0002C0700000018018882CD6E3A35070000AC
1249:104E00000018018882CD6E3A3E0700000018018824
1250:104E100082CD6E3A470700000018018882CD6E3AB5
1251:104E2000500700000018018882CD6E3A5907000033
1252:104E30000018018882CD6E3A6207000000180188D0
1253:104E400082CD6E3A6B0700000018018882CD6E3A61
1254:104E5000740700000018018882CD6E3A7D070000BB
1255:104E60000018018882CD6E3A86070000001801887C
1256:104E700082CD6E3A8F0700000018018882CD6E3A0D
1257:104E8000980700000018018882CD6E3AA107000043
1258:104E90000018018882CD6E3AAA0700000018018828
1259:104EA00082CD6E3AB30700000018018882CD6E3AB9
1260:104EB000BC0700000018018882CD6E3AC5070000CB
1261:104EC0000018018882CD6E3ACE07000000180188D4
1262:104ED00082CD6E3AD70700000018018882CD6E3A65
1263:104EE000E00700000018018882CD6E3AE907000053
1264:104EF0000018018882CD6E3AF20700000018018880
1265:104F000082CD6E3AFB0700000018018882CD6E3A10
1266:104F1000040800000018018882CD6E3A0D080000D8
1267:104F20000018018882CD6E3A16080000001801882A
1268:104F300082CD6E3A1F0800000018018882CD6E3ABB
1269:104F40000000A803000000D4020000920000EC0260
1270:104F5000000000800200009028080000001C01886A
1271:104F600082CD6E3A2D080000001C018882CD6E3A79
1272:104F700032080000001C018882CD6E3A370800001C
1273:104F8000001C018882CD6E3A3C080000001C01889C
1274:104F900082CD6E3A41080000001C018882CD6E3A35
1275:104FA00046080000001C018882CD6E3A4B080000C4
1276:104FB000001C018882CD6E3A50080000001C018858
1277:104FC00082CD6E3A55080000001C018882CD6E3AF1
1278:104FD0005A080000001C018882CD6E3A5F0800006C
1279:104FE000001C018882CD6E3A64080000001C018814
1280:104FF00082CD6E3A69080000001C018882CD6E3AAD
1281:105000006E080000001C018882CD6E3A7308000013
1282:10501000001C018882CD6E3A78080000001C0188CF
1283:1050200082CD6E3A0000B003000000D4020000926E
1284:105030000000C603000000D4020000920000710AC4
1285:10504000000000100880019200001613000000808C
1286:105050000200009000001613000000800200009083
1287:1050600000001613000000800200009000001613DC
1288:105070000000008002000090000016130000008075
1289:105080000200009000001613000000800200009053
1290:1050900000001613000000800200009000001613AC
1291:1050A0000000008002000090000016130000008045
1292:1050B000020000900000B10A000000100880009279
1293:1050C000000016130000008002000090000016137C
1294:1050D0000000008002000090000016130000008015
1295:1050E00002000090000016130000008002000090F3
1296:1050F000000016130000008002000090000016134C
1297:1051000000000080020000900000161300000080E4
1298:1051100002000090000016130000008002000090C2
1299:105120000000161300000080020000900000C00A7A
1300:10513000000000100880009200001613000000809C
1301:105140000200009000001613000000800200009092
1302:105150000000130B0000001008400192000016131D
1303:105160000000008002000090000016130000008084
1304:105170000200009000001613000000800200009062
1305:1051800000001613000000800200009000001613BB
1306:10519000000000800200009000001B0B00000010C7
1307:1051A00008C000920000161300000080020000906A
1308:1051B00000001B0B0000001008C000920000220E2F
1309:1051C000000000100840019200001613000000804B
1310:1051D0000200009000001B0B0000001008C00092AD
1311:1051E000000016130000008002000090000016135B
1312:1051F00000000080020000900000161300000080F4
1313:105200000200009000002E0B0000001008C0009269
1314:1052100000001613000000800200009000002E0B1A
1315:105220000000001008C000920000220E00000010D4
1316:105230000840019200001613000000800200009058
1317:1052400000002E0B0000001008C000920000161392
1318:105250000000008002000090000016130000008093
1319:105260000200009000001613000000800200009071
1320:1052700000002C0B0000001008C000920000161364
1321:10528000000000800200009000002C0B00000010C5
1322:1052900008C000920000220E000000100840019299
1323:1052A00000001613000000800200009000002C0B8C
1324:1052B0000000001008C000920000161300000080DB
1325:1052C0000200009000001613000000800200009011
1326:1052D000000016130000008002000090000016136A
1327:1052E00000000080020000900000F50B000000109C
1328:1052F00008C000920000180B000000100800019286
1329:105300000000130B0000001008400192000016136B
1330:1053100000000080020000900000161300000080D2
1331:1053200002000090000016130000008002000090B0
1332:105330000000161300000080020000900000161309
1333:1053400000000080020000900000161300000080A2
1334:10535000020000900000EB0B00000010088000929B
1335:105360000000180B00000010080001920000130B51
1336:105370000000001008400192000016130000008099
1337:105380000200009000001613000000800200009050
1338:1053900000001613000000800200009000001613A9
1339:1053A0000000008002000090000016130000008042
1340:1053B0000200009000001613000000800200009020
1341:1053C0000000EB0B00000010080001920000180B19
1342:1053D00000000010080001920000130B00000010F4
1343:1053E00008400192000016130000008002000090A7
1344:1053F0000000161300000080020000900000161349
1345:1054000000000080020000900000161300000080E1
1346:1054100002000090000016130000008002000090BF
1347:105420000000161300000080020000900000790CBC
1348:1054300000000010088000920000180B000000100F
1349:10544000080001920000130B0000001008400192B8
1350:1054500000001613000000800200009000001613E8
1351:105460000000008002000090000016130000008081
1352:10547000020000900000161300000080020000905F
1353:1054800000001613000000800200009000001613B8
1354:1054900000000080020000900000790C0000001065
1355:1054A000080001920000180B000000100800019293
1356:1054B0000000130B000000100840019200001613BA
1357:1054C0000000008002000090000016130000008021
1358:1054D00002000090000016130000008002000090FF
1359:1054E0000000161300000080020000900000161358
1360:1054F000000000800200009000002D0B0000001052
1361:105500000880009200001613000000800200009046
1362:1055100000002D0B00000010088000920000220EF9
1363:1055200000000010084001920000161300000080E7
1364:10553000020000900000161300000080020000909E
1365:1055400000001613000000800200009000001613F7
1366:105550000000008002000090000016130000008090
1367:105560000200009000002D0B0000001008000192C6
1368:1055700000001613000000800200009000002D0BB8
1369:1055800000000010080001920000220E0000001030
1370:1055900008400192000016130000008002000090F5
1371:1055A0000000161300000080020000900000161397
1372:1055B0000000008002000090000016130000008030
1373:1055C000020000900000161300000080020000900E
1374:1055D00000001613000000800200009000007D080B
1375:1055E0000000001008000192000016130000008067
1376:1055F0000200009000007D080000001008400192A9
1377:105600000000161300000080020000900000161336
1378:1056100000000080020000900000161300000080CF
1379:1056200002000090000016130000008002000090AD
1380:105630000000161300000080020000900000430EDE
1381:1056400000000010084001920000390E0000001018
1382:10565000084001920000430E000000100840019233
1383:105660000000130B00000010084001920000161308
1384:1056700000000080020000900000430E00000010B7
1385:105680000840019200001613000000800200009004
1386:105690000000161300000080020000900000B90A0C
1387:1056A00000000010084000920000B90A000000103D
1388:1056B000088000920000B90A0000001008C00092A3
1389:1056C0000000B90A00000010080001920000BE0AA4
1390:1056D00000000010084001920000B90A000000100C
1391:1056E000088001920000B90A0000001008C0019271
1392:1056F0000000161300000080020000900000161346
1393:1057000000000080020000900000161300000080DE
1394:10571000020000900000F60C0000001008800092CB
1395:105720000000F60C0000001008C000920000F60C0B
1396:1057300000000010080001920000130B0000001090
1397:105740000840019200001613000000800200009043
1398:105750000000F60C0000001008C0019200001613B3
1399:10576000000000800200009000001613000000807E
1400:10577000020000900000161300000080020000905C
1401:1057800000001613000000800200009000001613B5
1402:10579000000000800200009000001613000000804E
1403:1057A0000200009000004D0E000000100840019221
1404:1057B0000000161300000080020000900000161385
1405:1057C000000000800200009000001613000000801E
1406:1057D00002000090000016130000008002000090FC
1407:1057E0000000CB0E00000010084001920000CF0E18
1408:1057F00000000010084001920000310E000000106F
1409:10580000084001920000CF0E0000001008400192F5
1410:1058100000007D08000000100840019200001613EF
1411:1058200000000080020000900000CF0E0000001079
1412:105830000840019200007E0800000010080002925B
1413:1058400000001613000000800200009000001613F4
1414:1058500000000080020000900000D00E0000001048
1415:10586000084001920000310E000000100840019233
1416:105870000000D00E000000100840019200007D08DA
1417:105880000000001008400192000016130000008084
1418:10589000020000900000D00E0000001008400192AD
1419:1058A0000000161300000080020000900000161394
1420:1058B000000000800200009000001613000000802D
1421:1058C000020000900000D50E000000100880009239
1422:1058D0000000D50E0000001008C000920000D50E98
1423:1058E00000000010080001920000130B00000010DF
1424:1058F0000840019200001613000000800200009092
1425:105900000000D50E0000001008C001920000161320
1426:1059100000000080020000900000161300000080CC
1427:1059200002000090000016130000008002000090AA
1428:105930000000161300000080020000900000161303
1429:10594000000000800200009000001613000000809C
1430:10595000020000900000161300000080020000907A
1431:105960000000A00A0000001008400092000016137A
1432:10597000000000800200009000001613000000806C
1433:10598000020000900000161300000080020000904A
1434:105990000000161300000080020000900000EA0ED4
1435:1059A00000000010088000920000EA0E00000010C5
1436:1059B00008C000920000EA0E0000001008000192EA
1437:1059C0000000130B000000100840019200001613A5
1438:1059D00000000080020000900000EA0E00000010AD
1439:1059E00008C0019200001613000000800200009021
1440:1059F0000000161300000080020000900000161343
1441:105A000000000080020000900000030F0000001062
1442:105A1000088000920000030F0000001008C00092F0
1443:105A20000000030F00000010080001920000130B9B
1444:105A300000000010084001920000161300000080D2
1445:105A4000020000900000030F0000001008C0019247
1446:105A500000001613000000800200009000007D0886
1447:105A600000000010080000920000161300000080E3
1448:105A70000200009000007D080000001008800092E5
1449:105A80000000150F0000001008C0009200007D0803
1450:105A9000000000100800019200007D0800000010C6
1451:105AA00008400192000016130000008002000090E0
1452:105AB0000000161300000080020000900000161382
1453:105AC000000000800200009000001613000000801B
1454:105AD00002000090000016130000008002000090F9
1455:105AE00000007D0800000010088000920000260FD2
1456:105AF000000000100880009200007D0800000010E7
1457:105B00000800019200007D0800000010084001928A
1458:105B10000000161300000080020000900000161321
1459:105B200000000080020000900000161300000080BA
1460:105B30000200009000001613000000800200009098
1461:105B400000001613000000800200009000007D0895
1462:105B500000000010088000920000260F00000010D6
1463:105B60000800019200007D0800000010080001926A
1464:105B700000007D080000001008400192000016138C
1465:105B8000000000800200009000001613000000805A
1466:105B90000200009000001613000000800200009038
1467:105BA0000000161300000080020000900000161391
1468:105BB000000000800200009000001613000000802A
1469:105BC0000200009000007D08000000100880009294
1470:105BD00000001613000000800200009000007D0805
1471:105BE0000000001008400192000016130000008021
1472:105BF00002000090000016130000008002000090D8
1473:105C00000000161300000080020000900000161330
1474:105C100000000080020000900000161300000080C9
1475:105C2000020000900000FA0E0000001008800092B0
1476:105C30000000FA0E0000001008C000920000FA0EEA
1477:105C400000000010080001920000130B000000107B
1478:105C5000084001920000161300000080020000902E
1479:105C60000000FA0E0000001008C001920000161398
1480:105C70000000008002000090000016130000008069
1481:105C80000200009000001613000000800200009047
1482:105C900000001613000000800200009000001613A0
1483:105CA0000000008002000090000016130000008039
1484:105CB000020000900000390F00000010080002925E
1485:105CC0000000161300000080020000900000161370
1486:105CD0000000008002000090000016130000008009
1487:105CE00002000090000016130000008002000090E7
1488:105CF0000000161300000080020000900000C00A9F
1489:105D00000000001008C0019200001613000000807F
1490:105D100002000090000016130000008002000090B6
1491:105D20000000130B00000010084001920000161341
1492:105D300000000080020000900000010B0000001035
1493:105D400008C00192000016130000008002000090BD
1494:105D500000001613000000800200009000001613DF
1495:105D600000000080020000900000C00A0000001047
1496:105D700008800092000016130000008002000090CE
1497:105D80000000161300000080020000900000130BBA
1498:105D9000000000100840019200001613000000806F
1499:105DA000020000900000010B0000001008C00192EA
1500:105DB000000016130000008002000090000016137F
1501:105DC0000000008002000090000016130000008018
1502:105DD000020000900000260D0000001008800092D4
1503:105DE0000000161300000080020000900000260D45
1504:105DF00000000010088000920000220E0000001039
1505:105E0000084001920000161300000080020000907C
1506:105E10000000260D000000100880009200001613FC
1507:105E200000000080020000900000161300000080B7
1508:105E30000200009000001613000000800200009095
1509:105E40000000260D0000001008000192000016134B
1510:105E500000000080020000900000260D00000010ED
1511:105E6000080001920000220E00000010084001927C
1512:105E70000000161300000080020000900000260DB4
1513:105E800000000010080001920000161300000080BE
1514:105E90000200009000001613000000800200009035
1515:105EA0000000161300000080020000900000260D84
1516:105EB000000000100800019200001613000000808E
1517:105EC000020000900000260D000000100800019262
1518:105ED0000000220E0000001008400192000016137E
1519:105EE00000000080020000900000260D000000105D
1520:105EF00008000192000016130000008002000090CC
1521:105F0000000016130000008002000090000016132D
1522:105F100000000080020000900000260D000000102C
1523:105F2000088000920000161300000080020000901C
1524:105F30000000260D00000010088000920000220ED4
1525:105F400000000010084001920000161300000080BD
1526:105F5000020000900000260D000000100880009252
1527:105F600000001613000000800200009000001613CD
1528:105F70000000008002000090000016130000008066
1529:105F80000200009000001613000000800200009044
1530:105F90000000161300000080020000900000260D93
1531:105FA0000000001008C001920000220E0000001046
1532:105FB00008400192000016130000008002000090CB
1533:105FC0000000260D0000001008C00192000016130A
1534:105FD0000000008002000090000016130000008006
1535:105FE00002000090000016130000008002000090E4
1536:105FF0000000AB0D00000010088000920000161396
1537:1060000000000080020000900000161300000080D5
1538:106010000200009000007D0800000010084001927E
1539:106020000000161300000080020000900000AB0D7D
1540:10603000000000100880009200001613000000808D
1541:106040000200009000001613000000800200009083
1542:106050000000161300000080020000900000AB0D4D
1543:10606000000000100880009200001613000000805D
1544:106070000200009000001613000000800200009053
1545:1060800000007D0800000010084001920000161377
1546:1060900000000080020000900000AB0D0000001026
1547:1060A00008C001920000161300000080020000905A
1548:1060B000000016130000008002000090000016137C
1549:1060C0000000008002000090000016130000008015
1550:1060D00002000090000016130000008002000090F3
1551:1060E00000001613000000800200009000007D08F0
1552:1060F000000000100840019200001613000000800C
1553:10610000020000900000B50D0000001008C00192D0
1554:10611000000016130000008002000090000016131B
1555:1061200000000080020000900000161300000080B4
1556:106130000200009000001613000000800200009092
1557:1061400000001613000000800200009000001613EB
1558:10615000000000800200009000007D080000001098
1559:106160000840019200001613000000800200009019
1560:106170000000B50D0000001008800092000016130A
1561:106180000000008002000090000016130000008054
1562:106190000200009000001613000000800200009032
1563:1061A000000016130000008002000090000016138B
1564:1061B0000000008002000090000016130000008024
1565:1061C000020000900000B30E000000100840019291
1566:1061D000000016130000008002000090000016135B
1567:1061E00000000080020000900000161300000080F4
1568:1061F0000200009000008608000000100840009295
1569:10620000000016130000008002000090000016132A
1570:1062100000000080020000900000161300000080C3
1571:1062200002000090000016130000008002000090A1
1572:106230000000161300000080020000900000DD083E
1573:10624000000000100880009200001613000000807B
1574:106250000200009000001613000000800200009071
1575:106260000000C6090000001008000192000016138B
1576:10627000000000800200009000008508000000106F
1577:10628000080001920000D0090000001008000192EF
1578:106290000000D00900000010080001920000D009A1
1579:1062A000000000100800019200001613000000809A
1580:1062B0000200009000001613000000800200009011
1581:1062C0000000EF0800000010088000920000161384
1582:1062D000000000800200009000008508000000100F
1583:1062E00008000192000016130000008002000090D8
1584:1062F000000016130000008002000090000000095A
1585:1063000000000010088000920000C4090000001086
1586:10631000088000920000850800000010080001922B
1587:106320000000161300000080020000900000E60943
1588:1063300000000010084000920000E6090000001074
1589:10634000088000920000E6090000001008C00092DA
1590:1063500000008508000000100800019200001613DC
1591:106360000000008002000090000016130000008072
1592:106370000200009000000C0A0000001008C000920B
1593:106380000000161300000080020000900000850845
1594:1063900000000010080001920000161300000080A9
1595:1063A0000200009000001613000000800200009020
1596:1063B00000000F0A000000100800019200000F0A00
1597:1063C0000000001008000192000085080000001085
1598:1063D00008000192000016130000008002000090E7
1599:1063E0000000161300000080020000900000110A57
1600:1063F00000000010088000920000110A0000001048
1601:1064000008C00092000085080000001008000192FA
1602:1064100000001613000000800200009000008508B4
1603:1064200000000010084000920000DC09000000108D
1604:10643000088000920000DC090000001008C00092F3
1605:106440000000850800000010080001920000850887
1606:1064500000000010080000920000850800000010F5
1607:10646000084000920000250A0000001008800092F9
1608:106470000000250A0000001008C0009200008508F6
1609:1064800000000010080001920000161300000080B8
1610:10649000020000900000161300000080020000902F
1611:1064A0000000600A000000100880009200008508CB
1612:1064B0000000001008C000920000850800000010D5
1613:1064C00008000192000016130000008002000090F6
1614:1064D00000001613000000800200009000003F0A38
1615:1064E00000000010088000920000161300000080D9
1616:1064F00002000090000085080000001008000192D2
1617:106500000000161300000080020000900000161327
1618:1065100000000080020000900000EC080000001065
1619:106520000880009200001613000000800200009016
1620:1065300000008508000000100800019200001613FA
1621:106540000000008002000090000016130000008090
1622:10655000020000900000540A000000100880009221
1623:106560000000540A0000001008C0009200008508D6
1624:1065700000000010080001920000161300000080C7
1625:10658000020000900000161300000080020000903E
1626:1065900000001C0A000000100880009200001C0A85
1627:1065A0000000001008C000920000850800000010E4
1628:1065B0000800019200001613000000800200009005
1629:1065C00000001613000000800200009000006D0A19
1630:1065D000000000100880009200006D0A000000100A
1631:1065E00008C0009200008508000000100800019219
1632:1065F0000800F303001801E8762081990800EF03F2
1633:10660000001801E87620819900004B1200000080FC
1634:10661000020000F0080082081D1901E8762081B907
1635:106620000000F303000000F862812F950000F303DF
1636:106630008000008002812FB62A0016131200002C61
1637:1066400082CD2EB20000F303000000F802812F94E7
1638:106650000800F303001C01E876208199000016135E
1639:10666000800F018002C06EB600000000000000D85C
1640:106670000200003200000000000E01EC06C06E3582
1641:106680005400000000000000070036320000000047
1642:10669000000000BCA8002D37B40401000008000071
1643:1066A000C7CD8B3A000000000000007899C02C375D
1644:1066B000B400000000000078898D973A000016139E
1645:1066C0000210000087BF97BA000000000018000009
1646:1066D0000740FE320000161312000040F2C138B429
1647:1066E000000000000090007809006E3200001613D0
1648:1066F00004A0000009806EB20000950804A5000403
1649:1067000009806EB200000000000000040900903211
1650:106710000000161302010080026490BC000098087B
1651:1067200004010004096490BC0000000000000004A3
1652:1067300009400032080000006E3402E81624903947
1653:1067400000009908B71002E0068097B200009C088C
1654:1067500080000080F280FCB600009D08000000C8A8
1655:10676000FF80FC9400009E089F990080821BEEBC75
1656:1067700000000000009800E00E006E3200000000F3
1657:10678000A70000800200003018003600000000F86A
1658:10679000730A03F9000000000010021C09006E32A9
1659:1067A0004000A3080601008082CD91BC00C0A4086F
1660:1067B000001802E00680369200E00000001802E0B7
1661:1067C00006803632000000000000002009800332FD
1662:1067D0000000A70880D7018032C06EB6000000001C
1663:1067E000000000204900923A0000000000980118C3
1664:1067F00009006E3200000000000A022409C06E3257
1665:106800000000000000C0012809806E320000B508B9
1666:10681000800E018012C06EB602000000003C02EC47
1667:106820000600363200000000000000004901923AE4
1668:106830000000B10880D6018042C06EB60082000020
1669:10684000001002E0A6CD913200A00000002C02E86A
1670:10685000060036322800BF08003A02EC06003692E5
1671:1068600000000000D301001CD9C191340082000057
1672:10687000001002E0A6CD913200A00000002C02E83A
1673:10688000060036323400BF08003A02EC06003692A9
1674:1068900004000000003C02EC060036322800000034
1675:1068A00000000000890D923A0000BB0880D60180EC
1676:1068B00042C06EB600860000001002E0A6CD913204
1677:1068C00004A00000002C02E8060036321400BF08C5
1678:1068D000003A02EC0600369200000000D301001CD2
1679:1068E000D9C1913400860000001002E0A6CD91329B
1680:1068F00004A00000002C02E8060036322000BF0889
1681:10690000003A02EC0600369212000000003802EC59
1682:1069100086CD913A08000000002802E886249039CC
1683:1069200000000000002002E0962414370000000060
1684:10693000004001E0068091320000C508040100809B
1685:10694000028092BC0000000000C001E0060000329E
1686:1069500000000000003000E00600003200000000EF
1687:1069600000B000E00600003220000000000000003F
1688:10697000070036320000000000000078A9002D3723
1689:106980000005010000080000C78D973A00000000D4
1690:106990000000007899C02C3700010000000000784A
1691:1069A000898D973A000016130210000087BF97BA2E
1692:1069B00000000000001800000740FE32000016131F
1693:1069C00012000048F2C138B40000D20880D7012C70
1694:1069D00009C06EB200000000DAD701EC06C06E35C7
1695:1069E00000000000005A01EC0640ED32AE0000004D
1696:1069F000000000781900363AAF0016130401008039
1697:106A0000828D97BC00000000005C01E806808B329C
1698:106A10000000D7088001008062C092B6000000002C
1699:106A2000000000F882812F3418003600000000F8C2
1700:106A3000730A03F9000000000004013808C06E3238
1701:106A40000000161304C9018002806EBC0000000023
1702:106A5000006201EC06808332010085081201002CDF
1703:106A600082CD2EB2000016130000008002000090BC
1704:106A700000000000005401FC02C06E320000000063
1705:106A8000000000D80280013200C0E3081801000CA9
1706:106A9000A8CD3EB2208000000000000808803632F9
1707:106AA0002D00EF031201002C82CD2EB20000161330
1708:106AB0000000008002000090000000000062013829
1709:106AC00008C06E320008008000000028090037323C
1710:106AD0000060EB1100000008088036F20000161379
1711:106AE000870601EC16C06EBC000085080B00008014
1712:106AF000020000B0000085088000008072812FB67F
1713:106B000000000000000000F872812F343D0085086D
1714:106B10001201002C82CD2EB200001613000000805E
1715:106B200002000090000016130407018012C06EBC22
1716:106B30000000161380000080B2812FB60000EF081D
1717:106B4000000000F8B2812F940000161304A0001872
1718:106B500008006EB2000016130406018002C06EBC6D
1719:106B600000009E1200000080020000F000000013F0
1720:106B70000078016008006EF20000F508120100C8FC
1721:106B8000020020B20000F80800000080020000901F
1722:106B9000000005091201005C088020B20000F8081E
1723:106BA0001201006002802CB2000016130000008069
1724:106BB000020000900000FA0804000080024080BC3F
1725:106BC00000000000000000F81F80FF3A0000FD08F0
1726:106BD00080010080A2802FB618003600CA0000F89D
1727:106BE000730A03F9000016130401008002802DBC13
1728:106BF000000085088000008072812FB63D001613CA
1729:106C00001200002C82CD2EB200008508000000F892
1730:106C100072812F94000016130406018002C06EBC1E
1731:106C20000000000000BC001408806E320000F8086C
1732:106C3000120000C8020020B20000F6081200005C3A
1733:106C4000088020B20000161304A0001808006EB2DD
1734:106C5000000000000000007879613832000016134F
1735:106C60001218024CE2256EB20000161304010080D7
1736:106C700002402DBC080000000010020078E16E39CF
1737:106C8000000000000018002007000032070000008C
1738:106C90000000003878CAE939000016130400003CEF
1739:106CA000084080B2000000000090006C08006E32C6
1740:106CB000000000000098004C08006E32000016131F
1741:106CC0000400008032E186B200000000510000D8CC
1742:106CD00002000032000000004D00000067E0833E2B
1743:106CE00000000000000800000700803200000000E3
1744:106CF0000010000007C086320000000000180000ED
1745:106D000007C084320000000000000018D8A0813CB9
1746:106D10000000840904B000E0D6206EBC0000161309
1747:106D200009010080020000B0000043090400003C9B
1748:106D3000D8E083BC0000161304010080028081BCEF
1749:106D4000000024098000008092802FB600001C09FA
1750:106D50001201000009C021B218003600000000F83E
1751:106D6000730A03F91D0000000000007809A4173819
1752:106D70000000210904010080128097BC0000161356
1753:106D800080010080A2802FB600001B09670000F878
1754:106D9000A2802FB500001C090000000009C021924C
1755:106DA0000000230904000080228097BC0000161315
1756:106DB00004010080328097BC00000000C90100D8A7
1757:106DC00002408432000027090400008072802DBC3C
1758:106DD0000000161312000044E2E038B2000034094B
1759:106DE000510000D812802D9A0000000000000078A9
1760:106DF000F98183340000161312000044E2E538B232
1761:106E000000002C098000008082802FB60000F7115E
1762:106E100000A0015008006EF20000000000F801E040
1763:106E20000600853200002E09120100E802C021B2DE
1764:106E300018003600000000F8730A03F90000320958
1765:106E40000401008002802DBC000016138001008028
1766:106E5000A2802FB600002D09670000F8A2802FB590
1767:106E600000001613120000E802C021B20000161341
1768:106E70000401008072802DBC00000000510000D889
1769:106E800002000032000039092A010000D82080BA2F
1770:106E9000000038091201000009C021B218003600B4
1771:106EA000000000F8730A03F900000000000000D899
1772:106EB000024084321D0016130400008002A417B89B
1773:106EC00000000000CAE0006C08006E320000000004
1774:106ED00000E8004C08006E320000161304F00018A1
1775:106EE00008006EB2000000000000003818818335F1
1776:106EF0000000100904B00080829B81BC00001613C2
1777:106F00000D010080020000B0000016139F00001465
1778:106F1000184081BC00000000CA0100F842802F35F3
1779:106F200008A0100912010040A2CD39B200001613CA
1780:106F3000000000800200009000004E09293402B8D1
1781:106F400008806EB2000046091201000009C021B29B
1782:106F500018003600000000F8730A03F91D00000055
1783:106F60000000007809A4173800004B0904010080D4
1784:106F7000128097BC0000161380010080A2802FB6FB
1785:106F800000004509670000F8A2802FB500004609FF
1786:106F90000000000009C0219200004D09040000809B
1787:106FA000228097BC0000161304010080328097BC39
1788:106FB00000000000C90100D8024084320000000037
1789:106FC00000000078F9818334000016131200004499
1790:106FD000E2E538B2000056092800006CD8E086BA15
1791:106FE0000000F61100A0015008006EF200005609E2
1792:106FF0001DF801E0060085B20000560980000080FF
1793:1070000002812FB62A0016131200002C82CD2EB258
1794:1070100000000000000000F802812F3400005C092D
1795:1070200004A000E0068081B20000000000BC00E87F
1796:107030000640813200000000009000E006C0863269
1797:1070400000000000009800E006C084320000161323
1798:107050000400008032E186B2000070090000008068
1799:10706000020000900000620980010080A2802FB61B
1800:1070700000005F091201000009C021B218003600AB
1801:10708000000000F8730A03F91D0062090401008082
1802:1070900002A417B80000161380000080E2802FB60B
1803:1070A00000005E09000000F8E2802F94000000005C
1804:1070B00000E0006C08006E3200000000CAE8004CDE
1805:1070C00008006E32000016130400008032E186B220
1806:1070D0000000161304F0001808006EB200006B09DF
1807:1070E00004B00080829B81BC000016130D0100805B
1808:1070F000020000B0000016139F000014184081BC6D
1809:1071000000000000CA0100F842802F3508A01613C5
1810:1071100012000040A2CD39B20000000000A000E043
1811:107120000680813200000000009800E006C0843232
1812:1071300000000000009000E006C086320000161338
1813:107140000400008032E186B20000000000BC00E8CC
1814:1071500006408132000076092A5D01E806808BB284
1815:10716000000073091201000009C021B218003600A6
1816:10717000000000F8730A03F91D007609040100807D
1817:1071800002A417B80000161380000080E2802FB61A
1818:1071900000007209000000F8E2802F9410247909A1
1819:1071A000370000F8A28D2FB13D0016131200002CFD
1820:1071B00082CD2EB200000000000000F872812F3452
1821:1071C00008000000CA1C01E8762081390000541034
1822:1071D0000000002CF90100F400007F09800000800D
1823:1071E000E2802FB600007E091201000009C021B222
1824:1071F00018003600000000F8730A03F91D0016138A
1825:107200000401008002A417B800001613800100805A
1826:1072100082802FB60000161304010080C20003BC58
1827:10722000100000000018008067A173393000F603D9
1828:107230001201005CA28D2CB2000016130000008029
1829:107240000200009000008A098000008092802FB622
1830:1072500018003600000000F8730A03F91D00161329
1831:107260000400007809A417B8000089090400008010
1832:10727000228097BC0000161304010080328097BC66
1833:1072800000000000C90100D802408432000016133B
1834:1072900004010080D2E083BC000016132A000078AD
1835:1072A000F98183B40000161312000044E2E538B2FD
1836:1072B0000000641100000030030038F20000920961
1837:1072C0001D000038188183B50000920980000080FD
1838:1072D00002812FB62A0016131200002C82CD2EB286
1839:1072E00000000000000000F802812F340000161397
1840:1072F000870601EC16C06EBC000096090B000080EA
1841:10730000020000B000000000CA0100F842802F34E3
1842:1073100008C0161312000040A2CD39B2000099092E
1843:107320008000008082802FB60000F71100A001507D
1844:1073300008006EF20000000000F801E0060085324F
1845:1073400000009B091201000009C021B2180036009C
1846:10735000000000F8730A03F90000BD092A3502B8DD
1847:1073600008806EB200009E091201000009C021B21F
1848:1073700018003600000000F8730A03F9000000004E
1849:10738000000000F8A2802F350000B509040000803D
1850:10739000026180BC0000AD0980B8000009C06EB277
1851:1073A0004000A50904000080820D90BC80001613E7
1852:1073B00004010080820D90BC0000A50902B000808D
1853:1073C000821B84BC0000AD09000000F8B2812F943C
1854:1073D000000016130407018012C06EBC00001613D3
1855:1073E00080000080B2812FB60000161380D6018085
1856:1073F00052C06EB60000000000D601EC56C06E34DC
1857:1074000000000000000000601800863A0000000044
1858:1074100000000080B701783400000000007801E02F
1859:10742000060086324000BD0904000080820D90BC39
1860:107430000000161304A0001808006EB200009E128F
1861:1074400000000000D82080FA000016130600003C5F
1862:10745000182084BC0000161304B0003C88DB83BEF7
1863:107460000000161380010080C20178B60000000001
1864:1074700000000080F720783A00000000587801E012
1865:10748000F620863A00000C0900000004F860809A9B
1866:107490000000B80980B9000009C06EB22F00BD0914
1867:1074A0001201002C82CD2EB20000161300000080C5
1868:1074B000020000904000BA0904010080820D90BCD7
1869:1074C0003800BC09000000780900369280001613CD
1870:1074D00004010080820D90BC39000000000000789B
1871:1074E00009003632000016131200002CE2E52EB21D
1872:1074F000000016138001008082802FB60000161352
1873:1075000004010080C20003BC1000000000180080CD
1874:1075100067A1733900000000005C01E806808B322F
1875:1075200010240000000000F8A28D2F3130008508E3
1876:107530001201005CA28D2CB2000016130000008026
1877:10754000020000900000161380010080C2812FB657
1878:1075500000000009000000F8C2812F950000000023
1879:10756000005401FC02C06E3200000000000000D890
1880:107570000280013200C0CC091801000CA8CD3EB237
1881:107580002080000000000008088036322D00EF0344
1882:107590001201002C82CD2EB20000161300000080D4
1883:1075A00002000090000000000062013808C06E3246
1884:1075B0000008008000000028090037320060EB114D
1885:1075C00000000008088036F20000DA0900000080A0
1886:1075D000020000900000D20980000080C2812FB616
1887:1075E0000000D50900D001E806000092000000006C
1888:1075F000000000F8C2812F350000D50904D10180B8
1889:1076000002806EBC0000000000D601EC26C06E3483
1890:107610000000D7098000008092812FB60000DA09AF
1891:1076200000C801E80600009200000000000000F819
1892:1076300092812F350000DA0904C9018002806EBCF6
1893:107640000000000000D601EC16C06E341100850861
1894:107650001201002C82CD2EB2000016130000008013
1895:1076600002000090000085089A0100F842812FB5C1
1896:107670000000E309120100C8020020B2000000006F
1897:10768000005C01EC0640003200008508370000F87D
1898:1076900042812FB400000000000000F872812F34F6
1899:1076A0003D0085081201002C82CD2EB20000161379
1900:1076B00000000080020000900000EE091201005C52
1901:1076C000088020B20000DE091201006002802CB2A6
1902:1076D0000000161300000080020000900000EB097B
1903:1076E000120100C8020020B200008508370000F82F
1904:1076F000D2812FB400000000000000F872812F3406
1905:107700003D0085081201002C82CD2EB20000161318
1906:1077100000000080020000900000EE091201005CF1
1907:10772000088020B20000E7091201006002802CB23C
1908:10773000000016130000008002000090000000000E
1909:107740000000007879613832000016131218024CDC
1910:10775000E2256EB200000000003402B808806E32EC
1911:107760000000000000A0015008006E320000000080
1912:107770000078016008006E320000F5099D110234A6
1913:1077800009006EB20000000000F0018808006E32AF
1914:107790000000121200A8010809006EF200000000AB
1915:1077A000D4F801E00600853200000000DA5C01E850
1916:1077B00006808B3200006411DD000030030038F2D7
1917:1077C0000000FB092329020409806EB23E00161353
1918:1077D0001200002C82CD2EB20800FF091D1C01E80A
1919:1077E000762081B90000FF098000008002812FB659
1920:1077F0002A0016131200002C82CD2EB200000000C9
1921:10780000000000F802812F34000054100000002C0A
1922:10781000F90100F40000030A9D010080074093B2C3
1923:107820000000000000300080078088320000000067
1924:10783000003800800700EE320000000000080080E1
1925:1078400007C0853200000000001000800740903221
1926:107850001000000000180080878D853700000000B0
1927:107860000020008007008632000000000028008011
1928:107870000700853200000A0A1201000009C021B287
1929:1078800018003600000000F8730A03F93000F60310
1930:107890001201005CA28D2CB20000161300000080C3
1931:1078A000020000900012161304010080A28D2FB078
1932:1078B0000000000000CC017809806E3200008508CD
1933:1078C000DCD101E806809792130085081201002C94
1934:1078D00082CD2EB20000161300000080020000903E
1935:1078E0000000E30F00000018094081F20000C70FFC
1936:1078F00000A8012009006EF20000850880010080C8
1937:10790000F2802FB60000190A120100C8020020B24E
1938:10791000000085088000008072812FB60000000002
1939:10792000000000F872812F343D0085081201002C00
1940:1079300082CD2EB2000016130000008002000090DD
1941:107940000000EE091201005C088020B20000150A58
1942:107950001201006002802CB20000161300000080AB
1943:107960000200009000008508350100F812812FB553
1944:1079700000000000000000D802800132000000007A
1945:10798000005401FC02C06E3200C0230A1801000C32
1946:10799000A8CD3EB220800000D10100080880363218
1947:1079A0003B00F3031201002C82CD2EB2000016130F
1948:1079B00000000080020000900000E2110098012801
1949:1079C00009006EF2000085080000008002000090AF
1950:1079D00000002F0A80010080A2812FB600002F0A2C
1951:1079E0008000008042812FB61F00000000000010C0
1952:1079F00009003632000080120000001409802FD2E6
1953:107A00003C00000000000010090036320000801227
1954:107A10000000001409803CD200002F0A085B01EC32
1955:107A200006FB6EBC00000000005A01EC06000032AC
1956:107A300000002F0A370000F842812FB43D000000FB
1957:107A4000D701002C82CD2E320000360A8001008042
1958:107A500092812FB60000161380000080C2812FB6DD
1959:107A600000003D0A08C901E806BB6EBC000000002A
1960:107A700000C801E806000032330016131200002C83
1961:107A800082CD2EB20000F31100000028098001F21F
1962:107A900000008508000000800200009000003D0A00
1963:107AA00080010080C2812FB6000016138000008084
1964:107AB00092812FB600003D0A08D101E806BB6EBCDA
1965:107AC0000000000000D001E8060000323300161369
1966:107AD0001200002C82CD2EB20000F311000000280D
1967:107AE00009C001F20000850800000080020000903B
1968:107AF0000000850880010080F2812FB618008508FB
1969:107B00000000002C82CD2E92000016130407018085
1970:107B100012C06EBC0000430A120000C8020020B26E
1971:107B20000000460A1201005C088020B20000161313
1972:107B30001200006002802CB200000000000000F87B
1973:107B40001F80FF3A0000F3031201002C72E02EB2F6
1974:107B500000001613000000800200009000000000EA
1975:107B60000000007879613832000016131218024CB8
1976:107B7000E2256EB200000000003402B808806E32C8
1977:107B800000000000D4A0015008006E320000000088
1978:107B9000DB79016008006E320000F711DD0000049F
1979:107BA000080000F21000000000180080878D853763
1980:107BB0000000000000F801E0060085320000500AD5
1981:107BC0001201000009C021B218003600000000F8C0
1982:107BD000730A03F9300016131200005CA28D2CB258
1983:107BE00000001613040701EC16C06EBC0000000074
1984:107BF00000B000E00600003200008508DA5C01E811
1985:107C000006808B92000085089F41018052206EBC47
1986:107C100000005F0A9F98018052206EBC00000000A7
1987:107C2000000000D80280013200000000005401FC76
1988:107C300002C06E3200C05D0A1801000CA8CD3EB231
1989:107C40002080850831000008088036B2000000005E
1990:107C5000000000F812812F343B0085081201002C2F
1991:107C600082CD2EB2000016130000008002000090AA
1992:107C70000000E2110098012809006EF2000085085A
1993:107C8000000000800200009000008508D54101E05E
1994:107C9000064081920000850804B0008002006EBC9E
1995:107CA000000000000090010008006E320000001388
1996:107CB0000078016008006EF2000085080000008076
1997:107CC0000200009000000000000C027809806E3273
1998:107CD0000000670A04D4018012C06EBC00000000DE
1999:107CE000000000781980973700000000009001E044
2000:107CF000E6256E3A0000001300000080020000F04C
2001:107D000000006B0A0000008002000090000085085F
2002:107D1000009001E00600809200000000009001E069
2003:107D20000600803200000009000000800200009080
2004:107D30000000161380000080F2802FB60000C70FED
2005:107D400000A8012009006EF20000140A80000080E3
2006:107D5000F2802FB60000850800000080020000902D
2007:107D600000000000000000D8028001320000000086
2008:107D70000000007809006E320200760A04B9008023
2009:107D800082CD6EBC0000780A800000807280FCB654
2010:107D900000007B0A000000FC020000920000780A4C
2011:107DA000800000808280FCB600007B0A000000FC9E
2012:107DB0000200009200001613040000800200F5BCCF
2013:107DC00000000000000000A842BD97300000000045
2014:107DD000541809FEF2C07C3000C0810A1801000C62
2015:107DE000A8CD3EB200000000000E01EC06000034F9
2016:107DF00000000000005401EC06C02F32208000007B
2017:107E000000000008088036320000F3031201002C45
2018:107E100082CD2EB2000016130000008002000090F8
2019:107E2000000000000062013808C06E3200080080C7
2020:107E300000000028090037320000EB1100000008A4
2021:107E4000E80100F400001613040701EC16C06EBC34
2022:107E500000000000000000A8A2002D370A0000006A
2023:107E6000000000780900363200000000001809E226
2024:107E7000070000320000870A04010078198097BCCF
2025:107E80000200920A04B9008082CD6EBC0000004856
2026:107E9000D6010078C9CD2C3200008B0AB6000080D4
2027:107EA000020000B00000161312000064028097B2B6
2028:107EB00000008D0A1208006402006EB200008E0AF3
2029:107EC0001218006402006EB200008F0A12100064E3
2030:107ED00002006EB200000000A65401EC06C02F3272
2031:107EE00000007D08000E01EC060000940020004C0C
2032:107EF000D6010078C9CD2C320000930AB60000806C
2033:107F0000020000B00000161312000064028097B255
2034:107F10000000950A1208006402006EB20000960A82
2035:107F20001230006402006EB20000970A123800643A
2036:107F300002006EB20000980A1240006402006EB2A5
2037:107F40000000990A1248006402006EB200009A0A0A
2038:107F50001210006402006EB200009B0A1218006446
2039:107F600002006EB200009C0A1220006402006EB291
2040:107F700000009D0A1228006402006EB2000000009A
2041:107F8000A65401EC06C02F3203007D08000E01EC60
2042:107F90000600369200000000000000FC02000132E2
2043:107FA0000000A30A0000001408803D9200000000B9
2044:107FB000000000FC020001320000A60A040000DC00
2045:107FC00053603DB318000000000000F8738A0339C5
2046:107FD000A20A3600000000C0020036920000000035
2047:107FE000005401FC02C06E3200000000000000D806
2048:107FF0000280013200C0AC0A1801000CA8CD3EB2CC
2049:108000002080000000000008088036321500EF03D1
2050:108010001201002C82CD2EB2000016130000008049
2051:10802000020000900000000000280000070000325D
2052:10803000000000000030000007C02C320010008259
2053:108040000038000007003732000016131200004805
2054:1080500002C080B200007D08CA010008E801009457
2055:10806000000016138001008062812FB62D001613C8
2056:108070001200002C82CD2EB20000B50A1D01008036
2057:10808000020000B000007D08000000F862812F951A
2058:10809000000016138000008002812FB6000000004F
2059:1080A000000000F802812F342A007D081201002C04
2060:1080B00082CD2EB200001613000000800200009056
2061:1080C0000000D7110000002C09C085D20000641107
2062:1080D00000000030030038F20000F303230100F831
2063:1080E00022812FB43E00F3031201002C82CD2EB268
2064:1080F0000000161300000080020000900000D7115D
2065:108100000000002C09C085D20000F303000000F835
2066:1081100022812F940000C50A380100D8028001B2E4
2067:108120000000C30A1E000080020000B00000C50A63
2068:108130001A010080020000B0000038120000006840
2069:108140001F80F6FA0000F303000000800200009098
2070:108150000000C90A12010060084023B2008200003A
2071:108160000000000808803632000038120000006469
2072:108170001F40F6FA0000F3030000008002000090A8
2073:108180000000161312000024080023B2000016138A
2074:108190001200002008C023B20000161312000018BD
2075:1081A000088023B200C0D40A1801000CA8CD3EB24A
2076:1081B0000000CC0A12000038028081B200001613C1
2077:1081C0001200003C020082B20000161312000030C0
2078:1081D000024082B20000161312000034020086B280
2079:1081E00020800000000000080880363200003812AD
2080:1081F0000000005C1FC0F5FA0000F30300000080DF
2081:108200000200009000000000450000D8020000328B
2082:108210000000000000000000074080320000000065
2083:10822000001000000740823200000000001800002B
2084:10823000070086320000161312000050F2C138B455
2085:1082400000007A0F003001E016206EFA0000DD0A0F
2086:108250003801002CF8010BB40000DD0A020D028089
2087:10826000A25B80BC000000000000002CC8C182346A
2088:108270000000DF0A8000008042812FB60000B40FAA
2089:1082800000000080020000F0000016139FA801E02B
2090:1082900016206EBC0000D40F00000080020000F029
2091:1082A0000000E50A270100D8028001B200000000AA
2092:1082B000C700002CE8C08234000000000000000865
2093:1082C000D801003400000000D54001E006008732EC
2094:1082D00008004B12001801E8762081F900006411B3
2095:1082E00000000030030038F20000E90A2319000002
2096:1082F000078081B23E0016131200002C82CD2EB2F0
2097:108300000000EB0A1D210000070082B20000EE0A07
2098:10831000000000F862812F950000EE0A80000080C6
2099:1083200002812FB62A0016131200002C82CD2EB225
2100:1083300000000000000000F802812F340000161336
2101:1083400080000080A2802FB6000054100000002C96
2102:10835000F90100F4000016130401008062802DBCB6
2103:108360001000F40A2C30000017E02CB90000F60AC7
2104:108370008E39000007C082B20000F60A0008000033
2105:10838000070087920000F60A8E390000B7C182B458
2106:108390000000000000080000070087320000F80A13
2107:1083A000120100E802C021B218003600000000F8F7
2108:1083B000730A03F90000F60A9F010014184081BCFB
2109:1083C0000000FE0A0400008002C085BC00001613F5
2110:1083D0001200006802C585B00000000000000078AF
2111:1083E00009C58530000016130201008082BA97BCCF
2112:1083F000000016130601008092BA97BC0000161305
2113:108400001200004802C080B2000016130401008070
2114:10841000D28180B50000F603CA010008E88180948B
2115:10842000000016138001008082812FB60000040B2B
2116:108430001E000080020000B00000060B1A01008040
2117:10844000020000B000003812000000681F80F6FA39
2118:108450000000F303000000800200009000001613EB
2119:108460009FA801E016206EBC00007A0F00000014E7
2120:10847000080000F200000A0B8000008042812FB645
2121:108480000000B40F00000080020000F00000D40FD4
2122:1084900000000080020000F000007F08040000805F
2123:1084A000024081BC00000E0B120100E802C021B2A4
2124:1084B00018003600000000F8730A03F900000000FD
2125:1084C0000000007809C58530000016130201008005
2126:1084D00082BA97BC000016130601008092BA97BCBE
2127:1084E00000007F081201006802C585B00000161365
2128:1084F000000000800200009000007D0880000080E5
2129:10850000F2C185B60000170B1C41028006C085B27F
2130:10851000000000000000006802C585300000000077
2131:10852000000000701F00F73A00007D08000000F80E
2132:1085300022812F9400007D0880000080F2C185B662
2133:108540000000D7110000002C09C085D20000F30301
2134:10855000D20100941E40E99A00001613042000186E
2135:1085600008006EB20000161380000080F2812FB662
2136:1085700000008C1200000080020000F000001613C2
2137:1085800004010080028080BC0000161304510180A9
2138:1085900002806EBC000016130421018002006EBC34
2139:1085A00000000000003C00E8064081320000250B7E
2140:1085B0001F000080020000B00000220B9E400278E5
2141:1085C000094068B20000161300000080020000900D
2142:1085D0000000290B8001008082812FB600007F08F7
2143:1085E0002A3101E0060000B218000000CA0000F8BD
2144:1085F000730A03397F083600000000C0020036927B
2145:1086000000007F0880010080A2802FB618000000C3
2146:10861000CA0000F8730A03397F083600000000C062
2147:10862000020036920D002F0B000000580800369211
2148:1086300000002F0B00000058080000921B000000F3
2149:1086400000000058080036320000161304200018FD
2150:1086500008006EB20000161380000080F2812FB671
2151:1086600000008C1200000080020000F000000000FA
2152:108670000030002808006E3200000000545401FC55
2153:1086800002C06E320000940B380000A4088082B251
2154:108690000000940B0428010408006EB200001613B9
2155:1086A0009F500104A85B80BC00000000005001E85E
2156:1086B0000600003200005E0B0801007819A082BCA1
2157:1086C00000000000002801E0A660803C00003C0B98
2158:1086D0002A010014080000B200000000CA000014C3
2159:1086E0001840813A0000C70F00A80120A9206EFAA7
2160:1086F0000000161306010280821B92BC00000000DD
2161:10870000002001E0A6206E3C00000000003000E0E8
2162:10871000060000320000000000A801E006009232CE
2163:1087200000000000000000D80280013200C0500BA1
2164:108730001801000CA8CD3EB20000470B04000080D9
2165:10874000024081BC0000000000000014080000325C
2166:1087500018000000000000F8730A0339410B3600CE
2167:10876000000000C0020036922080000000000028B7
2168:108770000980363200008111000000D8020000D2CA
2169:1087800000004B0B04000080028092BC18003600F1
2170:10879000000000F8730A03F900000000000000D890
2171:1087A0000280013200C0500B1801000CA8CD3EB26F
2172:1087B00018000000000000F8738A03394B0B00001A
2173:1087C000000000C0020036320000360000000080C9
2174:1087D0000200009000000000DE000008E801003404
2175:1087E00000000000DF00013808C06E320000000009
2176:1087F0000010000007000032000000000018000018
2177:1088000007808232000000000030000007C02C32D8
2178:108810000020008000380000070037320000000010
2179:10882000CA3D000C078083320000000000000014E5
2180:108830001840813A00005C0B040201EC16C06EBCCB
2181:1088400000000000C00100141840813A0000000040
2182:10885000000000F892802F3400C016131200004070
2183:10886000A28D39B20000D70B1201004802C080B2BD
2184:1088700000001613000000800200009000000000BD
2185:10888000000000280880973200000000000000A4CB
2186:1088900008808232000000000010006C18206E3A40
2187:1088A000000000000018004C08006E320000C70FE6
2188:1088B00000A8012019206EFA00001613060102809C
2189:1088C000821B92BC00000000002001E016206E3CDC
2190:1088D0000000000000A801E0060092320000690BD1
2191:1088E000003801E006408092000000000060006C4B
2192:1088F00018206E3A000000000068004C08006E323C
2193:1089000000006B0B9F010004686080BC0000740BCA
2194:10891000000000181820009C000016138001008041
2195:10892000A2802FB600006E0B120100E802C021B237
2196:1089300018003600000000F8730A03F90000000078
2197:10894000CA70001808006E320000670B0201008038
2198:10895000626080BC000016139F000014184081BCA8
2199:1089600000000000CA0100F802802F3500A0690B4A
2200:1089700012010040A28D39B20000161300000080E1
2201:10898000020000900000790B80000080A2802FB6CA
2202:1089900000007C0B04000080A2A081BC0000161324
2203:1089A0009F000014184081BC00000000CA0100F8BC
2204:1089B00002802F3500A0161312000040A28D39B29C
2205:1089C00000000000000000F8A2802F3500007C0BA2
2206:1089D000120100E802C021B218003600000000F8C1
2207:1089E000730A03F900000000002801E006000032CD
2208:1089F00000000000003C00E806408132000000005A
2209:108A0000003000E00680823200000000002000E01C
2210:108A10000680813200000000001000E006C08632AF
2211:108A200000000000001800E006C0843200001613A9
2212:108A30000400008032E186B20000860B1F010008AE
2213:108A4000090000B20000970B0420018002006EBCF8
2214:108A500000001613000000800200009010000000CB
2215:108A600000000010790B1638080000000000000C10
2216:108A7000790B16380000000000000004A9002D3713
2217:108A80000004010000000004C94D903A02000000FB
2218:108A9000000000A8820D913700000000000000A82F
2219:108AA00012A42A3A00008F0B80400280E2017CB6BB
2220:108AB0000000161304400278B93F7CB000000000AB
2221:108AC00000000008E9A5903A0000910B9F010010FA
2222:108AD000190091BC9F000000000000100900363210
2223:108AE00000008A0B0401008042E490BC00001613D1
2224:108AF00004210180829B90BC0000970B0000008045
2225:108B000002000090000000000010006C08006E32AF
2226:108B1000000000000018004C08006E320000161320
2227:108B20000400008032E186B200003210510000D80B
2228:108B3000020000F200009A0B0050013CA85B809CF0
2229:108B400000007F08003001E00600009200009F0B4B
2230:108B50003E510100A81B80BA00000000DE0000F8B2
2231:108B6000F2812F3400000000005801EC06C0EE3204
2232:108B700000009F0B80010080328087B6000000005B
2233:108B8000000000F8E2802F340000E310603001E0C4
2234:108B9000060000F20000E90B0000008002000090D7
2235:108BA0000000000000000014080000320000A90BC3
2236:108BB000040201EC16C06EBC00000000C9010014E4
2237:108BC0001840813A00000000C001013808C06E3230
2238:108BD00000000000DF0000A4A8608A3C000016131B
2239:108BE0000F000080020000B000C0AD0B1201004079
2240:108BF000A28D39B200001613000000800200009020
2241:108C000000000000003000E006000032000000001C
2242:108C1000DF0000A4A8608A3C000016130F0000804B
2243:108C2000020000B0000000000000013808C06E32F1
2244:108C300000000000DEA8012099226E3A0000161301
2245:108C400006010280821B92BC000016139F2001E0E7
2246:108C500096226EBC0000B20B80000080F2802FB61E
2247:108C60000000C70F00000080020000F00000B90BF8
2248:108C70001F5001E8060000B20000B50B04000080A0
2249:108C800002C083BC0000B90B005001E8F660809C74
2250:108C90000800000000400278399AFE3800001613E0
2251:108CA0000201008082BA97BC000016130601008002
2252:108CB00092BA97BC0800000000400268129AFE3881
2253:108CC0000000BE0B2AA901E0060092B2180036008F
2254:108CD000CA0000F8730A03F91D00BE0B04000080EF
2255:108CE00002A417B80000BA0B04000014184081BC9D
2256:108CF00000001613000000800200009000006411C4
2257:108D000000000030030038F20000C10B8001008039
2258:108D100032802FB63E0016131200002C82CD2EB2E8
2259:108D200000000000000000D80280013200C0D20B19
2260:108D30001801000CA8CD3EB220800000C30000281E
2261:108D40000980363200008111000000D8020000D2F4
2262:108D50000000C70B04000080028092BC00000000ED
2263:108D6000000000141840813A0000CC0B0400008081
2264:108D7000024081BC18003600000000F8730A03F9B5
2265:108D80000000D00B04000014184081BC0000C80B88
2266:108D90001200000009C021B20000C90B00000080D1
2267:108DA0000200009018003600000000F8738A03F9F2
2268:108DB0000000641100000030030038F20000D00B06
2269:108DC0008001008032802FB63E0016131200002C66
2270:108DD00082CD2EB200000000C30000D80280013214
2271:108DE00000C0CC0B1800000CA8CD3EB2000016133A
2272:108DF0008000008072802FB60020008000000028D4
2273:108E0000090037320000661200000008E80100F493
2274:108E1000000016131200004802C080B200000000DB
2275:108E2000000000141840813A0000161380010080F1
2276:108E3000A2802FB618003600CA0000F8730A03F9A2
2277:108E40001D0016130400008002A417B800001613BA
2278:108E50009F000014184081BC0000D80B0B0100805B
2279:108E6000020000B000004B1200000080020000F081
2280:108E70000000E00B8001008092802FB62B00E60BF3
2281:108E80001201002C82CD2EB20000161300000080CB
2282:108E9000020000900000E30B1D010080020000B002
2283:108EA0000000E60B8001008062812FB600001613DF
2284:108EB00000000080020000900000E60B80000080AF
2285:108EC00002812FB62A0016131200002C82CD2EB27A
2286:108ED00000000000000000F802812F3400007D082F
2287:108EE00004000080028085BC00005D12000000804C
2288:108EF000020000F0000069060000001C0880859256
2289:108F000000007F0880010080A2802FB600001613A9
2290:108F10000000008002000090000016138000008016
2291:108F2000E2802FB60000EE0B8001008082812FB618
2292:108F3000000016130431018002006EBC00001613FD
2293:108F400004310080829B82BC000016130201008065
2294:108F500012A082BC00000000CE0100D802800132C5
2295:108F600000C0F50B1801000CA8CD3EB22080000017
2296:108F70000000000808803632000038120000005C53
2297:108F80001FC0F5FA0000F30300000080020000900B
2298:108F90000000161380000080A2802FB60000161378
2299:108FA0008000008082802FB600001613040000802D
2300:108FB000028082BC00000000600000D80200003285
2301:108FC0000000FD0B3F00003C084080B20000FD0B9C
2302:108FD00080010080E2812FB600000000DE0000F872
2303:108FE000F2812F3400000000005801EC06C0EE3280
2304:108FF000000000004D00000067E0833E000000001C
2305:10900000000800000700803200000000001000008F
2306:1090100007C08632000000000018000007C084323C
2307:109020000000490C04000028D8A082BC00001613E0
2308:1090300009010080020000B00000000000000018DC
2309:10904000D8A0813C00001F0C0400003CD8E083BC89
2310:109050000000161304010080028081BC0000090C8E
2311:109060000400008072802DBC000016131200005016
2312:1090700002C038B200001D0C510000D812802D9A99
2313:109080000000161312000050F2C138B40000160C94
2314:10909000280000D8020000B20000130C80010080FC
2315:1090A000F2C185B600000F0C1F400284E60100B437
2316:1090B0000000130C1D0100F822812FB40000130CD6
2317:1090C000000000F862812F950000110C1D01008046
2318:1090D000020000B000000000000000F862812F359F
2319:1090E00000000000004002800240683200001613B9
2320:1090F0001F010080020000B00000150C343000E0B9
2321:1091000016206EBC0000B40F00000080020000F0CA
2322:109110000000D50FDA5B01EC0640EDF218003600D6
2323:10912000000000F8730A03F900001B0C0400008023
2324:1091300072802DBC0000161380010080A2802FB623
2325:109140000000160C670000F8A2802FB5000016136F
2326:10915000120000E802C021B20000161304010080D2
2327:1091600072802DBC00000000510000D802000032C7
2328:1091700000003E1000000000D82080FA0000FE0B26
2329:109180004D00000067E0839E00001613120000509F
2330:10919000F2C138B400002C0C28000080084000B256
2331:1091A0000000290C80010080F2C185B60000250C6A
2332:1091B0001F400284E60100B40000290C1D0100F8E4
2333:1091C00022812FB40000290C000000F862812F9545
2334:1091D0000000270C1D010080020000B0000000000C
2335:1091E000000000F862812F3500000000004002807E
2336:1091F00002406832000016131F010080020000B018
2337:1092000000002B0C343000E016206EBC0000B40FC0
2338:1092100000000080020000F00000D50FDA5B01ECD6
2339:109220000640EDF200004F0C80000080E2802FB677
2340:109230000000300C042100E0068081B200003E10E6
2341:1092400000000034080000F200000000002000E0F0
2342:109250000680813200000000003C00E806408132B8
2343:109260000000360C2A1100E0D6E086BA180036005D
2344:10927000CA0000F8730A03F91D00360C04010080CF
2345:1092800002A417B80000320C9F010080180088BCAF
2346:1092900000001613000000800200009000004B1236
2347:1092A00000000080020000F00000641100000030A7
2348:1092B000030038F208003A0C231901E8762081B93E
2349:1092C0003E0016131200002C82CD2EB200003E0C80
2350:1092D0001D1800E006C084B200003E0C8000008033
2351:1092E00002812FB62A0016131200002C82CD2EB256
2352:1092F00000000000000000F802812F34000054102C
2353:109300000000002CF90100F40000430C0400008070
2354:10931000020088BC0000420C1201000009C021B20A
2355:1093200018003600000000F8730A03F91D00161338
2356:109330000401008002A417B8000016130401008085
2357:10934000028080BC000000000000007809C5853064
2358:10935000000016130201008082BA97BC00001613A9
2359:109360000601008092BA97BC0000F6031201006863
2360:1093700002C585B0000016130000008002000090B6
2361:10938000000000000030007819206E3C0000161329
2362:1093900004010080E2A582BC00001613800000805A
2363:1093A000A2802FB60000161304010080020088BCC2
2364:1093B0000000161304010080028080BC0000161318
2365:1093C00012000050F2C138B400000000C0010138A2
2366:1093D00008C06E320000530C040201EC16C06EBCD3
2367:1093E00000C0161312000040A28D39B20000540CC8
2368:1093F000C90100140800009200000000453000E0A0
2369:10940000060000320000600C28000008E80100B4EB
2370:1094100000005D0C80010080F2C185B60000590C8F
2371:109420001F400284E60100B400005D0C1D0100F83D
2372:1094300022812FB400005D0C000000F862812F959E
2373:1094400000005B0C1D010080020000B00000000065
2374:10945000000000F862812F3500000000004002800B
2375:1094600002406832000016131F010080020000B0A5
2376:1094700000005F0C8000008042812FB60000B40F16
2377:1094800000000080020000F00000D50FDA5B01EC64
2378:109490000640EDF200200080DF000028090037328E
2379:1094A00000006612DE0000D8028001F208004B12B4
2380:1094B000001801E8762081F90000641100000030F6
2381:1094C000030038F20000660C8001008032802FB665
2382:1094D0003E0016131200002C82CD2EB200006B0C41
2383:1094E000290801E406C02DB20000700C1D000080A8
2384:1094F000020000B00000700C8000008002812FB6D6
2385:109500002A0016131200002C82CD2EB20000700C1F
2386:10951000000000F802812F9400006D0C1201000081
2387:1095200009C021B218003600000000F8730A03F9E0
2388:109530001D006F0C0401008002A417B800006C0C21
2389:10954000000000141840819C2B0016131200002C00
2390:1095500082CD2EB2000055100000002CF90100F45D
2391:109560000000730C04010080024081BC180036002A
2392:10957000000000F8730A03F90000161312000048F7
2393:1095800002C080B2000000000000007809C58530EC
2394:10959000000016130201008082BA97BC0000161367
2395:1095A0000601008092BA97BC0000F6031201006821
2396:1095B00002C585B000001613000000800200009074
2397:1095C000000016138000008082802FB60000161362
2398:1095D00004310080829B82BC0000161302000080D0
2399:1095E00012A082BC0000161304000080028082BC1E
2400:1095F0002500000000000010090036321000801223
2401:1096000000000014A96080D900000000000000D80C
2402:109610000280013200C0840C1801000CA8CD3EB2BB
2403:109620002080000000000008088036320000381258
2404:109630000000005C1FC0F5FA0000F303000000808A
2405:109640000200009000C00000000000F8A28D2F3141
2406:1096500000000000000000D80200003200000000FE
2407:1096600000000000078081320000000000080000B8
2408:1096700007008032000000000010000007C08632A2
2409:10968000000000000018000007C08432000016131C
2410:1096900012000050F2C138B40000900C800000802D
2411:1096A00082802FB60000000000000068A860803CA7
2412:1096B000000000000000003C084080320000D40F91
2413:1096C00000000004088082F20000910C12010000EA
2414:1096D00009C021B218003600000000F8730A03F92F
2415:1096E0001D00940C0400008002A417B8000016139B
2416:1096F00080010080A2802FB60000900C000000F8CE
2417:10970000A2802F9500000000000000006820803A31
2418:1097100000009A0C0400002868A082BC0000161308
2419:109720000C000080020000B00000161380000080D2
2420:10973000E2802FB600003E1000000080020000F022
2421:109740000000860C000000D80200009200001613F2
2422:1097500080000080A2802FB600000000000000D82A
2423:10976000028001320020008000000028090037320A
2424:109770000000621200000008E80100F41800360042
2425:10978000CA0000F8730A03F90000A50C040201ECFA
2426:1097900016C06EBC00000000C00100F892802F349B
2427:1097A00000C0A30C12010040A28D39B200001613B4
2428:1097B00000000080020000902B00A50C1201002C7C
2429:1097C00082CD2EB20000161300000080020000902F
2430:1097D000000016131F010080020000B00000A80C5A
2431:1097E0008001008082812FB60000161304310180B1
2432:1097F00002006EBC00000000000000D802800132B0
2433:109800000000AB0C12010060084023B20082B40CCF
2434:1098100000000008A88D809200001613120000249A
2435:10982000080023B2000016131200002008C023B263
2436:109830000000161312000018088023B200C0C90CE3
2437:109840001801000CA8CD3EB20000AE0C120000388A
2438:10985000028081B2000016131200003C020082B2A6
2439:109860000000161312000030024082B200001613EE
2440:1098700012000034020086B22080000000000008C0
2441:10988000A88D80320000BC0C80010080F2C185B63A
2442:109890000000B80C1F400284E60100B40000BC0CBC
2443:1098A0001D0100F822812FB40000BC0C000000F85C
2444:1098B00062812F950000BA0C1D010080020000B0EB
2445:1098C00000000000000000F862812F350000000059
2446:1098D0000040028002406832000016131F01008021
2447:1098E000020000B032000000000000100900363213
2448:1098F0000000801200000014090080D2000016133E
2449:109900001200006802C585B0000000000000007869
2450:1099100009C58530000016130201008082BA97BC89
2451:10992000000016130601008092BA97BC0000C40C18
2452:109930003400005C1FC0F5BA0000B40F00000080C6
2453:10994000020000F00000C60C8000008092802FB65C
2454:1099500000007F08003000E00600009200007F0851
2455:10996000120100E802C021B218000000000000F857
2456:10997000730A03397F083600000000C002003692E7
2457:1099800000000000450000D8024000320000000046
2458:10999000410000000780863200000000000800003F
2459:1099A00007008032000000000010000007408232F3
2460:1099B00000000000001800000700863200001613A7
2461:1099C00012000050F2C138B400000000000000781E
2462:1099D000388087350000161380000080728087B6BB
2463:1099E0000000000000A001E016206E3A0000000018
2464:1099F0000000007809C585300000000000A801E0E3
2465:109A000016206E3C08000000D2010078E9E5833999
2466:109A1000180016131F410284E6A197B90000D90C63
2467:109A2000365101E816E083BC0000D90C1D0100800E
2468:109A3000020000B000000000000000F862812F3535
2469:109A4000000016139F2001E0064080B20000DC0CED
2470:109A50008001008082812FB600000000003001E00C
2471:109A60000640803200000000000000D80280013271
2472:109A70000000DF0C34180000078081B20000B40F32
2473:109A800000000080020000F010004B1200300000C7
2474:109A900017E02CF900100080003800000700373272
2475:109AA0000000641100000030030038F20000E40CF4
2476:109AB0008001008032802FB63E0016131200002C69
2477:109AC00082CD2EB20000E90C29210000070082B2ED
2478:109AD0000000E70C1201000009C021B21800360096
2479:109AE000000000F8730A03F91D00EF0C0401008068
2480:109AF00002A417B80000E50C000000140800009252
2481:109B00000000EC0C1D3100E0060000B20000EF0C7C
2482:109B10008001008062812FB60000161300000080D3
2483:109B2000020000900000EF0C8000008002812FB640
2484:109B30002A0016131200002C82CD2EB20000000065
2485:109B4000000000F802812F3400005D120000002C9C
2486:109B5000F90100F400005410000000F8A2802FF476
2487:109B60000000F40C04000080024081BC0000F40CF2
2488:109B7000120100E802C021B218003600000000F80F
2489:109B8000730A03F90000F6031201004802C080B214
2490:109B90000000161300000080020000900000FE0C80
2491:109BA00080010080F2C185B60000FA0C1F400284DB
2492:109BB000E60100B40000FE0C1D0100F822812FB464
2493:109BC0000000FE0C000000F862812F950000FC0CE4
2494:109BD0001D010080020000B000000000000000F83D
2495:109BE00062812F3500000000004002800240683290
2496:109BF000000016131F010080020000B00000000DDD
2497:109C000004000080024086BC0000AB1200900108F6
2498:109C100009006EF20000DF1200000080020000F078
2499:109C20000000070D330100D8028001B20000070DCB
2500:109C300080010080B20172B60000070D9FF0018024
2501:109C400082DB87BC0000070D9FF8018022216EBCDB
2502:109C50000000000000E801E00600EE320000000015
2503:109C600000F001E006C0873208000000001801E89B
2504:109C70007620813900000D0D80010080D2802FB642
2505:109C800000000D0D04B0008002006EBC000000005A
2506:109C9000CD0000F872812F343D000D0D1201002C13
2507:109CA00082CD2EB20000161300000080020000904A
2508:109CB00000001C0D270901E406C02DB200C0140DE0
2509:109CC0001801000CA8CD3EB2000000000000007892
2510:109CD00009C58530000016130201008082BA97BCC6
2511:109CE000000016130601008092BA97BC00001613FC
2512:109CF0001200006802C585B020807F0800000008BF
2513:109D0000088036922C000000000000100900363256
2514:109D1000000080120098011409006ED200000000BB
2515:109D2000004001E00640883200000000D508000035
2516:109D300007408832000000000030000007C02C32CD
2517:109D400000400080CA3900000700373200001613B7
2518:109D50001200004802C080B200600000000000084D
2519:109D6000088036320000200D1D000080020000B087
2520:109D70000000200D8000008002812FB62A001613FB
2521:109D80001200002C82CD2EB200000000000000F86E
2522:109D900002812F34000055100000002CF90100F45E
2523:109DA000000000000000007809C58530000016138F
2524:109DB0000201008082BA97BC0000161306010080E1
2525:109DC00092BA97BC0000F6031201006802C585B084
2526:109DD0000000161300000080020000900000000048
2527:109DE000545401FC02C06E3200000000000000D894
2528:109DF0000280013200C02C0D1801000CA8CD3EB22B
2529:109E00002080000000000008088036320000F303C4
2530:109E10001201002C72E02EB2000016130000008028
2531:109E200002000090000016138001008082812FB68E
2532:109E300000008C120020001808006EF200001613BB
2533:109E40001F30002808006EB200000000000000A4CF
2534:109E500008808232000000000010006C08006E32A2
2535:109E6000000000000018004C08006E3200001613BD
2536:109E70000400008032E186B2000032100000008051
2537:109E8000020000F00000360D0050013CA85B809CF1
2538:109E90000000161300000080020000900000000087
2539:109EA00000500100A81B803A000000000000008064
2540:109EB0000800003200000000510000D8020000320B
2541:109EC000000000004D00000067E0833E000000003D
2542:109ED00000080000070080320000000000100000B1
2543:109EE00007C08632000000000018000007C084325E
2544:109EF00000006D0D04000028D8A082BC00001613DD
2545:109F000009010080020000B00000000000000018FD
2546:109F1000D8A0813C0000540D0400003CD8E083BC74
2547:109F20000000161304010080028081BC0000450D72
2548:109F30000400008072802DBC000016131200005037
2549:109F400002C038B200004D0D510000D812802D9A89
2550:109F50000000161312000050F2C138B41800360089
2551:109F6000000000F8730A03F900004B0D04000080A4
2552:109F700072802DBC0000161380010080A2802FB6D5
2553:109F80000000460D670000F8A2802FB500001613F0
2554:109F9000120000E802C021B2000016130401008084
2555:109FA00072802DBC00000000510000D80200003279
2556:109FB0000000520D2A010000D82080BA0000510D87
2557:109FC0001201000009C021B218003600000000F89C
2558:109FD000730A03F900000000000000D80240843238
2559:109FE0001D0016130400008002A417B800004610DC
2560:109FF0000060006C08006EF200003A0D4D00000099
2561:10A0000067E0839E0000161312000050F2C138B4BE
2562:10A0100018003600000000F8730A03F91D005B0DFC
2563:10A020000400008002A417B800001613800100800D
2564:10A03000A2802FB60000550D670000F8A2802FB552
2565:10A04000000016131200000009C021B21D001613F3
2566:10A050000401008002A417B8080000000040027844
2567:10A06000399AFE38000016130201008082BA97BCAC
2568:10A07000000016130601008092BA97BC0800161360
2569:10A0800012400268129AFEB8000016130B000080FE
2570:10A09000020000B00000641100000030030038F23C
2571:10A0A000000016131F00006CD8E086BA00003210C2
2572:10A0B000510000D8020000F20000650D0000003CD5
2573:10A0C00008408092000016130000008002000090FB
2574:10A0D0000000390D04010080028081BC00006B0D7E
2575:10A0E00080010080A2802FB600006A0D12010000DE
2576:10A0F00009C021B218003600000000F8730A03F905
2577:10A1000000000000000000D8024084321D00161339
2578:10A110000400008002A417B8000046100060006C24
2579:10A1200008006EF200003A0D4D00000067E0839ECB
2580:10A130000000161380000080A2802FB600000000EF
2581:10A14000C001013808C06E3200000000453000E058
2582:10A15000060000320000161312000050F2C138B49D
2583:10A160000000750D040201EC16C06EBC000000007A
2584:10A17000C90100141840813A00C0750D1201004059
2585:10A18000A28D39B20000161300000080020000907A
2586:10A1900000C00000000000F8A28D2F310000000078
2587:10A1A00000A8012099226E3A0000161306010280D1
2588:10A1B000821B92BC000016139F2001E096226EBC09
2589:10A1C00000007B0D80000080F2802FB60000C70FDA
2590:10A1D00000000080020000F000007F0D0400003C41
2591:10A1E000D8E083BC00007E0D9F3101E096226EBC5A
2592:10A1F00000000000003001E0060000320000860D83
2593:10A20000005001E8F660809C0800000000400278E1
2594:10A21000399AFE38000016130201008082BA97BCFA
2595:10A22000000016130601008092BA97BC08000000D7
2596:10A2300000400268129AFE380000850D9F3101E04F
2597:10A2400096226EBC00000000003001E006000032E3
2598:10A2500000000000005001E806000032000000008D
2599:10A2600000A801E00600923218003600000000F855
2600:10A27000730A03F91D008B0D0400008002A417B8B7
2601:10A280000000870D04000014184081BC0000161364
2602:10A290000000008002000090000016138000008083
2603:10A2A00072802FB600000000000000D8028001324A
2604:10A2B00000200080000000280900373200006612EC
2605:10A2C00000000008E80100F4000016131200004826
2606:10A2D00002C080B20000641100000030030038F2B8
2607:10A2E0000000930D23010014184081BA3E0016139C
2608:10A2F0001200002C82CD2EB20000161380010080C7
2609:10A30000A2802FB618003600CA0000F8730A03F9BD
2610:10A310001D0016130400008002A417B800001613D5
2611:10A320009F000014184081BC0000940D0B010080B8
2612:10A33000020000B000004B1200000080020000F09C
2613:10A3400000009C0D2931010C09006EB22B007D0824
2614:10A350001201002C82CD2EB20000161300000080E6
2615:10A36000020000900000BE0F000C020009806EF297
2616:10A370000000A50D000000800200009000005D12AA
2617:10A3800000000080020000F0000000000000001C3F
2618:10A39000080090320000A40D04000028098080B25B
2619:10A3A00000008111000000D8020000D20000A40DBE
2620:10A3B00004000080028092BC18003600000000F803
2621:10A3C000730A03F900006806000000080800009204
2622:10A3D0000000A80D1D010080020000B000007D08F3
2623:10A3E0008001008062812FB60000161300000080FB
2624:10A3F0000200009000007D088000008002812FB6DE
2625:10A400002A0016131200002C82CD2EB200007D0807
2626:10A41000000000F802812F940000161380010080D4
2627:10A4200082812FB60000161304000018094081B283
2628:10A430000000E30F00000080020000F00000C70FE2
2629:10A4400000A8012009006EF2000000000030010C9D
2630:10A4500009006E320000BE0F000C020009806EF28F
2631:10A4600000007F08000000800200009000004B12F6
2632:10A4700000000080020000F000005D12000000807B
2633:10A48000020000F0000068060000001C0800909226
2634:10A4900000000000545401FC02C06E32000016138C
2635:10A4A0008001008082812FB6000016131F000080FB
2636:10A4B000020000B010000000000000A8780B163861
2637:10A4C00008000000000000AC780B16380000000007
2638:10A4D000000000B0A8002D3700040100000000B00B
2639:10A4E000C80D8B3A00000000005001B408806E32A5
2640:10A4F0000000C70D0431019008006EB20200000098
2641:10A50000000000C8828D8A3700000000000000C8EB
2642:10A51000C2A22C3A1800C50D86410278880D78B683
2643:10A520000000161304000080A2E28ABC000016138B
2644:10A5300004410280B23F78B00000BE0D9F0100A828
2645:10A5400018808ABC9F00BE0D000000A8080036924B
2646:10A550000000000000400204B83F78300000DA0D2F
2647:10A5600000000004D862809C00001613020C0280D8
2648:10A57000A21B89BC000016138000008082802FB6C9
2649:10A5800002000000000000C8828D8A370000000031
2650:10A59000000000C8C2A22C3A1800D00D86410278F3
2651:10A5A000880D78B60000161304000080A2E28ABC71
2652:10A5B0000000161304410280B23F78B00000C90DBC
2653:10A5C0009F0100A818808ABC9F00C90D000000A848
2654:10A5D000080036920000D30D28400204B83F78B03E
2655:10A5E00000000000C8010004D862803C000016137F
2656:10A5F0009F000080024080B20000D70D0201009051
2657:10A60000182089BC00000000000000B408000032DF
2658:10A610000000C90D9F0100A818808ABC9F00C90DC9
2659:10A62000000000A8080036920000DA0D0400009037
2660:10A63000182089BA000016139F000004486280BCED
2661:10A6400000001613900000B448628BBA0300161382
2662:10A6500004400200081EFFB80000E20D00000000E8
2663:10A66000D822809A0000090E04000080A2E28ABC71
2664:10A6700002000000000000C8828D8A370000000040
2665:10A68000000000C8C2A22C3A1800070E86400278CB
2666:10A69000880D78B60000161304400204B83F78B065
2667:10A6A0000300161304400200081EFFB83800000023
2668:10A6B0000000001009003632000080120000001473
2669:10A6C000090080D20000E80D12010060084023B2AA
2670:10A6D0000082000000000008088036320000F3030A
2671:10A6E0001201002C72E02EB2000016130000008050
2672:10A6F000020000900000161312000024080023B28C
2673:10A70000000016131200002008C023B20000161328
2674:10A7100012000018088023B200000000000000D8DA
2675:10A720000280013200C0F20D1801000CA8CD3EB22B
2676:10A730000000EC0D12000038028081B200001613F8
2677:10A740001200003C020082B200001613120000301A
2678:10A75000024082B20000161312000034020086B2DA
2679:10A760002080E60D000000080880369200000000FE
2680:10A77000000000D802000032000000000038020093
2681:10A78000B81B803A00000000643001E016206E3AE9
2682:10A7900000000000000000000740803200000000C0
2683:10A7A00000080000070080320000000000100000D8
2684:10A7B00007408232000000000018000007008632C7
2685:10A7C0000000161312000050F2C138B4000000005F
2686:10A7D000000000D8028001320000000000180000D4
2687:10A7E0000780813200000000002000000700823254
2688:10A7F000100000000030000017E02C3900000000BD
2689:10A8000000380000F7010B340000010E80010080C9
2690:10A81000328087B60000000000380000B7017034B5
2691:10A820000000000000000008E80100340000130EE2
2692:10A83000020C0280A21B89BC18003600000000F840
2693:10A84000730A03F90000641100000030030038F2BD
2694:10A85000000016131200004802C080B21800360033
2695:10A86000000000F8730A03F90000DC0D9F0100A846
2696:10A8700018808ABC9F00DC0D000000A808003692FA
2697:10A8800028000C0E0401008082CD81BC0000000075
2698:10A890000020017809006E320000161304010080C8
2699:10A8A00042A297BC00000E0E8001008032802FB6BD
2700:10A8B0003E0016131200002C82CD2EB20000100EA6
2701:10A8C0001D010080020000B000007D08000000F8BB
2702:10A8D00062812F9500007D088000008002812FB6E4
2703:10A8E0002A0016131200002C82CD2EB200007D0823
2704:10A8F000000000F802812F940000000000380000E2
2705:10A90000C70170340000641100000030030038F209
2706:10A910000800170E231901E8762081B93E001613AE
2707:10A920001200002C82CD2EB20000190E1D010080F5
2708:10A93000020000B000001C0E000000F862812F959C
2709:10A9400000001C0E8000008002812FB62A00161322
2710:10A950001200002C82CD2EB200000000000000F892
2711:10A9600002812F340000161380000080A2802FB6D1
2712:10A97000000054100000002CF90100F40000200E2B
2713:10A98000120100E802C021B218003600000000F8F1
2714:10A99000730A03F9000016131200004802C080B2C7
2715:10A9A0000000F603000000F8A2802F9400000000D1
2716:10A9B000000000D8028001320000000000300028B2
2717:10A9C00008006E3200000000545401FC02C06E32D8
2718:10A9D00000C02E0E1801000CA8CD3EB22080000051
2719:10A9E000000000280980363200008111000000D8E4
2720:10A9F000020000D200002B0E04000080028092BCF6
2721:10AA000018000000000000F8730A03392C0E36000D
2722:10AA1000000000C00200369218003600000000F866
2723:10AA2000738A03F900000000000000D802800132A0
2724:10AA300000C02B0E1800000CA8CD3EB200200084F0
2725:10AA400000000028090037320000621200000008F0
2726:10AA5000E80100F400007D08000000800200009082
2727:10AA600000000000000000D8028001320000000059
2728:10AA7000545401FC02C06E3200C0370E1801000CA5
2729:10AA8000A8CD3EB2208000000000000808803632C9
2730:10AA90000000EF031201002C72E02EB2000016132A
2731:10AAA00000000080020000900000F3110000002868
2732:10AAB000090002F200003F0E0000005C0800009256
2733:10AAC00000000000000000D80280013200000000F9
2734:10AAD000545401FC02C06E3200C03F0E1801000C3D
2735:10AAE000A8CD3EB220800000000000080880363269
2736:10AAF000000038120000005C1FC0F5FA0000F303EC
2737:10AB000000000080020000900000000000300028DB
2738:10AB100008006E320020008400000028090037324F
2739:10AB20000000621200000008E80100F40000440E7A
2740:10AB300000000080020000900000000000000008FB
2741:10AB40000800003200004A0E0400008002C085B2F6
2742:10AB500000004A0E80000080F2C185B60000490E58
2743:10AB60001C41028006C085B20000000000000068A1
2744:10AB700002C5853000000000000000701F00F73A99
2745:10AB800000000000000000F822812F340000D00EE9
2746:10AB900080010080A2802FB618000000000000F89D
2747:10ABA000730A0339D00E3600CA0000C00200369284
2748:10ABB0000000990E8001008082812FB60000A10E56
2749:10ABC0001F20010809006EB20000990E0430010830
2750:10ABD000899B90BC0000560E0431018002006EBCBF
2751:10ABE0000000321000000080020000F00000540E4F
2752:10ABF0000050014808806E9200001613000000808B
2753:10AC00000200009000000000000000042861803C69
2754:10AC100000006B0E000000002821809A000016132F
2755:10AC20009F000080028090B2000032100030014886
2756:10AC300008006EF200005A0E00500104A85B809CD0
2757:10AC400000001613000000800200009000000000C9
2758:10AC500000500100A81B803A0000680E0700004861
2759:10AC600018A084BC0800000000400200189AFE38BA
2760:10AC70000000161302010080823A80BC0000161307
2761:10AC800006010080923A80BC0000000000000068CD
2762:10AC9000020080320000321000000080020000F04C
2763:10ACA0000000630E000000800200009000001613F8
2764:10ACB00000000080020000900000680E07000048BD
2765:10ACC00018A084BC0800000000400200189AFE385A
2766:10ACD0000000161302010080823A80BC00001613A7
2767:10ACE00006010080923A80BC0000600E00000068FF
2768:10ACF0000200809200006B0E0400004818A084BA85
2769:10AD0000000016139F000004286180BC00000000B2
2770:10AD1000000000002821803A00000000005401FCDF
2771:10AD200002C06E320000740E12010060084023B2AF
2772:10AD300000820000D6010008088036320300161396
2773:10AD400004400200381AFFB8030000000000007839
2774:10AD50000960803918000000D241028CE6A19739C1
2775:10AD600000000000005001E8068084322900F3034F
2776:10AD70001201002C82CD2EB20000161300000080BC
2777:10AD8000020000900000161312000024080023B2F5
2778:10AD9000000016131200002008C023B20000161392
2779:10ADA00012000018088023B200000000000000D844
2780:10ADB0000280013200C07F0E1801000CA8CD3EB207
2781:10ADC00020800000D6010008088036320000790E8D
2782:10ADD00012000038028081B2000016131200003CFD
2783:10ADE000020082B20000161312000030024082B24C
2784:10ADF00000006E0E12010034020086B2000016132D
2785:10AE00000000008002000090080000000040025C8A
2786:10AE1000189AFE38000000000000004808000032C8
2787:10AE200000000000000000D8020000320000000016
2788:10AE30000000000007408032000000000008000011
2789:10AE4000070080320000000000100000074082323E
2790:10AE500000000000001800000700863200001613F2
2791:10AE600012000050F2C138B400000000D60100D832
2792:10AE700002800132000000000018000007808132CB
2793:10AE800000000000002000000700823210000000D7
2794:10AE90000030000017E02C3900008E0E800000808A
2795:10AEA000328087B60010008000380000070037327B
2796:10AEB00000008F0E0000008002000090001000884B
2797:10AEC000003800000700373218003600000000F894
2798:10AED000730A03F9000000000000006802C0853218
2799:10AEE000000016130201008082FA85BC00001613D0
2800:10AEF0000601008092FA85BC0000000000000008F6
2801:10AF0000E8010034000016131200004802C080B2AD
2802:10AF100018003600000000F8730A03F90000321030
2803:10AF200000000080020000F000006B0E00000080B6
2804:10AF3000020000900000A10E0000008002000090BE
2805:10AF40000000321000000080020000F000009C0EA3
2806:10AF500000380200B81B809C0000A10E0000008099
2807:10AF600002000090050000000000006802A0FE380A
2808:10AF7000050000000000007809A0FE38000016134C
2809:10AF80000201008082BA97BC0000161306010080FF
2810:10AF900092BA97BC0000990E00400280024068926D
2811:10AFA00000000000CA0100D8020000320000A50E17
2812:10AFB00004B8018002006EBC000016139FB801782F
2813:10AFC000891BEEBC0000000000B801E0861BEE3CCF
2814:10AFD0004C000000000000000700363200000000B6
2815:10AFE00000000078A9002D37B4040100000800001B
2816:10AFF000C78D973A000000000000007899C02C37F8
2817:10B00000B400000000000078898D973A0000161304
2818:10B010000210000087BF97BA00000000001800006F
2819:10B020000740FE320000161312000048F2C138B487
2820:10B030000000AD0EB6000080020000B00020161324
2821:10B0400012000064A2CD2CB200000000A600008017
2822:10B05000020000300000B20E80010080A2802FB6F6
2823:10B0600018003600CA0000F8730A03F900007D08D2
2824:10B07000005401FC02C06E92000016138001008093
2825:10B0800062812FB6000016138001008082812FB6E6
2826:10B09000000016131F000080020000B00000000036
2827:10B0A000005401FC02C06E320000BB0E12010060B1
2828:10B0B000084023B2008200000000000808803632F9
2829:10B0C0002900F3031201002C82CD2EB200001613CA
2830:10B0D00000000080020000900000161312000024FF
2831:10B0E000080023B2000016131200002008C023B28B
2832:10B0F0000000161312000018088023B200000000A0
2833:10B10000000000D80280013200C0C60E1801000CF9
2834:10B11000A8CD3EB220800000000000080880363232
2835:10B120000000C00E12000038028081B20000161329
2836:10B130001200003C020082B2000016131200003020
2837:10B14000024082B20000B90E12010034020086B241
2838:10B150000000161300000080020000900000321072
2839:10B1600000000048080000F20800C90E0040025C20
2840:10B17000189AFE980000161300000080020000904C
2841:10B180000000000000500100A81B803A0000810E62
2842:10B190000000004808000092000016131F01008004
2843:10B1A000020000B000000000005401FC02C06E323A
2844:10B1B0000000F31100000028098002F20000AD0E2B
2845:10B1C00000000080020000900000F3110000002841
2846:10B1D000090002F20000D30E9A0100F862812FB438
2847:10B1E00010240000000000F8A28D2F3100000000A4
2848:10B1F00000D601EC06C06E342E007D081201002C32
2849:10B2000082CD2EB2000016130000008002000090D4
2850:10B210000000161304A9018002006EB20000DE0EC9
2851:10B2200080010080F2C185B60000DA0E1F40028462
2852:10B23000E60100B40000DE0E1D0100F822812FB4EB
2853:10B240000000DE0E000000F862812F950000DC0E89
2854:10B250001D010080020000B000000000000000F8A6
2855:10B2600062812F35000000000040028002406832F9
2856:10B27000000016131F010080020000B00000E00E65
2857:10B2800004980164881B87BC0000AB120090010881
2858:10B2900009006EF20000DF1200000080020000F0E2
2859:10B2A000000000000000007809C58530000016137A
2860:10B2B0000201008082BA97BC0000161306010080CC
2861:10B2C00092BA97BC000016131200006802C585B040
2862:10B2D00000000000000000F8D2802F3500007F0839
2863:10B2E000370000F8D2812FB400000000000000F801
2864:10B2F00072812F343D007F081201002C82CD2EB2C6
2865:10B300000000161300000080020000900000F20E02
2866:10B3100080010080F2C185B60000EE0E1F4002845D
2867:10B32000E60100B40000F20E1D0100F822812FB4E6
2868:10B330000000F20E000000F862812F950000F00E70
2869:10B340001D010080020000B000000000000000F8B5
2870:10B3500062812F3500000000004002800240683208
2871:10B36000000016131F010080020000B00000000062
2872:10B3700000D401EC16C06E3A000000000000007816
2873:10B3800009C58530000016130201008082BA97BCFF
2874:10B39000000016130601008092BA97BC0000161335
2875:10B3A0001200006802C585B000007F0804B000806C
2876:10B3B00002006EBC37007F081201002C82CD2EB235
2877:10B3C0000000161300000080020000900000020F31
2878:10B3D00080010080F2C185B60000FE0E1F4002848D
2879:10B3E000E60100B40000020F1D0100F822812FB415
2880:10B3F0000000020F000000F862812F950000000F8E
2881:10B400001D010080020000B000000000000000F8F4
2882:10B4100062812F3500000000004002800240683247
2883:10B42000000016131F010080020000B000000F0F83
2884:10B43000000000800200009000000B0F80010080DF
2885:10B44000F2C185B60000070F1F400284E60100B478
2886:10B4500000000B0F1D0100F822812FB400000B0F1C
2887:10B46000000000F862812F950000090F1D01008087
2888:10B47000020000B000000000000000F862812F35DB
2889:10B4800000000000004002800240683200001613F5
2890:10B490001F010080020000B000000F0F370000F80D
2891:10B4A000D2812FB400000000000000F872812F3418
2892:10B4B0003D000F0F1201002C82CD2EB2000016139A
2893:10B4C00000000080020000900000000000D401ECA9
2894:10B4D00006000032000000000000007809C5853039
2895:10B4E000000016130201008082BA97BC00001613F8
2896:10B4F0000601008092BA97BC00007F081201006824
2897:10B5000002C585B000001613000000800200009004
2898:10B5100000007D0880010080F2812FB600007D08C8
2899:10B5200080000080E2812FB60000190F80000080AB
2900:10B5300002812FB6000016131D010080020000B02A
2901:10B54000000016130458018002C06EBC00007D0884
2902:10B55000085901EC06FB6EBC00000000000000D89A
2903:10B560000280013200000000545401FC02C06E321F
2904:10B5700000C0220F1801000CA8CD3EB20000000050
2905:10B58000005801EC06FB6E3A208000000000000825
2906:10B59000088036320000EF031201002C72E02EB258
2907:10B5A00000001613000000800200009000005D12F1
2908:10B5B000000000F8E2812FF40000250F060301804F
2909:10B5C00012C06EBC190068060000001C080036920C
2910:10B5D0001A0068060000001C0800369200001613CE
2911:10B5E00080010080F2812FB60000161380010080D8
2912:10B5F000E2812FB60000161304550180B2DB2FBC88
2913:10B6000000C00000000000F8A28D2F3100000000F3
2914:10B61000000000D802800132002000C00000002895
2915:10B6200009003732000000000030002808006E32A8
2916:10B6300000000000453000E0060000320000621209
2917:10B6400000000008E80100F40000340F040201ECDF
2918:10B6500016C06EBC00000000C90100141840813AF9
2919:10B6600000000000000000F802802F3400C0340FFA
2920:10B6700012010040A28D39B20000161300000080B4
2921:10B680000200009018003600CA0000F8730A03F99F
2922:10B690000000340F9F010014184081BC00007F0897
2923:10B6A0008001008092802FB62B007F081201002CB1
2924:10B6B00082CD2EB200001613000000800200009020
2925:10B6C000000016131F0100D8028001B20000000024
2926:10B6D000005401FC02C06E3200C0440F1801000C7F
2927:10B6E000A8CD3EB22080000000000028098036323C
2928:10B6F00000008111000000D8020000D20000410FBC
2929:10B7000004000080028092BC18000000000000F8D5
2930:10B71000730A0339420F3600000000C0020036925F
2931:10B7200018003600000000F8738A03F900000000DA
2932:10B73000000000D80280013200C0410F1800000C48
2933:10B74000A8CD3EB200005D12000000D8024000F219
2934:10B7500000F04C0F1D400200A80D68B10000161348
2935:10B760000B000080020000B0000016131E4002848F
2936:10B77000060000B200004A0F12000028020580B047
2937:10B780000800450F000000F8234001990000450F14
2938:10B7900012010068020580B000001613000000804E
2939:10B7A0000200009000004C0FB5000080020000B0C5
2940:10B7B00000000000A50080A0360B6A3500000000E4
2941:10B7C0000000005009C02932000000000056012886
2942:10B7D00008C06E320000000000000078390B2E32E5
2943:10B7E0000000000000000020F38197340000560F95
2944:10B7F00004000078D90130B600001613040100805F
2945:10B80000328097BC0000000000000000B905303015
2946:10B8100018000000000000F803A403390000000035
2947:10B8200000000034330B2F3200006F0F040000784B
2948:10B83000D90130B60000161304010080328097BC95
2949:10B840000000000000000078B905303000005D0FF6
2950:10B850000400008042E529BC00000000000000F860
2951:10B860000200003218000000000000F8738A02395C
2952:10B87000000000000000009C028097320A000000D7
2953:10B880000000001009003632000080120000001491
2954:10B8900009C029D20000690F25010008080000B284
2955:10B8A0000000161380000080F20180B60000000046
2956:10B8B0000000002C090580300000161302010080F2
2957:10B8C00082FA92BC000016130601008092FA92BC24
2958:10B8D0000000670F12000028020580B00800690F01
2959:10B8E000000000F8234001990000690F1201006870
2960:10B8F000020580B0000016130000008002000090D6
2961:10B9000000006D0F0400008002402FBC000000000A
2962:10B910000000007809002C32210316130400008077
2963:10B92000828D97BC9603161304000080828D97BC0D
2964:10B930000000161380000080A2802FB60000560F72
2965:10B94000000000F4020000920000730F0400008069
2966:10B9500042E529BC00000000000000F802000032AF
2967:10B9600018000000000000F8738A0239000000008F
2968:10B970000000009C0200953200000000CA0100D8BF
2969:10B9800002800132000000000030000007C02C32AD
2970:10B99000001000A00038000007003732000000004F
2971:10B9A000002000000700EE32000000000038000C0C
2972:10B9B00007808232000016131200004802C080B2D5
2973:10B9C0000000F60300000008E80100940000930F57
2974:10B9D00002000080A24280BC0000930F8000008023
2975:10B9E000F2C185B60000930F1F400208B9BF68B0CE
2976:10B9F0000000830F80410280E28168B608000000E9
2977:10BA00000000001079618039000016139F2001E0CA
2978:10BA100016206EBA00000000000000F822812F34CA
2979:10BA20001800000000400288E62191390000000063
2980:10BA30000001005C08000072000000000000000C23
2981:10BA400019A0903A0000930F06010080D2FF90BC2D
2982:10BA50000000870F2C410278F98168B400000000D3
2983:10BA600000000078B9819734010000000000001048
2984:10BA700009003632000080120000001459C085D73A
2985:10BA80000300000000400200291AFF3800000000F7
2986:10BA900000380200B91B903A00000000D241028831
2987:10BAA00016A0973A00000000450000D8024000327E
2988:10BAB000000016139F2001E016206EBA000000005F
2989:10BAC0000000000007408032000000000008000075
2990:10BAD0002724903A000000000010000007008A327E
2991:10BAE0000000000012010058F2C138740000161363
2992:10BAF00000000080020000900800A20F1A0000342D
2993:10BB0000796180B90000AE0F1E010080020000B014
2994:10BB10000000AE0F1F400200094068B20000950F00
2995:10BB200080000080E20190B6000016133800005437
2996:10BB30001F40F5BA0000000000000008B93F903037
2997:10BB400000000000002801E026246E3A08001613C9
2998:10BB50001E00000009A4FEB83D0000000000001017
2999:10BB6000090036320000801200000014090090D253
3000:10BB70000000000000000078090590300000161356
3001:10BB80000201008082BA97BC0000161306010080F3
3002:10BB900092BA97BC0000AE0F12010068020590B087
3003:10BBA0000000161300000080020000900000AE0F9D
3004:10BBB0008000008082812FB60000AC0F1F41020080
3005:10BBC000094068B200000000002801E016206E3A2B
3006:10BBD0000000A80F80010080F2C185B600000000BF
3007:10BBE00000400284E60100340000000000000080F4
3008:10BBF0000200003000000000004002800240683275
3009:10BC000000001613380000541F40F5BA0000161348
3010:10BC10009F2001E016206EBA0000000000010080A5
3011:10BC2000020000700000A30F80000080E20190B6C7
3012:10BC30000000970F000000541F40F59A000000001C
3013:10BC40000000005C08000032000016139F2001E095
3014:10BC500016206EBA00000000000000F822812F3488
3015:10BC6000180000001E410284E6619379000016135B
3016:10BC700000000080020000900000FFFF0000008034
3017:10BC8000020000900000B90F1D5D01EC16C06EBCF3
3018:10BC9000000000000F010080020000700000161379
3019:10BCA000045D018002C06EBC00001613800000809D
3020:10BCB00042812FB600000000000100F8B2802F740E
3021:10BCC000000000000F010080020000700000B70FAC
3022:10BCD000045E01EC16C06EBC00000000005C01ECCC
3023:10BCE00006400032000000000001008002000070E9
3024:10BCF0000000FFFF00000080020000900000000034
3025:10BD00000420018082DB907C000016130420018057
3026:10BD100002006EBC000016131F000080020000B07D
3027:10BD200000000000020C0280A2DB907C0000C40F27
3028:10BD300006210180821B90BC2700C50F0000000077
3029:10BD40000900369228000000000000000900363289
3030:10BD5000000000000000008812002C3A0000FFFFE5
3031:10BD600000000080020000900600000000000010AB
3032:10BD7000090036320000801200000014090092D23F
3033:10BD80000000161304000080020092BC00000000B6
3034:10BD90002FA00178891B927A0000000006880178A4
3035:10BDA000899B977C000000000034020409C06E3DAE
3036:10BDB00000000000000C020019A46E370000D20F32
3037:10BDC0000200008002A497BC0000D20F0200008095
3038:10BDD000020000B00100000000000078898D973754
3039:10BDE0000000000002010280829B977C000000009E
3040:10BDF000000100F8F2802F740000FFFF00000080B7
3041:10BE00000200009000000000DA5B01EC0640ED3219
3042:10BE10002D000000000000100900363200008012E2
3043:10BE2000005C011409806ED20000DA0F040100806A
3044:10BE3000024086BC0000000000A001E016206E3A1F
3045:10BE40000000DC0F00D401EC060000920000AB12F1
3046:10BE50000090010809006EF20000000000A001E05F
3047:10BE600016206E3A0000DF12330100F882802FB4F2
3048:10BE70000000DF129FF0018082DB87BC0000DF1230
3049:10BE80009FF8018022216EBC0000000000E801E064
3050:10BE90000600EE320000000000F001E006C087322C
3051:10BEA0000000DF1200000080020000900000FFFF91
3052:10BEB00000000080020000900000161308000080BF
3053:10BEC000028091BC11000000000000100900363211
3054:10BED0001000801200500114A99B91D91500000098
3055:10BEE000000000100900363210000000002001148C
3056:10BEF000890D6E370000801200300114895B91D2E9
3057:10BF00001A00000000000010090036320000801204
3058:10BF10000000001409C02DD2000016130621018074
3059:10BF2000829B91BC0000000000A8017809006E32DD
3060:10BF30000000161306010280829B97BC00000110CE
3061:10BF40000421013069246EBC000000000050010093
3062:10BF5000A99B913A0000F90F1F400224094068B2E2
3063:10BF60000000F00F80000080E24192B60000000067
3064:10BF700000000008B97F92300000000000000000BF
3065:10BF80002924903C080000000000007899A4FE38A5
3066:10BF9000000016130201008082BA97BC000016133D
3067:10BFA0000601008092BA97BC0800F00F12010068E9
3068:10BFB00092A4FEB80000161300000080020000905A
3069:10BFC0000000161304290180821B90BC00000000B1
3070:10BFD00000A801E066246E3A000016139F2001E0DD
3071:10BFE000060093B20000FE0F8000008082812FB611
3072:10BFF0000000FF0F002801E0060000920000000092
3073:10C00000003001E00600003200000000005001E8AE
3074:10C0100006000032000000000001008002000070F5
3075:10C020000000071038510100A99B91BA00000510CB
3076:10C0300004410208B9FF68B0000016138041028075
3077:10C04000E2C168B60000021000400280024068921F
3078:10C05000000014109F3101E066246EBC0000141033
3079:10C06000003001E0060000920000111004280104D5
3080:10C0700009006EB20000161306500180A25B90BC4E
3081:10C0800000000F109F010000192490BC0000000068
3082:10C0900000A801E066246E3A00000000002801E0DC
3083:10C0A0000624003C00000000005001E806000032B9
3084:10C0B000000016139F2001E0060093B2000000006C
3085:10C0C000000100800200007000000000002801E074
3086:10C0D0000600003200001D1004000080020090BC29
3087:10C0E0000000141004410208B9FF68B000001613E4
3088:10C0F00080410280E2C168B6000011100040028059
3089:10C10000024068920000181002000080222490BCB7
3090:10C1100000001D1080400280F2C168B600000000DF
3091:10C120000040028CB6C1683500001D10000000F808
3092:10C1300022812F940800000000400278399AFE38CE
3093:10C14000000016130201008082BA97BC000016138B
3094:10C150000601008092BA97BC0800161312400268CC
3095:10C16000129AFEB80000111004010000292490BCAE
3096:10C17000000000000000000809000032100000006C
3097:10C1800000000010790B1638080000000000000CB9
3098:10C19000790B1638000016130400008042E490BCAE
3099:10C1A0000000000000000004A9002D370004010079
3100:10C1B00000000004C94D903A02000000000000A8F1
3101:10C1C000820D913700000000000000A812A42A3A56
3102:10C1D0000000281080400280E2017CB600001613A7
3103:10C1E00004400278B93F7CB0000000000000000865
3104:10C1F000E9A5903A00002A109F010010190091BC97
3105:10C200009F000000000000100900363200002310DB
3106:10C210000401008042E490BC0000000000000078AF
3107:10C22000C924903A000016130401008022A497BC90
3108:10C230000000000000A801E066246E3A0000000043
3109:10C24000005001E806009032000016139F2001E024
3110:10C25000060093B2000000000001008002000070A0
3111:10C260000000FFFF00000080020000901800341062
3112:10C270001F41027888CD68B60000000000000088E9
3113:10C2800012002C3A0000371080010080628087B6CF
3114:10C290000000161304410280B2FF68B000003210A3
3115:10C2A000004002800240689203001613044002001E
3116:10C2B000381AFFB8000016131F400204B8FF68B018
3117:10C2C0000000000000380200B81B803A2E00000079
3118:10C2D0000000001009003632000080120000001437
3119:10C2E000090080D200000000000100800200007000
3120:10C2F0000000FFFF000000800200009000004510D9
3121:10C3000080010080A2802FB60000421012010000C0
3122:10C3100009C021B218003600000000F8730A03F9C2
3123:10C3200000000000000000D8024084321D004510CB
3124:10C330000401008002A417B800003F109F01008094
3125:10C34000180088BC00001613000000800200009056
3126:10C35000000000000060006C08006E320000000069
3127:10C36000CA68004C08006E320000161304700018F2
3128:10C3700008006EB2200000000000001009003632F4
3129:10C380001000801200000014A96081D90000000094
3130:10C3900004000080A2A0817C000016130D01008023
3131:10C3A000020000B000004F1080010080E2802FB634
3132:10C3B00000004F101B000080020000B000000000D1
3133:10C3C0000600008062E0837C000016139F000014CA
3134:10C3D000184081BC00000000CA0100F802802F351F
3135:10C3E00000A0000012010040A28D39720000161357
3136:10C3F00000000080020000900000FFFF00000080AD
3137:10C400000200009000000000000801E406C02D3288
3138:10C41000EEFF0000001001E0868D2F3100000000CB
3139:10C420000000001CB3E4393200005B100400007807
3140:10C43000D90130B60000161304010080328097BC89
3141:10C440000000000000000078B9053030180000003E
3142:10C45000000000F8E3A503390000000000000034EC
3143:10C46000330B2F320000000004000078D901307631
3144:10C470000000161304010080328097BC0000000009
3145:10C4800000000078B905303018000000000100F805
3146:10C49000E3A503790000FFFF000000800200009088
3147:10C4A000000016130401008002002DBC00001613CA
3148:10C4B0000401008002802DBC00000000000000CCC0
3149:10C4C00002000032000066102000012C09C06EB28C
3150:10C4D00000006710001686CC06C092920000000093
3151:10C4E000001486CC06C09232000000001201004009
3152:10C4F000628E92520000161300000080020000902D
3153:10C500000000FFFF000000800200009000006D109E
3154:10C5100004000078D90130B6000016130401008031
3155:10C52000428097BC6D103600000000C002003692B9
3156:10C530006000161304010080828D2FB100000000FE
3157:10C54000000000140300383200000000000000E08A
3158:10C55000020030320000B91004000024D80130B6C7
3159:10C560007210000000000088824D823A000016130D
3160:10C570000000008002000090000016130000008000
3161:10C5800002000090000016130000008002000090DE
3162:10C590000000161300000080020000906D103600AD
3163:10C5A000000000C00200369200009E1000000080D3
3164:10C5B0000200009000007A10000000204805309032
3165:10C5C000000016130000008002000090000086109A
3166:10C5D000921101BC08006EB200000000000801DCEE
3167:10C5E00002406E3200007E101F1101E026C18BB5A3
3168:10C5F000000086101D000080020000B00000000056
3169:10C60000000000D80200003280020000000000009C
3170:10C61000070036320000000000000078A9002D3726
3171:10C620002005010000080000C78D973A0A000000AD
3172:10C6300000000078890D8237000000000010000023
3173:10C64000A7BA973A000000000018000007C0EA32BD
3174:10C65000000016131200004802C038B200008A1011
3175:10C66000800E01BC08C06EB2000000000000000097
3176:10C67000190E823200E0921012010048A20D90B211
3177:10C68000000016130000008002000090000000006F
3178:10C69000000000D802400032B4000000000000009A
3179:10C6A000070036320000000000000078A9002D3796
3180:10C6B0000004010000080000C78D973A0000000048
3181:10C6C0000000007899008237000016130210000065
3182:10C6D00087BF97BA00000000001800000740FE3234
3183:10C6E0000000161312000048F2C138B418003600DA
3184:10C6F000000000F8730A03F90000000000000004C5
3185:10C70000896038321D0000000000007809A4173845
3186:10C71000000098108000008002C08BB600009910C5
3187:10C7200004000080328097BC0000161300000080D7
3188:10C73000020000900000161304010080028097BCE4
3189:10C740000000000000000018F341903400009E102B
3190:10C7500004000078D90130B60000161304010080EF
3191:10C76000328097BC0000000000000000B9053030A6
3192:10C7700018000000000000F803A4033900000000C6
3193:10C780000000000019CE2C32006016131200004089
3194:10C79000A20D90B200000000000000D8020000329C
3195:10C7A00060000000000000000700363200000000BA
3196:10C7B000000000BCA8002D37A00701000008000001
3197:10C7C000C7CD8B3A0A0000000000007889CD2C37D5
3198:10C7D0008002000000000078898D973A0000000078
3199:10C7E00000100000A7BA973A0000000000180000EF
3200:10C7F00007C0EA320000161312000040F2C138B43C
3201:10C8000018003600000000F8730A03F90000000069
3202:10C81000000801DC02406E321D00000000000078BC
3203:10C8200009A417380000161304010080028097BC89
3204:10C83000000016138010018022016EB60A00B010AD
3205:10C840001F01007889CD2CB70000B7101D1001F82A
3206:10C8500002006EB2800200000000000007003632C5
3207:10C860002005010000080000C7CD8B3A0000000041
3208:10C8700000100000A7BA973A00000000001800005E
3209:10C8800007C0EA320000161312000040F2C138B4AB
3210:10C8900018003600000000F8730A03F900000000D9
3211:10C8A000001001F802006E32EEFF16130401008042
3212:10C8B000828D2FB000000000000100800200007097
3213:10C8C000EEFF161304110180820D6EB0000000000F
3214:10C8D000001001F802006E3200000000000901DCC7
3215:10C8E00002406E720000FFFF000000800200009016
3216:10C8F0000000000000000000090000320E000000EF
3217:10C9000000000004894D0D3600000000000000000A
3218:10C9100007800B3200000000000800000700903282
3219:10C920000000000000100000070036320000C210B6
3220:10C930001200004CF2C138B400000000000000807A
3221:10C94000020000300000C3101200008002C021B2BB
3222:10C950000000000000000000E902903A0000BF1053
3223:10C9600004010004194090BC000000000001008098
3224:10C97000020000500000FFFF000000800200009055
3225:10C980000000D21080010080A2802FB60000CC10E1
3226:10C99000120100E802C021B218003600000000F8C1
3227:10C9A000730A03F90000D1100400008002802DBC3E
3228:10C9B000000016130401008022802DBC0000161315
3229:10C9C0009F000080180088BC0000CC10120100E815
3230:10C9D00002C021B20000CB100000008002000090D5
3231:10C9E00000000000CA0000D8024084320000161384
3232:10C9F0000401008002402DBC0000161304000080DA
3233:10CA000002802DBC000000000040006C881C833AAE
3234:10CA1000000000000048004C0800723200001613AD
3235:10CA200008500018C82072BC0000000004000080FC
3236:10CA30000240817C00000000000000141840813C8E
3237:10CA40000000161302000020880182BA00000000D6
3238:10CA5000000000D8020000320000000000000000CA
3239:10CA6000070006320000161304010080020036BCE5
3240:10CA70000700000000080000774A093900000000A4
3241:10CA8000001000000700823200000000CA190000F8
3242:10CA9000074082320000161312000040F2C138B481
3243:10CAA00000000000000100D8024084720000FFFF77
3244:10CAB0000000008002000090000000004D00000017
3245:10CAC00067E0833E0000000000080000070080329D
3246:10CAD000000000000010000007C0863200000000C7
3247:10CAE0000018000007C0843200003C110400002838
3248:10CAF000D8A082BC0000161309010080020000B01B
3249:10CB00000000000000000018D8A0813C0000FE10CA
3250:10CB10000400003CD8E083BC000016130401008030
3251:10CB2000028081BC0000EF100400008072802DBCE8
3252:10CB3000000016131200005002C038B20000F710B7
3253:10CB4000510000D812802D9A0000161312000050D8
3254:10CB5000F2C138B418003600000000F8730A03F977
3255:10CB60000000F5100400008072802DBC0000161338
3256:10CB700080010080A2802FB60000F010670000F84E
3257:10CB8000A2802FB500001613120000E802C021B2E7
3258:10CB9000000016130401008072802DBC000000000C
3259:10CBA000510000D8020000320000FC102A010000F1
3260:10CBB000D82080BA0000FB101201000009C021B289
3261:10CBC00018003600000000F8730A03F900000000A6
3262:10CBD000000000D8024084321D00161304000080BB
3263:10CBE00002A417B8000046100060006C08006EF246
3264:10CBF0000000E4104D00000067E0839E0000161363
3265:10CC000012000050F2C138B418003600000000F8DD
3266:10CC1000730A03F91D0005110400008002A417B86F
3267:10CC20000000161380010080A2802FB60000FF10C4
3268:10CC3000670000F8A2802FB5000016131200000054
3269:10CC400009C021B21D0016130401008002A417B808
3270:10CC50000800000000400278399AFE3800001613E0
3271:10CC60000201008082BA97BC000016130601008002
3272:10CC700092BA97BC0800161312400268129AFEB8C6
3273:10CC8000000016130B000080020000B000006411C9
3274:10CC900000000030030038F200001B111F00006C80
3275:10CCA000D8E086BA00003210510000D8020000F22D
3276:10CCB00000000F110000003C0840809200001B1192
3277:10CCC000000000800200009000001311800100802D
3278:10CCD000F2812FB60000131180000080E2802FB691
3279:10CCE0000000131180010080328087B60000000030
3280:10CCF000000000F8E2802F340000E31004010080FF
3281:10CD0000028081BC0000191180010080A2802FB632
3282:10CD1000000018111201000009C021B218003600ED
3283:10CD2000000000F8730A03F900000000000000D8BA
3284:10CD3000024084321D0016130400008002A417B8BC
3285:10CD4000000046100060006C08006EF20000E41065
3286:10CD50004D00000067E0839E0000201180010080EC
3287:10CD6000E2802FB60000401180010080A2802FB623
3288:10CD700018003600CA0000F8730A03F91D004011BC
3289:10CD80000401008002A417B8000016130000008000
3290:10CD90000200009000000000000000A4A8608A3C8F
3291:10CDA0000000161304210180825B8ABC000024115C
3292:10CDB0002FA8012099226EBA0000C70F0000008042
3293:10CDC000020000F00000161306010280821B92BCD4
3294:10CDD0000000000000A801E0060092320000000000
3295:10CDE000005001E80600003200002911232101E073
3296:10CDF000060000B23E0016131200002C82CD2EB2A7
3297:10CE000000001613043000E0068082B200003311E7
3298:10CE1000042100E0068081B200001613800000802B
3299:10CE2000E2802FB60000311180010080A2802FB671
3300:10CE3000000030111201000009C021B218003600B4
3301:10CE4000000000F8730A03F900000000000000D899
3302:10CE5000024084321D0016130400008002A417B89B
3303:10CE6000000046100060006C08006EF20000000038
3304:10CE7000002000E00680813200000000003C00E855
3305:10CE80000640813200000000001000E006C086323B
3306:10CE900000000000001800E006C0843200001613F5
3307:10CEA0000400008032E186B2000000002A01008008
3308:10CEB0000200007000003A111201000009C021B206
3309:10CEC00018003600000000F8730A03F91D0016135D
3310:10CED0000400008002A417B800000000000100F860
3311:10CEE000A2802F75000000000000003CD8E0833CC9
3312:10CEF0000000161312000050F2C138B400001613DF
3313:10CF000080000080A2802FB600000000000000F822
3314:10CF1000A2802F34000000000000008812002C3A8C
3315:10CF20000000FFFF000000800200009000000000F1
3316:10CF3000000000000900003200000000000000783E
3317:10CF40000900003200000000000000A802000032CA
3318:10CF5000EE05481104010080820DF6BC00060000B9
3319:10CF6000000000080900363200004A1100000004E9
3320:10CF700009C00992002800000000000809003632AC
3321:10CF80000000000000000004098009321E000000BB
3322:10CF9000000060C087CD003700000000000860C0BE
3323:10CFA000078097320030000000000078898D2A3A0F
3324:10CFB000000016131200005C528197B400000000BC
3325:10CFC000000000002924903A0800000000000078CA
3326:10CFD000890D903600000000000000041940903CCC
3327:10CFE00000000000000000A852822A3A00084A11FE
3328:10CFF00002010080828D2ABC00005B1106000080C7
3329:10D00000024090BC00001613120000A8020020B2DB
3330:10D010001E000000000000C087CD003700000000A7
3331:10D02000000800C007809732000016131200005C51
3332:10D0300052812AB400000000000000002924903A28
3333:10D040000800000000000078890D9036000054119F
3334:10D0500004010004194090BC0500000000000078A5
3335:10D06000890D903600000000000000A00E8097326D
3336:10D070000000161312000068028097B20000000042
3337:10D08000000000A40E8097320000000000000000A5
3338:10D090002924903A000000000000007859009036E2
3339:10D0A00000005D1195010080222490BA000000006C
3340:10D0B00000010080020000500000FFFF000000801F
3341:10D0C0000200009000007E1104010078D90130B602
3342:10D0D000000000000000002809C029320000000004
3343:10D0E0000000009CB2452830000070118601000845
3344:10D0F00009802FB2000000000000002C094081329E
3345:10D1000000000000000000F80200003200000000F3
3346:10D11000000000F40200003218000000000000F8D7
3347:10D12000738A0239000000000000009C02809232E5
3348:10D1300000006F110407018002C06EBC000079116D
3349:10D14000C30701ECB6E46E9A00007911000601EC09
3350:10D15000B6E46E9A0000161380010080528090B6EB
3351:10D16000000000000000002C0905803000000000D5
3352:10D17000000000F80200003200000000000000F48F
3353:10D180000200003218000000000000F8738A023923
3354:10D19000000000000000009C028092320000161384
3355:10D1A0000201008082FA92BC000016130601008082
3356:10D1B00092FA92BC0000D71100000080020000D05B
3357:10D1C000210000000000001009003632000080122B
3358:10D1D0000000001409C092D20000000000000030DE
3359:10D1E0000300383200007E1104010078D90130B606
3360:10D1F000000067110000009CB2452890000000006C
3361:10D20000040000802280977C00001613000000803C
3362:10D21000020000900000FFFF00000080020000906C
3363:10D22000000016130400008002C0E8BC00001613C2
3364:10D230000200008002C12FBC000000000000008836
3365:10D2400002C0E83202008411B00000A0F20B00B965
3366:10D25000000000000000000CABE4B03200008911B7
3367:10D2600080010080F24BD0B600000000A000002832
3368:10D2700009000032000000000001008002000050A0
3369:10D2800000008B1104010080123EF8BA00009611D4
3370:10D29000A0000004FD4BD09400009211800100809A
3371:10D2A000D28192B600009211800100802281FCB6EA
3372:10D2B00000000000A0000004FD4BD034000000007E
3373:10D2C0000000008401C02F32000000000000008038
3374:10D2D000F1010034000000000000009401C02F3272
3375:10D2E0000000961100000090F10100940000000081
3376:10D2F000A000008401C02F32000000000000008068
3377:10D30000F101F83400000000000000900140F83204
3378:10D310000000000000010028090000520000161360
3379:10D3200080010080F24BD0B600009C11040100285F
3380:10D330000934B0BA0000161380010080F24BD0B659
3381:10D3400000009911B0000080020000B00000000051
3382:10D35000A0000004FD4BD0350000000000010028B3
3383:10D360000900005200009C11B00000A822C02FB795
3384:10D3700000001613040084C037ACB0B200000000F7
3385:10D38000A000000C0B000032FFFF0000000000783E
3386:10D39000A94DB0300000A411800000800240B0B65A
3387:10D3A00000001613800000801240B0B6000000009C
3388:10D3B00000000078698197350000000000008408B3
3389:10D3C0000B007C320000000000000000E725013265
3390:10D3D0000042000000080000878D2A3A000000008B
3391:10D3E000001000000700B03200000000001800002C
3392:10D3F0000700D0320000000012010048F2C138548A
3393:10D400000000161300000080020000900000AA1126
3394:10D41000B00000A0020000B2000000000000000CFC
3395:10D42000ABE4B0320000AF11800100800240D0B602
3396:10D4300000000000A00000280900003200000000E9
3397:10D4400000010080020000500000B11104010080C2
3398:10D45000123EF8BA0000C211A00000040D40D094A2
3399:10D460000000BB1180010080D28192B60000BB1188
3400:10D47000800100802281FCB600000000A0000004B2
3401:10D480000D40D034000000000000007809C02F32A9
3402:10D4900000000000000000FC02000032000000005C
3403:10D4A0000000008401C02F32000000000000008056
3404:10D4B000F1010034000000000000009401C02F3290
3405:10D4C0000000000000000090F10100340000C211D3
3406:10D4D000000000FC0280979200000000A00000788D
3407:10D4E00009C02F3200000000000000FC02000032E2
3408:10D4F000000000000000008401C02F320000000086
3409:10D5000000000080F101F8340000000000000090ED
3410:10D510000140F83200000000000000FC0280973259
3411:10D52000000000000001002809000052000016134E
3412:10D53000800100800240D0B60000C811040100281C
3413:10D540000934B0BA00001613800100800240D0B642
3414:10D550000000C511B0000080020000B00000000013
3415:10D56000A00000040D40D03500000000000100289C
3416:10D57000090000520000C811B00000A8020000B26B
3417:10D5800000001613040084C037ACB0B200000000E5
3418:10D59000A000000C0B000032FFFF0000000000782C
3419:10D5A000A94DB0300000D011800000800240B0B61C
3420:10D5B00000001613800000801240B0B6000000008A
3421:10D5C00000000078698197350000000000008408A1
3422:10D5D0000B007C320000000000000000E725013253
3423:10D5E0000042000000080000878D2A3A0000000079
3424:10D5F000001000000700B03200000000001800001A
3425:10D600000700D0320000000012010048F2C1385477
3426:10D610000000161300000080020000900000FFFFD1
3427:10D6200000000080020000900000D9111C40028020
3428:10D6300006C092B244000000000100F8A28D2F52F3
3429:10D64000000000000000007809C5923000001613A9
3430:10D650000201008082BA97BC000016130601008008
3431:10D6600092BA97BC000016131200006802C592B06F
3432:10D67000000016130B000080020000B02400000020
3433:10D680000000001009003632000080120000001473
3434:10D6900009C092D200000000000100701F00F75A7C
3435:10D6A0000000FFFF00000080020000902C0000003E
3436:10D6B0000000001009003632000080120000001443
3437:10D6C000098092D200000000D50800000780923245
3438:10D6D000000000000030000007C02C320040008035
3439:10D6E000003800000700373200000000CA4101E0A6
3440:10D6F00006809232000016131200004802C080B269
3441:10D700000060000000010008088036720000FFFF82
3442:10D7100000000080020000900000161380000080CE
3443:10D72000A2802FB6000016130401008062802DBC79
3444:10D730000000000000380000078092320000000066
3445:10D740000030000007C02C3200000000CA3D000C71
3446:10D7500007808332000000001201004802C080727E
3447:10D760000000161300000080020000900000FFFF80
3448:10D7700000000080020000900000000004570180BB
3449:10D7800002C06E7C00000000005701EC068092721F
3450:10D790000000FFFF00000080020000900000641104
3451:10D7A00000000030030038F23300000000000010D9
3452:10D7B00009003632100080120000001419A02CD984
3453:10D7C0000000FB119D11020C09006EB20000FC115B
3454:10D7D00000F0011C09006E920000000000B8011C5E
3455:10D7E00009006E320000FE112CCD011809806EB2C6
3456:10D7F000000000000000000CC9C1903400000212BB
3457:10D800003B29020409806EB20000161380D6018005
3458:10D8100052C06EB60000000000D601EC56C06E3457
3459:10D82000000000000000000CB9C19034000012128A
3460:10D8300000A8010809006EF2000006129D01008098
3461:10D8400017E090BA000000000030008007C091325D
3462:10D8500000000912003800800700EE920000091253
3463:10D860000401008002C091BC0000000000B801E08B
3464:10D870000600EE3200000000007001E00600863273
3465:10D8800000000C123908008007C085B20000161392
3466:10D8900080000080C2812FB600000000D9C901E8D5
3467:10D8A0000680913200000000C811008007409032CD
3468:10D8B00000000F123B210080070086B2000000002C
3469:10D8C000DB0000601800863A00000000587801E094
3470:10D8D0001620863A000000000029008007008572AB
3471:10D8E0000000FFFF00000080020000900000161200
3472:10D8F000020C0280A29B90BC000000000000027895
3473:10D9000029006E360000161202000080E2A590BCCD
3474:10D91000000000000000000809000032000018129A
3475:10D920009F89017849216EBC00000000000000784A
3476:10D93000090000320000000000000008E9A5903F47
3477:10D9400000001E1204200208899B90BE0000000007
3478:10D95000000A0258B89B90360000000000000078D2
3479:10D9600049A1903A000000009F880180829B977C2B
3480:10D9700000000000008901E00680977200000000AE
3481:10D98000000B0258B89B90760000FFFF000000805B
3482:10D99000020000900000271280010080A2802FB6B4
3483:10D9A000000025121201007809C021B218003600CB
3484:10D9B000000000F8730A03F9000016130401008048
3485:10D9C00002802DBC00002712CA0000D802408492B9
3486:10D9D0001500161304010078E96517B8000000006F
3487:10D9E000000000F8A2802F3500001613040100800B
3488:10D9F00002402DBC000016130400008002802DBCE4
3489:10DA0000000000000040006C881C833A0000000009
3490:10DA10000048004C0800723200001613085000182D
3491:10DA2000C82072BC000000000600008062A0827C5A
3492:10DA3000000016139F000014184081BC000016134C
3493:10DA400002000020880182BA00000000000000D817
3494:10DA50000200003200000000000000000700063253
3495:10DA60000000161304010080020036BC070000000D
3496:10DA700000080000774A093900000000001000008B
3497:10DA80000700823200000000CA19000007408232FD
3498:10DA90000000161312000040F2C138B4000000006C
3499:10DAA000000100D8024084720000FFFF00000080E7
3500:10DAB000020000902B000000000000100900363228
3501:10DAC000000080120000001409C085D2000042123C
3502:10DAD00080010080F2C185B600003E121F40028422
3503:10DAE000E60100B4000042121D0100F822812FB4AB
3504:10DAF00000004212000000F862812F9500004012E1
3505:10DB00001D010080020000B000000000000000F8CD
3506:10DB100062812F3500000000004002800240683220
3507:10DB2000000016131F010080020000B00000161351
3508:10DB30001200006802C585B00000000000000078F7
3509:10DB400009C58530000016130201008082BA97BC17
3510:10DB5000000016130601008092BA97BC0000000076
3511:10DB60001D00008002000070010000000401008020
3512:10DB7000A28D2F702A0016131200002C82CD2EB217
3513:10DB800000000000000100F802812F740000FFFF78
3514:10DB9000000000800200009080A8000004000080C7
3515:10DBA000828D2F700000521280010080D2802FB62B
3516:10DBB000000016138000008072812FB60000521200
3517:10DBC00004B0008002006EBC00000000000000F8FD
3518:10DBD00072812F343D0055121201002C82CD2EB2DD
3519:10DBE0000000161300000080020000900000551293
3520:10DBF00080010080F2802FB63C0058121201002CE8
3521:10DC000082CD2EB2000016130000008002000090AA
3522:10DC10000000581280010080B2802FB63500161324
3523:10DC20001200002C82CD2EB200000000000000F88F
3524:10DC300042812F348000000004000080828D2F700C
3525:10DC40000200000004010080A28D2F703B0016131B
3526:10DC50001200002C82CD2EB200000000000100F85E
3527:10DC600012812F740000FFFF00000080020000906E
3528:10DC70000000161380000080A2802FB6000016134B
3529:10DC800004310280A2DB2CBC08000000001801E86F
3530:10DC900076208139EEFF0000000100F8828D2F719F
3531:10DCA0000000FFFF000000800200009000006612EC
3532:10DCB0000000013808C06EF20000000012010048A8
3533:10DCC00002C0807200001613000000800200009065
3534:10DCD0000000FFFF00000080020000900E00000026
3535:10DCE00000000010090036320000801200380114D4
3536:10DCF00009006ED200006A120438017809006EB281
3537:10DD000000000000003801E0060000320000161399
3538:10DD100080000080A2802FB600000000CA11000021
3539:10DD20000780823200006E122E190000078097B221
3540:10DD30000000000000000028E98192340000731206
3541:10DD40002731000007C02CB200000000D5080000F9
3542:10DD50000700873200000000C7000028E9809234E5
3543:10DD600000000000004001E00600873200000000D3
3544:10DD700000000008D8818034100000000039000045
3545:10DD8000E7A092790000FFFF0000008002000090F1
3546:10DD9000140000000000001009003632000080125C
3547:10DDA00000000014094090D2000016131200004435
3548:10DDB00012E438B218003600000000F8730A03F9C4
3549:10DDC00000007D120401008002802DBC00001613AB
3550:10DDD00080010080A2802FB600007812670000F852
3551:10DDE000A2802FB500001613120000E802C021B275
3552:10DDF000000016130401008072802DBC000000009A
3553:10DE0000000100D8024000720000FFFF0000008007
3554:10DE1000020000901B00000000000010790A9139F8
3555:10DE20000F00000000000010390B91390C000000B9
3556:10DE300000000010590A913909008312F101001005
3557:10DE4000690B91B903000000002486A8828D6C370D
3558:10DE500000000000000088E0070091320000000090
3559:10DE6000000088E00740913200C089120201008062
3560:10DE7000828D2ABC00008A12E12486C80600009226
3561:10DE800003000000E12486C8868D2A3600000000C9
3562:10DE900000010080020000500000FFFF0000008031
3563:10DEA000020000900000921204300080829B81BC2E
3564:10DEB000000016130D010080020000B000001613D0
3565:10DEC0009F3C001428806EBC000016138000008068
3566:10DED000A2802FB600000000CA0100F802802F3592
3567:10DEE00000A0161312000040A28D39B20000941257
3568:10DEF00080390080E2806EB6000016138038008002
3569:10DF0000F2806EB600C0161304010080A28D2FB0FF
3570:10DF100000C09A1204380078898D6EB010009A12F1
3571:10DF20009F0100F8E2A52FB900001613040000803D
3572:10DF300002C0EEBC00000000005801EC06C0EE324A
3573:10DF4000000000000000008002000030000000001F
3574:10DF50000428001809006E720000E30F0000008022
3575:10DF6000020000F00000C70F00A8012009006E9217
3576:10DF70000000FFFF00000080020000900000A712D8
3577:10DF800004B00080829B81BC000016130D0100804C
3578:10DF9000020000B0000016139FBC001428806EBC65
3579:10DFA0000000161380000080A2802FB60000161318
3580:10DFB00080B8008082806EB60000000000B800E8E3
3581:10DFC00086806E3400000000CA0100F842802F35C0
3582:10DFD00008A0000012010040A2CD39720000161303
3583:10DFE00000000080020000900000161380B800803E
3584:10DFF00082806EB60000000000B800E886806E34B3
3585:10E000000000000000010080020000700000FFFF1F
3586:10E0100000000080020000902800000000000010B6
3587:10E02000090036320000801200000014098090D2EE
3588:10E030000000B01233CD01BC08806EB20000EE12B9
3589:10E04000000000282922EEDC0000B512000000804C
3590:10E05000020000900000B51204B8012809006EB259
3591:10E060000000B5129F710180C2216EBC0000161322
3592:10E070009F000028A924EEBC0000EE12000000283A
3593:10E08000198092DF000000000000008002000030D4
3594:10E090000000C91202810180829B90BC000016130F
3595:10E0A00004000080028090BCEE05C112060C0280C4
3596:10E0B000828D6EBC00904C0000000084020037325C
3597:10E0C0000000BB12B8010080020000B00000B912CD
3598:10E0D000000000800200009000000000000000C46A
3599:10E0E000038090320000000000B001E096216E3CF9
3600:10E0F00000000000619801E0060087320000000087
3601:10E1000000D401EC0600003200000000A8000078F6
3602:10E1100049403C370000CE1200000008E9A5909A63
3603:10E120006089200000000084020037320000C41221
3604:10E13000B8010080020000B00000C21200000080A0
3605:10E140000200009000000000000000C40380903234
3606:10E150000000000000B001E096216E3C00000000CD
3607:10E16000619801E0060087320000000000D401EC55
3608:10E17000060000320000CE12A8000008198F909A05
3609:10E18000000000000000007899A1893E0000000016
3610:10E1900000000008E9A5903A0000000000B001E08E
3611:10E1A00096216E3C00000000619801E00600873275
3612:10E1B0000000000000D401EC060000320000D11283
3613:10E1C0000600008072A290BC00C0FF3F008001E00A
3614:10E1D00006003732000000000000000809C0893244
3615:10E1E0000000D61204790180821B87BC0000D41283
3616:10E1F00004B0008002006EBC0000D912D99001E08A
3617:10E20000068090920000DC128000008052812FB6C0
3618:10E210000000DC12D54101E0060087920000D9120F
3619:10E220003C9001E0068090B200001613800100804F
3620:10E2300092812FB60000000000C801E806C08B32B2
3621:10E24000000000009501008002802F720000DD12A6
3622:10E250009F410180821B87BC0000000000010080FC
3623:10E260000200007000000000D99001E006809032AA
3624:10E2700000000000000100F872802F740000FFFF12
3625:10E280000000008002000090270000000000001045
3626:10E29000090036320000801200000014094087D2C5
3627:10E2A0000000E7129FD8018022216EBC0000000010
3628:10E2B0000B010080020000700000E7129FE0018067
3629:10E2C000C2216EBC000000000B0100800200007043
3630:10E2D0000000E7129FB00180D2216EBC0000000058
3631:10E2E00000010080020000700000E9120668018051
3632:10E2F000825B87BC00000000006801E006408732B6
3633:10E300000000EB1237B001E0064087B200000000C9
3634:10E31000000000F8D2802F340000000000D801E097
3635:10E32000068084320000000000E101E006008772F0
3636:10E330000000FFFF000000800200009000001613A4
3637:10E3400008000080028092BC0000FB1204C101841E
3638:10E3500002006EB20500000000C001E8868D923711
3639:10E360000300000000C401E8868D92370000000021
3640:10E3700000000080020000300300000000C0012CFB
3641:10E38000898D6E360000000000C4012CA9DB923A92
3642:10E39000000000000000002C29C0923600000000A0
3643:10E3A0000000002C19FB923F000000000000002834
3644:10E3B0002980923A000000000000002CA9E4923F5E
3645:10E3C000000000006FCC01E826FB923E0000000038
3646:10E3D00000B901E0060000520000000000000094B7
3647:10E3E000028092320000000000C001E006402832A6
3648:10E3F000100000006FCC01E886CD2A360000000036
3649:10E4000000B901E0060000520000FFFF000000809C
3650:10E41000020000900000161304B0008002006EB2EB
3651:10E4200000000000009001BC08006E3200000000F7
3652:10E4300000B001BC88DB8B3E00000000009801BCEE
3653:10E4400088DB8B3A00000C139F0000BC88E18BBC7A
3654:10E4500000000C13040C0240A8DB8BBE000000007F
3655:10E4600000B00004881B843E0000091304B1008042
3656:10E47000825B80BC00000000000100F8C2802F74A5
3657:10E4800000000000040C0280A25B807C00000C13E2
3658:10E490000468017819006EB60000000002000080D8
3659:10E4A000E265807C2900000000000010090036327F
3660:10E4B000000080120000001409C08BD20000000090
3661:10E4C0000000008812002C3A0000FFFF00000080CE
3662:10E4D000020000900000161304310280A2DB2CBC65
3663:10E4E0000000161380000080A2802FB608000000F4
3664:10E4F000001C01E876208139EEFF0000000100F8E1
3665:10E50000828D2F710000FFFF00000080020000904C
3666:10E5100000001613000000B40F40FB940000000040
3667:10E52000000000880F402B32000000000000009027
3668:10E530000F00283200000000000000940F00293274
3669:10E5400010000000000000B85F461839FF0000000E
3670:10E550000000009C0F003632000000000000009C0C
3671:10E560005FCAF935000000000000004403C0F93222
3672:10E5700000000000000000E4030000324100001031
3673:10E58000000000E00300373200000000000000E45B
3674:10E590000300003240000010000000E003003732AA
3675:10E5A00000002513670000980F802AB200000000C9
3676:10E5B000000000A8020000320000231312C186E010
3677:10E5C00007C021B20000000000B886C006802A32D1
3678:10E5D0004C420000000000A8020036322713381415
3679:10E5E000000000B00F003692000000000000009C08
3680:10E5F0000200003200012414000000AC0F0036D2EB
3681:10E6000000000000000000AC0F802A320020000053
3682:10E61000000000A802003632000000000000009C4C
3683:10E620000F007E3200000000000000A00F007E32CC
3684:10E6300000000000000000A40F007E320000000077
3685:10E64000000000A80F007E3200000000000000A8BB
3686:10E6500002C0FA3200000000000000E007C0F932FA
3687:10E6600000000000000000E00700FA320000000097
3688:10E67000000000E00740FA3200003B13000000E019
3689:10E680000780FAD200000000000000E00780FB32A3
3690:10E6900001006213040100B48F4DFBB002000000C2
3691:10E6A000000000A002000039408000000000000CC3
3692:10E6B000ABCDB032100000000000000C5BCAB039D6
3693:10E6C000000000000000000C2BFEB03200006114BE
3694:10E6D000000000800200009000000000000000F830
3695:10E6E0000300013200000000000100E007803F52FB
3696:10E6F00018000000000000F8738A023900000000D2
3697:10E7000000000044530A1635000000000000009C81
3698:10E710000F80963200000000000000A00FC096326B
3699:10E7200000000000000000A40F009732A260030068
3700:10E730000000005803003732481300000000005C5E
3701:10E74000030036320000000000000050830D00344A
3702:10E750000000000000000048830D003400000000AD
3703:10E7600000000044530A003400003600000000801E
3704:10E7700002000090000000000000006809C0F932AB
3705:10E78000000000000000006C0900FA3200000000E8
3706:10E79000000000700940FA3200005A1300000080A7
3707:10E7A0000200009002000000000000A0F20B0039FF
3708:10E7B00000004F13800100801240B0B6000000003E
3709:10E7C000000000043B40B0330000000000000004E3
3710:10E7D000FD4BD035000053130000000C0B00979246
3711:10E7E00002000000000000A0F20B003900005313EB
3712:10E7F000000000046B01979400005313120000689E
3713:10E80000094020B2000054131200006C094020B2ED
3714:10E810000D000000000000FCA2E5163800005913AE
3715:10E820009F000080028096B200000000000000708F
3716:10E8300009C0963200005A130000006C09C0FD9216
3717:10E840000000591312000070094020B200000000BF
3718:10E850000000009C0200003200000000000000D810
3719:10E860000200003202005313040100BCAF2517B8A8
3720:10E8700006005113040000BCAF6516B800004C132D
3721:10E880000400008022C0FBBC00006A13040000806A
3722:10E8900012C1FBBC200053130401008082CDFBBCDD
3723:10E8A00002000000000000A0F20B003900006B1312
3724:10E8B00000000080020000D0641300000000008807
3725:10E8C00082CDF93A00005A14000000800200009046
3726:10E8D00000009313000000800200009000009413D9
3727:10E8E00000000080020000900000981300000080EB
3728:10E8F000020000900000A0130000008002000090C1
3729:10E900000000F91300000080020000900000531383
3730:10E91000000000DC0F0097920000000000000000E3
3731:10E920000700033240420000000000A80200363217
3732:10E93000000000000008000007802A3200000000EC
3733:10E9400000100000070097320000000000180000CF
3734:10E9500007C096320880701312000040028036B261
3735:10E960000000000000000080020000300000721370
3736:10E970001200009C0FC021B21D007513040000801E
3737:10E9800072BE17B800007213000000F81E80EF9AE4
3738:10E99000130000000000009C7FBE173800007813B1
3739:10E9A0000400008012C0F9BC00007213000000F8DF
3740:10E9B0001E80EF9A000000000000009C0F007E32D5
3741:10E9C00000000000000000A00F007E3200000000E8
3742:10E9D000000000A40F007E320000000000010000D3
3743:10E9E0000700FA52000000000000009C0200003204
3744:10E9F0004C420000000000A8020036320000000077
3745:10EA00000008000007802A3200004E140000008039
3746:10EA1000020000D00000521400000080020000D06C
3747:10EA2000000000000000000CCBC1B034000000006A
3748:10EA30000000009C0200003200000000000000D82E
3749:10EA400002000032000081110000002809C0B0D28D
3750:10EA50000000821304000080028092B2000086133E
3751:10EA60001200009C0FC021B21D0089130400008019
3752:10EA700072BE17B800008613000000F81E80EF9ADF
3753:10EA8000130000000000009C7FBE173800008C13AC
3754:10EA90000400008012C0F9BC00008613000000F8DA
3755:10EAA0001E80EF9A02008E13040100B48F4DFBB05C
3756:10EAB00000005313000000800200009008000000D6
3757:10EAC000000000F89340013900000000000000B48D
3758:10EAD0001F40FB35FE0000000000004803003632F6
3759:10EAE0000000000000000044030000340000821316
3760:10EAF0000000000C8BC1B09400005E140008000000
3761:10EB00000740FA9200004E14000800000740FAD2B5
3762:10EB10000880951312000050028036B20000531492
3763:10EB200000000080020000D000006014000000809F
3764:10EB300002000090000800000000009C0F00363228
3765:10EB400000040100000000A80200373200000000AD
3766:10EB5000000000A00200003200000000000000E001
3767:10EB60000700B03200000000000000A012002A3AA6
3768:10EB700000009B130401009C1FC0F9BC00040100AD
3769:10EB8000000000A80200373202005D14000000A05F
3770:10EB9000F20B00990000A813040100800240FAB2B1
3771:10EBA00000040100000000A8020037320000AA1390
3772:10EBB00000000080020000D00000B71300000084B5
3773:10EBC000020000D200000000000000E007C03C325C
3774:10EBD0000000A4138E010080024028B2000401004E
3775:10EBE000000000A40F0037320000931300000080E3
3776:10EBF0000200009000040100000000A4CF4DFA3A8A
3777:10EC0000000093130000008002000090000000004C
3778:10EC10000000009C0F00003210000001000000AC5A
3779:10EC20000F0037320000BC1300000080020000D04B
3780:10EC30000800AC130401008082CDF9BC0000000084
3781:10EC40000000009C0F0000320E000001000000AC2C
3782:10EC50000F0037320000BC1300000080020000D01B
3783:10EC60000B00B0130401008082CDF9BC200000002D
3784:10EC70000000009C0F0036320F000001000000ACC5
3785:10EC80000F0037320000BC1300000080020000D0EB
3786:10EC90002700B4130401008082CDF9BC00000000FD
3787:10ECA0000001008002000050000000000000009CF5
3788:10ECB0000F0000320F000001000000AC0F003732DF
3789:10ECC0000000BC1300000080020000D02000B91337
3790:10ECD0000401008082CDF9BC00000000000100802A
3791:10ECE0000200005000000000000000E403C0F93200
3792:10ECF0000D000001000000E00300373200000000BA
3793:10ED0000000000E003C0FA3200000000000000E054
3794:10ED100007403E32000000000001009C1FC0F95A6D
3795:10ED200000000000000000E003C0F9320000000015
3796:10ED3000000000E007403E32000000000000009CA0
3797:10ED40001FC0F93AFF000000000100AC8FCDF95060
3798:10ED5000000000000000009C0FC02F3200000000E7
3799:10ED6000000000FC0200003200000000000000E093
3800:10ED700007803E3200000000000000FC12C02F3A65
3801:10ED80000F00C7130401008082CD2FBC00000000DB
3802:10ED9000000000E007803E3200000000000100FC9F
3803:10EDA00002C0F95200000000000000E007003A3203
3804:10EDB00000000000000000E007403A3200000000C0
3805:10EDC000000000E007803A3200000000000000E090
3806:10EDD00007C03A32000000000000009C0FC02F3234
3807:10EDE00000000000000000FC0200003200000000F3
3808:10EDF000000000E007003D3200000000000000E0DD
3809:10EE000007403D320000D213830100FC12C02FBA2C
3810:10EE100000000000000100FC02C0F95200000000E8
3811:10EE20000000009C0F0000320C00000000000008F1
3812:10EE3000733E003900000000000000E0070030329F
3813:10EE4000000000000000009C1FC0F93A7000D713BA
3814:10EE50000401008082CDF9BC000000000000000C1D
3815:10EE60000300003200000000000000E00700303224
3816:10EE7000000000000000001003000032000000004D
3817:10EE8000000000E007003032000000000000009C9D
3818:10EE90000F00003200000000000000A00FC0293267
3819:10EEA000000000000000009C02C0F93200000000D9
3820:10EEB000000000A40FC02C32000000000000009CE5
3821:10EEC0000200FA32180000000000002C737EFA39AC
3822:10EED00000000000000000E0070030320000E013F6
3823:10EEE0008501009C1FC0F9BA0000000000010080ED
3824:10EEF00002000050010000010000009C0F003732AA
3825:10EF00000000C11300000080020000D00E00EF13CB
3826:10EF10000401008082CDFABC00000000000000E087
3827:10EF20000700003200000000000000E0070000328F
3828:10EF300000000000000000E0070000320000E913BC
3829:10EF40000000009C3FC0F99A1C00E91304010080F6
3830:10EF500082CDFABC0200C1130000009C8FCDF9DA0B
3831:10EF600000000000000100800200005001000002CB
3832:10EF70000000009C0F0037320000C1130000008029
3833:10EF8000020000D00E00F7130401008082CDFABC0D
3834:10EF900000000000000000E0070000320000F31352
3835:10EFA0000000009C1FC0F99A2600F31304010080A2
3836:10EFB00082CDFABC00000000000100800200005079
3837:10EFC00000000000000000A80F40293200040100EA
3838:10EFD000000000A8020037320000E81300000080A3
3839:10EFE000020000D00000F21300000080020000D0F8
3840:10EFF0000000C51300000080020000D000000000E7
3841:10F00000000000E00780183200000000000000E06F
3842:10F0100007401A3200000000000000E007001A322A
3843:10F0200000000000000000E007801A32000000002D
3844:10F03000000000E007C01A3200000000000000A03D
3845:10F040000F000032A26003000000005803003732B6
3846:10F050000B1400000000005C0300363200000000CA
3847:10F060000000009C0F802A3200000B140400008076
3848:10F07000024029B20000000000000050833E00342E
3849:10F080000000000000000048833E00340000000043
3850:10F0900000000044530A003400000C1400000088F3
3851:10F0A0000F402B9200000000000000900F0028325B
3852:10F0B00000000000000000940F0029320000000052
3853:10F0C000000000980F802A3200000000000000A815
3854:10F0D00002C0F93211143814000000B00F0036924B
3855:10F0E0000700141404000080824D29BC00000000B9
3856:10F0F000000000A01F00FA3A000008140000009C65
3857:10F100000F802A92C0010000000000AC0F003632D0
3858:10F11000010000000000009C0200363200002414B0
3859:10F1200000000080020000D01F001A1404000080BC
3860:10F1300082CD29BCC0000000000000AC8FCDFA3A9F
3861:10F14000000016140000009C12C0299A0000D6137B
3862:10F1500000000080020000D00000CC1300000080FE
3863:10F16000020000D00000221404000080528AFABC81
3864:10F17000A260030000000058030037322214000090
3865:10F180000000005C03003632000000000000005068
3866:10F19000A33E00340000000000000048A33E0034FD
3867:10F1A0000000000000000044530A00340004010085
3868:10F1B000000000A40F00373200009313000000800D
3869:10F1C0000200009000000000000000C402C0FA32FB
3870:10F1D000030000000000009C0F0036320000000019
3871:10F1E000000000BC0F402F3200002B140400009CD4
3872:10F1F0001FC0F9BC00002A140400008002402FB296
3873:10F2000000002714000000E007002C9200002714E3
3874:10F21000000000E00700369200000000000000E05F
3875:10F2200007402C3200000000000000E007802C3274
3876:10F2300000000000000000E007C02C3200000000C9
3877:10F24000000000E007002D3200000000000000E098
3878:10F2500007402D3200000000000000E007802D3242
3879:10F2600000000000000000E007C02D320000000098
3880:10F27000000000E007C0FB3200000000000000E0DA
3881:10F2800007802F3200000000000000E007C02F328E
3882:10F2900018000000000000F8730A023900000000A6
3883:10F2A000000100E007803F52FF0000000000004422
3884:10F2B0000300363200000000000000E00700F932D1
3885:10F2C00000000000000000E00740283200000000BD
3886:10F2D000000000E00780F832030000000000009CFE
3887:10F2E0000F00363200000000000000BC0FC02B32BF
3888:10F2F000000041140400009C1FC0F9BC0000401431
3889:10F300000400008002C02BB200003D14000000E0A9
3890:10F3100007C0289200003D14000000E0070036926C
3891:10F3200000000000000000E00740F932000000008B
3892:10F33000000000E00740293200000000000000E06B
3893:10F340000780293200000000000000E007C02932D9
3894:10F3500000000000000000E007002A32000000006A
3895:10F36000000000E007402A3200000000000000E03A
3896:10F370000780F93200000000000000E007C02A32D8
3897:10F3800000000000000000E007C02F320000000075
3898:10F39000000000E007402B3200000000000000E009
3899:10F3A00007802B3200000000000000E007C0FB32A5
3900:10F3B00000000000000000880200FB320000000096
3901:10F3C0000000009C0200003200000000000000D895
3902:10F3D0000200003200000000001000000700973219
3903:10F3E000000000000019000007C096520880521467
3904:10F3F00012000048028036B20000000000000080C9
3905:10F4000002000030000054141200009C0FC021B212
3906:10F410001D0057140400008072BE17B80000541479
3907:10F42000000000F81E80EF9A130000000000009C0E
3908:10F430007FBE1738000000000400008012C0F95C95
3909:10F4400000005414000000F81E80EF9A0000000035
3910:10F45000000000B40F40FB35000000000000009CDD
3911:10F46000020000324C420000000000A802003632C8
3912:10F47000000000000008000007802A3200004E143F
3913:10F4800000000080020000D0000052140000008044
3914:10F49000020000D0000000000000000CCBC1B0341E
3915:10F4A000000000000000009C02000032000000008C
3916:10F4B000000000D80200003200006B140000002899
3917:10F4C00009C0B0D20000611404000080028092B232
3918:10F4D000000065141200009C0FC021B21D006814CA
3919:10F4E0000400008072BE17B800006514000000F828
3920:10F4F0001E80EF9A130000000000009C7FBE1738AA
3921:10F50000000053130400008012C0F9BC0000651411
3922:10F51000000000F81E80EF9A00000000000000FCD0
3923:10F520000200003202000000000000A0F20B0039CF
3924:10F5300000006F14040100280934B0BA0000000074
3925:10F54000000100280900005200000000000000A88F
3926:10F5500022C02F3700000000000084C037ACB0325A
3927:10F56000000000000000000C0B000032FFFF000054
3928:10F57000000000C0AF4DB030000075148000008066
3929:10F580000240B0B600000000000000C06F01FC3572
3930:10F590000000000000000000073F013200420000B0
3931:10F5A00000080000878D2A3A0000000000100000CB
3932:10F5B0000700B03200000000001800000700D03241
3933:10F5C00000000000000000C03FC13834000000000F
3934:10F5D00012010048F201FC5400007A14000000807F
3935:10F5E000020000900000FFFF000000800200009079
3936:0CF5F000000036000000008002000090C7
3937:00000001FF
diff --git a/firmware/sxg/saharadownloadB.sys.ihex b/firmware/sxg/saharadownloadB.sys.ihex
deleted file mode 100644
index 0309852443b6..000000000000
--- a/firmware/sxg/saharadownloadB.sys.ihex
+++ /dev/null
@@ -1,3385 +0,0 @@
1:10000000020000005CD300000C00000000000000B3
2:10001000FF1F00000100000000000088824D293A07
3:100020000000400300000080020000900000090072
4:100030000000008002000090000009000000008025
5:100040000200009000000900000000800200009003
6:10005000000009000000008002000090000009007C
7:1000600000000080020000900000090000000080F5
8:1000700002000090000009000000008002000090D3
9:10008000FEFF0000000000AC020036320000360027
10:10009000000000A80200009200003610000000805E
11:1000A0000200009000003610000000800200009066
12:1000B00000003610000000800200009000003610A2
13:1000C0000000008002000090000036100000008058
14:1000D0000200009000002000000000D80F8028924D
15:1000E00000002100000000D80F80289200002200AC
16:1000F000000000D80F80289200002300000000D8E4
17:100100000F402B9200002400000000D80F8028929E
18:1001100000002500000000D80F8028920000260073
19:10012000000000D80F80289200002700000000D8AF
20:100130000F80289200002800000000D80F8028922D
21:1001400000002900000000D80F80289200002A003B
22:10015000000000D80F8028920000360000000098B0
23:100160001E80E99A00002C00000000D80F80289221
24:1001700000002D00000000D80F80289200002E0003
25:10018000000000D80F80289200002F00000000D847
26:100190000F80289200003000000000D40F00009271
27:1001A00000003000000000D40F400092000030003A
28:1001B000000000D40F80009200003400000000D442
29:1001C0000FC0009200003000000000D40F00019228
30:1001D00000003000000000D40F4001920000300009
31:1001E000000000D40F80019200003000000000D415
32:1001F0000FC0019200003000000000D40F000292F6
33:1002000000003000000000D40F40029200003000D7
34:10021000000000D40F800292000036100000008021
35:100220000200009000003000000000D40F00039294
36:1002300000003000000000D40F40039200003000A6
37:10024000000000D40F80039200003000000000D4B2
38:100250000FC0039200000000000000D05F3F003498
39:10026000000036100400008042FFFCB000000000D7
40:10027000000000881280FD3A000036100000008067
41:10028000020000903610361002010080828DFDBC05
42:1002900000000000000000881280FD3A000000000D
43:1002A000000000F803C001323800000000010084A3
44:1002B000824D281A000036000000007409400092A8
45:1002C00000004F00000000FC020000920000480007
46:1002D000000000800200009000004D00000000902F
47:1002E0000E80189200008F020000000008C02092CB
48:1002F00000007F00000000000800219200008D0235
49:10030000000000000840219200007C000000000076
50:10031000088521900000F202000000EC02C0229249
51:100320000000CE0300000080020000900000560094
52:10033000000000FC0240189D00005100000000D0A9
53:1003400002000092000020030000008002000090E4
54:100350000000361000000080020000900000000045
55:10036000000100800200007000004C00000000004E
56:1003700009C0219200004A0012010000088522B045
57:1003800018003600000000F8738A0299000084000B
58:100390006A000080020000B008008400000000F83D
59:1003A0002340019900000000000100E80200907263
60:1003B0000000361080010080B200E9B600003E0364
61:1003C0000000007C1EC0E79A08000000000000F852
62:1003D000134001390000320300000008B801009406
63:1003E000000036100300007809401ABD000000002C
64:1003F000000000A0E125003408000000000000F823
65:10040000B340013900003E03B20000D8020000B240
66:1004100000004005001001F802006E920000590033
67:100420000A0100CC020000B200006A00030100FCD7
68:10043000024019BD08003E03000000F8A3400199E6
69:10044000000000000000008401C02F320000000006
70:1004500000000090F1010034000000000000009452
71:1004600001C02F3202005C00B00000A0F20B00B906
72:1004700000005F000401008002C0B0BC0000680002
73:10048000A000008002000090000061008001008058
74:10049000F24BD0B600006800A0000080020000907F
75:1004A00000000000A0000004FD4BD03400006600F6
76:1004B000800100801281FCB600002D0F000000D8E2
77:1004C000020000D218000000000000F8730A03398F
78:1004D00068003600000000C0020036920000040FE1
79:1004E000000000D8020000D218003600000000F81A
80:1004F000730A03F900005900030100FC024018BD13
81:1005000000007B00030000FC024019BD0000000059
82:100510000000009401C02F320000000000000080A5
83:10052000F1010034000000000000008401C02F32FF
84:1005300002006D00B00000A0F20B00B900007000D6
85:100540000401008002C0B0BC00007900A00000805F
86:10055000020000900000720080010080F24BD0B6D3
87:1005600000007900A0000080020000900000000060
88:10057000A0000004FD4BD034000077008001008013
89:100580001281FCB600002D0F000000D8020000D23E
90:1005900018000000000000F8730A033979003600E3
91:1005A000000000C0020036920000040F000000D8D6
92:1005B000020000D218003600000000F8730A03F9A8
93:1005C00000006A00030100FC024019BD0000590050
94:1005D000030100FC024018BD08003E03000000F8C3
95:1005E000A340019908000000000000F873400139A1
96:1005F0000000840080010080E20180B600008100DC
97:1006000000000080020000900800ED020C0000F8DD
98:10061000534001B90000830080010080E20180B6F0
99:100620000000361012000068020580B0000032039E
100:100630000000006C1FC0F69A0000000000000000DF
101:100640000805803000000000000000FC02000132BC
102:10065000000000000000001008803D320000000093
103:10066000000000D40200003202A0000000000000E0
104:10067000A90D8032000088001200005402A438B294
105:10068000000200800000002C0800373218003600FD
106:10069000000000F8730A03F90000000000080004DD
107:1006A00008807232000090009F00005C080072B267
108:1006B00087008F008001008082CD85B00000A100FE
109:1006C0000000002CD8C182940000A1000000002C82
110:1006D00088C18294000F99000401008082CD85B00A
111:1006E00000009900800000804281FCB600003610B6
112:1006F00012000068020580B0000000000000006CDD
113:100700001FC0F63A00000000000000FC02000132A9
114:1007100000009700040100DC43603DB30000320399
115:10072000000000FC0200009218000000000000F829
116:10073000738A033994003600000000C0020036922C
117:1007400010009F0087000078792116B801009F00F3
118:1007500004010080828D97BC8700A8008700007884
119:1007600089CD85B000009E0004010080128097BCF6
120:100770000000A1000000002CD8C182940000A1005C
121:100780000000002C88C182940000A8008001008035
122:10079000F2C085B60000A8000000002C98C1829429
123:1007A0000000A70080010080D2C182B60000A8002E
124:1007B000800100807280FCB600000000001800A8D4
125:1007C000423D723000000000541889FCF2C07C30B9
126:1007D0000000CB0080010080F2C185B60000A900B6
127:1007E00000000080020000900000A3008000008054
128:1007F0008280FCB600000000540000FC02000032C1
129:100800008000802000000080C2CD85300000BE0046
130:100810000B000080020000B018000000000000780B
131:1008200079A116382000CB0004000080828D97BC8F
132:100830000000B500800100806280FCB68700B50032
133:100840008700007889CD85B00000B10004000080E9
134:10085000128097BC0000B50004010080228097BC84
135:100860000000B5008001008072C185B61000000054
136:1008700000000078796116380000BC000401008097
137:10088000328097BC0000CB000000002CB8C18294DD
138:100890000000BC00800100805280FCB60000BC005B
139:1008A0008000008072C185B60000BC00800100801D
140:1008B00002C185B60000BC0080010080D2C185B6AF
141:1008C000180000000000007879E116380000BC0034
142:1008D00004010080328097BC0000CB000000002C97
143:1008E000C8C1829400000000000000040800043227
144:1008F0000000CB000000002CA8C18294080000007A
145:1009000000000078792117380000CB000400008037
146:10091000328097BC0000CB0004010080228097BC8D
147:100920001F0000000012000889CD72300500000091
148:1009300000120000B9DC173800000000000000A819
149:10094000220090370000CB008000868022247CB6F5
150:100950000000361012000068020580B000000000A0
151:10096000000000FC020001320000C900040100DCAC
152:1009700043603DB300003203000000FC020000921F
153:1009800018000000000000F8738A0339C600360022
154:10099000000000C0020036920000CE00120100608C
155:1009A000084023B2008200000000000808803632B0
156:1009B0000000C500000000641F40F69A00003610D9
157:1009C00012000024080023B200003610120000209C
158:1009D00008C023B20000361012000018088023B2AD
159:1009E00000000000000000FC020001320000D50001
160:1009F000040000DC43603DB318000000000000F874
161:100A0000738A0339D1003600000000C0020036921C
162:100A100000000000000000FC020085320000000021
163:100A2000000000D80280013200000000000000D069
164:100A30000200003200C0E1001801000CA8CD3EB257
165:100A40000000D50012000038028081B200000000D2
166:100A50000000003C02008232000000000000003074
167:100A600002408232000000000000003402008632A2
168:100A700020800000000000080880363200000000DE
169:100A80000000005C1FC0F53A00003203120100684C
170:100A9000020580B0000036100000008002000090C7
171:100AA0000000000000180078090072320023E40002
172:100AB00004010080A2CD82B00000E500000000002B
173:100AC00009000092000036109F16000029C172BC78
174:100AD00000000000001800000780813200000000C4
175:100AE0000020000007008232000000000028000003
176:100AF0000780973210000000003000001720903966
177:100B0000000000000038000007C082320000000032
178:100B1000000000D8020000320000000000000000C9
179:100B2000074080320000EE0080010080A2C182B642
180:100B30000000EF000008000057008097050000004B
181:100B40000008000007A0043900003610041000005F
182:100B5000074082B200000000001800000700863243
183:100B60000000F10012000050F2C138B41800360045
184:100B7000000000F8730A03F9000036101200006844
185:100B8000020580B00000F4001200004802C080B2EC
186:100B900000003203CA010008E881809408000000C8
187:100BA000000000F89340013910000000540000FCE0
188:100BB000824D90360000F800F00100D8020000B22B
189:100BC00000000000620401A802C06E3200000000B4
190:100BD0000004010059C06E370000000000040178D5
191:100BE00019C06E3A000000004E0401EC06BD9730BB
192:100BF00000000000E00000F41E40EF3A000000009A
193:100C000000188BCC074000320000000000000000FC
194:100C100007400932000000000008000077C02937B3
195:100C20000000361004100000173D90BA00000000CC
196:100C3000001800000780F432000003011200004099
197:100C4000F2C138B400000000000000FC32C02F30B8
198:100C5000000000000000001008803D32180036003F
199:100C6000000000F8730A03F900000000000000D43F
200:100C700002000032000090018038008022C072B66D
201:100C800000000C01120000C8020020B20000130195
202:100C90001201005C088020B20000361012000060D3
203:100CA00002802CB218000000000000F8738A03399B
204:100CB00009013600000000C002003692000000006A
205:100CC000000000F81F80FF3A00000000000000FC58
206:100CD00032008530000068010400008042603DB3AE
207:100CE00018000000000000F8738A03390F01360075
208:100CF000000000C002003692080000000000000062
209:100D000088CD853700000000000000200800723206
210:100D100000000000000800240800723200003610B5
211:100D20000410006C080072B2000000000018004CB3
212:100D3000080072320000361004200018080072B259
213:100D4000000000000030002808007232000000009F
214:100D5000002800300800723200000000000000602F
215:100D600008808232000022010600008062A082BC5E
216:100D7000000000000000000007000632070000002D
217:100D800000080000774A09390000361004100000FE
218:100D9000070082B200000000CA190000074082323A
219:100DA0000000210112000040F2C138B40000000030
220:100DB000000000D8024000320000470104380078EB
221:100DC000D9C572B00000260180010080028097B66C
222:100DD00000000000000000F882802F34000028018D
223:100DE00080010080128097B600000000000000F82B
224:100DF00092802F34040000000038003CB81C1738E3
225:100E0000000000000000003C28C083370000000004
226:100E1000003A002C08C07232000000000000001CE4
227:100E2000B8E0833A00000000CB2900200700003220
228:100E3000000046010400008002C081BC00000000E8
229:100E40000000003478A0813E000000000000001C7B
230:100E5000D8E0813C00003501063A0080B25C83BCDA
231:100E600000000000003A000089C172370700340119
232:100E70002B010004790A04B900000000CB00000433
233:100E80001941903400003801003A002C070000920C
234:100E900000000000003A002CD7E0723C0000000087
235:100EA0000000000009000032000000000000000403
236:100EB00009000032000000000000000007648332D7
237:100EC000000000000008000007008032000036101B
238:100ED0000410000007C086B20000000000180000E7
239:100EE00007C084320000550104000028D8A082BC4D
240:100EF0000000000000000000D820803A00004101FE
241:100F00000400008072802DBC00003F0112000044EC
242:100F100012E438B200004201000000D812802D9A7D
243:100F20000000BD0F00000004F94190F400004401EE
244:100F300004000018D8A081BC00002D010000006C46
245:100F4000D8E0869A00007A0F0000004408802DF255
246:100F500000002D0100000030080000920000000099
247:100F6000CB19002007000032070049012B010004C3
248:100F7000790A02B900000000CB0000041941903446
249:100F8000000000004D000000A7A0813E000000000E
250:100F90000008000007008032000036100410000036
251:100FA00007C086B2000000000018000007C08432AD
252:100FB0000000550104000028D8A082BC00000000F9
253:100FC00000000000D820803A000052010400008098
254:100FD00072802DBC000050011200004412E438B2AF
255:100FE00000005301000000D812802D9A0000BD0FB0
256:100FF00000000004F94190F400007A0F0000004462
257:1010000008802DF200004701000000300800009227
258:101010000000000000000004F94190340000560177
259:101020001200004412E438B218003600000000F844
260:10103000730A03F9000000000018000409807332ED
261:1010400000000000002800088980733700000000BD
262:101050000000008007008632410000000006008C7E
263:101060000700363200005F012908008007C085B202
264:10107000000062012810008C070000B2000063012C
265:101080000012008407000092000000000010008C95
266:10109000F7E0823A0000620128180080074090B211
267:1010A00000006301001200840700009200000000AD
268:1010B0000012008427E482320000660104000080F0
269:1010C00042603DB318000000000000F8738A033945
270:1010D00063013600000000C00200369200000000EC
271:1010E000000000FC02008532000036101200005C97
272:1010F00052812CB400000000000000D802800132B0
273:10110000000000000000008002003B3208406A013D
274:10111000F0010008088036B2000000000004013829
275:1011200008C06E3200000000E00000F41E40EF3CFA
276:10113000000071010B01008C080000B200006E017C
277:10114000F2010080020000B000000000000000F08A
278:101150000E003A3200008201E20000800E8083928D
279:1011600000007101F2010078C93B3ABC00007B012C
280:1011700002010080828097BC00000000000000A8EF
281:101180000200E832000076010400008022A22ABC9E
282:1011900000007A0104198B8002C07CBC00000000B2
283:1011A0000000008C18C0883A00000000000000A871
284:1011B00012802A3A00000000000000A802BD2A3078
285:1011C0000000740104010080E2A02ABC00007F013D
286:1011D0000200008082C088BC00000000E20000081D
287:1011E0000800003200000000000000A802808832E1
288:1011F0000000000000188BCC070000320000320312
289:10120000000000DC03000092000000000000003835
290:1012100008802A3200000000000000F00E003A3280
291:1012200000000000E20000800E802A320000000072
292:10123000000000A8028088320000000000188BCC5B
293:101240000700003200000000000000DC0300003254
294:101250000000000000000000078083320000000052
295:101260000000000079C02937602000000000000065
296:10127000890D903A00000000CA0100D812802D3A72
297:101280000000000000000000070001320000000024
298:10129000000800000700903200000000001000006D
299:1012A0000740E83200000000001800000780E83224
300:1012B00000000000000000FC0200003200003203C9
301:1012C00012010048F2C138B400008E010000008015
302:1012D00002000090000000000030007808807232A8
303:1012E0000400000000380054A85C16380B00000011
304:1012F0000038002CA8DC1638140000000000001C88
305:10130000884D853A0000000000000020080072327D
306:1013100000000000000800240800723200000000F5
307:101320000010006C08007232000000000018004C31
308:10133000080072320000361004200018080072B253
309:101340000000000000280030080072320000A101F7
310:10135000083C0014188072BC00000000000000145B
311:101360001840813C00000000000000000700063229
312:101370000700000000080000774A09390000361015
313:1013800004100000070082B200000000CA1900002B
314:10139000074082320000A00112000040F2C138B4C0
315:1013A00000000000000000D80240003200000000F1
316:1013B0000000006478C029370210000000000064BB
317:1013C000884D863A000000000000008008000032CE
318:1013D0000000000000000040080000320000000093
319:1013E0004D00000077A0813E0000000000080000D2
320:1013F00007408632000036100410000007C086B295
321:10140000000000000018000007C084320000B9018D
322:101410000400001CD8E081BC000000000000006453
323:10142000D860863A0000AF010400008072802DBCB5
324:101430000000AD011200004002C038B20000B5014A
325:10144000000000D812802D9A0000AF011200004069
326:10145000F2C138B418003600000000F8730A03F92E
327:101460000000B4010401008002802DBC0000B00126
328:10147000670000F8A2802FB500003610120000E8C7
329:1014800002C021B200000000000000D8024000327B
330:101490000000B70104000018D8A081BC0000A6011C
331:1014A0000000006CD8E0869A00005D0E0000004449
332:1014B00008802DF20000A601000000300800009214
333:1014C0000000B90112000040F2C138B41800360023
334:1014D000000000F8730A03F90000BE010401008057
335:1014E00002802DBC0000BA01670000F8A2802FB571
336:1014F00000003610120000E802C021B20000C9014D
337:1015000004010080020084BC00000000000000D440
338:101510000240003200000000000000A42240853A92
339:10152000040000000018004088CD74360000000060
340:10153000000000402800843700000000000000D4B4
341:10154000020000321400C9010400001C880D84BC94
342:1015500000000000000000780961853A8000361024
343:1015600006010080828D97BC00000000000000642E
344:10157000D860863A0000B501000000D80240009211
345:101580000000CB0104000018D8A081BC0000CD01F0
346:101590000000006CD8E0869A00005D0E0000004458
347:1015A00008802DF20000000000000030080000322A
348:1015B00000000000000000D40240003200000000E3
349:1015C000000000A422C0823A000000000000003C9D
350:1015D000B860853C0400D3018100006088CD74B6FA
351:1015E0000000000000040028F8A0753C0000D401B1
352:1015F00000080074088075920000000000080028B0
353:10160000F8A0753C000000000000002808A1823C02
354:1016100000000000000000A4F2602A3A0000000070
355:101620000008004808007532000000000020007C1F
356:10163000088075320900DA01041A007088CD74B090
357:1016400009000000001A004C87CD74317F000000B3
358:1016500000000064884D8631000000000000006436
359:101660002840863A00000000000000D80240003206
360:10167000000000000010000007408632000000005B
361:10168000000000D8028000320000000000100000BE
362:101690005761863A0000E301120000C8020020B240
363:1016A0000000E6011201005C088020B20000361044
364:1016B0001200006002802CB200000E012A0100D44A
365:1016C000020000B218003600CA0000F8730A03F9DD
366:1016D00000000F01000000F81F80FF9A00000000CA
367:1016E000000000D4024000320800000000000000AA
368:1016F00088CD8537000000000000001CE8A1823E74
369:1017000000000000000000A42240853A0000000014
370:1017100000080050078084320000ED0104010080C1
371:1017200072A082BC00000000001A004CC7E17432B5
372:10173000000000000000006808E1813A0000F001AC
373:1017400090010078F9A186BA00000000000000783E
374:101750001980973A00000000002000580780973257
375:1017600000000000000000D80280003200000000ED
376:101770000000000007008432000000004008000064
377:101780005721803A0000F4011200004CF2C138B435
378:1017900000000000000000000821803A0000000066
379:1017A0000000000408C0813200000000510000D891
380:1017B00002C0003200000000000000D4020000322D
381:1017C00000000000CB190020070000320700FC01D8
382:1017D0002B010084780A02B900000000CB000084CD
383:1017E00018418834000000004D00000077A0813EC1
384:1017F00000000000000800000700803200003610E2
385:101800000410000007C086B20000000000180000AD
386:1018100007C08432000036109F000028D8A082BC88
387:10182000000014020400001CD8E081BC0000080283
388:101830002D000000D82080BA00000502120100E847
389:1018400002C021B218003600000000F8730A03F944
390:10185000000007020401008022802DBC0000080265
391:10186000CD0100D80240849200000402000000F87C
392:10187000A2802F9500000B020400008072802DBC16
393:10188000000009021200004412E238B20000120205
394:10189000000000D812802D9A000000000000008493
395:1018A000F841883400000C021200004412E238B201
396:1018B00018003600000000F8730A03F90000110256
397:1018C0000601008022802DBC00000D02670000F898
398:1018D000A2802FB500000E02000000E802C0219295
399:1018E00000000000000000D802C0003200005D0EC1
400:1018F0000000004408802DF20000FA0100000030D2
401:101900000800009200001A0280000080D2802FB6EA
402:1019100000001702120100E802C021B218003600D0
403:10192000000000F8730A03F90000190204010080A6
404:1019300022802DBC00001A02000000D802408492D0
405:1019400000001602000000F8A2802F9500000000A1
406:10195000CD000084F841883400001B0212000044CE
407:1019600012E238B200000000000000D40240003251
408:1019700000000000000000A422C0823A0000230200
409:1019800004010080420086BC0000000000080058EE
410:1019900007408732000022028F010074184087BA86
411:1019A0000000000000000074080000320000250262
412:1019B00000040058F7A0869A00000000000000789C
413:1019C000F9A0863A2800000000080058878D973C4F
414:1019D00000000000000000D80240003218000000A3
415:1019E00000000000B7608539080000000008000012
416:1019F00087CD8537000028021200004CF2C138B4B0
417:101A0000000000000000004818A0843A0000000018
418:101A1000000000D40200003200000000000000803E
419:101A200057A1863A410000000006008C07003632BC
420:101A3000000000000008008007C0853200000000A0
421:101A40000010008C0740853200000000000000D824
422:101A5000028000320000361004000058088071B285
423:101A600000000000000000800880003218003600EE
424:101A7000000000F8730A03F9000035020401008039
425:101A800002802DBC00003202000000F8A2802F95D9
426:101A90000000320204010080180088BC00003802F7
427:101AA00090190058E89C85BA00000000000000581A
428:101AB0001880853A000000000018008007858530F6
429:101AC00000003D0204010080420086BC00000000CE
430:101AD000000000D8024000320000000000000008B2
431:101AE0008980713700003E020012008427E4829250
432:101AF00000000000001200840700003200004202D3
433:101B0000270000FC020085B20000420204000080B1
434:101B100042603DB318000000000000F8738A0339EA
435:101B20003E023600000000C002003692000036106F
436:101B30001200005C52812CB40000450204010080B8
437:101B4000028082BC00006801000000D40200009204
438:101B50000000480204010018D8A081BC00005D0EFE
439:101B60000000004408802DF20000E001C7010030B1
440:101B7000080000920000E001C701006CD8E0869ADE
441:101B800008000000C60100F893400139000032034C
442:101B900080018080320B6AB600000C0E0000003C11
443:101BA000030038F200004E020406018002C06EBC41
444:101BB00000003103000601EC56E06E9A00000000C0
445:101BC000C40701EC56E06E3A08C04F021200004014
446:101BD000A2CD39B218003600000000F8730A03F9EC
447:101BE0000000361003B8000009C06EBD53020000AB
448:101BF00000000088820D903A2F007C050000001C38
449:101C000008003692000036100000008002000090AC
450:101C10002C007C050000001C0800369200003610E5
451:101C200000000080020000900000361000000080DC
452:101C300002000090000036100000008002000090BA
453:101C400038007C050000001C0800369239007C0535
454:101C50000000001C0800369208000000000000F898
455:101C60009340013900000C0E0000003C030038F2E4
456:101C700000000000000000F842802F3408C05E021F
457:101C800012000040A2CD39B218003600000000F862
458:101C9000730A03F9000000000004017809C06E32E5
459:101CA00000000000006201EC068097320000000096
460:101CB000000601EC0640003200006302B50000D8C7
461:101CC000020000B200000000A50080A0360B6A34BC
462:101CD00000000000003002E806C02C3200000000C6
463:101CE000001801E00600003200000000000000F8CB
464:101CF00082852F3000007D050000001C0800369210
465:101D000008000000000000F89340013900006C0258
466:101D100080008080320B6AB6000032030000008031
467:101D20000200009000000C0E00000038030038F2A2
468:101D300000006F020402018002C06EBC000031038B
469:101D4000000201EC56E06E9A00000000C00301ECB6
470:101D500056E06E3A00C0700212000040A28D39B207
471:101D600018003600000000F8730A03F900007C0236
472:101D70003828001809006EB200007502042101081D
473:101D800069246EBC03007D050000001C080036922B
474:101D90000000790202300080829B90BC0000780233
475:101DA0000603018012C06EBC04007D050000001C0B
476:101DB0000800369205007D050000001C08003692E0
477:101DC00000007B020603018012C06EBC0B007D0583
478:101DD0000000001C080036920C007D050000001C6D
479:101DE0000800369200007E020421010869246EBCBE
480:101DF00003007D050000001C0800369200008202EE
481:101E000002300080829B90BC0000810206030180AA
482:101E100012C06EBC04007D050000001C0800369254
483:101E200005007D050000001C0800369200008402B9
484:101E30009F31010C69246EBC000000000000000C02
485:101E4000090000320000880204310004899B90BC24
486:101E5000000087020603018012C06EBC20007D05D1
487:101E60000000001C0800369221007D050000001CC7
488:101E70000800369200008A020402018012C06EBC83
489:101E800022007D050000001C0800369200008C0234
490:101E90000401000039A490BC23007D050000001C53
491:101EA0000800369224007D050000001C08003692D0
492:101EB000080036100C0000F8634001B910009102D0
493:101EC000C50100CC022015980800ED020C0000F8B6
494:101ED000434001B910000000C50100CC02201538B4
495:101EE00000000C0E0000003C030038F200009402D9
496:101EF0003601005C080580B00F007D050000001C65
497:101F00000800369210000000002C0200A9DB853981
498:101F1000000095021200005402A438B20000000034
499:101F20000008028C08C06E3200000000000C02980D
500:101F300028806E37000000000000009C3822143713
501:101F400000009E020430002808006EB20000361027
502:101F50000410006C08006EB2000000000018004C75
503:101F600008006E32000036100420001808006EB21F
504:101F70000500A1020038020078E16E99000000001F
505:101F8000510000D802000032000000000038027842
506:101F900009C06E32050000006808000077A197397B
507:101FA0000000A3021201000009C021B2180036008F
508:101FB000000000F8730A03F900000000545401FC0B
509:101FC00002C06E321410A70204000080A20D72B08D
510:101FD0000000510F0000002809C002F20E007D052C
511:101FE0000000001C080036920000B602331500A461
512:101FF00002C072B20000EA0280010080B20172B633
513:102000000101AD0204290080828D74BC080AEA0235
514:10201000042D0080828D74BC000000000030007C24
515:10202000080075320000B402003800881800759C62
516:10203000080AEA0204290080828D74BC10000000A6
517:10204000002C007C888D7537000000000030007C7B
518:1020500068DD87320000B3029F390088188075BCA4
519:102060001000000000340088888D75370000B4022D
520:10207000000000881880889C100000000034008850
521:10208000689D88390000B7029FF1018082DB87BC20
522:102090000000EA0200000080020000900000EA0256
523:1020A00080000080B20172B6000000000008004805
524:1020B0000800753200000000001000700800753242
525:1020C00000000000001C007438A275370000BC023C
526:1020D000831B007808C074B200000000000000F804
527:1020E000C2802F340000CC029F780180C2216EBCD8
528:1020F0000000C0029F990164881B87BC0000CD02CC
529:102100009F680164885B86BA0000000000000064DC
530:102110000800003200000000001600A402C0723265
531:1021200000000000003C02A4B25B2A3A000000005C
532:10213000003A027809C06E320000CE0208010004A5
533:10214000E8A575BC1000EA020B01001C080036B2BD
534:102150000000CC0204A10180829B84BC00007D05AC
535:102160009F980180C2216EBC00007D0506B10180F0
536:10217000825B87BC0000E9020B010080020000B016
537:102180000000CD0204990180C2216EBC0000E7026C
538:1021900002D4018092FB6EBC16007D050000001C7D
539:1021A0000800369217007D050000001C08003692DA
540:1021B0001C007D050000001C080036920000D002C3
541:1021C00004A10180829B84BC0000D70206A8018084
542:1021D000825B80BC0000D40204A9018002006EBCB6
543:1021E0000000E80204A10180829B84BC0000E80298
544:1021F00004010080124080BC14007D050000001C1A
545:10220000080036920000E8029FA0017829216EBCE8
546:102210000000E8020201008012A097BC0000CC027E
547:1022200000000080020000900000E3020400008033
548:10223000028082BC0000DC0202000080A26080BC40
549:1022400006007D052C01001C080036B200C0E0022B
550:1022500004010080A28D2FB006007D050000001C47
551:10226000080036920000E00204000080A26080BCFA
552:102270000000DF020603018012C06EBC09007D056C
553:102280000000001C080036920A007D050000001CBA
554:10229000080036920000E2020603018012C06EBC04
555:1022A00007007D050000001C0800369208007D052F
556:1022B0000000001C0800369202007D053801001C59
557:1022C000080036B20000E602020C0280A25B80BC6D
558:1022D0001F007D050000001C080036921E007D05D1
559:1022E0000000001C080036920000EB0200000028ED
560:1022F000094000920000EB020000002809800092D3
561:102300000000EB020000002809C000920000EB0270
562:1023100000000028090001920E00510F0000001C6F
563:10232000080036F200007D050000008002000090E9
564:10233000100036102A0000CC022015B800000C0E48
565:102340000000003C030038F21D00F102800100781B
566:1023500009E000B81D007D050000001C0800369251
567:1023600015007D050000001C0800369200000000EA
568:102370000000001CA805283008000000000000F83C
569:102380008340013900003E0380018080320B6AB631
570:1023900000000C0E00000038030038F27E0500003B
571:1023A0000000008882CD813A0000F9021D41025CE4
572:1023B000F80168B441003103000000F8A28D2F91AC
573:1023C00010000000D02C0200A9DB85390000960225
574:1023D0001201005402A438B20000FA02000000808A
575:1023E000020000900000000304B0008002006EBCF8
576:1023F0000000000380B9008082806EB600002510C6
577:102400000078016008006EF230007C05D700001CE7
578:10241000080036920000020380010080D2812FB6AE
579:1024200031007C05D700001C080036920000040330
580:102430008001008042812FB635007C05D700001C4A
581:10244000080036920000110304A8010809006EB2CA
582:102450000000000000200208899B903E0000000060
583:1024600000A00108899B903A000011039F88010891
584:10247000899B90BC000000000034020009C06E3D42
585:1024800000000000000C020409A46E3700000D03D8
586:102490000200008012A490BC0000000000000008B0
587:1024A000198090370000110302010280829B90BCCA
588:1024B00031007C05D700001C080036920000110393
589:1024C00004B0008002006EBC001211030401008001
590:1024D000A28D2FB032007C05D700001C0800369278
591:1024E00000003103000000F872812F950000000009
592:1024F000000000F842802F3408C050021201004052
593:10250000A2CD39B200001303000000800200009049
594:1025100008000000000000F89340013900003E036D
595:1025200080018080320B6AB60000000000000014B9
596:102530000840903200000C0E00000038030038F212
597:102540007E0500000000008882CD813A080000006E
598:10255000000000F89340013900003E0380018080B4
599:10256000320B6AB600000C0E00000038030038F28F
600:1025700000001F030420018052206EBC26007D0550
601:102580000000001C0800369225007D050000001C9C
602:102590000800369200002503040100D81E80EDBC1F
603:1025A00000002103B70000D80EC0EDB200002403E4
604:1025B00004010080423BEEBC00000000000000E08F
605:1025C0001E00EE3A00000000A70000D00E00EE3220
606:1025D00000000000007486CC02806C320000000015
607:1025E000000000000940E7320000290380018080DC
608:1025F000320B6AB6360028031200002C82CD2EB2B0
609:1026000000002B030401008042C52CBC00002C03F9
610:10261000000000CC0200009200000000000000CC8E
611:1026200012C02C3A0000270304010000190090BCDE
612:1026300000000000007486C806C02C3208003E036B
613:10264000000000F8C34001990000FA0D0000002CC2
614:10265000090000F200003203000000800200009038
615:102660000000FA0D0000002CF90100F400003B030B
616:1026700004000028098080B200000000000000D89B
617:10268000020000320000F10E00000008080000D235
618:1026900000003B0304000080028092BC180036005A
619:1026A000000000F8730A03F900003E038001008077
620:1026B000A2802FB600003E031201000009C021B223
621:1026C00018000000000000F8730A03393E033600CA
622:1026D000000000C00200369200003E03800100802E
623:1026E000A2802FB600003E031201000009C021B2F3
624:1026F00018003600000000F8730A03F9000000001B
625:10270000000000F80200003218003600000000F857
626:10271000738A029910000000000000E403003632C2
627:1027200002000001000000E003003732000000005A
628:10273000000000E40300363204000001000000E065
629:1027400003003732AA040000000000E40300363220
630:1027500009000001000000E0030037320000000023
631:10276000000000CC0F00003200070000000000E471
632:102770000300363206000001000000E0030037329B
633:1027800020000000000000E40300363208000001D1
634:10279000000000E00300373200010000000000E408
635:1027A0000300363205000001000000E0030037326C
636:1027B00030000000000000E4030036320700000192
637:1027C000000000E00300373200A00000000000E439
638:1027D0000300363208000008000000E00300373232
639:1027E00000000000000000A0020000320000000015
640:1027F000000000000B000032000052038B0100A01B
641:1028000012002ABA00000000000000A802000032F6
642:1028100000000000000000E0070000320000550347
643:102820000601008002802ABC000000000000009C1D
644:102830000200003200000000000000D4020000325C
645:1028400000000000000000CC020000320000000088
646:10285000000000D80200003200000000000000D09C
647:102860000200003200000000000000DC0200003224
648:1028700000000000000000F802000032000000002C
649:10288000000000C80200003200000000000000C488
650:1028900002000032000058038501009C12C029BAD2
651:1028A00000000000000000E4030036320B000004CA
652:1028B000000000E00300373280000000000000E468
653:1028C0000300363213000004000000E0030037323A
654:1028D00000200000000000E4030036320C00000479
655:1028E000000000E00300373200000000000000E4B8
656:1028F000030006320F000004000000E0030037323E
657:1029000000440000000000E4030036320D00000423
658:10291000000000E00300373200040000000000E483
659:102920000300363214000004000000E003003732D8
660:102930009F000000000000E4030036321500000490
661:10294000000000E00300373200000000000000E457
662:102950000300363218000004000000E003003732A4
663:1029600060000000000000E4030036321D00000497
664:10297000000000E00300373200000000000000E427
665:10298000030004321E000004000000E003003732A0
666:1029900070000000000000E4030036321F00000455
667:1029A000000000E00300373200000000000000E4F7
668:1029B0000300003220000004000000E00300373272
669:1029C000A0030000000000E40300363217000004FA
670:1029D000000000E00300373240000000000000E487
671:1029E000030036321B000004000000E00300373211
672:1029F00060000000000000E4030036321C00000408
673:102A0000000000E00300373200000000000000E496
674:102A10000340003216000004000000E003003732DB
675:102A200000010000000000E4030036321A00000438
676:102A3000000000E00300373220010000000000E445
677:102A40000300363219000004000000E003003732B2
678:102A500080000000000000E4030036320B0000019B
679:102A6000000000E00300373200010000000000E435
680:102A7000030036320C000001000000E00300373292
681:102A8000FEFF0000000000AC020036320000000033
682:102A9000000000000900003218000000000000F8EB
683:102AA0000364023900008B0385010000190090BA0D
684:102AB00025260000000000E403003632010000017A
685:102AC000000000E00300373200000000000000803A
686:102AD0000F00003200000000000000840F000032F0
687:102AE00008000000000000F8F34001390800000071
688:102AF000000000F8E340013908000000000000F881
689:102B0000C340013908000000000000F8B34001395B
690:102B100008000000000000F8A34001390800000090
691:102B2000000000F89340013908000000000000F8A0
692:102B30008340013908000000000000F873400139AB
693:102B400008000000000000F86340013908000000A0
694:102B5000000000F85340013908000000000000F8B0
695:102B60004340013908000000000000F833400139FB
696:102B700008000000000000F81340013900000000C8
697:102B8000000000F80380003200000000000000C8D0
698:102B90003F80FC35000000000000009C0200003275
699:102BA0000000000000000000030000326E00000082
700:102BB000000000D0020036320000000000000028B3
701:102BC000034038320000361004010080D20130B6D4
702:102BD0000000A303040100D012002DBCE00300009C
703:102BE000000000E40300363203000001000000E0B2
704:102BF0000300373200000000170000D0020000324E
705:102C000000000000000000ACE10000340000000003
706:102C1000000001E00600003200000000000801E4AE
707:102C20000600003200000000000E01EC0600003239
708:102C300000000000001001E006000032000000006B
709:102C4000000000D012002D3A6E00AB03020100809C
710:102C5000820D2DBC020000000000009CAE0D02326F
711:102C600000000000000000A8020000320000000088
712:102C7000008886CC0700363200000000008A86CC2F
713:102C80000700003A002400000000000409803632EA
714:102C90000000361012000064024090B200000000F4
715:102CA000000000042940903A0000B70312000078A9
716:102CB00009C020B2000000000000007809459030F3
717:102CC0000000B50302010080C28297BC0000000032
718:102CD000000000840200003200000000000000CC70
719:102CE000030000320000BB038E010080024028B2C6
720:102CF0000000510E000000D8020000D2150F0000A5
721:102D00000000008C0E0036325200000000000074FB
722:102D10000E00363218000000000000E403003632D6
723:102D200009000002000000E003003732FECA000084
724:102D3000000000E4030036320A000002000000E058
725:102D4000030037320000C60312010000094020B220
726:102D50000000C40300000080020000900000C603D1
727:102D600012000004094020B20000C9039F01008046
728:102D7000020090B20000C80312000008094020B20F
729:102D80000200C40304010078092417B806000000FB
730:102D900000000078096416380000C40304010080B4
731:102DA000028197BCFE0000000000004403003632A0
732:102DB000FE00360000000048030036920000361086
733:102DC00012000000094020B20000CF0312000004EE
734:102DD000094020B20000D2039F010080020090B29F
735:102DE0000000D10312000008094020B200000000DA
736:102DF000000000B402009032000036100000008095
737:102E000002000090000036100000008002000090D8
738:102E10000000361000000080020000900000361014
739:102E200000000080020000900000361000000080CA
740:102E300002000090000036100000008002000090A8
741:102E400000003610000000800200009000003610E4
742:102E5000000000800200009000003610000000809A
743:102E60000200009000003610000000800200009078
744:102E700000003610000000800200009000003610B4
745:102E8000000000800200009000003610000000806A
746:102E9000020000900600EA030000000C0964169886
747:102EA00000004902000000140840909200006902EE
748:102EB0000000001408409092340015030000001C2C
749:102EC00008003692120015030000001C080036921C
750:102ED0003A0015030000001C08003692000036106E
751:102EE000000000800200009000005B02000000145F
752:102EF0000840909200001D04000000800200009035
753:102F000000001A030000001408409092EB03000038
754:102F10000000008882CD903A0D000D04000000FCF6
755:102F200002E416980D001E04000000FC02E416984E
756:102F30000D002704000000FC02E416980000340491
757:102F4000000000800200009000003D04000000002E
758:102F50000940909D000040040000008002000090A5
759:102F600000004904000000800200009000005204AC
760:102F7000000000800200009000005B0400000000E0
761:102F80000940909D00006004000000800200009055
762:102F900000006804000000000940909D00006D04DE
763:102FA00000000080020000900000DC04000000002F
764:102FB000090000920000DC040000000009400092BB
765:102FC0001D07DE04000000A0020036920000EC04A1
766:102FD0000000008002000090000036100000008019
767:102FE0000200009000001D04000000DC0F409092E1
768:102FF0000000B00400000080020000900000B50452
769:10300000000000D4020000921000CA0400000084F6
770:103010001F64149800001D04000000EC0E40909204
771:103020000000D604000000800200009000001D0493
772:10303000000000D40E4090920000D90400000080EF
773:103040000200009000006D05000000DC0E40909230
774:103050000000FB0400000080020000900800000552
775:10306000000000501F24169800000F05000000D833
776:10307000020000920D001905000000FC02E4169801
777:1030800000001A05000000D0020000920000F600C7
778:10309000000000D002000092000035100000008007
779:1030A0000200009000003610000000800200009036
780:1030B00008000000000000F8934001390000000003
781:1030C000000000780945903000003E0306010080B2
782:1030D000228097BC02001004B00000A0F20B00B9DF
783:1030E00000000000A00000046B41903400003E038B
784:1030F000800100800240B0B600003E030400008062
785:103100000280B0BC00000000000000D802000032C5
786:1031100000000000000000A822C02F3700000000BF
787:1031200000000000670100340042000000080000B9
788:10313000878D2A3A00003610041000000700B0B254
789:1031400000000000001800000700D03200001A0440
790:1031500012000048F2C138B418000000000000F866
791:10316000730A03393E033600000000C002003692A5
792:1031700008003E03000000F893400199000021047C
793:103180009F000080020090B20000000000000008D4
794:1031900009409032000000000000000409C0FD3228
795:1031A00002002104B00000A0F20B00B900000000F2
796:1031B000000000000B8090320000000000000000C2
797:1031C0000D40903200000000A00000043B40B031F0
798:1031D00000001D040400008002C02FBCF20E1D047C
799:1031E0000000008C0E00369208000000000000F87D
800:1031F0009340013902002804B00000A0F20B00B98E
801:1032000000002B04800100801240B0B600000000D6
802:10321000000000043B40B033000000000000000448
803:10322000FD4BD03500000000000000080B0000320C
804:1032300000000000A000000C1BE4B03200003E03C0
805:103240000B000080020000B0000031040400008088
806:10325000024090B21F003E03000000801140009920
807:103260000000300404000080123EF8BA00000000A4
808:10327000000000800100F83200003E0300000090D2
809:103280000140F89200003610800000800281FCB6F8
810:10329000000038049F000080020090B2000000008F
811:1032A0000000000809409032000000000000000407
812:1032B00009C0FD3200000000000000E403809032ED
813:1032C00009000004000000E00300373200000000A5
814:1032D000000000E4034090320A000004000000E017
815:1032E0000300373200001D04000000C80F81FC9469
816:1032F00000000000000000E47300903C1000000497
817:10330000000000E00300373200001D0400000080D0
818:1033100002000090000043049F000080020090B271
819:10332000000000000000000809409032000000008A
820:103330000000000409C0FD3200000000000000E4AD
821:103340000380903201000004000000E003003732E7
822:1033500000000000000000E00F809032000000003C
823:10336000000000E40340903202000004000000E08E
824:103370000300373200001D04000000E40F4090926B
825:1033800000004C049F000080020090B2000000008A
826:103390000000000809409032000000000000000416
827:1033A00009C0FD3200000000000000E403809032FC
828:1033B00003000004000000E00300373200000000BA
829:1033C000000000A80E80903200000000000000E421
830:1033D0000340903204000004000000E00300373294
831:1033E00000001D04000000AC0E4090920000550447
832:1033F0009F000080020090B2000000000000000862
833:1034000009409032000000000000000409C0FD32B5
834:1034100000000000000000E403809032050000047A
835:10342000000000E00300373200000000000000E46C
836:103430000340903206000004000000E00300373231
837:1034400000000000000000440F80903200001D04C6
838:10345000000000480F40909200005D0404010080CD
839:10346000824290BC00000000000000000900003211
840:1034700000000000000000E403009032120000048D
841:10348000000000E00300373200001D04000000408F
842:103490001F40909C000063049F000080020090B2D7
843:1034A0000000000000000008094090320000000009
844:1034B0000000000409C0FD3200000000000000E42C
845:1034C0000380903207000004000000E00300373260
846:1034D00000000000000000E40340903208000004F7
847:1034E000000000E00300373200001D0400000080EF
848:1034F0000200009000006A0404010080824290BC37
849:103500000000000000000000090000320000000080
850:10351000000000E40300903211000004000000E00D
851:103520000300373200001D04000000FC1F40909C87
852:10353000000070049F000080020090B200000000B4
853:103540000000000809409032000000000000000464
854:1035500009C0FD32030900000000002808003632CF
855:103560000000890400000030080036D200009304F7
856:1035700000000044088000D20000790404010080AB
857:10358000020084B2030E000000000028080036325A
858:103590008000890400000030080036D20000930447
859:1035A0000000004408C000D200007904040100803B
860:1035B000020084B200008004000000440800019270
861:1035C0008002000000000000070036328C45000039
862:1035D000000800000700363200003610041000001A
863:1035E000078090B2000000000018000007409032F1
864:1035F0000000000000000048F2C1383400007E04E2
865:1036000012000080020000B018003600000000F830
866:10361000730A03F920000000000000E403003632C2
867:1036200009000002000000E0030037320000000043
868:10363000000000E4034084320A000002000000E0C1
869:10364000030037328C450000000000A8020036322B
870:10365000A000000000000000090036320000000059
871:10366000000000E0070000320000860406010000B0
872:10367000190090BC00001D040000008002000090B2
873:103680008C450000000000C80200363280020000B5
874:103690000000003C0800363200000000000000344A
875:1036A0000800013200008E0402000080D2E083BCDA
876:1036B000000000000000003408C083320000A404B1
877:1036C00000000080020000F000000000000000A0E8
878:1036D000078083320000000000000030D820833AC9
879:1036E00000008C040401003CD8E083BC0000000012
880:1036F00000010080020000500000000000000040B7
881:1037000008000032000000000000004808000032FD
882:103710008C450000000000C80200363200020000A4
883:10372000000000C8828D2C3A800000000000003CA0
884:10373000080036320000000000000078098078326E
885:103740005A5A000004010080828D975C00009C049E
886:1037500002010048A89E84BA000000000000004852
887:103760001880843A00009A040601003C28C083BCFB
888:10377000000000000000007809858430100000007F
889:1037800000000048888D84360000A10490010048A4
890:10379000E8A584BA00000000000000481880843AC0
891:1037A0000000000000000048088584300000000090
892:1037B000040100800285845C0000000000010040DC
893:1037C0000840005200000000000000E403008332C3
894:1037D00001000002000000E0030037320C00AA04E0
895:1037E0000000002CD8A082F905000002000000E0D3
896:1037F00003003732000000000000008002000030AB
897:10380000000000000001003808403E720000000087
898:10381000000000E403C0823202000002000000E069
899:103820000300373202000002000000E003003732DC
900:103830000000000000000080020000300000AC0426
901:1038400080000080F2403EB60000000000010080D1
902:10385000020000700000B3049F000080020090B2DC
903:103860000000000000000008094090320000000045
904:103870000000000409C0FD320000000000000084C8
905:103880000E80903200001D04000000880E409092CF
906:1038900008000000000000F8934001390000B9045E
907:1038A0009F000080020090B20000000000000008AD
908:1038B00009409032000000000000000409C0FD3201
909:1038C00000000000000000200740F532000000006A
910:1038D0000008002007000032000000000010002057
911:1038E00007C0F53200000000001800200740F63243
912:1038F00000000000002000200780F63200000000D9
913:103900000028002007C0F632000000000030002030
914:103910000700F73200000000003800200780FF3267
915:1039200000000000000000D802000032000000008B
916:1039300000000000074009320000000000080000FD
917:1039400077C0293700000000001000000780903287
918:103950000000000000180000074090320000C6047C
919:1039600012000048F2C138B418003600000000F818
920:10397000730A03F90000000000000008C8010034C9
921:1039800000003203000000FC020000920000CC04A2
922:1039900080010080F24190B60000CD04000000C814
923:1039A0002F81FC9400000000000000C82F81FC352E
924:1039B00000000000000000800F4590300000D0049F
925:1039C00002000080027EF8BC0000000000000084BD
926:1039D0000F00F83200000000000000001940F83726
927:1039E00000000000000000843F40F83700000000A5
928:1039F000000000840F64F83A00000000000000009E
929:103A00001900F83700000000000000803F00F83780
930:103A100000001D04000000800F24F89A0000D80464
931:103A200080010080F24190B600001D04000000C833
932:103A30004F81FC9400001D04000000C84F81FC95DC
933:103A40000000DB0404010080024090BC0000000084
934:103A50000000000409C0003200001D04000000E462
935:103A60001E40909C00000000000000A8220090373B
936:103A700000001D04000086C007409092080000006E
937:103A8000000000F8934001390D000000000000FC28
938:103A900002E41638000000000000000009000232B5
939:103AA0000000E604040000800200B0B20000000044
940:103AB000000000000B00003220000000000000A009
941:103AC000820D2A3A0000E10404010000190090BCB4
942:103AD0000000E804000000287901009400000000C4
943:103AE000000000C83F80FC34408000000000002837
944:103AF000098036320000F10E000000D8020000D22A
945:103B000000003E0304000080028092BC1800000008
946:103B1000000000F8730A03393E033600000000C0BD
947:103B200002003692EA05F20404010080824D90BC46
948:103B300000000000000000EC0F00153200FE1F0026
949:103B4000000000F00F003732F0FF0000000000E836
950:103B50000F00363298050000000000F40F003632E6
951:103B60000000F804000000C84F80FC953623361092
952:103B700004010080824D90BC00000000000000ECB9
953:103B80000F80143200F81F00000000F00F003732E1
954:103B9000C0FF0000000000E80F0036329827000048
955:103BA000000000F40F00363200000000000000C8E2
956:103BB0004F80FC3404000000000000608F4D903AFC
957:103BC0000000BC0E00000080020000D000001D04B8
958:103BD00000000080020000900000FD0480010080D1
959:103BE000024090B600000000000000C86F80FC3466
960:103BF0000000FF0480010080124090B60000000029
961:103C0000000000C85F80FC3400001D04000000803C
962:103C1000020000900000020504010080324090B0D4
963:103C200080011D04000000C88F8DFC910000040578
964:103C300080000080124090B600000505000000C81A
965:103C40007F80FC9500000000000000C87F80FC34ED
966:103C50000000070580000080024090B600000805C3
967:103C6000000000C88F80FC9500000000000000C824
968:103C70008F80FC3400000B0580000080224090B64D
969:103C8000F20E00000000008C0E00363200000D0520
970:103C9000000000C81F81FC95150F00000000008C7B
971:103CA0000E00363200000000000000C81F81FC3406
972:103CB000100000000000004C1F24163800001D04F6
973:103CC000000000501F00F59C000012059F000080BE
974:103CD000020090B20000000000000008094090328D
975:103CE000000000000000000409C0FD3200000000D8
976:103CF000000000001700F53A8C44000000080000A6
977:103D0000070036320000361004100000078090B221
978:103D10000000000000180000074090320000160567
979:103D200012000040F2C138B418003600000000F85C
980:103D3000730A03F900001D040000008002000090D7
981:103D400000001D04000000EC0340909200001A05E2
982:103D5000B20000D8020000B200000000000201EC36
983:103D600016E46E3A08000000000000F893400139A4
984:103D700000004005171001F802006EB2060025058C
985:103D800004010080828D2FB003000000000000F8C5
986:103D9000828D2F3200C0050E00000028098036D227
987:103DA00000000000000201EC16C06E3C00000000A4
988:103DB000001886C80600003218003600000000F81F
989:103DC000730A03F900002605000000D002000092EB
990:103DD00000002B050419868002806CBC00000000E6
991:103DE0000000000009006E3200000000C10800045D
992:103DF00009006E3200000000C01586780FC06C32DA
993:103E0000000030058001008022802FB600003005C0
994:103E1000001886C806400092000000000040000024
995:103E200009006E3200000000C248000409006E3232
996:103E300000000000C01686780FC06C32000030050C
997:103E40008001008012802FB600000000001886C894
998:103E500006000032004000000000002809803632D1
999:103E6000000038050402018002C06EBC0000050E8F
1000:103E7000000201EC16C06EDC0000360580000080F8
1001:103E800002802FB600003805810000F822802FB490
1002:103E900000003805001886C806400092000038056A
1003:103EA000820000F812802FB400000000001886C8BD
1004:103EB0000600003200000000001086C80600003234
1005:103EC000000000000000000007C00A3200380000B7
1006:103ED0000008000007003632000036100410000011
1007:103EE000070090B200000000001800000740903268
1008:103EF00000003D0512000040F2C138B41800360041
1009:103F0000000000F8730A03F900000000170100F830
1010:103F1000A2802F3400000000001086A842806C3779
1011:103F200000004A051200703802007EB20000361010
1012:103F30001200703C02007EB2000036101200703099
1013:103F400002007EB2000036101200703402007EB211
1014:103F50000000410502010080B2822ABC000000007E
1015:103F6000170000D002000032060025050401008081
1016:103F7000828D2FB000001F050403018002C06EBCBB
1017:103F800000005505000000800200009000004C0574
1018:103F90000403018002C06EBC00005505001086C8F5
1019:103FA00046802A9600000000001086C846802A3607
1020:103FB000000050058000008012802FB603005205DB
1021:103FC000220000F8828D2FB200005205001886C82A
1022:103FD00006000092000055058000008022802FB668
1023:103FE00000000000C20100F802802F3500C0050E5D
1024:103FF00000000028098036D200000000000201EC19
1025:1040000016C06E3C18003600000000F8730A03F971
1026:1040100000000000001001E006802F3200000000C8
1027:10402000000000A8E100003400000000A20000FC35
1028:10403000020000320000320380010080A2802FB60F
1029:1040400000005B05B90100D8028001B20000320314
1030:10405000000000F80200009200000000000000389C
1031:104060001880F73A0000000000000038F8BF8330E5
1032:1040700000005F0504010080F2BD83BC0000320334
1033:10408000A90000F80200009200C066051801000CAB
1034:10409000A8CD3EB200006205840000741F40F7BA4C
1035:1040A00000003203A90000F80200009200000000A6
1036:1040B000000000740F00003200C066051801000CFB
1037:1040C000A8CD3EB218003600000000F8738A03F94C
1038:1040D00000006305000000B0020000920000000034
1039:1040E0000000007C0F8083320000000000280000E8
1040:1040F000070000320000000000300000070000321E
1041:104100000001008000380000070037320000000086
1042:10411000003C000C0780833200006B051200004851
1043:1041200002C080B200003203A9000008E801009438
1044:104130000000730504010080A2C0EDBC5200000025
1045:10414000000000740E00363200000000000000C0C5
1046:104150000E400132407E0500000000B40E003732F0
1047:1041600000000000000000C40E80073264007805E3
1048:10417000000000CC0E003692290000000000007400
1049:104180000E00363200000000000000C00E40003279
1050:10419000A08C0000000000B40E00363200000000C9
1051:1041A000000000C40EC0003200000000000000CC7F
1052:1041B0000E80023210000000000000E4337BEC3976
1053:1041C0001E000001000000E0030037320000000084
1054:1041D000000000C86EC0EC3700001D04000000D8CD
1055:1041E0000EC0ED927E0500000000008882CD813A6D
1056:1041F0007E0500000000008882CD813ABD050000E8
1057:104200000018018882CD6E3AC605000000180188AA
1058:1042100082CD6E3ACF0500000018018882CD6E3A3B
1059:10422000D80500000018018882CD6E3AE105000033
1060:104230000018018882CD6E3AEA0500000018018856
1061:1042400082CD6E3AF30500000018018882CD6E3AE7
1062:10425000FC0500000018018882CD6E3A05060000BA
1063:104260000018018882CD6E3A0E0600000018018801
1064:1042700082CD6E3A170600000018018882CD6E3A92
1065:10428000200600000018018882CD6E3A2906000041
1066:104290000018018882CD6E3A3206000000180188AD
1067:1042A00082CD6E3A3B0600000018018882CD6E3A3E
1068:1042B000440600000018018882CD6E3A4D060000C9
1069:1042C0000018018882CD6E3A560600000018018859
1070:1042D00082CD6E3A5F0600000018018882CD6E3AEA
1071:1042E000680600000018018882CD6E3A7106000051
1072:1042F0000018018882CD6E3A7A0600000018018805
1073:1043000082CD6E3A830600000018018882CD6E3A95
1074:104310008C0600000018018882CD6E3A95060000D8
1075:104320000018018882CD6E3A9E06000000180188B0
1076:1043300082CD6E3AA70600000018018882CD6E3A41
1077:10434000B00600000018018882CD6E3AB906000060
1078:104350000018018882CD6E3AC2060000001801885C
1079:1043600082CD6E3ACB0600000018018882CD6E3AED
1080:10437000D40600000018018882CD6E3ADD060000E8
1081:104380000018018882CD6E3AE60600000018018808
1082:1043900082CD6E3AEF0600000018018882CD6E3A99
1083:1043A000F80600000018018882CD6E3A010700006F
1084:1043B0000018018882CD6E3A0A07000000180188B3
1085:1043C00082CD6E3A130700000018018882CD6E3A44
1086:1043D0001C0700000018018882CD6E3A25070000F6
1087:1043E0000018018882CD6E3A2E070000001801885F
1088:1043F00082CD6E3A0000F702000000D40200009265
1089:1044000000007202000000800200009037070000E8
1090:10441000001C018882CD6E3A3C070000001C018818
1091:1044200082CD6E3A41070000001C018882CD6E3AB1
1092:1044300046070000001C018882CD6E3A4B07000041
1093:10444000001C018882CD6E3A50070000001C0188D4
1094:1044500082CD6E3A55070000001C018882CD6E3A6D
1095:104460005A070000001C018882CD6E3A5F070000E9
1096:10447000001C018882CD6E3A64070000001C018890
1097:1044800082CD6E3A69070000001C018882CD6E3A29
1098:104490006E070000001C018882CD6E3A7307000091
1099:1044A000001C018882CD6E3A78070000001C01884C
1100:1044B00082CD6E3A7D070000001C018882CD6E3AE5
1101:1044C00082070000001C018882CD6E3A8707000039
1102:1044D000001C018882CD6E3A0000FC02000000D46E
1103:1044E0000200009200001203000000D402000092BB
1104:1044F00000003C0900000010088001920000361006
1105:1045000000000080020000900000361000000080D3
1106:1045100002000090000036100000008002000090B1
1107:1045200000003610000000800200009000003610ED
1108:1045300000000080020000900000361000000080A3
1109:104540000200009000003610000000800200009081
1110:1045500000003610000000800200009000003610BD
1111:10456000000000800200009000007B0900000010A5
1112:1045700008800092000036100000008002000090C9
1113:10458000000036100000008002000090000036108D
1114:104590000000008002000090000036100000008043
1115:1045A0000200009000003610000000800200009021
1116:1045B000000036100000008002000090000036105D
1117:1045C0000000008002000090000036100000008013
1118:1045D00002000090000036100000008002000090F1
1119:1045E00000008809000000100880009200003610CA
1120:1045F00000000080020000900000361000000080E3
1121:10460000020000900000CF09000000100840019255
1122:1046100000003610000000800200009000003610FC
1123:1046200000000080020000900000361000000080B2
1124:104630000200009000003610000000800200009090
1125:104640000000361000000080020000900000D70932
1126:104650000000001008C0009200003610000000802A
1127:10466000020000900000D7090000001008C000926E
1128:1046700000003D0C000000100840019200003610C0
1129:1046800000000080020000900000D7090000001028
1130:1046900008C0009200003610000000800200009068
1131:1046A000000036100000008002000090000036106C
1132:1046B00000000080020000900000E40900000010EB
1133:1046C00008C0009200003610000000800200009038
1134:1046D0000000E4090000001008C0009200003D0C3A
1135:1046E0000000001008400192000036100000008019
1136:1046F000020000900000E4090000001008C00092D1
1137:10470000000036100000008002000090000036100B
1138:1047100000000080020000900000361000000080C1
1139:10472000020000900000E2090000001008C00092A2
1140:104730000000361000000080020000900000E20936
1141:104740000000001008C0009200003D0C00000010A6
1142:104750000840019200003610000000800200009026
1143:104760000000E2090000001008C0009200003610AE
1144:104770000000008002000090000036100000008061
1145:10478000020000900000361000000080020000903F
1146:1047900000003610000000800200009000007A0A3D
1147:1047A0000000001008C000920000D40900000010B2
1148:1047B000080001920000CF0900000010084001929B
1149:1047C000000036100000008002000090000036104B
1150:1047D0000000008002000090000036100000008001
1151:1047E00002000090000036100000008002000090DF
1152:1047F000000036100000008002000090000036101B
1153:1048000000000080020000900000750A0000001007
1154:10481000088000920000D4090000001008000192F6
1155:104820000000CF090000001008400192000036107F
1156:1048300000000080020000900000361000000080A0
1157:10484000020000900000361000000080020000907E
1158:1048500000003610000000800200009000003610BA
1159:104860000000008002000090000036100000008070
1160:10487000020000900000750A00000010080001927C
1161:104880000000D40900000010080001920000CF09C8
1162:104890000000001008400192000036100000008067
1163:1048A000020000900000361000000080020000901E
1164:1048B000000036100000008002000090000036105A
1165:1048C0000000008002000090000036100000008010
1166:1048D00002000090000036100000008002000090EE
1167:1048E0000000E40A00000010088000920000D409D3
1168:1048F00000000010080001920000CF090000001025
1169:104900000840019200003610000000800200009074
1170:1049100000003610000000800200009000003610F9
1171:1049200000000080020000900000361000000080AF
1172:10493000020000900000361000000080020000908D
1173:104940000000361000000080020000900000E40A21
1174:1049500000000010080001920000D40900000010BF
1175:10496000080001920000CF090000001008400192E9
1176:104970000000361000000080020000900000361099
1177:10498000000000800200009000003610000000804F
1178:10499000020000900000361000000080020000902D
1179:1049A0000000361000000080020000900000E309C3
1180:1049B0000000001008800092000036100000008007
1181:1049C000020000900000E30900000010088000923F
1182:1049D00000003D0C0000001008400192000036105D
1183:1049E00000000080020000900000361000000080EF
1184:1049F00002000090000036100000008002000090CD
1185:104A00000000361000000080020000900000361008
1186:104A100000000080020000900000E3090000001088
1187:104A20000800019200003610000000800200009093
1188:104A30000000E309000000100800019200003D0C96
1189:104A400000000010084001920000361000000080B5
1190:104A5000020000900000361000000080020000906C
1191:104A600000003610000000800200009000003610A8
1192:104A7000000000800200009000003610000000805E
1193:104A8000020000900000361000000080020000903C
1194:104A900000008C0700000010080001920000361092
1195:104AA000000000800200009000008C070000001051
1196:104AB00008400192000036100000008002000090C3
1197:104AC0000000361000000080020000900000361048
1198:104AD00000000080020000900000361000000080FE
1199:104AE00002000090000036100000008002000090DC
1200:104AF00000005E0C00000010084001920000540C01
1201:104B0000000000100840019200005E0C0000001040
1202:104B1000084001920000CF090000001008400192F7
1203:104B200000003610000000800200009000005E0CC3
1204:104B300000000010084001920000361000000080C4
1205:104B4000020000900000361000000080020000907B
1206:104B50000000810900000010084000920000810957
1207:104B60000000001008800092000081090000001081
1208:104B700008C00092000081090000001008000192A6
1209:104B80000000860900000010084001920000810921
1210:104B90000000001008800192000081090000001050
1211:104BA00008C0019200003610000000800200009052
1212:104BB0000000361000000080020000900000361057
1213:104BC00000000080020000900000490B000000106F
1214:104BD000088000920000490B0000001008C00092FD
1215:104BE0000000490B00000010080001920000CF09EE
1216:104BF0000000001008400192000036100000008004
1217:104C0000020000900000490B0000001008C0019253
1218:104C100000003610000000800200009000003610F6
1219:104C200000000080020000900000361000000080AC
1220:104C3000020000900000361000000080020000908A
1221:104C400000003610000000800200009000003610C6
1222:104C500000000080020000900000680C00000010BE
1223:104C60000840019200003610000000800200009011
1224:104C70000000361000000080020000900000361096
1225:104C8000000000800200009000003610000000804C
1226:104C9000020000900000D80C0000001008400192B3
1227:104CA0000000DB0C000000100840019200004C0CDA
1228:104CB00000000010084001920000DB0C0000001012
1229:104CC0000840019200008C0700000010084001928B
1230:104CD0000000361000000080020000900000DB0C95
1231:104CE000000000100840019200008D070000001035
1232:104CF00008000292000036100000008002000090C0
1233:104D00000000361000000080020000900000DC0C63
1234:104D1000000000100840019200004C0C0000001040
1235:104D2000084001920000DC0C0000001008400192D5
1236:104D300000008C07000000100840019200003610AF
1237:104D400000000080020000900000DC0C0000001059
1238:104D50000840019200003610000000800200009020
1239:104D600000003610000000800200009000003610A5
1240:104D700000000080020000900000E10C0000001024
1241:104D8000088000920000E10C0000001008C00092B2
1242:104D90000000E10C00000010080001920000CF09A3
1243:104DA0000000001008400192000036100000008052
1244:104DB000020000900000E10C0000001008C0019209
1245:104DC0000000361000000080020000900000361045
1246:104DD00000000080020000900000361000000080FB
1247:104DE00002000090000036100000008002000090D9
1248:104DF0000000361000000080020000900000361015
1249:104E000000000080020000900000361000000080CA
1250:104E10000200009000006A090000001008400092A3
1251:104E200000003610000000800200009000003610E4
1252:104E3000000000800200009000003610000000809A
1253:104E40000200009000003610000000800200009078
1254:104E50000000F10C00000010088000920000F10C2E
1255:104E60000000001008C000920000F10C00000010CB
1256:104E7000080001920000CF090000001008400192D4
1257:104E80000000361000000080020000900000F10CCD
1258:104E90000000001008C001920000361000000080E1
1259:104EA0000200009000003610000000800200009018
1260:104EB0000000361000000080020000900000050D88
1261:104EC00000000010088000920000050D0000001096
1262:104ED00008C000920000050D0000001008000192BB
1263:104EE0000000CF09000000100840019200003610B9
1264:104EF00000000080020000900000050D000000107E
1265:104F000008C00192000036100000008002000090EE
1266:104F100000008C070000001008000092000036100E
1267:104F2000000000800200009000008C0700000010CC
1268:104F3000088000920000130D0000001008C00092CD
1269:104F400000008C07000000100800019200008C0790
1270:104F500000000010084001920000361000000080A0
1271:104F60000200009000003610000000800200009057
1272:104F70000000361000000080020000900000361093
1273:104F80000000008002000090000036100000008049
1274:104F90000200009000008C070000001008800092C2
1275:104FA0000000210D000000100880009200008C0716
1276:104FB000000000100800019200008C0700000010A3
1277:104FC00008400192000036100000008002000090AE
1278:104FD0000000361000000080020000900000361033
1279:104FE00000000080020000900000361000000080E9
1280:104FF00002000090000036100000008002000090C7
1281:1050000000008C0700000010088000920000210DB5
1282:10501000000000100800019200008C070000001042
1283:105020000800019200008C07000000100840019267
1284:1050300000003610000000800200009000003610D2
1285:105040000000008002000090000036100000008088
1286:105050000200009000003610000000800200009066
1287:1050600000003610000000800200009000003610A2
1288:10507000000000800200009000008C07000000107B
1289:1050800008800092000036100000008002000090AE
1290:1050900000008C070000001008400192000036104C
1291:1050A0000000008002000090000036100000008028
1292:1050B0000200009000003610000000800200009006
1293:1050C0000000361000000080020000900000361042
1294:1050D00000000080020000900000FD0C00000010A5
1295:1050E000088000920000FD0C0000001008C0009233
1296:1050F0000000FD0C00000010080001920000CF0924
1297:1051000000000010084001920000361000000080EE
1298:10511000020000900000FD0C0000001008C0019289
1299:1051200000003610000000800200009000003610E1
1300:105130000000008002000090000036100000008097
1301:105140000200009000003610000000800200009075
1302:1051500000003610000000800200009000003610B1
1303:1051600000000080020000900000310D00000010DF
1304:10517000080002920000361000000080020000903B
1305:105180000000361000000080020000900000361081
1306:105190000000008002000090000036100000008037
1307:1051A0000200009000003610000000800200009015
1308:1051B000000088090000001008C0019200003610AD
1309:1051C0000000008002000090000036100000008007
1310:1051D000020000900000CF0900000010084001927A
1311:1051E0000000361000000080020000900000C1099D
1312:1051F0000000001008C0019200003610000000807E
1313:1052000002000090000036100000008002000090B4
1314:1052100000003610000000800200009000008809A5
1315:10522000000000100880009200003610000000808E
1316:105230000200009000003610000000800200009084
1317:105240000000CF0900000010084001920000361055
1318:1052500000000080020000900000C1090000001062
1319:1052600008C001920000361000000080020000908B
1320:105270000000361000000080020000900000361090
1321:10528000000000800200009000006F0B0000001082
1322:10529000088000920000361000000080020000909C
1323:1052A00000006F0B000000100880009200003D0C11
1324:1052B000000000100840019200003610000000803D
1325:1052C0000200009000006F0B0000001008800092A8
1326:1052D0000000361000000080020000900000361030
1327:1052E00000000080020000900000361000000080E6
1328:1052F0000200009000006F0B0000001008000192F7
1329:1053000000003610000000800200009000006F0BCB
1330:10531000000000100800019200003D0C0000001089
1331:10532000084001920000361000000080020000904A
1332:1053300000006F0B00000010080001920000361002
1333:105340000000008002000090000036100000008085
1334:105350000200009000003610000000800200009063
1335:1053600000006F0B000000100800019200003610D2
1336:10537000000000800200009000006F0B0000001091
1337:105380000800019200003D0C00000010084001924E
1338:1053900000003610000000800200009000006F0B3B
1339:1053A000000000100800019200003610000000808C
1340:1053B0000200009000003610000000800200009003
1341:1053C00000003610000000800200009000006F0B0B
1342:1053D00000000010088000920000361000000080DD
1343:1053E0000200009000006F0B000000100880009287
1344:1053F00000003D0C00000010084001920000361033
1345:10540000000000800200009000006F0B0000001000
1346:10541000088000920000361000000080020000901A
1347:1054200000003610000000800200009000003610DE
1348:105430000000008002000090000036100000008094
1349:105440000200009000003610000000800200009072
1350:1054500000006F0B0000001008C0019200003D0C1E
1351:10546000000000100840019200003610000000808B
1352:105470000200009000006F0B0000001008C00192B5
1353:10548000000036100000008002000090000036107E
1354:105490000000008002000090000036100000008034
1355:1054A000020000900000D70B00000010088000925E
1356:1054B000000036100000008002000090000036104E
1357:1054C000000000800200009000008C070000001027
1358:1054D0000840019200003610000000800200009099
1359:1054E0000000D70B0000001008800092000036106A
1360:1054F00000000080020000900000361000000080D4
1361:1055000002000090000036100000008002000090B1
1362:105510000000D70B00000010088000920000361039
1363:1055200000000080020000900000361000000080A3
1364:105530000200009000008C0700000010084001925B
1365:105540000000361000000080020000900000D70B21
1366:105550000000001008C0019200003610000000801A
1367:105560000200009000003610000000800200009051
1368:10557000000036100000008002000090000036108D
1369:105580000000008002000090000036100000008043
1370:105590000200009000003610000000800200009021
1371:1055A00000008C0700000010084001920000361037
1372:1055B00000000080020000900000DF0B00000010DF
1373:1055C00008C0019200003610000000800200009028
1374:1055D000000036100000008002000090000036102D
1375:1055E00000000080020000900000361000000080E3
1376:1055F00002000090000036100000008002000090C1
1377:1056000000003610000000800200009000008C07AF
1378:1056100000000010084001920000361000000080D9
1379:10562000020000900000DF0B0000001008800092D4
1380:1056300000003610000000800200009000003610CC
1381:105640000000008002000090000036100000008082
1382:105650000200009000003610000000800200009060
1383:10566000000036100000008002000090000036109C
1384:1056700000000080020000900000C30C0000001039
1385:1056800008400192000036100000008002000090E7
1386:10569000000036100000008002000090000036106C
1387:1056A000000000800200009000009407000000103D
1388:1056B00008400092000036100000008002000090B8
1389:1056C000000036100000008002000090000036103C
1390:1056D00000000080020000900000361000000080F2
1391:1056E00002000090000036100000008002000090D0
1392:1056F0000000E6070000001008800092000036104D
1393:1057000000000080020000900000361000000080C1
1394:105710000200009000009B080000001008000192A9
1395:105720000000361000000080020000900000930787
1396:1057300000000010080001920000A5080000001001
1397:10574000080001920000A508000000100800019266
1398:105750000000A508000000100800019200003610AB
1399:105760000000008002000090000036100000008061
1400:10577000020000900000F507000000100880009271
1401:105780000000361000000080020000900000930727
1402:105790000000001008000192000036100000008098
1403:1057A000020000900000361000000080020000900F
1404:1057B00000000308000000100880009200009A0812
1405:1057C0000000001008800092000093070000001005
1406:1057D00008000192000036100000008002000090D6
1407:1057E0000000BB0800000010084000920000BB0849
1408:1057F00000000010088000920000BB0800000010AC
1409:1058000008C00092000093070000001008000192F9
1410:1058100000003610000000800200009000003610EA
1411:1058200000000080020000900000E008000000106E
1412:1058300008C00092000036100000008002000090B6
1413:1058400000009307000000100800019200003610CD
1414:105850000000008002000090000036100000008070
1415:10586000020000900000E208000000100800019211
1416:105870000000E208000000100800019200009307F9
1417:1058800000000010080001920000361000000080A7
1418:10589000020000900000361000000080020000901E
1419:1058A0000000E40800000010088000920000E408F6
1420:1058B0000000001008C000920000930700000010D4
1421:1058C00008000192000036100000008002000090E5
1422:1058D0000000930700000010084000920000B1088B
1423:1058E00000000010088000920000B10800000010C5
1424:1058F00008C0009200009307000000100800019209
1425:1059000000009307000000100800009200009307B9
1426:1059100000000010084000920000F808000000108D
1427:10592000088000920000F8080000001008C00092F3
1428:1059300000009307000000100800019200003610DC
1429:10594000000000800200009000003610000000807F
1430:105950000200009000002C09000000100880009256
1431:10596000000093070000001008C000920000930799
1432:1059700000000010080001920000361000000080B6
1433:10598000020000900000361000000080020000902D
1434:1059900000000C0900000010088000920000361082
1435:1059A000000000800200009000009307000000103B
1436:1059B00008000192000036100000008002000090F4
1437:1059C0000000361000000080020000900000F40784
1438:1059D00000000010088000920000361000000080D7
1439:1059E00002000090000093070000001008000192E0
1440:1059F0000000361000000080020000900000361009
1441:105A0000000000800200009000002009000000104B
1442:105A100008800092000020090000001008C00092D9
1443:105A200000009307000000100800019200003610EB
1444:105A3000000000800200009000003610000000808E
1445:105A4000020000900000EF080000001008800092A3
1446:105A50000000EF080000001008C00092000093074B
1447:105A600000000010080001920000361000000080C5
1448:105A7000020000900000361000000080020000903C
1449:105A80000000390900000010088000920000390968
1450:105A90000000001008C000920000930700000010F2
1451:105AA0000800019208003103001801E8762081996E
1452:105AB00008002F03001801E8762081990000990F53
1453:105AC00000000080020000F0080091071D1901E8A5
1454:105AD000762081B900003103000000F862812F9523
1455:105AE000000031038000008002812FB62A003103BC
1456:105AF000D001002C82CD2E9208003103001C01E859
1457:105B00007620819900000000000000D802000032D9
1458:105B100000000000000E01EC06C06E3554000000CD
1459:105B2000000000000700363200000000000000BC4A
1460:105B3000A8002D37B44400000008000087CD8B3A40
1461:105B4000000000000000007899C02C37B40000006D
1462:105B500000000078898D973A00003610021000008E
1463:105B600087BF97BA00000000001800000740FE320F
1464:105B700000009D0712000040F2C138B40000000090
1465:105B80000090007809006E320000361004A000007A
1466:105B900009806EB20000A20704A5000409806EB25D
1467:105BA0000000000000000004090090320000A4077B
1468:105BB00004010004096490BC00000000000000041F
1469:105BC00009400032080000006E3402E816249039C3
1470:105BD0000000A507B71002E0068097B20000A807F2
1471:105BE00080000080F280FCB60000A907000000C819
1472:105BF000FF80FC940000AA079F990080821BEEBCE6
1473:105C000000000000009800E00E006E32000000006E
1474:105C1000A70000800200003018003600000000F8E5
1475:105C2000730A03F9000000000010021C09006E3224
1476:105C30004000AF070601008082CD91BC00C0B007D4
1477:105C4000001802E00680369200E00000001802E032
1478:105C50000680363200000000000000200980033278
1479:105C60000000B30780D7018032C06EB6000000008C
1480:105C7000000000204900923A00000000009801183E
1481:105C800009006E3200000000000A022409C06E32D2
1482:105C90000000000000C0012809806E320000C1072A
1483:105CA000800E018012C06EB602000000003C02ECC3
1484:105CB0000600363200000000000000004901923A60
1485:105CC0000000BD0780D6018042C06EB60082000091
1486:105CD000001002E0A6CD913200A00000002C02E8E6
1487:105CE000060036322800CB07003A02EC0600369256
1488:105CF00000000000D301001CD9C1913400820000D3
1489:105D0000001002E0A6CD913200A00000002C02E8B5
1490:105D1000060036323400CB07003A02EC0600369219
1491:105D200004000000003C02EC0600363228000000AF
1492:105D300000000000890D923A0000C70780D601805C
1493:105D400042C06EB600860000001002E0A6CD91327F
1494:105D500004A00000002C02E8060036321400CB0735
1495:105D6000003A02EC0600369200000000D301001C4D
1496:105D7000D9C1913400860000001002E0A6CD913216
1497:105D800004A00000002C02E8060036322000CB07F9
1498:105D9000003A02EC0600369212000000003802ECD5
1499:105DA00086CD913A08000000002802E88624903948
1500:105DB00000000000002002E09624143700000000DC
1501:105DC000004001E0068091320000D107040100800C
1502:105DD000028092BC0000000000C001E0060000321A
1503:105DE00000000000003000E006000032000000006B
1504:105DF00000B000E0060000322000000000000000BB
1505:105E0000070036320000000000000078A9002D379E
1506:105E10000045000000080000878D973A0000000050
1507:105E20000000007899C02C370001000000000078C5
1508:105E3000898D973A000036100210000087BF97BA8C
1509:105E400000000000001800000740FE320000DA07E2
1510:105E500012000048F2C138B40000DE0780D7012CE0
1511:105E600009C06EB200000000DAD701EC06C06E3542
1512:105E700000000000005A01EC0640ED320000000076
1513:105E8000005C01E806808B320000E10780010080A1
1514:105E900062C092B600000000000000F882812F343A
1515:105EA00018003600000000F8730A03F90000000033
1516:105EB0000004013808C06E3200000000006201ECEE
1517:105EC00006808332010093071201002C82CD2EB28E
1518:105ED0000000E407000000800200009000000000C5
1519:105EE000005401FC02C06E3200000000000000D827
1520:105EF0000280013200C0EC071801000CA8CD3EB2B0
1521:105F00002080000000000008088036322D002F039A
1522:105F10001201002C82CD2EB20000EA0700000080A2
1523:105F200002000090000000000062013808C06E32DC
1524:105F300000080080000000280900373200604B0F85
1525:105F400000000008088036F200009307040601EC08
1526:105F500016C06EBC000093078000008072812FB6CF
1527:105F600000000000000000F872812F343D0093070C
1528:105F70001201002C82CD2EB20000F207000000803A
1529:105F8000020000900000F507000000F8B2812F9495
1530:105F90000000CF0F00A0001808006EF200002510CE
1531:105FA0000078016008006EF20000F907120100C8D5
1532:105FB000020020B20000FC070000008002000090F8
1533:105FC000000006081201005C088020B20000FC07F7
1534:105FD0001201006002802CB20000FA07000000806D
1535:105FE000020000900000FE0704000080024080BC18
1536:105FF00000000000000000F81F80FF3A00000008C9
1537:1060000080010080A2802FB618003600CA0000F878
1538:10601000730A03F9000093078000008072812FB695
1539:106020003D0001081200002C82CD2EB20000930723
1540:10603000000000F872812F940000FC07120000C8D5
1541:10604000020020B20000FA071200005C088020B2B3
1542:106050000000361004A0001808006EB20000000016
1543:106060000000007879613832000007081218024CED
1544:10607000E2256EB2080000000010020078E16E39DF
1545:106080000000000000180020070000320700000098
1546:106090000000003878CAE939000036100400003CDE
1547:1060A000084080B2000036100490006C08006EB208
1548:1060B000000000000098004C08006E320000000054
1549:1060C000510000D802000032000000004D00000026
1550:1060D00067E0833E000000000008000007008032F7
1551:1060E000000000000010000007C086320000000021
1552:1060F0000018000007C084320000000000000018F3
1553:10610000D8A0813C0000680804B000E0D6206EBC36
1554:10611000000038080400003CD8E083BC00001E08E2
1555:106120008000008092802FB6000019081201000044
1556:1061300009C021B218003600000000F8730A03F904
1557:106140001D0000000000007809A4173800001D0899
1558:1061500004010080128097BC00001808670000F856
1559:10616000A2802FB5000019080000000009C021928C
1560:1061700000000000C90100D802408432000021085C
1561:106180000400008072802DBC00001F081200004433
1562:10619000E2E038B200002C08510000D812802D9A9D
1563:1061A0000000000000000078F9818334000022081C
1564:1061B00012000044E2E538B20000260880000080AA
1565:1061C00082802FB60000550F00A0015008006EF22B
1566:1061D0000000000000F801E00600853200002808F9
1567:1061E000120100E802C021B218003600000000F8D9
1568:1061F000730A03F900002B080401008002802DBC03
1569:1062000000002708670000F8A2802FB500003610B4
1570:10621000120000E802C021B200000000510000D8C6
1571:1062200002000032000030082A010000D82080BAA5
1572:10623000000030081201000009C021B21800360029
1573:10624000000000F8730A03F900000000000000D805
1574:106250000240843200000000CAE0006C08006E3288
1575:106260000000000000E8004C08006E32000036100C
1576:1062700004F0001808006EB20000000000000038B2
1577:106280001881833500000F0804B00080829B81BC18
1578:1062900000000000CA0100F842802F3508A00F0856
1579:1062A00012010040A2CD39B2000036080000008083
1580:1062B0000200009000004008293402B808806EB245
1581:1062C00000003B081201000009C021B2180036008E
1582:1062D000000000F8730A03F91D00000000000078B8
1583:1062E00009A4173800003F0804010080128097BC01
1584:1062F00000003A08670000F8A2802FB500003B08B4
1585:106300000000000009C0219200000000C90100D86F
1586:10631000024084320000000000000078F9818334DC
1587:106320000000410812000044E2E538B200004708CE
1588:106330002800006CD8E086BA0000540F00A001507D
1589:1063400008006EF2000047081DF801E0060085B263
1590:10635000000047088000008002812FB62A0000005C
1591:10636000D001002C82CD2E3200004A0804A000E0AB
1592:10637000068081B200003610049000E006C086B2AC
1593:1063800000005808009800E006C0849200004F0802
1594:1063900080010080A2802FB600004D08120100008D
1595:1063A00009C021B218003600000000F8730A03F992
1596:1063B0001D004F080401008002A417B800004C081B
1597:1063C000000000F8E2802F940000361004E0006C1A
1598:1063D00008006EB200000000CAE8004C08006E32EF
1599:1063E0000000361004F0001808006EB200005508D6
1600:1063F00004B00080829B81BC00000000CA0100F84C
1601:1064000042802F3508A0540812000040A2CD39B2B6
1602:106410000000000000A000E00680813200000000C3
1603:10642000009800E006C0843200003610049000E0BE
1604:1064300006C086B200005D082A5D01E806808BB2C6
1605:1064400000005B081201000009C021B218003600EC
1606:10645000000000F8730A03F91D005D0804010080C4
1607:1064600002A417B800005A08000000F8E2802F9438
1608:1064700010246008370000F8A28D2FB13D005E089F
1609:106480001200002C82CD2EB200000000000000F8A7
1610:1064900072812F3408000000CA1C01E8762081397F
1611:1064A0000000FA0D0000002CF90100F4000065085E
1612:1064B00080000080E2802FB6000065081201000015
1613:1064C00009C021B218003600000000F8730A03F971
1614:1064D000100000000018008067A1733930003203FB
1615:1064E0001201005CA28D2CB200003610000000806A
1616:1064F0000200009000006B088000008092802FB6A0
1617:1065000018003600000000F8730A03F900000000CC
1618:10651000C90100D802408432000036102A000078F9
1619:10652000F98183B400006C0812000044E2E538B23F
1620:106530000000DC0E00000030030038F2000071089B
1621:106540001D000038188183B50000710880000080AC
1622:1065500002812FB62A000000D001002C82CD2E32FD
1623:1065600000007408040601EC16C06EBC00000000B8
1624:10657000CA0100F842802F3408C07308120000409E
1625:10658000A2CD39B2000077088000008082802FB64B
1626:106590000000550F00A0015008006EF2000000003E
1627:1065A00000F801E0060085320000790812010000C1
1628:1065B00009C021B218003600000000F8730A03F980
1629:1065C000000095082A3502B808806EB200007C08E9
1630:1065D0001201000009C021B218003600000000F8C6
1631:1065E000730A03F900000000000000F8A2802F35B4
1632:1065F00000008E0804000080026180BC0000870853
1633:1066000080B8000009C06EB240008208040000801B
1634:10661000820D90BC0000820802B00080821B84BC06
1635:1066200000008708000000F8B2812F9400000000ED
1636:1066300000D601EC56C06E3400000000000000607F
1637:106640001800863A0000000000000080B70178348E
1638:1066500000000000007801E0060086324000950846
1639:1066600004000080820D90BC0000361004A00018C9
1640:1066700008006EB20000CF0F00000000D82080FAA2
1641:10668000000036100600003C182084BC00003610C4
1642:1066900004B0003C88DB83BE0000000000000080E6
1643:1066A000F720783A00000000587801E0F620863A9A
1644:1066B00000000C0800000004F860809A00009108B7
1645:1066C00080B9000009C06EB22F0095081201002C9D
1646:1066D00082CD2EB200008F080000008002000090E2
1647:1066E0004000930804010080820D90BC380094089B
1648:1066F00000000078090036923900000000000078A0
1649:1067000009003632000094081200002CE2E52EB297
1650:10671000100000000018008067A17339000000001D
1651:10672000005C01E806808B3210240000000000F8B5
1652:10673000A28D2F31300093071201005CA28D2CB284
1653:1067400000003610000000800200009000000308E6
1654:10675000000000F8C2812F9500000000005401FCE9
1655:1067600002C06E3200000000000000D8028001323A
1656:1067700000C0A1081801000CA8CD3EB22080000086
1657:1067800000000008088036322D002F031201002C73
1658:1067900082CD2EB200009F08000000800200009011
1659:1067A000000000000062013808C06E32000800805E
1660:1067B000000000280900373200604B0F000000087D
1661:1067C000088036F20000AF08000000800200009050
1662:1067D0000000A70880000080C2812FB60000AA0830
1663:1067E00000D001E80600009200000000000000F860
1664:1067F000C2812F350000AA0804D1018002806EBC3E
1665:106800000000000000D601EC26C06E340000AC0889
1666:106810008000008092812FB60000AF0800C801E818
1667:106820000600009200000000000000F892812F3561
1668:106830000000AF0804C9018002806EBC00000000A7
1669:1068400000D601EC16C06E34110093071201002C23
1670:1068500082CD2EB20000AF08000000800200009040
1671:10686000000093079A0100F842812FB50000B80894
1672:10687000120100C8020020B200000000005C01EC20
1673:106880000640003200009307370000F842812FB421
1674:1068900000000000000000F872812F343D009307D3
1675:1068A0001201002C82CD2EB20000B608000000803C
1676:1068B000020000900000C3081201005C088020B2B2
1677:1068C0000000B3081201006002802CB200003610F4
1678:1068D00000000080020000900000C008120100C803
1679:1068E000020020B200009307370000F8D2812FB4D5
1680:1068F00000000000000000F872812F343D00930773
1681:106900001201002C82CD2EB20000BE0800000080D3
1682:10691000020000900000C3081201005C088020B251
1683:106920000000BC081201006002802CB2000036108A
1684:1069300000000080020000900000000000000078CD
1685:10694000796138320000C4081218024CE2256EB298
1686:1069500000000000003402B808806E320000000021
1687:1069600000A0015008006E320000000000780160B5
1688:1069700008006E320000CA089D11023409006EB290
1689:106980000000000000F0018808006E3200006C0F6B
1690:1069900000A8010809006EF200000000D4F801E030
1691:1069A0000600853200000000DA5C01E806808B32C8
1692:1069B0000000DC0EDD000030030038F20000D008DB
1693:1069C0002329020409806EB23E00CF081200002C79
1694:1069D00082CD2EB20800D3081D1C01E8762081B9B3
1695:1069E0000000D3088000008002812FB62A0000003A
1696:1069F000D001002C82CD2E320000FA0D0000002CB8
1697:106A0000F90100F40000D7089D010080074093B20F
1698:106A10000000000000300080078088320000000085
1699:106A2000003800800700EE320000000000080080FF
1700:106A300007C085320000000000100080074090323F
1701:106A40001000000000180080878D853700000000CE
1702:106A5000002000800700863200000000002800802F
1703:106A6000070085320000DE081201000009C021B2D3
1704:106A700018003600000000F8730A03F930003203F2
1705:106A80001201005CA28D2CB20000361000000080C4
1706:106A9000020000900000000000CC017809806E32F6
1707:106AA00000009307DCD101E806809792130093075A
1708:106AB0001201002C82CD2EB20000E20800000080FE
1709:106AC000020000900000BA0D00000018094081F299
1710:106AD0000000A30D00A8012009006EF2000093073A
1711:106AE00080010080F2802FB60000EC08120100C87F
1712:106AF000020020B2000093078000008072812FB650
1713:106B000000000000000000F872812F343D00930760
1714:106B10001201002C82CD2EB20000EA080000008095
1715:106B2000020000900000C3081201005C088020B23F
1716:106B30000000E8081201006002802CB2000036104C
1717:106B4000000000800200009000009307350100F86B
1718:106B500012812FB500000000000000D80280013231
1719:106B600000000000005401FC02C06E3200C0F608B4
1720:106B70001801000CA8CD3EB220800000D101000811
1721:106B8000088036323B0031031201002C82CD2EB238
1722:106B90000000F40800000080020000900000440F94
1723:106BA0000098012809006EF20000930700000080A1
1724:106BB000020000900000FE0880010080A2812FB634
1725:106BC0000000FE088000008042812FB60000FE0811
1726:106BD000085B01EC06FB6EBC00000000005A01ECF3
1727:106BE000060000320000FE08370000F842812FB492
1728:106BF0003D000000D701002C82CD2E320000040998
1729:106C00008001008092812FB600000A0908C901E8BE
1730:106C100006BB6EBC0000000000C801E806000032A0
1731:106C2000330001091200002C82CD2EB20000510F5A
1732:106C300000000028098001F2000093070000008096
1733:106C40000200009000000A0980010080C2812FB676
1734:106C500000000A0908D101E806BB6EBC0000000074
1735:106C600000D001E806000032330007091200002CB2
1736:106C700082CD2EB20000510F0000002809C001F2A1
1737:106C800000009307000000800200009000009307BE
1738:106C900080010080F2812FB6180093070000002CBD
1739:106CA00082CD2E9200000F09120000C8020020B20F
1740:106CB000000012091201005C088020B200003610AA
1741:106CC0001200006002802CB200000000000000F8FA
1742:106CD0001F80FF3A000031031201002C72E02EB237
1743:106CE0000000100900000080020000900000000079
1744:106CF0000000007879613832000013091218024C44
1745:106D0000E2256EB200000000003402B808806E3246
1746:106D100000000000D4A0015008006E320000000006
1747:106D2000DB79016008006E320000550FDD000004C1
1748:106D3000080000F21000000000180080878D8537E1
1749:106D40000000000000F801E00600853200001C0988
1750:106D50001201000009C021B218003600000000F83E
1751:106D6000730A03F9300036101200005CA28D2CB2B9
1752:106D700000003610040701EC16C06EBC00000000D5
1753:106D800000B000E00600003200009307DA5C01E882
1754:106D900006808B92000093079F41018052206EBCB9
1755:106DA00000002B099F98018052206EBC000000005B
1756:106DB000000000D80280013200000000005401FCF5
1757:106DC00002C06E3200C029091801000CA8CD3EB2E5
1758:106DD0002080930731000008088036B200000000D0
1759:106DE000000000F812812F343B0093071201002CA1
1760:106DF00082CD2EB200002709000000800200009022
1761:106E00000000440F0098012809006EF2000093076B
1762:106E1000000000800200009000009307D54101E0CF
1763:106E2000064081920000930704B0008002006EBC0F
1764:106E3000000000000090010008006E3200002510E4
1765:106E40000078016008006EF20000930700000080E7
1766:106E50000200009000000000000C027809806E32F1
1767:106E60000000330904D4018012C06EBC0000000091
1768:106E7000000000781980973700000000009001E0C2
1769:106E8000E6256E3A0000251000000080020000F0A8
1770:106E90000000370900000080020000900000930706
1771:106EA000009001E00600809200000000009001E0E8
1772:106EB00006008032000003080000008002000090FD
1773:106EC0000000A30D00A8012009006EF20000E708F1
1774:106ED00080000080F2802FB6000093070000008041
1775:106EE0000200009000000000000000D80280013283
1776:106EF000000000000000007809006E320200410925
1777:106F000004B9008082CD6EBC00004309800000807F
1778:106F10007280FCB600004509000000FC02000092EF
1779:106F200000004309800000808280FCB60000450913
1780:106F3000000000FC0200009200000000000000A819
1781:106F400042BD973000000000541889FCF2C07C302C
1782:106F500000C04B091801000CA8CD3EB20000000093
1783:106F6000000E01EC0600003400000000005401ECAB
1784:106F700006C02F3220800000000000080880363252
1785:106F8000000031031201002C82CD2EB2000049090D
1786:106F90000000008002000090000000000062013844
1787:106FA00008C06E3200080080000000280900373257
1788:106FB00000004B0F00000008E80100F4000036104C
1789:106FC000040701EC16C06EBC00000000000000A821
1790:106FD000A2002D370A0000000000007809003632B8
1791:106FE00000000000001889E007000032000051098D
1792:106FF00004010078198097BC02005C0904B9008084
1793:1070000082CD6EBC00000048D6010078C9CD2C327C
1794:1070100000005509B6000080020000B000005609CB
1795:1070200012000064028097B2000057091208006441
1796:1070300002006EB2000058091218006402006EB21D
1797:10704000000059091210006402006EB20000000036
1798:10705000A65401EC06C02F3200008C07000E01EC94
1799:10706000060000940020004CD6010078C9CD2C32D7
1800:1070700000005D09B6000080020000B000005E095B
1801:1070800012000064028097B200005F0912080064D9
1802:1070900002006EB2000060091230006402006EB29D
1803:1070A000000061091238006402006EB2000062093B
1804:1070B0001240006402006EB20000630912480064CE
1805:1070C00002006EB2000064091210006402006EB289
1806:1070D000000065091218006402006EB20000660923
1807:1070E0001220006402006EB20000670912280064DA
1808:1070F00002006EB200000000A65401EC06C02F3260
1809:1071000003008C07000E01EC060036920000000020
1810:10711000000000FC0200013200006D0900000014B4
1811:1071200008803D9200000000000000FC02000132D7
1812:1071300000007009040000DC53603DB3180000003B
1813:10714000000000F8738A03396C093600000000C0A3
1814:107150000200369200000000005401FC02C06E32B2
1815:1071600000000000000000D80280013200C0760953
1816:107170001801000CA8CD3EB22080000000000008DD
1817:107180000880363215002F031201002C82CD2EB25A
1818:107190000000740900000080020000900000000060
1819:1071A000002800000700003200000000003000004E
1820:1071B00007C02C3200100082003800000700373270
1821:1071C000000079091200004802C080B200008C075C
1822:1071D000CA010008E80100942D007B091200002C70
1823:1071E00082CD2EB200007E091D010080020000B099
1824:1071F00000008C07000000F862812F95000000005D
1825:10720000000000F802812F342A008C071201002CA4
1826:1072100082CD2EB200007F090000008002000090A5
1827:1072200000003F0F0000002C09C085D20000DC0EDA
1828:1072300000000030030038F200003103230100F8A1
1829:1072400022812FB43E0031031201002C82CD2EB2D8
1830:1072500000008409000000800200009000003F0F41
1831:107260000000002C09C085D200003103000000F8A6
1832:1072700022812F9400008D09380100D8028001B2CC
1833:1072800000008B091E000080020000B000008D0984
1834:107290001A010080020000B000008C0F000000689E
1835:1072A0001F80F6FA00003103000000800200009009
1836:1072B0000000910912010060084023B20082000022
1837:1072C000000000080880363200008C0F00000064C7
1838:1072D0001F40F6FA00003103000000800200009019
1839:1072E0000000361012000024080023B200003610FF
1840:1072F0001200002008C023B200003610120000184F
1841:10730000088023B200C09C091801000CA8CD3EB231
1842:107310000000940912000038028081B2000036108B
1843:107320001200003C020082B2000036101200003051
1844:10733000024082B20000361012000034020086B211
1845:1073400020800000000000080880363200008C0F0A
1846:107350000000005C1FC0F5FA00003103000000804F
1847:107360000200009000000000450000D8020000323A
1848:107370000000000000000000074080320000000014
1849:1073800000100000074082320000000000180000DA
1850:10739000070086320000A00912000050F2C138B484
1851:1073A0000000640D003001E016206EFA0000A5090F
1852:1073B0003801002CF8010BB40000A509020D028071
1853:1073C000A25B80BC000000000000002CC8C1823419
1854:1073D0000000A7098000008042812FB60000940DB4
1855:1073E00000000080020000F00000AD0D00A801E0E8
1856:1073F00016206EFC0000AC09270100D8028001B203
1857:1074000000000000C700002CE8C08234000000002B
1858:1074100000000008D801003400000000D54001E061
1859:10742000060087320800990F001801E8762081F9DC
1860:107430000000DC0E00000030030038F20000B0094C
1861:1074400023190000078081B23E00AF091200002C12
1862:1074500082CD2EB20000B2091D210000070082B2C9
1863:107460000000B409000000F862812F950000B40903
1864:107470008000008002812FB62A000000D001002C7D
1865:1074800082CD2E320000FA0D0000002CF90100F42C
1866:107490001000B8092C30000017E02CB90000BA0920
1867:1074A0008E39000007C082B20000BA09000800004F
1868:1074B000070087920000BA098E390000B7C182B474
1869:1074C0000000000000080000070087320000BC092F
1870:1074D000120100E802C021B218003600000000F8D6
1871:1074E000730A03F90000BA099F010014184081BC17
1872:1074F0000000BF090400008002C085BC00003610F7
1873:107500001200006802C585B00000BF0912000048E3
1874:1075100002C080B200003203CA010008E8818094F2
1875:107520000000C3091E000080020000B00000C50971
1876:107530001A010080020000B000008C0F00000068FB
1877:107540001F80F6FA00003103000000800200009066
1878:10755000000036109FA801E016206EBC0000640DEC
1879:1075600000000014080000F20000C909800000803B
1880:1075700042812FB60000940D00000080020000F050
1881:107580000000AD0D00000080020000F000008E073A
1882:1075900004000080024081BC0000CD09120100E817
1883:1075A00002C021B218003600000000F8730A03F987
1884:1075B00000008E071201006802C585B00000361079
1885:1075C000000000800200009000008C078000008016
1886:1075D000F2C185B60000D3091C41028006C085B205
1887:1075E000000000000000006802C5853000000000B7
1888:1075F000000000701F00F73A00008C07000000F840
1889:1076000022812F9400008C0780000080F2C185B693
1890:1076100000003F0F0000002C09C085D2000031039C
1891:10762000D20100941E40E99A0000C40F0020001807
1892:1076300008006EF20000DB091F000080020000B0AD
1893:107640000000D8099E400278094068B20000361058
1894:1076500000000080020000900000DF09800100802F
1895:1076600082812FB600008E072A3101E0060000B2A9
1896:1076700018000000CA0000F8730A03398E073600AC
1897:10768000000000C00200369200008E0780010080DA
1898:10769000A2802FB618000000CA0000F8730A033950
1899:1076A0008E073600000000C0020036920D00E5098A
1900:1076B00000000058080036920000E509000000585C
1901:1076C000080000921B00000000000058080036323D
1902:1076D0000000C40F0020001808006EF20000000037
1903:1076E0000030002808006E3200000000545401FCF5
1904:1076F00002C06E320000300A380000A4088082B256
1905:107700000000300A0428010408006EB200003610A0
1906:107710009F500104A85B80BC00000000005001E8FD
1907:10772000060000320000110A0801007819A082BC8E
1908:1077300000000000002801E0A660803C0000F00985
1909:107740002A010014080000B200000000CA00001462
1910:107750001840813A0000A30D00A80120A9206EFA6C
1911:1077600000000000002001E0A6206E3C00000000A8
1912:10777000003000E0060000320000000000A801E038
1913:107780000600923200000000000000D802800132A2
1914:1077900000C0030A1801000CA8CD3EB20000FA098F
1915:1077A00004000080024081BC0000000000000014C2
1916:1077B0000800003218000000000000F8730A0339C6
1917:1077C000F4093600000000C002003692208000005C
1918:1077D00000000028098036320000F10E000000D8B9
1919:1077E000020000D20000FE0904000080028092BC6A
1920:1077F00018003600000000F8730A03F900000000CA
1921:10780000000000D80280013200C0030A1801000CF9
1922:10781000A8CD3EB218000000000000F8738A0339BA
1923:10782000FE090000000000C00200363200003600F1
1924:10783000000000800200009000000000DE00000850
1925:10784000E801003400000000DF00013808C06E329B
1926:1078500000000000001000000700003200000000DF
1927:107860000018000007808232000000000030000095
1928:1078700007C02C320020008000380000070037329B
1929:1078800000000000CA3D000C0780833200000000A9
1930:10789000000000141840813A00000F0A040201ECB5
1931:1078A00016C06EBC00000000C00100141840813AF0
1932:1078B00000000000000000F892802F3400C00E0A83
1933:1078C00012000040A28D39B20000690A120100487E
1934:1078D00002C080B200000F0A000000800200009089
1935:1078E000000000000000002808809732000000001F
1936:1078F000000000A408808232000000000010006C2C
1937:1079000018206E3A000000000018004C08006E328B
1938:107910000000A30D00A8012019206EFA000000004D
1939:10792000002001E016206E3C0000000000A801E0ED
1940:107930000600923200001B0A003801E006408092E7
1941:10794000000000000060006C18206E3A000000008B
1942:107950000068004C08006E3200001D0A9F01000400
1943:10796000686080BC0000240A000000181820009CF9
1944:1079700000001F0A120100E802C021B21800360000
1945:10798000000000F8730A03F900000000CA70001834
1946:1079900008006E320000190A02010080626080BC9B
1947:1079A00000000000CA0100F802802F3500A01B0A69
1948:1079B00012010040A28D39B20000220A00000080AE
1949:1079C000020000900000280A80000080A2802FB6EC
1950:1079D00000002B0A04000080A2A081BC000000006F
1951:1079E000CA0100F802802F3500A0270A12000040CB
1952:1079F000A28D39B200000000000000F8A2802F35EF
1953:107A000000002B0A120100E802C021B21800360063
1954:107A1000000000F8730A03F900000000002801E0EC
1955:107A20000600003200000000003000E006808232D4
1956:107A300000000000002000E00680813200003610C7
1957:107A4000041000E006C086B20000320A001800E010
1958:107A500006C08492000036100410006C08006EB25C
1959:107A6000000000000018004C08006E320000E00D1D
1960:107A7000510000D8020000F20000350A0050013C1D
1961:107A8000A85B809C00008E07003001E00600009299
1962:107A900000003A0A3E510100A81B80BA0000000015
1963:107AA000DE0000F8F2812F3400000000005801ECE5
1964:107AB00006C0EE3200003A0A80010080328087B6AC
1965:107AC00000000000000000F8E2802F340000730E78
1966:107AD000603001E0060000F200008E070000008028
1967:107AE00002000090000000000000001408000032B6
1968:107AF0000000430A040201EC16C06EBC0000000046
1969:107B0000C90100141840813A00000000C00101388A
1970:107B100008C06E3200000000DF0000A4A8608A3CAC
1971:107B200000C0460A12010040A28D39B20000410A8D
1972:107B3000000000800200009000000000003000E023
1973:107B40000600003200000000DF0000A4A8608A3CAC
1974:107B5000000000000000013808C06E320000000084
1975:107B6000DEA8012099226E3A0000490A2F2001E088
1976:107B700096226EBC0000A30D00000080020000F001
1977:107B800000004D0A1F5001E8060000B200004C0A38
1978:107B90000400008002C083BC00004D0A005001E8D0
1979:107BA000F660809C0800000000400268129AFE38CF
1980:107BB0000000510A2AA901E0060092B2180036001E
1981:107BC000CA0000F8730A03F91D00510A040000807E
1982:107BD00002A417B800004E0A000000141840819C4F
1983:107BE0000000DC0E00000030030038F20000540AF0
1984:107BF0008001008032802FB63E00530A1200002C14
1985:107C000082CD2EB200000000000000D802800132B8
1986:107C100000C0650A1801000CA8CD3EB2208000000B
1987:107C2000C3000028098036320000F10E000000D8A1
1988:107C3000020000D200005A0A04000080028092BCB8
1989:107C400000000000000000141840813A00005F0AA4
1990:107C500004000080024081BC18003600000000F8DB
1991:107C6000730A03F90000630A04000014184081BC81
1992:107C700000005B0A1200000009C021B200005C0A8B
1993:107C8000000000800200009018003600000000F89C
1994:107C9000738A03F90000DC0E00000030030038F2A4
1995:107CA0000000630A8001008032802FB63E00620A25
1996:107CB0001200002C82CD2EB200000000C30000D8BC
1997:107CC0000280013200C05F0A1800000CA8CD3EB24D
1998:107CD0000020008000000028090037320000B10FAA
1999:107CE00000000008E80100F40000670A12000048E4
2000:107CF00002C080B200000000000000141840813A69
2001:107D000018003600CA0000F8730A03F90000690A77
2002:107D100004010014184081BC0000990F000000808D
2003:107D2000020000F000006F0A8001008092802FB6F0
2004:107D30002B00720A1201002C82CD2EB200006D0AB7
2005:107D400000000080020000900000720A1D00008008
2006:107D5000020000B00000720A8000008002812FB68D
2007:107D60002A000000D001002C82CD2E3200008C07AA
2008:107D700004000080028085BC0000AA0F0000008083
2009:107D8000020000F000007D050000001C08808592C4
2010:107D900000000000CE0100D80280013200C07A0A43
2011:107DA0001801000CA8CD3EB22080000000000008A1
2012:107DB0000880363200008C0F0000005C1FC0F5FA0E
2013:107DC000000031030000008002000090000000006D
2014:107DD000600000D80200003200007F0A3F00003C33
2015:107DE000084080B200007F0A80010080E2812FB647
2016:107DF00000000000DE0000F8F2812F3400000000D7
2017:107E0000005801EC06C0EE32000000004D000000FA
2018:107E100067E0833E00000000000800000700803299
2019:107E2000000000000010000007C0863200000000C3
2020:107E30000018000007C084320000BE0A04000028B9
2021:107E4000D8A082BC0000000000000018D8A0813C2F
2022:107E500000009C0A0400003CD8E083BC0000890AB2
2023:107E60000400008072802DBC0000870A12000050C0
2024:107E700002C038B200009A0A510000D812802D9A30
2025:107E80000000890A12000050F2C138B40000950ABF
2026:107E9000280000D8020000B20000920A8001008091
2027:107EA000F2C185B600008F0A1F400284E60100B4CB
2028:107EB0000000920A1D0100F822812FB40000920AEE
2029:107EC000000000F862812F950000910A1D010080DA
2030:107ED000020000B000000000000000F862812F35B1
2031:107EE0000000000000400280024068320000940A56
2032:107EF000343000E016206EBC0000940D00000080BD
2033:107F0000020000F00000AE0DDA5B01EC0640EDF27D
2034:107F100018003600000000F8730A03F90000990AFF
2035:107F20000400008072802DBC0000950A670000F8F4
2036:107F3000A2802FB500003610120000E802C021B266
2037:107F400000000000510000D8020000320000E80DDF
2038:107F500000000000D82080FA0000800A4D000000D8
2039:107F600067E0839E00009C0A12000050F2C138B402
2040:107F70000000A80A28000080084000B20000A50AFE
2041:107F800080010080F2C185B60000A20A1F40028471
2042:107F9000E60100B40000A50A1D0100F822812FB4FB
2043:107FA0000000A50A000000F862812F950000A40AD5
2044:107FB0001D010080020000B000000000000000F879
2045:107FC00062812F35000000000040028002406832CC
2046:107FD0000000A70A343000E016206EBC0000940DAB
2047:107FE00000000080020000F00000AE0DDA5B01EC42
2048:107FF0000640EDF20000BF0A80000080E2802FB64C
2049:108000000000AC0A042100E0068081B20000E80D07
2050:1080100000000034080000F200000000002000E032
2051:10802000068081320000B10A2A1100E0D6E086BA4B
2052:1080300018003600CA0000F8730A03F91D00B10ADF
2053:108040000401008002A417B80000AD0A9F0100805F
2054:10805000180088BC0000361000000080020000906C
2055:108060000000990F00000080020000F00000DC0E0C
2056:1080700000000030030038F20800B50A231901E8B7
2057:10808000762081B93E00B40A1200002C82CD2EB2B7
2058:108090000000B80A1D1800E006C084B20000B80A4B
2059:1080A0008000008002812FB62A000000D001002C41
2060:1080B00082CD2E320000FA0D0000002CF90100F4F0
2061:1080C0000000BC0A04000080020088BC0000BC0A5A
2062:1080D0001201000009C021B218003600000000F8AB
2063:1080E000730A03F9000032031201006802C585B06B
2064:1080F0000000361000000080020000900000BE0A60
2065:1081000012000050F2C138B400000000C001013874
2066:1081100008C06E320000C30A040201EC16C06EBC37
2067:1081200000C0C10A12000040A28D39B20000C40A8A
2068:10813000C90100140800009200000000453000E072
2069:10814000060000320000CF0A28000008E80100B451
2070:108150000000CC0A80010080F2C185B60000C90A87
2071:108160001F400284E60100B40000CC0A1D0100F8A3
2072:1081700022812FB40000CC0A000000F862812F9504
2073:108180000000CB0A1D010080020000B000000000CA
2074:10819000000000F862812F350000000000400280DE
2075:1081A000024068320000CE0A8000008042812FB673
2076:1081B0000000940D00000080020000F00000AE0DF1
2077:1081C000DA5B01EC0640EDF200200080DF000028C1
2078:1081D000090037320000B10FDE0000D8028001F242
2079:1081E0000800990F001801E8762081F90000DC0EE4
2080:1081F00000000030030038F20000D50A8001008042
2081:1082000032802FB63E00D40A1200002C82CD2EB24E
2082:108210000000D90A290801E406C02DB20000DE0AD8
2083:108220001D000080020000B00000DE0A8000008017
2084:1082300002812FB62A00DE0AD001002C82CD2E92B8
2085:108240000000DB0A1201000009C021B2180036004C
2086:10825000000000F8730A03F91D00DD0A0401008024
2087:1082600002A417B80000DA0A000000141840819C2C
2088:108270002B00DD0A1200002C82CD2EB20000FB0D77
2089:108280000000002CF90100F40000E10A0401008064
2090:10829000024081BC18003600000000F8730A03F9A0
2091:1082A0000000E10A1200004802C080B20000320360
2092:1082B0001201006802C585B00000E20A00000080DB
2093:1082C0000200009000000000000000D8028001328F
2094:1082D00000C0E90A1801000CA8CD3EB220800000C1
2095:1082E000000000080880363200008C0F0000005C9F
2096:1082F0001FC0F5FA0000310300000080020000906A
2097:1083000000C00000000000F8A28D2F310000000026
2098:10831000000000D802000032000000000000000051
2099:108320000780813200000000000800000700803252
2100:10833000000000000010000007C0863200000000AE
2101:108340000018000007C084320000EF0A120000503D
2102:10835000F2C138B40000F50A8000008082802FB698
2103:108360000000000000000068A860803C00000000E1
2104:108370000000003C084080320000AD0D0000000409
2105:10838000088082F20000F60A1201000009C021B242
2106:1083900018003600000000F8730A03F91D00F80AFF
2107:1083A0000400008002A417B80000F50A000000F8DD
2108:1083B000A2802F9500000000000000006820803A95
2109:1083C0000000FC0A0400002868A082BC0000E80D40
2110:1083D00000000080020000F00000EB0A000000D85E
2111:1083E0000200009200000000000000D8028001326C
2112:1083F0000020008000000028090037320000AD0F87
2113:1084000000000008E80100F418003600CA0000F877
2114:10841000730A03F90000060B040201EC16C06EBCDF
2115:1084200000000000C00100F892802F3400C0040B4F
2116:1084300012010040A28D39B20000020B0000008042
2117:10844000020000902B00060B1201002C82CD2EB2F0
2118:108450000000040B000000800200009000000000FB
2119:10846000000000D8028001320000090B12010060F8
2120:10847000084023B20082120B00000008A88D8092F1
2121:108480000000361012000024080023B2000036104D
2122:108490001200002008C023B200003610120000189D
2123:1084A000088023B200C0210B1801000CA8CD3EB2F9
2124:1084B00000000C0B12000038028081B20000361060
2125:1084C0001200003C020082B20000361012000030A0
2126:1084D000024082B20000361012000034020086B260
2127:1084E0002080000000000008A88D80320000190BD9
2128:1084F00080010080F2C185B60000160B1F40028487
2129:10850000E60100B40000190B1D0100F822812FB410
2130:108510000000190B000000F862812F950000180B75
2131:108520001D010080020000B000000000000000F803
2132:1085300062812F3500000000004002800240683256
2133:10854000000036101200006802C585B000001C0B48
2134:108550003400005C1FC0F5BA0000940D00000080DC
2135:10856000020000F000001E0B8000008092802FB6F9
2136:1085700000008E07003000E00600009200008E0729
2137:10858000120100E802C021B218000000000000F84B
2138:10859000730A03398E073600000000C002003692CD
2139:1085A00000000000450000D802400032000000003A
2140:1085B0004100000007808632000000000008000033
2141:1085C00007008032000000000010000007408232E7
2142:1085D0000000000000180000070086320000260B93
2143:1085E00012000050F2C138B4000000000000007812
2144:1085F000388087350000000000A001E016206E3AA8
2145:10860000000000000000007809C58530000000006F
2146:1086100000A801E016206E3C08000000D20100789E
2147:10862000E9E58339180036101F410284E6A197B9A5
2148:108630000000300B365101E816E083BC0000300B1F
2149:108640001D010080020000B000000000000000F8E2
2150:1086500062812F350000320B382101E0064080B2E4
2151:1086600000000000003001E0064080320000000001
2152:10867000000000D8028001320000350B34180000E1
2153:10868000078081B20000940D00000080020000F01D
2154:108690001000990F0030000017E02CF90010008046
2155:1086A00000380000070037320000DC0E0000003008
2156:1086B000030038F200003A0B8001008032802FB6B0
2157:1086C0003E00390B1200002C82CD2EB200003F0B71
2158:1086D00029210000070082B200003D0B12010000BA
2159:1086E00009C021B218003600000000F8730A03F92F
2160:1086F0001D00420B0401008002A417B800003B0BD0
2161:1087000000000014080000920000420B1D3000E041
2162:10871000060000B20000420B8000008002812FB6EC
2163:108720002A000000D001002C82CD2E320000AA0FBA
2164:108730000000002CF90100F40000FA0D000000F820
2165:10874000A2802FF40000470B04000080024081BC8F
2166:108750000000470B120100E802C021B218003600E9
2167:10876000000000F8730A03F9000032031201004808
2168:1087700002C080B20000470B0000008002000090A1
2169:108780000000500B80010080F2C185B600004D0B47
2170:108790001F400284E60100B40000500B1D0100F8E8
2171:1087A00022812FB40000500B000000F862812F9549
2172:1087B00000004F0B1D010080020000B0000000000F
2173:1087C000000000F862812F350000000000400280A8
2174:1087D000024068320000520B04000080024086BC58
2175:1087E0000000D70F0090010809006EF2000007108A
2176:1087F00000000080020000F00000590B330100D897
2177:10880000028001B20000590B80010080B20172B6F3
2178:108810000000590B9FF0018082DB87BC0000590BE0
2179:108820009FF8018022216EBC0000000000E801E0FA
2180:108830000600EE320000000000F001E006C08732C2
2181:1088400008000000001801E87620813900005F0B65
2182:1088500080010080D2802FB600005F0B04B0008042
2183:1088600002006EBC00000000CD0000F872812F34C1
2184:108870003D005F0B1201002C82CD2EB200005D0B7B
2185:1088800000000080020000900000690B270901E44D
2186:1088900006C02DB200C0630B1801000CA8CD3EB27B
2187:1088A000000036101200006802C585B020808E07D7
2188:1088B000000000080880369200000000004001E03F
2189:1088C0000640883200000000D508000007408832CA
2190:1088D000000000000030000007C02C320040008083
2191:1088E000CA390000070037320000670B1200004849
2192:1088F00002C080B20060000000000008088036322C
2193:1089000000006C0B1D000080020000B000006C0B2A
2194:108910008000008002812FB62A000000D001002CC8
2195:1089200082CD2E320000FB0D0000002CF90100F476
2196:10893000000032031201006802C585B00000361045
2197:10894000000000800200009000000000545401FC70
2198:1089500002C06E3200000000000000D80280013228
2199:1089600000C0750B1801000CA8CD3EB2208000009D
2200:108970000000000808803632000031031201002C8C
2201:1089800072E02EB20000730B000000800200009025
2202:108990000000C40F0020001808006EF2000036101E
2203:1089A0001F30002808006EB200000000000000A484
2204:1089B00008808232000036100410006C08006EB28D
2205:1089C0000000E00D0018004C08006EF200007C0B67
2206:1089D0000050013CA85B809C000036100000008025
2207:1089E000020000900000000000500100A81B803A27
2208:1089F00000000000510000D802000032000000001A
2209:108A00004D00000067E0833E000000000008000009
2210:108A100007008032000000000010000007C086320E
2211:108A2000000000000018000007C084320000A60B00
2212:108A300004000028D8A082BC00000000000000183C
2213:108A4000D8A0813C0000940B0400003CD8E083BC1B
2214:108A50000000880B0400008072802DBC0000860B93
2215:108A60001200005002C038B200008E0B510000D836
2216:108A700012802D9A0000880B12000050F2C138B409
2217:108A800018003600000000F8730A03F900008D0B8F
2218:108A90000400008072802DBC0000890B670000F884
2219:108AA000A2802FB500003610120000E802C021B2EB
2220:108AB00000000000510000D8020000320000920BBC
2221:108AC0002A010000D82080BA0000920B1201000099
2222:108AD00009C021B218003600000000F8730A03F93B
2223:108AE00000000000000000D8024084320000F00DB9
2224:108AF0000060006C08006EF200007F0B4D0000006B
2225:108B000067E0839E0000940B12000050F2C138B45D
2226:108B100018003600000000F8730A03F91D00990BD5
2227:108B20000400008002A417B80000950B670000F84D
2228:108B3000A2802FB5000036101200000009C021B23B
2229:108B40000800361012400268129AFEB80000DC0ECF
2230:108B500000000030030038F2000036101F00006CE7
2231:108B6000D8E086BA0000E00D510000D8020000F203
2232:108B700000009F0B0000003C08408092000036106F
2233:108B8000000000800200009000007E0B04010080C5
2234:108B9000028081BC0000A40B80010080A2802FB65F
2235:108BA0000000A40B1201000009C021B21800360019
2236:108BB000000000F8730A03F900000000000000D86C
2237:108BC000024084320000F00D0060006C08006EF27C
2238:108BD00000007F0B4D00000067E0839E0000000056
2239:108BE000C001013808C06E3200000000453000E0CE
2240:108BF000060000320000A80B12000050F2C138B489
2241:108C00000000AD0B040201EC16C06EBC00000000B9
2242:108C1000C90100141840813A00C0AD0B1201004098
2243:108C2000A28D39B20000AB0B000000800200009062
2244:108C300000C00000000000F8A28D2F3100000000ED
2245:108C400000A8012099226E3A0000B10B2F2001E00C
2246:108C500096226EBC0000A30D00000080020000F010
2247:108C60000000B50B0400003CD8E083BC0000B40B4E
2248:108C70009F3101E096226EBC00000000003001E050
2249:108C8000060000320000B90B005001E8F660809C3D
2250:108C90000800000000400268129AFE380000B80B7D
2251:108CA0009F3101E096226EBC00000000003001E020
2252:108CB0000600003200000000005001E8060000320B
2253:108CC0000000000000A801E0060092321800360003
2254:108CD000000000F8730A03F91D00BD0B04000080BA
2255:108CE00002A417B80000BA0B000000141840819CC1
2256:108CF00000000000000000D8028001320020008047
2257:108D000000000028090037320000B10F0000000801
2258:108D1000E80100F40000C00B1200004802C080B25D
2259:108D20000000DC0E00000030030038F20000C40B2D
2260:108D300023010014184081BA3E00C30B1200002C1E
2261:108D400082CD2EB218003600CA0000F8730A03F96B
2262:108D50000000C40B04010014184081BC0000990FEE
2263:108D600000000080020000F00000CA0B2931010C55
2264:108D700009006EB22B008C071201002C82CD2EB29E
2265:108D80000000C80B000000800200009000009C0D55
2266:108D9000000C020009806EF20000D30B000000807E
2267:108DA000020000900000AA0F00000080020000F006
2268:108DB000000000000000001C080090320000D20BF0
2269:108DC00004000028098080B20000F10E000000D8E5
2270:108DD000020000D20000D20B04000080028092BC8E
2271:108DE00018003600000000F8730A03F900007D0542
2272:108DF000000000080800009200008C071D000080A1
2273:108E0000020000B000008C078000008002812FB6B5
2274:108E10002A00D50B1200002C82CD2EB200008C0748
2275:108E2000000000F802812F940000BA0D0000001825
2276:108E3000094081F20000A30D00A8012009006EF294
2277:108E4000000000000030010C09006E3200009C0D93
2278:108E5000000C020009806EF200008E070000008006
2279:108E6000020000900000990F00000080020000F056
2280:108E70000000AA0F00000080020000F000007D0545
2281:108E80000000001C0800909200000000545401FCF7
2282:108E900002C06E3210000000000000A8780B1638E7
2283:108EA00008000000000000AC780B1638000000003D
2284:108EB000000000B0A8002D3700440000000000B002
2285:108EC000880D8B3A00000000005001B408806E321B
2286:108ED0000000ED0B0431019008006EB202000000AA
2287:108EE000000000C8828D8A3700000000000000C822
2288:108EF000C2A22C3A1800EB0B86410278880D78B696
2289:108F00000000E60B9F0100A818808ABC9F00E60BBA
2290:108F1000000000A808003692000000000040020493
2291:108F2000B83F78300000FB0B00000004D862809C42
2292:108F300002000000000000C8828D8A370000000097
2293:108F4000000000C8C2A22C3A1800F20B8641027839
2294:108F5000880D78B60000ED0B9F0100A818808ABC30
2295:108F60009F00ED0B000000A8080036920000F40BF3
2296:108F700028400204B83F78B000000000C801000497
2297:108F8000D862803C0000F80B02010090182089BCD8
2298:108F900000000000000000B4080000320000ED0BEB
2299:108FA0009F0100A818808ABC9F00ED0B000000A85C
2300:108FB000080036920000FB0B04000090182089BACC
2301:108FC000000036109F000004486280BC000036108C
2302:108FD000900000B448628BBA0300361004400200CF
2303:108FE000081EFFB80000030C00000000D822809A81
2304:108FF0000000280C04000080A2E28ABC02000000ED
2305:10900000000000C8828D8A3700000000000000C800
2306:10901000C2A22C3A1800260C86400278880D78B639
2307:109020000000361004400204B83F78B00300361048
2308:1090300004400200081EFFB80000070C1201006087
2309:10904000084023B200820000000000080880363289
2310:10905000000031031201002C72E02EB20000050C5A
2311:109060000000008002000090000036101200002472
2312:10907000080023B2000036101200002008C023B2FE
2313:109080000000361012000018088023B20000000013
2314:10909000000000D80280013200C0110C1801000C41
2315:1090A000A8CD3EB200000B0C12000038028081B245
2316:1090B000000036101200003C020082B200003610A0
2317:1090C00012000030024082B200003610120000345C
2318:1090D000020086B22080050C00000008088036924D
2319:1090E00000000000000000D8020000320000000074
2320:1090F00000380200B81B803A00000000643001E034
2321:1091000016206E3A00000000000000000740803288
2322:10911000000000000008000007008032000000008E
2323:10912000001000000740823200000000001800001C
2324:10913000070086320000180C12000050F2C138B44B
2325:1091400000000000000000D8028001320000000092
2326:10915000001800000780813200000000002000009D
2327:1091600007008232100000000030000017E02C39A8
2328:109170000000000000380000F7010B340000200C54
2329:1091800080010080328087B60000000000380000B7
2330:10919000B70170340000000000000008E80100344E
2331:1091A00000002F0C020C0280A21B89BC18003600A4
2332:1091B000000000F8730A03F90000DC0E0000003024
2333:1091C000030038F20000240C1200004802C080B2F4
2334:1091D00018003600000000F8730A03F90000FD0BC8
2335:1091E0009F0100A818808ABC9F00FD0B000000A80A
2336:1091F0000800369200002A0C8001008032802FB6D1
2337:109200003E00290C1200002C82CD2EB200002C0C46
2338:109210001D010080020000B000008C07000000F873
2339:1092200062812F9500008C078000008002812FB69C
2340:109230002A002D0C1200002C82CD2EB200008C07CB
2341:10924000000000F802812F940000000000380000A8
2342:10925000C70170340000DC0E00000030030038F25B
2343:109260000800330C231901E8762081B93E00320C46
2344:109270001200002C82CD2EB20000350C1D010080A2
2345:10928000020000B00000380C000000F862812F9549
2346:109290000000380C8000008002812FB62A00360CB6
2347:1092A0001200002C82CD2EB200000000000000F859
2348:1092B00002812F340000FA0D0000002CF90100F4A7
2349:1092C00000003B0C120100E802C021B21800360079
2350:1092D000000000F8730A03F900003B0C120000487C
2351:1092E00002C080B200003203000000F8A2802F9478
2352:1092F00000000000000000D80280013200000000E1
2353:109300000030002808006E3200000000545401FCB8
2354:1093100002C06E3200C0490C1801000CA8CD3EB24C
2355:109320002080000000000028098036320000F10E85
2356:10933000000000D8020000D20000460C04000080AB
2357:10934000028092BC18000000000000F8730A033984
2358:10935000470C3600000000C00200369218003600AC
2359:10936000000000F8738A03F900000000000000D834
2360:109370000280013200C0460C1800000CA8CD3EB29D
2361:109380000020008400000028090037320000AD0FE3
2362:1093900000000008E80100F400008C0700000080D5
2363:1093A0000200009000000000000000D8028001329E
2364:1093B00000000000545401FC02C06E3200C0520C88
2365:1093C0001801000CA8CD3EB220800000000000086B
2366:1093D0000880363200002F031201002C72E02EB2FA
2367:1093E0000000500C00000080020000900000510FAF
2368:1093F00000000028090002F200005A0C0000005C86
2369:109400000800009200000000000000D80280013235
2370:1094100000000000545401FC02C06E3200C05A0C1F
2371:109420001801000CA8CD3EB220800000000000080A
2372:109430000880363200008C0F0000005C1FC0F5FA77
2373:1094400000003103000000800200009000000000D6
2374:109450000030002808006E32002000840000002840
2375:10946000090037320000AD0F00000008E80100F4E9
2376:1094700000005F0C0000008002000090000000006F
2377:1094800000000008080000320000650C04000080A5
2378:1094900002C085B20000650C80000080F2C185B674
2379:1094A0000000640C1C41028006C085B20000000070
2380:1094B0000000006802C58530000000000000007058
2381:1094C0001F00F73A00000000000000F822812F344E
2382:1094D0000000DC0C80010080A2802FB61800000084
2383:1094E000000000F8730A0339DC0C3600CA0000C023
2384:1094F000020036920000AD0C8001008082812FB600
2385:109500000000B20C1F20010809006EB20000AD0C73
2386:1095100004300108899B90BC0000710C043101806B
2387:1095200002006EBC0000E00D00000080020000F0B0
2388:1095300000006F0C0050014808806E920000361049
2389:109540000000008002000090000000000000000405
2390:109550002861803C0000810C000000002821809AD6
2391:109560000000E00D0030014808006EF20000740CAD
2392:1095700000500104A85B809C0000361000000080B1
2393:10958000020000900000000000500100A81B803A7B
2394:1095900000007E0C0700004818A084BC08000000F2
2395:1095A00000400200189AFE38000000000000006829
2396:1095B000020080320000E00D00000080020000F098
2397:1095C00000007B0C000000800200009000003610BC
2398:1095D000000000800200009000007E0C07000048A0
2399:1095E00018A084BC0800000000400200189AFE3851
2400:1095F0000000780C00000068020080920000810CDE
2401:109600000400004818A084BA000036109F0000042F
2402:10961000286180BC00000000000000002821803A82
2403:1096200000000000005401FC02C06E3200008A0CF1
2404:1096300012010060084023B200820000D601000839
2405:10964000088036320300361004400200381AFFB892
2406:109650000300000000000078096080391800000055
2407:10966000D241028CE6A1973900000000005001E8C9
2408:1096700006808432290031031201002C82CD2EB2E3
2409:109680000000880C000000800200009000003610EE
2410:1096900012000024080023B200003610120000203F
2411:1096A00008C023B20000361012000018088023B250
2412:1096B00000000000000000D80280013200C0950CBC
2413:1096C0001801000CA8CD3EB220800000D601000891
2414:1096D0000880363200008F0C12000038028081B200
2415:1096E000000036101200003C020082B2000036106A
2416:1096F00012000030024082B20000840C12010034DB
2417:10970000020086B2000036100000008002000090C7
2418:10971000080000000040025C189AFE3800000000BB
2419:10972000000000480800003200000000000000D8DF
2420:1097300002000032000000000000000007408032FC
2421:109740000000000000080000070080320000000058
2422:1097500000100000074082320000000000180000E6
2423:109760000700863200009C0C12000050F2C138B491
2424:1097700000000000D60100D8028001320000000085
2425:109780000018000007808132000000000020000067
2426:1097900007008232100000000030000017E02C3972
2427:1097A0000000A40C80000080328087B6001000808A
2428:1097B00000380000070037320000A50C00000080D0
2429:1097C00002000090001000880038000007003732C7
2430:1097D00018003600000000F8730A03F900000000CA
2431:1097E0000000006802C08532000000000000000890
2432:1097F000E80100340000A80C1200004802C080B24A
2433:1098000018003600000000F8730A03F90000E00DAC
2434:1098100000000080020000F00000810C00000080C9
2435:10982000020000900000B20C0000008002000090D6
2436:109830000000E00D00000080020000F00000B00C0D
2437:1098400000380200B81B809C0000B20C00000080B1
2438:1098500002000090050000000000006802A0FE3831
2439:109860000000AD0C00400280024068920000000041
2440:10987000CA0100D8020000320000B50C04B8018013
2441:1098800002006EBC0000000000B801E0861BEE3C48
2442:109890004C0000000000000007003632000000000D
2443:1098A00000000078A9002D37B44400000008000033
2444:1098B000878D973A000000000000007899C02C378F
2445:1098C000B400000000000078898D973A000036103F
2446:1098D0000210000087BF97BA0000000000180000C7
2447:1098E0000740FE320000BC0C12000048F2C138B440
2448:1098F0000000BD0CB6000080020000B00020BE0CCD
2449:1099000012000064A2CD2CB200000000A60000806E
2450:10991000020000300000C20C80010080A2802FB63F
2451:1099200018003600CA0000F8730A03F900008C071B
2452:10993000005401FC02C06E9200000000005401FCC3
2453:1099400002C06E320000C80C12010060084023B251
2454:109950000082000000000008088036322900310330
2455:109960001201002C82CD2EB20000C60C0000008037
2456:10997000020000900000361012000024080023B2FC
2457:10998000000036101200002008C023B2000036107C
2458:1099900012000018088023B200000000000000D868
2459:1099A0000280013200C0D30C1801000CA8CD3EB2D9
2460:1099B0002080000000000008088036320000CD0C36
2461:1099C00012000038028081B2000036101200003C04
2462:1099D000020082B20000361012000030024082B253
2463:1099E0000000C60C12010034020086B200003610DE
2464:1099F00000000080020000900000E00D0000004820
2465:109A0000080000F20800D60C0040025C189AFE988C
2466:109A100000003610000000800200009000000000EE
2467:109A200000500100A81B803A0000970C000000487D
2468:109A30000800009200000000005401FC02C06E32D9
2469:109A40000000510F00000028098002F20000BD0C48
2470:109A500000000080020000900000510F000000286C
2471:109A6000090002F20000DF0C9A0100F862812FB4B5
2472:109A700010240000000000F8A28D2F31000000002B
2473:109A800000D601EC06C06E342E008C071201002CAB
2474:109A900082CD2EB20000DF0C00000080020000909A
2475:109AA0000000E80C80010080F2C185B60000E50CE2
2476:109AB0001F400284E60100B40000E80C1D0100F81C
2477:109AC00022812FB40000E80C000000F862812F957D
2478:109AD0000000E70C1D010080020000B00000000043
2479:109AE000000000F862812F35000000000040028075
2480:109AF000024068320000EA0C04980164881B87BCAD
2481:109B00000000D70F0090010809006EF20000071056
2482:109B100000000080020000F0000036101200006813
2483:109B200002C585B000000000000000F8D2802F358B
2484:109B300000008E07370000F8D2812FB4000000002B
2485:109B4000000000F872812F343D008E071201002CB6
2486:109B500082CD2EB20000EF0C0000008002000090C9
2487:109B60000000F80C80010080F2C185B60000F50C01
2488:109B70001F400284E60100B40000F80C1D0100F84B
2489:109B800022812FB40000F80C000000F862812F95AC
2490:109B90000000F70C1D010080020000B00000000072
2491:109BA000000000F862812F350000000000400280B4
2492:109BB000024068320000000000D401EC16C06E3A8A
2493:109BC000000036101200006802C585B000008E0744
2494:109BD00004B0008002006EBC37008E071201002C1A
2495:109BE00082CD2EB20000FB0C00000080020000902D
2496:109BF0000000040D80010080F2C185B60000010D57
2497:109C00001F400284E60100B40000040D1D0100F8AD
2498:109C100022812FB40000040D000000F862812F950E
2499:109C20000000030D1D010080020000B000000000D4
2500:109C3000000000F862812F35000000000040028023
2501:109C4000024068320000100D000000800200009009
2502:109C500000000C0D80010080F2C185B60000090DE6
2503:109C60001F400284E60100B400000C0D1D0100F845
2504:109C700022812FB400000C0D000000F862812F95A6
2505:109C800000000B0D1D010080020000B0000000006C
2506:109C9000000000F862812F350000000000400280C3
2507:109CA000024068320000100D370000F8D2812FB456
2508:109CB00000000000000000F872812F343D00100DFC
2509:109CC0001201002C82CD2EB200000E0D000000808B
2510:109CD000020000900000000000D401EC06000032F9
2511:109CE00000008E071201006802C585B00000361022
2512:109CF000000000800200009000008C0780010080BE
2513:109D0000F2812FB600008C0780000080E2812FB620
2514:109D100000008C07085901EC06FB6EBC0000000037
2515:109D2000000000D80280013200000000545401FC01
2516:109D300002C06E3200C01D0D1801000CA8CD3EB24D
2517:109D400000000000005801EC06FB6E3A2080000085
2518:109D5000000000080880363200002F031201002C9A
2519:109D600072E02EB200001B0D000000800200009087
2520:109D70000000AA0F000000F8E2812FF40000200D7F
2521:109D80000603018012C06EBC19007D050000001C96
2522:109D9000080036921A007D050000001C080036926B
2523:109DA00000C00000000000F8A28D2F31000000006C
2524:109DB000000000D802800132002000C0000000280E
2525:109DC00009003732000000000030002808006E3221
2526:109DD00000000000453000E0060000320000AD0F3A
2527:109DE00000000008E80100F400002C0D040201EC62
2528:109DF00016C06EBC00000000C90100141840813A72
2529:109E000000000000000000F802802F3400C02C0D7C
2530:109E100012010040A28D39B200002A0D000000801E
2531:109E20000200009018003600CA0000F8730A03F917
2532:109E300000002C0D9F010014184081BC00008E070B
2533:109E40008001008092802FB62B008E071201002C1B
2534:109E500082CD2EB200002F0D000000800200009085
2535:109E6000000036101F0100D8028001B2000000007F
2536:109E7000005401FC02C06E3200C03C0D1801000C01
2537:109E8000A8CD3EB2208000000000002809803632B4
2538:109E90000000F10E000000D8020000D20000390DD1
2539:109EA00004000080028092BC18000000000000F84E
2540:109EB000730A03393A0D3600000000C002003692E2
2541:109EC00018003600000000F8738A03F90000000053
2542:109ED000000000D80280013200C0390D1800000CCB
2543:109EE000A8CD3EB20000AA0F000000D8024000F248
2544:109EF00000F0430D1D400200A80D68B100003610AF
2545:109F00001E400284060000B20000410D120000282D
2546:109F1000020580B008003D0D000000F823400199C3
2547:109F200000003D0D12010068020580B000003610EF
2548:109F300000000080020000900000430DB50000808A
2549:109F4000020000B000000000A50080A0360B6A35BA
2550:109F5000000000000000005009C02932000000008D
2551:109F60000056012808C06E32000000000000007892
2552:109F7000390B2E320000000000000020F3819734DE
2553:109F800000004C0D04000078D90130B6000000003C
2554:109F900000000000B905303018000000000000F893
2555:109FA00003A403390000000000000034330B2F32FB
2556:109FB0000000590D04000078D90130B600000000FF
2557:109FC00000000078B90530300000520D0400008018
2558:109FD00042E529BC00000000000000F80200003249
2559:109FE00018000000000000F8738A02390000000029
2560:109FF0000000009C028097320000580D25010008E7
2561:10A00000080000B20000560D12000028020580B0C2
2562:10A010000800580D000000F8234001990000580D79
2563:10A0200012010068020580B00000361000000080B8
2564:10A030000200009000004C0D000000F402000092AD
2565:10A0400000005D0D0400008042E529BC0000000016
2566:10A05000000000F80200003218000000000000F8C4
2567:10A06000738A0239000000000000009C0200953253
2568:10A0700000000000CA0100D8028001320000000088
2569:10A080000030000007C02C32001000A00038000093
2570:10A090000700373200000000002000000700EE3209
2571:10A0A000000000000038000C078082320000620DC2
2572:10A0B0001200004802C080B2000032030000000815
2573:10A0C000E801009400007A0D02000080A24280BCEA
2574:10A0D00000007A0D80000080F2C185B600007A0D84
2575:10A0E0001F400208B9BF68B000006C0D80410280BB
2576:10A0F000E28168B608000000000000107961803934
2577:10A1000000000000D22101E016206E3A1800000085
2578:10A1100000400288E6219139000000000001005C47
2579:10A1200008000072000000000000000C19A0903A26
2580:10A1300000007A0D06010080D2FF90BC0000700D77
2581:10A140002C410278F98168B400000000000000781A
2582:10A15000B98197340300000000400200291AFF383B
2583:10A160000000000000380200B91B903A0000000017
2584:10A17000D241028816A0973A00000000450000D89E
2585:10A1800002400032000036109F2001E016206EBA17
2586:10A1900000000000000000000740803200000000C6
2587:10A1A000000800002724903A000000000010000082
2588:10A1B00007008A320000000012010058F2C1387412
2589:10A1C0000000780D00000080020000900800840D5F
2590:10A1D0001A000034796180B900008F0D1E010080E3
2591:10A1E000020000B000008F0D1F400200094068B25D
2592:10A1F00000007C0D80000080E20190B60000361067
2593:10A20000380000541F40F5BA0000000000000008AC
2594:10A21000B93F903000000000002801E026246E3A8B
2595:10A22000080036101E00000009A4FEB800008F0DC3
2596:10A2300012010068020590B0000036100000008096
2597:10A240000200009000008F0D8000008082812FB6F8
2598:10A2500000008D0D1F410200094068B2000000009F
2599:10A26000002801E016206E3A00008A0D800100806F
2600:10A27000F2C185B60000000000400284E60100340F
2601:10A28000000000000000008002000030000000001C
2602:10A29000004002800240683200003610380000544E
2603:10A2A0001F40F5BA00000000002101E016206E7A80
2604:10A2B0000000850D80000080E20190B600007E0D58
2605:10A2C000000000541F40F59A000000000000005CF0
2606:10A2D0000800003200000000D22101E016206E3A92
2607:10A2E000180000001E410284E661937900003610D8
2608:10A2F00000000080020000900000FFFF00000080CE
2609:10A30000020000900000970D1D5D01EC16C06EBCB0
2610:10A31000000000000F01008002000070000000003B
2611:10A32000000100F8B2802F74000000000F010080CF
2612:10A33000020000700000960D045E01EC16C06EBCB9
2613:10A3400000000000005C01EC06400032000000004C
2614:10A3500000010080020000700000FFFF000000808C
2615:10A3600002000090000000000420018082DB907C4D
2616:10A3700000000000020C0280A2DB907C0000A00D17
2617:10A3800006210180821B90BC2700A10D0000000067
2618:10A390000900369228000000000000000900363253
2619:10A3A000000000000000008812002C3A0000FFFFAF
2620:10A3B0000000008002000090000000002FA0017843
2621:10A3C000891B927A0000000006880178899B977C9F
2622:10A3D000000000000034020409C06E3D00000000CF
2623:10A3E000000C020019A46E370000AB0D02000080C3
2624:10A3F00002A497BC0000AB0D02000080020000B078
2625:10A400000100000000000078898D973700000000EF
2626:10A4100002010280829B977C00000000000100F88E
2627:10A42000F2802F740000FFFF000000800200009007
2628:10A4300000000000DA5B01EC0640ED320000B10DD7
2629:10A4400004010080024086BC0000000000A001E082
2630:10A4500016206E3A0000B30D00D401EC0600009205
2631:10A460000000D70F0090010809006EF20000000004
2632:10A4700000A001E016206E3A00000710330100F83A
2633:10A4800082802FB4000007109FF0018082DB87BC20
2634:10A49000000007109FF8018022216EBC0000000020
2635:10A4A00000E801E00600EE320000000000F001E0EC
2636:10A4B00006C08732000007100000008002000090F4
2637:10A4C0000000FFFF00000080020000900000C50DAA
2638:10A4D0000421013069246EBC0000BF0D1F4002241E
2639:10A4E000094068B20000BB0D80000080E24192B6D6
2640:10A4F0000800BB0D1201006892A4FEB800003610DF
2641:10A5000000000080020000900000000000A801E0B0
2642:10A5100066246E3A0000C20D382001E0060093B2B6
2643:10A520000000C30D002801E00600009200000000BA
2644:10A53000003001E00600003200000000005001E899
2645:10A5400006000032000000000001008002000070E0
2646:10A550000000CA0D38510100A99B91BA0000C80D36
2647:10A5600004410208B9FF68B00000C60D0040028037
2648:10A57000024068920000D50D9F3101E066246EBC58
2649:10A580000000D50D003001E0060000920000D30D60
2650:10A590000428010409006EB20000D10D9F010000E3
2651:10A5A000192490BC0000000000A801E066246E3A67
2652:10A5B00000000000002801E00624003C000000002C
2653:10A5C000005001E806000032000036109F2001E034
2654:10A5D000060093B20000000000010080020000703D
2655:10A5E00000000000002801E0060000320000DB0D42
2656:10A5F00004000080020090BC0000D50D0441020858
2657:10A60000B9FF68B00000D30D00400280024068929C
2658:10A610000000D90D02000080222490BC0000DB0D58
2659:10A6200080400280F2C168B6000000000040028C49
2660:10A63000B6C168350000DB0D000000F822812F94C0
2661:10A640000800361012400268129AFEB80000D30DBE
2662:10A6500004010000292490BC0000000000A801E0D3
2663:10A6600066246E3A00000000005001E806009032B7
2664:10A67000000036109F2001E0060093B200000000A9
2665:10A6800000010080020000700000FFFF0000008059
2666:10A69000020000901800E20D1F41027888CD68B6D4
2667:10A6A000000000000000008812002C3A0000E40DB9
2668:10A6B00080010080628087B60000E00D00400280CB
2669:10A6C000024068920300361004400200381AFFB8B6
2670:10A6D000000036101F400204B8FF68B00000000000
2671:10A6E00000390200B81B807A0000FFFF00000080E4
2672:10A6F000020000900000EF0D80010080A2802FB6C4
2673:10A700000000EC0D1201000009C021B21800360053
2674:10A71000000000F8730A03F900000000000000D8F0
2675:10A72000024084321D00EF0D0401008002A417B81E
2676:10A730000000E90D9F010080180088BC0000361061
2677:10A740000000008002000090000000000060006C2B
2678:10A7500008006E3200000000CA68004C08006E322B
2679:10A76000000036100470001808006EB200000000EF
2680:10A7700004000080A2A0817C0000F60D8001008012
2681:10A78000E2802FB60000F60D1B000080020000B032
2682:10A79000000000000600008062E0837C00000000F2
2683:10A7A000CA0100F802802F3500A00000120100400D
2684:10A7B000A28D39720000F70D0000008002000090A9
2685:10A7C0000000FFFF00000080020000900000000079
2686:10A7D000000801E406C02D32EEFF0000001001E089
2687:10A7E000868D2F31000000000000001CB3E43932D8
2688:10A7F0000000000E04000078D90130B6000000000F
2689:10A8000000000078B905303018000000000000F8A2
2690:10A81000E3A503390000000000000034330B2F32A1
2691:10A820000000000004000078D9013076000000002C
2692:10A8300000000078B905303018000000000100F871
2693:10A84000E3A503790000FFFF0000008002000090F4
2694:10A8500000000000000000CC020000320000080EE2
2695:10A860002000012C09C06EB20000090E001686CC33
2696:10A8700006C0929200000000001486CC06C09232FE
2697:10A880000000000012010040628E92520000090E8A
2698:10A8900000000080020000900000FFFF0000008028
2699:10A8A0000200009000000E0E04000078D90130B6BE
2700:10A8B0000E0E3600000000C00200369200000000BC
2701:10A8C000000000140300383200000000000000E027
2702:10A8D0000200303200004E0E04000024D80130B6D1
2703:10A8E000120E000000000088824D823A00003610EF
2704:10A8F0000000008002000090000036100000008080
2705:10A90000020000900000361000000080020000905D
2706:10A910000000361000000080020000900E0E36008D
2707:10A92000000000C0020036920000380E00000080D7
2708:10A930000200009000001A0E000000204805309030
2709:10A940000000361000000080020000900000260E7B
2710:10A95000921101BC08006EB200000000000801DC8A
2711:10A9600002406E3200001E0E1F1101E026C18BB5A1
2712:10A970000000260E1D000080020000B00000000054
2713:10A98000000000D802000032800200000000000039
2714:10A99000070036320000000000000078A9002D37C3
2715:10A9A0002045000000080000878D973A0A0000004B
2716:10A9B00000000078890D82370000000000100000C0
2717:10A9C000A7BA973A000000000018000007C0EA325A
2718:10A9D0000000250E1200004802C038B200002A0E06
2719:10A9E000800E01BC08C06EB2000000000000000034
2720:10A9F000190E823200E0320E12010048A20D90B210
2721:10AA00000000280E000000800200009000000000FE
2722:10AA1000000000D802400032B40000000000000036
2723:10AA2000070036320000000000000078A9002D3732
2724:10AA30000044000000080000878D973A00000000E5
2725:10AA400000000078990082370000361002100000E4
2726:10AA500087BF97BA00000000001800000740FE32D0
2727:10AA60000000310E12000048F2C138B41800360060
2728:10AA7000000000F8730A03F9000000000000000461
2729:10AA8000896038320000000000000018F341903463
2730:10AA90000000380E04000078D90130B60000000034
2731:10AAA00000000000B905303018000000000000F878
2732:10AAB00003A40339000000000000000019CE2C326E
2733:10AAC0000060390E12000040A20D90B2000000009C
2734:10AAD000000000D80200003260000000000000000A
2735:10AAE0000700363200000000000000BCA8002D372F
2736:10AAF000A04700000008000087CD8B3A0A00000044
2737:10AB00000000007889CD2C3780020000000000781A
2738:10AB1000898D973A0000000000100000A7BA973A0C
2739:10AB2000000000000018000007C0EA320000420EDA
2740:10AB300012000040F2C138B418003600000000F8DE
2741:10AB4000730A03F900000000000801DC02406E32C5
2742:10AB50000A00470E1F01007889CD2CB700000000C5
2743:10AB60001D1001F802006E7280020000000000005B
2744:10AB700007003632204500000008000087CD8B3AE0
2745:10AB80000000000000100000A7BA973A0000000083
2746:10AB90000018000007C0EA3200004B0E120000400F
2747:10ABA000F2C138B418003600000000F8730A03F947
2748:10ABB00000000000001101F802006E7200000000A9
2749:10ABC000001001F802006E3200000000000901DCF4
2750:10ABD00002406E720000FFFF000000800200009043
2751:10ABE0000000000000000000090000320E0000001C
2752:10ABF00000000004894D0D36000000000000000038
2753:10AC000007800B32000000000008000007009032AF
2754:10AC10000000000000100000070036320000560E51
2755:10AC20001200004CF2C138B40000000000000080A7
2756:10AC3000020000300000570E1200008002C021B256
2757:10AC40000000000000000000E902903A0000530EEE
2758:10AC500004010004194090BC0000000000010080C5
2759:10AC6000020000500000FFFF000000800200009082
2760:10AC70000000650E80010080A2802FB60000600EEB
2761:10AC8000120100E802C021B218003600000000F8EE
2762:10AC9000730A03F90000640E0400008002802DBCDA
2763:10ACA000000036109F000080180088BC0000600E75
2764:10ACB000120100E802C021B200005F0E0000008017
2765:10ACC0000200009000000000CA0000D80240843258
2766:10ACD000000000000040006C881C833A0000000067
2767:10ACE0000048004C0800723200003610085000186E
2768:10ACF000C82072BC00000000040000800240817C7B
2769:10AD000000000000000000141840813C00003610D4
2770:10AD100002000020880182BA00000000000000D874
2771:10AD200002000032000000000000000007000632B0
2772:10AD30000700000000080000774A09390000000001
2773:10AD4000001000000700823200000000CA19000055
2774:10AD5000074082320000700E12000040F2C138B489
2775:10AD600000000000000100D8024084720000FFFFD4
2776:10AD70000000008002000090000000004D00000074
2777:10AD800067E0833E000000000008000007008032FA
2778:10AD9000000000000010000007C086320000000024
2779:10ADA0000018000007C084320000B70E040000281D
2780:10ADB000D8A082BC0000000000000018D8A0813C90
2781:10ADC0000000890E0400003CD8E083BC00007D0E2A
2782:10ADD0000400008072802DBC00007B0E1200005029
2783:10ADE00002C038B20000830E510000D812802D9AA4
2784:10ADF00000007D0E12000050F2C138B41800360079
2785:10AE0000000000F8730A03F90000820E04000080BD
2786:10AE100072802DBC00007E0E670000F8A2802FB566
2787:10AE200000003610120000E802C021B2000000004D
2788:10AE3000510000D8020000320000870E2A010000F5
2789:10AE4000D82080BA0000870E1201000009C021B28C
2790:10AE500018003600000000F8730A03F90000000033
2791:10AE6000000000D8024084320000F00D0060006C49
2792:10AE700008006EF20000740E4D00000067E0839E33
2793:10AE80000000890E12000050F2C138B418003600DC
2794:10AE9000000000F8730A03F91D008E0E0400008004
2795:10AEA00002A417B800008A0E670000F8A2802FB530
2796:10AEB000000036101200000009C021B20800361050
2797:10AEC00012400268129AFEB80000DC0E000000304A
2798:10AED000030038F200009F0E1F00006CD8E086BA15
2799:10AEE0000000E00D510000D8020000F20000940EB6
2800:10AEF0000000003C0840809200009F0E000000808F
2801:10AF0000020000900000980E80010080F2812FB6B0
2802:10AF10000000980E80000080E2802FB60000980E9E
2803:10AF200080010080328087B600000000000000F839
2804:10AF3000E2802F340000730E04010080028081BC87
2805:10AF400000009D0E80010080A2802FB600009D0EA3
2806:10AF50001201000009C021B218003600000000F8FC
2807:10AF6000730A03F900000000000000D80240843298
2808:10AF70000000F00D0060006C08006EF20000740E1E
2809:10AF80004D00000067E0839E0000A30E800100805A
2810:10AF9000E2802FB60000BA0E80010080A2802FB69A
2811:10AFA00018000000CA0000F8730A0339BA0E360010
2812:10AFB000000000C00200369200000000000000A463
2813:10AFC000A8608A3C0000A60E2FA8012099226EBA24
2814:10AFD0000000A30D00000080020000F0000000004F
2815:10AFE00000A801E00600923200000000005001E8D5
2816:10AFF000060000320000AA0E232101E0060000B284
2817:10B000003E00A90E1200002C82CD2EB20000361098
2818:10B01000043000E0068082B20000B20E042100E09D
2819:10B02000068081B20000B00E80010080A2802FB6A1
2820:10B030000000B00E1201000009C021B21800360055
2821:10B04000000000F8730A03F900000000000000D8B7
2822:10B05000024084320000F00D0060006C08006EF2C7
2823:10B0600000000000002000E0068081320000361061
2824:10B07000041000E006C086B2000000002A1900E0BB
2825:10B0800006C0847200000000000000F8A2802F3586
2826:10B09000000000001201000009C0217218003600F3
2827:10B0A000000000F8730A0399000000000000003C53
2828:10B0B000D8E0833C0000B80E12000050F2C138B452
2829:10B0C00000000000000000F8A2802F340000000003
2830:10B0D0000000008812002C3A0000FFFF00000080F2
2831:10B0E0000200009000000000000000000900003293
2832:10B0F000000000000000007809000032000000009D
2833:10B10000000000A802000032EE05C20E040100801B
2834:10B11000820DF6BC0006000000000008090036326F
2835:10B120000000C40E0000000409C0099200280000BD
2836:10B130000000000809003632000000000000000492
2837:10B14000098009321E000000000060C087CD003772
2838:10B1500000000000000860C0078097320030000047
2839:10B1600000000078898D2A3A000036101200005C39
2840:10B17000528197B400000000000000002924903A9A
2841:10B180000800000000000078890D903600000000E3
2842:10B19000000000041940903C00000000000000A8DE
2843:10B1A00052822A3A0008C40E02010080828D2ABC15
2844:10B1B0000000D50E06000080024090BC0000361052
2845:10B1C000120000A8020020B21E000000000000C013
2846:10B1D00087CD003700000000000800C007809732CC
2847:10B1E000000036101200005C52812AB400000000FA
2848:10B1F000000000002924903A0800000000000078B8
2849:10B20000890D90360000CE0E04010004194090BC58
2850:10B210000500000000000078890D9036000036100F
2851:10B2200012000068028097B20000000000000000D9
2852:10B230002924903A00000000000000785900903660
2853:10B240000000D60E95010080222490BA0000000074
2854:10B2500000010080020000500000FFFF000000809D
2855:10B26000020000900000000004010078D90130764F
2856:10B27000000000000000002809C029320000000082
2857:10B280000000009CB24528300000E80E860100084E
2858:10B2900009802FB2000000000000002C094081321C
2859:10B2A00000000000000000F8020000320000000072
2860:10B2B000000000F40200003218000000000000F856
2861:10B2C000738A0239000000000000009C0280923264
2862:10B2D0000000E70E0407018002C06EBC0000ED0E06
2863:10B2E000C30701ECB6E46E9A0000ED0E000601EC17
2864:10B2F000B6E46E9A000000000000002C09058030C2
2865:10B3000000000000000000F8020000320000000011
2866:10B31000000000F40200003218000000000000F8F5
2867:10B32000738A023900003F0F0000009C028092D215
2868:10B330000000000000000030030038320000000070
2869:10B3400004010078D90130760000DF0E0000009C77
2870:10B35000B24528900000FFFF00000080020000902E
2871:10B36000000000000000008802C0E8320200F20E77
2872:10B37000B00000A0F20B00B9000000000000000CBB
2873:10B38000ABE4B0320000F70E80010080F24BD0B683
2874:10B3900000000000A00000280900003200000000AA
2875:10B3A00000010080020000500000F90E040100803E
2876:10B3B000123EF8BA0000040FA0000004FD4BD09428
2877:10B3C0000000000F80010080D28192B60000000FC3
2878:10B3D000800100802281FCB600000000A000000473
2879:10B3E000FD4BD034000000000000008401C02F326B
2880:10B3F0000000000000000080F101003400000000A7
2881:10B400000000009401C02F320000040F00000090E3
2882:10B41000F101009400000000A000008401C02F3260
2883:10B420000000000000000080F101F834000000007E
2884:10B43000000000900140F8320000000000010028E8
2885:10B44000090000520000080F040100280934B0BAB6
2886:10B450000000050FB0000080020000B000000000F6
2887:10B46000A0000004FD4BD0350000000000010028C2
2888:10B47000090000520000080FB00000A822C02FB73A
2889:10B480000000060F040084C037ACB0B2000000001A
2890:10B49000A000000C0B000032FFFF0000000000784D
2891:10B4A000A94DB03000000F0F800000800240B0B600
2892:10B4B000000000000000007869819735000000005E
2893:10B4C000000084080B007C32000000000000000037
2894:10B4D000E72501320042000000080000878D2A3A6B
2895:10B4E00000000000001000000700B0320000000063
2896:10B4F000001800000700D0320000000012010048D0
2897:10B50000F2C138540000130F0000008002000090C8
2898:10B510000000150FB00000A0020000B20000000003
2899:10B520000000000CABE4B03200001A0F8001008074
2900:10B530000240D0B600000000A00000280900003240
2901:10B5400000000000000100800200005000001C0FFD
2902:10B5500004010080123EF8BA00002D0FA000000484
2903:10B560000D40D0940000260F80010080D28192B659
2904:10B570000000260F800100802281FCB60000000040
2905:10B58000A00000040D40D03400000000000000784E
2906:10B5900009C02F3200000000000000FC0200003251
2907:10B5A000000000000000008401C02F3200000000F5
2908:10B5B00000000080F1010034000000000000009451
2909:10B5C00001C02F320000000000000090F1010034A3
2910:10B5D00000002D0F000000FC028097920000000088
2911:10B5E000A000007809C02F3200000000000000FC1D
2912:10B5F00002000032000000000000008401C02F3271
2913:10B600000000000000000080F101F834000000009C
2914:10B61000000000900140F83200000000000000FC33
2915:10B62000028097320000000000010028090000524B
2916:10B630000000310F040100280934B0BA00002E0FB9
2917:10B64000B0000080020000B000000000A000000474
2918:10B650000D40D03500000000000100280900005214
2919:10B660000000310FB00000A8020000B200002F0F50
2920:10B67000040084C037ACB0B200000000A000000C91
2921:10B680000B000032FFFF000000000078A94DB03031
2922:10B690000000380F800000800240B0B600000000BB
2923:10B6A00000000078698197350000000000008408E0
2924:10B6B0000B007C320000000000000000E725013292
2925:10B6C0000042000000080000878D2A3A00000000B8
2926:10B6D000001000000700B032000000000018000059
2927:10B6E0000700D0320000000012010048F2C13854B7
2928:10B6F00000003C0F00000080020000900000FFFFEF
2929:10B7000000000080020000900000410F1C400280F9
2930:10B7100006C092B244000000000100F8A28D2F5232
2931:10B72000000036101200006802C592B00000000050
2932:10B73000000100701F00F75A0000FFFF00000080AA
2933:10B740000200009000000000D5080000078092323F
2934:10B75000000000000030000007C02C3200400080D4
2935:10B76000003800000700373200000000CA4101E045
2936:10B77000068092320000480F1200004802C080B2DA
2937:10B780000060000000010008088036720000FFFF22
2938:10B79000000000800200009000000000003800005F
2939:10B7A00007809232000000000030000007C02C32F9
2940:10B7B00000000000CA3D000C07808332000000003A
2941:10B7C0001201004802C0807200004E0F000000808D
2942:10B7D000020000900000FFFF0000008002000090C7
2943:10B7E000000000000457018002C06E7C00000000D1
2944:10B7F000005701EC068092720000FFFF00000080FD
2945:10B80000020000900000DC0E00000030030038F25F
2946:10B810000000570F9D11020C09006EB20000580F76
2947:10B8200000F0011C09006E920000000000B8011C2D
2948:10B8300009006E3200005A0F2CCD011809806EB23B
2949:10B84000000000000000000CC9C1903400005D0F32
2950:10B850003B29020409806EB20000000000D601EC12
2951:10B8600056C06E34000000000000000CB9C19034D6
2952:10B8700000006C0F00A8010809006EF20000610FC3
2953:10B880009D01008017E090BA0000000000300080A9
2954:10B8900007C091320000640F003800800700EE926C
2955:10B8A0000000640F0401008002C091BC0000000091
2956:10B8B00000B801E00600EE3200000000007001E078
2957:10B8C000060086320000660F3908008007C085B286
2958:10B8D00000000000D9C901E8068091320000000094
2959:10B8E000C8110080074090320000690F3B210080A2
2960:10B8F000070086B200000000DB0000601800863AF6
2961:10B9000000000000587801E01620863A0000000090
2962:10B9100000290080070085720000FFFF0000008002
2963:10B92000020000900000700F020C0280A29B90BCED
2964:10B93000000000000000027829006E360000700F41
2965:10B9400002000080E2A590BC00000000000000089A
2966:10B95000090000320000720F9F89017849216EBCF6
2967:10B960000000000000000078090000320000000024
2968:10B9700000000008E9A5903F0000780F04200208AD
2969:10B98000899B90BE00000000000A0258B89B9036C8
2970:10B99000000000000000007849A1903A000000007B
2971:10B9A0009F880180829B977C00000000008901E055
2972:10B9B0000680977200000000000B0258B89B90763A
2973:10B9C0000000FFFF000000800200009000007F0FD9
2974:10B9D00080010080A2802FB600007E0F1201007847
2975:10B9E00009C021B218003600000000F8730A03F9FC
2976:10B9F00000007F0FCA0000D80240849200000000BF
2977:10BA0000000000F8A2802F35000000000040006C0C
2978:10BA1000881C833A000000000048004C0800723285
2979:10BA20000000361008500018C82072BC000000004A
2980:10BA30000600008062A0827C000036100200002018
2981:10BA4000880182BA00000000000000D80200003225
2982:10BA500000000000000000000700063207000000A0
2983:10BA600000080000774A09390000000000100000BB
2984:10BA70000700823200000000CA190000074082322D
2985:10BA80000000890F12000040F2C138B4000000002D
2986:10BA9000000100D8024084720000FFFF0000008017
2987:10BAA000020000900000930F80010080F2C185B673
2988:10BAB0000000900F1F400284E60100B40000930FC5
2989:10BAC0001D0100F822812FB40000930F000000F840
2990:10BAD00062812F950000920F1D010080020000B0CE
2991:10BAE00000000000000000F862812F350000000017
2992:10BAF00000400280024068320000361012000068E8
2993:10BB000002C585B0000000001D000080020000702A
2994:10BB10000100000004010080A28D2F702A00960F02
2995:10BB20001200002C82CD2EB200000000000100F8AF
2996:10BB300002812F740000FFFF0000008002000090CF
2997:10BB400080A8000004000080828D2F7000009F0FED
2998:10BB500080010080D2802FB600009F0F04B00080CB
2999:10BB600002006EBC00000000000000F872812F345B
3000:10BB70003D00A20F1201002C82CD2EB200009D0FBD
3001:10BB800000000080020000900000A20F80010080F1
3002:10BB9000F2802FB63C00A50F1201002C82CD2EB2F0
3003:10BBA0000000A00F00000080020000900000A50F20
3004:10BBB00080010080B2802FB63500A30F1200002C48
3005:10BBC00082CD2EB200000000000000F842812F3428
3006:10BBD0008000000004000080828D2F7002000000B1
3007:10BBE00004010080A28D2F703B00A70F1200002CD3
3008:10BBF00082CD2EB200000000000100F812812F74E7
3009:10BC00000000FFFF0000008002000090080000001C
3010:10BC1000001801E876208139EEFF0000000100F8ED
3011:10BC2000828D2F710000FFFF000000800200009055
3012:10BC30000000B10F0000013808C06EF200000000E3
3013:10BC40001201004802C080720000AE0F00000080A8
3014:10BC5000020000900000FFFF000000800200009042
3015:10BC60000000B30F0438017809006EB20000000034
3016:10BC7000003801E00600003200000000CA11000098
3017:10BC8000078082320000B60F2E190000078097B29D
3018:10BC90000000000000000028E98192340000BB0F82
3019:10BCA0002731000007C02CB200000000D5080000BA
3020:10BCB0000700873200000000C7000028E9809234A6
3021:10BCC00000000000004001E0060087320000000094
3022:10BCD00000000008D8818034100000000039000006
3023:10BCE000E7A092790000FFFF0000008002000090B2
3024:10BCF0000000BD0F1200004412E438B218003600F4
3025:10BD0000000000F8730A03F90000C20F040100806C
3026:10BD100002802DBC0000BE0F670000F8A2802FB586
3027:10BD200000003610120000E802C021B2000000003E
3028:10BD3000000100D8024000720000FFFF00000080F8
3029:10BD4000020000900000C70F04300080829B81BC7D
3030:10BD500000000000CA0100F802802F3500A0C60FC5
3031:10BD600012000040A28D39B200C0CB0F0438007819
3032:10BD7000898D6EB01000CB0F9F0100F8E2A52FB99E
3033:10BD800000000000005801EC06C0EE320000000088
3034:10BD900000000080020000300000000004280018AD
3035:10BDA00009006E720000BA0D00000080020000F071
3036:10BDB0000000A30D00A8012009006E920000FFFF03
3037:10BDC00000000080020000900000D40F04B000804A
3038:10BDD000829B81BC0000000000B800E886806E34C1
3039:10BDE00000000000CA0100F842802F3508A00000C2
3040:10BDF00012010040A2CD39720000D20F0000008075
3041:10BE0000020000900000000000B800E886806E3458
3042:10BE10000000000000010080020000700000FFFF31
3043:10BE200000000080020000900000DA0F33CD01BC5A
3044:10BE300008806EB200001410000000282922EEDCF9
3045:10BE40000000DF0F00000080020000900000DF0F04
3046:10BE500004B8012809006EB20000DF0F9F71018055
3047:10BE6000C2216EBC000036109F000028A924EEBC41
3048:10BE70000000141000000028198092DF000000006C
3049:10BE800000000080020000300000F20F02810180FB
3050:10BE9000829B90BCEE05EA0F060C0280828D6EBC80
3051:10BEA00000904C0000000084020037320000E40FD4
3052:10BEB000B8010080020000B00000E20F0000008026
3053:10BEC0000200009000000000000000C403809032D7
3054:10BED0000000000000B001E096216E3C0000000070
3055:10BEE000619801E0060087320000000000D401ECF8
3056:10BEF0000600003200000000A800007849403C37EE
3057:10BF00000000F70F00000008E9A5909A6089200062
3058:10BF100000000084020037320000ED0FB8010080FD
3059:10BF2000020000B00000EB0F000000800200009053
3060:10BF300000000000000000C40380903200000000F8
3061:10BF400000B001E096216E3C00000000619801E025
3062:10BF5000060087320000000000D401EC0600003229
3063:10BF60000000F70FA8000008198F909A0000000049
3064:10BF70000000007899A1893E000000000000000840
3065:10BF8000E9A5903A0000000000B001E096216E3C67
3066:10BF900000000000619801E0060087320000000008
3067:10BFA00000D401EC060000320000FA0F0600008009
3068:10BFB00072A290BC00C0FF3F008001E00600373253
3069:10BFC000000000000000000809C089320000FF0FD7
3070:10BFD00004790180821B87BC0000FD0F04B0008043
3071:10BFE00002006EBC00000110D99001E00680909222
3072:10BFF000000004108000008052812FB60000041061
3073:10C00000D54101E006008792000001103C9001E05C
3074:10C01000068090B20000000000C801E806C08B3224
3075:10C02000000000009501008002802F7200000510C2
3076:10C030009F410180821B87BC00000000000100803E
3077:10C040000200007000000000D99001E006809032EC
3078:10C0500000000000000100F872802F740000FFFF54
3079:10C06000000000800200009000000D109FD80180A9
3080:10C0700022216EBC000000000B0100800200007055
3081:10C0800000000D109FE00180C2216EBC0000000086
3082:10C090000B0100800200007000000D109FB00180B5
3083:10C0A000D2216EBC00000000000100800200007080
3084:10C0B00000000F1006680180825B87BC0000000052
3085:10C0C000006801E0064087320000111037B001E03F
3086:10C0D000064087B200000000000000F8D2802F3434
3087:10C0E0000000000000D801E006808432000000005B
3088:10C0F00000E101E0060087720000FFFF0000008001
3089:10C10000020000900000201004C1018402006EB201
3090:10C110000500000000C001E8868D92370300000092
3091:10C1200000C401E8868D9237000000000000008006
3092:10C13000020000300300000000C0012C898D6E3623
3093:10C140000000000000C4012CA9DB923A00000000AE
3094:10C150000000002C29C09236000000000000002CD6
3095:10C1600019FB923F00000000000000282980923A4D
3096:10C17000000000000000002CA9E4923F0000000035
3097:10C180006FCC01E826FB923E0000000000B901E000
3098:10C19000060000520000000000000094028092326D
3099:10C1A0000000000000C001E006402832100000003E
3100:10C1B0006FCC01E886CD2A360000000000B901E00E
3101:10C1C000060000520000FFFF000000800200009007
3102:10C1D00000000000009001BC08006E32000000006A
3103:10C1E00000B001BC88DB8B3E00000000009801BC61
3104:10C1F00088DB8B3A000030109F0000BC88E18BBCCC
3105:10C2000000003010040C0240A8DB8BBE00000000D0
3106:10C2100000B00004881B843E00002D1004B1008093
3107:10C22000825B80BC00000000000100F8C2802F7417
3108:10C2300000000000040C0280A25B807C0000301033
3109:10C240000468017819006EB600000000020000804A
3110:10C25000E265807C000000000000008812002C3A9B
3111:10C260000000FFFF000000800200009008000000B6
3112:10C27000001C01E876208139EEFF0000000100F883
3113:10C28000828D2F710000FFFF0000008002000090EF
3114:10C2900000003610000000B40F40FB9400000000C6
3115:10C2A000000000880F402B320000000000000090CA
3116:10C2B0000F00283200000000000000940F00293217
3117:10C2C00010000000000000B85F461839FF000000B1
3118:10C2D0000000009C0F003632000000000000009CAF
3119:10C2E0005FCAF935000000000000004403C0F932C5
3120:10C2F00000000000000000E40300003241000010D4
3121:10C30000000000E00300373200000000000000E4FD
3122:10C310000300003240000010000000E0030037324C
3123:10C3200000004510670000980F802AB2000000004E
3124:10C33000000000A8020000320000431012C186E095
3125:10C3400007C021B20000000000B886C006802A3273
3126:10C350004C420000000000A802003632471058117D
3127:10C36000000000B00F003692000000000000009CAA
3128:10C370000200003200014411000000AC0F0036D270
3129:10C3800000000000000000AC0F802A3200200000F6
3130:10C39000000000A802003632000000000000009CEF
3131:10C3A0000F007E3200000000000000A00F007E326F
3132:10C3B00000000000000000A40F007E32000000001A
3133:10C3C000000000A80F007E3200000000000000A85E
3134:10C3D00002C0FA3200000000000000E007C0F9329D
3135:10C3E00000000000000000E00700FA32000000003A
3136:10C3F000000000E00740FA3200005B10000000E09F
3137:10C400000780FAD200000000000000E00780FB3245
3138:10C4100001008210040100B48F4DFBB00200000047
3139:10C42000000000A002000039408000000000000C65
3140:10C43000ABCDB032100000000000000C5BCAB03978
3141:10C44000000000000000000C2BFEB0320000811143
3142:10C45000000000800200009000000000000000F8D2
3143:10C460000300013200000000000100E007803F529D
3144:10C4700018000000000000F8738A02390000000074
3145:10C4800000000044530A1635000000000000009C24
3146:10C490000F80963200000000000000A00FC096320E
3147:10C4A00000000000000000A40F009732A26003000B
3148:10C4B0000000005803003732681000000000005CE4
3149:10C4C000030036320000000000000050830D0034ED
3150:10C4D0000000000000000048830D00340000000050
3151:10C4E00000000044530A00340000360000000080C1
3152:10C4F00002000090000000000000006809C0F9324E
3153:10C50000000000000000006C0900FA32000000008A
3154:10C51000000000700940FA3200007A10000000802C
3155:10C520000200009002000000000000A0F20B0039A1
3156:10C5300000006F10800100801240B0B600000000C3
3157:10C54000000000043B40B033000000000000000485
3158:10C55000FD4BD035000073100000000C0B009792CB
3159:10C5600002000000000000A0F20B00390000731070
3160:10C57000000000046B019794000073101200006823
3161:10C58000094020B2000074101200006C094020B273
3162:10C590000D000000000000FCA2E516380000791034
3163:10C5A0009F000080028096B2000000000000007032
3164:10C5B00009C0963200007A100000006C09C0FD929C
3165:10C5C0000000791012000070094020B20000000045
3166:10C5D0000000009C0200003200000000000000D8B3
3167:10C5E0000200003202007310040100BCAF2517B82E
3168:10C5F00006007110040000BCAF6516B800006C1096
3169:10C600000400008022C0FBBC00008A1004000080EF
3170:10C6100012C1FBBC200073100401008082CDFBBC62
3171:10C6200002000000000000A0F20B003900008B1097
3172:10C6300000000080020000D084100000000000888C
3173:10C6400082CDF93A00007A110000008002000090CB
3174:10C650000000B31000000080020000900000B41041
3175:10C6600000000080020000900000B8100000008070
3176:10C67000020000900000C010000000800200009046
3177:10C6800000001911000000800200009000007310EB
3178:10C69000000000DC0F009792000000000000000086
3179:10C6A0000700033240420000000000A802003632BA
3180:10C6B000000000000008000007802A32000000008F
3181:10C6C0000010000007009732000000000018000072
3182:10C6D00007C096320880901012000040028036B2E7
3183:10C6E00000000000000000800200003000009210F6
3184:10C6F0001200009C0FC021B21D00951004000080A4
3185:10C7000072BE17B800009210000000F81E80EF9A69
3186:10C71000130000000000009C7FBE17380000981036
3187:10C720000400008012C0F9BC00009210000000F864
3188:10C730001E80EF9A000000000000009C0F007E3277
3189:10C7400000000000000000A00F007E32000000008A
3190:10C75000000000A40F007E32000000000001000075
3191:10C760000700FA52000000000000009C02000032A6
3192:10C770004C420000000000A8020036320000000019
3193:10C780000008000007802A3200006E1100000080BF
3194:10C79000020000D00000721100000080020000D0F2
3195:10C7A000000000000000000CCBC1B034000000000D
3196:10C7B0000000009C0200003200000000000000D8D1
3197:10C7C000020000320000F10E0000002809C0B0D2C3
3198:10C7D0000000A21004000080028092B20000A610A7
3199:10C7E0001200009C0FC021B21D00A910040000809F
3200:10C7F00072BE17B80000A610000000F81E80EF9A65
3201:10C80000130000000000009C7FBE17380000AC1031
3202:10C810000400008012C0F9BC0000A610000000F85F
3203:10C820001E80EF9A0200AE10040100B48F4DFBB0E1
3204:10C83000000073100000008002000090080000005B
3205:10C84000000000F89340013900000000000000B42F
3206:10C850001F40FB35FE000000000000480300363298
3207:10C860000000000000000044030000340000A2109B
3208:10C870000000000C8BC1B09400007E110008000085
3209:10C880000740FA9200006E11000800000740FAD23B
3210:10C890000880B51012000050028036B200007311FB
3211:10C8A00000000080020000D0000080110000008025
3212:10C8B00002000090000800000000009C0F003632CB
3213:10C8C00000440000000000A8020036320000000012
3214:10C8D000000000A00200003200000000000000E0A4
3215:10C8E0000700B03200000000000000A012002A3A49
3216:10C8F0000000BB100401009C1FC0F9BC00440000F4
3217:10C90000000000A80200363202007D11000000A0E5
3218:10C91000F20B00990000C810040100800240FAB236
3219:10C9200000440000000000A8020036320000CA10D7
3220:10C9300000000080020000D00000D710000000843A
3221:10C94000020000D200000000000000E007C03C32FE
3222:10C950000000C4108E010080024028B20044000094
3223:10C96000000000A40F0036320000B3100000008069
3224:10C970000200009000440000000000A48F4DFA3A2D
3225:10C980000000B310000000800200009000000000D2
3226:10C990000000009C0F00003210000001000000ACFD
3227:10C9A0000F0037320000DC1000000080020000D0D1
3228:10C9B0000800CC100401008082CDF9BC000000000A
3229:10C9C0000000009C0F0000320E000001000000ACCF
3230:10C9D0000F0037320000DC1000000080020000D0A1
3231:10C9E0000B00D0100401008082CDF9BC20000000B3
3232:10C9F0000000009C0F0036320F000001000000AC68
3233:10CA00000F0037320000DC1000000080020000D070
3234:10CA10002700D4100401008082CDF9BC0000000082
3235:10CA20000001008002000050000000000000009C97
3236:10CA30000F0000320F000001000000AC0F00373281
3237:10CA40000000DC1000000080020000D02000D9109F
3238:10CA50000401008082CDF9BC0000000000010080CC
3239:10CA60000200005000000000000000E403C0F932A2
3240:10CA70000D000001000000E003003732000000005C
3241:10CA8000000000E003C0FA3200000000000000E0F7
3242:10CA900007403E32000000000001009C1FC0F95A10
3243:10CAA00000000000000000E003C0F93200000000B8
3244:10CAB000000000E007403E32000000000000009C43
3245:10CAC0001FC0F93AFF000000000100AC8FCDF95003
3246:10CAD000000000000000009C0FC02F32000000008A
3247:10CAE000000000FC0200003200000000000000E036
3248:10CAF00007803E3200000000000000FC12C02F3A08
3249:10CB00000F00E7100401008082CD2FBC0000000060
3250:10CB1000000000E007803E3200000000000100FC41
3251:10CB200002C0F95200000000000000E007003A32A5
3252:10CB300000000000000000E007403A320000000062
3253:10CB4000000000E007803A3200000000000000E032
3254:10CB500007C03A32000000000000009C0FC02F32D6
3255:10CB600000000000000000FC020000320000000095
3256:10CB7000000000E007003D3200000000000000E07F
3257:10CB800007403D320000F210830100FC12C02FBAB2
3258:10CB900000000000000100FC02C0F952000000008B
3259:10CBA0000000009C0F0000320C0000000000000894
3260:10CBB000733E003900000000000000E00700303242
3261:10CBC000000000000000009C1FC0F93A7000F71040
3262:10CBD0000401008082CDF9BC000000000000000CC0
3263:10CBE0000300003200000000000000E007003032C7
3264:10CBF00000000000000000100300003200000000F0
3265:10CC0000000000E007003032000000000000009C3F
3266:10CC10000F00003200000000000000A00FC0293209
3267:10CC2000000000000000009C02C0F932000000007B
3268:10CC3000000000A40FC02C32000000000000009C87
3269:10CC40000200FA32180000000000002C737EFA394E
3270:10CC500000000000000000E007003032000000117A
3271:10CC60008501009C1FC0F9BA00000000000100808F
3272:10CC700002000050010000010000009C0F0037324C
3273:10CC80000000E11000000080020000D00E000F1133
3274:10CC90000401008082CDFABC00000000000000E02A
3275:10CCA0000700003200000000000000E00700003232
3276:10CCB00000000000000000E0070000320000091141
3277:10CCC0000000009C3FC0F99A1C000911040100807B
3278:10CCD00082CDFABC0200E1100000009C8FCDF9DA91
3279:10CCE000000000000001008002000050010000026E
3280:10CCF0000000009C0F0037320000E11000000080AF
3281:10CD0000020000D00E0017110401008082CDFABC91
3282:10CD100000000000000000E00700003200001311D6
3283:10CD20000000009C1FC0F99A260013110401008026
3284:10CD300082CDFABC0000000000010080020000501B
3285:10CD400000000000000000A80F402932004400004D
3286:10CD5000000000A802003632000008110000008028
3287:10CD6000020000D00000121100000080020000D07C
3288:10CD70000000E51000000080020000D0000000006C
3289:10CD8000000000E00780183200000000000000E012
3290:10CD900007401A3200000000000000E007001A32CD
3291:10CDA00000000000000000E007801A3200000000D0
3292:10CDB000000000E007C01A3200000000000000A0E0
3293:10CDC0000F000032A2600300000000580300373259
3294:10CDD0002B1100000000005C030036320000000050
3295:10CDE0000000009C0F802A3200002B1104000080FC
3296:10CDF000024029B20000000000000050833E0034D1
3297:10CE00000000000000000048833E003400000000E5
3298:10CE100000000044530A003400002C110000008878
3299:10CE20000F402B9200000000000000900F002832FD
3300:10CE300000000000000000940F00293200000000F4
3301:10CE4000000000980F802A3200000000000000A8B7
3302:10CE500002C0F93231115811000000B00F003692B3
3303:10CE60000700341104000080824D29BC000000003E
3304:10CE7000000000A01F00FA3A000028110000009CEA
3305:10CE80000F802A92C0010000000000AC0F00363273
3306:10CE9000010000000000009C020036320000441136
3307:10CEA00000000080020000D01F003A110400008042
3308:10CEB00082CD29BCC0000000000000AC8FCDFA3A42
3309:10CEC000000036110000009C12C0299A0000F610E4
3310:10CED00000000080020000D00000EC100000008084
3311:10CEE000020000D00000421104000080528AFABC07
3312:10CEF000A260030000000058030037324211000016
3313:10CF00000000005C0300363200000000000000500A
3314:10CF1000A33E00340000000000000048A33E00349F
3315:10CF20000000000000000044530A003400440000E8
3316:10CF3000000000A40F0036320000B3100000008093
3317:10CF40000200009000000000000000C402C0FA329D
3318:10CF5000030000000000009C0F00363200000000BB
3319:10CF6000000000BC0F402F3200004B110400009C59
3320:10CF70001FC0F9BC00004A110400008002402FB21B
3321:10CF800000004711000000E007002C92000047114C
3322:10CF9000000000E00700369200000000000000E002
3323:10CFA00007402C3200000000000000E007802C3217
3324:10CFB00000000000000000E007C02C32000000006C
3325:10CFC000000000E007002D3200000000000000E03B
3326:10CFD00007402D3200000000000000E007802D32E5
3327:10CFE00000000000000000E007C02D32000000003B
3328:10CFF000000000E007C0FB3200000000000000E07D
3329:10D0000007802F3200000000000000E007C02F3230
3330:10D0100018000000000000F8730A02390000000048
3331:10D02000000100E007803F52FF00000000000044C4
3332:10D030000300363200000000000000E00700F93273
3333:10D0400000000000000000E007402832000000005F
3334:10D05000000000E00780F832030000000000009CA0
3335:10D060000F00363200000000000000BC0FC02B3261
3336:10D07000000061110400009C1FC0F9BC0000601199
3337:10D080000400008002C02BB200005D11000000E02F
3338:10D0900007C0289200005D11000000E007003692F2
3339:10D0A00000000000000000E00740F932000000002E
3340:10D0B000000000E00740293200000000000000E00E
3341:10D0C0000780293200000000000000E007C029327C
3342:10D0D00000000000000000E007002A32000000000D
3343:10D0E000000000E007402A3200000000000000E0DD
3344:10D0F0000780F93200000000000000E007C02A327B
3345:10D1000000000000000000E007C02F320000000017
3346:10D11000000000E007402B3200000000000000E0AB
3347:10D1200007802B3200000000000000E007C0FB3247
3348:10D1300000000000000000880200FB320000000038
3349:10D140000000009C0200003200000000000000D837
3350:10D1500002000032000000000010000007009732BB
3351:10D16000000000000019000007C0965208807211EC
3352:10D1700012000048028036B200000000000000806B
3353:10D1800002000030000074111200009C0FC021B298
3354:10D190001D0077110400008072BE17B800007411E2
3355:10D1A000000000F81E80EF9A130000000000009CB1
3356:10D1B0007FBE1738000000000400008012C0F95C38
3357:10D1C00000007411000000F81E80EF9A00000000BB
3358:10D1D000000000B40F40FB35000000000000009C80
3359:10D1E000020000324C420000000000A8020036326B
3360:10D1F000000000000008000007802A3200006E11C5
3361:10D2000000000080020000D00000721100000080C9
3362:10D21000020000D0000000000000000CCBC1B034C0
3363:10D22000000000000000009C02000032000000002E
3364:10D23000000000D80200003200008B11000000281E
3365:10D2400009C0B0D20000811104000080028092B2B7
3366:10D25000000085111200009C0FC021B21D00881132
3367:10D260000400008072BE17B800008511000000F8AD
3368:10D270001E80EF9A130000000000009C7FBE17384C
3369:10D28000000073100400008012C0F9BC000085117A
3370:10D29000000000F81E80EF9A00000000000000FC73
3371:10D2A0000200003202000000000000A0F20B003972
3372:10D2B00000008F11040100280934B0BA00000000FA
3373:10D2C000000100280900005200000000000000A832
3374:10D2D00022C02F3700000000000084C037ACB032FD
3375:10D2E000000000000000000C0B000032FFFF0000F7
3376:10D2F000000000C0AF4DB0300000951180000080EC
3377:10D300000240B0B600000000000000C06F01FC3514
3378:10D310000000000000000000073F01320042000052
3379:10D3200000080000878D2A3A00000000001000006D
3380:10D330000700B03200000000001800000700D032E3
3381:10D3400000000000000000C03FC1383400000000B1
3382:10D3500012010048F201FC5400009A110000008004
3383:10D36000020000900000FFFF00000080020000901B
3384:0CD3700000003600000000800200009069
3385:00000001FF
diff --git a/firmware/yamaha/yss225_registers.bin.ihex b/firmware/yamaha/yss225_registers.bin.ihex
new file mode 100644
index 000000000000..6dd3d8c4de2b
--- /dev/null
+++ b/firmware/yamaha/yss225_registers.bin.ihex
@@ -0,0 +1,998 @@
1:10000000FF000E100F00FF000E110F00FF000E1278
2:100010000F00FF000E130F00FF000E140F00FF0073
3:100020000E150F00FF000E160F00FF000E170F0039
4:10003000FF000E180F00FF000E190F00FF000E1A30
5:100040000F00FF000E1B0F00FF000E1C0F00FF0033
6:100050000E1D0F00FF000E1E0F00FF000E1F0F00F1
7:10006000FF000E200F00FF000E210F00FF000E22E8
8:100070000F00FF000E230F00FF000E240F00FF00F3
9:100080000E250F00FF000E260F00FF000E270F00A9
10:10009000FF000E280F00FF000E290F00FF000E2AA0
11:1000A0000F00FF000E2B0F00FF000E2C0F00FF00B3
12:1000B0000E2D0F00FF000E2E0F00FF000E2F0F0061
13:1000C000FF000E300F00FF000E310F00FF000E3258
14:1000D0000F00FF000E330F00FF000E340F00FF0073
15:1000E0000E350F00FF000E360F00FF000E370F0019
16:1000F000FF000E380F00FF000E390F00FF000E3A10
17:100100000F00FF000E3B0F00FF000E3C0F00FF0032
18:100110000E3D0F00FF000E3E0F00FF000E3F0F00D0
19:10012000FF000E400F00FF000E410F00FF000E42C7
20:100130000F00FF000E430F00FF000E440F00FF00F2
21:100140000E450F00FF000E460F00FF000E470F0088
22:10015000FF000E480F00FF000E490F00FF000E4A7F
23:100160000F00FF000E4B0F00FF000E4C0F00FF00B2
24:100170000E4D0F00FF000E4E0F00FF000E4F0F0040
25:10018000FF000E500F00FF000E510F00FF000E5237
26:100190000F00FF000E530F00FF000E540F00FF0072
27:1001A0000E550F00FF000E560F00FF000E570F00F8
28:1001B000FF000E580F00FF000E590F00FF000E5AEF
29:1001C0000F00FF000E5B0F00FF000E5C0F00FF0032
30:1001D0000E5D0F00FF000E5E0F00FF000E5F0F00B0
31:1001E000FF000E600F00FF000E610F00FF000E62A7
32:1001F0000F00FF000E630F00FF000E640F00FF00F2
33:100200000E650F00FF000E660F00FF000E670F0067
34:10021000FF000E680F00FF000E690F00FF000E6A5E
35:100220000F00FF000E6B0F00FF000E6C0F00FF00B1
36:100230000E6D0F00FF000E6E0F00FF000E6F0F001F
37:10024000FF000E700F00FF000E710F00FF000E7216
38:100250000F00FF000E730F00FF000E740F00FF0071
39:100260000E750F00FF000E760F00FF000E770F00D7
40:10027000FF000E780F00FF000E790F00FF000E7ACE
41:100280000F00FF000E7B0F00FF000E7C0F00FF0031
42:100290000E7D0F00FF000E7E0F00FF000E7F0F008F
43:1002A000FF000E800F00FF000E810F00FF000E8286
44:1002B0000F00FF000E830F00FF000E840F00FF00F1
45:1002C0000E850F00FF000E860F00FF000E870F0047
46:1002D000FF000E880F00FF000E890F00FF000E8A3E
47:1002E0000F00FF000E8B0F00FF000E8C0F00FF00B1
48:1002F0000E8D0F00FF000E8E0F00FF000E8F0F00FF
49:10030000FF000E900F00FF000E910F00FF000E92F5
50:100310000F00FF000E930F00FF000E940F00FF0070
51:100320000E950F00FF000E960F00FF000E970F00B6
52:10033000FF000E980F00FF000E990F00FF000E9AAD
53:100340000F00FF000E9B0F00FF000E9C0F00FF0030
54:100350000E9D0F00FF000E9E0F00FF000E9F0F006E
55:10036000FF000EA00F00FF000EA10F00FF000EA265
56:100370000F00FF000EA30F00FF000EA40F00FF00F0
57:100380000EA50F00FF000EA60F00FF000EA70F0026
58:10039000FF000EA80F00FF000EA90F00FF000EAA1D
59:1003A0000F00FF000EAB0F00FF000EAC0F00FF00B0
60:1003B0000EAD0F00FF000EAE0F00FF000EAF0F00DE
61:1003C000FF000EB00F00FF000EB10F00FF000EB2D5
62:1003D0000F00FF000EB30F00FF000EB40F00FF0070
63:1003E0000EB50F00FF000EB60F00FF000EB70F0096
64:1003F000FF000EB80F00FF000EB90F00FF000EBA8D
65:100400000F00FF000EBB0F00FF000EBC0F00FF002F
66:100410000EBD0F00FF000EBE0F00FF000EBF0F004D
67:10042000FF000EC00F00FF000EC10F00FF000EC244
68:100430000F00FF000EC30F00FF000EC40F00FF00EF
69:100440000EC50F00FF000EC60F00FF000EC70F0005
70:10045000FF000EC80F00FF000EC90F00FF000ECAFC
71:100460000F00FF000ECB0F00FF000ECC0F00FF00AF
72:100470000ECD0F00FF000ECE0F00FF000ECF0F00BD
73:10048000FF000ED00F00FF000ED10F00FF000ED2B4
74:100490000F00FF000ED30F00FF000ED40F00FF006F
75:1004A0000ED50F00FF000ED60F00FF000ED70F0075
76:1004B000FF000ED80F00FF000ED90F00FF000EDA6C
77:1004C0000F00FF000EDB0F00FF000EDC0F00FF002F
78:1004D0000EDD0F00FF000EDE0F00FF000EDF0F002D
79:1004E000FF000EE00F00FF000EE10F00FF000EE224
80:1004F0000F00FF000EE30F00FF000EE40F00FF00EF
81:100500000EE50F00FF000EE60F00FF000EE70F00E4
82:10051000FF000EE80F00FF000EE90F00FF000EEADB
83:100520000F00FF000EEB0F00FF000EEC0F00FF00AE
84:100530000EED0F00FF000EEE0F00FF000EEF0F009C
85:10054000FF000EF00F00FF000EF10F00FF000EF293
86:100550000F00FF000EF30F00FF000EF40F00FF006E
87:100560000EF50F00FF000EF60F00FF000EF70F0054
88:10057000FF000EF80F00FF000EF90F00FF000EFA4B
89:100580000F00FF000EFB0F00FF000EFC0F00FF002E
90:100590000EFD0F00FF000EFE0F00FF000EFF0F000C
91:1005A000FF000E100F00FF000E110F00FF000E12D3
92:1005B0000F00FF000E130F00FF000E140F00FF00CE
93:1005C0000E150F00FF000E160F00FF000E170F0094
94:1005D000FF000E180F00FF000E190F00FF000E1A8B
95:1005E0000F00FF000E1B0F00FF000E1C0F00FF008E
96:1005F0000E1D0F00FF000E1E0F00FF000E1F0F004C
97:10060000FF000E200F00FF000E210F00FF000E2242
98:100610000F00FF000E230F00FF000E240F00FF004D
99:100620000E250F00FF000E260F00FF000E270F0003
100:10063000FF000E280F00FF000E290F00FF000E2AFA
101:100640000F00FF000E2B0F00FF000E2C0F00FF000D
102:100650000E2D0F00FF000E2E0F00FF000E2F0F00BB
103:10066000FF000E300F00FF000E310F00FF000E32B2
104:100670000F00FF000E330F00FF000E340F00FF00CD
105:100680000E350F00FF000E360F00FF000E370F0073
106:10069000FF000E380F00FF000E390F00FF000E3A6A
107:1006A0000F00FF000E3B0F00FF000E3C0F00FF008D
108:1006B0000E3D0F00FF000E3E0F00FF000E3F0F002B
109:1006C000FF000E400F00FF000E410F00FF000E4222
110:1006D0000F00FF000E430F00FF000E440F00FF004D
111:1006E0000E450F00FF000E460F00FF000E470F00E3
112:1006F000FF000E480F00FF000E490F00FF000E4ADA
113:100700000F00FF000E4B0F00FF000E4C0F00FF000C
114:100710000E4D0F00FF000E4E0F00FF000E4F0F009A
115:10072000FF000E500F00FF000E510F00FF000E5291
116:100730000F00FF000E530F00FF000E540F00FF00CC
117:100740000E550F00FF000E560F00FF000E570F0052
118:10075000FF000E580F00FF000E590F00FF000E5A49
119:100760000F00FF000E5B0F00FF000E5C0F00FF008C
120:100770000E5D0F00FF000E5E0F00FF000E5F0F000A
121:10078000FF000E600F00FF000E610F00FF000E6201
122:100790000F00FF000E630F00FF000E640F00FF004C
123:1007A0000E650F00FF000E660F00FF000E670F00C2
124:1007B000FF000E680F00FF000E690F00FF000E6AB9
125:1007C0000F00FF000E6B0F00FF000E6C0F00FF000C
126:1007D0000E6D0F00FF000E6E0F00FF000E6F0F007A
127:1007E000FF000E700F00FF000E710F00FF000E7271
128:1007F0000F00FF000E730F00FF000E740F00FF00CC
129:100800000E750F00FF000E760F00FF000E770F0031
130:10081000FF000E780F00FF000E790F00FF000E7A28
131:100820000F00FF000E7B0F00FF000E7C0F00FF008B
132:100830000E7D0F00FF000E7E0F00FF000E7F0F00E9
133:10084000FF000E800F00FF000E810F00FF000E82E0
134:100850000F00FF000E830F00FF000E840F00FF004B
135:100860000E850F00FF000E860F00FF000E870F00A1
136:10087000FF000E880F00FF000E890F00FF000E8A98
137:100880000F00FF000E8B0F00FF000E8C0F00FF000B
138:100890000E8D0F00FF000E8E0F00FF000E8F0F0059
139:1008A000FF000E900F00FF000E910F00FF000E9250
140:1008B0000F00FF000E930F00FF000E940F00FF00CB
141:1008C0000E950F00FF000E960F00FF000E970F0011
142:1008D000FF000E980F00FF000E990F00FF000E9A08
143:1008E0000F00FF000E9B0F00FF000E9C0F00FF008B
144:1008F0000E9D0F00FF000E9E0F00FF000E9F0F00C9
145:10090000FF000EA00F00FF000EA10F00FF000EA2BF
146:100910000F00FF000EA30F00FF000EA40F00FF004A
147:100920000EA50F00FF000EA60F00FF000EA70F0080
148:10093000FF000EA80F00FF000EA90F00FF000EAA77
149:100940000F00FF000EAB0F00FF000EAC0F00FF000A
150:100950000EAD0F00FF000EAE0F00FF000EAF0F0038
151:10096000FF000EB00F00FF000EB10F00FF000EB22F
152:100970000F00FF000EB30F00FF000EB40F00FF00CA
153:100980000EB50F00FF000EB60F00FF000EB70F00F0
154:10099000FF000EB80F00FF000EB90F00FF000EBAE7
155:1009A0000F00FF000EBB0F00FF000EBC0F00FF008A
156:1009B0000EBD0F00FF000EBE0F00FF000EBF0F00A8
157:1009C000FF000EC00F00FF000EC10F00FF000EC29F
158:1009D0000F00FF000EC30F00FF000EC40F00FF004A
159:1009E0000EC50F00FF000EC60F00FF000EC70F0060
160:1009F000FF000EC80F00FF000EC90F00FF000ECA57
161:100A00000F00FF000ECB0F00FF000ECC0F00FF0009
162:100A10000ECD0F00FF000ECE0F00FF000ECF0F0017
163:100A2000FF000ED00F00FF000ED10F00FF000ED20E
164:100A30000F00FF000ED30F00FF000ED40F00FF00C9
165:100A40000ED50F00FF000ED60F00FF000ED70F00CF
166:100A5000FF000ED80F00FF000ED90F00FF000EDAC6
167:100A60000F00FF000EDB0F00FF000EDC0F00FF0089
168:100A70000EDD0F00FF000EDE0F00FF000EDF0F0087
169:100A8000FF000EE00F00FF000EE10F00FF000EE27E
170:100A90000F00FF000EE30F00FF000EE40F00FF0049
171:100AA0000EE50F00FF000EE60F00FF000EE70F003F
172:100AB000FF000EE80F00FF000EE90F00FF000EEA36
173:100AC0000F00FF000EEB0F00FF000EEC0F00FF0009
174:100AD0000EED0F00FF000EEE0F00FF000EEF0F00F7
175:100AE000FF000EF00F00FF000EF10F00FF000EF2EE
176:100AF0000F00FF000EF30F00FF000EF40F00FF00C9
177:100B00000EF50F00FF000EF60F00FF000EF70F00AE
178:100B1000FF000EF80F00FF000EF90F00FF000EFAA5
179:100B20000F00FF000EFB0F00FF000EFC0F00FF0088
180:100B30000EFD0F00FF000EFE0F00FF000EFF0F0066
181:100B4000FF000802FF000B070A440D000C00FF0025
182:100B50000B070A420D000C00FF000B070A430D00B3
183:100B60000C00FF000B070A7C0D000C00FF000B07B8
184:100B70000A7E0D000C00FF000B070A460D000C005A
185:100B8000FF000B070A490D000C00FF000B070A4786
186:100B90000D000C00FF000B070A4A0D000C00FF00BF
187:100BA0000E100F00FF000E110F00FF000E120F00BD
188:100BB000FF000E130F00FF000E140F00FF000E15B4
189:100BC0000F00FF000E160F00FF000E170F00FF00B2
190:100BD0000E180F00FF000E190F00FF000E1A0F0075
191:100BE000FF000E1B0F00FF000E1C0F00FF000E1D6C
192:100BF0000F00FF000E1E0F00FF000E1F0F00FF0072
193:100C00000E200F00FF000E210F00FF000E220F002C
194:100C1000FF000E230F00FF000E240F00FF000E2523
195:100C20000F00FF000E260F00FF000E270F00FF0031
196:100C30000E280F00FF000E290F00FF000E2A0F00E4
197:100C4000FF000E2B0F00FF000E2C0F00FF000E2DDB
198:100C50000F00FF000E2E0F00FF000E2F0F00FF00F1
199:100C60000E300F00FF000E310F00FF000E320F009C
200:100C7000FF000E330F00FF000E340F00FF000E3593
201:100C80000F00FF000E360F00FF000E370F00FF00B1
202:100C90000E380F00FF000E390F00FF000E3A0F0054
203:100CA000FF000E3B0F00FF000E3C0F00FF000E3D4B
204:100CB0000F00FF000E3E0F00FF000E3F0F00FF0071
205:100CC0000E400F00FF000E410F00FF000E420F000C
206:100CD000FF000E430F00FF000E440F00FF000E4503
207:100CE0000F00FF000E460F00FF000E470F00FF0031
208:100CF0000E480F00FF000E490F00FF000E4A0F00C4
209:100D0000FF000E4B0F00FF000E4C0F00FF000E4DBA
210:100D10000F00FF000E4E0F00FF000E4F0F00FF00F0
211:100D20000E500F00FF000E510F00FF000E520F007B
212:100D3000FF000E530F00FF000E540F00FF000E5572
213:100D40000F00FF000E560F00FF000E570F00FF00B0
214:100D50000E580F00FF000E590F00FF000E5A0F0033
215:100D6000FF000E5B0F00FF000E5C0F00FF000E5D2A
216:100D70000F00FF000E5E0F00FF000E5F0F00FF0070
217:100D80000E600F00FF000E610F00FF000E620F00EB
218:100D9000FF000E630F00FF000E640F00FF000E65E2
219:100DA0000F00FF000E660F00FF000E670F00FF0030
220:100DB0000E680F00FF000E690F00FF000E6A0F00A3
221:100DC000FF000E6B0F00FF000E6C0F00FF000E6D9A
222:100DD0000F00FF000E6E0F00FF000E6F0F00FF00F0
223:100DE0000E700F00FF000E710F00FF000E720F005B
224:100DF000FF000E730F00FF000E740F00FF000E7552
225:100E00000F00FF000E760F00FF000E770F00FF00AF
226:100E10000E780F00FF000E790F00FF000E7A0F0012
227:100E2000FF000E7B0F00FF000E7C0F00FF000E7D09
228:100E30000F00FF000E7E0F00FF000E7F0F00FF006F
229:100E40000E800F00FF000E810F00FF000E820F00CA
230:100E5000FF000E830F00FF000E840F00FF000E85C1
231:100E60000F00FF000E860F00FF000E870F00FF002F
232:100E70000E880F00FF000E890F00FF000E8A0F0082
233:100E8000FF000E8B0F00FF000E8C0F00FF000E8D79
234:100E90000F00FF000E8E0F00FF000E8F0F00FF00EF
235:100EA0000E900F00FF000E910F00FF000E920F003A
236:100EB000FF000E930F00FF000E940F00FF000E9531
237:100EC0000F00FF000E960F00FF000E970F00FF00AF
238:100ED0000E980F00FF000E990F00FF000E9A0F00F2
239:100EE000FF000E9B0F00FF000E9C0F00FF000E9DE9
240:100EF0000F00FF000E9E0F00FF000E9F0F00FF006F
241:100F00000EA00F00FF000EA10F00FF000EA20F00A9
242:100F1000FF000EA30F00FF000EA40F00FF000EA5A0
243:100F20000F00FF000EA60F00FF000EA70F00FF002E
244:100F30000EA80F00FF000EA90F00FF000EAA0F0061
245:100F4000FF000EAB0F00FF000EAC0F00FF000EAD58
246:100F50000F00FF000EAE0F00FF000EAF0F00FF00EE
247:100F60000EB00F00FF000EB10F00FF000EB20F0019
248:100F7000FF000EB30F00FF000EB40F00FF000EB510
249:100F80000F00FF000EB60F00FF000EB70F00FF00AE
250:100F90000EB80F00FF000EB90F00FF000EBA0F00D1
251:100FA000FF000EBB0F00FF000EBC0F00FF000EBDC8
252:100FB0000F00FF000EBE0F00FF000EBF0F00FF006E
253:100FC0000EC00F00FF000EC10F00FF000EC20F0089
254:100FD000FF000EC30F00FF000EC40F00FF000EC580
255:100FE0000F00FF000EC60F00FF000EC70F00FF002E
256:100FF0000EC80F00FF000EC90F00FF000ECA0F0041
257:10100000FF000ECB0F00FF000ECC0F00FF000ECD37
258:101010000F00FF000ECE0F00FF000ECF0F00FF00ED
259:101020000ED00F00FF000ED10F00FF000ED20F00F8
260:10103000FF000ED30F00FF000ED40F00FF000ED5EF
261:101040000F00FF000ED60F00FF000ED70F00FF00AD
262:101050000ED80F00FF000ED90F00FF000EDA0F00B0
263:10106000FF000EDB0F00FF000EDC0F00FF000EDDA7
264:101070000F00FF000EDE0F00FF000EDF0F00FF006D
265:101080000EE00F00FF000EE10F00FF000EE20F0068
266:10109000FF000EE30F00FF000EE40F00FF000EE55F
267:1010A0000F00FF000EE60F00FF000EE70F00FF002D
268:1010B0000EE80F00FF000EE90F00FF000EEA0F0020
269:1010C000FF000EEB0F00FF000EEC0F00FF000EED17
270:1010D0000F00FF000EEE0F00FF000EEF0F00FF00ED
271:1010E0000EF00F00FF000EF10F00FF000EF20F00D8
272:1010F000FF000EF30F00FF000EF40F00FF000EF5CF
273:101100000F00FF000EF60F00FF000EF70F00FF00AC
274:101110000EF80F00FF000EF90F00FF000EFA0F008F
275:10112000FF000EFB0F00FF000EFC0F00FF000EFD86
276:101130000F00FF000EFE0F00FF000EFF0F0009055D
277:101140000B000A000D010C7CFF000D000C1EFF00BF
278:101150000D000C00FF000D000C00FF000D000CF551
279:10116000FF000D000C11FF000D000C20FF000D0012
280:101170000C32FF000D000C40FF000D000C13FF00AF
281:101180000D000C00FF000D000C14FF000D020C768A
282:10119000FF000D000C60FF000D000C80FF000D0231
283:1011A0000C00FF000D000C00FF000D000C00FF0004
284:1011B0000D020C00FF000D000C00FF000D000C00E4
285:1011C000FF000D000C00FF000D000C00FF000D00E3
286:1011D0000C00FF000D000C00FF000D000C00FF00D4
287:1011E0000D000C00FF000D000C00FF000D000C00B6
288:1011F000FF000D000C00FF000D000C00FF000D00B3
289:101200000C00FF000D000C00FF000D000C00FF00A3
290:101210000D000C00FF000D000C00FF000D000C0085
291:10122000FF000D000C00FF000D000C00FF000D0082
292:101230000C00FF000D000C00FF000D000C00FF0073
293:101240000D000C00FF000D000C00FF000D000C0055
294:10125000FF000D000C00FF000D000C00FF000D0052
295:101260000C00FF000D000C00FF000D000C00FF0043
296:101270000D000C00FF000D000C00FF000D000C0025
297:10128000FF000D000C00FF000D000C00FF000D0022
298:101290000C00FF000D000C00FF000D000C00FF0013
299:1012A0000D000C00FF000D000C00FF000D000C00F5
300:1012B000FF000D000C00FF000D000C00FF000D00F2
301:1012C0000C00FF000D000C18FF000D000C19FF00B2
302:1012D0000D010C1AFF000D010C20FF000D010C4048
303:1012E000FF000D010C17FF000D000C00FF000D01A9
304:1012F0000C80FF000D010C20FF000D000C10FF0002
305:101300000D010CA0FF000D030CD1FF000D000C001F
306:10131000FF000D010CF2FF000D020C00FF000D009C
307:101320000C13FF000D000C00FF000D000CF4FF007B
308:101330000D020CE0FF000D000C15FF000D000C006D
309:10134000FF000D000C16FF000D000C00FF000D004B
310:101350000C17FF000D000C20FF000D000C00FF001B
311:101360000D000C20FF000D000C50FF000D000C00C4
312:10137000FF000D000C40FF000D000C00FF000D00F1
313:101380000C71FF000D020C00FF000D000C60FF004F
314:101390000D000C00FF000D000C92FF000D000C0072
315:1013A000FF000D000C80FF000D000C00FF000D0081
316:1013B0000CB3FF000D020C00FF000D000CA0FF009D
317:1013C0000D000C00FF000D000CD4FF000D000C0000
318:1013D000FF000D000C40FF000D000C80FF000D0011
319:1013E0000CF5FF000D000C20FF000D000C70FF003D
320:1013F0000D000CA0FF000D020C11FF000D000C16DB
321:10140000FF000D000C00FF000D000C00FF000D00A0
322:101410000C00FF000D000C20FF000D020C00FF006F
323:101420000D000C20FF000D000C10FF000D000C172C
324:10143000FF000D000C1BFF000D000C1DFF000D0236
325:101440000CDFFF0009050B010A000D000C00FF0076
326:101450000D000C00FF000D000C00FF000D020C0041
327:10146000FF000D000C19FF000D000C1FFF000D0008
328:101470000C00FF000D000C00FF000D000C00FF0031
329:101480000D030CD8FF000D000C00FF000D020C2016
330:10149000FF000D000C19FF000D000C00FF000D00F7
331:1014A0000C00FF000D000C18FF000D010CC0FF0028
332:1014B0000D010CFAFF000D000C1AFF000D000C00CE
333:1014C000FF000D000C00FF000D000C00FF000D00E0
334:1014D0000C00FF000D000C00FF000D000C00FF00D1
335:1014E0000D000C00FF000D000C00FF000D000C00B3
336:1014F000FF000D000C00FF000D000C00FF000D00B0
337:101500000C00FF000D000C00FF000D000C00FF00A0
338:101510000D000C00FF000D000C00FF000D000C0082
339:10152000FF000D000C00FF000D000C00FF000D007F
340:101530000C00FF000D000C00FF000D000C00FF0070
341:101540000D000C00FF000D000C00FF000D000C0052
342:10155000FF000D000C00FF000D000C00FF000D004F
343:101560000C00FF000D000C00FF000D000C00FF0040
344:101570000D000C00FF000D000C00FF000D000C0022
345:10158000FF000D000C00FF000D000C00FF000D001F
346:101590000C00FF000D000C00FF000D000C00FF0010
347:1015A0000D000C00FF000D000C00FF000D000C00F2
348:1015B000FF000D000C00FF000D000C00FF000D00EF
349:1015C0000C00FF000D000C00FF000D020C40FF009E
350:1015D0000D020C60FF000D000C00FF000D000C0060
351:1015E000FF000D000C00FF000D020CC0FF000D02FB
352:1015F0000C80FF000D000C00FF000D020CFBFF0033
353:101600000D020CA0FF000D000C00FF000D000C1BD4
354:10161000FF000D020CD7FF000D000C00FF000D02B3
355:101620000CF7FF000D030C20FF000D030C00FF0062
356:101630000D000C00FF000D000C1CFF000D030C3C06
357:10164000FF000D000C00FF000D030C3FFF000D001C
358:101650000C00FF000D030CC0FF000D000C00FF008C
359:101660000D030CDFFF000D000C00FF000D000C004F
360:10167000FF000D030C5DFF000D000C00FF000D03CB
361:101680000CC0FF000D000C00FF000D030C7DFF00DF
362:101690000D000C00FF000D030CC0FF000D000C003E
363:1016A000FF000D030C9EFF000D000C00FF000D035A
364:1016B0000CC0FF000D000C00FF000D030CBEFF006E
365:1016C0000D000C00FF000D030CC0FF000D000C000E
366:1016D000FF000D000C00FF000D000C00FF000D00CE
367:1016E0000C00FF000D000C1BFF000D000C00FF00A4
368:1016F0000D000C00FF000D000C00FF000D020CDBC4
369:10170000FF000D000C00FF000D020CDBFF000D00C0
370:101710000C00FF000D020CE0FF000D000C00FF00AC
371:101720000D020CFBFF000D000C00FF000D020CC0B1
372:10173000FF000D020C40FF000D020CFBFF000D022C
373:101740000C60FF000D000C1BFF0009050B020A00D6
374:101750000CC4FF000C00FF000C44FF000C07FF004E
375:101760000C44FF000C00FF000C40FF000C25FF00A4
376:101770000C01FF000C06FF000CC4FF000C07FF006B
377:101780000C40FF000C25FF000C01FF000C00FF00C7
378:101790000C46FF000C46FF000C00FF000C00FF0091
379:1017A0000C00FF000C00FF000C00FF000C00FF000D
380:1017B0000C00FF000C00FF000C00FF000C00FF00FD
381:1017C0000C00FF000C00FF000C00FF000C00FF00ED
382:1017D0000C00FF000C00FF000C00FF000C00FF00DD
383:1017E0000C00FF000C00FF000C00FF000C00FF00CD
384:1017F0000C00FF000C00FF000C00FF000C00FF00BD
385:101800000C00FF000C00FF000C00FF000C00FF00AC
386:101810000C00FF000C00FF000C00FF000C00FF009C
387:101820000C00FF000C00FF000C00FF000C00FF008C
388:101830000C00FF000C00FF000C00FF000C00FF007C
389:101840000C00FF000C00FF000C00FF000C00FF006C
390:101850000C46FF000C07FF000C05FF000C05FF0005
391:101860000C05FF000C04FF000C07FF000C05FF0037
392:101870000C04FF000C07FF000C05FF000C44FF00E8
393:101880000C46FF000C44FF000C46FF000C46FF0016
394:101890000C07FF000C05FF000C44FF000C46FF0086
395:1018A0000C05FF000C46FF000C05FF000C46FF0076
396:1018B0000C05FF000C46FF000C05FF000C44FF0068
397:1018C0000C46FF000C05FF000C07FF000C44FF0056
398:1018D0000C46FF000C05FF000C07FF000C44FF0046
399:1018E0000C46FF000C05FF000C07FF000C44FF0036
400:1018F0000C46FF000C05FF000C07FF000C44FF0026
401:101900000C05FF000C05FF000C05FF000C44FF0058
402:101910000C05FF000C05FF000C05FF000C46FF0046
403:101920000C05FF000C46FF000C05FF000C46FF00F5
404:101930000C05FF000C46FF000C05FF000C46FF00E5
405:101940000C07FF000C46FF000C07FF000C44FF00D3
406:1019500009050B030A000C07FF000C40FF000C00F8
407:10196000FF000C00FF000C00FF000C47FF000C0004
408:10197000FF000C40FF000C00FF000C40FF000C06B5
409:10198000FF000C40FF000C00FF000C00FF000C00EB
410:10199000FF000C00FF000C00FF000C00FF000C001B
411:1019A000FF000C00FF000C00FF000C00FF000C000B
412:1019B000FF000C00FF000C00FF000C00FF000C00FB
413:1019C000FF000C00FF000C00FF000C00FF000C00EB
414:1019D000FF000C00FF000C00FF000C00FF000C00DB
415:1019E000FF000C00FF000C00FF000C00FF000C00CB
416:1019F000FF000C00FF000C00FF000C00FF000C00BB
417:101A0000FF000C00FF000C00FF000C00FF000C00AA
418:101A1000FF000C00FF000C00FF000C00FF000C009A
419:101A2000FF000C00FF000C00FF000C00FF000C008A
420:101A3000FF000C00FF000C00FF000C00FF000C007A
421:101A4000FF000C00FF000C00FF000C00FF000C006A
422:101A5000FF000C00FF000C80FF000C80FF000CC09A
423:101A6000FF000C00FF000C00FF000C40FF000C000A
424:101A7000FF000C00FF000C00FF000C40FF000C00FA
425:101A8000FF000C40FF000C00FF000C60FF000C008A
426:101A9000FF000C70FF000C00FF000C40FF000C006A
427:101AA000FF000C40FF000C00FF000C42FF000C0088
428:101AB000FF000C40FF000C00FF000C02FF000C00B8
429:101AC000FF000C40FF000C00FF000C00FF000C00AA
430:101AD000FF000C40FF000C00FF000C00FF000C009A
431:101AE000FF000C40FF000C00FF000C00FF000C008A
432:101AF000FF000C40FF000C00FF000C00FF000C007A
433:101B0000FF000C40FF000C00FF000C00FF000C0069
434:101B1000FF000C42FF000C00FF000C40FF000C0017
435:101B2000FF000C42FF000C00FF000C02FF000C0045
436:101B3000FF000C02FF000C00FF000C02FF000C0075
437:101B4000FF000C42FF000C00FF000CC0FF000C0067
438:101B5000FF000C40FF0009050B040A000C63FF00A6
439:101B60000C03FF000C26FF000C02FF000C2CFF00F2
440:101B70000C00FF000C24FF000C00FF000C2EFF00E7
441:101B80000C02FF000C02FF000C02FF000C00FF0023
442:101B90000C00FF000C00FF000C00FF000C00FF0019
443:101BA0000C00FF000C00FF000C00FF000C00FF0009
444:101BB0000C00FF000C00FF000C00FF000C00FF00F9
445:101BC0000C00FF000C00FF000C00FF000C00FF00E9
446:101BD0000C00FF000C00FF000C00FF000C00FF00D9
447:101BE0000C00FF000C00FF000C00FF000C00FF00C9
448:101BF0000C00FF000C00FF000C00FF000C00FF00B9
449:101C00000C00FF000C00FF000C00FF000C00FF00A8
450:101C10000C00FF000C00FF000C00FF000C00FF0098
451:101C20000C00FF000C00FF000C00FF000C00FF0088
452:101C30000C00FF000C00FF000C00FF000C00FF0078
453:101C40000C00FF000C00FF000C00FF000C00FF0068
454:101C50000C00FF000C00FF000C00FF000C00FF0058
455:101C60000C01FF000C20FF000C00FF000C60FF00C7
456:101C70000C00FF000C20FF000C00FF000C20FF00F8
457:101C80000C00FF000C20FF000C00FF000C20FF00E8
458:101C90000C00FF000C20FF000C00FF000C20FF00D8
459:101CA0000C00FF000C20FF000C00FF000C20FF00C8
460:101CB0000C00FF000C60FF000C00FF000C20FF0078
461:101CC0000C00FF000C60FF000C00FF000C20FF0068
462:101CD0000C00FF000C60FF000C00FF000C20FF0058
463:101CE0000C00FF000C60FF000C00FF000C20FF0048
464:101CF0000C00FF000C60FF000C00FF000C20FF0038
465:101D00000C00FF000C60FF000C00FF000C20FF0027
466:101D10000C00FF000C20FF000C00FF000C22FF0055
467:101D20000C02FF000C22FF000C02FF000C20FF0041
468:101D30000C00FF000C60FF000C00FF000C22FF00F5
469:101D40000C02FF000C62FF000C02FF000C20FF00E1
470:101D50000C01FF000C21FF000C01FF0009010B0624
471:101D60000A000D000C00FF000A020D000C00FF002D
472:101D70000A040D000C00FF000A060D000C00FF0015
473:101D80000A080D000C00FF000A0A0D000C00FF00FD
474:101D90000A0C0D000C00FF000A0E0D000C00FF00E5
475:101DA0000A100D000C00FF000A120D000C00FF00CD
476:101DB0000A140D000C00FF000A160D000C00FF00B5
477:101DC0000A180D000C00FF000A1A0D000C00FF009D
478:101DD0000A1C0D000C00FF000A1E0D000C00FF0085
479:101DE0000A200D000C00FF000A220D000C00FF006D
480:101DF0000A240D000C00FF000A260D000C00FF0055
481:101E00000A280D000C00FF000A2A0D000C00FF003C
482:101E10000A2C0D000C00FF000A2E0D000C00FF0024
483:101E20000A300D000C00FF000A320D000C00FF000C
484:101E30000A340D000C00FF000A360D000C00FF00F4
485:101E40000A380D000C00FF000A3A0D000C00FF00DC
486:101E50000A3C0D000C00FF000A3E0D000C00FF00C4
487:101E60000A400D000C00FF000A420D030C00FF00A9
488:101E70000A440D010C00FF000A460D0A0C21FF0068
489:101E80000A480D0D0C23FF000A4A0D230C1BFF000E
490:101E90000A4C0D370C8FFF000A4E0D450C77FF00E2
491:101EA0000A500D520CE2FF000A520D1C0C92FF006A
492:101EB0000A540D1C0C52FF000A560D070C00FF00BF
493:101EC0000A580D2F0CC6FF000A5A0D0B0C00FF001C
494:101ED0000A5C0D300C06FF000A5E0D170C00FF00B7
495:101EE0000A600D3D0CDAFF000A620D290C00FF00AC
496:101EF0000A640D3E0C41FF000A660D390C00FF001C
497:101F00000A680D4C0C48FF000A6A0D490C00FF00DE
498:101F10000A6C0D4C0C6CFF000A6E0D110CD2FF0008
499:101F20000A700D160C0CFF000A720D000C00FF0069
500:101F30000A740D000C80FF000A760D0F0C00FF00E4
501:101F40000A780D000C80FF000A7A0D130C00FF00C8
502:101F50000A7C0D800C00FF000A7E0D800C80FF00C3
503:101F600009050B070A000D0F0CFFFF000D000C0008
504:101F7000FF000D080C00FF000D080C00FF000D0213
505:101F80000C00FF000D000C00FF000D000C00FF0016
506:101F90000D0F0CFFFF000D000C00FF000D000C00EA
507:101FA000FF000D080C00FF000D080C00FF000D00E5
508:101FB0000C00FF000D0F0CFFFF000D000C00FF00D8
509:101FC0000D000C00FF000D0F0CFFFF000D0F0CFFAC
510:101FD000FF000D000C00FF000D000C00FF000D00C5
511:101FE0000C00FF000D000C00FF000D000C00FF00B6
512:101FF0000D000C00FF000D000C00FF000D000C0098
513:10200000FF000D000C00FF000D000C00FF000D0094
514:102010000C00FF000D000C00FF000D000C00FF0085
515:102020000D000C00FF000D000C00FF000D000C0067
516:10203000FF000D000C00FF000D000C00FF000D0064
517:102040000C00FF000D000C00FF000D000C00FF0055
518:102050000D000C00FF000D000C00FF000D000C0037
519:10206000FF000D000C00FF000D000C00FF000D0034
520:102070000C00FF000D000C00FF000D000C00FF0025
521:102080000D000C00FF000D000C00FF000D000C0007
522:10209000FF000D000C00FF000D000C00FF000D0004
523:1020A0000C00FF000D000C00FF000D000C00FF00F5
524:1020B0000D000C00FF000D000C00FF000D000C00D7
525:1020C000FF000D000C00FF000D000C00FF000D00D4
526:1020D0000C00FF000D000C00FF000D000C00FF00C5
527:1020E0000D000C00FF000D000C00FF000D000C00A7
528:1020F000FF000D000C00FF000D000C00FF000D00A4
529:102100000C00FF000D000C00FF000D000C00FF0094
530:102110000D000C00FF000D000C00FF000D000C0076
531:10212000FF000D000C00FF000D0F0CFFFF000D0F56
532:102130000CFFFF000D0F0CFFFF000D0F0CFFFF0049
533:102140000D020CE9FF000D060C8CFF000D060C8C37
534:10215000FF000D0F0CFFFF000D1A0C75FF000D0D99
535:102160000C8BFF000D040CE9FF000D0B0C16FF009B
536:102170000D1A0C38FF000D0D0CC8FF000D040C6F7C
537:10218000FF000D0B0C91FF000D0F0CFFFF000D0663
538:102190000C40FF000D060C40FF000D020C8FFF00ED
539:1021A0000D0F0CFFFF000D060C62FF000D060C6208
540:1021B000FF000D020C7BFF000D0F0CFFFF000D0652
541:1021C0000C97FF000D060C97FF000D020C52FF004C
542:1021D0000D0F0CFFFF000D060CF6FF000D060CF6B0
543:1021E000FF000D020C19FF000D050C55FF000D0539
544:1021F0000C55FF000D050C55FF000D050C55FF009B
545:102200000D050C55FF000D050C55FF000D050C5577
546:10221000FF000D050C55FF000D140CDAFF000D0D2D
547:102220000C93FF000D040CDAFF000D050C93FF006A
548:102230000D140CDAFF000D0D0C93FF000D040CDAE9
549:10224000FF000D050C93FF000D000C00FF000D00BA
550:102250000C00FF000D000C00FF000D000C00FF0043
551:102260000D020C00FF000E010F00FF000E020F0018
552:10227000FF000E010F01FF000E020F00FF000E0114
553:102280000F02FF000E020F00FF000E010F03FF0000
554:102290000E020F00FF000E010F04FF000E020F00E0
555:1022A000FF000E010F05FF000E020F00FF000E01E0
556:1022B0000F06FF000E020F00FF000E010F07FF00C8
557:1022C0000E020F00FF000E010F08FF000E020F00AC
558:1022D000FF000E010F09FF000E020F00FF000E01AC
559:1022E0000F0AFF000E020F00FF000E010F0BFF0090
560:1022F0000E020F00FF000E010F0CFF000E020F0078
561:10230000FF000E010F0DFF000E020F00FF000E0177
562:102310000F0EFF000E020F00FF000E010F0FFF0057
563:102320000E020F00FF000EB00F20FF000EB10F20B5
564:10233000FF000EB20F20FF000EB30F20FF000EB4FF
565:102340000F20FF000EB50F20FF000EB60F20FF007C
566:102350000EB70F20FF000EB80F20FF000EB90F20A0
567:10236000FF000EBA0F20FF000EBB0F20FF000EBCB7
568:102370000F20FF000EBD0F20FF000EBE0F20FF003C
569:102380000EBF0F20FF000EF00F20FF000EF10F20F8
570:10239000FF000EF20F20FF000EF30F20FF000EF4DF
571:1023A0000F20FF000EF50F20FF000EF60F20FF009C
572:1023B0000EF70F20FF000EF80F20FF000EF90F2080
573:1023C000FF000EFA0F20FF000EFB0F20FF000EFC97
574:1023D0000F20FF000EFD0F20FF000EFE0F20FF005C
575:1023E0000EFF0F20FF000E100FFFFF000E110FFF5A
576:1023F000FF000E120FFFFF000E130FFFFF000E1461
577:102400000FFFFF000E150FFFFF000E160FFFFF005E
578:102410000E170FFFFF000E180FFFFF000E190FFF22
579:10242000FF000E1A0FFFFF000E1B0FFFFF000E1C18
580:102430000FFFFF000E1D0FFFFF000E1E0F40FF00DD
581:102440000E1F0FFFFF000E200FFFFF000E210FFFDA
582:10245000FF000E220FFFFF000E230FFFFF000E24D0
583:102460000FFFFF000E250FFFFF000E260FFFFF00DE
584:102470000E270FFFFF000E280FFFFF000E290FFF92
585:10248000FF000E2A0FFFFF000E2B0FFFFF000E2C88
586:102490000FFFFF000E2D0FFFFF000E2E0F00FF009D
587:1024A0000E2F0F00FF000E300F00FF000E310F0047
588:1024B000FF000E320F00FF000E330F00FF000E343E
589:1024C0000F00FF000E350F00FF000E360F00FF005B
590:1024D0000E370F00FF000E380F00FF000E390F00FF
591:1024E000FF000E3A0F00FF000E3B0F00FF000E3CF6
592:1024F0000F00FF000E3D0F00FF000E3E0F00FF001B
593:102500000E3F0F20FF000E400F00FF000E410F0096
594:10251000FF000E420F00FF000E430F00FF000E44AD
595:102520000F00FF000E450F00FF000E460F00FF00DA
596:102530000E470F00FF000E480F00FF000E490F006E
597:10254000FF000E4A0F00FF000E4B0F00FF000E4C65
598:102550000F00FF000E4D0F00FF000E4E0F0EFF008C
599:102560000E4F0F0EFF000E500F00FF000E510F0018
600:10257000FF000E520F00FF000E530F00FF000E541D
601:102580000F00FF000E550F00FF000E560F00FF005A
602:102590000E570F00FF000E580F00FF000E590F00DE
603:1025A000FF000E5A0F00FF000E5B0F00FF000E5CD5
604:1025B0000F00FF000E5D0F00FF000E5E0F00FF001A
605:1025C0000E5F0F00FF000E600F00FF000E610F0096
606:1025D000FF000E620F00FF000E630F00FF000E648D
607:1025E0000F00FF000E650F00FF000E660F00FF00DA
608:1025F0000E670F00FF000E680F00FF000E690F004E
609:10260000FF000E6A0F00FF000E6B0F00FF000E6C44
610:102610000F40FF000E6D0F00FF000E6E0F40FF0019
611:102620000E6F0F40FF000E700FC0FF000E710FC045
612:10263000FF000E720FC0FF000E730FC0FF000E747C
613:102640000FC0FF000E750FC0FF000E760FC0FF0019
614:102650000E770FC0FF000E780FC0FF000E790FC07D
615:10266000FF000E7A0FC0FF000E7B0FC0FF000E7C34
616:102670000FC0FF000E7D0FC0FF000E7E0FC0FF00D9
617:102680000E7F0FC0FF000E800F00FF000E810F00B5
618:10269000FF000E820F00FF000E830F00FF000E846C
619:1026A0000F00FF000E850F00FF000E860F00FF00D9
620:1026B0000E870F00FF000E880F00FF000E890F002D
621:1026C000FF000E8A0F00FF000E8B0F00FF000E8C24
622:1026D0000F00FF000E8D0F00FF000E8E0F00FF0099
623:1026E0000E8F0F00FF000E900F00FF000E910F00E5
624:1026F000FF000E920F00FF000E930F00FF000E94DC
625:102700000F00FF000E950F00FF000E960F00FF0058
626:102710000E970F00FF000E980F00FF000E990F009C
627:10272000FF000E9A0F00FF000E9B0F00FF000E9C93
628:102730000F00FF000E9D0F00FF000E9E0F00FF0018
629:102740000E9F0F00FF000EA00F00FF000EA10F0054
630:10275000FF000EA20F00FF000EA30F00FF000EA44B
631:102760000F00FF000EA50F00FF000EA60F00FF00D8
632:102770000EA70F00FF000EA80F00FF000EA90F000C
633:10278000FF000EAA0F00FF000EAB0F00FF000EAC03
634:102790000F00FF000EAD0F00FF000EAE0F00FF0098
635:1027A0000EAF0F00FF000EC00F00FF000EC10F00A4
636:1027B000FF000EC20F00FF000EC30F00FF000EC48B
637:1027C0000F00FF000EC50F00FF000EC60F00FF0038
638:1027D0000EC70F00FF000EC80F00FF000EC90F004C
639:1027E000FF000ECA0F00FF000ECB0F00FF000ECC43
640:1027F0000F00FF000ECD0F00FF000ECE0F00FF00F8
641:102800000ECF0F00FF000ED00F00FF000ED10F0003
642:10281000FF000ED20F00FF000ED30F00FF000ED4FA
643:102820000F00FF000ED50F00FF000ED60F00FF00B7
644:102830000ED70F00FF000ED80F00FF000ED90F00BB
645:10284000FF000EDA0F00FF000EDB0F00FF000EDCB2
646:102850000F00FF000EDD0F00FF000EDE0F10FF0067
647:102860000EDF0F10FF000EE00F00FF000EE10F0063
648:10287000FF000EE20F00FF000EE30F00FF000EE46A
649:102880000F00FF000EE50F00FF000EE60F00FF0037
650:102890000EE70F00FF000EE80F00FF000EE90F002B
651:1028A000FF000EEA0F00FF000EEB0F00FF000EEC22
652:1028B0000F00FF000EED0F00FF000EEE0F00FF00F7
653:1028C0000EEF0F00FF000E010F000E020F01FF00C0
654:1028D0000E010F010E020F01FF000E010F020E028A
655:1028E0000F01FF000E010F030E020F01FF000E018A
656:1028F0000F040E020F01FF000E010F050E020F0163
657:10290000FF000E010F060E020F01FF000E010F0760
658:102910000E020F01FF000E010F080E020F01FF0053
659:102920000E010F090E020F01FF000E010F0A0E0229
660:102930000F01FF000E010F0B0E020F01FF000E0131
661:102940000F0C0E020F01FF000E010F0D0E020F0102
662:10295000FF000E010F0E0E020F01FF000E010F0F00
663:102960000E020F01FF0008020B070A460D000C00C3
664:10297000FF000B070A490D000C00FF000B000A4B7B
665:102980000D030C11FF000B000A4D0D010C32FF006E
666:102990000B070A460D000C00FF000B070A490D004B
667:1029A0000C00FF000B070A400D000C00FF000B0796
668:1029B0000A410D000C00FF000B010A400D020C4003
669:1029C000FF000B010A410D020C60FF000B070A40DB
670:1029D0000D000C00FF000B070A410D000C00FF006A
671:1029E0000B070A470D000C00FF000B070A4A0D00F9
672:1029F0000C00FF000B000A470D010C00FF000B004C
673:102A00000A4A0D010C20FF000B070A470D000C00BD
674:102A1000FF000B070A4A0D000C00FF000B070A7CA1
675:102A20000D000C00FF000B070A7E0D000C00FF00DC
676:102A30000B000A000D010C1CFF000B070A7C0D00A7
677:102A40000C00FF000B070A7E0D000C00FF000B07B7
678:102A50000A440D000C00FF000B000A440D010C009D
679:102A6000FF000B070A440D000C00FF000B070A4291
680:102A70000D000C00FF000B070A430D000C00FF00C7
681:102A80000B000A420D010C1AFF000B000A430D0156
682:102A90000C20FF000B070A420D000C00FF000B0783
683:102AA0000A430D000C00FF000B070A400D000C004C
684:102AB000FF000B070A410D000C00FF000B010A404C
685:102AC0000D020C40FF000B010A410D020C60FF00DB
686:102AD0000B070A400D000C00FF000B070A410D0018
687:102AE0000C00FF000B070A440D0F0CFFFF000B0743
688:102AF0000A420D000C00FF000B070A430D000C00FA
689:102B0000FF000B070A400D000C00FF000B070A41F5
690:102B10000D000C00FF000B070A510D060C40FF00D2
691:102B20000B070A500D060C40FF000B070A4F0D0360
692:102B30000C81FF000B070A530D1A0C76FF000B07E0
693:102B40000A540D0D0C8BFF000B070A550D040CE900
694:102B5000FF000B070A560D0B0C17FF000B070A5757
695:102B60000D1A0C38FF000B070A580D0D0CC9FF0099
696:102B70000B070A590D040C6FFF000B070A5A0D0BC7
697:102B80000C91FF000B070A730D140CDAFF000B0702
698:102B90000A740D0D0C93FF000B070A750D040CD978
699:102BA000FF000B070A760D050C93FF000B070A7751
700:102BB0000D140CDAFF000B070A780D0D0C93FF00C3
701:102BC0000B070A790D040CD9FF000B070A7A0D05D3
702:102BD0000C93FF000B070A5E0D030C68FF000B0748
703:102BE0000A5C0D040C31FF000B070A5D0D040C316B
704:102BF000FF000B070A620D030C52FF000B070A606F
705:102C00000D040C76FF000B070A610D040C76FF0023
706:102C10000B070A660D030C2EFF000B070A640D0458
707:102C20000CDAFF000B070A650D040CDAFF000B0736
708:102C30000A6A0D020CF6FF000B070A680D050C620C
709:102C4000FF000B070A690D050C62FF000B060A4620
710:102C50000D0A0C22FF000B060A480D0D0C24FF0084
711:102C60000B060A6E0D110CD3FF000B060A700D1532
712:102C70000CCBFF000B060A520D200C93FF000B0635
713:102C80000A540D200C54FF000B060A4A0D270C1D98
714:102C9000FF000B060A580D2F0CC8FF000B060A5C3C
715:102CA0000D300C07FF000B060A4C0D370C90FF008F
716:102CB0000B060A600D3D0CDBFF000B060A640D3E9F
717:102CC0000C42FF000B060A4E0D450C78FF000B0668
718:102CD0000A680D4C0C48FF000B060A6C0D4C0C6C7E
719:102CE000FF000B060A500D520CE2FF000B060A42D1
720:102CF0000D020CBAFF00FF000E1E0F14FF000EDEC7
721:102D00000F20FF000EDF0F20FF000B060A780D00DA
722:102D10000C40FF000B070A030D0F0CFFFF000B0711
723:102D20000A0B0D0F0CFFFF000B070A020D000C0031
724:102D3000FF000B070A0A0D000C00FF000B070A46F4
725:102D40000D000C00FF000B070A490D000C000905DF
726:102D50000B000A100D000C00FF000D000C00FF001E
727:102D60000D020C00FF000D000C00FF000D000C0018
728:102D7000FF000D000C00FF000D000C00FF000D0017
729:102D80000C00FF000D000C00FF000D000C00FF0008
730:102D90000D000C00FF000D000C00FF000D000C00EA
731:102DA000FF000D000C00FF000D000C00FF000D00E7
732:102DB0000C00FF000D000C00FF000D000C00FF00D8
733:102DC0000D000C00FF000D000C00FF000D000C00BA
734:102DD000FF000D000C00FF000D000C00FF000D00B7
735:102DE0000C00FF000D000C00FF000D000C00FF00A8
736:102DF0000D000C00FF000D000C00FF000D000C008A
737:102E0000FF000D000C00FF000D000C00FF000D0086
738:102E10000C00FF000D000C00FF000D000C00FF0077
739:102E20000D000C00FF000D000C00FF000D000C0059
740:102E3000FF000D000C00FF000D000C00FF000D0056
741:102E40000C00FF000D000C00FF000D000C00FF0047
742:102E50000D000C00FF000D000C00FF000D000C0029
743:102E6000FF000D000C00FF000D000C00FF000D0026
744:102E70000C00FF0009050B010A100D010CC0FF003A
745:102E80000D010CFAFF000D000C1AFF000D000C00E4
746:102E9000FF000D000C00FF000D000C00FF000D00F6
747:102EA0000C00FF000D000C00FF000D000C00FF00E7
748:102EB0000D000C00FF000D000C00FF000D000C00C9
749:102EC000FF000D000C00FF000D000C00FF000D00C6
750:102ED0000C00FF000D000C00FF000D000C00FF00B7
751:102EE0000D000C00FF000D000C00FF000D000C0099
752:102EF000FF000D000C00FF000D000C00FF000D0096
753:102F00000C00FF000D000C00FF000D000C00FF0086
754:102F10000D000C00FF000D000C00FF000D000C0068
755:102F2000FF000D000C00FF000D000C00FF000D0065
756:102F30000C00FF000D000C00FF000D000C00FF0056
757:102F40000D000C00FF000D000C00FF000D000C0038
758:102F5000FF000D000C00FF000D000C00FF000D0035
759:102F60000C00FF000D000C00FF000D000C00FF0026
760:102F70000D000C00FF000D000C00FF000D000C0008
761:102F8000FF000D000C00FF000D000C00FF000D0005
762:102F90000C00FF000D000C00FF00FF00FF00090502
763:102FA0000B020A100C46FF000C46FF000C00FF004D
764:102FB0000C00FF000C00FF000C00FF000C00FF00E5
765:102FC0000C00FF000C00FF000C00FF000C00FF00D5
766:102FD0000C00FF000C00FF000C00FF000C00FF00C5
767:102FE0000C00FF000C00FF000C00FF000C00FF00B5
768:102FF0000C00FF000C00FF000C00FF000C00FF00A5
769:103000000C00FF000C00FF000C00FF000C00FF0094
770:103010000C00FF000C00FF000C00FF000C00FF0084
771:103020000C00FF000C00FF000C00FF000C00FF0074
772:103030000C00FF000C00FF000C00FF000C00FF0064
773:103040000C00FF000C00FF000C00FF000C00FF0054
774:103050000C00FF000C00FF000C00FF000C00FF0044
775:103060000C00FF0009050B030A100C00FF000C0008
776:10307000FF000C00FF000C00FF000C00FF000C0024
777:10308000FF000C00FF000C00FF000C00FF000C0014
778:10309000FF000C00FF000C00FF000C00FF000C0004
779:1030A000FF000C00FF000C00FF000C00FF000C00F4
780:1030B000FF000C00FF000C00FF000C00FF000C00E4
781:1030C000FF000C00FF000C00FF000C00FF000C00D4
782:1030D000FF000C00FF000C00FF000C00FF000C00C4
783:1030E000FF000C00FF000C00FF000C00FF000C00B4
784:1030F000FF000C00FF000C00FF000C00FF000C00A4
785:10310000FF000C00FF000C00FF000C00FF000C0093
786:10311000FF000C00FF000C00FF000C00FF000C0083
787:10312000FF000C00FF000C00FF0009050B040A1053
788:103130000C00FF000C00FF000C00FF000C00FF0063
789:103140000C00FF000C00FF000C00FF000C00FF0053
790:103150000C00FF000C00FF000C00FF000C00FF0043
791:103160000C00FF000C00FF000C00FF000C00FF0033
792:103170000C00FF000C00FF000C00FF000C00FF0023
793:103180000C00FF000C00FF000C00FF000C00FF0013
794:103190000C00FF000C00FF000C00FF000C00FF0003
795:1031A0000C00FF000C00FF000C00FF000C00FF00F3
796:1031B0000C00FF000C00FF000C00FF000C00FF00E3
797:1031C0000C00FF000C00FF000C00FF000C00FF00D3
798:1031D0000C00FF000C00FF000C00FF000C00FF00C3
799:1031E0000C00FF000C00FF000C00FF000C00FF00B3
800:1031F00009010B060A100D000C00FF000A120D0059
801:103200000C00FF000A140D000C00FF000A160D0050
802:103210000C00FF000A180D000C00FF000A1A0D0038
803:103220000C00FF000A1C0D000C00FF000A1E0D0020
804:103230000C00FF000A200D000C00FF000A220D0008
805:103240000C00FF000A240D000C00FF000A260D00F0
806:103250000C00FF000A280D000C00FF000A2A0D00D8
807:103260000C00FF000A2C0D000C00FF000A2E0D00C0
808:103270000C00FF000A300D000C00FF000A320D00A8
809:103280000C00FF000A340D000C00FF000A360D0090
810:103290000C00FF000A380D000C00FF000A3A0D0078
811:1032A0000C00FF000A3C0D000C00FF000A3E0D0060
812:1032B0000C00FF0009050B070A100D0F0CFFFF00A3
813:1032C0000D0F0CFFFF000D000C00FF000D000C00A7
814:1032D000FF000D000C00FF000D000C00FF000D00B2
815:1032E0000C00FF000D000C00FF000D000C00FF00A3
816:1032F0000D000C00FF000D000C00FF000D000C0085
817:10330000FF000D000C00FF000D000C00FF000D0081
818:103310000C00FF000D000C00FF000D000C00FF0072
819:103320000D000C00FF000D000C00FF000D000C0054
820:10333000FF000D000C00FF000D000C00FF000D0051
821:103340000C00FF000D000C00FF000D000C00FF0042
822:103350000D000C00FF000D000C00FF000D000C0024
823:10336000FF000D000C00FF000D000C00FF000D0021
824:103370000C00FF000D000C00FF000D000C00FF0012
825:103380000D000C00FF000D000C00FF000D000C00F4
826:10339000FF000D000C00FF000D000C00FF000D00F1
827:1033A0000C00FF000D000C00FF000D000C00FF00E2
828:1033B0000D000C00FF000D000C00FF000D000C00C4
829:1033C000FF000D000C00FF000D000C00FF000D00C1
830:1033D0000C00FF000D000C00FF000E010F00FF00AD
831:1033E0000E020F00FF000E010F01FF000E020F0082
832:1033F000FF000E010F02FF000E020F00FF000E0182
833:103400000F03FF000E020F00FF000E010F04FF006C
834:103410000E020F00FF000E010F05FF000E020F004D
835:10342000FF000E010F06FF000E020F00FF000E014D
836:103430000F07FF000E020F00FF000EB00F20FF006D
837:103440000EB10F20FF000EB20F20FF000EB30F20B1
838:10345000FF000EB40F20FF000EB50F20FF000EB6C8
839:103460000F20FF000EB70F20FF000EF00F20FF000F
840:103470000EF10F20FF000EF20F20FF000EF30F20C1
841:10348000FF000EF40F20FF000EF50F20FF000EF6D8
842:103490000F20FF000EF70F20FF000E100FFFFF00A0
843:1034A0000E110FFFFF000E120FFFFF000E130FFF94
844:1034B000FF000E140FFFFF000E150FFFFF000E168A
845:1034C0000FFFFF000E170FFFFF000E200FFFFF0082
846:1034D0000E210FFFFF000E220FFFFF000E230FFF34
847:1034E000FF000E240FFFFF000E250FFFFF000E262A
848:1034F0000FFFFF000E270FFFFF000E300F00FF0031
849:103500000E310F00FF000E320F00FF000E330F00D0
850:10351000FF000E340F00FF000E350F00FF000E36C7
851:103520000F00FF000E370F00FF000E400F00FF00DE
852:103530000E410F00FF000E420F00FF000E430F0070
853:10354000FF000E440F00FF000E450F00FF000E4667
854:103550000F00FF000E470F00FF000E500F00FF008E
855:103560000E510F00FF000E520F00FF000E530F0010
856:10357000FF000E540F00FF000E550F00FF000E5607
857:103580000F00FF000E570F00FF000E600F00FF003E
858:103590000E610F00FF000E620F00FF000E630F00B0
859:1035A000FF000E640F00FF000E650F00FF000E66A7
860:1035B0000F00FF000E670F00FF000E700FC0FF002E
861:1035C0000E710FC0FF000E720FC0FF000E730FC010
862:1035D000FF000E740FC0FF000E750FC0FF000E76C7
863:1035E0000FC0FF000E770FC0FF000E800F00FF001E
864:1035F0000E810F00FF000E820F00FF000E830F00F0
865:10360000FF000E840F00FF000E850F00FF000E86E6
866:103610000F00FF000E870F00FF000E900F00FF004D
867:103620000E910F00FF000E920F00FF000E930F008F
868:10363000FF000E940F00FF000E950F00FF000E9686
869:103640000F00FF000E970F00FF000EA00F00FF00FD
870:103650000EA10F00FF000EA20F00FF000EA30F002F
871:10366000FF000EA40F00FF000EA50F00FF000EA626
872:103670000F00FF000EA70F00FF000EC00F00FF009D
873:103680000EC10F00FF000EC20F00FF000EC30F009F
874:10369000FF000EC40F00FF000EC50F00FF000EC696
875:1036A0000F00FF000EC70F00FF000ED00F00FF003D
876:1036B0000ED10F00FF000ED20F00FF000ED30F003F
877:1036C000FF000ED40F00FF000ED50F00FF000ED636
878:1036D0000F00FF000ED70F00FF000EE00F00FF00ED
879:1036E0000EE10F00FF000EE20F00FF000EE30F00DF
880:1036F000FF000EE40F00FF000EE50F00FF000EE6D6
881:103700000F00FF000EE70F00FF000E010F00FF008B
882:103710000E020F01FF000E010F01FF000E020F014C
883:10372000FF000E010F02FF000E020F01FF000E014D
884:103730000F03FF000E020F01FF000E010F04FF0038
885:103740000E020F01FF000E010F05FF000E020F0118
886:10375000FF000E010F06FF000E020F01FF000E0119
887:103760000F07FF000E020F01FF000B070A460D00B6
888:103770000C00FF000B070A490D000C00FF000B07AF
889:103780000A450D0F0CFFFF000B070A480D0F0CFF39
890:10379000FF000B070A7B0D040CCCFF000B070A7D12
891:1037A0000D040CCCFF000B070A7C0D000C00FF0081
892:1037B0000B070A7E0D000C00FF000B070A460D00E8
893:1037C0000C00FF000B070A490D000C00FF000B075F
894:1037D0000A470D000C00FF000B070A4A0D000C0001
895:1037E000FF000B070A4C0D000C00FF000B070A4EF0
896:1037F0000D000C00FF000B070A4C0D000C000B071E
897:103800000A4E0D000C000B070A4C0D000C280B078C
898:103810000A4E0D000C280B070A4C0D000C510B072B
899:103820000A4E0D000C510B070A4C0D000C7A0B07C9
900:103830000A4E0D000C7A0B070A4C0D000CA30B0767
901:103840000A4E0D000CA30B070A4C0D000CCC0B0705
902:103850000A4E0D000CCC0B070A4C0D000CF50B07A3
903:103860000A4E0D000CF50B070A4C0D010C1E0B0740
904:103870000A4E0D010C1E0B070A4C0D010C470B07DD
905:103880000A4E0D010C470B070A4C0D010C700B077B
906:103890000A4E0D010C700B070A4C0D010C990B0719
907:1038A0000A4E0D010C990B070A4C0D010CC20B07B7
908:1038B0000A4E0D010CC20B070A4C0D010CEB0B0755
909:1038C0000A4E0D010CEB0B070A4C0D020C140B07F2
910:1038D0000A4E0D020C140B070A4C0D020C3D0B078F
911:1038E0000A4E0D020C3D0B070A4C0D020C660B072D
912:1038F0000A4E0D020C660B070A4C0D020C8F0B07CB
913:103900000A4E0D020C8F0B070A4C0D020CB80B0768
914:103910000A4E0D020CB80B070A4C0D020CE10B0706
915:103920000A4E0D020CE10B070A4C0D030C0A0B07A3
916:103930000A4E0D030C0A0B070A4C0D030C330B0740
917:103940000A4E0D030C330B070A4C0D030C5C0B07DE
918:103950000A4E0D030C5C0B070A4C0D030C850B077C
919:103960000A4E0D030C850B070A4C0D030CAE0B071A
920:103970000A4E0D030CAE0B070A4C0D030CD70B07B8
921:103980000A4E0D030CD70B070A4C0D040C000B0755
922:103990000A4E0D040C000B070A4C0D040C280B07F3
923:1039A0000A4E0D040C280B070A4C0D040C510B0792
924:1039B0000A4E0D040C510B070A4C0D040C7A0B0730
925:1039C0000A4E0D040C7A0B070A4C0D040CA30B07CE
926:1039D0000A4E0D040CA30B070A4C0D040CCC0B076C
927:1039E0000A4E0D040CCC0B070A4C0D040CF50B070A
928:1039F0000A4E0D040CF50B070A4C0D050C1E0B07A7
929:103A00000A4E0D050C1E0B070A4C0D050C470B0743
930:103A10000A4E0D050C470B070A4C0D050C700B07E1
931:103A20000A4E0D050C700B070A4C0D050C990B077F
932:103A30000A4E0D050C990B070A4C0D050CC20B071D
933:103A40000A4E0D050CC20B070A4C0D050CEB0B07BB
934:103A50000A4E0D050CEB0B070A4C0D060C140B0758
935:103A60000A4E0D060C140B070A4C0D060C3D0B07F5
936:103A70000A4E0D060C3D0B070A4C0D060C660B0793
937:103A80000A4E0D060C660B070A4C0D060C8F0B0731
938:103A90000A4E0D060C8F0B070A4C0D060CB80B07CF
939:103AA0000A4E0D060CB80B070A4C0D060CE10B076D
940:103AB0000A4E0D060CE10B070A4C0D070C0A0B070A
941:103AC0000A4E0D070C0A0B070A4C0D070C330B07A7
942:103AD0000A4E0D070C330B070A4C0D070C5C0B0745
943:103AE0000A4E0D070C5C0B070A4C0D070C850B07E3
944:103AF0000A4E0D070C850B070A4C0D070CAE0B0781
945:103B00000A4E0D070CAE0B070A4C0D070CD70B071E
946:103B10000A4E0D070CD70B070A4C0D080C000B07BB
947:103B20000A4E0D080C000B070A4C0D080C280B0759
948:103B30000A4E0D080C280B070A4C0D080C510B07F8
949:103B40000A4E0D080C510B070A4C0D080C7A0B0796
950:103B50000A4E0D080C7A0B070A4C0D080CA30B0734
951:103B60000A4E0D080CA30B070A4C0D080CCC0B07D2
952:103B70000A4E0D080CCC0B070A4C0D080CF50B0770
953:103B80000A4E0D080CF50B070A4C0D090C1E0B070D
954:103B90000A4E0D090C1E0B070A4C0D090C470B07AA
955:103BA0000A4E0D090C470B070A4C0D090C700B0748
956:103BB0000A4E0D090C700B070A4C0D090C990B07E6
957:103BC0000A4E0D090C990B070A4C0D090CC20B0784
958:103BD0000A4E0D090CC20B070A4C0D090CEB0B0722
959:103BE0000A4E0D090CEB0B070A4C0D0A0C140B07BF
960:103BF0000A4E0D0A0C140B070A4C0D0A0C3D0B075C
961:103C00000A4E0D0A0C3D0B070A4C0D0A0C660B07F9
962:103C10000A4E0D0A0C660B070A4C0D0A0C8F0B0797
963:103C20000A4E0D0A0C8F0B070A4C0D0A0CB80B0735
964:103C30000A4E0D0A0CB80B070A4C0D0A0CE10B07D3
965:103C40000A4E0D0A0CE10B070A4C0D0B0C0A0B0770
966:103C50000A4E0D0B0C0A0B070A4C0D0B0C330B070D
967:103C60000A4E0D0B0C330B070A4C0D0B0C5C0B07AB
968:103C70000A4E0D0B0C5C0B070A4C0D0B0C850B0749
969:103C80000A4E0D0B0C850B070A4C0D0B0CAE0B07E7
970:103C90000A4E0D0B0CAE0B070A4C0D0B0CD70B0785
971:103CA0000A4E0D0B0CD70B070A4C0D0C0C000B0722
972:103CB0000A4E0D0C0C000B070A4C0D0C0C280B07C0
973:103CC0000A4E0D0C0C280B070A4C0D0C0C510B075F
974:103CD0000A4E0D0C0C510B070A4C0D0C0C7A0B07FD
975:103CE0000A4E0D0C0C7A0B070A4C0D0C0CA30B079B
976:103CF0000A4E0D0C0CA30B070A4C0D0C0CCC0B0739
977:103D00000A4E0D0C0CCC0B070A4C0D0C0CF50B07D6
978:103D10000A4E0D0C0CF50B070A4C0D0D0C1E0B0773
979:103D20000A4E0D0D0C1E0B070A4C0D0D0C470B0710
980:103D30000A4E0D0D0C470B070A4C0D0D0C700B07AE
981:103D40000A4E0D0D0C700B070A4C0D0D0C990B074C
982:103D50000A4E0D0D0C990B070A4C0D0D0CC20B07EA
983:103D60000A4E0D0D0CC20B070A4C0D0D0CEB0B0788
984:103D70000A4E0D0D0CEB0B070A4C0D0E0C140B0725
985:103D80000A4E0D0E0C140B070A4C0D0E0C3D0B07C2
986:103D90000A4E0D0E0C3D0B070A4C0D0E0C660B0760
987:103DA0000A4E0D0E0C660B070A4C0D0E0C8F0B07FE
988:103DB0000A4E0D0E0C8F0B070A4C0D0E0CB80B079C
989:103DC0000A4E0D0E0CB80B070A4C0D0E0CE10B073A
990:103DD0000A4E0D0E0CE10B070A4C0D0F0C0A0B07D7
991:103DE0000A4E0D0F0C0A0B070A4C0D0F0C330B0774
992:103DF0000A4E0D0F0C330B070A4C0D0F0C5C0B0712
993:103E00000A4E0D0F0C5C0B070A4C0D0F0C850B07AF
994:103E10000A4E0D0F0C850B070A4C0D0F0CAE0B074D
995:103E20000A4E0D0F0CAE0B070A4C0D0F0CD70B07EB
996:103E30000A4E0D0F0CD70B070A4C0D0F0CFF0B078A
997:0A3E40000A4E0D0F0CFF0800FF00F2
998:00000001FF
diff --git a/fs/afs/netdevices.c b/fs/afs/netdevices.c
index 49f189423063..7ad36506c256 100644
--- a/fs/afs/netdevices.c
+++ b/fs/afs/netdevices.c
@@ -20,8 +20,7 @@ int afs_get_MAC_address(u8 *mac, size_t maclen)
20 struct net_device *dev; 20 struct net_device *dev;
21 int ret = -ENODEV; 21 int ret = -ENODEV;
22 22
23 if (maclen != ETH_ALEN) 23 BUG_ON(maclen != ETH_ALEN);
24 BUG();
25 24
26 rtnl_lock(); 25 rtnl_lock();
27 dev = __dev_getfirstbyhwtype(&init_net, ARPHRD_ETHER); 26 dev = __dev_getfirstbyhwtype(&init_net, ARPHRD_ETHER);
diff --git a/fs/befs/super.c b/fs/befs/super.c
index 41f2b4d0093e..ca40f828f64d 100644
--- a/fs/befs/super.c
+++ b/fs/befs/super.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/fs.h> 10#include <linux/fs.h>
11#include <asm/page.h> /* for PAGE_SIZE */
11 12
12#include "befs.h" 13#include "befs.h"
13#include "super.h" 14#include "super.h"
diff --git a/fs/buffer.c b/fs/buffer.c
index 6e35762b6169..13edf7ad3ff1 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -1596,6 +1596,16 @@ EXPORT_SYMBOL(unmap_underlying_metadata);
1596 * locked buffer. This only can happen if someone has written the buffer 1596 * locked buffer. This only can happen if someone has written the buffer
1597 * directly, with submit_bh(). At the address_space level PageWriteback 1597 * directly, with submit_bh(). At the address_space level PageWriteback
1598 * prevents this contention from occurring. 1598 * prevents this contention from occurring.
1599 *
1600 * If block_write_full_page() is called with wbc->sync_mode ==
1601 * WB_SYNC_ALL, the writes are posted using WRITE_SYNC_PLUG; this
1602 * causes the writes to be flagged as synchronous writes, but the
1603 * block device queue will NOT be unplugged, since usually many pages
1604 * will be pushed to the out before the higher-level caller actually
1605 * waits for the writes to be completed. The various wait functions,
1606 * such as wait_on_writeback_range() will ultimately call sync_page()
1607 * which will ultimately call blk_run_backing_dev(), which will end up
1608 * unplugging the device queue.
1599 */ 1609 */
1600static int __block_write_full_page(struct inode *inode, struct page *page, 1610static int __block_write_full_page(struct inode *inode, struct page *page,
1601 get_block_t *get_block, struct writeback_control *wbc) 1611 get_block_t *get_block, struct writeback_control *wbc)
@@ -1606,7 +1616,8 @@ static int __block_write_full_page(struct inode *inode, struct page *page,
1606 struct buffer_head *bh, *head; 1616 struct buffer_head *bh, *head;
1607 const unsigned blocksize = 1 << inode->i_blkbits; 1617 const unsigned blocksize = 1 << inode->i_blkbits;
1608 int nr_underway = 0; 1618 int nr_underway = 0;
1609 int write_op = (wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE); 1619 int write_op = (wbc->sync_mode == WB_SYNC_ALL ?
1620 WRITE_SYNC_PLUG : WRITE);
1610 1621
1611 BUG_ON(!PageLocked(page)); 1622 BUG_ON(!PageLocked(page));
1612 1623
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index 466a332e0bd1..fcfa24361856 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -1521,12 +1521,16 @@ static int ext3_ordered_writepage(struct page *page,
1521 if (!page_has_buffers(page)) { 1521 if (!page_has_buffers(page)) {
1522 create_empty_buffers(page, inode->i_sb->s_blocksize, 1522 create_empty_buffers(page, inode->i_sb->s_blocksize,
1523 (1 << BH_Dirty)|(1 << BH_Uptodate)); 1523 (1 << BH_Dirty)|(1 << BH_Uptodate));
1524 } else if (!walk_page_buffers(NULL, page_buffers(page), 0, PAGE_CACHE_SIZE, NULL, buffer_unmapped)) { 1524 page_bufs = page_buffers(page);
1525 /* Provide NULL instead of get_block so that we catch bugs if buffers weren't really mapped */ 1525 } else {
1526 return block_write_full_page(page, NULL, wbc); 1526 page_bufs = page_buffers(page);
1527 if (!walk_page_buffers(NULL, page_bufs, 0, PAGE_CACHE_SIZE,
1528 NULL, buffer_unmapped)) {
1529 /* Provide NULL get_block() to catch bugs if buffers
1530 * weren't really mapped */
1531 return block_write_full_page(page, NULL, wbc);
1532 }
1527 } 1533 }
1528 page_bufs = page_buffers(page);
1529
1530 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode)); 1534 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));
1531 1535
1532 if (IS_ERR(handle)) { 1536 if (IS_ERR(handle)) {
@@ -1581,6 +1585,15 @@ static int ext3_writeback_writepage(struct page *page,
1581 if (ext3_journal_current_handle()) 1585 if (ext3_journal_current_handle())
1582 goto out_fail; 1586 goto out_fail;
1583 1587
1588 if (page_has_buffers(page)) {
1589 if (!walk_page_buffers(NULL, page_buffers(page), 0,
1590 PAGE_CACHE_SIZE, NULL, buffer_unmapped)) {
1591 /* Provide NULL get_block() to catch bugs if buffers
1592 * weren't really mapped */
1593 return block_write_full_page(page, NULL, wbc);
1594 }
1595 }
1596
1584 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode)); 1597 handle = ext3_journal_start(inode, ext3_writepage_trans_blocks(inode));
1585 if (IS_ERR(handle)) { 1598 if (IS_ERR(handle)) {
1586 ret = PTR_ERR(handle); 1599 ret = PTR_ERR(handle);
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index ac77d8b8251d..6132353dcf62 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -342,7 +342,7 @@ static int ext4_valid_extent_idx(struct inode *inode,
342 ext4_fsblk_t block = idx_pblock(ext_idx); 342 ext4_fsblk_t block = idx_pblock(ext_idx);
343 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es; 343 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
344 if (unlikely(block < le32_to_cpu(es->s_first_data_block) || 344 if (unlikely(block < le32_to_cpu(es->s_first_data_block) ||
345 (block > ext4_blocks_count(es)))) 345 (block >= ext4_blocks_count(es))))
346 return 0; 346 return 0;
347 else 347 else
348 return 1; 348 return 1;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index a2e7952bc5f9..c6bd6ced3bb7 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -372,16 +372,16 @@ static int ext4_block_to_path(struct inode *inode,
372} 372}
373 373
374static int __ext4_check_blockref(const char *function, struct inode *inode, 374static int __ext4_check_blockref(const char *function, struct inode *inode,
375 unsigned int *p, unsigned int max) { 375 __le32 *p, unsigned int max) {
376 376
377 unsigned int maxblocks = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es); 377 unsigned int maxblocks = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es);
378 unsigned int *bref = p; 378 __le32 *bref = p;
379 while (bref < p+max) { 379 while (bref < p+max) {
380 if (unlikely(*bref >= maxblocks)) { 380 if (unlikely(le32_to_cpu(*bref) >= maxblocks)) {
381 ext4_error(inode->i_sb, function, 381 ext4_error(inode->i_sb, function,
382 "block reference %u >= max (%u) " 382 "block reference %u >= max (%u) "
383 "in inode #%lu, offset=%d", 383 "in inode #%lu, offset=%d",
384 *bref, maxblocks, 384 le32_to_cpu(*bref), maxblocks,
385 inode->i_ino, (int)(bref-p)); 385 inode->i_ino, (int)(bref-p));
386 return -EIO; 386 return -EIO;
387 } 387 }
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 9987bba99db3..2958f4e6f222 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -2508,6 +2508,15 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2508 if (EXT4_BLOCKS_PER_GROUP(sb) == 0) 2508 if (EXT4_BLOCKS_PER_GROUP(sb) == 0)
2509 goto cantfind_ext4; 2509 goto cantfind_ext4;
2510 2510
2511 /* check blocks count against device size */
2512 blocks_count = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits;
2513 if (blocks_count && ext4_blocks_count(es) > blocks_count) {
2514 printk(KERN_WARNING "EXT4-fs: bad geometry: block count %llu "
2515 "exceeds size of device (%llu blocks)\n",
2516 ext4_blocks_count(es), blocks_count);
2517 goto failed_mount;
2518 }
2519
2511 /* 2520 /*
2512 * It makes no sense for the first data block to be beyond the end 2521 * It makes no sense for the first data block to be beyond the end
2513 * of the filesystem. 2522 * of the filesystem.
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
index 12c20377772d..64a72e2e7650 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -135,7 +135,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
135 struct inode *inode = vma->vm_file->f_path.dentry->d_inode; 135 struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
136 dev = inode->i_sb->s_dev; 136 dev = inode->i_sb->s_dev;
137 ino = inode->i_ino; 137 ino = inode->i_ino;
138 pgoff = (loff_t)vma->pg_off << PAGE_SHIFT; 138 pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
139 } 139 }
140 140
141 seq_printf(m, 141 seq_printf(m,
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index a2228511d4be..c34b11022908 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -270,7 +270,6 @@ struct acpi_device {
270 struct list_head children; 270 struct list_head children;
271 struct list_head node; 271 struct list_head node;
272 struct list_head wakeup_list; 272 struct list_head wakeup_list;
273 struct list_head g_list;
274 struct acpi_device_status status; 273 struct acpi_device_status status;
275 struct acpi_device_flags flags; 274 struct acpi_device_flags flags;
276 struct acpi_device_pnp pnp; 275 struct acpi_device_pnp pnp;
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 00f45ff081a6..b0e63c672ebd 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -80,56 +80,4 @@ extern void setup_per_cpu_areas(void);
80#define DECLARE_PER_CPU(type, name) extern PER_CPU_ATTRIBUTES \ 80#define DECLARE_PER_CPU(type, name) extern PER_CPU_ATTRIBUTES \
81 __typeof__(type) per_cpu_var(name) 81 __typeof__(type) per_cpu_var(name)
82 82
83/*
84 * Optional methods for optimized non-lvalue per-cpu variable access.
85 *
86 * @var can be a percpu variable or a field of it and its size should
87 * equal char, int or long. percpu_read() evaluates to a lvalue and
88 * all others to void.
89 *
90 * These operations are guaranteed to be atomic w.r.t. preemption.
91 * The generic versions use plain get/put_cpu_var(). Archs are
92 * encouraged to implement single-instruction alternatives which don't
93 * require preemption protection.
94 */
95#ifndef percpu_read
96# define percpu_read(var) \
97 ({ \
98 typeof(per_cpu_var(var)) __tmp_var__; \
99 __tmp_var__ = get_cpu_var(var); \
100 put_cpu_var(var); \
101 __tmp_var__; \
102 })
103#endif
104
105#define __percpu_generic_to_op(var, val, op) \
106do { \
107 get_cpu_var(var) op val; \
108 put_cpu_var(var); \
109} while (0)
110
111#ifndef percpu_write
112# define percpu_write(var, val) __percpu_generic_to_op(var, (val), =)
113#endif
114
115#ifndef percpu_add
116# define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=)
117#endif
118
119#ifndef percpu_sub
120# define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=)
121#endif
122
123#ifndef percpu_and
124# define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=)
125#endif
126
127#ifndef percpu_or
128# define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=)
129#endif
130
131#ifndef percpu_xor
132# define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=)
133#endif
134
135#endif /* _ASM_GENERIC_PERCPU_H_ */ 83#endif /* _ASM_GENERIC_PERCPU_H_ */
diff --git a/include/asm-mn10300/.gitignore b/include/asm-mn10300/.gitignore
deleted file mode 100644
index 0f87ba790e26..000000000000
--- a/include/asm-mn10300/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
1proc
2unit
diff --git a/include/linux/capability.h b/include/linux/capability.h
index 4864a43b2b45..c3021105edc0 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -377,7 +377,21 @@ struct cpu_vfs_cap_data {
377#define CAP_FOR_EACH_U32(__capi) \ 377#define CAP_FOR_EACH_U32(__capi) \
378 for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi) 378 for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi)
379 379
380/*
381 * CAP_FS_MASK and CAP_NFSD_MASKS:
382 *
383 * The fs mask is all the privileges that fsuid==0 historically meant.
384 * At one time in the past, that included CAP_MKNOD and CAP_LINUX_IMMUTABLE.
385 *
386 * It has never meant setting security.* and trusted.* xattrs.
387 *
388 * We could also define fsmask as follows:
389 * 1. CAP_FS_MASK is the privilege to bypass all fs-related DAC permissions
390 * 2. The security.* and trusted.* xattrs are fs-related MAC permissions
391 */
392
380# define CAP_FS_MASK_B0 (CAP_TO_MASK(CAP_CHOWN) \ 393# define CAP_FS_MASK_B0 (CAP_TO_MASK(CAP_CHOWN) \
394 | CAP_TO_MASK(CAP_MKNOD) \
381 | CAP_TO_MASK(CAP_DAC_OVERRIDE) \ 395 | CAP_TO_MASK(CAP_DAC_OVERRIDE) \
382 | CAP_TO_MASK(CAP_DAC_READ_SEARCH) \ 396 | CAP_TO_MASK(CAP_DAC_READ_SEARCH) \
383 | CAP_TO_MASK(CAP_FOWNER) \ 397 | CAP_TO_MASK(CAP_FOWNER) \
@@ -392,11 +406,12 @@ struct cpu_vfs_cap_data {
392# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }}) 406# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }})
393# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }}) 407# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
394# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }}) 408# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
395# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } }) 409# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
410 | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \
411 CAP_FS_MASK_B1 } })
396# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \ 412# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
397 | CAP_TO_MASK(CAP_SYS_RESOURCE) \ 413 | CAP_TO_MASK(CAP_SYS_RESOURCE), \
398 | CAP_TO_MASK(CAP_MKNOD), \ 414 CAP_FS_MASK_B1 } })
399 CAP_FS_MASK_B1 } })
400 415
401#endif /* _KERNEL_CAPABILITY_U32S != 2 */ 416#endif /* _KERNEL_CAPABILITY_U32S != 2 */
402 417
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h
index 096476f1fb35..493dedb7a67b 100644
--- a/include/linux/debug_locks.h
+++ b/include/linux/debug_locks.h
@@ -2,12 +2,19 @@
2#define __LINUX_DEBUG_LOCKING_H 2#define __LINUX_DEBUG_LOCKING_H
3 3
4#include <linux/kernel.h> 4#include <linux/kernel.h>
5#include <asm/atomic.h>
5 6
6struct task_struct; 7struct task_struct;
7 8
8extern int debug_locks; 9extern int debug_locks;
9extern int debug_locks_silent; 10extern int debug_locks_silent;
10 11
12
13static inline int __debug_locks_off(void)
14{
15 return xchg(&debug_locks, 0);
16}
17
11/* 18/*
12 * Generic 'turn off all lock debugging' function: 19 * Generic 'turn off all lock debugging' function:
13 */ 20 */
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index 66ec05a57955..ded2d7c42668 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -116,7 +116,6 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d);
116/* 116/*
117 * Target features 117 * Target features
118 */ 118 */
119#define DM_TARGET_SUPPORTS_BARRIERS 0x00000001
120 119
121struct target_type { 120struct target_type {
122 uint64_t features; 121 uint64_t features;
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index da5405dce347..8a0c2f221e6b 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -357,7 +357,7 @@ struct ftrace_graph_ret {
357#ifdef CONFIG_FUNCTION_GRAPH_TRACER 357#ifdef CONFIG_FUNCTION_GRAPH_TRACER
358 358
359/* for init task */ 359/* for init task */
360#define INIT_FTRACE_GRAPH .ret_stack = NULL 360#define INIT_FTRACE_GRAPH .ret_stack = NULL,
361 361
362/* 362/*
363 * Stack of return addresses for functions 363 * Stack of return addresses for functions
@@ -511,33 +511,4 @@ static inline void trace_hw_branch_oops(void) {}
511 511
512#endif /* CONFIG_HW_BRANCH_TRACER */ 512#endif /* CONFIG_HW_BRANCH_TRACER */
513 513
514/*
515 * A syscall entry in the ftrace syscalls array.
516 *
517 * @name: name of the syscall
518 * @nb_args: number of parameters it takes
519 * @types: list of types as strings
520 * @args: list of args as strings (args[i] matches types[i])
521 */
522struct syscall_metadata {
523 const char *name;
524 int nb_args;
525 const char **types;
526 const char **args;
527};
528
529#ifdef CONFIG_FTRACE_SYSCALLS
530extern void arch_init_ftrace_syscalls(void);
531extern struct syscall_metadata *syscall_nr_to_meta(int nr);
532extern void start_ftrace_syscalls(void);
533extern void stop_ftrace_syscalls(void);
534extern void ftrace_syscall_enter(struct pt_regs *regs);
535extern void ftrace_syscall_exit(struct pt_regs *regs);
536#else
537static inline void start_ftrace_syscalls(void) { }
538static inline void stop_ftrace_syscalls(void) { }
539static inline void ftrace_syscall_enter(struct pt_regs *regs) { }
540static inline void ftrace_syscall_exit(struct pt_regs *regs) { }
541#endif
542
543#endif /* _LINUX_FTRACE_H */ 514#endif /* _LINUX_FTRACE_H */
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 00ee11eb9092..ad2580596033 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -274,7 +274,7 @@ struct i2c_board_info {
274 * are provided using conventional syntax. 274 * are provided using conventional syntax.
275 */ 275 */
276#define I2C_BOARD_INFO(dev_type, dev_addr) \ 276#define I2C_BOARD_INFO(dev_type, dev_addr) \
277 .type = (dev_type), .addr = (dev_addr) 277 .type = dev_type, .addr = (dev_addr)
278 278
279 279
280/* Add-on boards should register/unregister their devices; e.g. a board 280/* Add-on boards should register/unregister their devices; e.g. a board
diff --git a/include/linux/ide.h b/include/linux/ide.h
index a5d26f66ef78..ff65fffb078f 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -240,65 +240,38 @@ typedef enum {
240} ide_startstop_t; 240} ide_startstop_t;
241 241
242enum { 242enum {
243 IDE_VALID_ERROR = (1 << 1),
244 IDE_VALID_FEATURE = IDE_VALID_ERROR,
245 IDE_VALID_NSECT = (1 << 2),
246 IDE_VALID_LBAL = (1 << 3),
247 IDE_VALID_LBAM = (1 << 4),
248 IDE_VALID_LBAH = (1 << 5),
249 IDE_VALID_DEVICE = (1 << 6),
250 IDE_VALID_LBA = IDE_VALID_LBAL |
251 IDE_VALID_LBAM |
252 IDE_VALID_LBAH,
253 IDE_VALID_OUT_TF = IDE_VALID_FEATURE |
254 IDE_VALID_NSECT |
255 IDE_VALID_LBA,
256 IDE_VALID_IN_TF = IDE_VALID_NSECT |
257 IDE_VALID_LBA,
258 IDE_VALID_OUT_HOB = IDE_VALID_OUT_TF,
259 IDE_VALID_IN_HOB = IDE_VALID_ERROR |
260 IDE_VALID_NSECT |
261 IDE_VALID_LBA,
262};
263
264enum {
243 IDE_TFLAG_LBA48 = (1 << 0), 265 IDE_TFLAG_LBA48 = (1 << 0),
244 IDE_TFLAG_OUT_HOB_FEATURE = (1 << 1), 266 IDE_TFLAG_WRITE = (1 << 1),
245 IDE_TFLAG_OUT_HOB_NSECT = (1 << 2), 267 IDE_TFLAG_CUSTOM_HANDLER = (1 << 2),
246 IDE_TFLAG_OUT_HOB_LBAL = (1 << 3), 268 IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 3),
247 IDE_TFLAG_OUT_HOB_LBAM = (1 << 4),
248 IDE_TFLAG_OUT_HOB_LBAH = (1 << 5),
249 IDE_TFLAG_OUT_HOB = IDE_TFLAG_OUT_HOB_FEATURE |
250 IDE_TFLAG_OUT_HOB_NSECT |
251 IDE_TFLAG_OUT_HOB_LBAL |
252 IDE_TFLAG_OUT_HOB_LBAM |
253 IDE_TFLAG_OUT_HOB_LBAH,
254 IDE_TFLAG_OUT_FEATURE = (1 << 6),
255 IDE_TFLAG_OUT_NSECT = (1 << 7),
256 IDE_TFLAG_OUT_LBAL = (1 << 8),
257 IDE_TFLAG_OUT_LBAM = (1 << 9),
258 IDE_TFLAG_OUT_LBAH = (1 << 10),
259 IDE_TFLAG_OUT_TF = IDE_TFLAG_OUT_FEATURE |
260 IDE_TFLAG_OUT_NSECT |
261 IDE_TFLAG_OUT_LBAL |
262 IDE_TFLAG_OUT_LBAM |
263 IDE_TFLAG_OUT_LBAH,
264 IDE_TFLAG_OUT_DEVICE = (1 << 11),
265 IDE_TFLAG_WRITE = (1 << 12),
266 IDE_TFLAG_CUSTOM_HANDLER = (1 << 13),
267 IDE_TFLAG_DMA_PIO_FALLBACK = (1 << 14),
268 IDE_TFLAG_IN_HOB_ERROR = (1 << 15),
269 IDE_TFLAG_IN_HOB_NSECT = (1 << 16),
270 IDE_TFLAG_IN_HOB_LBAL = (1 << 17),
271 IDE_TFLAG_IN_HOB_LBAM = (1 << 18),
272 IDE_TFLAG_IN_HOB_LBAH = (1 << 19),
273 IDE_TFLAG_IN_HOB_LBA = IDE_TFLAG_IN_HOB_LBAL |
274 IDE_TFLAG_IN_HOB_LBAM |
275 IDE_TFLAG_IN_HOB_LBAH,
276 IDE_TFLAG_IN_HOB = IDE_TFLAG_IN_HOB_ERROR |
277 IDE_TFLAG_IN_HOB_NSECT |
278 IDE_TFLAG_IN_HOB_LBA,
279 IDE_TFLAG_IN_ERROR = (1 << 20),
280 IDE_TFLAG_IN_NSECT = (1 << 21),
281 IDE_TFLAG_IN_LBAL = (1 << 22),
282 IDE_TFLAG_IN_LBAM = (1 << 23),
283 IDE_TFLAG_IN_LBAH = (1 << 24),
284 IDE_TFLAG_IN_LBA = IDE_TFLAG_IN_LBAL |
285 IDE_TFLAG_IN_LBAM |
286 IDE_TFLAG_IN_LBAH,
287 IDE_TFLAG_IN_TF = IDE_TFLAG_IN_NSECT |
288 IDE_TFLAG_IN_LBA,
289 IDE_TFLAG_IN_DEVICE = (1 << 25),
290 IDE_TFLAG_HOB = IDE_TFLAG_OUT_HOB |
291 IDE_TFLAG_IN_HOB,
292 IDE_TFLAG_TF = IDE_TFLAG_OUT_TF |
293 IDE_TFLAG_IN_TF,
294 IDE_TFLAG_DEVICE = IDE_TFLAG_OUT_DEVICE |
295 IDE_TFLAG_IN_DEVICE,
296 /* force 16-bit I/O operations */ 269 /* force 16-bit I/O operations */
297 IDE_TFLAG_IO_16BIT = (1 << 26), 270 IDE_TFLAG_IO_16BIT = (1 << 4),
298 /* struct ide_cmd was allocated using kmalloc() */ 271 /* struct ide_cmd was allocated using kmalloc() */
299 IDE_TFLAG_DYN = (1 << 27), 272 IDE_TFLAG_DYN = (1 << 5),
300 IDE_TFLAG_FS = (1 << 28), 273 IDE_TFLAG_FS = (1 << 6),
301 IDE_TFLAG_MULTI_PIO = (1 << 29), 274 IDE_TFLAG_MULTI_PIO = (1 << 7),
302}; 275};
303 276
304enum { 277enum {
@@ -309,45 +282,34 @@ enum {
309}; 282};
310 283
311struct ide_taskfile { 284struct ide_taskfile {
312 u8 hob_data; /* 0: high data byte (for TASKFILE IOCTL) */ 285 u8 data; /* 0: data byte (for TASKFILE ioctl) */
313 /* 1-5: additional data to support LBA48 */ 286 union { /* 1: */
314 union { 287 u8 error; /* read: error */
315 u8 hob_error; /* read: error */ 288 u8 feature; /* write: feature */
316 u8 hob_feature; /* write: feature */
317 };
318
319 u8 hob_nsect;
320 u8 hob_lbal;
321 u8 hob_lbam;
322 u8 hob_lbah;
323
324 u8 data; /* 6: low data byte (for TASKFILE IOCTL) */
325
326 union { /*  7: */
327 u8 error; /* read: error */
328 u8 feature; /* write: feature */
329 }; 289 };
330 290 u8 nsect; /* 2: number of sectors */
331 u8 nsect; /* 8: number of sectors */ 291 u8 lbal; /* 3: LBA low */
332 u8 lbal; /* 9: LBA low */ 292 u8 lbam; /* 4: LBA mid */
333 u8 lbam; /* 10: LBA mid */ 293 u8 lbah; /* 5: LBA high */
334 u8 lbah; /* 11: LBA high */ 294 u8 device; /* 6: device select */
335 295 union { /* 7: */
336 u8 device; /* 12: device select */ 296 u8 status; /* read: status */
337
338 union { /* 13: */
339 u8 status; /*  read: status  */
340 u8 command; /* write: command */ 297 u8 command; /* write: command */
341 }; 298 };
342}; 299};
343 300
344struct ide_cmd { 301struct ide_cmd {
345 union { 302 struct ide_taskfile tf;
346 struct ide_taskfile tf; 303 struct ide_taskfile hob;
347 u8 tf_array[14]; 304 struct {
348 }; 305 struct {
306 u8 tf;
307 u8 hob;
308 } out, in;
309 } valid;
310
311 u8 tf_flags;
349 u8 ftf_flags; /* for TASKFILE ioctl */ 312 u8 ftf_flags; /* for TASKFILE ioctl */
350 u32 tf_flags;
351 int protocol; 313 int protocol;
352 314
353 int sg_nents; /* number of sg entries */ 315 int sg_nents; /* number of sg entries */
@@ -662,8 +624,8 @@ struct ide_tp_ops {
662 void (*write_devctl)(struct hwif_s *, u8); 624 void (*write_devctl)(struct hwif_s *, u8);
663 625
664 void (*dev_select)(ide_drive_t *); 626 void (*dev_select)(ide_drive_t *);
665 void (*tf_load)(ide_drive_t *, struct ide_cmd *); 627 void (*tf_load)(ide_drive_t *, struct ide_taskfile *, u8);
666 void (*tf_read)(ide_drive_t *, struct ide_cmd *); 628 void (*tf_read)(ide_drive_t *, struct ide_taskfile *, u8);
667 629
668 void (*input_data)(ide_drive_t *, struct ide_cmd *, 630 void (*input_data)(ide_drive_t *, struct ide_cmd *,
669 void *, unsigned int); 631 void *, unsigned int);
@@ -1162,7 +1124,8 @@ extern int ide_devset_execute(ide_drive_t *drive,
1162void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8); 1124void ide_complete_cmd(ide_drive_t *, struct ide_cmd *, u8, u8);
1163int ide_complete_rq(ide_drive_t *, int, unsigned int); 1125int ide_complete_rq(ide_drive_t *, int, unsigned int);
1164 1126
1165void ide_tf_dump(const char *, struct ide_taskfile *); 1127void ide_tf_readback(ide_drive_t *drive, struct ide_cmd *cmd);
1128void ide_tf_dump(const char *, struct ide_cmd *);
1166 1129
1167void ide_exec_command(ide_hwif_t *, u8); 1130void ide_exec_command(ide_hwif_t *, u8);
1168u8 ide_read_status(ide_hwif_t *); 1131u8 ide_read_status(ide_hwif_t *);
@@ -1170,8 +1133,8 @@ u8 ide_read_altstatus(ide_hwif_t *);
1170void ide_write_devctl(ide_hwif_t *, u8); 1133void ide_write_devctl(ide_hwif_t *, u8);
1171 1134
1172void ide_dev_select(ide_drive_t *); 1135void ide_dev_select(ide_drive_t *);
1173void ide_tf_load(ide_drive_t *, struct ide_cmd *); 1136void ide_tf_load(ide_drive_t *, struct ide_taskfile *, u8);
1174void ide_tf_read(ide_drive_t *, struct ide_cmd *); 1137void ide_tf_read(ide_drive_t *, struct ide_taskfile *, u8);
1175 1138
1176void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); 1139void ide_input_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
1177void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int); 1140void ide_output_data(ide_drive_t *, struct ide_cmd *, void *, unsigned int);
@@ -1529,7 +1492,7 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
1529 1492
1530extern void ide_toggle_bounce(ide_drive_t *drive, int on); 1493extern void ide_toggle_bounce(ide_drive_t *drive, int on);
1531 1494
1532u64 ide_get_lba_addr(struct ide_taskfile *, int); 1495u64 ide_get_lba_addr(struct ide_cmd *, int);
1533u8 ide_dump_status(ide_drive_t *, const char *, u8); 1496u8 ide_dump_status(ide_drive_t *, const char *, u8);
1534 1497
1535struct ide_timing { 1498struct ide_timing {
diff --git a/include/linux/irq.h b/include/linux/irq.h
index ca507c9426b0..b7cbeed972e4 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -487,6 +487,16 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc,
487#endif 487#endif
488} 488}
489 489
490static inline void free_desc_masks(struct irq_desc *old_desc,
491 struct irq_desc *new_desc)
492{
493 free_cpumask_var(old_desc->affinity);
494
495#ifdef CONFIG_GENERIC_PENDING_IRQ
496 free_cpumask_var(old_desc->pending_mask);
497#endif
498}
499
490#else /* !CONFIG_SMP */ 500#else /* !CONFIG_SMP */
491 501
492static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, 502static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
@@ -500,6 +510,10 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc,
500{ 510{
501} 511}
502 512
513static inline void free_desc_masks(struct irq_desc *old_desc,
514 struct irq_desc *new_desc)
515{
516}
503#endif /* CONFIG_SMP */ 517#endif /* CONFIG_SMP */
504 518
505#endif /* _LINUX_IRQ_H */ 519#endif /* _LINUX_IRQ_H */
diff --git a/include/linux/kmod.h b/include/linux/kmod.h
index d5fa565086d1..384ca8bbf1ac 100644
--- a/include/linux/kmod.h
+++ b/include/linux/kmod.h
@@ -34,7 +34,7 @@ extern int __request_module(bool wait, const char *name, ...) \
34#define request_module(mod...) __request_module(true, mod) 34#define request_module(mod...) __request_module(true, mod)
35#define request_module_nowait(mod...) __request_module(false, mod) 35#define request_module_nowait(mod...) __request_module(false, mod)
36#define try_then_request_module(x, mod...) \ 36#define try_then_request_module(x, mod...) \
37 ((x) ?: (__request_module(false, mod), (x))) 37 ((x) ?: (__request_module(true, mod), (x)))
38#else 38#else
39static inline int request_module(const char *name, ...) { return -ENOSYS; } 39static inline int request_module(const char *name, ...) { return -ENOSYS; }
40static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; } 40static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; }
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h
index 4455b212d75a..c8f51c3c0a72 100644
--- a/include/linux/mfd/pcf50633/core.h
+++ b/include/linux/mfd/pcf50633/core.h
@@ -29,6 +29,8 @@ struct pcf50633_platform_data {
29 char **batteries; 29 char **batteries;
30 int num_batteries; 30 int num_batteries;
31 31
32 int charging_restart_interval;
33
32 /* Callbacks */ 34 /* Callbacks */
33 void (*probe_done)(struct pcf50633 *); 35 void (*probe_done)(struct pcf50633 *);
34 void (*mbc_event_callback)(struct pcf50633 *, int); 36 void (*mbc_event_callback)(struct pcf50633 *, int);
diff --git a/include/linux/mfd/pcf50633/mbc.h b/include/linux/mfd/pcf50633/mbc.h
index 6e17619b773a..4119579acf2c 100644
--- a/include/linux/mfd/pcf50633/mbc.h
+++ b/include/linux/mfd/pcf50633/mbc.h
@@ -128,7 +128,6 @@ enum pcf50633_reg_mbcs3 {
128int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma); 128int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma);
129 129
130int pcf50633_mbc_get_status(struct pcf50633 *); 130int pcf50633_mbc_get_status(struct pcf50633 *);
131void pcf50633_mbc_set_status(struct pcf50633 *, int what, int status);
132 131
133#endif 132#endif
134 133
diff --git a/include/linux/pda_power.h b/include/linux/pda_power.h
index cb7d10f30763..d4cf7a2ceb3e 100644
--- a/include/linux/pda_power.h
+++ b/include/linux/pda_power.h
@@ -31,6 +31,8 @@ struct pda_power_pdata {
31 unsigned int wait_for_status; /* msecs, default is 500 */ 31 unsigned int wait_for_status; /* msecs, default is 500 */
32 unsigned int wait_for_charger; /* msecs, default is 500 */ 32 unsigned int wait_for_charger; /* msecs, default is 500 */
33 unsigned int polling_interval; /* msecs, default is 2000 */ 33 unsigned int polling_interval; /* msecs, default is 2000 */
34
35 unsigned long ac_max_uA; /* current to draw when on AC */
34}; 36};
35 37
36#endif /* __PDA_POWER_H__ */ 38#endif /* __PDA_POWER_H__ */
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index ee5615d65211..cfda2d5ad319 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -168,4 +168,56 @@ static inline void free_percpu(void *p)
168#define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ 168#define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \
169 __alignof__(type)) 169 __alignof__(type))
170 170
171/*
172 * Optional methods for optimized non-lvalue per-cpu variable access.
173 *
174 * @var can be a percpu variable or a field of it and its size should
175 * equal char, int or long. percpu_read() evaluates to a lvalue and
176 * all others to void.
177 *
178 * These operations are guaranteed to be atomic w.r.t. preemption.
179 * The generic versions use plain get/put_cpu_var(). Archs are
180 * encouraged to implement single-instruction alternatives which don't
181 * require preemption protection.
182 */
183#ifndef percpu_read
184# define percpu_read(var) \
185 ({ \
186 typeof(per_cpu_var(var)) __tmp_var__; \
187 __tmp_var__ = get_cpu_var(var); \
188 put_cpu_var(var); \
189 __tmp_var__; \
190 })
191#endif
192
193#define __percpu_generic_to_op(var, val, op) \
194do { \
195 get_cpu_var(var) op val; \
196 put_cpu_var(var); \
197} while (0)
198
199#ifndef percpu_write
200# define percpu_write(var, val) __percpu_generic_to_op(var, (val), =)
201#endif
202
203#ifndef percpu_add
204# define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=)
205#endif
206
207#ifndef percpu_sub
208# define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=)
209#endif
210
211#ifndef percpu_and
212# define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=)
213#endif
214
215#ifndef percpu_or
216# define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=)
217#endif
218
219#ifndef percpu_xor
220# define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=)
221#endif
222
171#endif /* __LINUX_PERCPU_H */ 223#endif /* __LINUX_PERCPU_H */
diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
new file mode 100644
index 000000000000..12d63a30c347
--- /dev/null
+++ b/include/linux/rotary_encoder.h
@@ -0,0 +1,13 @@
1#ifndef __ROTARY_ENCODER_H__
2#define __ROTARY_ENCODER_H__
3
4struct rotary_encoder_platform_data {
5 unsigned int steps;
6 unsigned int axis;
7 unsigned int gpio_a;
8 unsigned int gpio_b;
9 unsigned int inverted_a;
10 unsigned int inverted_b;
11};
12
13#endif /* __ROTARY_ENCODER_H__ */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 98e1fe51601d..b4c38bc8049c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -205,7 +205,8 @@ extern unsigned long long time_sync_thresh;
205#define task_is_stopped_or_traced(task) \ 205#define task_is_stopped_or_traced(task) \
206 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) 206 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
207#define task_contributes_to_load(task) \ 207#define task_contributes_to_load(task) \
208 ((task->state & TASK_UNINTERRUPTIBLE) != 0) 208 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
209 (task->flags & PF_FROZEN) == 0)
209 210
210#define __set_task_state(tsk, state_value) \ 211#define __set_task_state(tsk, state_value) \
211 do { (tsk)->state = (state_value); } while (0) 212 do { (tsk)->state = (state_value); } while (0)
diff --git a/include/linux/serial_max3100.h b/include/linux/serial_max3100.h
new file mode 100644
index 000000000000..4976befb6aeb
--- /dev/null
+++ b/include/linux/serial_max3100.h
@@ -0,0 +1,52 @@
1/*
2 *
3 * Copyright (C) 2007 Christian Pellegrin
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 */
10
11
12#ifndef _LINUX_SERIAL_MAX3100_H
13#define _LINUX_SERIAL_MAX3100_H 1
14
15
16/**
17 * struct plat_max3100 - MAX3100 SPI UART platform data
18 * @loopback: force MAX3100 in loopback
19 * @crystal: 1 for 3.6864 Mhz, 0 for 1.8432
20 * @max3100_hw_suspend: MAX3100 has a shutdown pin. This is a hook
21 * called on suspend and resume to activate it.
22 * @poll_time: poll time for CTS signal in ms, 0 disables (so no hw
23 * flow ctrl is possible but you have less CPU usage)
24 *
25 * You should use this structure in your machine description to specify
26 * how the MAX3100 is connected. Example:
27 *
28 * static struct plat_max3100 max3100_plat_data = {
29 * .loopback = 0,
30 * .crystal = 0,
31 * .poll_time = 100,
32 * };
33 *
34 * static struct spi_board_info spi_board_info[] = {
35 * {
36 * .modalias = "max3100",
37 * .platform_data = &max3100_plat_data,
38 * .irq = IRQ_EINT12,
39 * .max_speed_hz = 5*1000*1000,
40 * .chip_select = 0,
41 * },
42 * };
43 *
44 **/
45struct plat_max3100 {
46 int loopback;
47 int crystal;
48 void (*max3100_hw_suspend) (int suspend);
49 int poll_time;
50};
51
52#endif
diff --git a/include/linux/spi/ad7879.h b/include/linux/spi/ad7879.h
new file mode 100644
index 000000000000..4231104c9afa
--- /dev/null
+++ b/include/linux/spi/ad7879.h
@@ -0,0 +1,35 @@
1/* linux/spi/ad7879.h */
2
3/* Touchscreen characteristics vary between boards and models. The
4 * platform_data for the device's "struct device" holds this information.
5 *
6 * It's OK if the min/max values are zero.
7 */
8struct ad7879_platform_data {
9 u16 model; /* 7879 */
10 u16 x_plate_ohms;
11 u16 x_min, x_max;
12 u16 y_min, y_max;
13 u16 pressure_min, pressure_max;
14
15 /* [0..255] 0=OFF Starts at 1=550us and goes
16 * all the way to 9.440ms in steps of 35us.
17 */
18 u8 pen_down_acc_interval;
19 /* [0..15] Starts at 0=128us and goes all the
20 * way to 4.096ms in steps of 128us.
21 */
22 u8 first_conversion_delay;
23 /* [0..3] 0 = 2us, 1 = 4us, 2 = 8us, 3 = 16us */
24 u8 acquisition_time;
25 /* [0..3] Average X middle samples 0 = 2, 1 = 4, 2 = 8, 3 = 16 */
26 u8 averaging;
27 /* [0..3] Perform X measurements 0 = OFF,
28 * 1 = 4, 2 = 8, 3 = 16 (median > averaging)
29 */
30 u8 median;
31 /* 1 = AUX/VBAT/GPIO set to GPIO Output */
32 u8 gpio_output;
33 /* Initial GPIO pin state (valid if gpio_output = 1) */
34 u8 gpio_default;
35};
diff --git a/include/linux/stringify.h b/include/linux/stringify.h
index 0b4388356c87..841cec8ed525 100644
--- a/include/linux/stringify.h
+++ b/include/linux/stringify.h
@@ -6,7 +6,7 @@
6 * converts to "bar". 6 * converts to "bar".
7 */ 7 */
8 8
9#define __stringify_1(x) #x 9#define __stringify_1(x...) #x
10#define __stringify(x) __stringify_1(x) 10#define __stringify(x...) __stringify_1(x)
11 11
12#endif /* !__LINUX_STRINGIFY_H */ 12#endif /* !__LINUX_STRINGIFY_H */
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 6470f74074af..dabe4ad89141 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -65,7 +65,7 @@ struct old_linux_dirent;
65#include <asm/signal.h> 65#include <asm/signal.h>
66#include <linux/quota.h> 66#include <linux/quota.h>
67#include <linux/key.h> 67#include <linux/key.h>
68#include <linux/ftrace.h> 68#include <trace/syscall.h>
69 69
70#define __SC_DECL1(t1, a1) t1 a1 70#define __SC_DECL1(t1, a1) t1 a1
71#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__) 71#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
diff --git a/include/scsi/scsi_scan.h b/include/scsi/scsi_scan.h
new file mode 100644
index 000000000000..78898889243d
--- /dev/null
+++ b/include/scsi/scsi_scan.h
@@ -0,0 +1,11 @@
1#ifndef _SCSI_SCSI_SCAN_H
2#define _SCSI_SCSI_SCAN_H
3
4#ifdef CONFIG_SCSI
5/* drivers/scsi/scsi_scan.c */
6extern int scsi_complete_async_scans(void);
7#else
8static inline int scsi_complete_async_scans(void) { return 0; }
9#endif
10
11#endif /* _SCSI_SCSI_SCAN_H */
diff --git a/include/trace/syscall.h b/include/trace/syscall.h
new file mode 100644
index 000000000000..8cfe515cbc47
--- /dev/null
+++ b/include/trace/syscall.h
@@ -0,0 +1,35 @@
1#ifndef _TRACE_SYSCALL_H
2#define _TRACE_SYSCALL_H
3
4#include <asm/ptrace.h>
5
6/*
7 * A syscall entry in the ftrace syscalls array.
8 *
9 * @name: name of the syscall
10 * @nb_args: number of parameters it takes
11 * @types: list of types as strings
12 * @args: list of args as strings (args[i] matches types[i])
13 */
14struct syscall_metadata {
15 const char *name;
16 int nb_args;
17 const char **types;
18 const char **args;
19};
20
21#ifdef CONFIG_FTRACE_SYSCALLS
22extern void arch_init_ftrace_syscalls(void);
23extern struct syscall_metadata *syscall_nr_to_meta(int nr);
24extern void start_ftrace_syscalls(void);
25extern void stop_ftrace_syscalls(void);
26extern void ftrace_syscall_enter(struct pt_regs *regs);
27extern void ftrace_syscall_exit(struct pt_regs *regs);
28#else
29static inline void start_ftrace_syscalls(void) { }
30static inline void stop_ftrace_syscalls(void) { }
31static inline void ftrace_syscall_enter(struct pt_regs *regs) { }
32static inline void ftrace_syscall_exit(struct pt_regs *regs) { }
33#endif
34
35#endif /* _TRACE_SYSCALL_H */
diff --git a/init/Kconfig b/init/Kconfig
index f2f9b5362b48..7be4d3836745 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -808,6 +808,14 @@ config KALLSYMS_EXTRA_PASS
808 you wait for kallsyms to be fixed. 808 you wait for kallsyms to be fixed.
809 809
810 810
811config STRIP_ASM_SYMS
812 bool "Strip assembler-generated symbols during link"
813 default n
814 help
815 Strip internal assembler-generated symbols during a link (symbols
816 that look like '.Lxxx') so they don't pollute the output of
817 get_wchan() and suchlike.
818
811config HOTPLUG 819config HOTPLUG
812 bool "Support for hot-pluggable devices" if EMBEDDED 820 bool "Support for hot-pluggable devices" if EMBEDDED
813 default y 821 default y
diff --git a/kernel/fork.c b/kernel/fork.c
index 989c7c202b3d..b9e2edd00726 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -800,6 +800,12 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig)
800 sig->cputime_expires.virt_exp = cputime_zero; 800 sig->cputime_expires.virt_exp = cputime_zero;
801 sig->cputime_expires.sched_exp = 0; 801 sig->cputime_expires.sched_exp = 0;
802 802
803 if (sig->rlim[RLIMIT_CPU].rlim_cur != RLIM_INFINITY) {
804 sig->cputime_expires.prof_exp =
805 secs_to_cputime(sig->rlim[RLIMIT_CPU].rlim_cur);
806 sig->cputimer.running = 1;
807 }
808
803 /* The timer lists. */ 809 /* The timer lists. */
804 INIT_LIST_HEAD(&sig->cpu_timers[0]); 810 INIT_LIST_HEAD(&sig->cpu_timers[0]);
805 INIT_LIST_HEAD(&sig->cpu_timers[1]); 811 INIT_LIST_HEAD(&sig->cpu_timers[1]);
@@ -815,11 +821,8 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
815 atomic_inc(&current->signal->live); 821 atomic_inc(&current->signal->live);
816 return 0; 822 return 0;
817 } 823 }
818 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
819
820 if (sig)
821 posix_cpu_timers_init_group(sig);
822 824
825 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
823 tsk->signal = sig; 826 tsk->signal = sig;
824 if (!sig) 827 if (!sig)
825 return -ENOMEM; 828 return -ENOMEM;
@@ -859,6 +862,8 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
859 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); 862 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
860 task_unlock(current->group_leader); 863 task_unlock(current->group_leader);
861 864
865 posix_cpu_timers_init_group(sig);
866
862 acct_init_pacct(&sig->pacct); 867 acct_init_pacct(&sig->pacct);
863 868
864 tty_audit_fork(sig); 869 tty_audit_fork(sig);
diff --git a/kernel/futex.c b/kernel/futex.c
index 6b50a024bca2..eef8cd26b5e5 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -883,7 +883,12 @@ retry_private:
883out_unlock: 883out_unlock:
884 double_unlock_hb(hb1, hb2); 884 double_unlock_hb(hb1, hb2);
885 885
886 /* drop_futex_key_refs() must be called outside the spinlocks. */ 886 /*
887 * drop_futex_key_refs() must be called outside the spinlocks. During
888 * the requeue we moved futex_q's from the hash bucket at key1 to the
889 * one at key2 and updated their key pointer. We no longer need to
890 * hold the references to key1.
891 */
887 while (--drop_count >= 0) 892 while (--drop_count >= 0)
888 drop_futex_key_refs(&key1); 893 drop_futex_key_refs(&key1);
889 894
diff --git a/kernel/irq/numa_migrate.c b/kernel/irq/numa_migrate.c
index 243d6121e50e..44bbdcbaf8d2 100644
--- a/kernel/irq/numa_migrate.c
+++ b/kernel/irq/numa_migrate.c
@@ -54,6 +54,7 @@ static bool init_copy_one_irq_desc(int irq, struct irq_desc *old_desc,
54static void free_one_irq_desc(struct irq_desc *old_desc, struct irq_desc *desc) 54static void free_one_irq_desc(struct irq_desc *old_desc, struct irq_desc *desc)
55{ 55{
56 free_kstat_irqs(old_desc, desc); 56 free_kstat_irqs(old_desc, desc);
57 free_desc_masks(old_desc, desc);
57 arch_free_chip_data(old_desc, desc); 58 arch_free_chip_data(old_desc, desc);
58} 59}
59 60
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 84bbadd4d021..4ebaf8519abf 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -76,6 +76,7 @@ static int kthread(void *_create)
76 76
77 /* OK, tell user we're spawned, wait for stop or wakeup */ 77 /* OK, tell user we're spawned, wait for stop or wakeup */
78 __set_current_state(TASK_UNINTERRUPTIBLE); 78 __set_current_state(TASK_UNINTERRUPTIBLE);
79 create->result = current;
79 complete(&create->started); 80 complete(&create->started);
80 schedule(); 81 schedule();
81 82
@@ -96,22 +97,10 @@ static void create_kthread(struct kthread_create_info *create)
96 97
97 /* We want our own signal handler (we take no signals by default). */ 98 /* We want our own signal handler (we take no signals by default). */
98 pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); 99 pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD);
99 if (pid < 0) { 100 if (pid < 0)
100 create->result = ERR_PTR(pid); 101 create->result = ERR_PTR(pid);
101 } else { 102 else
102 struct sched_param param = { .sched_priority = 0 };
103 wait_for_completion(&create->started); 103 wait_for_completion(&create->started);
104 read_lock(&tasklist_lock);
105 create->result = find_task_by_pid_ns(pid, &init_pid_ns);
106 read_unlock(&tasklist_lock);
107 /*
108 * root may have changed our (kthreadd's) priority or CPU mask.
109 * The kernel thread should not inherit these properties.
110 */
111 sched_setscheduler(create->result, SCHED_NORMAL, &param);
112 set_user_nice(create->result, KTHREAD_NICE_LEVEL);
113 set_cpus_allowed_ptr(create->result, cpu_all_mask);
114 }
115 complete(&create->done); 104 complete(&create->done);
116} 105}
117 106
@@ -154,11 +143,20 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
154 wait_for_completion(&create.done); 143 wait_for_completion(&create.done);
155 144
156 if (!IS_ERR(create.result)) { 145 if (!IS_ERR(create.result)) {
146 struct sched_param param = { .sched_priority = 0 };
157 va_list args; 147 va_list args;
148
158 va_start(args, namefmt); 149 va_start(args, namefmt);
159 vsnprintf(create.result->comm, sizeof(create.result->comm), 150 vsnprintf(create.result->comm, sizeof(create.result->comm),
160 namefmt, args); 151 namefmt, args);
161 va_end(args); 152 va_end(args);
153 /*
154 * root may have changed our (kthreadd's) priority or CPU mask.
155 * The kernel thread should not inherit these properties.
156 */
157 sched_setscheduler_nocheck(create.result, SCHED_NORMAL, &param);
158 set_user_nice(create.result, KTHREAD_NICE_LEVEL);
159 set_cpus_allowed_ptr(create.result, cpu_all_mask);
162 } 160 }
163 return create.result; 161 return create.result;
164} 162}
diff --git a/kernel/module.c b/kernel/module.c
index 05f014efa32c..e797812a4d95 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2388,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
2388 blocking_notifier_call_chain(&module_notify_list, 2388 blocking_notifier_call_chain(&module_notify_list,
2389 MODULE_STATE_LIVE, mod); 2389 MODULE_STATE_LIVE, mod);
2390 2390
2391 /* We need to finish all async code before the module init sequence is done */
2392 async_synchronize_full();
2393
2391 mutex_lock(&module_mutex); 2394 mutex_lock(&module_mutex);
2392 /* Drop initial reference. */ 2395 /* Drop initial reference. */
2393 module_put(mod); 2396 module_put(mod);
diff --git a/kernel/mutex.c b/kernel/mutex.c
index 5d79781394a3..507cf2b5e9f1 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -148,7 +148,8 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
148 148
149 preempt_disable(); 149 preempt_disable();
150 mutex_acquire(&lock->dep_map, subclass, 0, ip); 150 mutex_acquire(&lock->dep_map, subclass, 0, ip);
151#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) 151#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES) && \
152 !defined(CONFIG_HAVE_DEFAULT_NO_SPIN_MUTEXES)
152 /* 153 /*
153 * Optimistic spinning. 154 * Optimistic spinning.
154 * 155 *
diff --git a/kernel/panic.c b/kernel/panic.c
index 3fd8c5bf8b39..934fb377f4b3 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -213,8 +213,16 @@ unsigned long get_taint(void)
213 213
214void add_taint(unsigned flag) 214void add_taint(unsigned flag)
215{ 215{
216 /* can't trust the integrity of the kernel anymore: */ 216 /*
217 debug_locks = 0; 217 * Can't trust the integrity of the kernel anymore.
218 * We don't call directly debug_locks_off() because the issue
219 * is not necessarily serious enough to set oops_in_progress to 1
220 * Also we want to keep up lockdep for staging development and
221 * post-warning case.
222 */
223 if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
224 printk(KERN_WARNING "Disabling lockdep due to kernel taint\n");
225
218 set_bit(flag, &tainted_mask); 226 set_bit(flag, &tainted_mask);
219} 227}
220EXPORT_SYMBOL(add_taint); 228EXPORT_SYMBOL(add_taint);
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index 8e5d9a68b022..c9dcf98b4463 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -18,7 +18,7 @@ void update_rlimit_cpu(unsigned long rlim_new)
18 18
19 cputime = secs_to_cputime(rlim_new); 19 cputime = secs_to_cputime(rlim_new);
20 if (cputime_eq(current->signal->it_prof_expires, cputime_zero) || 20 if (cputime_eq(current->signal->it_prof_expires, cputime_zero) ||
21 cputime_lt(current->signal->it_prof_expires, cputime)) { 21 cputime_gt(current->signal->it_prof_expires, cputime)) {
22 spin_lock_irq(&current->sighand->siglock); 22 spin_lock_irq(&current->sighand->siglock);
23 set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); 23 set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL);
24 spin_unlock_irq(&current->sighand->siglock); 24 spin_unlock_irq(&current->sighand->siglock);
@@ -224,7 +224,7 @@ static int cpu_clock_sample(const clockid_t which_clock, struct task_struct *p,
224 cpu->cpu = virt_ticks(p); 224 cpu->cpu = virt_ticks(p);
225 break; 225 break;
226 case CPUCLOCK_SCHED: 226 case CPUCLOCK_SCHED:
227 cpu->sched = p->se.sum_exec_runtime + task_delta_exec(p); 227 cpu->sched = task_sched_runtime(p);
228 break; 228 break;
229 } 229 }
230 return 0; 230 return 0;
@@ -305,18 +305,19 @@ static int cpu_clock_sample_group(const clockid_t which_clock,
305{ 305{
306 struct task_cputime cputime; 306 struct task_cputime cputime;
307 307
308 thread_group_cputime(p, &cputime);
309 switch (CPUCLOCK_WHICH(which_clock)) { 308 switch (CPUCLOCK_WHICH(which_clock)) {
310 default: 309 default:
311 return -EINVAL; 310 return -EINVAL;
312 case CPUCLOCK_PROF: 311 case CPUCLOCK_PROF:
312 thread_group_cputime(p, &cputime);
313 cpu->cpu = cputime_add(cputime.utime, cputime.stime); 313 cpu->cpu = cputime_add(cputime.utime, cputime.stime);
314 break; 314 break;
315 case CPUCLOCK_VIRT: 315 case CPUCLOCK_VIRT:
316 thread_group_cputime(p, &cputime);
316 cpu->cpu = cputime.utime; 317 cpu->cpu = cputime.utime;
317 break; 318 break;
318 case CPUCLOCK_SCHED: 319 case CPUCLOCK_SCHED:
319 cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p); 320 cpu->sched = thread_group_sched_runtime(p);
320 break; 321 break;
321 } 322 }
322 return 0; 323 return 0;
diff --git a/kernel/power/disk.c b/kernel/power/disk.c
index 5f21ab2bbcdf..0854770b63b9 100644
--- a/kernel/power/disk.c
+++ b/kernel/power/disk.c
@@ -22,6 +22,7 @@
22#include <linux/console.h> 22#include <linux/console.h>
23#include <linux/cpu.h> 23#include <linux/cpu.h>
24#include <linux/freezer.h> 24#include <linux/freezer.h>
25#include <scsi/scsi_scan.h>
25#include <asm/suspend.h> 26#include <asm/suspend.h>
26 27
27#include "power.h" 28#include "power.h"
@@ -645,6 +646,13 @@ static int software_resume(void)
645 return 0; 646 return 0;
646 647
647 /* 648 /*
649 * We can't depend on SCSI devices being available after loading one of
650 * their modules if scsi_complete_async_scans() is not called and the
651 * resume device usually is a SCSI one.
652 */
653 scsi_complete_async_scans();
654
655 /*
648 * name_to_dev_t() below takes a sysfs buffer mutex when sysfs 656 * name_to_dev_t() below takes a sysfs buffer mutex when sysfs
649 * is configured into the kernel. Since the regular hibernate 657 * is configured into the kernel. Since the regular hibernate
650 * trigger path is via sysfs which takes a buffer mutex before 658 * trigger path is via sysfs which takes a buffer mutex before
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 6c85359364f2..ed97375daae9 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -24,6 +24,7 @@
24#include <linux/cpu.h> 24#include <linux/cpu.h>
25#include <linux/freezer.h> 25#include <linux/freezer.h>
26#include <linux/smp_lock.h> 26#include <linux/smp_lock.h>
27#include <scsi/scsi_scan.h>
27 28
28#include <asm/uaccess.h> 29#include <asm/uaccess.h>
29 30
@@ -92,6 +93,7 @@ static int snapshot_open(struct inode *inode, struct file *filp)
92 filp->private_data = data; 93 filp->private_data = data;
93 memset(&data->handle, 0, sizeof(struct snapshot_handle)); 94 memset(&data->handle, 0, sizeof(struct snapshot_handle));
94 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) { 95 if ((filp->f_flags & O_ACCMODE) == O_RDONLY) {
96 /* Hibernating. The image device should be accessible. */
95 data->swap = swsusp_resume_device ? 97 data->swap = swsusp_resume_device ?
96 swap_type_of(swsusp_resume_device, 0, NULL) : -1; 98 swap_type_of(swsusp_resume_device, 0, NULL) : -1;
97 data->mode = O_RDONLY; 99 data->mode = O_RDONLY;
@@ -99,6 +101,13 @@ static int snapshot_open(struct inode *inode, struct file *filp)
99 if (error) 101 if (error)
100 pm_notifier_call_chain(PM_POST_HIBERNATION); 102 pm_notifier_call_chain(PM_POST_HIBERNATION);
101 } else { 103 } else {
104 /*
105 * Resuming. We may need to wait for the image device to
106 * appear.
107 */
108 wait_for_device_probe();
109 scsi_complete_async_scans();
110
102 data->swap = -1; 111 data->swap = -1;
103 data->mode = O_WRONLY; 112 data->mode = O_WRONLY;
104 error = pm_notifier_call_chain(PM_RESTORE_PREPARE); 113 error = pm_notifier_call_chain(PM_RESTORE_PREPARE);
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index aaad0ec34194..64191fa09b7e 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -21,9 +21,7 @@
21#include <linux/audit.h> 21#include <linux/audit.h>
22#include <linux/pid_namespace.h> 22#include <linux/pid_namespace.h>
23#include <linux/syscalls.h> 23#include <linux/syscalls.h>
24 24#include <linux/uaccess.h>
25#include <asm/pgtable.h>
26#include <asm/uaccess.h>
27 25
28 26
29/* 27/*
@@ -48,7 +46,7 @@ void __ptrace_link(struct task_struct *child, struct task_struct *new_parent)
48 list_add(&child->ptrace_entry, &new_parent->ptraced); 46 list_add(&child->ptrace_entry, &new_parent->ptraced);
49 child->parent = new_parent; 47 child->parent = new_parent;
50} 48}
51 49
52/* 50/*
53 * Turn a tracing stop into a normal stop now, since with no tracer there 51 * Turn a tracing stop into a normal stop now, since with no tracer there
54 * would be no way to wake it up with SIGCONT or SIGKILL. If there was a 52 * would be no way to wake it up with SIGCONT or SIGKILL. If there was a
@@ -173,7 +171,7 @@ bool ptrace_may_access(struct task_struct *task, unsigned int mode)
173 task_lock(task); 171 task_lock(task);
174 err = __ptrace_may_access(task, mode); 172 err = __ptrace_may_access(task, mode);
175 task_unlock(task); 173 task_unlock(task);
176 return (!err ? true : false); 174 return !err;
177} 175}
178 176
179int ptrace_attach(struct task_struct *task) 177int ptrace_attach(struct task_struct *task)
@@ -358,7 +356,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
358 copied += retval; 356 copied += retval;
359 src += retval; 357 src += retval;
360 dst += retval; 358 dst += retval;
361 len -= retval; 359 len -= retval;
362 } 360 }
363 return copied; 361 return copied;
364} 362}
@@ -383,7 +381,7 @@ int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long ds
383 copied += retval; 381 copied += retval;
384 src += retval; 382 src += retval;
385 dst += retval; 383 dst += retval;
386 len -= retval; 384 len -= retval;
387 } 385 }
388 return copied; 386 return copied;
389} 387}
@@ -496,9 +494,9 @@ static int ptrace_resume(struct task_struct *child, long request, long data)
496 if (unlikely(!arch_has_single_step())) 494 if (unlikely(!arch_has_single_step()))
497 return -EIO; 495 return -EIO;
498 user_enable_single_step(child); 496 user_enable_single_step(child);
499 } 497 } else {
500 else
501 user_disable_single_step(child); 498 user_disable_single_step(child);
499 }
502 500
503 child->exit_code = data; 501 child->exit_code = data;
504 wake_up_process(child); 502 wake_up_process(child);
diff --git a/kernel/sched.c b/kernel/sched.c
index 6cc1fd5d5072..5724508c3b66 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1418,10 +1418,22 @@ iter_move_one_task(struct rq *this_rq, int this_cpu, struct rq *busiest,
1418 struct rq_iterator *iterator); 1418 struct rq_iterator *iterator);
1419#endif 1419#endif
1420 1420
1421/* Time spent by the tasks of the cpu accounting group executing in ... */
1422enum cpuacct_stat_index {
1423 CPUACCT_STAT_USER, /* ... user mode */
1424 CPUACCT_STAT_SYSTEM, /* ... kernel mode */
1425
1426 CPUACCT_STAT_NSTATS,
1427};
1428
1421#ifdef CONFIG_CGROUP_CPUACCT 1429#ifdef CONFIG_CGROUP_CPUACCT
1422static void cpuacct_charge(struct task_struct *tsk, u64 cputime); 1430static void cpuacct_charge(struct task_struct *tsk, u64 cputime);
1431static void cpuacct_update_stats(struct task_struct *tsk,
1432 enum cpuacct_stat_index idx, cputime_t val);
1423#else 1433#else
1424static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {} 1434static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime) {}
1435static inline void cpuacct_update_stats(struct task_struct *tsk,
1436 enum cpuacct_stat_index idx, cputime_t val) {}
1425#endif 1437#endif
1426 1438
1427static inline void inc_cpu_load(struct rq *rq, unsigned long load) 1439static inline void inc_cpu_load(struct rq *rq, unsigned long load)
@@ -4511,9 +4523,25 @@ DEFINE_PER_CPU(struct kernel_stat, kstat);
4511EXPORT_PER_CPU_SYMBOL(kstat); 4523EXPORT_PER_CPU_SYMBOL(kstat);
4512 4524
4513/* 4525/*
4514 * Return any ns on the sched_clock that have not yet been banked in 4526 * Return any ns on the sched_clock that have not yet been accounted in
4515 * @p in case that task is currently running. 4527 * @p in case that task is currently running.
4528 *
4529 * Called with task_rq_lock() held on @rq.
4516 */ 4530 */
4531static u64 do_task_delta_exec(struct task_struct *p, struct rq *rq)
4532{
4533 u64 ns = 0;
4534
4535 if (task_current(rq, p)) {
4536 update_rq_clock(rq);
4537 ns = rq->clock - p->se.exec_start;
4538 if ((s64)ns < 0)
4539 ns = 0;
4540 }
4541
4542 return ns;
4543}
4544
4517unsigned long long task_delta_exec(struct task_struct *p) 4545unsigned long long task_delta_exec(struct task_struct *p)
4518{ 4546{
4519 unsigned long flags; 4547 unsigned long flags;
@@ -4521,16 +4549,49 @@ unsigned long long task_delta_exec(struct task_struct *p)
4521 u64 ns = 0; 4549 u64 ns = 0;
4522 4550
4523 rq = task_rq_lock(p, &flags); 4551 rq = task_rq_lock(p, &flags);
4552 ns = do_task_delta_exec(p, rq);
4553 task_rq_unlock(rq, &flags);
4524 4554
4525 if (task_current(rq, p)) { 4555 return ns;
4526 u64 delta_exec; 4556}
4527 4557
4528 update_rq_clock(rq); 4558/*
4529 delta_exec = rq->clock - p->se.exec_start; 4559 * Return accounted runtime for the task.
4530 if ((s64)delta_exec > 0) 4560 * In case the task is currently running, return the runtime plus current's
4531 ns = delta_exec; 4561 * pending runtime that have not been accounted yet.
4532 } 4562 */
4563unsigned long long task_sched_runtime(struct task_struct *p)
4564{
4565 unsigned long flags;
4566 struct rq *rq;
4567 u64 ns = 0;
4568
4569 rq = task_rq_lock(p, &flags);
4570 ns = p->se.sum_exec_runtime + do_task_delta_exec(p, rq);
4571 task_rq_unlock(rq, &flags);
4572
4573 return ns;
4574}
4575
4576/*
4577 * Return sum_exec_runtime for the thread group.
4578 * In case the task is currently running, return the sum plus current's
4579 * pending runtime that have not been accounted yet.
4580 *
4581 * Note that the thread group might have other running tasks as well,
4582 * so the return value not includes other pending runtime that other
4583 * running tasks might have.
4584 */
4585unsigned long long thread_group_sched_runtime(struct task_struct *p)
4586{
4587 struct task_cputime totals;
4588 unsigned long flags;
4589 struct rq *rq;
4590 u64 ns;
4533 4591
4592 rq = task_rq_lock(p, &flags);
4593 thread_group_cputime(p, &totals);
4594 ns = totals.sum_exec_runtime + do_task_delta_exec(p, rq);
4534 task_rq_unlock(rq, &flags); 4595 task_rq_unlock(rq, &flags);
4535 4596
4536 return ns; 4597 return ns;
@@ -4559,6 +4620,8 @@ void account_user_time(struct task_struct *p, cputime_t cputime,
4559 cpustat->nice = cputime64_add(cpustat->nice, tmp); 4620 cpustat->nice = cputime64_add(cpustat->nice, tmp);
4560 else 4621 else
4561 cpustat->user = cputime64_add(cpustat->user, tmp); 4622 cpustat->user = cputime64_add(cpustat->user, tmp);
4623
4624 cpuacct_update_stats(p, CPUACCT_STAT_USER, cputime);
4562 /* Account for user time used */ 4625 /* Account for user time used */
4563 acct_update_integrals(p); 4626 acct_update_integrals(p);
4564} 4627}
@@ -4620,6 +4683,8 @@ void account_system_time(struct task_struct *p, int hardirq_offset,
4620 else 4683 else
4621 cpustat->system = cputime64_add(cpustat->system, tmp); 4684 cpustat->system = cputime64_add(cpustat->system, tmp);
4622 4685
4686 cpuacct_update_stats(p, CPUACCT_STAT_SYSTEM, cputime);
4687
4623 /* Account for system time used */ 4688 /* Account for system time used */
4624 acct_update_integrals(p); 4689 acct_update_integrals(p);
4625} 4690}
@@ -7302,7 +7367,8 @@ static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level,
7302 cpumask_or(groupmask, groupmask, sched_group_cpus(group)); 7367 cpumask_or(groupmask, groupmask, sched_group_cpus(group));
7303 7368
7304 cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group)); 7369 cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group));
7305 printk(KERN_CONT " %s", str); 7370 printk(KERN_CONT " %s (__cpu_power = %d)", str,
7371 group->__cpu_power);
7306 7372
7307 group = group->next; 7373 group = group->next;
7308 } while (group != sd->groups); 7374 } while (group != sd->groups);
@@ -9925,6 +9991,7 @@ struct cpuacct {
9925 struct cgroup_subsys_state css; 9991 struct cgroup_subsys_state css;
9926 /* cpuusage holds pointer to a u64-type object on every cpu */ 9992 /* cpuusage holds pointer to a u64-type object on every cpu */
9927 u64 *cpuusage; 9993 u64 *cpuusage;
9994 struct percpu_counter cpustat[CPUACCT_STAT_NSTATS];
9928 struct cpuacct *parent; 9995 struct cpuacct *parent;
9929}; 9996};
9930 9997
@@ -9949,20 +10016,32 @@ static struct cgroup_subsys_state *cpuacct_create(
9949 struct cgroup_subsys *ss, struct cgroup *cgrp) 10016 struct cgroup_subsys *ss, struct cgroup *cgrp)
9950{ 10017{
9951 struct cpuacct *ca = kzalloc(sizeof(*ca), GFP_KERNEL); 10018 struct cpuacct *ca = kzalloc(sizeof(*ca), GFP_KERNEL);
10019 int i;
9952 10020
9953 if (!ca) 10021 if (!ca)
9954 return ERR_PTR(-ENOMEM); 10022 goto out;
9955 10023
9956 ca->cpuusage = alloc_percpu(u64); 10024 ca->cpuusage = alloc_percpu(u64);
9957 if (!ca->cpuusage) { 10025 if (!ca->cpuusage)
9958 kfree(ca); 10026 goto out_free_ca;
9959 return ERR_PTR(-ENOMEM); 10027
9960 } 10028 for (i = 0; i < CPUACCT_STAT_NSTATS; i++)
10029 if (percpu_counter_init(&ca->cpustat[i], 0))
10030 goto out_free_counters;
9961 10031
9962 if (cgrp->parent) 10032 if (cgrp->parent)
9963 ca->parent = cgroup_ca(cgrp->parent); 10033 ca->parent = cgroup_ca(cgrp->parent);
9964 10034
9965 return &ca->css; 10035 return &ca->css;
10036
10037out_free_counters:
10038 while (--i >= 0)
10039 percpu_counter_destroy(&ca->cpustat[i]);
10040 free_percpu(ca->cpuusage);
10041out_free_ca:
10042 kfree(ca);
10043out:
10044 return ERR_PTR(-ENOMEM);
9966} 10045}
9967 10046
9968/* destroy an existing cpu accounting group */ 10047/* destroy an existing cpu accounting group */
@@ -9970,7 +10049,10 @@ static void
9970cpuacct_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp) 10049cpuacct_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp)
9971{ 10050{
9972 struct cpuacct *ca = cgroup_ca(cgrp); 10051 struct cpuacct *ca = cgroup_ca(cgrp);
10052 int i;
9973 10053
10054 for (i = 0; i < CPUACCT_STAT_NSTATS; i++)
10055 percpu_counter_destroy(&ca->cpustat[i]);
9974 free_percpu(ca->cpuusage); 10056 free_percpu(ca->cpuusage);
9975 kfree(ca); 10057 kfree(ca);
9976} 10058}
@@ -10057,6 +10139,25 @@ static int cpuacct_percpu_seq_read(struct cgroup *cgroup, struct cftype *cft,
10057 return 0; 10139 return 0;
10058} 10140}
10059 10141
10142static const char *cpuacct_stat_desc[] = {
10143 [CPUACCT_STAT_USER] = "user",
10144 [CPUACCT_STAT_SYSTEM] = "system",
10145};
10146
10147static int cpuacct_stats_show(struct cgroup *cgrp, struct cftype *cft,
10148 struct cgroup_map_cb *cb)
10149{
10150 struct cpuacct *ca = cgroup_ca(cgrp);
10151 int i;
10152
10153 for (i = 0; i < CPUACCT_STAT_NSTATS; i++) {
10154 s64 val = percpu_counter_read(&ca->cpustat[i]);
10155 val = cputime64_to_clock_t(val);
10156 cb->fill(cb, cpuacct_stat_desc[i], val);
10157 }
10158 return 0;
10159}
10160
10060static struct cftype files[] = { 10161static struct cftype files[] = {
10061 { 10162 {
10062 .name = "usage", 10163 .name = "usage",
@@ -10067,7 +10168,10 @@ static struct cftype files[] = {
10067 .name = "usage_percpu", 10168 .name = "usage_percpu",
10068 .read_seq_string = cpuacct_percpu_seq_read, 10169 .read_seq_string = cpuacct_percpu_seq_read,
10069 }, 10170 },
10070 10171 {
10172 .name = "stat",
10173 .read_map = cpuacct_stats_show,
10174 },
10071}; 10175};
10072 10176
10073static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp) 10177static int cpuacct_populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
@@ -10089,12 +10193,38 @@ static void cpuacct_charge(struct task_struct *tsk, u64 cputime)
10089 return; 10193 return;
10090 10194
10091 cpu = task_cpu(tsk); 10195 cpu = task_cpu(tsk);
10196
10197 rcu_read_lock();
10198
10092 ca = task_ca(tsk); 10199 ca = task_ca(tsk);
10093 10200
10094 for (; ca; ca = ca->parent) { 10201 for (; ca; ca = ca->parent) {
10095 u64 *cpuusage = per_cpu_ptr(ca->cpuusage, cpu); 10202 u64 *cpuusage = per_cpu_ptr(ca->cpuusage, cpu);
10096 *cpuusage += cputime; 10203 *cpuusage += cputime;
10097 } 10204 }
10205
10206 rcu_read_unlock();
10207}
10208
10209/*
10210 * Charge the system/user time to the task's accounting group.
10211 */
10212static void cpuacct_update_stats(struct task_struct *tsk,
10213 enum cpuacct_stat_index idx, cputime_t val)
10214{
10215 struct cpuacct *ca;
10216
10217 if (unlikely(!cpuacct_subsys.active))
10218 return;
10219
10220 rcu_read_lock();
10221 ca = task_ca(tsk);
10222
10223 do {
10224 percpu_counter_add(&ca->cpustat[idx], val);
10225 ca = ca->parent;
10226 } while (ca);
10227 rcu_read_unlock();
10098} 10228}
10099 10229
10100struct cgroup_subsys cpuacct_subsys = { 10230struct cgroup_subsys cpuacct_subsys = {
diff --git a/kernel/sched_cpupri.c b/kernel/sched_cpupri.c
index 1e00bfacf9b8..cdd3c89574cd 100644
--- a/kernel/sched_cpupri.c
+++ b/kernel/sched_cpupri.c
@@ -55,7 +55,7 @@ static int convert_prio(int prio)
55 * cpupri_find - find the best (lowest-pri) CPU in the system 55 * cpupri_find - find the best (lowest-pri) CPU in the system
56 * @cp: The cpupri context 56 * @cp: The cpupri context
57 * @p: The task 57 * @p: The task
58 * @lowest_mask: A mask to fill in with selected CPUs 58 * @lowest_mask: A mask to fill in with selected CPUs (or NULL)
59 * 59 *
60 * Note: This function returns the recommended CPUs as calculated during the 60 * Note: This function returns the recommended CPUs as calculated during the
61 * current invokation. By the time the call returns, the CPUs may have in 61 * current invokation. By the time the call returns, the CPUs may have in
@@ -81,7 +81,8 @@ int cpupri_find(struct cpupri *cp, struct task_struct *p,
81 if (cpumask_any_and(&p->cpus_allowed, vec->mask) >= nr_cpu_ids) 81 if (cpumask_any_and(&p->cpus_allowed, vec->mask) >= nr_cpu_ids)
82 continue; 82 continue;
83 83
84 cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask); 84 if (lowest_mask)
85 cpumask_and(lowest_mask, &p->cpus_allowed, vec->mask);
85 return 1; 86 return 1;
86 } 87 }
87 88
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 299d012b4394..f2c66f8f9712 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -948,20 +948,15 @@ static int select_task_rq_rt(struct task_struct *p, int sync)
948 948
949static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p) 949static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
950{ 950{
951 cpumask_var_t mask;
952
953 if (rq->curr->rt.nr_cpus_allowed == 1) 951 if (rq->curr->rt.nr_cpus_allowed == 1)
954 return; 952 return;
955 953
956 if (!alloc_cpumask_var(&mask, GFP_ATOMIC))
957 return;
958
959 if (p->rt.nr_cpus_allowed != 1 954 if (p->rt.nr_cpus_allowed != 1
960 && cpupri_find(&rq->rd->cpupri, p, mask)) 955 && cpupri_find(&rq->rd->cpupri, p, NULL))
961 goto free; 956 return;
962 957
963 if (!cpupri_find(&rq->rd->cpupri, rq->curr, mask)) 958 if (!cpupri_find(&rq->rd->cpupri, rq->curr, NULL))
964 goto free; 959 return;
965 960
966 /* 961 /*
967 * There appears to be other cpus that can accept 962 * There appears to be other cpus that can accept
@@ -970,8 +965,6 @@ static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
970 */ 965 */
971 requeue_task_rt(rq, p, 1); 966 requeue_task_rt(rq, p, 1);
972 resched_task(rq->curr); 967 resched_task(rq->curr);
973free:
974 free_cpumask_var(mask);
975} 968}
976 969
977#endif /* CONFIG_SMP */ 970#endif /* CONFIG_SMP */
diff --git a/kernel/timer.c b/kernel/timer.c
index b4555568b4e4..cffffad01c31 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -531,10 +531,13 @@ static void __init_timer(struct timer_list *timer,
531} 531}
532 532
533/** 533/**
534 * init_timer - initialize a timer. 534 * init_timer_key - initialize a timer
535 * @timer: the timer to be initialized 535 * @timer: the timer to be initialized
536 * @name: name of the timer
537 * @key: lockdep class key of the fake lock used for tracking timer
538 * sync lock dependencies
536 * 539 *
537 * init_timer() must be done to a timer prior calling *any* of the 540 * init_timer_key() must be done to a timer prior calling *any* of the
538 * other timer functions. 541 * other timer functions.
539 */ 542 */
540void init_timer_key(struct timer_list *timer, 543void init_timer_key(struct timer_list *timer,
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 2246141bda4d..417d1985e299 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -312,7 +312,7 @@ config KMEMTRACE
312 and profile kernel code. 312 and profile kernel code.
313 313
314 This requires an userspace application to use. See 314 This requires an userspace application to use. See
315 Documentation/vm/kmemtrace.txt for more information. 315 Documentation/trace/kmemtrace.txt for more information.
316 316
317 Saying Y will make the kernel somewhat larger and slower. However, 317 Saying Y will make the kernel somewhat larger and slower. However,
318 if you disable kmemtrace at run-time or boot-time, the performance 318 if you disable kmemtrace at run-time or boot-time, the performance
@@ -403,7 +403,7 @@ config MMIOTRACE
403 implementation and works via page faults. Tracing is disabled by 403 implementation and works via page faults. Tracing is disabled by
404 default and can be enabled at run-time. 404 default and can be enabled at run-time.
405 405
406 See Documentation/tracers/mmiotrace.txt. 406 See Documentation/trace/mmiotrace.txt.
407 If you are not helping to develop drivers, say N. 407 If you are not helping to develop drivers, say N.
408 408
409config MMIOTRACE_TEST 409config MMIOTRACE_TEST
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index b32ff446c3fb..921ef5d1f0ba 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -1377,12 +1377,12 @@ static int blk_trace_str2mask(const char *str)
1377{ 1377{
1378 int i; 1378 int i;
1379 int mask = 0; 1379 int mask = 0;
1380 char *s, *token; 1380 char *buf, *s, *token;
1381 1381
1382 s = kstrdup(str, GFP_KERNEL); 1382 buf = kstrdup(str, GFP_KERNEL);
1383 if (s == NULL) 1383 if (buf == NULL)
1384 return -ENOMEM; 1384 return -ENOMEM;
1385 s = strstrip(s); 1385 s = strstrip(buf);
1386 1386
1387 while (1) { 1387 while (1) {
1388 token = strsep(&s, ","); 1388 token = strsep(&s, ",");
@@ -1403,7 +1403,7 @@ static int blk_trace_str2mask(const char *str)
1403 break; 1403 break;
1404 } 1404 }
1405 } 1405 }
1406 kfree(s); 1406 kfree(buf);
1407 1407
1408 return mask; 1408 return mask;
1409} 1409}
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 9d28476a9851..1ce5dc6372b8 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3277,19 +3277,13 @@ static int tracing_buffers_open(struct inode *inode, struct file *filp)
3277 3277
3278 info->tr = &global_trace; 3278 info->tr = &global_trace;
3279 info->cpu = cpu; 3279 info->cpu = cpu;
3280 info->spare = ring_buffer_alloc_read_page(info->tr->buffer); 3280 info->spare = NULL;
3281 /* Force reading ring buffer for first read */ 3281 /* Force reading ring buffer for first read */
3282 info->read = (unsigned int)-1; 3282 info->read = (unsigned int)-1;
3283 if (!info->spare)
3284 goto out;
3285 3283
3286 filp->private_data = info; 3284 filp->private_data = info;
3287 3285
3288 return 0; 3286 return nonseekable_open(inode, filp);
3289
3290 out:
3291 kfree(info);
3292 return -ENOMEM;
3293} 3287}
3294 3288
3295static ssize_t 3289static ssize_t
@@ -3304,6 +3298,11 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
3304 if (!count) 3298 if (!count)
3305 return 0; 3299 return 0;
3306 3300
3301 if (!info->spare)
3302 info->spare = ring_buffer_alloc_read_page(info->tr->buffer);
3303 if (!info->spare)
3304 return -ENOMEM;
3305
3307 /* Do we have previous read data to read? */ 3306 /* Do we have previous read data to read? */
3308 if (info->read < PAGE_SIZE) 3307 if (info->read < PAGE_SIZE)
3309 goto read; 3308 goto read;
@@ -3342,7 +3341,8 @@ static int tracing_buffers_release(struct inode *inode, struct file *file)
3342{ 3341{
3343 struct ftrace_buffer_info *info = file->private_data; 3342 struct ftrace_buffer_info *info = file->private_data;
3344 3343
3345 ring_buffer_free_read_page(info->tr->buffer, info->spare); 3344 if (info->spare)
3345 ring_buffer_free_read_page(info->tr->buffer, info->spare);
3346 kfree(info); 3346 kfree(info);
3347 3347
3348 return 0; 3348 return 0;
@@ -3428,14 +3428,19 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
3428 int size, i; 3428 int size, i;
3429 size_t ret; 3429 size_t ret;
3430 3430
3431 /* 3431 if (*ppos & (PAGE_SIZE - 1)) {
3432 * We can't seek on a buffer input 3432 WARN_ONCE(1, "Ftrace: previous read must page-align\n");
3433 */ 3433 return -EINVAL;
3434 if (unlikely(*ppos)) 3434 }
3435 return -ESPIPE;
3436 3435
3436 if (len & (PAGE_SIZE - 1)) {
3437 WARN_ONCE(1, "Ftrace: splice_read should page-align\n");
3438 if (len < PAGE_SIZE)
3439 return -EINVAL;
3440 len &= PAGE_MASK;
3441 }
3437 3442
3438 for (i = 0; i < PIPE_BUFFERS && len; i++, len -= size) { 3443 for (i = 0; i < PIPE_BUFFERS && len; i++, len -= PAGE_SIZE) {
3439 struct page *page; 3444 struct page *page;
3440 int r; 3445 int r;
3441 3446
@@ -3474,6 +3479,7 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
3474 spd.partial[i].offset = 0; 3479 spd.partial[i].offset = 0;
3475 spd.partial[i].private = (unsigned long)ref; 3480 spd.partial[i].private = (unsigned long)ref;
3476 spd.nr_pages++; 3481 spd.nr_pages++;
3482 *ppos += PAGE_SIZE;
3477 } 3483 }
3478 3484
3479 spd.nr_pages = i; 3485 spd.nr_pages = i;
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 64ec4d278ffb..576f4fa2af0d 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -503,6 +503,7 @@ event_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
503 503
504 if (copy_from_user(&buf, ubuf, cnt)) 504 if (copy_from_user(&buf, ubuf, cnt))
505 return -EFAULT; 505 return -EFAULT;
506 buf[cnt] = '\0';
506 507
507 pred = kzalloc(sizeof(*pred), GFP_KERNEL); 508 pred = kzalloc(sizeof(*pred), GFP_KERNEL);
508 if (!pred) 509 if (!pred)
@@ -520,9 +521,10 @@ event_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
520 return cnt; 521 return cnt;
521 } 522 }
522 523
523 if (filter_add_pred(call, pred)) { 524 err = filter_add_pred(call, pred);
525 if (err < 0) {
524 filter_free_pred(pred); 526 filter_free_pred(pred);
525 return -EINVAL; 527 return err;
526 } 528 }
527 529
528 *ppos += cnt; 530 *ppos += cnt;
@@ -569,6 +571,7 @@ subsystem_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
569 571
570 if (copy_from_user(&buf, ubuf, cnt)) 572 if (copy_from_user(&buf, ubuf, cnt))
571 return -EFAULT; 573 return -EFAULT;
574 buf[cnt] = '\0';
572 575
573 pred = kzalloc(sizeof(*pred), GFP_KERNEL); 576 pred = kzalloc(sizeof(*pred), GFP_KERNEL);
574 if (!pred) 577 if (!pred)
@@ -586,10 +589,11 @@ subsystem_filter_write(struct file *filp, const char __user *ubuf, size_t cnt,
586 return cnt; 589 return cnt;
587 } 590 }
588 591
589 if (filter_add_subsystem_pred(system, pred)) { 592 err = filter_add_subsystem_pred(system, pred);
593 if (err < 0) {
590 filter_free_subsystem_preds(system); 594 filter_free_subsystem_preds(system);
591 filter_free_pred(pred); 595 filter_free_pred(pred);
592 return -EINVAL; 596 return err;
593 } 597 }
594 598
595 *ppos += cnt; 599 *ppos += cnt;
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 026be412f356..e03cbf1e38f3 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -215,7 +215,7 @@ static int __filter_add_pred(struct ftrace_event_call *call,
215 } 215 }
216 } 216 }
217 217
218 return -ENOMEM; 218 return -ENOSPC;
219} 219}
220 220
221static int is_string_field(const char *type) 221static int is_string_field(const char *type)
@@ -319,7 +319,7 @@ int filter_add_subsystem_pred(struct event_subsystem *system,
319 } 319 }
320 320
321 if (i == MAX_FILTER_PRED) 321 if (i == MAX_FILTER_PRED)
322 return -EINVAL; 322 return -ENOSPC;
323 323
324 events_for_each(call) { 324 events_for_each(call) {
325 int err; 325 int err;
@@ -410,16 +410,22 @@ int filter_parse(char **pbuf, struct filter_pred *pred)
410 } 410 }
411 } 411 }
412 412
413 if (!val_str) {
414 pred->field_name = NULL;
415 return -EINVAL;
416 }
417
413 pred->field_name = kstrdup(pred->field_name, GFP_KERNEL); 418 pred->field_name = kstrdup(pred->field_name, GFP_KERNEL);
414 if (!pred->field_name) 419 if (!pred->field_name)
415 return -ENOMEM; 420 return -ENOMEM;
416 421
417 pred->val = simple_strtoull(val_str, &tmp, 10); 422 pred->val = simple_strtoull(val_str, &tmp, 0);
418 if (tmp == val_str) { 423 if (tmp == val_str) {
419 pred->str_val = kstrdup(val_str, GFP_KERNEL); 424 pred->str_val = kstrdup(val_str, GFP_KERNEL);
420 if (!pred->str_val) 425 if (!pred->str_val)
421 return -ENOMEM; 426 return -ENOMEM;
422 } 427 } else if (*tmp != '\0')
428 return -EINVAL;
423 429
424 return 0; 430 return 0;
425} 431}
diff --git a/kernel/trace/trace_events_stage_2.h b/kernel/trace/trace_events_stage_2.h
index 30743f7d4110..d363c6672c6c 100644
--- a/kernel/trace/trace_events_stage_2.h
+++ b/kernel/trace/trace_events_stage_2.h
@@ -105,10 +105,10 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \
105 return 0; 105 return 0;
106 106
107#undef __entry 107#undef __entry
108#define __entry "REC" 108#define __entry REC
109 109
110#undef TP_printk 110#undef TP_printk
111#define TP_printk(fmt, args...) "%s, %s\n", #fmt, #args 111#define TP_printk(fmt, args...) "%s, %s\n", #fmt, __stringify(args)
112 112
113#undef TP_fast_assign 113#undef TP_fast_assign
114#define TP_fast_assign(args...) args 114#define TP_fast_assign(args...) args
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index a2a3af29c943..5e579645ac86 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -1,5 +1,5 @@
1#include <trace/syscall.h>
1#include <linux/kernel.h> 2#include <linux/kernel.h>
2#include <linux/ftrace.h>
3#include <asm/syscall.h> 3#include <asm/syscall.h>
4 4
5#include "trace_output.h" 5#include "trace_output.h"
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index b6b966ce1451..f71fb2a08950 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -966,20 +966,20 @@ undo:
966} 966}
967 967
968#ifdef CONFIG_SMP 968#ifdef CONFIG_SMP
969static struct workqueue_struct *work_on_cpu_wq __read_mostly;
970 969
971struct work_for_cpu { 970struct work_for_cpu {
972 struct work_struct work; 971 struct completion completion;
973 long (*fn)(void *); 972 long (*fn)(void *);
974 void *arg; 973 void *arg;
975 long ret; 974 long ret;
976}; 975};
977 976
978static void do_work_for_cpu(struct work_struct *w) 977static int do_work_for_cpu(void *_wfc)
979{ 978{
980 struct work_for_cpu *wfc = container_of(w, struct work_for_cpu, work); 979 struct work_for_cpu *wfc = _wfc;
981
982 wfc->ret = wfc->fn(wfc->arg); 980 wfc->ret = wfc->fn(wfc->arg);
981 complete(&wfc->completion);
982 return 0;
983} 983}
984 984
985/** 985/**
@@ -990,17 +990,23 @@ static void do_work_for_cpu(struct work_struct *w)
990 * 990 *
991 * This will return the value @fn returns. 991 * This will return the value @fn returns.
992 * It is up to the caller to ensure that the cpu doesn't go offline. 992 * It is up to the caller to ensure that the cpu doesn't go offline.
993 * The caller must not hold any locks which would prevent @fn from completing.
993 */ 994 */
994long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) 995long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg)
995{ 996{
996 struct work_for_cpu wfc; 997 struct task_struct *sub_thread;
997 998 struct work_for_cpu wfc = {
998 INIT_WORK(&wfc.work, do_work_for_cpu); 999 .completion = COMPLETION_INITIALIZER_ONSTACK(wfc.completion),
999 wfc.fn = fn; 1000 .fn = fn,
1000 wfc.arg = arg; 1001 .arg = arg,
1001 queue_work_on(cpu, work_on_cpu_wq, &wfc.work); 1002 };
1002 flush_work(&wfc.work); 1003
1003 1004 sub_thread = kthread_create(do_work_for_cpu, &wfc, "work_for_cpu");
1005 if (IS_ERR(sub_thread))
1006 return PTR_ERR(sub_thread);
1007 kthread_bind(sub_thread, cpu);
1008 wake_up_process(sub_thread);
1009 wait_for_completion(&wfc.completion);
1004 return wfc.ret; 1010 return wfc.ret;
1005} 1011}
1006EXPORT_SYMBOL_GPL(work_on_cpu); 1012EXPORT_SYMBOL_GPL(work_on_cpu);
@@ -1016,8 +1022,4 @@ void __init init_workqueues(void)
1016 hotcpu_notifier(workqueue_cpu_callback, 0); 1022 hotcpu_notifier(workqueue_cpu_callback, 0);
1017 keventd_wq = create_workqueue("events"); 1023 keventd_wq = create_workqueue("events");
1018 BUG_ON(!keventd_wq); 1024 BUG_ON(!keventd_wq);
1019#ifdef CONFIG_SMP
1020 work_on_cpu_wq = create_workqueue("work_on_cpu");
1021 BUG_ON(!work_on_cpu_wq);
1022#endif
1023} 1025}
diff --git a/lib/debug_locks.c b/lib/debug_locks.c
index 0218b4693dd8..bc3b11731b9c 100644
--- a/lib/debug_locks.c
+++ b/lib/debug_locks.c
@@ -36,7 +36,7 @@ int debug_locks_silent;
36 */ 36 */
37int debug_locks_off(void) 37int debug_locks_off(void)
38{ 38{
39 if (xchg(&debug_locks, 0)) { 39 if (__debug_locks_off()) {
40 if (!debug_locks_silent) { 40 if (!debug_locks_silent) {
41 oops_in_progress = 1; 41 oops_in_progress = 1;
42 console_verbose(); 42 console_verbose();
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index be3001f912e4..7536acea135b 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1051,13 +1051,6 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
1051 if (str < end) 1051 if (str < end)
1052 *str = '%'; 1052 *str = '%';
1053 ++str; 1053 ++str;
1054 if (*fmt) {
1055 if (str < end)
1056 *str = *fmt;
1057 ++str;
1058 } else {
1059 --fmt;
1060 }
1061 break; 1054 break;
1062 1055
1063 case FORMAT_TYPE_NRCHARS: { 1056 case FORMAT_TYPE_NRCHARS: {
@@ -1339,8 +1332,6 @@ do { \
1339 break; 1332 break;
1340 1333
1341 case FORMAT_TYPE_INVALID: 1334 case FORMAT_TYPE_INVALID:
1342 if (!*fmt)
1343 --fmt;
1344 break; 1335 break;
1345 1336
1346 case FORMAT_TYPE_NRCHARS: { 1337 case FORMAT_TYPE_NRCHARS: {
@@ -1523,13 +1514,6 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
1523 if (str < end) 1514 if (str < end)
1524 *str = '%'; 1515 *str = '%';
1525 ++str; 1516 ++str;
1526 if (*fmt) {
1527 if (str < end)
1528 *str = *fmt;
1529 ++str;
1530 } else {
1531 --fmt;
1532 }
1533 break; 1517 break;
1534 1518
1535 case FORMAT_TYPE_NRCHARS: 1519 case FORMAT_TYPE_NRCHARS:
diff --git a/scripts/.gitignore b/scripts/.gitignore
index 09e2406f3b78..b939fbd01195 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -1,7 +1,6 @@
1# 1#
2# Generated files 2# Generated files
3# 3#
4ihex2fw
5conmakehash 4conmakehash
6kallsyms 5kallsyms
7pnmtologo 6pnmtologo
diff --git a/scripts/Makefile b/scripts/Makefile
index 035182e16afb..aafdf064feef 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -2,12 +2,11 @@
2# scripts contains sources for various helper programs used throughout 2# scripts contains sources for various helper programs used throughout
3# the kernel for the build process. 3# the kernel for the build process.
4# --------------------------------------------------------------------------- 4# ---------------------------------------------------------------------------
5# ihex2fw: Parser/loader for IHEX formatted data
6# kallsyms: Find all symbols in vmlinux 5# kallsyms: Find all symbols in vmlinux
7# pnmttologo: Convert pnm files to logo files 6# pnmttologo: Convert pnm files to logo files
7# conmakehash: Create chartable
8# conmakehash: Create arrays for initializing the kernel console tables 8# conmakehash: Create arrays for initializing the kernel console tables
9 9
10hostprogs-y := ihex2fw
11hostprogs-$(CONFIG_KALLSYMS) += kallsyms 10hostprogs-$(CONFIG_KALLSYMS) += kallsyms
12hostprogs-$(CONFIG_LOGO) += pnmtologo 11hostprogs-$(CONFIG_LOGO) += pnmtologo
13hostprogs-$(CONFIG_VT) += conmakehash 12hostprogs-$(CONFIG_VT) += conmakehash
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 612dc13ddd85..095cfc8b9dbf 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -14,6 +14,8 @@ _dst := $(if $(dst),$(dst),$(obj))
14kbuild-file := $(srctree)/$(obj)/Kbuild 14kbuild-file := $(srctree)/$(obj)/Kbuild
15include $(kbuild-file) 15include $(kbuild-file)
16 16
17_dst := $(if $(destination-y),$(destination-y),$(_dst))
18
17include scripts/Kbuild.include 19include scripts/Kbuild.include
18 20
19install := $(INSTALL_HDR_PATH)/$(_dst) 21install := $(INSTALL_HDR_PATH)/$(_dst)
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 3eea8f15131b..76af5f9623e3 100644
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -97,7 +97,7 @@ print_mtime() {
97} 97}
98 98
99list_parse() { 99list_parse() {
100 echo "$1 \\" 100 [ ! -L "$1" ] && echo "$1 \\" || :
101} 101}
102 102
103# for each file print a line in following format 103# for each file print a line in following format
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
new file mode 100755
index 000000000000..60dc0c48c929
--- /dev/null
+++ b/scripts/get_maintainer.pl
@@ -0,0 +1,515 @@
1#!/usr/bin/perl -w
2# (c) 2007, Joe Perches <joe@perches.com>
3# created from checkpatch.pl
4#
5# Print selected MAINTAINERS information for
6# the files modified in a patch or for a file
7#
8# usage: perl scripts/get_maintainers.pl [OPTIONS] <patch>
9# perl scripts/get_maintainers.pl [OPTIONS] -f <file>
10#
11# Licensed under the terms of the GNU GPL License version 2
12
13use strict;
14
15my $P = $0;
16my $V = '0.15';
17
18use Getopt::Long qw(:config no_auto_abbrev);
19
20my $lk_path = "./";
21my $email = 1;
22my $email_usename = 1;
23my $email_maintainer = 1;
24my $email_list = 1;
25my $email_subscriber_list = 0;
26my $email_git = 1;
27my $email_git_penguin_chiefs = 0;
28my $email_git_min_signatures = 1;
29my $email_git_max_maintainers = 5;
30my $email_git_since = "1-year-ago";
31my $output_multiline = 1;
32my $output_separator = ", ";
33my $scm = 0;
34my $web = 0;
35my $subsystem = 0;
36my $status = 0;
37my $from_filename = 0;
38my $version = 0;
39my $help = 0;
40
41my $exit = 0;
42
43my @penguin_chief = ();
44push(@penguin_chief,"Linus Torvalds:torvalds\@linux-foundation.org");
45#Andrew wants in on most everything - 2009/01/14
46#push(@penguin_chief,"Andrew Morton:akpm\@linux-foundation.org");
47
48my @penguin_chief_names = ();
49foreach my $chief (@penguin_chief) {
50 if ($chief =~ m/^(.*):(.*)/) {
51 my $chief_name = $1;
52 my $chief_addr = $2;
53 push(@penguin_chief_names, $chief_name);
54 }
55}
56my $penguin_chiefs = "\(" . join("|",@penguin_chief_names) . "\)";
57
58if (!GetOptions(
59 'email!' => \$email,
60 'git!' => \$email_git,
61 'git-chief-penguins!' => \$email_git_penguin_chiefs,
62 'git-min-signatures=i' => \$email_git_min_signatures,
63 'git-max-maintainers=i' => \$email_git_max_maintainers,
64 'git-since=s' => \$email_git_since,
65 'm!' => \$email_maintainer,
66 'n!' => \$email_usename,
67 'l!' => \$email_list,
68 's!' => \$email_subscriber_list,
69 'multiline!' => \$output_multiline,
70 'separator=s' => \$output_separator,
71 'subsystem!' => \$subsystem,
72 'status!' => \$status,
73 'scm!' => \$scm,
74 'web!' => \$web,
75 'f|file' => \$from_filename,
76 'v|version' => \$version,
77 'h|help' => \$help,
78 )) {
79 usage();
80 die "$P: invalid argument\n";
81}
82
83if ($help != 0) {
84 usage();
85 exit 0;
86}
87
88if ($version != 0) {
89 print("${P} ${V}\n");
90 exit 0;
91}
92
93if ($#ARGV < 0) {
94 usage();
95 die "$P: argument missing: patchfile or -f file please\n";
96}
97
98my $selections = $email + $scm + $status + $subsystem + $web;
99if ($selections == 0) {
100 usage();
101 die "$P: Missing required option: email, scm, status, subsystem or web\n";
102}
103
104if ($email && ($email_maintainer + $email_list + $email_subscriber_list
105 + $email_git + $email_git_penguin_chiefs) == 0) {
106 usage();
107 die "$P: Please select at least 1 email option\n";
108}
109
110if (!top_of_kernel_tree($lk_path)) {
111 die "$P: The current directory does not appear to be "
112 . "a linux kernel source tree.\n";
113}
114
115## Read MAINTAINERS for type/value pairs
116
117my @typevalue = ();
118open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n";
119while (<MAINT>) {
120 my $line = $_;
121
122 if ($line =~ m/^(\C):\s*(.*)/) {
123 my $type = $1;
124 my $value = $2;
125
126 ##Filename pattern matching
127 if ($type eq "F" || $type eq "X") {
128 $value =~ s@\.@\\\.@g; ##Convert . to \.
129 $value =~ s/\*/\.\*/g; ##Convert * to .*
130 $value =~ s/\?/\./g; ##Convert ? to .
131 }
132 push(@typevalue, "$type:$value");
133 } elsif (!/^(\s)*$/) {
134 $line =~ s/\n$//g;
135 push(@typevalue, $line);
136 }
137}
138close(MAINT);
139
140## use the filenames on the command line or find the filenames in the patchfiles
141
142my @files = ();
143
144foreach my $file (@ARGV) {
145 next if ((-d $file));
146 if (!(-f $file)) {
147 die "$P: file '${file}' not found\n";
148 }
149 if ($from_filename) {
150 push(@files, $file);
151 } else {
152 my $file_cnt = @files;
153 open(PATCH, "<$file") or die "$P: Can't open ${file}\n";
154 while (<PATCH>) {
155 if (m/^\+\+\+\s+(\S+)/) {
156 my $filename = $1;
157 $filename =~ s@^[^/]*/@@;
158 $filename =~ s@\n@@;
159 push(@files, $filename);
160 }
161 }
162 close(PATCH);
163 if ($file_cnt == @files) {
164 die "$P: file '${file}' doesn't appear to be a patch. "
165 . "Add -f to options?\n";
166 }
167 @files = sort_and_uniq(@files);
168 }
169}
170
171my @email_to = ();
172my @scm = ();
173my @web = ();
174my @subsystem = ();
175my @status = ();
176
177# Find responsible parties
178
179foreach my $file (@files) {
180
181#Do not match excluded file patterns
182
183 my $exclude = 0;
184 foreach my $line (@typevalue) {
185 if ($line =~ m/^(\C):(.*)/) {
186 my $type = $1;
187 my $value = $2;
188 if ($type eq 'X') {
189 if (file_match_pattern($file, $value)) {
190 $exclude = 1;
191 }
192 }
193 }
194 }
195
196 if (!$exclude) {
197 my $tvi = 0;
198 foreach my $line (@typevalue) {
199 if ($line =~ m/^(\C):(.*)/) {
200 my $type = $1;
201 my $value = $2;
202 if ($type eq 'F') {
203 if (file_match_pattern($file, $value)) {
204 add_categories($tvi);
205 }
206 }
207 }
208 $tvi++;
209 }
210 }
211
212 if ($email && $email_git) {
213 recent_git_signoffs($file);
214 }
215
216}
217
218if ($email_git_penguin_chiefs) {
219 foreach my $chief (@penguin_chief) {
220 if ($chief =~ m/^(.*):(.*)/) {
221 my $chief_name = $1;
222 my $chief_addr = $2;
223 if ($email_usename) {
224 push(@email_to, format_email($chief_name, $chief_addr));
225 } else {
226 push(@email_to, $chief_addr);
227 }
228 }
229 }
230}
231
232if ($email) {
233 my $address_cnt = @email_to;
234 if ($address_cnt == 0 && $email_list) {
235 push(@email_to, "linux-kernel\@vger.kernel.org");
236 }
237
238#Don't sort email address list, but do remove duplicates
239 @email_to = uniq(@email_to);
240 output(@email_to);
241}
242
243if ($scm) {
244 @scm = sort_and_uniq(@scm);
245 output(@scm);
246}
247
248if ($status) {
249 @status = sort_and_uniq(@status);
250 output(@status);
251}
252
253if ($subsystem) {
254 @subsystem = sort_and_uniq(@subsystem);
255 output(@subsystem);
256}
257
258if ($web) {
259 @web = sort_and_uniq(@web);
260 output(@web);
261}
262
263exit($exit);
264
265sub file_match_pattern {
266 my ($file, $pattern) = @_;
267 if (substr($pattern, -1) eq "/") {
268 if ($file =~ m@^$pattern@) {
269 return 1;
270 }
271 } else {
272 if ($file =~ m@^$pattern@) {
273 my $s1 = ($file =~ tr@/@@);
274 my $s2 = ($pattern =~ tr@/@@);
275 if ($s1 == $s2) {
276 return 1;
277 }
278 }
279 }
280 return 0;
281}
282
283sub usage {
284 print <<EOT;
285usage: $P [options] patchfile
286 $P [options] -f file
287version: $V
288
289MAINTAINER field selection options:
290 --email => print email address(es) if any
291 --git => include recent git \*-by: signers
292 --git-chief-penguins => include ${penguin_chiefs}
293 --git-min-signatures => number of signatures required (default: 1)
294 --git-max-maintainers => maximum maintainers to add (default: 5)
295 --git-since => git history to use (default: 1-year-ago)
296 --m => include maintainer(s) if any
297 --n => include name 'Full Name <addr\@domain.tld>'
298 --l => include list(s) if any
299 --s => include subscriber only list(s) if any
300 --scm => print SCM tree(s) if any
301 --status => print status if any
302 --subsystem => print subsystem name if any
303 --web => print website(s) if any
304
305Output type options:
306 --separator [, ] => separator for multiple entries on 1 line
307 --multiline => print 1 entry per line
308
309Default options:
310 [--email --git --m --l --multiline]
311
312Other options:
313 --version -> show version
314 --help => show this help information
315
316EOT
317}
318
319sub top_of_kernel_tree {
320 my ($lk_path) = @_;
321
322 if ($lk_path ne "" && substr($lk_path,length($lk_path)-1,1) ne "/") {
323 $lk_path .= "/";
324 }
325 if ( (-f "${lk_path}COPYING")
326 && (-f "${lk_path}CREDITS")
327 && (-f "${lk_path}Kbuild")
328 && (-f "${lk_path}MAINTAINERS")
329 && (-f "${lk_path}Makefile")
330 && (-f "${lk_path}README")
331 && (-d "${lk_path}Documentation")
332 && (-d "${lk_path}arch")
333 && (-d "${lk_path}include")
334 && (-d "${lk_path}drivers")
335 && (-d "${lk_path}fs")
336 && (-d "${lk_path}init")
337 && (-d "${lk_path}ipc")
338 && (-d "${lk_path}kernel")
339 && (-d "${lk_path}lib")
340 && (-d "${lk_path}scripts")) {
341 return 1;
342 }
343 return 0;
344}
345
346sub format_email {
347 my ($name, $email) = @_;
348
349 $name =~ s/^\s+|\s+$//g;
350 $email =~ s/^\s+|\s+$//g;
351
352 my $formatted_email = "";
353
354 if ($name =~ /[^a-z0-9 \.\-]/i) { ##has "must quote" chars
355 $name =~ s/(?<!\\)"/\\"/g; ##escape quotes
356 $formatted_email = "\"${name}\"\ \<${email}\>";
357 } else {
358 $formatted_email = "${name} \<${email}\>";
359 }
360 return $formatted_email;
361}
362
363sub add_categories {
364 my ($index) = @_;
365
366 $index = $index - 1;
367 while ($index >= 0) {
368 my $tv = $typevalue[$index];
369 if ($tv =~ m/^(\C):(.*)/) {
370 my $ptype = $1;
371 my $pvalue = $2;
372 if ($ptype eq "L") {
373 my $subscr = $pvalue;
374 if ($subscr =~ m/\s*\(subscribers-only\)/) {
375 if ($email_subscriber_list) {
376 $subscr =~ s/\s*\(subscribers-only\)//g;
377 push(@email_to, $subscr);
378 }
379 } else {
380 if ($email_list) {
381 push(@email_to, $pvalue);
382 }
383 }
384 } elsif ($ptype eq "M") {
385 if ($email_maintainer) {
386 if ($index >= 0) {
387 my $tv = $typevalue[$index - 1];
388 if ($tv =~ m/^(\C):(.*)/) {
389 if ($1 eq "P" && $email_usename) {
390 push(@email_to, format_email($2, $pvalue));
391 } else {
392 push(@email_to, $pvalue);
393 }
394 }
395 } else {
396 push(@email_to, $pvalue);
397 }
398 }
399 } elsif ($ptype eq "T") {
400 push(@scm, $pvalue);
401 } elsif ($ptype eq "W") {
402 push(@web, $pvalue);
403 } elsif ($ptype eq "S") {
404 push(@status, $pvalue);
405 }
406
407 $index--;
408 } else {
409 push(@subsystem,$tv);
410 $index = -1;
411 }
412 }
413}
414
415sub which {
416 my ($bin) = @_;
417
418 foreach my $path (split /:/, $ENV{PATH}) {
419 if (-e "$path/$bin") {
420 return "$path/$bin";
421 }
422 }
423
424 return "";
425}
426
427sub recent_git_signoffs {
428 my ($file) = @_;
429
430 my $sign_offs = "";
431 my $cmd = "";
432 my $output = "";
433 my $count = 0;
434 my @lines = ();
435
436 if (which("git") eq "") {
437 die("$P: git not found. Add --nogit to options?\n");
438 }
439
440 $cmd = "git log --since=${email_git_since} -- ${file}";
441 $cmd .= " | grep -Pi \"^[-_ a-z]+by:.*\\\@\"";
442 if (!$email_git_penguin_chiefs) {
443 $cmd .= " | grep -Pv \"${penguin_chiefs}\"";
444 }
445 $cmd .= " | cut -f2- -d\":\"";
446 $cmd .= " | sed -e \"s/^\\s+//g\"";
447 $cmd .= " | sort | uniq -c | sort -rn";
448
449 $output = `${cmd}`;
450 $output =~ s/^\s*//gm;
451
452 @lines = split("\n", $output);
453 foreach my $line (@lines) {
454 if ($line =~ m/([0-9]+)\s+(.*)/) {
455 my $sign_offs = $1;
456 $line = $2;
457 $count++;
458 if ($sign_offs < $email_git_min_signatures ||
459 $count > $email_git_max_maintainers) {
460 last;
461 }
462 } else {
463 die("$P: Unexpected git output: ${line}\n");
464 }
465 if ($line =~ m/(.+)<(.+)>/) {
466 my $git_name = $1;
467 my $git_addr = $2;
468 $git_name =~ tr/^\"//;
469 $git_name =~ tr/^\\s*//;
470 $git_name =~ tr/\"$//;
471 $git_name =~ tr/\\s*$//;
472 if ($email_usename) {
473 push(@email_to, format_email($git_name, $git_addr));
474 } else {
475 push(@email_to, $git_addr);
476 }
477 } elsif ($line =~ m/<(.+)>/) {
478 my $git_addr = $1;
479 push(@email_to, $git_addr);
480 } else {
481 push(@email_to, $line);
482 }
483 }
484 return $output;
485}
486
487sub uniq {
488 my @parms = @_;
489
490 my %saw;
491 @parms = grep(!$saw{$_}++, @parms);
492 return @parms;
493}
494
495sub sort_and_uniq {
496 my @parms = @_;
497
498 my %saw;
499 @parms = sort @parms;
500 @parms = grep(!$saw{$_}++, @parms);
501 return @parms;
502}
503
504sub output {
505 my @parms = @_;
506
507 if ($output_multiline) {
508 foreach my $line (@parms) {
509 print("${line}\n");
510 }
511 } else {
512 print(join($output_separator, @parms));
513 print("\n");
514 }
515}
diff --git a/scripts/headerdep.pl b/scripts/headerdep.pl
index 97399da89ef2..b7f6c560e24d 100755
--- a/scripts/headerdep.pl
+++ b/scripts/headerdep.pl
@@ -19,7 +19,7 @@ my $opt_graph;
19 version => \&version, 19 version => \&version,
20 20
21 all => \$opt_all, 21 all => \$opt_all,
22 I => \@opt_include, 22 "I=s" => \@opt_include,
23 graph => \$opt_graph, 23 graph => \$opt_graph,
24); 24);
25 25
diff --git a/scripts/kconfig/kxgettext.c b/scripts/kconfig/kxgettext.c
index 6eb72a7f2562..8d9ce22b0fc5 100644
--- a/scripts/kconfig/kxgettext.c
+++ b/scripts/kconfig/kxgettext.c
@@ -43,6 +43,10 @@ static char *escape(const char* text, char *bf, int len)
43 ++text; 43 ++text;
44 goto next; 44 goto next;
45 } 45 }
46 else if (*text == '\\') {
47 *bfp++ = '\\';
48 len--;
49 }
46 *bfp++ = *text++; 50 *bfp++ = *text++;
47next: 51next:
48 --len; 52 --len;
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 8cc70612984c..df6e6286a065 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1913,7 +1913,7 @@ static void read_dump(const char *fname, unsigned int kernel)
1913 if (!mod) { 1913 if (!mod) {
1914 if (is_vmlinux(modname)) 1914 if (is_vmlinux(modname))
1915 have_vmlinux = 1; 1915 have_vmlinux = 1;
1916 mod = new_module(NOFAIL(strdup(modname))); 1916 mod = new_module(modname);
1917 mod->skip = 1; 1917 mod->skip = 1;
1918 } 1918 }
1919 s = sym_add_exported(symname, mod, export_no(export)); 1919 s = sym_add_exported(symname, mod, export_no(export));
@@ -1997,7 +1997,7 @@ static void read_markers(const char *fname)
1997 1997
1998 mod = find_module(modname); 1998 mod = find_module(modname);
1999 if (!mod) { 1999 if (!mod) {
2000 mod = new_module(NOFAIL(strdup(modname))); 2000 mod = new_module(modname);
2001 mod->skip = 1; 2001 mod->skip = 1;
2002 } 2002 }
2003 if (is_vmlinux(modname)) { 2003 if (is_vmlinux(modname)) {
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index f1c4b35bc324..47e75b69a2e9 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -21,7 +21,7 @@ if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
21 21
22 # Is this git on svn? 22 # Is this git on svn?
23 if git config --get svn-remote.svn.url >/dev/null; then 23 if git config --get svn-remote.svn.url >/dev/null; then
24 printf -- '-svn%s' "`git-svn find-rev $head`" 24 printf -- '-svn%s' "`git svn find-rev $head`"
25 fi 25 fi
26 26
27 # Are there uncommitted changes? 27 # Are there uncommitted changes?
diff --git a/security/commoncap.c b/security/commoncap.c
index 7cd61a5f5205..beac0258c2a8 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -916,7 +916,6 @@ changed:
916 return commit_creds(new); 916 return commit_creds(new);
917 917
918no_change: 918no_change:
919 error = 0;
920error: 919error:
921 abort_creds(new); 920 abort_creds(new);
922 return error; 921 return error;
diff --git a/security/keys/request_key.c b/security/keys/request_key.c
index 22a31582bfaa..03fe63ed55bd 100644
--- a/security/keys/request_key.c
+++ b/security/keys/request_key.c
@@ -311,7 +311,8 @@ static int construct_alloc_key(struct key_type *type,
311 311
312 set_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags); 312 set_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags);
313 313
314 down_write(&dest_keyring->sem); 314 if (dest_keyring)
315 down_write(&dest_keyring->sem);
315 316
316 /* attach the key to the destination keyring under lock, but we do need 317 /* attach the key to the destination keyring under lock, but we do need
317 * to do another check just in case someone beat us to it whilst we 318 * to do another check just in case someone beat us to it whilst we
@@ -322,10 +323,12 @@ static int construct_alloc_key(struct key_type *type,
322 if (!IS_ERR(key_ref)) 323 if (!IS_ERR(key_ref))
323 goto key_already_present; 324 goto key_already_present;
324 325
325 __key_link(dest_keyring, key); 326 if (dest_keyring)
327 __key_link(dest_keyring, key);
326 328
327 mutex_unlock(&key_construction_mutex); 329 mutex_unlock(&key_construction_mutex);
328 up_write(&dest_keyring->sem); 330 if (dest_keyring)
331 up_write(&dest_keyring->sem);
329 mutex_unlock(&user->cons_lock); 332 mutex_unlock(&user->cons_lock);
330 *_key = key; 333 *_key = key;
331 kleave(" = 0 [%d]", key_serial(key)); 334 kleave(" = 0 [%d]", key_serial(key));
diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig
index c5c9a9218ff6..c6942a4de99b 100644
--- a/sound/isa/Kconfig
+++ b/sound/isa/Kconfig
@@ -395,16 +395,6 @@ config SND_WAVEFRONT
395 To compile this driver as a module, choose M here: the module 395 To compile this driver as a module, choose M here: the module
396 will be called snd-wavefront. 396 will be called snd-wavefront.
397 397
398config SND_WAVEFRONT_FIRMWARE_IN_KERNEL
399 bool "In-kernel firmware for Wavefront"
400 depends on SND_WAVEFRONT
401 default y
402 help
403 Say Y here to include the static firmware for FX DSP built in
404 the kernel for the Wavefront driver. If you choose N here,
405 you need to install the firmware files from the
406 alsa-firmware package.
407
408config SND_MSND_PINNACLE 398config SND_MSND_PINNACLE
409 tristate "Turtle Beach MultiSound Pinnacle/Fiji driver" 399 tristate "Turtle Beach MultiSound Pinnacle/Fiji driver"
410 depends on X86 && EXPERIMENTAL 400 depends on X86 && EXPERIMENTAL
diff --git a/sound/isa/wavefront/wavefront_fx.c b/sound/isa/wavefront/wavefront_fx.c
index dfc449a2194e..a4345fc07561 100644
--- a/sound/isa/wavefront/wavefront_fx.c
+++ b/sound/isa/wavefront/wavefront_fx.c
@@ -34,14 +34,6 @@
34 34
35#define WAIT_IDLE 0xff 35#define WAIT_IDLE 0xff
36 36
37#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
38#include "yss225.c"
39static const struct firmware yss225_registers_firmware = {
40 .data = (u8 *)yss225_registers,
41 .size = sizeof yss225_registers
42};
43#endif
44
45static int 37static int
46wavefront_fx_idle (snd_wavefront_t *dev) 38wavefront_fx_idle (snd_wavefront_t *dev)
47 39
@@ -260,16 +252,12 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
260 if (dev->fx_initialized) 252 if (dev->fx_initialized)
261 return 0; 253 return 0;
262 254
263#ifdef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
264 firmware = &yss225_registers_firmware;
265#else
266 err = request_firmware(&firmware, "yamaha/yss225_registers.bin", 255 err = request_firmware(&firmware, "yamaha/yss225_registers.bin",
267 dev->card->dev); 256 dev->card->dev);
268 if (err < 0) { 257 if (err < 0) {
269 err = -1; 258 err = -1;
270 goto out; 259 goto out;
271 } 260 }
272#endif
273 261
274 for (i = 0; i + 1 < firmware->size; i += 2) { 262 for (i = 0; i + 1 < firmware->size; i += 2) {
275 if (firmware->data[i] >= 8 && firmware->data[i] < 16) { 263 if (firmware->data[i] >= 8 && firmware->data[i] < 16) {
@@ -292,12 +280,8 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
292 err = 0; 280 err = 0;
293 281
294out: 282out:
295#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
296 release_firmware(firmware); 283 release_firmware(firmware);
297#endif
298 return err; 284 return err;
299} 285}
300 286
301#ifndef CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL
302MODULE_FIRMWARE("yamaha/yss225_registers.bin"); 287MODULE_FIRMWARE("yamaha/yss225_registers.bin");
303#endif
diff --git a/sound/isa/wavefront/yss225.c b/sound/isa/wavefront/yss225.c
deleted file mode 100644
index 9f6be3ff8ecf..000000000000
--- a/sound/isa/wavefront/yss225.c
+++ /dev/null
@@ -1,2739 +0,0 @@
1/*
2 * Copyright (c) 1998-2002 by Paul Davis <pbd@op.net>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
19/* weird stuff, derived from port I/O tracing with dosemu */
20
21static const struct {
22 unsigned char addr;
23 unsigned char data;
24} yss225_registers[] __devinitdata = {
25/* Set all bits for all channels on the MOD unit to zero */
26{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
27{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
28{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
29{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
30{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
31{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
32{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
33{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
34{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
35{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
36{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
37{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
38{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
39{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
40{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
41{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
42{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
43{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
44{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
45{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
46{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
47{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
48{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
49{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
50{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
51{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
52{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
53{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
54{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
55{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
56{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
57{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
58{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
59{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
60{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
61{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
62{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
63{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
64{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
65{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
66{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
67{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
68{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
69{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
70{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
71{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
72{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
73{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
74{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
75{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
76{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
77{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
78{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
79{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
80{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
81{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
82{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
83{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
84{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
85{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
86{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
87{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
88{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
89{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
90{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
91{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
92{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
93{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
94{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
95{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
96{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
97{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
98{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
99{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
100{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
101{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
102{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
103{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
104{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
105{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
106{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
107{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
108{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
109{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
110{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
111{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
112{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
113{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
114{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
115{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
116{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
117{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
118{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
119{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
120{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
121{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
122{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
123{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
124{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
125{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
126{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
127{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
128{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
129{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
130{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
131{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
132{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
133{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
134{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
135{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
136{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
137{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
138{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
139{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
140{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
141{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
142{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
143{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
144{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
145{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
146{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
147{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
148{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
149{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
150{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
151{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
152{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
153{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
154{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
155{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
156{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
157{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
158{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
159{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
160{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
161{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
162{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
163{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
164{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
165{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
166{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
167{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
168{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
169{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
170{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
171{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
172{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
173{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
174{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
175{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
176{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
177{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
178{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
179{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
180{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
181{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
182{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
183{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
184{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
185{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
186{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
187{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
188{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
189{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
190{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
191{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
192{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
193{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
194{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
195{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
196{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
197{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
198{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
199{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
200{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
201{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
202{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
203{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
204{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
205{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
206{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
207{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
208{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
209{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
210{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
211{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
212{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
213{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
214{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
215{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
216{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
217{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
218{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
219{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
220{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
221{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
222{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
223{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
224{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
225{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
226{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
227{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
228{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
229{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
230{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
231{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
232{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
233{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
234{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
235{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
236{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
237{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
238{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
239{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
240{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
241{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
242{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
243{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
244{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
245{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
246{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
247{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
248{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
249{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
250{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
251{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
252{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
253{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
254{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
255{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
256{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
257{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
258{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
259{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
260{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
261{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
262{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
263{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
264{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
265{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
266
267/* XXX But why do this twice? */
268{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
269{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
270{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
271{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
272{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
273{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
274{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
275{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
276{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
277{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
278{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
279{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
280{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
281{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
282{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
283{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
284{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
285{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
286{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
287{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
288{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
289{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
290{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
291{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
292{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
293{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
294{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
295{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
296{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
297{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
298{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
299{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
300{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
301{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
302{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
303{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
304{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
305{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
306{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
307{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
308{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
309{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
310{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
311{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
312{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
313{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
314{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
315{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
316{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
317{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
318{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
319{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
320{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
321{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
322{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
323{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
324{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
325{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
326{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
327{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
328{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
329{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
330{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
331{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
332{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
333{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
334{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
335{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
336{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
337{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
338{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
339{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
340{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
341{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
342{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
343{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
344{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
345{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
346{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
347{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
348{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
349{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
350{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
351{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
352{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
353{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
354{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
355{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
356{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
357{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
358{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
359{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
360{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
361{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
362{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
363{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
364{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
365{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
366{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
367{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
368{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
369{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
370{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
371{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
372{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
373{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
374{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
375{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
376{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
377{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
378{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
379{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
380{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
381{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
382{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
383{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
384{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
385{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
386{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
387{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
388{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
389{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
390{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
391{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
392{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
393{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
394{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
395{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
396{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
397{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
398{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
399{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
400{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
401{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
402{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
403{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
404{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
405{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
406{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
407{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
408{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
409{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
410{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
411{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
412{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
413{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
414{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
415{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
416{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
417{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
418{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
419{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
420{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
421{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
422{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
423{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
424{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
425{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
426{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
427{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
428{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
429{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
430{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
431{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
432{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
433{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
434{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
435{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
436{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
437{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
438{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
439{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
440{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
441{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
442{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
443{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
444{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
445{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
446{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
447{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
448{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
449{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
450{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
451{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
452{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
453{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
454{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
455{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
456{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
457{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
458{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
459{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
460{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
461{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
462{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
463{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
464{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
465{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
466{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
467{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
468{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
469{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
470{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
471{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
472{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
473{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
474{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
475{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
476{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
477{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
478{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
479{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
480{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
481{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
482{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
483{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
484{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
485{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
486{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
487{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
488{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
489{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
490{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
491{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
492{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
493{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
494{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
495{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
496{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
497{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
498{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
499{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
500{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
501{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
502{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
503{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
504{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
505{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
506{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
507{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
508
509/* mute on */
510{ WAIT_IDLE }, { 0x8, 0x02 },
511
512{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 },
513{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 },
514{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 },
515{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 },
516{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 },
517{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
518{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
519{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 },
520{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 },
521
522/* either because of stupidity by TB's programmers, or because it
523 actually does something, rezero the MOD page. */
524{ WAIT_IDLE }, { 0xe, 0x10 }, { 0xf, 0x00 },
525{ WAIT_IDLE }, { 0xe, 0x11 }, { 0xf, 0x00 },
526{ WAIT_IDLE }, { 0xe, 0x12 }, { 0xf, 0x00 },
527{ WAIT_IDLE }, { 0xe, 0x13 }, { 0xf, 0x00 },
528{ WAIT_IDLE }, { 0xe, 0x14 }, { 0xf, 0x00 },
529{ WAIT_IDLE }, { 0xe, 0x15 }, { 0xf, 0x00 },
530{ WAIT_IDLE }, { 0xe, 0x16 }, { 0xf, 0x00 },
531{ WAIT_IDLE }, { 0xe, 0x17 }, { 0xf, 0x00 },
532{ WAIT_IDLE }, { 0xe, 0x18 }, { 0xf, 0x00 },
533{ WAIT_IDLE }, { 0xe, 0x19 }, { 0xf, 0x00 },
534{ WAIT_IDLE }, { 0xe, 0x1a }, { 0xf, 0x00 },
535{ WAIT_IDLE }, { 0xe, 0x1b }, { 0xf, 0x00 },
536{ WAIT_IDLE }, { 0xe, 0x1c }, { 0xf, 0x00 },
537{ WAIT_IDLE }, { 0xe, 0x1d }, { 0xf, 0x00 },
538{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x00 },
539{ WAIT_IDLE }, { 0xe, 0x1f }, { 0xf, 0x00 },
540{ WAIT_IDLE }, { 0xe, 0x20 }, { 0xf, 0x00 },
541{ WAIT_IDLE }, { 0xe, 0x21 }, { 0xf, 0x00 },
542{ WAIT_IDLE }, { 0xe, 0x22 }, { 0xf, 0x00 },
543{ WAIT_IDLE }, { 0xe, 0x23 }, { 0xf, 0x00 },
544{ WAIT_IDLE }, { 0xe, 0x24 }, { 0xf, 0x00 },
545{ WAIT_IDLE }, { 0xe, 0x25 }, { 0xf, 0x00 },
546{ WAIT_IDLE }, { 0xe, 0x26 }, { 0xf, 0x00 },
547{ WAIT_IDLE }, { 0xe, 0x27 }, { 0xf, 0x00 },
548{ WAIT_IDLE }, { 0xe, 0x28 }, { 0xf, 0x00 },
549{ WAIT_IDLE }, { 0xe, 0x29 }, { 0xf, 0x00 },
550{ WAIT_IDLE }, { 0xe, 0x2a }, { 0xf, 0x00 },
551{ WAIT_IDLE }, { 0xe, 0x2b }, { 0xf, 0x00 },
552{ WAIT_IDLE }, { 0xe, 0x2c }, { 0xf, 0x00 },
553{ WAIT_IDLE }, { 0xe, 0x2d }, { 0xf, 0x00 },
554{ WAIT_IDLE }, { 0xe, 0x2e }, { 0xf, 0x00 },
555{ WAIT_IDLE }, { 0xe, 0x2f }, { 0xf, 0x00 },
556{ WAIT_IDLE }, { 0xe, 0x30 }, { 0xf, 0x00 },
557{ WAIT_IDLE }, { 0xe, 0x31 }, { 0xf, 0x00 },
558{ WAIT_IDLE }, { 0xe, 0x32 }, { 0xf, 0x00 },
559{ WAIT_IDLE }, { 0xe, 0x33 }, { 0xf, 0x00 },
560{ WAIT_IDLE }, { 0xe, 0x34 }, { 0xf, 0x00 },
561{ WAIT_IDLE }, { 0xe, 0x35 }, { 0xf, 0x00 },
562{ WAIT_IDLE }, { 0xe, 0x36 }, { 0xf, 0x00 },
563{ WAIT_IDLE }, { 0xe, 0x37 }, { 0xf, 0x00 },
564{ WAIT_IDLE }, { 0xe, 0x38 }, { 0xf, 0x00 },
565{ WAIT_IDLE }, { 0xe, 0x39 }, { 0xf, 0x00 },
566{ WAIT_IDLE }, { 0xe, 0x3a }, { 0xf, 0x00 },
567{ WAIT_IDLE }, { 0xe, 0x3b }, { 0xf, 0x00 },
568{ WAIT_IDLE }, { 0xe, 0x3c }, { 0xf, 0x00 },
569{ WAIT_IDLE }, { 0xe, 0x3d }, { 0xf, 0x00 },
570{ WAIT_IDLE }, { 0xe, 0x3e }, { 0xf, 0x00 },
571{ WAIT_IDLE }, { 0xe, 0x3f }, { 0xf, 0x00 },
572{ WAIT_IDLE }, { 0xe, 0x40 }, { 0xf, 0x00 },
573{ WAIT_IDLE }, { 0xe, 0x41 }, { 0xf, 0x00 },
574{ WAIT_IDLE }, { 0xe, 0x42 }, { 0xf, 0x00 },
575{ WAIT_IDLE }, { 0xe, 0x43 }, { 0xf, 0x00 },
576{ WAIT_IDLE }, { 0xe, 0x44 }, { 0xf, 0x00 },
577{ WAIT_IDLE }, { 0xe, 0x45 }, { 0xf, 0x00 },
578{ WAIT_IDLE }, { 0xe, 0x46 }, { 0xf, 0x00 },
579{ WAIT_IDLE }, { 0xe, 0x47 }, { 0xf, 0x00 },
580{ WAIT_IDLE }, { 0xe, 0x48 }, { 0xf, 0x00 },
581{ WAIT_IDLE }, { 0xe, 0x49 }, { 0xf, 0x00 },
582{ WAIT_IDLE }, { 0xe, 0x4a }, { 0xf, 0x00 },
583{ WAIT_IDLE }, { 0xe, 0x4b }, { 0xf, 0x00 },
584{ WAIT_IDLE }, { 0xe, 0x4c }, { 0xf, 0x00 },
585{ WAIT_IDLE }, { 0xe, 0x4d }, { 0xf, 0x00 },
586{ WAIT_IDLE }, { 0xe, 0x4e }, { 0xf, 0x00 },
587{ WAIT_IDLE }, { 0xe, 0x4f }, { 0xf, 0x00 },
588{ WAIT_IDLE }, { 0xe, 0x50 }, { 0xf, 0x00 },
589{ WAIT_IDLE }, { 0xe, 0x51 }, { 0xf, 0x00 },
590{ WAIT_IDLE }, { 0xe, 0x52 }, { 0xf, 0x00 },
591{ WAIT_IDLE }, { 0xe, 0x53 }, { 0xf, 0x00 },
592{ WAIT_IDLE }, { 0xe, 0x54 }, { 0xf, 0x00 },
593{ WAIT_IDLE }, { 0xe, 0x55 }, { 0xf, 0x00 },
594{ WAIT_IDLE }, { 0xe, 0x56 }, { 0xf, 0x00 },
595{ WAIT_IDLE }, { 0xe, 0x57 }, { 0xf, 0x00 },
596{ WAIT_IDLE }, { 0xe, 0x58 }, { 0xf, 0x00 },
597{ WAIT_IDLE }, { 0xe, 0x59 }, { 0xf, 0x00 },
598{ WAIT_IDLE }, { 0xe, 0x5a }, { 0xf, 0x00 },
599{ WAIT_IDLE }, { 0xe, 0x5b }, { 0xf, 0x00 },
600{ WAIT_IDLE }, { 0xe, 0x5c }, { 0xf, 0x00 },
601{ WAIT_IDLE }, { 0xe, 0x5d }, { 0xf, 0x00 },
602{ WAIT_IDLE }, { 0xe, 0x5e }, { 0xf, 0x00 },
603{ WAIT_IDLE }, { 0xe, 0x5f }, { 0xf, 0x00 },
604{ WAIT_IDLE }, { 0xe, 0x60 }, { 0xf, 0x00 },
605{ WAIT_IDLE }, { 0xe, 0x61 }, { 0xf, 0x00 },
606{ WAIT_IDLE }, { 0xe, 0x62 }, { 0xf, 0x00 },
607{ WAIT_IDLE }, { 0xe, 0x63 }, { 0xf, 0x00 },
608{ WAIT_IDLE }, { 0xe, 0x64 }, { 0xf, 0x00 },
609{ WAIT_IDLE }, { 0xe, 0x65 }, { 0xf, 0x00 },
610{ WAIT_IDLE }, { 0xe, 0x66 }, { 0xf, 0x00 },
611{ WAIT_IDLE }, { 0xe, 0x67 }, { 0xf, 0x00 },
612{ WAIT_IDLE }, { 0xe, 0x68 }, { 0xf, 0x00 },
613{ WAIT_IDLE }, { 0xe, 0x69 }, { 0xf, 0x00 },
614{ WAIT_IDLE }, { 0xe, 0x6a }, { 0xf, 0x00 },
615{ WAIT_IDLE }, { 0xe, 0x6b }, { 0xf, 0x00 },
616{ WAIT_IDLE }, { 0xe, 0x6c }, { 0xf, 0x00 },
617{ WAIT_IDLE }, { 0xe, 0x6d }, { 0xf, 0x00 },
618{ WAIT_IDLE }, { 0xe, 0x6e }, { 0xf, 0x00 },
619{ WAIT_IDLE }, { 0xe, 0x6f }, { 0xf, 0x00 },
620{ WAIT_IDLE }, { 0xe, 0x70 }, { 0xf, 0x00 },
621{ WAIT_IDLE }, { 0xe, 0x71 }, { 0xf, 0x00 },
622{ WAIT_IDLE }, { 0xe, 0x72 }, { 0xf, 0x00 },
623{ WAIT_IDLE }, { 0xe, 0x73 }, { 0xf, 0x00 },
624{ WAIT_IDLE }, { 0xe, 0x74 }, { 0xf, 0x00 },
625{ WAIT_IDLE }, { 0xe, 0x75 }, { 0xf, 0x00 },
626{ WAIT_IDLE }, { 0xe, 0x76 }, { 0xf, 0x00 },
627{ WAIT_IDLE }, { 0xe, 0x77 }, { 0xf, 0x00 },
628{ WAIT_IDLE }, { 0xe, 0x78 }, { 0xf, 0x00 },
629{ WAIT_IDLE }, { 0xe, 0x79 }, { 0xf, 0x00 },
630{ WAIT_IDLE }, { 0xe, 0x7a }, { 0xf, 0x00 },
631{ WAIT_IDLE }, { 0xe, 0x7b }, { 0xf, 0x00 },
632{ WAIT_IDLE }, { 0xe, 0x7c }, { 0xf, 0x00 },
633{ WAIT_IDLE }, { 0xe, 0x7d }, { 0xf, 0x00 },
634{ WAIT_IDLE }, { 0xe, 0x7e }, { 0xf, 0x00 },
635{ WAIT_IDLE }, { 0xe, 0x7f }, { 0xf, 0x00 },
636{ WAIT_IDLE }, { 0xe, 0x80 }, { 0xf, 0x00 },
637{ WAIT_IDLE }, { 0xe, 0x81 }, { 0xf, 0x00 },
638{ WAIT_IDLE }, { 0xe, 0x82 }, { 0xf, 0x00 },
639{ WAIT_IDLE }, { 0xe, 0x83 }, { 0xf, 0x00 },
640{ WAIT_IDLE }, { 0xe, 0x84 }, { 0xf, 0x00 },
641{ WAIT_IDLE }, { 0xe, 0x85 }, { 0xf, 0x00 },
642{ WAIT_IDLE }, { 0xe, 0x86 }, { 0xf, 0x00 },
643{ WAIT_IDLE }, { 0xe, 0x87 }, { 0xf, 0x00 },
644{ WAIT_IDLE }, { 0xe, 0x88 }, { 0xf, 0x00 },
645{ WAIT_IDLE }, { 0xe, 0x89 }, { 0xf, 0x00 },
646{ WAIT_IDLE }, { 0xe, 0x8a }, { 0xf, 0x00 },
647{ WAIT_IDLE }, { 0xe, 0x8b }, { 0xf, 0x00 },
648{ WAIT_IDLE }, { 0xe, 0x8c }, { 0xf, 0x00 },
649{ WAIT_IDLE }, { 0xe, 0x8d }, { 0xf, 0x00 },
650{ WAIT_IDLE }, { 0xe, 0x8e }, { 0xf, 0x00 },
651{ WAIT_IDLE }, { 0xe, 0x8f }, { 0xf, 0x00 },
652{ WAIT_IDLE }, { 0xe, 0x90 }, { 0xf, 0x00 },
653{ WAIT_IDLE }, { 0xe, 0x91 }, { 0xf, 0x00 },
654{ WAIT_IDLE }, { 0xe, 0x92 }, { 0xf, 0x00 },
655{ WAIT_IDLE }, { 0xe, 0x93 }, { 0xf, 0x00 },
656{ WAIT_IDLE }, { 0xe, 0x94 }, { 0xf, 0x00 },
657{ WAIT_IDLE }, { 0xe, 0x95 }, { 0xf, 0x00 },
658{ WAIT_IDLE }, { 0xe, 0x96 }, { 0xf, 0x00 },
659{ WAIT_IDLE }, { 0xe, 0x97 }, { 0xf, 0x00 },
660{ WAIT_IDLE }, { 0xe, 0x98 }, { 0xf, 0x00 },
661{ WAIT_IDLE }, { 0xe, 0x99 }, { 0xf, 0x00 },
662{ WAIT_IDLE }, { 0xe, 0x9a }, { 0xf, 0x00 },
663{ WAIT_IDLE }, { 0xe, 0x9b }, { 0xf, 0x00 },
664{ WAIT_IDLE }, { 0xe, 0x9c }, { 0xf, 0x00 },
665{ WAIT_IDLE }, { 0xe, 0x9d }, { 0xf, 0x00 },
666{ WAIT_IDLE }, { 0xe, 0x9e }, { 0xf, 0x00 },
667{ WAIT_IDLE }, { 0xe, 0x9f }, { 0xf, 0x00 },
668{ WAIT_IDLE }, { 0xe, 0xa0 }, { 0xf, 0x00 },
669{ WAIT_IDLE }, { 0xe, 0xa1 }, { 0xf, 0x00 },
670{ WAIT_IDLE }, { 0xe, 0xa2 }, { 0xf, 0x00 },
671{ WAIT_IDLE }, { 0xe, 0xa3 }, { 0xf, 0x00 },
672{ WAIT_IDLE }, { 0xe, 0xa4 }, { 0xf, 0x00 },
673{ WAIT_IDLE }, { 0xe, 0xa5 }, { 0xf, 0x00 },
674{ WAIT_IDLE }, { 0xe, 0xa6 }, { 0xf, 0x00 },
675{ WAIT_IDLE }, { 0xe, 0xa7 }, { 0xf, 0x00 },
676{ WAIT_IDLE }, { 0xe, 0xa8 }, { 0xf, 0x00 },
677{ WAIT_IDLE }, { 0xe, 0xa9 }, { 0xf, 0x00 },
678{ WAIT_IDLE }, { 0xe, 0xaa }, { 0xf, 0x00 },
679{ WAIT_IDLE }, { 0xe, 0xab }, { 0xf, 0x00 },
680{ WAIT_IDLE }, { 0xe, 0xac }, { 0xf, 0x00 },
681{ WAIT_IDLE }, { 0xe, 0xad }, { 0xf, 0x00 },
682{ WAIT_IDLE }, { 0xe, 0xae }, { 0xf, 0x00 },
683{ WAIT_IDLE }, { 0xe, 0xaf }, { 0xf, 0x00 },
684{ WAIT_IDLE }, { 0xe, 0xb0 }, { 0xf, 0x00 },
685{ WAIT_IDLE }, { 0xe, 0xb1 }, { 0xf, 0x00 },
686{ WAIT_IDLE }, { 0xe, 0xb2 }, { 0xf, 0x00 },
687{ WAIT_IDLE }, { 0xe, 0xb3 }, { 0xf, 0x00 },
688{ WAIT_IDLE }, { 0xe, 0xb4 }, { 0xf, 0x00 },
689{ WAIT_IDLE }, { 0xe, 0xb5 }, { 0xf, 0x00 },
690{ WAIT_IDLE }, { 0xe, 0xb6 }, { 0xf, 0x00 },
691{ WAIT_IDLE }, { 0xe, 0xb7 }, { 0xf, 0x00 },
692{ WAIT_IDLE }, { 0xe, 0xb8 }, { 0xf, 0x00 },
693{ WAIT_IDLE }, { 0xe, 0xb9 }, { 0xf, 0x00 },
694{ WAIT_IDLE }, { 0xe, 0xba }, { 0xf, 0x00 },
695{ WAIT_IDLE }, { 0xe, 0xbb }, { 0xf, 0x00 },
696{ WAIT_IDLE }, { 0xe, 0xbc }, { 0xf, 0x00 },
697{ WAIT_IDLE }, { 0xe, 0xbd }, { 0xf, 0x00 },
698{ WAIT_IDLE }, { 0xe, 0xbe }, { 0xf, 0x00 },
699{ WAIT_IDLE }, { 0xe, 0xbf }, { 0xf, 0x00 },
700{ WAIT_IDLE }, { 0xe, 0xc0 }, { 0xf, 0x00 },
701{ WAIT_IDLE }, { 0xe, 0xc1 }, { 0xf, 0x00 },
702{ WAIT_IDLE }, { 0xe, 0xc2 }, { 0xf, 0x00 },
703{ WAIT_IDLE }, { 0xe, 0xc3 }, { 0xf, 0x00 },
704{ WAIT_IDLE }, { 0xe, 0xc4 }, { 0xf, 0x00 },
705{ WAIT_IDLE }, { 0xe, 0xc5 }, { 0xf, 0x00 },
706{ WAIT_IDLE }, { 0xe, 0xc6 }, { 0xf, 0x00 },
707{ WAIT_IDLE }, { 0xe, 0xc7 }, { 0xf, 0x00 },
708{ WAIT_IDLE }, { 0xe, 0xc8 }, { 0xf, 0x00 },
709{ WAIT_IDLE }, { 0xe, 0xc9 }, { 0xf, 0x00 },
710{ WAIT_IDLE }, { 0xe, 0xca }, { 0xf, 0x00 },
711{ WAIT_IDLE }, { 0xe, 0xcb }, { 0xf, 0x00 },
712{ WAIT_IDLE }, { 0xe, 0xcc }, { 0xf, 0x00 },
713{ WAIT_IDLE }, { 0xe, 0xcd }, { 0xf, 0x00 },
714{ WAIT_IDLE }, { 0xe, 0xce }, { 0xf, 0x00 },
715{ WAIT_IDLE }, { 0xe, 0xcf }, { 0xf, 0x00 },
716{ WAIT_IDLE }, { 0xe, 0xd0 }, { 0xf, 0x00 },
717{ WAIT_IDLE }, { 0xe, 0xd1 }, { 0xf, 0x00 },
718{ WAIT_IDLE }, { 0xe, 0xd2 }, { 0xf, 0x00 },
719{ WAIT_IDLE }, { 0xe, 0xd3 }, { 0xf, 0x00 },
720{ WAIT_IDLE }, { 0xe, 0xd4 }, { 0xf, 0x00 },
721{ WAIT_IDLE }, { 0xe, 0xd5 }, { 0xf, 0x00 },
722{ WAIT_IDLE }, { 0xe, 0xd6 }, { 0xf, 0x00 },
723{ WAIT_IDLE }, { 0xe, 0xd7 }, { 0xf, 0x00 },
724{ WAIT_IDLE }, { 0xe, 0xd8 }, { 0xf, 0x00 },
725{ WAIT_IDLE }, { 0xe, 0xd9 }, { 0xf, 0x00 },
726{ WAIT_IDLE }, { 0xe, 0xda }, { 0xf, 0x00 },
727{ WAIT_IDLE }, { 0xe, 0xdb }, { 0xf, 0x00 },
728{ WAIT_IDLE }, { 0xe, 0xdc }, { 0xf, 0x00 },
729{ WAIT_IDLE }, { 0xe, 0xdd }, { 0xf, 0x00 },
730{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x00 },
731{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x00 },
732{ WAIT_IDLE }, { 0xe, 0xe0 }, { 0xf, 0x00 },
733{ WAIT_IDLE }, { 0xe, 0xe1 }, { 0xf, 0x00 },
734{ WAIT_IDLE }, { 0xe, 0xe2 }, { 0xf, 0x00 },
735{ WAIT_IDLE }, { 0xe, 0xe3 }, { 0xf, 0x00 },
736{ WAIT_IDLE }, { 0xe, 0xe4 }, { 0xf, 0x00 },
737{ WAIT_IDLE }, { 0xe, 0xe5 }, { 0xf, 0x00 },
738{ WAIT_IDLE }, { 0xe, 0xe6 }, { 0xf, 0x00 },
739{ WAIT_IDLE }, { 0xe, 0xe7 }, { 0xf, 0x00 },
740{ WAIT_IDLE }, { 0xe, 0xe8 }, { 0xf, 0x00 },
741{ WAIT_IDLE }, { 0xe, 0xe9 }, { 0xf, 0x00 },
742{ WAIT_IDLE }, { 0xe, 0xea }, { 0xf, 0x00 },
743{ WAIT_IDLE }, { 0xe, 0xeb }, { 0xf, 0x00 },
744{ WAIT_IDLE }, { 0xe, 0xec }, { 0xf, 0x00 },
745{ WAIT_IDLE }, { 0xe, 0xed }, { 0xf, 0x00 },
746{ WAIT_IDLE }, { 0xe, 0xee }, { 0xf, 0x00 },
747{ WAIT_IDLE }, { 0xe, 0xef }, { 0xf, 0x00 },
748{ WAIT_IDLE }, { 0xe, 0xf0 }, { 0xf, 0x00 },
749{ WAIT_IDLE }, { 0xe, 0xf1 }, { 0xf, 0x00 },
750{ WAIT_IDLE }, { 0xe, 0xf2 }, { 0xf, 0x00 },
751{ WAIT_IDLE }, { 0xe, 0xf3 }, { 0xf, 0x00 },
752{ WAIT_IDLE }, { 0xe, 0xf4 }, { 0xf, 0x00 },
753{ WAIT_IDLE }, { 0xe, 0xf5 }, { 0xf, 0x00 },
754{ WAIT_IDLE }, { 0xe, 0xf6 }, { 0xf, 0x00 },
755{ WAIT_IDLE }, { 0xe, 0xf7 }, { 0xf, 0x00 },
756{ WAIT_IDLE }, { 0xe, 0xf8 }, { 0xf, 0x00 },
757{ WAIT_IDLE }, { 0xe, 0xf9 }, { 0xf, 0x00 },
758{ WAIT_IDLE }, { 0xe, 0xfa }, { 0xf, 0x00 },
759{ WAIT_IDLE }, { 0xe, 0xfb }, { 0xf, 0x00 },
760{ WAIT_IDLE }, { 0xe, 0xfc }, { 0xf, 0x00 },
761{ WAIT_IDLE }, { 0xe, 0xfd }, { 0xf, 0x00 },
762{ WAIT_IDLE }, { 0xe, 0xfe }, { 0xf, 0x00 },
763{ WAIT_IDLE }, { 0xe, 0xff }, { 0xf, 0x00 },
764
765/* load page zero */
766{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x00 },
767
768{ 0xd, 0x01 }, { 0xc, 0x7c }, { WAIT_IDLE },
769{ 0xd, 0x00 }, { 0xc, 0x1e }, { WAIT_IDLE },
770{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
771{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
772{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
773{ 0xd, 0x00 }, { 0xc, 0x11 }, { WAIT_IDLE },
774{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
775{ 0xd, 0x00 }, { 0xc, 0x32 }, { WAIT_IDLE },
776{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
777{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
778{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
779{ 0xd, 0x00 }, { 0xc, 0x14 }, { WAIT_IDLE },
780{ 0xd, 0x02 }, { 0xc, 0x76 }, { WAIT_IDLE },
781{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
782{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
783{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
784{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
785{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
786{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
787{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
788{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
789{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
790{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
791{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
792{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
793{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
794{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
795{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
796{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
797{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
798{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
799{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
800{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
801{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
802{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
803{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
804{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
805{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
806{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
807{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
808{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
809{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
810{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
811{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
812{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
813{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
814{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
815{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
816{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
817{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
818{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
819{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
820{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
821{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
822{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
823{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
824{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
825{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
826{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
827{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
828{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
829{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
830{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
831{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
832{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
833{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
834{ 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
835{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
836{ 0xd, 0x01 }, { 0xc, 0x40 }, { WAIT_IDLE },
837{ 0xd, 0x01 }, { 0xc, 0x17 }, { WAIT_IDLE },
838{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
839{ 0xd, 0x01 }, { 0xc, 0x80 }, { WAIT_IDLE },
840{ 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
841{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
842{ 0xd, 0x01 }, { 0xc, 0xa0 }, { WAIT_IDLE },
843{ 0xd, 0x03 }, { 0xc, 0xd1 }, { WAIT_IDLE },
844{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
845{ 0xd, 0x01 }, { 0xc, 0xf2 }, { WAIT_IDLE },
846{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
847{ 0xd, 0x00 }, { 0xc, 0x13 }, { WAIT_IDLE },
848{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
849{ 0xd, 0x00 }, { 0xc, 0xf4 }, { WAIT_IDLE },
850{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
851{ 0xd, 0x00 }, { 0xc, 0x15 }, { WAIT_IDLE },
852{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
853{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
854{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
855{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
856{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
857{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
858{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
859{ 0xd, 0x00 }, { 0xc, 0x50 }, { WAIT_IDLE },
860{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
861{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
862{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
863{ 0xd, 0x00 }, { 0xc, 0x71 }, { WAIT_IDLE },
864{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
865{ 0xd, 0x00 }, { 0xc, 0x60 }, { WAIT_IDLE },
866{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
867{ 0xd, 0x00 }, { 0xc, 0x92 }, { WAIT_IDLE },
868{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
869{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
870{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
871{ 0xd, 0x00 }, { 0xc, 0xb3 }, { WAIT_IDLE },
872{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
873{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
874{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
875{ 0xd, 0x00 }, { 0xc, 0xd4 }, { WAIT_IDLE },
876{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
877{ 0xd, 0x00 }, { 0xc, 0x40 }, { WAIT_IDLE },
878{ 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
879{ 0xd, 0x00 }, { 0xc, 0xf5 }, { WAIT_IDLE },
880{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
881{ 0xd, 0x00 }, { 0xc, 0x70 }, { WAIT_IDLE },
882{ 0xd, 0x00 }, { 0xc, 0xa0 }, { WAIT_IDLE },
883{ 0xd, 0x02 }, { 0xc, 0x11 }, { WAIT_IDLE },
884{ 0xd, 0x00 }, { 0xc, 0x16 }, { WAIT_IDLE },
885{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
886{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
887{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
888{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
889{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
890{ 0xd, 0x00 }, { 0xc, 0x20 }, { WAIT_IDLE },
891{ 0xd, 0x00 }, { 0xc, 0x10 }, { WAIT_IDLE },
892{ 0xd, 0x00 }, { 0xc, 0x17 }, { WAIT_IDLE },
893{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
894{ 0xd, 0x00 }, { 0xc, 0x1d }, { WAIT_IDLE },
895{ 0xd, 0x02 }, { 0xc, 0xdf }, { WAIT_IDLE },
896
897/* Now load page one */
898{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x00 },
899
900{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
901{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
902{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
903{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
904{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
905{ 0xd, 0x00 }, { 0xc, 0x1f }, { WAIT_IDLE },
906{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
907{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
908{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
909{ 0xd, 0x03 }, { 0xc, 0xd8 }, { WAIT_IDLE },
910{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
911{ 0xd, 0x02 }, { 0xc, 0x20 }, { WAIT_IDLE },
912{ 0xd, 0x00 }, { 0xc, 0x19 }, { WAIT_IDLE },
913{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
914{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
915{ 0xd, 0x00 }, { 0xc, 0x18 }, { WAIT_IDLE },
916{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
917{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
918{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
919{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
920{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
921{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
922{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
923{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
924{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
925{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
926{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
927{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
928{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
929{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
930{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
931{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
932{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
933{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
934{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
935{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
936{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
937{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
938{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
939{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
940{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
941{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
942{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
943{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
944{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
945{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
946{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
947{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
948{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
949{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
950{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
951{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
952{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
953{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
954{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
955{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
956{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
957{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
958{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
959{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
960{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
961{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
962{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
963{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
964{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
965{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
966{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
967{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
968{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
969{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
970{ 0xd, 0x02 }, { 0xc, 0x80 }, { WAIT_IDLE },
971{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
972{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
973{ 0xd, 0x02 }, { 0xc, 0xa0 }, { WAIT_IDLE },
974{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
975{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
976{ 0xd, 0x02 }, { 0xc, 0xd7 }, { WAIT_IDLE },
977{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
978{ 0xd, 0x02 }, { 0xc, 0xf7 }, { WAIT_IDLE },
979{ 0xd, 0x03 }, { 0xc, 0x20 }, { WAIT_IDLE },
980{ 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
981{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
982{ 0xd, 0x00 }, { 0xc, 0x1c }, { WAIT_IDLE },
983{ 0xd, 0x03 }, { 0xc, 0x3c }, { WAIT_IDLE },
984{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
985{ 0xd, 0x03 }, { 0xc, 0x3f }, { WAIT_IDLE },
986{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
987{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
988{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
989{ 0xd, 0x03 }, { 0xc, 0xdf }, { WAIT_IDLE },
990{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
991{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
992{ 0xd, 0x03 }, { 0xc, 0x5d }, { WAIT_IDLE },
993{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
994{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
995{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
996{ 0xd, 0x03 }, { 0xc, 0x7d }, { WAIT_IDLE },
997{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
998{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
999{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1000{ 0xd, 0x03 }, { 0xc, 0x9e }, { WAIT_IDLE },
1001{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1002{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1003{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1004{ 0xd, 0x03 }, { 0xc, 0xbe }, { WAIT_IDLE },
1005{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1006{ 0xd, 0x03 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1007{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1008{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1009{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1010{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1011{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
1012{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1013{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1014{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1015{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
1016{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1017{ 0xd, 0x02 }, { 0xc, 0xdb }, { WAIT_IDLE },
1018{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1019{ 0xd, 0x02 }, { 0xc, 0xe0 }, { WAIT_IDLE },
1020{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1021{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
1022{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1023{ 0xd, 0x02 }, { 0xc, 0xc0 }, { WAIT_IDLE },
1024{ 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1025{ 0xd, 0x02 }, { 0xc, 0xfb }, { WAIT_IDLE },
1026{ 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1027{ 0xd, 0x00 }, { 0xc, 0x1b }, { WAIT_IDLE },
1028
1029{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x00 },
1030
1031{ 0xc, 0xc4 }, { WAIT_IDLE },
1032{ 0xc, 0x00 }, { WAIT_IDLE },
1033{ 0xc, 0x44 }, { WAIT_IDLE },
1034{ 0xc, 0x07 }, { WAIT_IDLE },
1035{ 0xc, 0x44 }, { WAIT_IDLE },
1036{ 0xc, 0x00 }, { WAIT_IDLE },
1037{ 0xc, 0x40 }, { WAIT_IDLE },
1038{ 0xc, 0x25 }, { WAIT_IDLE },
1039{ 0xc, 0x01 }, { WAIT_IDLE },
1040{ 0xc, 0x06 }, { WAIT_IDLE },
1041{ 0xc, 0xc4 }, { WAIT_IDLE },
1042{ 0xc, 0x07 }, { WAIT_IDLE },
1043{ 0xc, 0x40 }, { WAIT_IDLE },
1044{ 0xc, 0x25 }, { WAIT_IDLE },
1045{ 0xc, 0x01 }, { WAIT_IDLE },
1046{ 0xc, 0x00 }, { WAIT_IDLE },
1047{ 0xc, 0x46 }, { WAIT_IDLE },
1048{ 0xc, 0x46 }, { WAIT_IDLE },
1049{ 0xc, 0x00 }, { WAIT_IDLE },
1050{ 0xc, 0x00 }, { WAIT_IDLE },
1051{ 0xc, 0x00 }, { WAIT_IDLE },
1052{ 0xc, 0x00 }, { WAIT_IDLE },
1053{ 0xc, 0x00 }, { WAIT_IDLE },
1054{ 0xc, 0x00 }, { WAIT_IDLE },
1055{ 0xc, 0x00 }, { WAIT_IDLE },
1056{ 0xc, 0x00 }, { WAIT_IDLE },
1057{ 0xc, 0x00 }, { WAIT_IDLE },
1058{ 0xc, 0x00 }, { WAIT_IDLE },
1059{ 0xc, 0x00 }, { WAIT_IDLE },
1060{ 0xc, 0x00 }, { WAIT_IDLE },
1061{ 0xc, 0x00 }, { WAIT_IDLE },
1062{ 0xc, 0x00 }, { WAIT_IDLE },
1063{ 0xc, 0x00 }, { WAIT_IDLE },
1064{ 0xc, 0x00 }, { WAIT_IDLE },
1065{ 0xc, 0x00 }, { WAIT_IDLE },
1066{ 0xc, 0x00 }, { WAIT_IDLE },
1067{ 0xc, 0x00 }, { WAIT_IDLE },
1068{ 0xc, 0x00 }, { WAIT_IDLE },
1069{ 0xc, 0x00 }, { WAIT_IDLE },
1070{ 0xc, 0x00 }, { WAIT_IDLE },
1071{ 0xc, 0x00 }, { WAIT_IDLE },
1072{ 0xc, 0x00 }, { WAIT_IDLE },
1073{ 0xc, 0x00 }, { WAIT_IDLE },
1074{ 0xc, 0x00 }, { WAIT_IDLE },
1075{ 0xc, 0x00 }, { WAIT_IDLE },
1076{ 0xc, 0x00 }, { WAIT_IDLE },
1077{ 0xc, 0x00 }, { WAIT_IDLE },
1078{ 0xc, 0x00 }, { WAIT_IDLE },
1079{ 0xc, 0x00 }, { WAIT_IDLE },
1080{ 0xc, 0x00 }, { WAIT_IDLE },
1081{ 0xc, 0x00 }, { WAIT_IDLE },
1082{ 0xc, 0x00 }, { WAIT_IDLE },
1083{ 0xc, 0x00 }, { WAIT_IDLE },
1084{ 0xc, 0x00 }, { WAIT_IDLE },
1085{ 0xc, 0x00 }, { WAIT_IDLE },
1086{ 0xc, 0x00 }, { WAIT_IDLE },
1087{ 0xc, 0x00 }, { WAIT_IDLE },
1088{ 0xc, 0x00 }, { WAIT_IDLE },
1089{ 0xc, 0x00 }, { WAIT_IDLE },
1090{ 0xc, 0x00 }, { WAIT_IDLE },
1091{ 0xc, 0x00 }, { WAIT_IDLE },
1092{ 0xc, 0x00 }, { WAIT_IDLE },
1093{ 0xc, 0x00 }, { WAIT_IDLE },
1094{ 0xc, 0x00 }, { WAIT_IDLE },
1095{ 0xc, 0x46 }, { WAIT_IDLE },
1096{ 0xc, 0x07 }, { WAIT_IDLE },
1097{ 0xc, 0x05 }, { WAIT_IDLE },
1098{ 0xc, 0x05 }, { WAIT_IDLE },
1099{ 0xc, 0x05 }, { WAIT_IDLE },
1100{ 0xc, 0x04 }, { WAIT_IDLE },
1101{ 0xc, 0x07 }, { WAIT_IDLE },
1102{ 0xc, 0x05 }, { WAIT_IDLE },
1103{ 0xc, 0x04 }, { WAIT_IDLE },
1104{ 0xc, 0x07 }, { WAIT_IDLE },
1105{ 0xc, 0x05 }, { WAIT_IDLE },
1106{ 0xc, 0x44 }, { WAIT_IDLE },
1107{ 0xc, 0x46 }, { WAIT_IDLE },
1108{ 0xc, 0x44 }, { WAIT_IDLE },
1109{ 0xc, 0x46 }, { WAIT_IDLE },
1110{ 0xc, 0x46 }, { WAIT_IDLE },
1111{ 0xc, 0x07 }, { WAIT_IDLE },
1112{ 0xc, 0x05 }, { WAIT_IDLE },
1113{ 0xc, 0x44 }, { WAIT_IDLE },
1114{ 0xc, 0x46 }, { WAIT_IDLE },
1115{ 0xc, 0x05 }, { WAIT_IDLE },
1116{ 0xc, 0x46 }, { WAIT_IDLE },
1117{ 0xc, 0x05 }, { WAIT_IDLE },
1118{ 0xc, 0x46 }, { WAIT_IDLE },
1119{ 0xc, 0x05 }, { WAIT_IDLE },
1120{ 0xc, 0x46 }, { WAIT_IDLE },
1121{ 0xc, 0x05 }, { WAIT_IDLE },
1122{ 0xc, 0x44 }, { WAIT_IDLE },
1123{ 0xc, 0x46 }, { WAIT_IDLE },
1124{ 0xc, 0x05 }, { WAIT_IDLE },
1125{ 0xc, 0x07 }, { WAIT_IDLE },
1126{ 0xc, 0x44 }, { WAIT_IDLE },
1127{ 0xc, 0x46 }, { WAIT_IDLE },
1128{ 0xc, 0x05 }, { WAIT_IDLE },
1129{ 0xc, 0x07 }, { WAIT_IDLE },
1130{ 0xc, 0x44 }, { WAIT_IDLE },
1131{ 0xc, 0x46 }, { WAIT_IDLE },
1132{ 0xc, 0x05 }, { WAIT_IDLE },
1133{ 0xc, 0x07 }, { WAIT_IDLE },
1134{ 0xc, 0x44 }, { WAIT_IDLE },
1135{ 0xc, 0x46 }, { WAIT_IDLE },
1136{ 0xc, 0x05 }, { WAIT_IDLE },
1137{ 0xc, 0x07 }, { WAIT_IDLE },
1138{ 0xc, 0x44 }, { WAIT_IDLE },
1139{ 0xc, 0x05 }, { WAIT_IDLE },
1140{ 0xc, 0x05 }, { WAIT_IDLE },
1141{ 0xc, 0x05 }, { WAIT_IDLE },
1142{ 0xc, 0x44 }, { WAIT_IDLE },
1143{ 0xc, 0x05 }, { WAIT_IDLE },
1144{ 0xc, 0x05 }, { WAIT_IDLE },
1145{ 0xc, 0x05 }, { WAIT_IDLE },
1146{ 0xc, 0x46 }, { WAIT_IDLE },
1147{ 0xc, 0x05 }, { WAIT_IDLE },
1148{ 0xc, 0x46 }, { WAIT_IDLE },
1149{ 0xc, 0x05 }, { WAIT_IDLE },
1150{ 0xc, 0x46 }, { WAIT_IDLE },
1151{ 0xc, 0x05 }, { WAIT_IDLE },
1152{ 0xc, 0x46 }, { WAIT_IDLE },
1153{ 0xc, 0x05 }, { WAIT_IDLE },
1154{ 0xc, 0x46 }, { WAIT_IDLE },
1155{ 0xc, 0x07 }, { WAIT_IDLE },
1156{ 0xc, 0x46 }, { WAIT_IDLE },
1157{ 0xc, 0x07 }, { WAIT_IDLE },
1158{ 0xc, 0x44 }, { WAIT_IDLE },
1159
1160{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x00 },
1161
1162{ 0xc, 0x07 }, { WAIT_IDLE },
1163{ 0xc, 0x40 }, { WAIT_IDLE },
1164{ 0xc, 0x00 }, { WAIT_IDLE },
1165{ 0xc, 0x00 }, { WAIT_IDLE },
1166{ 0xc, 0x00 }, { WAIT_IDLE },
1167{ 0xc, 0x47 }, { WAIT_IDLE },
1168{ 0xc, 0x00 }, { WAIT_IDLE },
1169{ 0xc, 0x40 }, { WAIT_IDLE },
1170{ 0xc, 0x00 }, { WAIT_IDLE },
1171{ 0xc, 0x40 }, { WAIT_IDLE },
1172{ 0xc, 0x06 }, { WAIT_IDLE },
1173{ 0xc, 0x40 }, { WAIT_IDLE },
1174{ 0xc, 0x00 }, { WAIT_IDLE },
1175{ 0xc, 0x00 }, { WAIT_IDLE },
1176{ 0xc, 0x00 }, { WAIT_IDLE },
1177{ 0xc, 0x00 }, { WAIT_IDLE },
1178{ 0xc, 0x00 }, { WAIT_IDLE },
1179{ 0xc, 0x00 }, { WAIT_IDLE },
1180{ 0xc, 0x00 }, { WAIT_IDLE },
1181{ 0xc, 0x00 }, { WAIT_IDLE },
1182{ 0xc, 0x00 }, { WAIT_IDLE },
1183{ 0xc, 0x00 }, { WAIT_IDLE },
1184{ 0xc, 0x00 }, { WAIT_IDLE },
1185{ 0xc, 0x00 }, { WAIT_IDLE },
1186{ 0xc, 0x00 }, { WAIT_IDLE },
1187{ 0xc, 0x00 }, { WAIT_IDLE },
1188{ 0xc, 0x00 }, { WAIT_IDLE },
1189{ 0xc, 0x00 }, { WAIT_IDLE },
1190{ 0xc, 0x00 }, { WAIT_IDLE },
1191{ 0xc, 0x00 }, { WAIT_IDLE },
1192{ 0xc, 0x00 }, { WAIT_IDLE },
1193{ 0xc, 0x00 }, { WAIT_IDLE },
1194{ 0xc, 0x00 }, { WAIT_IDLE },
1195{ 0xc, 0x00 }, { WAIT_IDLE },
1196{ 0xc, 0x00 }, { WAIT_IDLE },
1197{ 0xc, 0x00 }, { WAIT_IDLE },
1198{ 0xc, 0x00 }, { WAIT_IDLE },
1199{ 0xc, 0x00 }, { WAIT_IDLE },
1200{ 0xc, 0x00 }, { WAIT_IDLE },
1201{ 0xc, 0x00 }, { WAIT_IDLE },
1202{ 0xc, 0x00 }, { WAIT_IDLE },
1203{ 0xc, 0x00 }, { WAIT_IDLE },
1204{ 0xc, 0x00 }, { WAIT_IDLE },
1205{ 0xc, 0x00 }, { WAIT_IDLE },
1206{ 0xc, 0x00 }, { WAIT_IDLE },
1207{ 0xc, 0x00 }, { WAIT_IDLE },
1208{ 0xc, 0x00 }, { WAIT_IDLE },
1209{ 0xc, 0x00 }, { WAIT_IDLE },
1210{ 0xc, 0x00 }, { WAIT_IDLE },
1211{ 0xc, 0x00 }, { WAIT_IDLE },
1212{ 0xc, 0x00 }, { WAIT_IDLE },
1213{ 0xc, 0x00 }, { WAIT_IDLE },
1214{ 0xc, 0x00 }, { WAIT_IDLE },
1215{ 0xc, 0x00 }, { WAIT_IDLE },
1216{ 0xc, 0x00 }, { WAIT_IDLE },
1217{ 0xc, 0x00 }, { WAIT_IDLE },
1218{ 0xc, 0x00 }, { WAIT_IDLE },
1219{ 0xc, 0x00 }, { WAIT_IDLE },
1220{ 0xc, 0x00 }, { WAIT_IDLE },
1221{ 0xc, 0x00 }, { WAIT_IDLE },
1222{ 0xc, 0x00 }, { WAIT_IDLE },
1223{ 0xc, 0x00 }, { WAIT_IDLE },
1224{ 0xc, 0x00 }, { WAIT_IDLE },
1225{ 0xc, 0x00 }, { WAIT_IDLE },
1226{ 0xc, 0x80 }, { WAIT_IDLE },
1227{ 0xc, 0x80 }, { WAIT_IDLE },
1228{ 0xc, 0xc0 }, { WAIT_IDLE },
1229{ 0xc, 0x00 }, { WAIT_IDLE },
1230{ 0xc, 0x00 }, { WAIT_IDLE },
1231{ 0xc, 0x40 }, { WAIT_IDLE },
1232{ 0xc, 0x00 }, { WAIT_IDLE },
1233{ 0xc, 0x00 }, { WAIT_IDLE },
1234{ 0xc, 0x00 }, { WAIT_IDLE },
1235{ 0xc, 0x40 }, { WAIT_IDLE },
1236{ 0xc, 0x00 }, { WAIT_IDLE },
1237{ 0xc, 0x40 }, { WAIT_IDLE },
1238{ 0xc, 0x00 }, { WAIT_IDLE },
1239{ 0xc, 0x60 }, { WAIT_IDLE },
1240{ 0xc, 0x00 }, { WAIT_IDLE },
1241{ 0xc, 0x70 }, { WAIT_IDLE },
1242{ 0xc, 0x00 }, { WAIT_IDLE },
1243{ 0xc, 0x40 }, { WAIT_IDLE },
1244{ 0xc, 0x00 }, { WAIT_IDLE },
1245{ 0xc, 0x40 }, { WAIT_IDLE },
1246{ 0xc, 0x00 }, { WAIT_IDLE },
1247{ 0xc, 0x42 }, { WAIT_IDLE },
1248{ 0xc, 0x00 }, { WAIT_IDLE },
1249{ 0xc, 0x40 }, { WAIT_IDLE },
1250{ 0xc, 0x00 }, { WAIT_IDLE },
1251{ 0xc, 0x02 }, { WAIT_IDLE },
1252{ 0xc, 0x00 }, { WAIT_IDLE },
1253{ 0xc, 0x40 }, { WAIT_IDLE },
1254{ 0xc, 0x00 }, { WAIT_IDLE },
1255{ 0xc, 0x00 }, { WAIT_IDLE },
1256{ 0xc, 0x00 }, { WAIT_IDLE },
1257{ 0xc, 0x40 }, { WAIT_IDLE },
1258{ 0xc, 0x00 }, { WAIT_IDLE },
1259{ 0xc, 0x00 }, { WAIT_IDLE },
1260{ 0xc, 0x00 }, { WAIT_IDLE },
1261{ 0xc, 0x40 }, { WAIT_IDLE },
1262{ 0xc, 0x00 }, { WAIT_IDLE },
1263{ 0xc, 0x00 }, { WAIT_IDLE },
1264{ 0xc, 0x00 }, { WAIT_IDLE },
1265{ 0xc, 0x40 }, { WAIT_IDLE },
1266{ 0xc, 0x00 }, { WAIT_IDLE },
1267{ 0xc, 0x00 }, { WAIT_IDLE },
1268{ 0xc, 0x00 }, { WAIT_IDLE },
1269{ 0xc, 0x40 }, { WAIT_IDLE },
1270{ 0xc, 0x00 }, { WAIT_IDLE },
1271{ 0xc, 0x00 }, { WAIT_IDLE },
1272{ 0xc, 0x00 }, { WAIT_IDLE },
1273{ 0xc, 0x42 }, { WAIT_IDLE },
1274{ 0xc, 0x00 }, { WAIT_IDLE },
1275{ 0xc, 0x40 }, { WAIT_IDLE },
1276{ 0xc, 0x00 }, { WAIT_IDLE },
1277{ 0xc, 0x42 }, { WAIT_IDLE },
1278{ 0xc, 0x00 }, { WAIT_IDLE },
1279{ 0xc, 0x02 }, { WAIT_IDLE },
1280{ 0xc, 0x00 }, { WAIT_IDLE },
1281{ 0xc, 0x02 }, { WAIT_IDLE },
1282{ 0xc, 0x00 }, { WAIT_IDLE },
1283{ 0xc, 0x02 }, { WAIT_IDLE },
1284{ 0xc, 0x00 }, { WAIT_IDLE },
1285{ 0xc, 0x42 }, { WAIT_IDLE },
1286{ 0xc, 0x00 }, { WAIT_IDLE },
1287{ 0xc, 0xc0 }, { WAIT_IDLE },
1288{ 0xc, 0x00 }, { WAIT_IDLE },
1289{ 0xc, 0x40 }, { WAIT_IDLE },
1290
1291{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x00 },
1292
1293{ 0xc, 0x63 }, { WAIT_IDLE },
1294{ 0xc, 0x03 }, { WAIT_IDLE },
1295{ 0xc, 0x26 }, { WAIT_IDLE },
1296{ 0xc, 0x02 }, { WAIT_IDLE },
1297{ 0xc, 0x2c }, { WAIT_IDLE },
1298{ 0xc, 0x00 }, { WAIT_IDLE },
1299{ 0xc, 0x24 }, { WAIT_IDLE },
1300{ 0xc, 0x00 }, { WAIT_IDLE },
1301{ 0xc, 0x2e }, { WAIT_IDLE },
1302{ 0xc, 0x02 }, { WAIT_IDLE },
1303{ 0xc, 0x02 }, { WAIT_IDLE },
1304{ 0xc, 0x02 }, { WAIT_IDLE },
1305{ 0xc, 0x00 }, { WAIT_IDLE },
1306{ 0xc, 0x00 }, { WAIT_IDLE },
1307{ 0xc, 0x00 }, { WAIT_IDLE },
1308{ 0xc, 0x00 }, { WAIT_IDLE },
1309{ 0xc, 0x00 }, { WAIT_IDLE },
1310{ 0xc, 0x00 }, { WAIT_IDLE },
1311{ 0xc, 0x00 }, { WAIT_IDLE },
1312{ 0xc, 0x00 }, { WAIT_IDLE },
1313{ 0xc, 0x00 }, { WAIT_IDLE },
1314{ 0xc, 0x00 }, { WAIT_IDLE },
1315{ 0xc, 0x00 }, { WAIT_IDLE },
1316{ 0xc, 0x00 }, { WAIT_IDLE },
1317{ 0xc, 0x00 }, { WAIT_IDLE },
1318{ 0xc, 0x00 }, { WAIT_IDLE },
1319{ 0xc, 0x00 }, { WAIT_IDLE },
1320{ 0xc, 0x00 }, { WAIT_IDLE },
1321{ 0xc, 0x00 }, { WAIT_IDLE },
1322{ 0xc, 0x00 }, { WAIT_IDLE },
1323{ 0xc, 0x00 }, { WAIT_IDLE },
1324{ 0xc, 0x00 }, { WAIT_IDLE },
1325{ 0xc, 0x00 }, { WAIT_IDLE },
1326{ 0xc, 0x00 }, { WAIT_IDLE },
1327{ 0xc, 0x00 }, { WAIT_IDLE },
1328{ 0xc, 0x00 }, { WAIT_IDLE },
1329{ 0xc, 0x00 }, { WAIT_IDLE },
1330{ 0xc, 0x00 }, { WAIT_IDLE },
1331{ 0xc, 0x00 }, { WAIT_IDLE },
1332{ 0xc, 0x00 }, { WAIT_IDLE },
1333{ 0xc, 0x00 }, { WAIT_IDLE },
1334{ 0xc, 0x00 }, { WAIT_IDLE },
1335{ 0xc, 0x00 }, { WAIT_IDLE },
1336{ 0xc, 0x00 }, { WAIT_IDLE },
1337{ 0xc, 0x00 }, { WAIT_IDLE },
1338{ 0xc, 0x00 }, { WAIT_IDLE },
1339{ 0xc, 0x00 }, { WAIT_IDLE },
1340{ 0xc, 0x00 }, { WAIT_IDLE },
1341{ 0xc, 0x00 }, { WAIT_IDLE },
1342{ 0xc, 0x00 }, { WAIT_IDLE },
1343{ 0xc, 0x00 }, { WAIT_IDLE },
1344{ 0xc, 0x00 }, { WAIT_IDLE },
1345{ 0xc, 0x00 }, { WAIT_IDLE },
1346{ 0xc, 0x00 }, { WAIT_IDLE },
1347{ 0xc, 0x00 }, { WAIT_IDLE },
1348{ 0xc, 0x00 }, { WAIT_IDLE },
1349{ 0xc, 0x00 }, { WAIT_IDLE },
1350{ 0xc, 0x00 }, { WAIT_IDLE },
1351{ 0xc, 0x00 }, { WAIT_IDLE },
1352{ 0xc, 0x00 }, { WAIT_IDLE },
1353{ 0xc, 0x00 }, { WAIT_IDLE },
1354{ 0xc, 0x00 }, { WAIT_IDLE },
1355{ 0xc, 0x00 }, { WAIT_IDLE },
1356{ 0xc, 0x00 }, { WAIT_IDLE },
1357{ 0xc, 0x00 }, { WAIT_IDLE },
1358{ 0xc, 0x01 }, { WAIT_IDLE },
1359{ 0xc, 0x20 }, { WAIT_IDLE },
1360{ 0xc, 0x00 }, { WAIT_IDLE },
1361{ 0xc, 0x60 }, { WAIT_IDLE },
1362{ 0xc, 0x00 }, { WAIT_IDLE },
1363{ 0xc, 0x20 }, { WAIT_IDLE },
1364{ 0xc, 0x00 }, { WAIT_IDLE },
1365{ 0xc, 0x20 }, { WAIT_IDLE },
1366{ 0xc, 0x00 }, { WAIT_IDLE },
1367{ 0xc, 0x20 }, { WAIT_IDLE },
1368{ 0xc, 0x00 }, { WAIT_IDLE },
1369{ 0xc, 0x20 }, { WAIT_IDLE },
1370{ 0xc, 0x00 }, { WAIT_IDLE },
1371{ 0xc, 0x20 }, { WAIT_IDLE },
1372{ 0xc, 0x00 }, { WAIT_IDLE },
1373{ 0xc, 0x20 }, { WAIT_IDLE },
1374{ 0xc, 0x00 }, { WAIT_IDLE },
1375{ 0xc, 0x20 }, { WAIT_IDLE },
1376{ 0xc, 0x00 }, { WAIT_IDLE },
1377{ 0xc, 0x20 }, { WAIT_IDLE },
1378{ 0xc, 0x00 }, { WAIT_IDLE },
1379{ 0xc, 0x60 }, { WAIT_IDLE },
1380{ 0xc, 0x00 }, { WAIT_IDLE },
1381{ 0xc, 0x20 }, { WAIT_IDLE },
1382{ 0xc, 0x00 }, { WAIT_IDLE },
1383{ 0xc, 0x60 }, { WAIT_IDLE },
1384{ 0xc, 0x00 }, { WAIT_IDLE },
1385{ 0xc, 0x20 }, { WAIT_IDLE },
1386{ 0xc, 0x00 }, { WAIT_IDLE },
1387{ 0xc, 0x60 }, { WAIT_IDLE },
1388{ 0xc, 0x00 }, { WAIT_IDLE },
1389{ 0xc, 0x20 }, { WAIT_IDLE },
1390{ 0xc, 0x00 }, { WAIT_IDLE },
1391{ 0xc, 0x60 }, { WAIT_IDLE },
1392{ 0xc, 0x00 }, { WAIT_IDLE },
1393{ 0xc, 0x20 }, { WAIT_IDLE },
1394{ 0xc, 0x00 }, { WAIT_IDLE },
1395{ 0xc, 0x60 }, { WAIT_IDLE },
1396{ 0xc, 0x00 }, { WAIT_IDLE },
1397{ 0xc, 0x20 }, { WAIT_IDLE },
1398{ 0xc, 0x00 }, { WAIT_IDLE },
1399{ 0xc, 0x60 }, { WAIT_IDLE },
1400{ 0xc, 0x00 }, { WAIT_IDLE },
1401{ 0xc, 0x20 }, { WAIT_IDLE },
1402{ 0xc, 0x00 }, { WAIT_IDLE },
1403{ 0xc, 0x20 }, { WAIT_IDLE },
1404{ 0xc, 0x00 }, { WAIT_IDLE },
1405{ 0xc, 0x22 }, { WAIT_IDLE },
1406{ 0xc, 0x02 }, { WAIT_IDLE },
1407{ 0xc, 0x22 }, { WAIT_IDLE },
1408{ 0xc, 0x02 }, { WAIT_IDLE },
1409{ 0xc, 0x20 }, { WAIT_IDLE },
1410{ 0xc, 0x00 }, { WAIT_IDLE },
1411{ 0xc, 0x60 }, { WAIT_IDLE },
1412{ 0xc, 0x00 }, { WAIT_IDLE },
1413{ 0xc, 0x22 }, { WAIT_IDLE },
1414{ 0xc, 0x02 }, { WAIT_IDLE },
1415{ 0xc, 0x62 }, { WAIT_IDLE },
1416{ 0xc, 0x02 }, { WAIT_IDLE },
1417{ 0xc, 0x20 }, { WAIT_IDLE },
1418{ 0xc, 0x01 }, { WAIT_IDLE },
1419{ 0xc, 0x21 }, { WAIT_IDLE },
1420{ 0xc, 0x01 }, { WAIT_IDLE },
1421
1422/* Load memory area (page six) */
1423{ 0x9, 0x01 }, { 0xb, 0x06 },
1424
1425{ 0xa, 0x00 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1426{ 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1427{ 0xa, 0x04 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1428{ 0xa, 0x06 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1429{ 0xa, 0x08 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1430{ 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1431{ 0xa, 0x0c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1432{ 0xa, 0x0e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1433{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1434{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1435{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1436{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1437{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1438{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1439{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1440{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1441{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1442{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1443{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1444{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1445{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1446{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1447{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1448{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1449{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1450{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1451{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1452{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1453{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1454{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1455{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1456{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1457{ 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1458{ 0xa, 0x42 }, { 0xd, 0x03 }, { 0xc, 0x00 }, { WAIT_IDLE },
1459{ 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1460{ 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x21 }, { WAIT_IDLE },
1461{ 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x23 }, { WAIT_IDLE },
1462{ 0xa, 0x4a }, { 0xd, 0x23 }, { 0xc, 0x1b }, { WAIT_IDLE },
1463{ 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x8f }, { WAIT_IDLE },
1464{ 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x77 }, { WAIT_IDLE },
1465{ 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
1466{ 0xa, 0x52 }, { 0xd, 0x1c }, { 0xc, 0x92 }, { WAIT_IDLE },
1467{ 0xa, 0x54 }, { 0xd, 0x1c }, { 0xc, 0x52 }, { WAIT_IDLE },
1468{ 0xa, 0x56 }, { 0xd, 0x07 }, { 0xc, 0x00 }, { WAIT_IDLE },
1469{ 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc6 }, { WAIT_IDLE },
1470{ 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x00 }, { WAIT_IDLE },
1471{ 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x06 }, { WAIT_IDLE },
1472{ 0xa, 0x5e }, { 0xd, 0x17 }, { 0xc, 0x00 }, { WAIT_IDLE },
1473{ 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xda }, { WAIT_IDLE },
1474{ 0xa, 0x62 }, { 0xd, 0x29 }, { 0xc, 0x00 }, { WAIT_IDLE },
1475{ 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x41 }, { WAIT_IDLE },
1476{ 0xa, 0x66 }, { 0xd, 0x39 }, { 0xc, 0x00 }, { WAIT_IDLE },
1477{ 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
1478{ 0xa, 0x6a }, { 0xd, 0x49 }, { 0xc, 0x00 }, { WAIT_IDLE },
1479{ 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
1480{ 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd2 }, { WAIT_IDLE },
1481{ 0xa, 0x70 }, { 0xd, 0x16 }, { 0xc, 0x0c }, { WAIT_IDLE },
1482{ 0xa, 0x72 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1483{ 0xa, 0x74 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
1484{ 0xa, 0x76 }, { 0xd, 0x0f }, { 0xc, 0x00 }, { WAIT_IDLE },
1485{ 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x80 }, { WAIT_IDLE },
1486{ 0xa, 0x7a }, { 0xd, 0x13 }, { 0xc, 0x00 }, { WAIT_IDLE },
1487{ 0xa, 0x7c }, { 0xd, 0x80 }, { 0xc, 0x00 }, { WAIT_IDLE },
1488{ 0xa, 0x7e }, { 0xd, 0x80 }, { 0xc, 0x80 }, { WAIT_IDLE },
1489
1490{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x00 },
1491
1492{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1493{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1494{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1495{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1496{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
1497{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1498{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1499{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1500{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1501{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1502{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1503{ 0xd, 0x08 }, { 0xc, 0x00 }, { WAIT_IDLE },
1504{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1505{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1506{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1507{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1508{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1509{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1510{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1511{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1512{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1513{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1514{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1515{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1516{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1517{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1518{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1519{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1520{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1521{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1522{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1523{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1524{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1525{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1526{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1527{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1528{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1529{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1530{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1531{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1532{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1533{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1534{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1535{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1536{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1537{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1538{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1539{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1540{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1541{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1542{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1543{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1544{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1545{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1546{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1547{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1548{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1549{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1550{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1551{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1552{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1553{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1554{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1555{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1556{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1557{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1558{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1559{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1560{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1561{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1562{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1563{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1564{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1565{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1566{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1567{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1568{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1569{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1570{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1571{ 0xd, 0x02 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1572{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
1573{ 0xd, 0x06 }, { 0xc, 0x8c }, { WAIT_IDLE },
1574{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1575{ 0xd, 0x1a }, { 0xc, 0x75 }, { WAIT_IDLE },
1576{ 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
1577{ 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1578{ 0xd, 0x0b }, { 0xc, 0x16 }, { WAIT_IDLE },
1579{ 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
1580{ 0xd, 0x0d }, { 0xc, 0xc8 }, { WAIT_IDLE },
1581{ 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
1582{ 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
1583{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1584{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1585{ 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1586{ 0xd, 0x02 }, { 0xc, 0x8f }, { WAIT_IDLE },
1587{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1588{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
1589{ 0xd, 0x06 }, { 0xc, 0x62 }, { WAIT_IDLE },
1590{ 0xd, 0x02 }, { 0xc, 0x7b }, { WAIT_IDLE },
1591{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1592{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
1593{ 0xd, 0x06 }, { 0xc, 0x97 }, { WAIT_IDLE },
1594{ 0xd, 0x02 }, { 0xc, 0x52 }, { WAIT_IDLE },
1595{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1596{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1597{ 0xd, 0x06 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1598{ 0xd, 0x02 }, { 0xc, 0x19 }, { WAIT_IDLE },
1599{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1600{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1601{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1602{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1603{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1604{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1605{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1606{ 0xd, 0x05 }, { 0xc, 0x55 }, { WAIT_IDLE },
1607{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1608{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1609{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1610{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1611{ 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1612{ 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1613{ 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1614{ 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1615{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1616{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1617{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1618{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1619{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
1620
1621/* Now setup the MOD area. */
1622{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
1623{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1624{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
1625{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1626{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
1627{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1628{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
1629{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1630{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
1631{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1632{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
1633{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1634{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
1635{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1636{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
1637{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1638{ 0xe, 0x01 }, { 0xf, 0x08 }, { WAIT_IDLE },
1639{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1640{ 0xe, 0x01 }, { 0xf, 0x09 }, { WAIT_IDLE },
1641{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1642{ 0xe, 0x01 }, { 0xf, 0x0a }, { WAIT_IDLE },
1643{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1644{ 0xe, 0x01 }, { 0xf, 0x0b }, { WAIT_IDLE },
1645{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1646{ 0xe, 0x01 }, { 0xf, 0x0c }, { WAIT_IDLE },
1647{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1648{ 0xe, 0x01 }, { 0xf, 0x0d }, { WAIT_IDLE },
1649{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1650{ 0xe, 0x01 }, { 0xf, 0x0e }, { WAIT_IDLE },
1651{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1652{ 0xe, 0x01 }, { 0xf, 0x0f }, { WAIT_IDLE },
1653{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
1654
1655{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
1656{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
1657{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
1658{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
1659{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
1660{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
1661{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
1662{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
1663{ 0xe, 0xb8 }, { 0xf, 0x20 }, { WAIT_IDLE },
1664{ 0xe, 0xb9 }, { 0xf, 0x20 }, { WAIT_IDLE },
1665{ 0xe, 0xba }, { 0xf, 0x20 }, { WAIT_IDLE },
1666{ 0xe, 0xbb }, { 0xf, 0x20 }, { WAIT_IDLE },
1667{ 0xe, 0xbc }, { 0xf, 0x20 }, { WAIT_IDLE },
1668{ 0xe, 0xbd }, { 0xf, 0x20 }, { WAIT_IDLE },
1669{ 0xe, 0xbe }, { 0xf, 0x20 }, { WAIT_IDLE },
1670{ 0xe, 0xbf }, { 0xf, 0x20 }, { WAIT_IDLE },
1671
1672{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
1673{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
1674{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
1675{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
1676{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
1677{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
1678{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
1679{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
1680{ 0xe, 0xf8 }, { 0xf, 0x20 }, { WAIT_IDLE },
1681{ 0xe, 0xf9 }, { 0xf, 0x20 }, { WAIT_IDLE },
1682{ 0xe, 0xfa }, { 0xf, 0x20 }, { WAIT_IDLE },
1683{ 0xe, 0xfb }, { 0xf, 0x20 }, { WAIT_IDLE },
1684{ 0xe, 0xfc }, { 0xf, 0x20 }, { WAIT_IDLE },
1685{ 0xe, 0xfd }, { 0xf, 0x20 }, { WAIT_IDLE },
1686{ 0xe, 0xfe }, { 0xf, 0x20 }, { WAIT_IDLE },
1687{ 0xe, 0xff }, { 0xf, 0x20 }, { WAIT_IDLE },
1688
1689{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
1690{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
1691{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
1692{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
1693{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
1694{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
1695{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
1696{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
1697{ 0xe, 0x18 }, { 0xf, 0xff }, { WAIT_IDLE },
1698{ 0xe, 0x19 }, { 0xf, 0xff }, { WAIT_IDLE },
1699{ 0xe, 0x1a }, { 0xf, 0xff }, { WAIT_IDLE },
1700{ 0xe, 0x1b }, { 0xf, 0xff }, { WAIT_IDLE },
1701{ 0xe, 0x1c }, { 0xf, 0xff }, { WAIT_IDLE },
1702{ 0xe, 0x1d }, { 0xf, 0xff }, { WAIT_IDLE },
1703{ 0xe, 0x1e }, { 0xf, 0x40 }, { WAIT_IDLE },
1704{ 0xe, 0x1f }, { 0xf, 0xff }, { WAIT_IDLE },
1705{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
1706{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
1707{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
1708{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
1709{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
1710{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
1711{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
1712{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
1713{ 0xe, 0x28 }, { 0xf, 0xff }, { WAIT_IDLE },
1714{ 0xe, 0x29 }, { 0xf, 0xff }, { WAIT_IDLE },
1715{ 0xe, 0x2a }, { 0xf, 0xff }, { WAIT_IDLE },
1716{ 0xe, 0x2b }, { 0xf, 0xff }, { WAIT_IDLE },
1717{ 0xe, 0x2c }, { 0xf, 0xff }, { WAIT_IDLE },
1718{ 0xe, 0x2d }, { 0xf, 0xff }, { WAIT_IDLE },
1719{ 0xe, 0x2e }, { 0xf, 0x00 }, { WAIT_IDLE },
1720{ 0xe, 0x2f }, { 0xf, 0x00 }, { WAIT_IDLE },
1721{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
1722{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
1723{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
1724{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
1725{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
1726{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
1727{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
1728{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
1729{ 0xe, 0x38 }, { 0xf, 0x00 }, { WAIT_IDLE },
1730{ 0xe, 0x39 }, { 0xf, 0x00 }, { WAIT_IDLE },
1731{ 0xe, 0x3a }, { 0xf, 0x00 }, { WAIT_IDLE },
1732{ 0xe, 0x3b }, { 0xf, 0x00 }, { WAIT_IDLE },
1733{ 0xe, 0x3c }, { 0xf, 0x00 }, { WAIT_IDLE },
1734{ 0xe, 0x3d }, { 0xf, 0x00 }, { WAIT_IDLE },
1735{ 0xe, 0x3e }, { 0xf, 0x00 }, { WAIT_IDLE },
1736{ 0xe, 0x3f }, { 0xf, 0x20 }, { WAIT_IDLE },
1737{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
1738{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
1739{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
1740{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
1741{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
1742{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
1743{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
1744{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
1745{ 0xe, 0x48 }, { 0xf, 0x00 }, { WAIT_IDLE },
1746{ 0xe, 0x49 }, { 0xf, 0x00 }, { WAIT_IDLE },
1747{ 0xe, 0x4a }, { 0xf, 0x00 }, { WAIT_IDLE },
1748{ 0xe, 0x4b }, { 0xf, 0x00 }, { WAIT_IDLE },
1749{ 0xe, 0x4c }, { 0xf, 0x00 }, { WAIT_IDLE },
1750{ 0xe, 0x4d }, { 0xf, 0x00 }, { WAIT_IDLE },
1751{ 0xe, 0x4e }, { 0xf, 0x0e }, { WAIT_IDLE },
1752{ 0xe, 0x4f }, { 0xf, 0x0e }, { WAIT_IDLE },
1753{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
1754{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
1755{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
1756{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
1757{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
1758{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
1759{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
1760{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
1761{ 0xe, 0x58 }, { 0xf, 0x00 }, { WAIT_IDLE },
1762{ 0xe, 0x59 }, { 0xf, 0x00 }, { WAIT_IDLE },
1763{ 0xe, 0x5a }, { 0xf, 0x00 }, { WAIT_IDLE },
1764{ 0xe, 0x5b }, { 0xf, 0x00 }, { WAIT_IDLE },
1765{ 0xe, 0x5c }, { 0xf, 0x00 }, { WAIT_IDLE },
1766{ 0xe, 0x5d }, { 0xf, 0x00 }, { WAIT_IDLE },
1767{ 0xe, 0x5e }, { 0xf, 0x00 }, { WAIT_IDLE },
1768{ 0xe, 0x5f }, { 0xf, 0x00 }, { WAIT_IDLE },
1769{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
1770{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
1771{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
1772{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
1773{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
1774{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
1775{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
1776{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
1777{ 0xe, 0x68 }, { 0xf, 0x00 }, { WAIT_IDLE },
1778{ 0xe, 0x69 }, { 0xf, 0x00 }, { WAIT_IDLE },
1779{ 0xe, 0x6a }, { 0xf, 0x00 }, { WAIT_IDLE },
1780{ 0xe, 0x6b }, { 0xf, 0x00 }, { WAIT_IDLE },
1781{ 0xe, 0x6c }, { 0xf, 0x40 }, { WAIT_IDLE },
1782{ 0xe, 0x6d }, { 0xf, 0x00 }, { WAIT_IDLE },
1783{ 0xe, 0x6e }, { 0xf, 0x40 }, { WAIT_IDLE },
1784{ 0xe, 0x6f }, { 0xf, 0x40 }, { WAIT_IDLE },
1785{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1786{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1787{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1788{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1789{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1790{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1791{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1792{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1793{ 0xe, 0x78 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1794{ 0xe, 0x79 }, { 0xf, 0xc0 }, { WAIT_IDLE },
1795{ 0xe, 0x7a }, { 0xf, 0xc0 }, { WAIT_IDLE },
1796{ 0xe, 0x7b }, { 0xf, 0xc0 }, { WAIT_IDLE },
1797{ 0xe, 0x7c }, { 0xf, 0xc0 }, { WAIT_IDLE },
1798{ 0xe, 0x7d }, { 0xf, 0xc0 }, { WAIT_IDLE },
1799{ 0xe, 0x7e }, { 0xf, 0xc0 }, { WAIT_IDLE },
1800{ 0xe, 0x7f }, { 0xf, 0xc0 }, { WAIT_IDLE },
1801{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
1802{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
1803{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
1804{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
1805{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
1806{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
1807{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
1808{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
1809{ 0xe, 0x88 }, { 0xf, 0x00 }, { WAIT_IDLE },
1810{ 0xe, 0x89 }, { 0xf, 0x00 }, { WAIT_IDLE },
1811{ 0xe, 0x8a }, { 0xf, 0x00 }, { WAIT_IDLE },
1812{ 0xe, 0x8b }, { 0xf, 0x00 }, { WAIT_IDLE },
1813{ 0xe, 0x8c }, { 0xf, 0x00 }, { WAIT_IDLE },
1814{ 0xe, 0x8d }, { 0xf, 0x00 }, { WAIT_IDLE },
1815{ 0xe, 0x8e }, { 0xf, 0x00 }, { WAIT_IDLE },
1816{ 0xe, 0x8f }, { 0xf, 0x00 }, { WAIT_IDLE },
1817{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
1818{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
1819{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
1820{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
1821{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
1822{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
1823{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
1824{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
1825{ 0xe, 0x98 }, { 0xf, 0x00 }, { WAIT_IDLE },
1826{ 0xe, 0x99 }, { 0xf, 0x00 }, { WAIT_IDLE },
1827{ 0xe, 0x9a }, { 0xf, 0x00 }, { WAIT_IDLE },
1828{ 0xe, 0x9b }, { 0xf, 0x00 }, { WAIT_IDLE },
1829{ 0xe, 0x9c }, { 0xf, 0x00 }, { WAIT_IDLE },
1830{ 0xe, 0x9d }, { 0xf, 0x00 }, { WAIT_IDLE },
1831{ 0xe, 0x9e }, { 0xf, 0x00 }, { WAIT_IDLE },
1832{ 0xe, 0x9f }, { 0xf, 0x00 }, { WAIT_IDLE },
1833{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1834{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1835{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1836{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1837{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1838{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1839{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1840{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1841{ 0xe, 0xa8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1842{ 0xe, 0xa9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1843{ 0xe, 0xaa }, { 0xf, 0x00 }, { WAIT_IDLE },
1844{ 0xe, 0xab }, { 0xf, 0x00 }, { WAIT_IDLE },
1845{ 0xe, 0xac }, { 0xf, 0x00 }, { WAIT_IDLE },
1846{ 0xe, 0xad }, { 0xf, 0x00 }, { WAIT_IDLE },
1847{ 0xe, 0xae }, { 0xf, 0x00 }, { WAIT_IDLE },
1848{ 0xe, 0xaf }, { 0xf, 0x00 }, { WAIT_IDLE },
1849
1850{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1851{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1852{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1853{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1854{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1855{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1856{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1857{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1858{ 0xe, 0xc8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1859{ 0xe, 0xc9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1860{ 0xe, 0xca }, { 0xf, 0x00 }, { WAIT_IDLE },
1861{ 0xe, 0xcb }, { 0xf, 0x00 }, { WAIT_IDLE },
1862{ 0xe, 0xcc }, { 0xf, 0x00 }, { WAIT_IDLE },
1863{ 0xe, 0xcd }, { 0xf, 0x00 }, { WAIT_IDLE },
1864{ 0xe, 0xce }, { 0xf, 0x00 }, { WAIT_IDLE },
1865{ 0xe, 0xcf }, { 0xf, 0x00 }, { WAIT_IDLE },
1866{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1867{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1868{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1869{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1870{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1871{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1872{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1873{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1874{ 0xe, 0xd8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1875{ 0xe, 0xd9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1876{ 0xe, 0xda }, { 0xf, 0x00 }, { WAIT_IDLE },
1877{ 0xe, 0xdb }, { 0xf, 0x00 }, { WAIT_IDLE },
1878{ 0xe, 0xdc }, { 0xf, 0x00 }, { WAIT_IDLE },
1879{ 0xe, 0xdd }, { 0xf, 0x00 }, { WAIT_IDLE },
1880{ 0xe, 0xde }, { 0xf, 0x10 }, { WAIT_IDLE },
1881{ 0xe, 0xdf }, { 0xf, 0x10 }, { WAIT_IDLE },
1882{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
1883{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
1884{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
1885{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
1886{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
1887{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
1888{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
1889{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
1890{ 0xe, 0xe8 }, { 0xf, 0x00 }, { WAIT_IDLE },
1891{ 0xe, 0xe9 }, { 0xf, 0x00 }, { WAIT_IDLE },
1892{ 0xe, 0xea }, { 0xf, 0x00 }, { WAIT_IDLE },
1893{ 0xe, 0xeb }, { 0xf, 0x00 }, { WAIT_IDLE },
1894{ 0xe, 0xec }, { 0xf, 0x00 }, { WAIT_IDLE },
1895{ 0xe, 0xed }, { 0xf, 0x00 }, { WAIT_IDLE },
1896{ 0xe, 0xee }, { 0xf, 0x00 }, { WAIT_IDLE },
1897{ 0xe, 0xef }, { 0xf, 0x00 }, { WAIT_IDLE },
1898
1899{ 0xe, 0x01 }, { 0xf, 0x00 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1900{ 0xe, 0x01 }, { 0xf, 0x01 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1901{ 0xe, 0x01 }, { 0xf, 0x02 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1902{ 0xe, 0x01 }, { 0xf, 0x03 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1903{ 0xe, 0x01 }, { 0xf, 0x04 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1904{ 0xe, 0x01 }, { 0xf, 0x05 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1905{ 0xe, 0x01 }, { 0xf, 0x06 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1906{ 0xe, 0x01 }, { 0xf, 0x07 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1907{ 0xe, 0x01 }, { 0xf, 0x08 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1908{ 0xe, 0x01 }, { 0xf, 0x09 }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1909{ 0xe, 0x01 }, { 0xf, 0x0a }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1910{ 0xe, 0x01 }, { 0xf, 0x0b }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1911{ 0xe, 0x01 }, { 0xf, 0x0c }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1912{ 0xe, 0x01 }, { 0xf, 0x0d }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1913{ 0xe, 0x01 }, { 0xf, 0x0e }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1914{ 0xe, 0x01 }, { 0xf, 0x0f }, { 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
1915
1916/* mute on */
1917{ 0x8, 0x02 },
1918
1919/* Now set the coefficients and so forth for the programs above */
1920{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1921{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1922{ 0xb, 0x00 }, { 0xa, 0x4b }, { 0xd, 0x03 }, { 0xc, 0x11 }, { WAIT_IDLE },
1923{ 0xb, 0x00 }, { 0xa, 0x4d }, { 0xd, 0x01 }, { 0xc, 0x32 }, { WAIT_IDLE },
1924{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1925{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1926{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1927{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1928{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1929{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1930{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1931{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1932{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1933{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1934{ 0xb, 0x00 }, { 0xa, 0x47 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1935{ 0xb, 0x00 }, { 0xa, 0x4a }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
1936{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1937{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1938{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1939{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1940{ 0xb, 0x00 }, { 0xa, 0x00 }, { 0xd, 0x01 }, { 0xc, 0x1c }, { WAIT_IDLE },
1941{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1942{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1943{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1944{ 0xb, 0x00 }, { 0xa, 0x44 }, { 0xd, 0x01 }, { 0xc, 0x00 }, { WAIT_IDLE },
1945{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1946{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1947{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1948{ 0xb, 0x00 }, { 0xa, 0x42 }, { 0xd, 0x01 }, { 0xc, 0x1a }, { WAIT_IDLE },
1949{ 0xb, 0x00 }, { 0xa, 0x43 }, { 0xd, 0x01 }, { 0xc, 0x20 }, { WAIT_IDLE },
1950{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1951{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1952{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1953{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1954{ 0xb, 0x01 }, { 0xa, 0x40 }, { 0xd, 0x02 }, { 0xc, 0x40 }, { WAIT_IDLE },
1955{ 0xb, 0x01 }, { 0xa, 0x41 }, { 0xd, 0x02 }, { 0xc, 0x60 }, { WAIT_IDLE },
1956{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1957{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1958{ 0xb, 0x07 }, { 0xa, 0x44 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
1959{ 0xb, 0x07 }, { 0xa, 0x42 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1960{ 0xb, 0x07 }, { 0xa, 0x43 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1961{ 0xb, 0x07 }, { 0xa, 0x40 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1962{ 0xb, 0x07 }, { 0xa, 0x41 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
1963{ 0xb, 0x07 }, { 0xa, 0x51 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1964{ 0xb, 0x07 }, { 0xa, 0x50 }, { 0xd, 0x06 }, { 0xc, 0x40 }, { WAIT_IDLE },
1965{ 0xb, 0x07 }, { 0xa, 0x4f }, { 0xd, 0x03 }, { 0xc, 0x81 }, { WAIT_IDLE },
1966{ 0xb, 0x07 }, { 0xa, 0x53 }, { 0xd, 0x1a }, { 0xc, 0x76 }, { WAIT_IDLE },
1967{ 0xb, 0x07 }, { 0xa, 0x54 }, { 0xd, 0x0d }, { 0xc, 0x8b }, { WAIT_IDLE },
1968{ 0xb, 0x07 }, { 0xa, 0x55 }, { 0xd, 0x04 }, { 0xc, 0xe9 }, { WAIT_IDLE },
1969{ 0xb, 0x07 }, { 0xa, 0x56 }, { 0xd, 0x0b }, { 0xc, 0x17 }, { WAIT_IDLE },
1970{ 0xb, 0x07 }, { 0xa, 0x57 }, { 0xd, 0x1a }, { 0xc, 0x38 }, { WAIT_IDLE },
1971{ 0xb, 0x07 }, { 0xa, 0x58 }, { 0xd, 0x0d }, { 0xc, 0xc9 }, { WAIT_IDLE },
1972{ 0xb, 0x07 }, { 0xa, 0x59 }, { 0xd, 0x04 }, { 0xc, 0x6f }, { WAIT_IDLE },
1973{ 0xb, 0x07 }, { 0xa, 0x5a }, { 0xd, 0x0b }, { 0xc, 0x91 }, { WAIT_IDLE },
1974{ 0xb, 0x07 }, { 0xa, 0x73 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1975{ 0xb, 0x07 }, { 0xa, 0x74 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1976{ 0xb, 0x07 }, { 0xa, 0x75 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
1977{ 0xb, 0x07 }, { 0xa, 0x76 }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1978{ 0xb, 0x07 }, { 0xa, 0x77 }, { 0xd, 0x14 }, { 0xc, 0xda }, { WAIT_IDLE },
1979{ 0xb, 0x07 }, { 0xa, 0x78 }, { 0xd, 0x0d }, { 0xc, 0x93 }, { WAIT_IDLE },
1980{ 0xb, 0x07 }, { 0xa, 0x79 }, { 0xd, 0x04 }, { 0xc, 0xd9 }, { WAIT_IDLE },
1981{ 0xb, 0x07 }, { 0xa, 0x7a }, { 0xd, 0x05 }, { 0xc, 0x93 }, { WAIT_IDLE },
1982{ 0xb, 0x07 }, { 0xa, 0x5e }, { 0xd, 0x03 }, { 0xc, 0x68 }, { WAIT_IDLE },
1983{ 0xb, 0x07 }, { 0xa, 0x5c }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
1984{ 0xb, 0x07 }, { 0xa, 0x5d }, { 0xd, 0x04 }, { 0xc, 0x31 }, { WAIT_IDLE },
1985{ 0xb, 0x07 }, { 0xa, 0x62 }, { 0xd, 0x03 }, { 0xc, 0x52 }, { WAIT_IDLE },
1986{ 0xb, 0x07 }, { 0xa, 0x60 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
1987{ 0xb, 0x07 }, { 0xa, 0x61 }, { 0xd, 0x04 }, { 0xc, 0x76 }, { WAIT_IDLE },
1988{ 0xb, 0x07 }, { 0xa, 0x66 }, { 0xd, 0x03 }, { 0xc, 0x2e }, { WAIT_IDLE },
1989{ 0xb, 0x07 }, { 0xa, 0x64 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1990{ 0xb, 0x07 }, { 0xa, 0x65 }, { 0xd, 0x04 }, { 0xc, 0xda }, { WAIT_IDLE },
1991{ 0xb, 0x07 }, { 0xa, 0x6a }, { 0xd, 0x02 }, { 0xc, 0xf6 }, { WAIT_IDLE },
1992{ 0xb, 0x07 }, { 0xa, 0x68 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
1993{ 0xb, 0x07 }, { 0xa, 0x69 }, { 0xd, 0x05 }, { 0xc, 0x62 }, { WAIT_IDLE },
1994{ 0xb, 0x06 }, { 0xa, 0x46 }, { 0xd, 0x0a }, { 0xc, 0x22 }, { WAIT_IDLE },
1995{ 0xb, 0x06 }, { 0xa, 0x48 }, { 0xd, 0x0d }, { 0xc, 0x24 }, { WAIT_IDLE },
1996{ 0xb, 0x06 }, { 0xa, 0x6e }, { 0xd, 0x11 }, { 0xc, 0xd3 }, { WAIT_IDLE },
1997{ 0xb, 0x06 }, { 0xa, 0x70 }, { 0xd, 0x15 }, { 0xc, 0xcb }, { WAIT_IDLE },
1998{ 0xb, 0x06 }, { 0xa, 0x52 }, { 0xd, 0x20 }, { 0xc, 0x93 }, { WAIT_IDLE },
1999{ 0xb, 0x06 }, { 0xa, 0x54 }, { 0xd, 0x20 }, { 0xc, 0x54 }, { WAIT_IDLE },
2000{ 0xb, 0x06 }, { 0xa, 0x4a }, { 0xd, 0x27 }, { 0xc, 0x1d }, { WAIT_IDLE },
2001{ 0xb, 0x06 }, { 0xa, 0x58 }, { 0xd, 0x2f }, { 0xc, 0xc8 }, { WAIT_IDLE },
2002{ 0xb, 0x06 }, { 0xa, 0x5c }, { 0xd, 0x30 }, { 0xc, 0x07 }, { WAIT_IDLE },
2003{ 0xb, 0x06 }, { 0xa, 0x4c }, { 0xd, 0x37 }, { 0xc, 0x90 }, { WAIT_IDLE },
2004{ 0xb, 0x06 }, { 0xa, 0x60 }, { 0xd, 0x3d }, { 0xc, 0xdb }, { WAIT_IDLE },
2005{ 0xb, 0x06 }, { 0xa, 0x64 }, { 0xd, 0x3e }, { 0xc, 0x42 }, { WAIT_IDLE },
2006{ 0xb, 0x06 }, { 0xa, 0x4e }, { 0xd, 0x45 }, { 0xc, 0x78 }, { WAIT_IDLE },
2007{ 0xb, 0x06 }, { 0xa, 0x68 }, { 0xd, 0x4c }, { 0xc, 0x48 }, { WAIT_IDLE },
2008{ 0xb, 0x06 }, { 0xa, 0x6c }, { 0xd, 0x4c }, { 0xc, 0x6c }, { WAIT_IDLE },
2009{ 0xb, 0x06 }, { 0xa, 0x50 }, { 0xd, 0x52 }, { 0xc, 0xe2 }, { WAIT_IDLE },
2010{ 0xb, 0x06 }, { 0xa, 0x42 }, { 0xd, 0x02 }, { 0xc, 0xba }, { WAIT_IDLE },
2011
2012/* Some settings (?) */
2013{ WAIT_IDLE }, { 0xe, 0x1e }, { 0xf, 0x14 },
2014{ WAIT_IDLE }, { 0xe, 0xde }, { 0xf, 0x20 },
2015{ WAIT_IDLE }, { 0xe, 0xdf }, { 0xf, 0x20 },
2016
2017/* some more coefficients */
2018{ WAIT_IDLE }, { 0xb, 0x06 }, { 0xa, 0x78 }, { 0xd, 0x00 }, { 0xc, 0x40 },
2019{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x03 }, { 0xd, 0x0f }, { 0xc, 0xff },
2020{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0b }, { 0xd, 0x0f }, { 0xc, 0xff },
2021{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x02 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2022{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x0a }, { 0xd, 0x00 }, { 0xc, 0x00 },
2023{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2024{ WAIT_IDLE }, { 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 },
2025
2026/* Now, for some strange reason, lets reload every page
2027 and all the coefficients over again. I have *NO* idea
2028 why this is done. I do know that no sound is produced
2029 is this phase is omitted. */
2030{ 0x9, 0x05 }, { 0xb, 0x00 }, { 0xa, 0x10 },
2031
2032{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2033{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2034{ 0xd, 0x02 }, { 0xc, 0x00 }, { WAIT_IDLE },
2035{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2036{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2037{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2038{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2039{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2040{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2041{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2042{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2043{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2044{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2045{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2046{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2047{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2048{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2049{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2050{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2051{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2052{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2053{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2054{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2055{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2056{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2057{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2058{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2059{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2060{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2061{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2062{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2063{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2064{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2065{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2066{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2067{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2068{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2069{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2070{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2071{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2072{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2073{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2074{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2075{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2076{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2077{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2078{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2079{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2080
2081{ 0x9, 0x05 }, { 0xb, 0x01 }, { 0xa, 0x10 },
2082
2083{ 0xd, 0x01 }, { 0xc, 0xc0 }, { WAIT_IDLE },
2084{ 0xd, 0x01 }, { 0xc, 0xfa }, { WAIT_IDLE },
2085{ 0xd, 0x00 }, { 0xc, 0x1a }, { WAIT_IDLE },
2086{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2087{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2088{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2089{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2090{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2091{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2092{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2093{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2094{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2095{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2096{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2097{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2098{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2099{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2100{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2101{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2102{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2103{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2104{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2105{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2106{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2107{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2108{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2109{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2110{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2111{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2112{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2113{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2114{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2115{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2116{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2117{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2118{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2119{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2120{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2121{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2122{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2123{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2124{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2125{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2126{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2127{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2128{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2129{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2130{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2131
2132{ WAIT_IDLE }, { WAIT_IDLE },
2133
2134{ 0x9, 0x05 }, { 0xb, 0x02 }, { 0xa, 0x10 },
2135
2136{ 0xc, 0x46 }, { WAIT_IDLE },
2137{ 0xc, 0x46 }, { WAIT_IDLE },
2138{ 0xc, 0x00 }, { WAIT_IDLE },
2139{ 0xc, 0x00 }, { WAIT_IDLE },
2140{ 0xc, 0x00 }, { WAIT_IDLE },
2141{ 0xc, 0x00 }, { WAIT_IDLE },
2142{ 0xc, 0x00 }, { WAIT_IDLE },
2143{ 0xc, 0x00 }, { WAIT_IDLE },
2144{ 0xc, 0x00 }, { WAIT_IDLE },
2145{ 0xc, 0x00 }, { WAIT_IDLE },
2146{ 0xc, 0x00 }, { WAIT_IDLE },
2147{ 0xc, 0x00 }, { WAIT_IDLE },
2148{ 0xc, 0x00 }, { WAIT_IDLE },
2149{ 0xc, 0x00 }, { WAIT_IDLE },
2150{ 0xc, 0x00 }, { WAIT_IDLE },
2151{ 0xc, 0x00 }, { WAIT_IDLE },
2152{ 0xc, 0x00 }, { WAIT_IDLE },
2153{ 0xc, 0x00 }, { WAIT_IDLE },
2154{ 0xc, 0x00 }, { WAIT_IDLE },
2155{ 0xc, 0x00 }, { WAIT_IDLE },
2156{ 0xc, 0x00 }, { WAIT_IDLE },
2157{ 0xc, 0x00 }, { WAIT_IDLE },
2158{ 0xc, 0x00 }, { WAIT_IDLE },
2159{ 0xc, 0x00 }, { WAIT_IDLE },
2160{ 0xc, 0x00 }, { WAIT_IDLE },
2161{ 0xc, 0x00 }, { WAIT_IDLE },
2162{ 0xc, 0x00 }, { WAIT_IDLE },
2163{ 0xc, 0x00 }, { WAIT_IDLE },
2164{ 0xc, 0x00 }, { WAIT_IDLE },
2165{ 0xc, 0x00 }, { WAIT_IDLE },
2166{ 0xc, 0x00 }, { WAIT_IDLE },
2167{ 0xc, 0x00 }, { WAIT_IDLE },
2168{ 0xc, 0x00 }, { WAIT_IDLE },
2169{ 0xc, 0x00 }, { WAIT_IDLE },
2170{ 0xc, 0x00 }, { WAIT_IDLE },
2171{ 0xc, 0x00 }, { WAIT_IDLE },
2172{ 0xc, 0x00 }, { WAIT_IDLE },
2173{ 0xc, 0x00 }, { WAIT_IDLE },
2174{ 0xc, 0x00 }, { WAIT_IDLE },
2175{ 0xc, 0x00 }, { WAIT_IDLE },
2176{ 0xc, 0x00 }, { WAIT_IDLE },
2177{ 0xc, 0x00 }, { WAIT_IDLE },
2178{ 0xc, 0x00 }, { WAIT_IDLE },
2179{ 0xc, 0x00 }, { WAIT_IDLE },
2180{ 0xc, 0x00 }, { WAIT_IDLE },
2181{ 0xc, 0x00 }, { WAIT_IDLE },
2182{ 0xc, 0x00 }, { WAIT_IDLE },
2183{ 0xc, 0x00 }, { WAIT_IDLE },
2184
2185{ 0x9, 0x05 }, { 0xb, 0x03 }, { 0xa, 0x10 },
2186
2187{ 0xc, 0x00 }, { WAIT_IDLE },
2188{ 0xc, 0x00 }, { WAIT_IDLE },
2189{ 0xc, 0x00 }, { WAIT_IDLE },
2190{ 0xc, 0x00 }, { WAIT_IDLE },
2191{ 0xc, 0x00 }, { WAIT_IDLE },
2192{ 0xc, 0x00 }, { WAIT_IDLE },
2193{ 0xc, 0x00 }, { WAIT_IDLE },
2194{ 0xc, 0x00 }, { WAIT_IDLE },
2195{ 0xc, 0x00 }, { WAIT_IDLE },
2196{ 0xc, 0x00 }, { WAIT_IDLE },
2197{ 0xc, 0x00 }, { WAIT_IDLE },
2198{ 0xc, 0x00 }, { WAIT_IDLE },
2199{ 0xc, 0x00 }, { WAIT_IDLE },
2200{ 0xc, 0x00 }, { WAIT_IDLE },
2201{ 0xc, 0x00 }, { WAIT_IDLE },
2202{ 0xc, 0x00 }, { WAIT_IDLE },
2203{ 0xc, 0x00 }, { WAIT_IDLE },
2204{ 0xc, 0x00 }, { WAIT_IDLE },
2205{ 0xc, 0x00 }, { WAIT_IDLE },
2206{ 0xc, 0x00 }, { WAIT_IDLE },
2207{ 0xc, 0x00 }, { WAIT_IDLE },
2208{ 0xc, 0x00 }, { WAIT_IDLE },
2209{ 0xc, 0x00 }, { WAIT_IDLE },
2210{ 0xc, 0x00 }, { WAIT_IDLE },
2211{ 0xc, 0x00 }, { WAIT_IDLE },
2212{ 0xc, 0x00 }, { WAIT_IDLE },
2213{ 0xc, 0x00 }, { WAIT_IDLE },
2214{ 0xc, 0x00 }, { WAIT_IDLE },
2215{ 0xc, 0x00 }, { WAIT_IDLE },
2216{ 0xc, 0x00 }, { WAIT_IDLE },
2217{ 0xc, 0x00 }, { WAIT_IDLE },
2218{ 0xc, 0x00 }, { WAIT_IDLE },
2219{ 0xc, 0x00 }, { WAIT_IDLE },
2220{ 0xc, 0x00 }, { WAIT_IDLE },
2221{ 0xc, 0x00 }, { WAIT_IDLE },
2222{ 0xc, 0x00 }, { WAIT_IDLE },
2223{ 0xc, 0x00 }, { WAIT_IDLE },
2224{ 0xc, 0x00 }, { WAIT_IDLE },
2225{ 0xc, 0x00 }, { WAIT_IDLE },
2226{ 0xc, 0x00 }, { WAIT_IDLE },
2227{ 0xc, 0x00 }, { WAIT_IDLE },
2228{ 0xc, 0x00 }, { WAIT_IDLE },
2229{ 0xc, 0x00 }, { WAIT_IDLE },
2230{ 0xc, 0x00 }, { WAIT_IDLE },
2231{ 0xc, 0x00 }, { WAIT_IDLE },
2232{ 0xc, 0x00 }, { WAIT_IDLE },
2233{ 0xc, 0x00 }, { WAIT_IDLE },
2234{ 0xc, 0x00 }, { WAIT_IDLE },
2235
2236{ 0x9, 0x05 }, { 0xb, 0x04 }, { 0xa, 0x10 },
2237
2238{ 0xc, 0x00 }, { WAIT_IDLE },
2239{ 0xc, 0x00 }, { WAIT_IDLE },
2240{ 0xc, 0x00 }, { WAIT_IDLE },
2241{ 0xc, 0x00 }, { WAIT_IDLE },
2242{ 0xc, 0x00 }, { WAIT_IDLE },
2243{ 0xc, 0x00 }, { WAIT_IDLE },
2244{ 0xc, 0x00 }, { WAIT_IDLE },
2245{ 0xc, 0x00 }, { WAIT_IDLE },
2246{ 0xc, 0x00 }, { WAIT_IDLE },
2247{ 0xc, 0x00 }, { WAIT_IDLE },
2248{ 0xc, 0x00 }, { WAIT_IDLE },
2249{ 0xc, 0x00 }, { WAIT_IDLE },
2250{ 0xc, 0x00 }, { WAIT_IDLE },
2251{ 0xc, 0x00 }, { WAIT_IDLE },
2252{ 0xc, 0x00 }, { WAIT_IDLE },
2253{ 0xc, 0x00 }, { WAIT_IDLE },
2254{ 0xc, 0x00 }, { WAIT_IDLE },
2255{ 0xc, 0x00 }, { WAIT_IDLE },
2256{ 0xc, 0x00 }, { WAIT_IDLE },
2257{ 0xc, 0x00 }, { WAIT_IDLE },
2258{ 0xc, 0x00 }, { WAIT_IDLE },
2259{ 0xc, 0x00 }, { WAIT_IDLE },
2260{ 0xc, 0x00 }, { WAIT_IDLE },
2261{ 0xc, 0x00 }, { WAIT_IDLE },
2262{ 0xc, 0x00 }, { WAIT_IDLE },
2263{ 0xc, 0x00 }, { WAIT_IDLE },
2264{ 0xc, 0x00 }, { WAIT_IDLE },
2265{ 0xc, 0x00 }, { WAIT_IDLE },
2266{ 0xc, 0x00 }, { WAIT_IDLE },
2267{ 0xc, 0x00 }, { WAIT_IDLE },
2268{ 0xc, 0x00 }, { WAIT_IDLE },
2269{ 0xc, 0x00 }, { WAIT_IDLE },
2270{ 0xc, 0x00 }, { WAIT_IDLE },
2271{ 0xc, 0x00 }, { WAIT_IDLE },
2272{ 0xc, 0x00 }, { WAIT_IDLE },
2273{ 0xc, 0x00 }, { WAIT_IDLE },
2274{ 0xc, 0x00 }, { WAIT_IDLE },
2275{ 0xc, 0x00 }, { WAIT_IDLE },
2276{ 0xc, 0x00 }, { WAIT_IDLE },
2277{ 0xc, 0x00 }, { WAIT_IDLE },
2278{ 0xc, 0x00 }, { WAIT_IDLE },
2279{ 0xc, 0x00 }, { WAIT_IDLE },
2280{ 0xc, 0x00 }, { WAIT_IDLE },
2281{ 0xc, 0x00 }, { WAIT_IDLE },
2282{ 0xc, 0x00 }, { WAIT_IDLE },
2283{ 0xc, 0x00 }, { WAIT_IDLE },
2284{ 0xc, 0x00 }, { WAIT_IDLE },
2285{ 0xc, 0x00 }, { WAIT_IDLE },
2286
2287/* Page six v.2 */
2288{ 0x9, 0x01 }, { 0xb, 0x06 },
2289
2290{ 0xa, 0x10 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2291{ 0xa, 0x12 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2292{ 0xa, 0x14 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2293{ 0xa, 0x16 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2294{ 0xa, 0x18 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2295{ 0xa, 0x1a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2296{ 0xa, 0x1c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2297{ 0xa, 0x1e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2298{ 0xa, 0x20 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2299{ 0xa, 0x22 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2300{ 0xa, 0x24 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2301{ 0xa, 0x26 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2302{ 0xa, 0x28 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2303{ 0xa, 0x2a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2304{ 0xa, 0x2c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2305{ 0xa, 0x2e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2306{ 0xa, 0x30 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2307{ 0xa, 0x32 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2308{ 0xa, 0x34 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2309{ 0xa, 0x36 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2310{ 0xa, 0x38 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2311{ 0xa, 0x3a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2312{ 0xa, 0x3c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2313{ 0xa, 0x3e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2314
2315{ 0x9, 0x05 }, { 0xb, 0x07 }, { 0xa, 0x10 },
2316
2317{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2318{ 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2319{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2320{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2321{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2322{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2323{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2324{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2325{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2326{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2327{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2328{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2329{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2330{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2331{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2332{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2333{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2334{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2335{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2336{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2337{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2338{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2339{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2340{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2341{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2342{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2343{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2344{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2345{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2346{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2347{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2348{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2349{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2350{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2351{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2352{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2353{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2354{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2355{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2356{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2357{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2358{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2359{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2360{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2361{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2362{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2363{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2364{ 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2365
2366{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
2367{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2368{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
2369{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2370{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
2371{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2372{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
2373{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2374{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
2375{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2376{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
2377{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2378{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
2379{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2380{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
2381{ 0xe, 0x02 }, { 0xf, 0x00 }, { WAIT_IDLE },
2382{ 0xe, 0xb0 }, { 0xf, 0x20 }, { WAIT_IDLE },
2383{ 0xe, 0xb1 }, { 0xf, 0x20 }, { WAIT_IDLE },
2384{ 0xe, 0xb2 }, { 0xf, 0x20 }, { WAIT_IDLE },
2385{ 0xe, 0xb3 }, { 0xf, 0x20 }, { WAIT_IDLE },
2386{ 0xe, 0xb4 }, { 0xf, 0x20 }, { WAIT_IDLE },
2387{ 0xe, 0xb5 }, { 0xf, 0x20 }, { WAIT_IDLE },
2388{ 0xe, 0xb6 }, { 0xf, 0x20 }, { WAIT_IDLE },
2389{ 0xe, 0xb7 }, { 0xf, 0x20 }, { WAIT_IDLE },
2390{ 0xe, 0xf0 }, { 0xf, 0x20 }, { WAIT_IDLE },
2391{ 0xe, 0xf1 }, { 0xf, 0x20 }, { WAIT_IDLE },
2392{ 0xe, 0xf2 }, { 0xf, 0x20 }, { WAIT_IDLE },
2393{ 0xe, 0xf3 }, { 0xf, 0x20 }, { WAIT_IDLE },
2394{ 0xe, 0xf4 }, { 0xf, 0x20 }, { WAIT_IDLE },
2395{ 0xe, 0xf5 }, { 0xf, 0x20 }, { WAIT_IDLE },
2396{ 0xe, 0xf6 }, { 0xf, 0x20 }, { WAIT_IDLE },
2397{ 0xe, 0xf7 }, { 0xf, 0x20 }, { WAIT_IDLE },
2398{ 0xe, 0x10 }, { 0xf, 0xff }, { WAIT_IDLE },
2399{ 0xe, 0x11 }, { 0xf, 0xff }, { WAIT_IDLE },
2400{ 0xe, 0x12 }, { 0xf, 0xff }, { WAIT_IDLE },
2401{ 0xe, 0x13 }, { 0xf, 0xff }, { WAIT_IDLE },
2402{ 0xe, 0x14 }, { 0xf, 0xff }, { WAIT_IDLE },
2403{ 0xe, 0x15 }, { 0xf, 0xff }, { WAIT_IDLE },
2404{ 0xe, 0x16 }, { 0xf, 0xff }, { WAIT_IDLE },
2405{ 0xe, 0x17 }, { 0xf, 0xff }, { WAIT_IDLE },
2406{ 0xe, 0x20 }, { 0xf, 0xff }, { WAIT_IDLE },
2407{ 0xe, 0x21 }, { 0xf, 0xff }, { WAIT_IDLE },
2408{ 0xe, 0x22 }, { 0xf, 0xff }, { WAIT_IDLE },
2409{ 0xe, 0x23 }, { 0xf, 0xff }, { WAIT_IDLE },
2410{ 0xe, 0x24 }, { 0xf, 0xff }, { WAIT_IDLE },
2411{ 0xe, 0x25 }, { 0xf, 0xff }, { WAIT_IDLE },
2412{ 0xe, 0x26 }, { 0xf, 0xff }, { WAIT_IDLE },
2413{ 0xe, 0x27 }, { 0xf, 0xff }, { WAIT_IDLE },
2414{ 0xe, 0x30 }, { 0xf, 0x00 }, { WAIT_IDLE },
2415{ 0xe, 0x31 }, { 0xf, 0x00 }, { WAIT_IDLE },
2416{ 0xe, 0x32 }, { 0xf, 0x00 }, { WAIT_IDLE },
2417{ 0xe, 0x33 }, { 0xf, 0x00 }, { WAIT_IDLE },
2418{ 0xe, 0x34 }, { 0xf, 0x00 }, { WAIT_IDLE },
2419{ 0xe, 0x35 }, { 0xf, 0x00 }, { WAIT_IDLE },
2420{ 0xe, 0x36 }, { 0xf, 0x00 }, { WAIT_IDLE },
2421{ 0xe, 0x37 }, { 0xf, 0x00 }, { WAIT_IDLE },
2422{ 0xe, 0x40 }, { 0xf, 0x00 }, { WAIT_IDLE },
2423{ 0xe, 0x41 }, { 0xf, 0x00 }, { WAIT_IDLE },
2424{ 0xe, 0x42 }, { 0xf, 0x00 }, { WAIT_IDLE },
2425{ 0xe, 0x43 }, { 0xf, 0x00 }, { WAIT_IDLE },
2426{ 0xe, 0x44 }, { 0xf, 0x00 }, { WAIT_IDLE },
2427{ 0xe, 0x45 }, { 0xf, 0x00 }, { WAIT_IDLE },
2428{ 0xe, 0x46 }, { 0xf, 0x00 }, { WAIT_IDLE },
2429{ 0xe, 0x47 }, { 0xf, 0x00 }, { WAIT_IDLE },
2430{ 0xe, 0x50 }, { 0xf, 0x00 }, { WAIT_IDLE },
2431{ 0xe, 0x51 }, { 0xf, 0x00 }, { WAIT_IDLE },
2432{ 0xe, 0x52 }, { 0xf, 0x00 }, { WAIT_IDLE },
2433{ 0xe, 0x53 }, { 0xf, 0x00 }, { WAIT_IDLE },
2434{ 0xe, 0x54 }, { 0xf, 0x00 }, { WAIT_IDLE },
2435{ 0xe, 0x55 }, { 0xf, 0x00 }, { WAIT_IDLE },
2436{ 0xe, 0x56 }, { 0xf, 0x00 }, { WAIT_IDLE },
2437{ 0xe, 0x57 }, { 0xf, 0x00 }, { WAIT_IDLE },
2438{ 0xe, 0x60 }, { 0xf, 0x00 }, { WAIT_IDLE },
2439{ 0xe, 0x61 }, { 0xf, 0x00 }, { WAIT_IDLE },
2440{ 0xe, 0x62 }, { 0xf, 0x00 }, { WAIT_IDLE },
2441{ 0xe, 0x63 }, { 0xf, 0x00 }, { WAIT_IDLE },
2442{ 0xe, 0x64 }, { 0xf, 0x00 }, { WAIT_IDLE },
2443{ 0xe, 0x65 }, { 0xf, 0x00 }, { WAIT_IDLE },
2444{ 0xe, 0x66 }, { 0xf, 0x00 }, { WAIT_IDLE },
2445{ 0xe, 0x67 }, { 0xf, 0x00 }, { WAIT_IDLE },
2446{ 0xe, 0x70 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2447{ 0xe, 0x71 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2448{ 0xe, 0x72 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2449{ 0xe, 0x73 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2450{ 0xe, 0x74 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2451{ 0xe, 0x75 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2452{ 0xe, 0x76 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2453{ 0xe, 0x77 }, { 0xf, 0xc0 }, { WAIT_IDLE },
2454{ 0xe, 0x80 }, { 0xf, 0x00 }, { WAIT_IDLE },
2455{ 0xe, 0x81 }, { 0xf, 0x00 }, { WAIT_IDLE },
2456{ 0xe, 0x82 }, { 0xf, 0x00 }, { WAIT_IDLE },
2457{ 0xe, 0x83 }, { 0xf, 0x00 }, { WAIT_IDLE },
2458{ 0xe, 0x84 }, { 0xf, 0x00 }, { WAIT_IDLE },
2459{ 0xe, 0x85 }, { 0xf, 0x00 }, { WAIT_IDLE },
2460{ 0xe, 0x86 }, { 0xf, 0x00 }, { WAIT_IDLE },
2461{ 0xe, 0x87 }, { 0xf, 0x00 }, { WAIT_IDLE },
2462{ 0xe, 0x90 }, { 0xf, 0x00 }, { WAIT_IDLE },
2463{ 0xe, 0x91 }, { 0xf, 0x00 }, { WAIT_IDLE },
2464{ 0xe, 0x92 }, { 0xf, 0x00 }, { WAIT_IDLE },
2465{ 0xe, 0x93 }, { 0xf, 0x00 }, { WAIT_IDLE },
2466{ 0xe, 0x94 }, { 0xf, 0x00 }, { WAIT_IDLE },
2467{ 0xe, 0x95 }, { 0xf, 0x00 }, { WAIT_IDLE },
2468{ 0xe, 0x96 }, { 0xf, 0x00 }, { WAIT_IDLE },
2469{ 0xe, 0x97 }, { 0xf, 0x00 }, { WAIT_IDLE },
2470{ 0xe, 0xa0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2471{ 0xe, 0xa1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2472{ 0xe, 0xa2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2473{ 0xe, 0xa3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2474{ 0xe, 0xa4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2475{ 0xe, 0xa5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2476{ 0xe, 0xa6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2477{ 0xe, 0xa7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2478{ 0xe, 0xc0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2479{ 0xe, 0xc1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2480{ 0xe, 0xc2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2481{ 0xe, 0xc3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2482{ 0xe, 0xc4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2483{ 0xe, 0xc5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2484{ 0xe, 0xc6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2485{ 0xe, 0xc7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2486{ 0xe, 0xd0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2487{ 0xe, 0xd1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2488{ 0xe, 0xd2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2489{ 0xe, 0xd3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2490{ 0xe, 0xd4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2491{ 0xe, 0xd5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2492{ 0xe, 0xd6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2493{ 0xe, 0xd7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2494{ 0xe, 0xe0 }, { 0xf, 0x00 }, { WAIT_IDLE },
2495{ 0xe, 0xe1 }, { 0xf, 0x00 }, { WAIT_IDLE },
2496{ 0xe, 0xe2 }, { 0xf, 0x00 }, { WAIT_IDLE },
2497{ 0xe, 0xe3 }, { 0xf, 0x00 }, { WAIT_IDLE },
2498{ 0xe, 0xe4 }, { 0xf, 0x00 }, { WAIT_IDLE },
2499{ 0xe, 0xe5 }, { 0xf, 0x00 }, { WAIT_IDLE },
2500{ 0xe, 0xe6 }, { 0xf, 0x00 }, { WAIT_IDLE },
2501{ 0xe, 0xe7 }, { 0xf, 0x00 }, { WAIT_IDLE },
2502{ 0xe, 0x01 }, { 0xf, 0x00 }, { WAIT_IDLE },
2503{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2504{ 0xe, 0x01 }, { 0xf, 0x01 }, { WAIT_IDLE },
2505{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2506{ 0xe, 0x01 }, { 0xf, 0x02 }, { WAIT_IDLE },
2507{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2508{ 0xe, 0x01 }, { 0xf, 0x03 }, { WAIT_IDLE },
2509{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2510{ 0xe, 0x01 }, { 0xf, 0x04 }, { WAIT_IDLE },
2511{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2512{ 0xe, 0x01 }, { 0xf, 0x05 }, { WAIT_IDLE },
2513{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2514{ 0xe, 0x01 }, { 0xf, 0x06 }, { WAIT_IDLE },
2515{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2516{ 0xe, 0x01 }, { 0xf, 0x07 }, { WAIT_IDLE },
2517{ 0xe, 0x02 }, { 0xf, 0x01 }, { WAIT_IDLE },
2518
2519{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2520{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2521{ 0xb, 0x07 }, { 0xa, 0x45 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2522{ 0xb, 0x07 }, { 0xa, 0x48 }, { 0xd, 0x0f }, { 0xc, 0xff }, { WAIT_IDLE },
2523{ 0xb, 0x07 }, { 0xa, 0x7b }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
2524{ 0xb, 0x07 }, { 0xa, 0x7d }, { 0xd, 0x04 }, { 0xc, 0xcc }, { WAIT_IDLE },
2525{ 0xb, 0x07 }, { 0xa, 0x7c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2526{ 0xb, 0x07 }, { 0xa, 0x7e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2527{ 0xb, 0x07 }, { 0xa, 0x46 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2528{ 0xb, 0x07 }, { 0xa, 0x49 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2529{ 0xb, 0x07 }, { 0xa, 0x47 }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2530{ 0xb, 0x07 }, { 0xa, 0x4a }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2531{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2532{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 }, { WAIT_IDLE },
2533
2534{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x00 },
2535{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x00 },
2536{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x28 },
2537{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x28 },
2538{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x51 },
2539{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x51 },
2540{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0x7a },
2541{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0x7a },
2542{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xa3 },
2543{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xa3 },
2544{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xcc },
2545{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xcc },
2546{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x00 }, { 0xc, 0xf5 },
2547{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x00 }, { 0xc, 0xf5 },
2548{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x1e },
2549{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x1e },
2550{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x47 },
2551{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x47 },
2552{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x70 },
2553{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x70 },
2554{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0x99 },
2555{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0x99 },
2556{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xc2 },
2557{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xc2 },
2558{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x01 }, { 0xc, 0xeb },
2559{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x01 }, { 0xc, 0xeb },
2560{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x14 },
2561{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x14 },
2562{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x3d },
2563{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x3d },
2564{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x66 },
2565{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x66 },
2566{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0x8f },
2567{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0x8f },
2568{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xb8 },
2569{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xb8 },
2570{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x02 }, { 0xc, 0xe1 },
2571{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x02 }, { 0xc, 0xe1 },
2572{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x0a },
2573{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x0a },
2574{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x33 },
2575{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x33 },
2576{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x5c },
2577{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x5c },
2578{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0x85 },
2579{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0x85 },
2580{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xae },
2581{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xae },
2582{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x03 }, { 0xc, 0xd7 },
2583{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x03 }, { 0xc, 0xd7 },
2584{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x00 },
2585{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x00 },
2586{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x28 },
2587{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x28 },
2588{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x51 },
2589{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x51 },
2590{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0x7a },
2591{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0x7a },
2592{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xa3 },
2593{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xa3 },
2594{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xcc },
2595{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xcc },
2596{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x04 }, { 0xc, 0xf5 },
2597{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x04 }, { 0xc, 0xf5 },
2598{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x1e },
2599{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x1e },
2600{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x47 },
2601{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x47 },
2602{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x70 },
2603{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x70 },
2604{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0x99 },
2605{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0x99 },
2606{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xc2 },
2607{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xc2 },
2608{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x05 }, { 0xc, 0xeb },
2609{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x05 }, { 0xc, 0xeb },
2610{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x14 },
2611{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x14 },
2612{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x3d },
2613{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x3d },
2614{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x66 },
2615{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x66 },
2616{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0x8f },
2617{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0x8f },
2618{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xb8 },
2619{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xb8 },
2620{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x06 }, { 0xc, 0xe1 },
2621{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x06 }, { 0xc, 0xe1 },
2622{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x0a },
2623{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x0a },
2624{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x33 },
2625{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x33 },
2626{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x5c },
2627{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x5c },
2628{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0x85 },
2629{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0x85 },
2630{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xae },
2631{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xae },
2632{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x07 }, { 0xc, 0xd7 },
2633{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x07 }, { 0xc, 0xd7 },
2634{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x00 },
2635{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x00 },
2636{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x28 },
2637{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x28 },
2638{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x51 },
2639{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x51 },
2640{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0x7a },
2641{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0x7a },
2642{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xa3 },
2643{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xa3 },
2644{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xcc },
2645{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xcc },
2646{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x08 }, { 0xc, 0xf5 },
2647{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x08 }, { 0xc, 0xf5 },
2648{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x1e },
2649{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x1e },
2650{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x47 },
2651{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x47 },
2652{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x70 },
2653{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x70 },
2654{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0x99 },
2655{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0x99 },
2656{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xc2 },
2657{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xc2 },
2658{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x09 }, { 0xc, 0xeb },
2659{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x09 }, { 0xc, 0xeb },
2660{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x14 },
2661{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x14 },
2662{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x3d },
2663{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x3d },
2664{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x66 },
2665{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x66 },
2666{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0x8f },
2667{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0x8f },
2668{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xb8 },
2669{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xb8 },
2670{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0a }, { 0xc, 0xe1 },
2671{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0a }, { 0xc, 0xe1 },
2672{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x0a },
2673{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x0a },
2674{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x33 },
2675{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x33 },
2676{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x5c },
2677{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x5c },
2678{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0x85 },
2679{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0x85 },
2680{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xae },
2681{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xae },
2682{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0b }, { 0xc, 0xd7 },
2683{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0b }, { 0xc, 0xd7 },
2684{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x00 },
2685{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x00 },
2686{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x28 },
2687{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x28 },
2688{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x51 },
2689{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x51 },
2690{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0x7a },
2691{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0x7a },
2692{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xa3 },
2693{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xa3 },
2694{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xcc },
2695{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xcc },
2696{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0c }, { 0xc, 0xf5 },
2697{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0c }, { 0xc, 0xf5 },
2698{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x1e },
2699{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x1e },
2700{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x47 },
2701{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x47 },
2702{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x70 },
2703{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x70 },
2704{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0x99 },
2705{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0x99 },
2706{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xc2 },
2707{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xc2 },
2708{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0d }, { 0xc, 0xeb },
2709{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0d }, { 0xc, 0xeb },
2710{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x14 },
2711{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x14 },
2712{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x3d },
2713{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x3d },
2714{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x66 },
2715{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x66 },
2716{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0x8f },
2717{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0x8f },
2718{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xb8 },
2719{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xb8 },
2720{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0e }, { 0xc, 0xe1 },
2721{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0e }, { 0xc, 0xe1 },
2722{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x0a },
2723{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x0a },
2724{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x33 },
2725{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x33 },
2726{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x5c },
2727{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x5c },
2728{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0x85 },
2729{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0x85 },
2730{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xae },
2731{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xae },
2732{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xd7 },
2733{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xd7 },
2734{ 0xb, 0x07 }, { 0xa, 0x4c }, { 0xd, 0x0f }, { 0xc, 0xff },
2735{ 0xb, 0x07 }, { 0xa, 0x4e }, { 0xd, 0x0f }, { 0xc, 0xff },
2736
2737/* mute off */
2738{ 0x8, 0x00 }, { WAIT_IDLE }
2739};
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
index 7d93fa705ccf..8d13d933087d 100644
--- a/sound/sparc/cs4231.c
+++ b/sound/sparc/cs4231.c
@@ -703,7 +703,7 @@ static int snd_cs4231_timer_stop(struct snd_timer *timer)
703 return 0; 703 return 0;
704} 704}
705 705
706static void __init snd_cs4231_init(struct snd_cs4231 *chip) 706static void __devinit snd_cs4231_init(struct snd_cs4231 *chip)
707{ 707{
708 unsigned long flags; 708 unsigned long flags;
709 709
@@ -1020,7 +1020,7 @@ static snd_pcm_uframes_t snd_cs4231_capture_pointer(
1020 return bytes_to_frames(substream->runtime, ptr); 1020 return bytes_to_frames(substream->runtime, ptr);
1021} 1021}
1022 1022
1023static int __init snd_cs4231_probe(struct snd_cs4231 *chip) 1023static int __devinit snd_cs4231_probe(struct snd_cs4231 *chip)
1024{ 1024{
1025 unsigned long flags; 1025 unsigned long flags;
1026 int i; 1026 int i;
@@ -1219,7 +1219,7 @@ static struct snd_pcm_ops snd_cs4231_capture_ops = {
1219 .pointer = snd_cs4231_capture_pointer, 1219 .pointer = snd_cs4231_capture_pointer,
1220}; 1220};
1221 1221
1222static int __init snd_cs4231_pcm(struct snd_card *card) 1222static int __devinit snd_cs4231_pcm(struct snd_card *card)
1223{ 1223{
1224 struct snd_cs4231 *chip = card->private_data; 1224 struct snd_cs4231 *chip = card->private_data;
1225 struct snd_pcm *pcm; 1225 struct snd_pcm *pcm;
@@ -1248,7 +1248,7 @@ static int __init snd_cs4231_pcm(struct snd_card *card)
1248 return 0; 1248 return 0;
1249} 1249}
1250 1250
1251static int __init snd_cs4231_timer(struct snd_card *card) 1251static int __devinit snd_cs4231_timer(struct snd_card *card)
1252{ 1252{
1253 struct snd_cs4231 *chip = card->private_data; 1253 struct snd_cs4231 *chip = card->private_data;
1254 struct snd_timer *timer; 1254 struct snd_timer *timer;
@@ -1499,7 +1499,7 @@ static int snd_cs4231_put_double(struct snd_kcontrol *kcontrol,
1499 .private_value = (left_reg) | ((right_reg) << 8) | ((shift_left) << 16) | \ 1499 .private_value = (left_reg) | ((right_reg) << 8) | ((shift_left) << 16) | \
1500 ((shift_right) << 19) | ((mask) << 24) | ((invert) << 22) } 1500 ((shift_right) << 19) | ((mask) << 24) | ((invert) << 22) }
1501 1501
1502static struct snd_kcontrol_new snd_cs4231_controls[] __initdata = { 1502static struct snd_kcontrol_new snd_cs4231_controls[] __devinitdata = {
1503CS4231_DOUBLE("PCM Playback Switch", 0, CS4231_LEFT_OUTPUT, 1503CS4231_DOUBLE("PCM Playback Switch", 0, CS4231_LEFT_OUTPUT,
1504 CS4231_RIGHT_OUTPUT, 7, 7, 1, 1), 1504 CS4231_RIGHT_OUTPUT, 7, 7, 1, 1),
1505CS4231_DOUBLE("PCM Playback Volume", 0, CS4231_LEFT_OUTPUT, 1505CS4231_DOUBLE("PCM Playback Volume", 0, CS4231_LEFT_OUTPUT,
@@ -1538,7 +1538,7 @@ CS4231_SINGLE("Line Out Switch", 0, CS4231_PIN_CTRL, 6, 1, 1),
1538CS4231_SINGLE("Headphone Out Switch", 0, CS4231_PIN_CTRL, 7, 1, 1) 1538CS4231_SINGLE("Headphone Out Switch", 0, CS4231_PIN_CTRL, 7, 1, 1)
1539}; 1539};
1540 1540
1541static int __init snd_cs4231_mixer(struct snd_card *card) 1541static int __devinit snd_cs4231_mixer(struct snd_card *card)
1542{ 1542{
1543 struct snd_cs4231 *chip = card->private_data; 1543 struct snd_cs4231 *chip = card->private_data;
1544 int err, idx; 1544 int err, idx;
@@ -1559,7 +1559,7 @@ static int __init snd_cs4231_mixer(struct snd_card *card)
1559 1559
1560static int dev; 1560static int dev;
1561 1561
1562static int __init cs4231_attach_begin(struct snd_card **rcard) 1562static int __devinit cs4231_attach_begin(struct snd_card **rcard)
1563{ 1563{
1564 struct snd_card *card; 1564 struct snd_card *card;
1565 struct snd_cs4231 *chip; 1565 struct snd_cs4231 *chip;
@@ -1590,7 +1590,7 @@ static int __init cs4231_attach_begin(struct snd_card **rcard)
1590 return 0; 1590 return 0;
1591} 1591}
1592 1592
1593static int __init cs4231_attach_finish(struct snd_card *card) 1593static int __devinit cs4231_attach_finish(struct snd_card *card)
1594{ 1594{
1595 struct snd_cs4231 *chip = card->private_data; 1595 struct snd_cs4231 *chip = card->private_data;
1596 int err; 1596 int err;
@@ -1794,9 +1794,9 @@ static struct snd_device_ops snd_cs4231_sbus_dev_ops = {
1794 .dev_free = snd_cs4231_sbus_dev_free, 1794 .dev_free = snd_cs4231_sbus_dev_free,
1795}; 1795};
1796 1796
1797static int __init snd_cs4231_sbus_create(struct snd_card *card, 1797static int __devinit snd_cs4231_sbus_create(struct snd_card *card,
1798 struct of_device *op, 1798 struct of_device *op,
1799 int dev) 1799 int dev)
1800{ 1800{
1801 struct snd_cs4231 *chip = card->private_data; 1801 struct snd_cs4231 *chip = card->private_data;
1802 int err; 1802 int err;
@@ -1960,9 +1960,9 @@ static struct snd_device_ops snd_cs4231_ebus_dev_ops = {
1960 .dev_free = snd_cs4231_ebus_dev_free, 1960 .dev_free = snd_cs4231_ebus_dev_free,
1961}; 1961};
1962 1962
1963static int __init snd_cs4231_ebus_create(struct snd_card *card, 1963static int __devinit snd_cs4231_ebus_create(struct snd_card *card,
1964 struct of_device *op, 1964 struct of_device *op,
1965 int dev) 1965 int dev)
1966{ 1966{
1967 struct snd_cs4231 *chip = card->private_data; 1967 struct snd_cs4231 *chip = card->private_data;
1968 int err; 1968 int err;