]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Oct 2008 23:08:11 +0000 (16:08 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Oct 2008 23:08:11 +0000 (16:08 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
  ide: drivers/ide/generic.c -> drivers/ide/ide-pci-generic.c
  ide-disk: set non-rotational queue flag for SSD and CF devices
  ide-cd: add TEAC CD-224E to the NO_AUTOCLOSE list
  ide: Add tx4938ide driver (v2)
  TXx9: Add TX4938 ATA support (v3)
  ide: Add tx4939ide driver (v6)
  ide: two more pci_ioremap_bar() conversions
  pci: use pci_ioremap_bar() in drivers/ide
  sgiioc4: use ide_host_add() (take 2)
  sgiioc4: fix error cleanup path (take 2)

110 files changed:
MAINTAINERS
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/configs/corgi_defconfig
arch/arm/configs/msm_defconfig
arch/arm/configs/spitz_defconfig
arch/arm/include/asm/div64.h
arch/arm/mach-at91/gpio.c
arch/arm/mach-kirkwood/Makefile
arch/arm/mach-msm/Kconfig
arch/arm/mach-msm/Makefile
arch/arm/mach-msm/board-halibut.c
arch/arm/mach-msm/clock-7x01a.c [new file with mode: 0644]
arch/arm/mach-msm/clock.c [new file with mode: 0644]
arch/arm/mach-msm/clock.h [new file with mode: 0644]
arch/arm/mach-msm/common.c [deleted file]
arch/arm/mach-msm/devices.c [new file with mode: 0644]
arch/arm/mach-msm/devices.h [new file with mode: 0644]
arch/arm/mach-msm/dma.c
arch/arm/mach-msm/include/mach/board.h
arch/arm/mach-msm/include/mach/debug-macro.S
arch/arm/mach-msm/include/mach/dma.h
arch/arm/mach-msm/include/mach/msm_iomap.h
arch/arm/mach-msm/include/mach/vreg.h [new file with mode: 0644]
arch/arm/mach-msm/io.c
arch/arm/mach-msm/irq.c
arch/arm/mach-msm/proc_comm.c [new file with mode: 0644]
arch/arm/mach-msm/proc_comm.h [new file with mode: 0644]
arch/arm/mach-msm/timer.c
arch/arm/mach-msm/vreg.c [new file with mode: 0644]
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/corgi_lcd.c [new file with mode: 0644]
arch/arm/mach-pxa/corgi_ssp.c [new file with mode: 0644]
arch/arm/mach-pxa/include/mach/corgi.h
arch/arm/mach-pxa/include/mach/spitz.h
arch/arm/mach-pxa/include/mach/tosa.h
arch/arm/mach-pxa/sharpsl_pm.c
arch/arm/mach-pxa/tosa.c
arch/arm/mm/Kconfig
arch/arm/mm/proc-v7.S
arch/x86/boot/video-bios.c
arch/x86/boot/video-vesa.c
arch/x86/include/asm/syscall.h
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/cpu/proc.c
arch/x86/kernel/dumpstack_32.c
arch/x86/kernel/entry_32.S
arch/x86/kernel/genapic_flat_64.c
arch/x86/kernel/genx2apic_cluster.c
arch/x86/kernel/genx2apic_phys.c
arch/x86/kernel/genx2apic_uv_x.c
arch/x86/kernel/setup_percpu.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/tlb_uv.c
arch/x86/kernel/traps.c
arch/x86/kernel/xsave.c
arch/x86/mm/memtest.c
drivers/ata/libata-core.c
drivers/ata/libata-scsi.c
drivers/ata/libata.h
drivers/input/touchscreen/Kconfig
drivers/leds/Kconfig
drivers/leds/Makefile
drivers/leds/led-class.c
drivers/leds/leds-ams-delta.c
drivers/leds/leds-cm-x270.c [deleted file]
drivers/leds/leds-da903x.c [new file with mode: 0644]
drivers/leds/leds-hp-disk.c [new file with mode: 0644]
drivers/leds/leds-pca955x.c
drivers/leds/leds-wrap.c
drivers/leds/ledtrig-backlight.c [new file with mode: 0644]
drivers/leds/ledtrig-timer.c
drivers/message/fusion/mptscsih.c
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-xxxx.c
drivers/scsi/aic7xxx/aic79xx.reg
drivers/scsi/aic7xxx/aic79xx_core.c
drivers/scsi/aic7xxx/aic79xx_pci.c
drivers/scsi/aic7xxx/aic79xx_reg.h_shipped
drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped
drivers/scsi/aic7xxx/aic7xxx.reg
drivers/scsi/aic7xxx/aic7xxx_core.c
drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
drivers/scsi/aic7xxx/aicasm/aicasm_gram.y
drivers/scsi/aic7xxx/aicasm/aicasm_scan.l
drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c
drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h
drivers/scsi/device_handler/scsi_dh_rdac.c
drivers/scsi/ipr.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_netlink.c
drivers/scsi/sd.c
drivers/scsi/sun3x_esp.c
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/pcc-acpi/Kconfig [deleted file]
drivers/staging/pcc-acpi/Makefile [deleted file]
drivers/staging/pcc-acpi/TODO [deleted file]
drivers/staging/pcc-acpi/pcc-acpi.c [deleted file]
drivers/video/backlight/Kconfig
drivers/video/backlight/Makefile
drivers/video/backlight/da903x.c [new file with mode: 0644]
drivers/video/backlight/kb3886_bl.c [new file with mode: 0644]
drivers/video/backlight/tosa_bl.c [new file with mode: 0644]
drivers/video/backlight/tosa_lcd.c [new file with mode: 0644]
include/linux/leds.h
include/linux/libata.h
lib/string_helpers.c

index 277451a52695843c9c572d915a6ca680718e7ced..16202c8ac68f06bf2dfcb387aa2ee91c5e9bc4f6 100644 (file)
@@ -378,8 +378,9 @@ T:  git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
 S:     Supported
 
 AMD MICROCODE UPDATE SUPPORT
-P:      Peter Oruba
-M:      peter.oruba@amd.com
+P:      Andreas Herrmann
+M:      andeas.herrmann3@amd.com
+L:      amd64-microcode@amd64.org
 S:      Supported
 
 AMS (Apple Motion Sensor) DRIVER
index f504c801792f0d2c39db222970ad0bdb9e317c3d..5021db2217eddfbecd628aba53ca44f6fb62ade9 100644 (file)
@@ -540,16 +540,15 @@ config ARCH_OMAP
        help
          Support for TI's OMAP platform (OMAP1 and OMAP2).
 
-config ARCH_MSM7X00A
-       bool "Qualcomm MSM7X00A"
+config ARCH_MSM
+       bool "Qualcomm MSM"
        select GENERIC_TIME
        select GENERIC_CLOCKEVENTS
        help
-         Support for Qualcomm MSM7X00A based systems.  This runs on the ARM11
-         apps processor of the MSM7X00A and depends on a shared memory
+         Support for Qualcomm MSM7K based systems.  This runs on the ARM11
+         apps processor of the MSM7K and depends on a shared memory
          interface to the ARM9 modem processor which runs the baseband stack
          and controls some vital subsystems (clock and power control, etc).
-         <http://www.cdmatech.com/products/msm7200_chipset_solution.jsp>
 
 endchoice
 
index 7d5121260fda0370fe85303120544af07689cf79..bd6e28115ebb36284050b290ea1d8800fbec3763 100644 (file)
@@ -141,7 +141,7 @@ endif
  machine-$(CONFIG_ARCH_MX3)       := mx3
  machine-$(CONFIG_ARCH_ORION5X)           := orion5x
     plat-$(CONFIG_PLAT_ORION)     := orion
- machine-$(CONFIG_ARCH_MSM7X00A)   := msm
+ machine-$(CONFIG_ARCH_MSM)       := msm
  machine-$(CONFIG_ARCH_LOKI)       := loki
  machine-$(CONFIG_ARCH_MV78XX0)    := mv78xx0
 
index 9b8748a8d9ddaa9ee9808262e54ae0b67ea1d8b0..f3af0b593eb08ab5149acca798ca53acbb8b2c47 100644 (file)
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc2
-# Mon Nov 28 10:30:09 2005
+# Linux kernel version: 2.6.27
+# Mon Oct 20 10:12:23 2008
 #
 CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_MMU=y
-CONFIG_UID16=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
-# Code maturity level options
+# General setup
 #
 CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
 CONFIG_LOCALVERSION=""
 CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_GROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
 CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+CONFIG_OPROFILE=m
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
 CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
-
-#
-# Block layer
-#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
 
 #
 # IO Schedulers
@@ -79,50 +119,97 @@ CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_CLASSIC_RCU=y
 
 #
 # System Type
 #
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
 # CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
 CONFIG_ARCH_PXA=y
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_MSM7X00A is not set
 
 #
-# Intel PXA2xx Implementations
+# Intel PXA2xx/PXA3xx Implementations
 #
+# CONFIG_ARCH_GUMSTIX is not set
 # CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
 # CONFIG_MACH_MAINSTONE is not set
+# CONFIG_MACH_MP900C is not set
 # CONFIG_ARCH_PXA_IDP is not set
 CONFIG_PXA_SHARPSL=y
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
 CONFIG_MACH_POODLE=y
 CONFIG_MACH_CORGI=y
 CONFIG_MACH_SHEPHERD=y
 CONFIG_MACH_HUSKY=y
+# CONFIG_MACH_AKITA is not set
+# CONFIG_MACH_SPITZ is not set
+# CONFIG_MACH_BORZOI is not set
 CONFIG_MACH_TOSA=y
+# CONFIG_ARCH_VIPER is not set
+# CONFIG_ARCH_PXA_ESERIES is not set
+# CONFIG_TRIZEPS_PXA is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_COLIBRI is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_LITTLETON is not set
+# CONFIG_MACH_TAVOREVB is not set
+# CONFIG_MACH_SAAR is not set
+# CONFIG_MACH_ARMCORE is not set
+# CONFIG_MACH_CM_X300 is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_MIOA701 is not set
+# CONFIG_MACH_PCM027 is not set
+# CONFIG_ARCH_PXA_PALM is not set
+# CONFIG_PXA_EZX is not set
 CONFIG_PXA25x=y
 CONFIG_PXA_SHARP_C7xx=y
 CONFIG_PXA_SSP=y
+# CONFIG_PXA_PWM is not set
+# CONFIG_TOSA_BT is not set
+CONFIG_PXA_HAVE_BOARD_IRQS=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
 
 #
 # Processor Type
@@ -131,25 +218,30 @@ CONFIG_CPU_32=y
 CONFIG_CPU_XSCALE=y
 CONFIG_CPU_32v5=y
 CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_PABRT_NOIFAR=y
 CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
 
 #
 # Processor Features
 #
 CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
 CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_LOCOMO=y
 CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
 CONFIG_SHARP_SCOOP=y
 
 #
 # Bus support
 #
-CONFIG_ISA_DMA_API=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
 CONFIG_PCCARD=y
 # CONFIG_PCMCIA_DEBUG is not set
 CONFIG_PCMCIA=y
@@ -164,16 +256,32 @@ CONFIG_PCMCIA_PXA2XX=y
 #
 # Kernel Features
 #
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_PREEMPT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_DISCONTIGMEM_MANUAL is not set
 # CONFIG_SPARSEMEM_MANUAL is not set
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
 CONFIG_ALIGNMENT_TRAP=y
 
 #
@@ -183,6 +291,13 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2   debug"
 # CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
 
 #
 # Floating point emulation
@@ -199,6 +314,7 @@ CONFIG_FPE_NWFPE=y
 # Userspace binary formats
 #
 CONFIG_BINFMT_ELF=y
+CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_AOUT=m
 CONFIG_BINFMT_MISC=m
 # CONFIG_ARTHUR is not set
@@ -207,12 +323,12 @@ CONFIG_BINFMT_MISC=m
 # Power management options
 #
 CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_APM_EMULATION=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_NET=y
 
 #
@@ -223,6 +339,10 @@ CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
@@ -236,140 +356,131 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
 CONFIG_IPV6=m
 # CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
 
 #
 # Core Netfilter Configuration
 #
-# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_IP_VS is not set
 
 #
 # IP: Netfilter Configuration
 #
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
+# CONFIG_NF_DEFRAG_IPV4 is not set
 CONFIG_IP_NF_QUEUE=m
 CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+# CONFIG_IP_NF_MATCH_AH is not set
 CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
 CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-# CONFIG_IP_NF_MATCH_DCCP is not set
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-# CONFIG_IP_NF_MATCH_STRING is not set
 CONFIG_IP_NF_FILTER=m
 # CONFIG_IP_NF_TARGET_REJECT is not set
 CONFIG_IP_NF_TARGET_LOG=m
 CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_TARGET_MASQUERADE is not set
-# CONFIG_IP_NF_TARGET_REDIRECT is not set
-# CONFIG_IP_NF_TARGET_NETMAP is not set
-# CONFIG_IP_NF_TARGET_SAME is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
 CONFIG_IP_NF_MANGLE=m
-# CONFIG_IP_NF_TARGET_TOS is not set
 # CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-# CONFIG_IP_NF_TARGET_MARK is not set
-# CONFIG_IP_NF_TARGET_CLASSIFY is not set
 # CONFIG_IP_NF_TARGET_TTL is not set
 CONFIG_IP_NF_RAW=m
-# CONFIG_IP_NF_TARGET_NOTRACK is not set
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
 
 #
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
+# IPv6: Netfilter Configuration
 #
 CONFIG_IP6_NF_QUEUE=m
 CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
+# CONFIG_IP6_NF_MATCH_AH is not set
+CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
+# CONFIG_IP6_NF_MATCH_MH is not set
+CONFIG_IP6_NF_MATCH_RT=m
 # CONFIG_IP6_NF_TARGET_LOG is not set
+CONFIG_IP6_NF_FILTER=m
 # CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
 CONFIG_IP6_NF_MANGLE=m
-# CONFIG_IP6_NF_TARGET_MARK is not set
 # CONFIG_IP6_NF_TARGET_HL is not set
 CONFIG_IP6_NF_RAW=m
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
 # CONFIG_ATM is not set
 # CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
 # CONFIG_VLAN_8021Q is not set
 # CONFIG_DECNET is not set
 # CONFIG_LLC2 is not set
@@ -377,21 +488,16 @@ CONFIG_IP6_NF_RAW=m
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
 # CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
 CONFIG_IRDA=m
 
 #
@@ -421,27 +527,17 @@ CONFIG_IRCOMM=m
 #
 # Dongle support
 #
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
 
 #
 # FIR device drivers
 #
 # CONFIG_USB_IRDA is not set
 # CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VIA_FIR is not set
 CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
 CONFIG_BT=m
 CONFIG_BT_L2CAP=m
 CONFIG_BT_SCO=m
@@ -457,9 +553,12 @@ CONFIG_BT_HIDP=m
 #
 CONFIG_BT_HCIUSB=m
 # CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
@@ -468,11 +567,20 @@ CONFIG_BT_HCIBT3C=m
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
 CONFIG_IEEE80211=m
 # CONFIG_IEEE80211_DEBUG is not set
 CONFIG_IEEE80211_CRYPT_WEP=m
 # CONFIG_IEEE80211_CRYPT_CCMP is not set
 # CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
 
 #
 # Device Drivers
@@ -481,19 +589,16 @@ CONFIG_IEEE80211_CRYPT_WEP=m
 #
 # Generic Driver Options
 #
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
 # CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
 CONFIG_MTD=y
 # CONFIG_MTD_DEBUG is not set
 # CONFIG_MTD_CONCAT is not set
@@ -501,16 +606,20 @@ CONFIG_MTD_PARTITIONS=y
 # CONFIG_MTD_REDBOOT_PARTS is not set
 CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
 
 #
 # User Modules And Translation Layers
 #
 CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
 CONFIG_MTD_BLOCK=y
 # CONFIG_FTL is not set
 # CONFIG_NFTL is not set
 # CONFIG_INFTL is not set
 # CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
 
 #
 # RAM/ROM/Flash chip drivers
@@ -535,16 +644,18 @@ CONFIG_MTD_ROM=y
 # Mapping drivers for chip access
 #
 CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
 CONFIG_MTD_SHARP_SL=y
 # CONFIG_MTD_PLATRAM is not set
 
 #
 # Self-contained MTD device drivers
 #
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
 # CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
 # CONFIG_MTD_BLOCK2MTD is not set
 
 #
@@ -553,78 +664,66 @@ CONFIG_MTD_SHARP_SL=y
 # CONFIG_MTD_DOC2000 is not set
 # CONFIG_MTD_DOC2001 is not set
 # CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
 # CONFIG_MTD_NAND_H1900 is not set
 CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 CONFIG_MTD_NAND_SHARPSL=y
 # CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
 # CONFIG_MTD_ONENAND is not set
 
 #
-# Parallel port support
+# UBI - Unsorted block images
 #
+# CONFIG_MTD_UBI is not set
 # CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_UB is not set
 # CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_HAVE_IDE=y
 CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
 
 #
-# Please see Documentation/ide.txt for help/info on IDE drives
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
 #
 # CONFIG_BLK_DEV_IDE_SATA is not set
 CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
 CONFIG_BLK_DEV_IDECS=y
 # CONFIG_BLK_DEV_IDECD is not set
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
 # CONFIG_BLK_DEV_IDESCSI is not set
 # CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
 
 #
 # IDE chipset support/bugfixes
 #
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_PLATFORM is not set
 # CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
 
 #
 # SCSI device support
 #
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -644,121 +743,76 @@ CONFIG_CHR_DEV_SG=m
 CONFIG_SCSI_MULTI_LUN=y
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
 
 #
-# SCSI Transport Attributes
+# SCSI Transports
 #
 # CONFIG_SCSI_SPI_ATTRS is not set
 # CONFIG_SCSI_FC_ATTRS is not set
 # CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
 # CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
 # CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
 # CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
-
-#
-# PHY device support
-#
+# CONFIG_VETH is not set
 # CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=m
+# CONFIG_AX88796 is not set
 # CONFIG_SMC91X is not set
 # CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_SMC911X is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
 
 #
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
+# Wireless LAN
 #
-# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_IWLWIFI_LEDS is not set
 
 #
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
+# USB Network Adapters
 #
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SMSC95XX is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
 CONFIG_NET_PCMCIA=y
 # CONFIG_PCMCIA_3C589 is not set
 # CONFIG_PCMCIA_3C574 is not set
@@ -768,10 +822,6 @@ CONFIG_PCMCIA_PCNET=m
 # CONFIG_PCMCIA_SMC91C92 is not set
 # CONFIG_PCMCIA_XIRC2PS is not set
 # CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
 # CONFIG_WAN is not set
 CONFIG_PPP=m
 # CONFIG_PPP_MULTILINK is not set
@@ -782,30 +832,29 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_BSDCOMP=m
 # CONFIG_PPP_MPPE is not set
 # CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
 # CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
+CONFIG_SLHC=m
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
 # CONFIG_ISDN is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_POLLDEV is not set
 
 #
 # Userland interfaces
 #
 # CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_APMPOWER is not set
 
 #
 # Input Device Drivers
@@ -814,19 +863,39 @@ CONFIG_INPUT_KEYBOARD=y
 # CONFIG_KEYBOARD_ATKBD is not set
 # CONFIG_KEYBOARD_SUNKBD is not set
 # CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LOCOMO is not set
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
 CONFIG_KEYBOARD_CORGI=y
 CONFIG_KEYBOARD_SPITZ=y
+CONFIG_KEYBOARD_TOSA=y
+# CONFIG_KEYBOARD_TOSA_USE_EXT_KEYCODES is not set
+# CONFIG_KEYBOARD_GPIO is not set
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
 CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_CORGI is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
 # CONFIG_TOUCHSCREEN_GUNZE is not set
 # CONFIG_TOUCHSCREEN_ELO is not set
 # CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
 # CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
 CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
 CONFIG_INPUT_UINPUT=m
 
 #
@@ -839,8 +908,11 @@ CONFIG_INPUT_UINPUT=m
 # Character devices
 #
 CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 
 #
@@ -849,6 +921,7 @@ CONFIG_HW_CONSOLE=y
 CONFIG_SERIAL_8250=m
 CONFIG_SERIAL_8250_CS=m
 CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 # CONFIG_SERIAL_8250_EXTENDED is not set
 
 #
@@ -860,97 +933,130 @@ CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
 # CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
 # CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 
-#
-# Ftape, the floppy tape device driver
-#
-
 #
 # PCMCIA character devices
 #
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4040 is not set
+# CONFIG_IPWIRELESS is not set
 # CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
 # CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
 CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
 # CONFIG_I2C_CHARDEV is not set
+CONFIG_I2C_HELPER_AUTO=y
 
 #
-# I2C Algorithms
+# I2C Hardware Bus support
 #
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
 
 #
-# I2C Hardware Bus support
+# I2C system bus drivers (mostly embedded / system-on-chip)
 #
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PXA=y
 # CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
 # CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
 # CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
 
 #
 # Miscellaneous I2C Chip support
 #
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
 # CONFIG_SENSORS_PCA9539 is not set
 # CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_TPS65010 is not set
 # CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
+# CONFIG_SENSORS_TSL2550 is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
 
 #
-# Hardware Monitoring support
+# SPI Master Controller Drivers
 #
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
 # CONFIG_SENSORS_ADM1021 is not set
 # CONFIG_SENSORS_ADM1025 is not set
 # CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
 # CONFIG_SENSORS_GL518SM is not set
 # CONFIG_SENSORS_GL520SM is not set
 # CONFIG_SENSORS_IT87 is not set
 # CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
 # CONFIG_SENSORS_LM75 is not set
 # CONFIG_SENSORS_LM77 is not set
 # CONFIG_SENSORS_LM78 is not set
@@ -960,70 +1066,193 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_LM87 is not set
 # CONFIG_SENSORS_LM90 is not set
 # CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+CONFIG_SENSORS_MAX1111=y
 # CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
 # CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
 # CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
 # CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
 # CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
 # CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
 # CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
 # CONFIG_SENSORS_W83627HF is not set
 # CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
 
 #
-# Misc devices
+# Sonics Silicon Backplane
 #
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
 
 #
-# Multimedia Capabilities Port drivers
+# Multifunction device drivers
 #
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
 
 #
 # Multimedia devices
 #
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
 
 #
-# Video Adapters
+# Multimedia core support
 #
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+# CONFIG_MEDIA_ATTACH is not set
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
 # CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
 # CONFIG_VIDEO_SAA5246A is not set
 # CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
+# CONFIG_SOC_CAMERA is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VIDEO_CLASS is not set
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SONIXB is not set
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+# CONFIG_USB_GSPCA_ZC3XX is not set
+# CONFIG_VIDEO_PVRUSB2 is not set
 # CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
 # CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_USB_SI470X is not set
+# CONFIG_USB_MR800 is not set
+# CONFIG_DAB is not set
 
 #
 # Graphics support
 #
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
 CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
 # CONFIG_FB_MODE_HELPERS is not set
 # CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_PXA is not set
+# CONFIG_FB_MBX is not set
 CONFIG_FB_W100=y
 # CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_CORGI=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LCD_PLATFORM is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
 
 #
 # Console display driver support
@@ -1031,6 +1260,7 @@ CONFIG_FB_W100=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
@@ -1043,93 +1273,95 @@ CONFIG_FONT_8x16=y
 # CONFIG_FONT_SUN8x16 is not set
 # CONFIG_FONT_SUN12x22 is not set
 # CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
 # CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Sound
-#
 CONFIG_SOUND=y
+CONFIG_SOUND_OSS_CORE=y
+# CONFIG_SND is not set
+CONFIG_SOUND_PRIME=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
 
 #
-# Advanced Linux Sound Architecture
+# USB Input Devices
 #
-# CONFIG_SND is not set
+CONFIG_USB_HID=m
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
 
 #
-# Open Sound System
+# USB HID Boot Protocol drivers
 #
-CONFIG_SOUND_PRIME=y
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=y
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_TVMIXER is not set
-# CONFIG_SOUND_AD1980 is not set
-
-#
-# USB support
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+
 #
+# Special HID drivers
+#
+CONFIG_HID_COMPAT=y
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_BRIGHT=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DELL=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_LOGITECH=m
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_PANTHERLORD=m
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_THRUSTMASTER_FF=m
+CONFIG_ZEROPLUS_FF=m
+CONFIG_USB_SUPPORT=y
 CONFIG_USB_ARCH_HAS_HCD=y
 # CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
 
 #
 # Miscellaneous USB options
 #
 CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
+CONFIG_USB_DEVICE_CLASS=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_SUSPEND is not set
 # CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
 
 #
 # USB Host Controller Drivers
 #
+# CONFIG_USB_C67X00_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
 
 #
 # USB Device Class drivers
 #
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
 CONFIG_USB_ACM=m
 CONFIG_USB_PRINTER=m
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
 
 #
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1148,33 +1380,11 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_SDDR09 is not set
 # CONFIG_USB_STORAGE_SDDR55 is not set
 # CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
@@ -1182,57 +1392,23 @@ CONFIG_USB_ATI_REMOTE=m
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
 
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
 #
 # USB port drivers
 #
-
-#
-# USB Serial Converter support
-#
 CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
 CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
 # CONFIG_USB_SERIAL_WHITEHEAT is not set
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 # CONFIG_USB_SERIAL_CP2101 is not set
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 CONFIG_USB_SERIAL_EMPEG=m
 CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -1240,6 +1416,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
 CONFIG_USB_SERIAL_GARMIN=m
 CONFIG_USB_SERIAL_IPW=m
+# CONFIG_USB_SERIAL_IUU is not set
 CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 CONFIG_USB_SERIAL_KEYSPAN=m
 # CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
@@ -1257,50 +1434,68 @@ CONFIG_USB_SERIAL_KEYSPAN=m
 CONFIG_USB_SERIAL_KLSI=m
 CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_MOTOROLA is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
 # CONFIG_USB_SERIAL_HP4X is not set
 CONFIG_USB_SERIAL_SAFE=m
 # CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
 CONFIG_USB_SERIAL_TI=m
 CONFIG_USB_SERIAL_CYBERJACK=m
 CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
 CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
+# CONFIG_USB_SERIAL_DEBUG is not set
 
 #
 # USB Miscellaneous drivers
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
 CONFIG_USB_RIO500=m
 CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
 CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
 CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_PHIDGET is not set
 CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
 # CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
 CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
 # CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
 CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
 # CONFIG_USB_GADGET_LH7A40X is not set
 # CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_PXA25X=y
+CONFIG_USB_PXA25X=y
+# CONFIG_USB_PXA25X_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
 # CONFIG_USB_GADGET_DUMMY_HCD is not set
 # CONFIG_USB_GADGET_DUALSPEED is not set
 CONFIG_USB_ZERO=m
@@ -1310,15 +1505,42 @@ CONFIG_USB_GADGETFS=m
 CONFIG_USB_FILE_STORAGE=m
 # CONFIG_USB_FILE_STORAGE_TEST is not set
 CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
 
 #
-# MMC/SD Card support
+# MMC/SD/SDIO Card Drivers
 #
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
 CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_SPI is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+
+#
+# Voltage and Current regulators
+#
+# CONFIG_REGULATOR is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_UIO is not set
 
 #
 # File systems
@@ -1327,16 +1549,17 @@ CONFIG_EXT2_FS=y
 # CONFIG_EXT2_FS_XATTR is not set
 # CONFIG_EXT2_FS_XIP is not set
 # CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
+# CONFIG_EXT4_FS is not set
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
 # CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
 # CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 # CONFIG_FUSE_FS is not set
@@ -1361,11 +1584,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 # Pseudo filesystems
 #
 CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
 # CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
 
 #
 # Miscellaneous filesystems
@@ -1377,39 +1602,42 @@ CONFIG_RAMFS=y
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
 CONFIG_JFFS2_FS=y
 CONFIG_JFFS2_FS_DEBUG=0
 CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
 CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
 CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
 CONFIG_JFFS2_RTIME=y
 CONFIG_JFFS2_RUBIN=y
 # CONFIG_JFFS2_CMODE_NONE is not set
 CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
 CONFIG_CRAMFS=m
 # CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
+CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 # CONFIG_NFS_V3_ACL is not set
 CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_REGISTER_V4 is not set
 CONFIG_RPCSEC_GSS_KRB5=m
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 CONFIG_SMB_FS=m
@@ -1419,7 +1647,6 @@ CONFIG_SMB_NLS_REMOTE="cp437"
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
 
 #
 # Partition Types
@@ -1439,11 +1666,9 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_SGI_PARTITION is not set
 # CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
 # CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
+# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
 CONFIG_NLS_DEFAULT="cp437"
 CONFIG_NLS_CODEPAGE_437=y
@@ -1484,35 +1709,71 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_KOI8_R is not set
 # CONFIG_NLS_KOI8_U is not set
 CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
+# CONFIG_DLM is not set
 
 #
 # Kernel hacking
 #
 # CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
 CONFIG_MAGIC_SYSRQ=y
-CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
 CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
 # CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
 # CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
 CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_HAVE_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+# CONFIG_FTRACE is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
 CONFIG_DEBUG_LL=y
 # CONFIG_DEBUG_ICEDCC is not set
 
@@ -1521,46 +1782,113 @@ CONFIG_DEBUG_LL=y
 #
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
 
 #
-# Cryptographic options
+# Crypto core or helper
 #
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_GF128MUL is not set
 CONFIG_CRYPTO_NULL=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
 CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA256=m
 CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
 # CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
 CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+# CONFIG_CRYPTO_CAMELLIA is not set
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
 CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_LZO is not set
 
 #
-# Hardware crypto devices
+# Random Number Generation
 #
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
 
 #
 # Library routines
 #
+CONFIG_BITREVERSE=y
 CONFIG_CRC_CCITT=y
 # CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
 CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
index ae4c5e62086ac454b7e4e140ec66f0acc74dcfbf..3b4ecf2a90ddd0328e08a44ce018243b1ac665f4 100644 (file)
@@ -133,7 +133,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_MSM7X00A=y
+CONFIG_ARCH_MSM=y
 
 #
 # Boot options
index 7d59fb1f1ceaa523bfc3433b6d1498d9d67b0e94..4df5b4db2aa0663f698c4cae844ecf3c1940ca3e 100644 (file)
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc2
-# Mon Nov 28 10:26:52 2005
+# Linux kernel version: 2.6.27
+# Mon Oct 20 10:25:37 2008
 #
 CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_MMU=y
-CONFIG_UID16=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
-# Code maturity level options
+# General setup
 #
 CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
 CONFIG_LOCALVERSION=""
 CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_POSIX_MQUEUE is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_GROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
 CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+CONFIG_OPROFILE=m
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
 CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
-
-#
-# Block layer
-#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
 
 #
 # IO Schedulers
@@ -79,49 +119,95 @@ CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_CLASSIC_RCU=y
 
 #
 # System Type
 #
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
 # CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
 CONFIG_ARCH_PXA=y
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_MSM7X00A is not set
 
 #
-# Intel PXA2xx Implementations
+# Intel PXA2xx/PXA3xx Implementations
 #
+# CONFIG_ARCH_GUMSTIX is not set
 # CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
 # CONFIG_MACH_MAINSTONE is not set
+# CONFIG_MACH_MP900C is not set
 # CONFIG_ARCH_PXA_IDP is not set
 CONFIG_PXA_SHARPSL=y
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
+# CONFIG_MACH_POODLE is not set
+# CONFIG_MACH_CORGI is not set
+# CONFIG_MACH_SHEPHERD is not set
+# CONFIG_MACH_HUSKY is not set
 CONFIG_MACH_AKITA=y
 CONFIG_MACH_SPITZ=y
 CONFIG_MACH_BORZOI=y
+# CONFIG_MACH_TOSA is not set
+# CONFIG_ARCH_VIPER is not set
+# CONFIG_ARCH_PXA_ESERIES is not set
+# CONFIG_TRIZEPS_PXA is not set
+# CONFIG_MACH_EM_X270 is not set
+# CONFIG_MACH_COLIBRI is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_LITTLETON is not set
+# CONFIG_MACH_TAVOREVB is not set
+# CONFIG_MACH_SAAR is not set
+# CONFIG_MACH_ARMCORE is not set
+# CONFIG_MACH_CM_X300 is not set
+# CONFIG_MACH_MAGICIAN is not set
+# CONFIG_MACH_MIOA701 is not set
+# CONFIG_MACH_PCM027 is not set
+# CONFIG_ARCH_PXA_PALM is not set
+# CONFIG_PXA_EZX is not set
 CONFIG_PXA27x=y
-CONFIG_IWMMXT=y
 CONFIG_PXA_SHARP_Cxx00=y
 CONFIG_PXA_SSP=y
+# CONFIG_PXA_PWM is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
 
 #
 # Processor Type
@@ -130,25 +216,29 @@ CONFIG_CPU_32=y
 CONFIG_CPU_XSCALE=y
 CONFIG_CPU_32v5=y
 CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_PABRT_NOIFAR=y
 CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
 
 #
 # Processor Features
 #
 CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
 CONFIG_XSCALE_PMU=y
 CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
 CONFIG_SHARP_SCOOP=y
 
 #
 # Bus support
 #
-CONFIG_ISA_DMA_API=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
 CONFIG_PCCARD=y
 # CONFIG_PCMCIA_DEBUG is not set
 CONFIG_PCMCIA=y
@@ -163,16 +253,32 @@ CONFIG_PCMCIA_PXA2XX=y
 #
 # Kernel Features
 #
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_PREEMPT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_DISCONTIGMEM_MANUAL is not set
 # CONFIG_SPARSEMEM_MANUAL is not set
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
 CONFIG_ALIGNMENT_TRAP=y
 
 #
@@ -182,6 +288,13 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2   debug"
 # CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
 
 #
 # Floating point emulation
@@ -198,6 +311,7 @@ CONFIG_FPE_NWFPE=y
 # Userspace binary formats
 #
 CONFIG_BINFMT_ELF=y
+CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_AOUT=m
 CONFIG_BINFMT_MISC=m
 # CONFIG_ARTHUR is not set
@@ -206,12 +320,12 @@ CONFIG_BINFMT_MISC=m
 # Power management options
 #
 CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_APM_EMULATION=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_NET=y
 
 #
@@ -222,6 +336,10 @@ CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
@@ -235,140 +353,131 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
 CONFIG_INET_DIAG=y
 CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
 CONFIG_IPV6=m
 # CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
 
 #
 # Core Netfilter Configuration
 #
-# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_IP_VS is not set
 
 #
 # IP: Netfilter Configuration
 #
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
+# CONFIG_NF_DEFRAG_IPV4 is not set
 CONFIG_IP_NF_QUEUE=m
 CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_LIMIT=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MAC=m
-CONFIG_IP_NF_MATCH_PKTTYPE=m
-CONFIG_IP_NF_MATCH_MARK=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+# CONFIG_IP_NF_MATCH_AH is not set
 CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_LENGTH=m
 CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_TCPMSS=m
-CONFIG_IP_NF_MATCH_HELPER=m
-CONFIG_IP_NF_MATCH_STATE=m
-CONFIG_IP_NF_MATCH_CONNTRACK=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_REALM=m
-CONFIG_IP_NF_MATCH_SCTP=m
-# CONFIG_IP_NF_MATCH_DCCP is not set
-CONFIG_IP_NF_MATCH_COMMENT=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-# CONFIG_IP_NF_MATCH_STRING is not set
 CONFIG_IP_NF_FILTER=m
 # CONFIG_IP_NF_TARGET_REJECT is not set
 CONFIG_IP_NF_TARGET_LOG=m
 CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-# CONFIG_IP_NF_TARGET_NFQUEUE is not set
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-# CONFIG_IP_NF_TARGET_MASQUERADE is not set
-# CONFIG_IP_NF_TARGET_REDIRECT is not set
-# CONFIG_IP_NF_TARGET_NETMAP is not set
-# CONFIG_IP_NF_TARGET_SAME is not set
-# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
 CONFIG_IP_NF_MANGLE=m
-# CONFIG_IP_NF_TARGET_TOS is not set
 # CONFIG_IP_NF_TARGET_ECN is not set
-# CONFIG_IP_NF_TARGET_DSCP is not set
-# CONFIG_IP_NF_TARGET_MARK is not set
-# CONFIG_IP_NF_TARGET_CLASSIFY is not set
 # CONFIG_IP_NF_TARGET_TTL is not set
 CONFIG_IP_NF_RAW=m
-# CONFIG_IP_NF_TARGET_NOTRACK is not set
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
 
 #
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
+# IPv6: Netfilter Configuration
 #
 CONFIG_IP6_NF_QUEUE=m
 CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_LIMIT=m
-CONFIG_IP6_NF_MATCH_MAC=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
+# CONFIG_IP6_NF_MATCH_AH is not set
+CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
 CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_MARK=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_LENGTH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
+# CONFIG_IP6_NF_MATCH_MH is not set
+CONFIG_IP6_NF_MATCH_RT=m
 # CONFIG_IP6_NF_TARGET_LOG is not set
+CONFIG_IP6_NF_FILTER=m
 # CONFIG_IP6_NF_TARGET_REJECT is not set
-# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
 CONFIG_IP6_NF_MANGLE=m
-# CONFIG_IP6_NF_TARGET_MARK is not set
 # CONFIG_IP6_NF_TARGET_HL is not set
 CONFIG_IP6_NF_RAW=m
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
 # CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
 # CONFIG_ATM is not set
 # CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
 # CONFIG_VLAN_8021Q is not set
 # CONFIG_DECNET is not set
 # CONFIG_LLC2 is not set
@@ -376,21 +485,16 @@ CONFIG_IP6_NF_RAW=m
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
 # CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
 CONFIG_IRDA=m
 
 #
@@ -420,27 +524,17 @@ CONFIG_IRCOMM=m
 #
 # Dongle support
 #
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
+# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
 
 #
 # FIR device drivers
 #
 # CONFIG_USB_IRDA is not set
 # CONFIG_SIGMATEL_FIR is not set
-# CONFIG_NSC_FIR is not set
-# CONFIG_WINBOND_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-# CONFIG_ALI_FIR is not set
-# CONFIG_VIA_FIR is not set
 CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
 CONFIG_BT=m
 CONFIG_BT_L2CAP=m
 CONFIG_BT_SCO=m
@@ -456,9 +550,12 @@ CONFIG_BT_HIDP=m
 #
 CONFIG_BT_HCIUSB=m
 # CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
@@ -467,11 +564,20 @@ CONFIG_BT_HCIBT3C=m
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
 CONFIG_IEEE80211=m
 # CONFIG_IEEE80211_DEBUG is not set
 CONFIG_IEEE80211_CRYPT_WEP=m
 # CONFIG_IEEE80211_CRYPT_CCMP is not set
 # CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
 
 #
 # Device Drivers
@@ -480,19 +586,16 @@ CONFIG_IEEE80211_CRYPT_WEP=m
 #
 # Generic Driver Options
 #
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
 # CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
 CONFIG_MTD=y
 # CONFIG_MTD_DEBUG is not set
 # CONFIG_MTD_CONCAT is not set
@@ -500,16 +603,20 @@ CONFIG_MTD_PARTITIONS=y
 # CONFIG_MTD_REDBOOT_PARTS is not set
 CONFIG_MTD_CMDLINE_PARTS=y
 # CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
 
 #
 # User Modules And Translation Layers
 #
 CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
 CONFIG_MTD_BLOCK=y
 # CONFIG_FTL is not set
 # CONFIG_NFTL is not set
 # CONFIG_INFTL is not set
 # CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
 
 #
 # RAM/ROM/Flash chip drivers
@@ -534,16 +641,18 @@ CONFIG_MTD_ROM=y
 # Mapping drivers for chip access
 #
 CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
 CONFIG_MTD_SHARP_SL=y
 # CONFIG_MTD_PLATRAM is not set
 
 #
 # Self-contained MTD device drivers
 #
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
 # CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
 # CONFIG_MTD_BLOCK2MTD is not set
 
 #
@@ -552,78 +661,66 @@ CONFIG_MTD_SHARP_SL=y
 # CONFIG_MTD_DOC2000 is not set
 # CONFIG_MTD_DOC2001 is not set
 # CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
 # CONFIG_MTD_NAND_H1900 is not set
 CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 CONFIG_MTD_NAND_SHARPSL=y
 # CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
 # CONFIG_MTD_ONENAND is not set
 
 #
-# Parallel port support
+# UBI - Unsorted block images
 #
+# CONFIG_MTD_UBI is not set
 # CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_UB is not set
 # CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_HAVE_IDE=y
 CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
 
 #
-# Please see Documentation/ide.txt for help/info on IDE drives
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
 #
 # CONFIG_BLK_DEV_IDE_SATA is not set
 CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
 CONFIG_BLK_DEV_IDECS=y
 # CONFIG_BLK_DEV_IDECD is not set
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
 # CONFIG_BLK_DEV_IDESCSI is not set
 # CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
 
 #
 # IDE chipset support/bugfixes
 #
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_PLATFORM is not set
 # CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
 
 #
 # SCSI device support
 #
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -643,121 +740,76 @@ CONFIG_CHR_DEV_SG=m
 CONFIG_SCSI_MULTI_LUN=y
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
 
 #
-# SCSI Transport Attributes
+# SCSI Transports
 #
 # CONFIG_SCSI_SPI_ATTRS is not set
 # CONFIG_SCSI_FC_ATTRS is not set
 # CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
 # CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
 # CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
 # CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
 CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
-
-#
-# PHY device support
-#
+# CONFIG_VETH is not set
 # CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=m
+# CONFIG_AX88796 is not set
 # CONFIG_SMC91X is not set
 # CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_SMC911X is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
 
 #
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
+# Wireless LAN
 #
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_IWLWIFI_LEDS is not set
 
 #
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
+# USB Network Adapters
 #
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SMSC95XX is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
 CONFIG_NET_PCMCIA=y
 # CONFIG_PCMCIA_3C589 is not set
 # CONFIG_PCMCIA_3C574 is not set
@@ -767,10 +819,6 @@ CONFIG_PCMCIA_PCNET=m
 # CONFIG_PCMCIA_SMC91C92 is not set
 # CONFIG_PCMCIA_XIRC2PS is not set
 # CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
 # CONFIG_WAN is not set
 CONFIG_PPP=m
 # CONFIG_PPP_MULTILINK is not set
@@ -781,31 +829,29 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_BSDCOMP=m
 # CONFIG_PPP_MPPE is not set
 # CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
 # CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
+CONFIG_SLHC=m
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
 # CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
 # CONFIG_ISDN is not set
 
 #
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_POLLDEV is not set
 
 #
 # Userland interfaces
 #
 # CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
+# CONFIG_INPUT_APMPOWER is not set
 
 #
 # Input Device Drivers
@@ -816,17 +862,35 @@ CONFIG_INPUT_KEYBOARD=y
 # CONFIG_KEYBOARD_LKKBD is not set
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_CORGI is not set
 CONFIG_KEYBOARD_SPITZ=y
+# CONFIG_KEYBOARD_PXA27x is not set
+# CONFIG_KEYBOARD_GPIO is not set
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
 CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_CORGI is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
 # CONFIG_TOUCHSCREEN_GUNZE is not set
 # CONFIG_TOUCHSCREEN_ELO is not set
 # CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
 # CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
 CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
 CONFIG_INPUT_UINPUT=m
 
 #
@@ -839,8 +903,11 @@ CONFIG_INPUT_UINPUT=m
 # Character devices
 #
 CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 
 #
@@ -849,6 +916,7 @@ CONFIG_HW_CONSOLE=y
 CONFIG_SERIAL_8250=m
 CONFIG_SERIAL_8250_CS=m
 CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 # CONFIG_SERIAL_8250_EXTENDED is not set
 
 #
@@ -860,101 +928,253 @@ CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 # CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
 # CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
 # CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 
-#
-# Ftape, the floppy tape device driver
-#
-
 #
 # PCMCIA character devices
 #
 # CONFIG_SYNCLINK_CS is not set
 # CONFIG_CARDMAN_4000 is not set
 # CONFIG_CARDMAN_4040 is not set
+# CONFIG_IPWIRELESS is not set
 # CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
 # CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
 CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
 # CONFIG_I2C_CHARDEV is not set
+CONFIG_I2C_HELPER_AUTO=y
 
 #
-# I2C Algorithms
+# I2C Hardware Bus support
 #
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
 
 #
-# I2C Hardware Bus support
+# I2C system bus drivers (mostly embedded / system-on-chip)
 #
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PXA=y
 # CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
 # CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
 # CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
 
 #
-# Hardware Monitoring support
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
 #
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+CONFIG_SENSORS_MAX1111=y
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
 
 #
-# Misc devices
+# Sonics Silicon Backplane
 #
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
 
 #
-# Multimedia Capabilities Port drivers
+# Multifunction device drivers
 #
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
 
 #
 # Multimedia devices
 #
+
+#
+# Multimedia core support
+#
 # CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_VIDEO_MEDIA is not set
 
 #
-# Digital Video Broadcasting Devices
+# Multimedia drivers
 #
-# CONFIG_DVB is not set
+# CONFIG_DAB is not set
 
 #
 # Graphics support
 #
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
 CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
 # CONFIG_FB_MODE_HELPERS is not set
 # CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
 # CONFIG_FB_S1D13XXX is not set
 CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_SMARTPANEL is not set
 # CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
 # CONFIG_FB_W100 is not set
 # CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_CORGI=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LCD_PLATFORM is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
 
 #
 # Console display driver support
@@ -962,6 +1182,7 @@ CONFIG_FB_PXA=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
@@ -974,55 +1195,96 @@ CONFIG_FONT_8x16=y
 # CONFIG_FONT_SUN8x16 is not set
 # CONFIG_FONT_SUN12x22 is not set
 # CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
 
 #
-# Logo configuration
+# USB Input Devices
 #
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
+CONFIG_USB_HID=m
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
 
 #
-# Sound
+# USB HID Boot Protocol drivers
 #
-# CONFIG_SOUND is not set
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
 
 #
-# USB support
-#
+# Special HID drivers
+#
+CONFIG_HID_COMPAT=y
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_BRIGHT=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DELL=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_LOGITECH=m
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_PANTHERLORD=m
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_THRUSTMASTER_FF=m
+CONFIG_ZEROPLUS_FF=m
+CONFIG_USB_SUPPORT=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
 
 #
 # Miscellaneous USB options
 #
 CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
+CONFIG_USB_DEVICE_CLASS=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
 # CONFIG_USB_SUSPEND is not set
 # CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
 
 #
 # USB Host Controller Drivers
 #
+# CONFIG_USB_C67X00_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SL811_CS=m
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
 
 #
 # USB Device Class drivers
 #
 CONFIG_USB_ACM=m
 CONFIG_USB_PRINTER=m
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
 
 #
 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1041,33 +1303,11 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_SDDR09 is not set
 # CONFIG_USB_STORAGE_SDDR55 is not set
 # CONFIG_USB_STORAGE_JUMPSHOT is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
 
 #
 # USB Imaging devices
@@ -1075,52 +1315,23 @@ CONFIG_USB_ATI_REMOTE=m
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
 
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
 #
 # USB port drivers
 #
-
-#
-# USB Serial Converter support
-#
 CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
 CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
 CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
 # CONFIG_USB_SERIAL_WHITEHEAT is not set
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
 # CONFIG_USB_SERIAL_CP2101 is not set
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 CONFIG_USB_SERIAL_EMPEG=m
 CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -1128,6 +1339,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
 CONFIG_USB_SERIAL_GARMIN=m
 CONFIG_USB_SERIAL_IPW=m
+# CONFIG_USB_SERIAL_IUU is not set
 CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 CONFIG_USB_SERIAL_KEYSPAN=m
 # CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
@@ -1145,49 +1357,66 @@ CONFIG_USB_SERIAL_KEYSPAN=m
 CONFIG_USB_SERIAL_KLSI=m
 CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_MOTOROLA is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
 # CONFIG_USB_SERIAL_HP4X is not set
 CONFIG_USB_SERIAL_SAFE=m
 # CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
 CONFIG_USB_SERIAL_TI=m
 CONFIG_USB_SERIAL_CYBERJACK=m
 CONFIG_USB_SERIAL_XIRCOM=m
 # CONFIG_USB_SERIAL_OPTION is not set
 CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
+# CONFIG_USB_SERIAL_DEBUG is not set
 
 #
 # USB Miscellaneous drivers
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
 CONFIG_USB_RIO500=m
 CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
 CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
 CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_PHIDGET is not set
 CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
 # CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
 CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
 # CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
 CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
 # CONFIG_USB_GADGET_LH7A40X is not set
 # CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
 CONFIG_USB_GADGET_DUMMY_HCD=y
 CONFIG_USB_DUMMY_HCD=m
 CONFIG_USB_GADGET_DUALSPEED=y
@@ -1198,15 +1427,42 @@ CONFIG_USB_GADGETFS=m
 CONFIG_USB_FILE_STORAGE=m
 # CONFIG_USB_FILE_STORAGE_TEST is not set
 CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
 
 #
-# MMC/SD Card support
+# MMC/SD/SDIO Card Drivers
 #
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
 CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_SPI is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+
+#
+# Voltage and Current regulators
+#
+# CONFIG_REGULATOR is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_UIO is not set
 
 #
 # File systems
@@ -1218,18 +1474,19 @@ CONFIG_EXT2_FS_SECURITY=y
 # CONFIG_EXT2_FS_XIP is not set
 CONFIG_EXT3_FS=y
 # CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4_FS is not set
 CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
 CONFIG_FS_MBCACHE=y
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
 # CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 # CONFIG_FUSE_FS is not set
@@ -1254,11 +1511,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 # Pseudo filesystems
 #
 CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
 # CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
 
 #
 # Miscellaneous filesystems
@@ -1270,39 +1529,42 @@ CONFIG_RAMFS=y
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
 CONFIG_JFFS2_FS=y
 CONFIG_JFFS2_FS_DEBUG=0
 CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
 CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
 CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
 CONFIG_JFFS2_RTIME=y
 CONFIG_JFFS2_RUBIN=y
 # CONFIG_JFFS2_CMODE_NONE is not set
 CONFIG_JFFS2_CMODE_PRIORITY=y
 # CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
 CONFIG_CRAMFS=m
 # CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
 # CONFIG_HPFS_FS is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
+CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 # CONFIG_NFS_V3_ACL is not set
 CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_REGISTER_V4 is not set
 CONFIG_RPCSEC_GSS_KRB5=m
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 CONFIG_SMB_FS=m
@@ -1312,7 +1574,6 @@ CONFIG_SMB_NLS_REMOTE="cp437"
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
 
 #
 # Partition Types
@@ -1332,11 +1593,9 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_SGI_PARTITION is not set
 # CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
 # CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
+# CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=y
 CONFIG_NLS_DEFAULT="cp437"
 CONFIG_NLS_CODEPAGE_437=y
@@ -1377,35 +1636,71 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_KOI8_R is not set
 # CONFIG_NLS_KOI8_U is not set
 CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
+# CONFIG_DLM is not set
 
 #
 # Kernel hacking
 #
 # CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
 CONFIG_MAGIC_SYSRQ=y
-CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
 CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
 # CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
 # CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
 CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_HAVE_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+# CONFIG_FTRACE is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
 CONFIG_DEBUG_LL=y
 # CONFIG_DEBUG_ICEDCC is not set
 
@@ -1414,46 +1709,113 @@ CONFIG_DEBUG_LL=y
 #
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
 
 #
-# Cryptographic options
+# Crypto core or helper
 #
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_GF128MUL is not set
 CONFIG_CRYPTO_NULL=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
 CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA256=m
 CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
 # CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
 CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+# CONFIG_CRYPTO_CAMELLIA is not set
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_FCRYPT is not set
 CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_LZO is not set
 
 #
-# Hardware crypto devices
+# Random Number Generation
 #
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
 
 #
 # Library routines
 #
+CONFIG_BITREVERSE=y
 CONFIG_CRC_CCITT=y
 # CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
 CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
index 5001390be9582fc1c937aa562671c23cd403f957..d3f0a9eee9f65a94b8b7804c162f65160496b485 100644 (file)
                        __res = __m;                                    \
                        asm (   "umlal  %Q0, %R0, %Q1, %Q2\n\t"         \
                                "mov    %Q0, #0"                        \
-                               : "+r" (__res)                          \
+                               : "+&r" (__res)                         \
                                : "r" (__m), "r" (__n)                  \
                                : "cc" );                               \
                } else {                                                \
                                "umlal  %R0, %Q0, %Q1, %R2\n\t"         \
                                "mov    %R0, #0\n\t"                    \
                                "umlal  %Q0, %R0, %R1, %R2"             \
-                               : "+r" (__res)                          \
+                               : "+&r" (__res)                         \
                                : "r" (__m), "r" (__n)                  \
                                : "cc" );                               \
                } else {                                                \
                                "adds   %Q0, %1, %Q0\n\t"               \
                                "adc    %R0, %R0, #0\n\t"               \
                                "umlal  %Q0, %R0, %R2, %R3"             \
-                               : "+r" (__res), "+r" (__z)              \
+                               : "+&r" (__res), "+&r" (__z)            \
                                : "r" (__m), "r" (__n)                  \
                                : "cc" );                               \
                }                                                       \
index 7e5ebb5bdd17c8e43fb2f25ccf93e5e824e17c3e..9b0447c3d59b15443539c44eb1cb3a23dedd3a3b 100644 (file)
@@ -404,6 +404,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
                }
 
                pin = bank->chipbase;
+               gpio = &irq_desc[pin];
 
                while (isr) {
                        if (isr & 1) {
index e14bf40bfb0755990a4b2b8e6663e7eae4e3d49e..b96c55dad343be40001a700be7c8c48833e6d78c 100644 (file)
@@ -2,4 +2,4 @@ obj-y                           += common.o addr-map.o irq.o pcie.o
 
 obj-$(CONFIG_MACH_DB88F6281_BP)                += db88f6281-bp-setup.o
 obj-$(CONFIG_MACH_RD88F6192_NAS)       += rd88f6192-nas-setup.o
-obj-$(CONFIG_MACH_RD88F6192_NAS)       += rd88f6281-setup.o
+obj-$(CONFIG_MACH_RD88F6281)           += rd88f6281-setup.o
index 3553babbbf0541653a899ee3b18317736a01ba79..d140abca690afdee1a0c78a0a288ec545312f3f2 100644 (file)
@@ -1,18 +1,13 @@
-if ARCH_MSM7X00A
+if ARCH_MSM
 
-comment "MSM7X00A Board Type"
-       depends on ARCH_MSM7X00A
+comment "MSM Board Type"
+       depends on ARCH_MSM
 
 config MACH_HALIBUT
-       depends on ARCH_MSM7X00A
+       depends on ARCH_MSM
        default y
-       bool "Halibut Board (QCT SURF7200A)"
+       bool "Halibut Board (QCT SURF7201A)"
        help
-         Support for the Qualcomm SURF7200A eval board.
-
-config MSM7X00A_IDLE
-       depends on ARCH_MSM7X00A
-       default y
-       bool "Idle Support for MSM7X00A"
+         Support for the Qualcomm SURF7201A eval board.
 
 endif
index d12f2365585096d2d8ee3ffe04652a13d66318ca..1aa47001aa3b065b1b0d4f3a5387a0447bda5cb0 100644 (file)
@@ -1,7 +1,8 @@
 obj-y += io.o idle.o irq.o timer.o dma.o
-
-# Common code for board init
-obj-y += common.o
+obj-y += devices.o
+obj-y += proc_comm.o
+obj-y += vreg.o
+obj-y += clock.o clock-7x01a.o
 
 obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o
 
index a24259133e070258de7aa83236159d681fc4e276..c2a96e3965a6ccfab9bb15e6e2fd0cf8ef0b3fe0 100644 (file)
@@ -33,6 +33,8 @@
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
 
+#include "devices.h"
+
 static struct resource smc91x_resources[] = {
        [0] = {
                .start  = 0x9C004300,
@@ -53,31 +55,12 @@ static struct platform_device smc91x_device = {
        .resource       = smc91x_resources,
 };
 
-static void mddi0_panel_power(int on)
-{
-}
-
-static struct msm_mddi_platform_data msm_mddi0_pdata = {
-       .panel_power    = mddi0_panel_power,
-       .has_vsync_irq  = 0,
-};
-
-static struct platform_device msm_mddi0_device = {
-       .name   = "msm_mddi",
-       .id     = 0,
-       .dev    = {
-               .platform_data = &msm_mddi0_pdata
-       },
-};
-
-static struct platform_device msm_serial0_device = {
-       .name   = "msm_serial",
-       .id     = 0,
-};
-
 static struct platform_device *devices[] __initdata = {
-       &msm_serial0_device,
-       &msm_mddi0_device,
+       &msm_device_uart3,
+       &msm_device_smd,
+       &msm_device_nand,
+       &msm_device_hsusb,
+       &msm_device_i2c,
        &smc91x_device,
 };
 
@@ -91,20 +74,15 @@ static void __init halibut_init_irq(void)
 static void __init halibut_init(void)
 {
        platform_add_devices(devices, ARRAY_SIZE(devices));
-       msm_add_devices();
 }
 
 static void __init halibut_map_io(void)
 {
        msm_map_common_io();
+       msm_clock_init();
 }
 
 MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
-
-/* UART for LL DEBUG */
-       .phys_io        = MSM_UART1_PHYS,
-       .io_pg_offst    = ((MSM_UART1_BASE) >> 18) & 0xfffc,
-
        .boot_params    = 0x10000100,
        .map_io         = halibut_map_io,
        .init_irq       = halibut_init_irq,
diff --git a/arch/arm/mach-msm/clock-7x01a.c b/arch/arm/mach-msm/clock-7x01a.c
new file mode 100644 (file)
index 0000000..62230a3
--- /dev/null
@@ -0,0 +1,126 @@
+/* arch/arm/mach-msm/clock-7x01a.c
+ *
+ * Clock tables for MSM7X01A
+ *
+ * Copyright (C) 2007 Google, Inc.
+ * Copyright (c) 2007 QUALCOMM Incorporated
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+
+#include "clock.h"
+#include "devices.h"
+
+/* clock IDs used by the modem processor */
+
+#define ACPU_CLK       0   /* Applications processor clock */
+#define ADM_CLK                1   /* Applications data mover clock */
+#define ADSP_CLK       2   /* ADSP clock */
+#define EBI1_CLK       3   /* External bus interface 1 clock */
+#define EBI2_CLK       4   /* External bus interface 2 clock */
+#define ECODEC_CLK     5   /* External CODEC clock */
+#define EMDH_CLK       6   /* External MDDI host clock */
+#define GP_CLK         7   /* General purpose clock */
+#define GRP_CLK                8   /* Graphics clock */
+#define I2C_CLK                9   /* I2C clock */
+#define ICODEC_RX_CLK  10  /* Internal CODEX RX clock */
+#define ICODEC_TX_CLK  11  /* Internal CODEX TX clock */
+#define IMEM_CLK       12  /* Internal graphics memory clock */
+#define MDC_CLK                13  /* MDDI client clock */
+#define MDP_CLK                14  /* Mobile display processor clock */
+#define PBUS_CLK       15  /* Peripheral bus clock */
+#define PCM_CLK                16  /* PCM clock */
+#define PMDH_CLK       17  /* Primary MDDI host clock */
+#define SDAC_CLK       18  /* Stereo DAC clock */
+#define SDC1_CLK       19  /* Secure Digital Card clocks */
+#define SDC1_PCLK      20
+#define SDC2_CLK       21
+#define SDC2_PCLK      22
+#define SDC3_CLK       23
+#define SDC3_PCLK      24
+#define SDC4_CLK       25
+#define SDC4_PCLK      26
+#define TSIF_CLK       27  /* Transport Stream Interface clocks */
+#define TSIF_REF_CLK   28
+#define TV_DAC_CLK     29  /* TV clocks */
+#define TV_ENC_CLK     30
+#define UART1_CLK      31  /* UART clocks */
+#define UART2_CLK      32
+#define UART3_CLK      33
+#define UART1DM_CLK    34
+#define UART2DM_CLK    35
+#define USB_HS_CLK     36  /* High speed USB core clock */
+#define USB_HS_PCLK    37  /* High speed USB pbus clock */
+#define USB_OTG_CLK    38  /* Full speed USB clock */
+#define VDC_CLK                39  /* Video controller clock */
+#define VFE_CLK                40  /* Camera / Video Front End clock */
+#define VFE_MDC_CLK    41  /* VFE MDDI client clock */
+
+#define NR_CLKS                42
+
+#define CLOCK(clk_name, clk_id, clk_dev, clk_flags) {  \
+       .name = clk_name, \
+       .id = clk_id, \
+       .flags = clk_flags, \
+       .dev = clk_dev, \
+       }
+
+#define OFF CLKFLAG_AUTO_OFF
+#define MINMAX CLKFLAG_USE_MIN_MAX_TO_SET
+
+struct clk msm_clocks[] = {
+       CLOCK("adm_clk",        ADM_CLK,        NULL, 0),
+       CLOCK("adsp_clk",       ADSP_CLK,       NULL, 0),
+       CLOCK("ebi1_clk",       EBI1_CLK,       NULL, 0),
+       CLOCK("ebi2_clk",       EBI2_CLK,       NULL, 0),
+       CLOCK("ecodec_clk",     ECODEC_CLK,     NULL, 0),
+       CLOCK("emdh_clk",       EMDH_CLK,       NULL, OFF),
+       CLOCK("gp_clk",         GP_CLK,         NULL, 0),
+       CLOCK("grp_clk",        GRP_CLK,        NULL, OFF),
+       CLOCK("i2c_clk",        I2C_CLK,        &msm_device_i2c.dev, 0),
+       CLOCK("icodec_rx_clk",  ICODEC_RX_CLK,  NULL, 0),
+       CLOCK("icodec_tx_clk",  ICODEC_TX_CLK,  NULL, 0),
+       CLOCK("imem_clk",       IMEM_CLK,       NULL, OFF),
+       CLOCK("mdc_clk",        MDC_CLK,        NULL, 0),
+       CLOCK("mdp_clk",        MDP_CLK,        NULL, OFF),
+       CLOCK("pbus_clk",       PBUS_CLK,       NULL, 0),
+       CLOCK("pcm_clk",        PCM_CLK,        NULL, 0),
+       CLOCK("pmdh_clk",       PMDH_CLK,       NULL, OFF | MINMAX),
+       CLOCK("sdac_clk",       SDAC_CLK,       NULL, OFF),
+       CLOCK("sdc_clk",        SDC1_CLK,       &msm_device_sdc1.dev, OFF),
+       CLOCK("sdc_pclk",       SDC1_PCLK,      &msm_device_sdc1.dev, OFF),
+       CLOCK("sdc_clk",        SDC2_CLK,       &msm_device_sdc2.dev, OFF),
+       CLOCK("sdc_pclk",       SDC2_PCLK,      &msm_device_sdc2.dev, OFF),
+       CLOCK("sdc_clk",        SDC3_CLK,       &msm_device_sdc3.dev, OFF),
+       CLOCK("sdc_pclk",       SDC3_PCLK,      &msm_device_sdc3.dev, OFF),
+       CLOCK("sdc_clk",        SDC4_CLK,       &msm_device_sdc4.dev, OFF),
+       CLOCK("sdc_pclk",       SDC4_PCLK,      &msm_device_sdc4.dev, OFF),
+       CLOCK("tsif_clk",       TSIF_CLK,       NULL, 0),
+       CLOCK("tsif_ref_clk",   TSIF_REF_CLK,   NULL, 0),
+       CLOCK("tv_dac_clk",     TV_DAC_CLK,     NULL, 0),
+       CLOCK("tv_enc_clk",     TV_ENC_CLK,     NULL, 0),
+       CLOCK("uart_clk",       UART1_CLK,      &msm_device_uart1.dev, OFF),
+       CLOCK("uart_clk",       UART2_CLK,      &msm_device_uart2.dev, 0),
+       CLOCK("uart_clk",       UART3_CLK,      &msm_device_uart3.dev, OFF),
+       CLOCK("uart1dm_clk",    UART1DM_CLK,    NULL, OFF),
+       CLOCK("uart2dm_clk",    UART2DM_CLK,    NULL, 0),
+       CLOCK("usb_hs_clk",     USB_HS_CLK,     &msm_device_hsusb.dev, OFF),
+       CLOCK("usb_hs_pclk",    USB_HS_PCLK,    &msm_device_hsusb.dev, OFF),
+       CLOCK("usb_otg_clk",    USB_OTG_CLK,    NULL, 0),
+       CLOCK("vdc_clk",        VDC_CLK,        NULL, OFF | MINMAX),
+       CLOCK("vfe_clk",        VFE_CLK,        NULL, OFF),
+       CLOCK("vfe_mdc_clk",    VFE_MDC_CLK,    NULL, OFF),
+};
+
+unsigned msm_num_clocks = ARRAY_SIZE(msm_clocks);
diff --git a/arch/arm/mach-msm/clock.c b/arch/arm/mach-msm/clock.c
new file mode 100644 (file)
index 0000000..3b1ce36
--- /dev/null
@@ -0,0 +1,218 @@
+/* arch/arm/mach-msm/clock.c
+ *
+ * Copyright (C) 2007 Google, Inc.
+ * Copyright (c) 2007 QUALCOMM Incorporated
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/version.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/list.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/spinlock.h>
+
+#include "clock.h"
+#include "proc_comm.h"
+
+static DEFINE_MUTEX(clocks_mutex);
+static DEFINE_SPINLOCK(clocks_lock);
+static LIST_HEAD(clocks);
+
+/*
+ * glue for the proc_comm interface
+ */
+static inline int pc_clk_enable(unsigned id)
+{
+       return msm_proc_comm(PCOM_CLKCTL_RPC_ENABLE, &id, NULL);
+}
+
+static inline void pc_clk_disable(unsigned id)
+{
+       msm_proc_comm(PCOM_CLKCTL_RPC_DISABLE, &id, NULL);
+}
+
+static inline int pc_clk_set_rate(unsigned id, unsigned rate)
+{
+       return msm_proc_comm(PCOM_CLKCTL_RPC_SET_RATE, &id, &rate);
+}
+
+static inline int pc_clk_set_min_rate(unsigned id, unsigned rate)
+{
+       return msm_proc_comm(PCOM_CLKCTL_RPC_MIN_RATE, &id, &rate);
+}
+
+static inline int pc_clk_set_max_rate(unsigned id, unsigned rate)
+{
+       return msm_proc_comm(PCOM_CLKCTL_RPC_MAX_RATE, &id, &rate);
+}
+
+static inline int pc_clk_set_flags(unsigned id, unsigned flags)
+{
+       return msm_proc_comm(PCOM_CLKCTL_RPC_SET_FLAGS, &id, &flags);
+}
+
+static inline unsigned pc_clk_get_rate(unsigned id)
+{
+       if (msm_proc_comm(PCOM_CLKCTL_RPC_RATE, &id, NULL))
+               return 0;
+       else
+               return id;
+}
+
+static inline unsigned pc_clk_is_enabled(unsigned id)
+{
+       if (msm_proc_comm(PCOM_CLKCTL_RPC_ENABLED, &id, NULL))
+               return 0;
+       else
+               return id;
+}
+
+static inline int pc_pll_request(unsigned id, unsigned on)
+{
+       on = !!on;
+       return msm_proc_comm(PCOM_CLKCTL_RPC_PLL_REQUEST, &id, &on);
+}
+
+/*
+ * Standard clock functions defined in include/linux/clk.h
+ */
+struct clk *clk_get(struct device *dev, const char *id)
+{
+       struct clk *clk;
+
+       mutex_lock(&clocks_mutex);
+
+       list_for_each_entry(clk, &clocks, list)
+               if (!strcmp(id, clk->name) && clk->dev == dev)
+                       goto found_it;
+
+       list_for_each_entry(clk, &clocks, list)
+               if (!strcmp(id, clk->name) && clk->dev == NULL)
+                       goto found_it;
+
+       clk = ERR_PTR(-ENOENT);
+found_it:
+       mutex_unlock(&clocks_mutex);
+       return clk;
+}
+EXPORT_SYMBOL(clk_get);
+
+void clk_put(struct clk *clk)
+{
+}
+EXPORT_SYMBOL(clk_put);
+
+int clk_enable(struct clk *clk)
+{
+       unsigned long flags;
+       spin_lock_irqsave(&clocks_lock, flags);
+       clk->count++;
+       if (clk->count == 1)
+               pc_clk_enable(clk->id);
+       spin_unlock_irqrestore(&clocks_lock, flags);
+       return 0;
+}
+EXPORT_SYMBOL(clk_enable);
+
+void clk_disable(struct clk *clk)
+{
+       unsigned long flags;
+       spin_lock_irqsave(&clocks_lock, flags);
+       BUG_ON(clk->count == 0);
+       clk->count--;
+       if (clk->count == 0)
+               pc_clk_disable(clk->id);
+       spin_unlock_irqrestore(&clocks_lock, flags);
+}
+EXPORT_SYMBOL(clk_disable);
+
+unsigned long clk_get_rate(struct clk *clk)
+{
+       return pc_clk_get_rate(clk->id);
+}
+EXPORT_SYMBOL(clk_get_rate);
+
+int clk_set_rate(struct clk *clk, unsigned long rate)
+{
+       int ret;
+       if (clk->flags & CLKFLAG_USE_MIN_MAX_TO_SET) {
+               ret = pc_clk_set_max_rate(clk->id, rate);
+               if (ret)
+                       return ret;
+               return pc_clk_set_min_rate(clk->id, rate);
+       }
+       return pc_clk_set_rate(clk->id, rate);
+}
+EXPORT_SYMBOL(clk_set_rate);
+
+int clk_set_parent(struct clk *clk, struct clk *parent)
+{
+       return -ENOSYS;
+}
+EXPORT_SYMBOL(clk_set_parent);
+
+struct clk *clk_get_parent(struct clk *clk)
+{
+       return ERR_PTR(-ENOSYS);
+}
+EXPORT_SYMBOL(clk_get_parent);
+
+int clk_set_flags(struct clk *clk, unsigned long flags)
+{
+       if (clk == NULL || IS_ERR(clk))
+               return -EINVAL;
+       return pc_clk_set_flags(clk->id, flags);
+}
+EXPORT_SYMBOL(clk_set_flags);
+
+
+void __init msm_clock_init(void)
+{
+       unsigned n;
+
+       spin_lock_init(&clocks_lock);
+       mutex_lock(&clocks_mutex);
+       for (n = 0; n < msm_num_clocks; n++)
+               list_add_tail(&msm_clocks[n].list, &clocks);
+       mutex_unlock(&clocks_mutex);
+}
+
+/* The bootloader and/or AMSS may have left various clocks enabled.
+ * Disable any clocks that belong to us (CLKFLAG_AUTO_OFF) but have
+ * not been explicitly enabled by a clk_enable() call.
+ */
+static int __init clock_late_init(void)
+{
+       unsigned long flags;
+       struct clk *clk;
+       unsigned count = 0;
+
+       mutex_lock(&clocks_mutex);
+       list_for_each_entry(clk, &clocks, list) {
+               if (clk->flags & CLKFLAG_AUTO_OFF) {
+                       spin_lock_irqsave(&clocks_lock, flags);
+                       if (!clk->count) {
+                               count++;
+                               pc_clk_disable(clk->id);
+                       }
+                       spin_unlock_irqrestore(&clocks_lock, flags);
+               }
+       }
+       mutex_unlock(&clocks_mutex);
+       pr_info("clock_late_init() disabled %d unused clocks\n", count);
+       return 0;
+}
+
+late_initcall(clock_late_init);
diff --git a/arch/arm/mach-msm/clock.h b/arch/arm/mach-msm/clock.h
new file mode 100644 (file)
index 0000000..f875e15
--- /dev/null
@@ -0,0 +1,48 @@
+/* arch/arm/mach-msm/clock.h
+ *
+ * Copyright (C) 2007 Google, Inc.
+ * Copyright (c) 2007 QUALCOMM Incorporated
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ARCH_ARM_MACH_MSM_CLOCK_H
+#define __ARCH_ARM_MACH_MSM_CLOCK_H
+
+#include <linux/list.h>
+
+#define CLKFLAG_INVERT                 0x00000001
+#define CLKFLAG_NOINVERT               0x00000002
+#define CLKFLAG_NONEST                 0x00000004
+#define CLKFLAG_NORESET                        0x00000008
+
+#define CLK_FIRST_AVAILABLE_FLAG       0x00000100
+#define CLKFLAG_USE_MIN_MAX_TO_SET     0x00000200
+#define CLKFLAG_AUTO_OFF               0x00000400
+
+struct clk {
+       uint32_t id;
+       uint32_t count;
+       uint32_t flags;
+       const char *name;
+       struct list_head list;
+       struct device *dev;
+};
+
+#define A11S_CLK_CNTL_ADDR             (MSM_CSR_BASE + 0x100)
+#define A11S_CLK_SEL_ADDR              (MSM_CSR_BASE + 0x104)
+#define A11S_VDD_SVS_PLEVEL_ADDR       (MSM_CSR_BASE + 0x124)
+
+extern struct clk msm_clocks[];
+extern unsigned msm_num_clocks;
+
+#endif
+
diff --git a/arch/arm/mach-msm/common.c b/arch/arm/mach-msm/common.c
deleted file mode 100644 (file)
index 604f8ad..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* linux/arch/arm/mach-msm/common.c
- *
- * Common setup code for MSM7K Boards
- *
- * Copyright (C) 2007 Google, Inc.
- * Author: Brian Swetland <swetland@google.com>
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/io.h>
-
-#include <asm/mach/flash.h>
-
-#include <asm/setup.h>
-
-#include <linux/mtd/nand.h>
-#include <linux/mtd/partitions.h>
-
-#include <mach/msm_iomap.h>
-
-#include <mach/board.h>
-
-struct flash_platform_data msm_nand_data = {
-       .parts          = 0,
-       .nr_parts       = 0,
-};
-
-static struct resource msm_nand_resources[] = {
-       [0] = {
-               .start  = 7,
-               .end    = 7,
-               .flags  = IORESOURCE_DMA,
-       },
-};
-
-static struct platform_device msm_nand_device = {
-       .name           = "msm_nand",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(msm_nand_resources),
-       .resource       = msm_nand_resources,
-       .dev            = {
-               .platform_data  = &msm_nand_data,
-       },
-};
-
-static struct platform_device msm_smd_device = {
-       .name   = "msm_smd",
-       .id     = -1,
-};
-
-static struct resource msm_i2c_resources[] = {
-       {
-               .start  = MSM_I2C_BASE,
-               .end    = MSM_I2C_BASE + MSM_I2C_SIZE - 1,
-               .flags  = IORESOURCE_MEM,
-       },
-       {
-               .start  = INT_PWB_I2C,
-               .end    = INT_PWB_I2C,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device msm_i2c_device = {
-       .name           = "msm_i2c",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(msm_i2c_resources),
-       .resource       = msm_i2c_resources,
-};
-
-static struct resource usb_resources[] = {
-       {
-               .start  = MSM_HSUSB_PHYS,
-               .end    = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
-               .flags  = IORESOURCE_MEM,
-       },
-       {
-               .start  = INT_USB_HS,
-               .end    = INT_USB_HS,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device msm_hsusb_device = {
-       .name           = "msm_hsusb",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(usb_resources),
-       .resource       = usb_resources,
-       .dev            = {
-               .coherent_dma_mask      = 0xffffffff,
-       },
-};
-
-static struct platform_device *devices[] __initdata = {
-       &msm_nand_device,
-       &msm_smd_device,
-       &msm_i2c_device,
-       &msm_hsusb_device,
-};
-
-void __init msm_add_devices(void)
-{
-       platform_add_devices(devices, ARRAY_SIZE(devices));
-}
diff --git a/arch/arm/mach-msm/devices.c b/arch/arm/mach-msm/devices.c
new file mode 100644 (file)
index 0000000..f2a74b9
--- /dev/null
@@ -0,0 +1,267 @@
+/* linux/arch/arm/mach-msm/devices.c
+ *
+ * Copyright (C) 2008 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+
+#include <mach/msm_iomap.h>
+#include "devices.h"
+
+#include <asm/mach/flash.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/partitions.h>
+
+static struct resource resources_uart1[] = {
+       {
+               .start  = INT_UART1,
+               .end    = INT_UART1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = MSM_UART1_PHYS,
+               .end    = MSM_UART1_PHYS + MSM_UART1_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource resources_uart2[] = {
+       {
+               .start  = INT_UART2,
+               .end    = INT_UART2,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = MSM_UART2_PHYS,
+               .end    = MSM_UART2_PHYS + MSM_UART2_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource resources_uart3[] = {
+       {
+               .start  = INT_UART3,
+               .end    = INT_UART3,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = MSM_UART3_PHYS,
+               .end    = MSM_UART3_PHYS + MSM_UART3_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+struct platform_device msm_device_uart1 = {
+       .name   = "msm_serial",
+       .id     = 0,
+       .num_resources  = ARRAY_SIZE(resources_uart1),
+       .resource       = resources_uart1,
+};
+
+struct platform_device msm_device_uart2 = {
+       .name   = "msm_serial",
+       .id     = 1,
+       .num_resources  = ARRAY_SIZE(resources_uart2),
+       .resource       = resources_uart2,
+};
+
+struct platform_device msm_device_uart3 = {
+       .name   = "msm_serial",
+       .id     = 2,
+       .num_resources  = ARRAY_SIZE(resources_uart3),
+       .resource       = resources_uart3,
+};
+
+static struct resource resources_i2c[] = {
+       {
+               .start  = MSM_I2C_PHYS,
+               .end    = MSM_I2C_PHYS + MSM_I2C_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_PWB_I2C,
+               .end    = INT_PWB_I2C,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+struct platform_device msm_device_i2c = {
+       .name           = "msm_i2c",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(resources_i2c),
+       .resource       = resources_i2c,
+};
+
+static struct resource resources_hsusb[] = {
+       {
+               .start  = MSM_HSUSB_PHYS,
+               .end    = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_USB_HS,
+               .end    = INT_USB_HS,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+struct platform_device msm_device_hsusb = {
+       .name           = "msm_hsusb",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(resources_hsusb),
+       .resource       = resources_hsusb,
+       .dev            = {
+               .coherent_dma_mask      = 0xffffffff,
+       },
+};
+
+struct flash_platform_data msm_nand_data = {
+       .parts          = NULL,
+       .nr_parts       = 0,
+};
+
+static struct resource resources_nand[] = {
+       [0] = {
+               .start  = 7,
+               .end    = 7,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+struct platform_device msm_device_nand = {
+       .name           = "msm_nand",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(resources_nand),
+       .resource       = resources_nand,
+       .dev            = {
+               .platform_data  = &msm_nand_data,
+       },
+};
+
+struct platform_device msm_device_smd = {
+       .name   = "msm_smd",
+       .id     = -1,
+};
+
+static struct resource resources_sdc1[] = {
+       {
+               .start  = MSM_SDC1_PHYS,
+               .end    = MSM_SDC1_PHYS + MSM_SDC1_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_SDC1_0,
+               .end    = INT_SDC1_1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = 8,
+               .end    = 8,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+static struct resource resources_sdc2[] = {
+       {
+               .start  = MSM_SDC2_PHYS,
+               .end    = MSM_SDC2_PHYS + MSM_SDC2_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_SDC2_0,
+               .end    = INT_SDC2_1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = 8,
+               .end    = 8,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+static struct resource resources_sdc3[] = {
+       {
+               .start  = MSM_SDC3_PHYS,
+               .end    = MSM_SDC3_PHYS + MSM_SDC3_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_SDC3_0,
+               .end    = INT_SDC3_1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = 8,
+               .end    = 8,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+static struct resource resources_sdc4[] = {
+       {
+               .start  = MSM_SDC4_PHYS,
+               .end    = MSM_SDC4_PHYS + MSM_SDC4_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_SDC4_0,
+               .end    = INT_SDC4_1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = 8,
+               .end    = 8,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+struct platform_device msm_device_sdc1 = {
+       .name           = "msm_sdcc",
+       .id             = 1,
+       .num_resources  = ARRAY_SIZE(resources_sdc1),
+       .resource       = resources_sdc1,
+       .dev            = {
+               .coherent_dma_mask      = 0xffffffff,
+       },
+};
+
+struct platform_device msm_device_sdc2 = {
+       .name           = "msm_sdcc",
+       .id             = 2,
+       .num_resources  = ARRAY_SIZE(resources_sdc2),
+       .resource       = resources_sdc2,
+       .dev            = {
+               .coherent_dma_mask      = 0xffffffff,
+       },
+};
+
+struct platform_device msm_device_sdc3 = {
+       .name           = "msm_sdcc",
+       .id             = 3,
+       .num_resources  = ARRAY_SIZE(resources_sdc3),
+       .resource       = resources_sdc3,
+       .dev            = {
+               .coherent_dma_mask      = 0xffffffff,
+       },
+};
+
+struct platform_device msm_device_sdc4 = {
+       .name           = "msm_sdcc",
+       .id             = 4,
+       .num_resources  = ARRAY_SIZE(resources_sdc4),
+       .resource       = resources_sdc4,
+       .dev            = {
+               .coherent_dma_mask      = 0xffffffff,
+       },
+};
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
new file mode 100644 (file)
index 0000000..0744c4a
--- /dev/null
@@ -0,0 +1,36 @@
+/* linux/arch/arm/mach-msm/devices.h
+ *
+ * Copyright (C) 2008 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ARCH_ARM_MACH_MSM_DEVICES_H
+#define __ARCH_ARM_MACH_MSM_DEVICES_H
+
+extern struct platform_device msm_device_uart1;
+extern struct platform_device msm_device_uart2;
+extern struct platform_device msm_device_uart3;
+
+extern struct platform_device msm_device_sdc1;
+extern struct platform_device msm_device_sdc2;
+extern struct platform_device msm_device_sdc3;
+extern struct platform_device msm_device_sdc4;
+
+extern struct platform_device msm_device_hsusb;
+
+extern struct platform_device msm_device_i2c;
+
+extern struct platform_device msm_device_smd;
+
+extern struct platform_device msm_device_nand;
+
+#endif
index 0c8f252637e15a31486887c15dd28818829691eb..f5420f9585c59ec504dd85325c55e42141e50f96 100644 (file)
@@ -26,7 +26,7 @@ enum {
 };
 
 static DEFINE_SPINLOCK(msm_dmov_lock);
-static struct msm_dmov_cmd active_command;
+static unsigned int channel_active;
 static struct list_head ready_commands[MSM_DMOV_CHANNEL_COUNT];
 static struct list_head active_commands[MSM_DMOV_CHANNEL_COUNT];
 unsigned int msm_dmov_print_mask = MSM_DMOV_PRINT_ERRORS;
@@ -43,6 +43,11 @@ unsigned int msm_dmov_print_mask = MSM_DMOV_PRINT_ERRORS;
 #define PRINT_FLOW(format, args...) \
        MSM_DMOV_DPRINTF(MSM_DMOV_PRINT_FLOW, format, args);
 
+void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd, int graceful)
+{
+       writel((graceful << 31), DMOV_FLUSH0(id));
+}
+
 void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
 {
        unsigned long irq_flags;
@@ -60,6 +65,9 @@ void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd)
 #endif
                PRINT_IO("msm_dmov_enqueue_cmd(%d), start command, status %x\n", id, status);
                list_add_tail(&cmd->list, &active_commands[id]);
+               if (!channel_active)
+                       enable_irq(INT_ADM_AARM);
+               channel_active |= 1U << id;
                writel(cmd->cmdptr, DMOV_CMD_PTR(id));
        } else {
                if (list_empty(&active_commands[id]))
@@ -76,21 +84,19 @@ struct msm_dmov_exec_cmdptr_cmd {
        struct completion complete;
        unsigned id;
        unsigned int result;
-       unsigned int flush[6];
+       struct msm_dmov_errdata err;
 };
 
-static void dmov_exec_cmdptr_complete_func(struct msm_dmov_cmd *_cmd, unsigned int result)
+static void
+dmov_exec_cmdptr_complete_func(struct msm_dmov_cmd *_cmd,
+                              unsigned int result,
+                              struct msm_dmov_errdata *err)
 {
        struct msm_dmov_exec_cmdptr_cmd *cmd = container_of(_cmd, struct msm_dmov_exec_cmdptr_cmd, dmov_cmd);
        cmd->result = result;
-       if (result != 0x80000002) {
-               cmd->flush[0] = readl(DMOV_FLUSH0(cmd->id));
-               cmd->flush[1] = readl(DMOV_FLUSH1(cmd->id));
-               cmd->flush[2] = readl(DMOV_FLUSH2(cmd->id));
-               cmd->flush[3] = readl(DMOV_FLUSH3(cmd->id));
-               cmd->flush[4] = readl(DMOV_FLUSH4(cmd->id));
-               cmd->flush[5] = readl(DMOV_FLUSH5(cmd->id));
-       }
+       if (result != 0x80000002 && err)
+               memcpy(&cmd->err, err, sizeof(struct msm_dmov_errdata));
+
        complete(&cmd->complete);
 }
 
@@ -111,7 +117,7 @@ int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr)
        if (cmd.result != 0x80000002) {
                PRINT_ERROR("dmov_exec_cmdptr(%d): ERROR, result: %x\n", id, cmd.result);
                PRINT_ERROR("dmov_exec_cmdptr(%d):  flush: %x %x %x %x\n",
-                       id, cmd.flush[0], cmd.flush[1], cmd.flush[2], cmd.flush[3]);
+                       id, cmd.err.flush[0], cmd.err.flush[1], cmd.err.flush[2], cmd.err.flush[3]);
                return -EIO;
        }
        PRINT_FLOW("dmov_exec_cmdptr(%d, %x) done\n", id, cmdptr);
@@ -159,25 +165,40 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
                                        "for %p, result %x\n", id, cmd, ch_result);
                                if (cmd) {
                                        list_del(&cmd->list);
-                                       cmd->complete_func(cmd, ch_result);
+                                       cmd->complete_func(cmd, ch_result, NULL);
                                }
                        }
                        if (ch_result & DMOV_RSLT_FLUSH) {
-                               unsigned int flush0 = readl(DMOV_FLUSH0(id));
+                               struct msm_dmov_errdata errdata;
+
+                               errdata.flush[0] = readl(DMOV_FLUSH0(id));
+                               errdata.flush[1] = readl(DMOV_FLUSH1(id));
+                               errdata.flush[2] = readl(DMOV_FLUSH2(id));
+                               errdata.flush[3] = readl(DMOV_FLUSH3(id));
+                               errdata.flush[4] = readl(DMOV_FLUSH4(id));
+                               errdata.flush[5] = readl(DMOV_FLUSH5(id));
                                PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
-                               PRINT_FLOW("msm_datamover_irq_handler id %d, flush, result %x, flush0 %x\n", id, ch_result, flush0);
+                               PRINT_FLOW("msm_datamover_irq_handler id %d, flush, result %x, flush0 %x\n", id, ch_result, errdata.flush[0]);
                                if (cmd) {
                                        list_del(&cmd->list);
-                                       cmd->complete_func(cmd, ch_result);
+                                       cmd->complete_func(cmd, ch_result, &errdata);
                                }
                        }
                        if (ch_result & DMOV_RSLT_ERROR) {
-                               unsigned int flush0 = readl(DMOV_FLUSH0(id));
+                               struct msm_dmov_errdata errdata;
+
+                               errdata.flush[0] = readl(DMOV_FLUSH0(id));
+                               errdata.flush[1] = readl(DMOV_FLUSH1(id));
+                               errdata.flush[2] = readl(DMOV_FLUSH2(id));
+                               errdata.flush[3] = readl(DMOV_FLUSH3(id));
+                               errdata.flush[4] = readl(DMOV_FLUSH4(id));
+                               errdata.flush[5] = readl(DMOV_FLUSH5(id));
+
                                PRINT_ERROR("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
-                               PRINT_ERROR("msm_datamover_irq_handler id %d, error, result %x, flush0 %x\n", id, ch_result, flush0);
+                               PRINT_ERROR("msm_datamover_irq_handler id %d, error, result %x, flush0 %x\n", id, ch_result, errdata.flush[0]);
                                if (cmd) {
                                        list_del(&cmd->list);
-                                       cmd->complete_func(cmd, ch_result);
+                                       cmd->complete_func(cmd, ch_result, &errdata);
                                }
                                /* this does not seem to work, once we get an error */
                                /* the datamover will no longer accept commands */
@@ -193,8 +214,14 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
                                writel(cmd->cmdptr, DMOV_CMD_PTR(id));
                        }
                } while (ch_status & DMOV_STATUS_RSLT_VALID);
+               if (list_empty(&active_commands[id]) && list_empty(&ready_commands[id]))
+                       channel_active &= ~(1U << id);
                PRINT_FLOW("msm_datamover_irq_handler id %d, status %x\n", id, ch_status);
        }
+
+       if (!channel_active)
+               disable_irq(INT_ADM_AARM);
+
        spin_unlock_irqrestore(&msm_dmov_lock, irq_flags);
        return IRQ_HANDLED;
 }
@@ -202,12 +229,17 @@ static irqreturn_t msm_datamover_irq_handler(int irq, void *dev_id)
 static int __init msm_init_datamover(void)
 {
        int i;
+       int ret;
        for (i = 0; i < MSM_DMOV_CHANNEL_COUNT; i++) {
                INIT_LIST_HEAD(&ready_commands[i]);
                INIT_LIST_HEAD(&active_commands[i]);
                writel(DMOV_CONFIG_IRQ_EN | DMOV_CONFIG_FORCE_TOP_PTR_RSLT | DMOV_CONFIG_FORCE_FLUSH_RSLT, DMOV_CONFIG(i));
        }
-       return request_irq(INT_ADM_AARM, msm_datamover_irq_handler, 0, "msmdatamover", NULL);
+       ret = request_irq(INT_ADM_AARM, msm_datamover_irq_handler, 0, "msmdatamover", NULL);
+       if (ret)
+               return ret;
+       disable_irq(INT_ADM_AARM);
+       return 0;
 }
 
 arch_initcall(msm_init_datamover);
index a7639493c095391ff24da034be9f5b31bfc93855..264d62e519f3dedcd6f8024ccfb7c8f5d851737e 100644 (file)
@@ -33,5 +33,6 @@ void __init msm_add_devices(void);
 void __init msm_map_common_io(void);
 void __init msm_init_irq(void);
 void __init msm_init_gpio(void);
+void __init msm_clock_init(void);
 
 #endif
index 528eef4b605cdf1ee7c4b75899e6efc441f06744..1db3c97dbc49e4738d386396a5db3e6169cb7785 100644 (file)
        mrc     p15, 0, \rx, c1, c0
        tst     \rx, #1
        ldreq   \rx, =MSM_UART1_PHYS
-       ldrne   \rx, =MSM_UART1_BASE
+       movne   \rx, #0
        .endm
 
        .macro  senduart,rd,rx
-       str     \rd, [\rx, #0x0C]
+       teq     \rx, #0
+       strne   \rd, [\rx, #0x0C]
        .endm
 
        .macro  waituart,rd,rx
        @ wait for TX_READY
+       teq     \rx, #0
+       bne     2f
 1:     ldr     \rd, [\rx, #0x08]
        tst     \rd, #0x04
        beq     1b
+2:
        .endm
 
        .macro  busyuart,rd,rx
index ad1c87f86d10598080627c4553b3f265273c07f4..5ab5bdffab07334781b960661deebe041bab408b 100644 (file)
@@ -1,4 +1,4 @@
-/* arch/arm/mach-msm/include/mach/dma.h
+/* linux/include/asm-arm/arch-msm/dma.h
  *
  * Copyright (C) 2007 Google, Inc.
  *
 #include <linux/list.h>
 #include <mach/msm_iomap.h>
 
+struct msm_dmov_errdata {
+       uint32_t flush[6];
+};
+
 struct msm_dmov_cmd {
        struct list_head list;
        unsigned int cmdptr;
-       void (*complete_func)(struct msm_dmov_cmd *cmd, unsigned int result);
-/*     void (*user_result_func)(struct msm_dmov_cmd *cmd); */
+       void (*complete_func)(struct msm_dmov_cmd *cmd,
+                             unsigned int result,
+                             struct msm_dmov_errdata *err);
 };
 
 void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd);
-void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd);
+void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd, int graceful);
 int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr);
-/* int msm_dmov_exec_cmd_etc(unsigned id, unsigned int cmdptr, int timeout, int interruptible); */
 
 
 
@@ -122,6 +126,16 @@ typedef struct {
        unsigned _reserved;
 } dmov_sg;
 
+/* Box mode */
+typedef struct {
+       uint32_t cmd;
+       uint32_t src_row_addr;
+       uint32_t dst_row_addr;
+       uint32_t src_dst_len;
+       uint32_t num_rows;
+       uint32_t row_offset;
+} dmov_box;
+
 /* bits for the cmd field of the above structures */
 
 #define CMD_LC      (1 << 31)  /* last command */
index e221f58ceea3997a0a90f0b52d997f89a0874acf..2f7b4c8620d95f257e6c845f541ce4a42a4abea7 100644 (file)
  *
  */
 
-#define MSM_VIC_BASE          0xE0000000
+#ifdef __ASSEMBLY__
+#define IOMEM(x)       x
+#else
+#define IOMEM(x)       ((void __force __iomem *)(x))
+#endif
+
+#define MSM_VIC_BASE          IOMEM(0xE0000000)
 #define MSM_VIC_PHYS          0xC0000000
 #define MSM_VIC_SIZE          SZ_4K
 
-#define MSM_CSR_BASE          0xE0001000
+#define MSM_CSR_BASE          IOMEM(0xE0001000)
 #define MSM_CSR_PHYS          0xC0100000
 #define MSM_CSR_SIZE          SZ_4K
 
 #define MSM_GPT_BASE          MSM_CSR_BASE
 #define MSM_GPT_SIZE          SZ_4K
 
-#define MSM_DMOV_BASE         0xE0002000
+#define MSM_DMOV_BASE         IOMEM(0xE0002000)
 #define MSM_DMOV_PHYS         0xA9700000
 #define MSM_DMOV_SIZE         SZ_4K
 
-#define MSM_UART1_BASE        0xE0003000
+#define MSM_GPIO1_BASE        IOMEM(0xE0003000)
+#define MSM_GPIO1_PHYS        0xA9200000
+#define MSM_GPIO1_SIZE        SZ_4K
+
+#define MSM_GPIO2_BASE        IOMEM(0xE0004000)
+#define MSM_GPIO2_PHYS        0xA9300000
+#define MSM_GPIO2_SIZE        SZ_4K
+
+#define MSM_CLK_CTL_BASE      IOMEM(0xE0005000)
+#define MSM_CLK_CTL_PHYS      0xA8600000
+#define MSM_CLK_CTL_SIZE      SZ_4K
+
+#define MSM_SHARED_RAM_BASE   IOMEM(0xE0100000)
+#define MSM_SHARED_RAM_PHYS   0x01F00000
+#define MSM_SHARED_RAM_SIZE   SZ_1M
+
 #define MSM_UART1_PHYS        0xA9A00000
 #define MSM_UART1_SIZE        SZ_4K
 
-#define MSM_UART2_BASE        0xE0004000
 #define MSM_UART2_PHYS        0xA9B00000
 #define MSM_UART2_SIZE        SZ_4K
 
-#define MSM_UART3_BASE        0xE0005000
 #define MSM_UART3_PHYS        0xA9C00000
 #define MSM_UART3_SIZE        SZ_4K
 
-#define MSM_I2C_BASE          0xE0006000
-#define MSM_I2C_PHYS          0xA9900000
-#define MSM_I2C_SIZE          SZ_4K
+#define MSM_SDC1_PHYS         0xA0400000
+#define MSM_SDC1_SIZE         SZ_4K
 
-#define MSM_GPIO1_BASE        0xE0007000
-#define MSM_GPIO1_PHYS        0xA9200000
-#define MSM_GPIO1_SIZE        SZ_4K
+#define MSM_SDC2_PHYS         0xA0500000
+#define MSM_SDC2_SIZE         SZ_4K
 
-#define MSM_GPIO2_BASE        0xE0008000
-#define MSM_GPIO2_PHYS        0xA9300000
-#define MSM_GPIO2_SIZE        SZ_4K
+#define MSM_SDC3_PHYS         0xA0600000
+#define MSM_SDC3_SIZE         SZ_4K
+
+#define MSM_SDC4_PHYS         0xA0700000
+#define MSM_SDC4_SIZE         SZ_4K
+
+#define MSM_I2C_PHYS          0xA9900000
+#define MSM_I2C_SIZE          SZ_4K
 
-#define MSM_HSUSB_BASE        0xE0009000
 #define MSM_HSUSB_PHYS        0xA0800000
 #define MSM_HSUSB_SIZE        SZ_4K
 
-#define MSM_CLK_CTL_BASE      0xE000A000
-#define MSM_CLK_CTL_PHYS      0xA8600000
-#define MSM_CLK_CTL_SIZE      SZ_4K
-
-#define MSM_PMDH_BASE         0xE000B000
 #define MSM_PMDH_PHYS         0xAA600000
 #define MSM_PMDH_SIZE         SZ_4K
 
-#define MSM_EMDH_BASE         0xE000C000
 #define MSM_EMDH_PHYS         0xAA700000
 #define MSM_EMDH_SIZE         SZ_4K
 
-#define MSM_MDP_BASE          0xE0010000
 #define MSM_MDP_PHYS          0xAA200000
 #define MSM_MDP_SIZE          0x000F0000
 
-#define MSM_SHARED_RAM_BASE   0xE0100000
-#define MSM_SHARED_RAM_PHYS   0x01F00000
-#define MSM_SHARED_RAM_SIZE   SZ_1M
+#define MSM_MDC_PHYS         0xAA500000
+#define MSM_MDC_SIZE         SZ_1M
+
+#define MSM_AD5_PHYS          0xAC000000
+#define MSM_AD5_SIZE          (SZ_1M*13)
+
 
 #endif
diff --git a/arch/arm/mach-msm/include/mach/vreg.h b/arch/arm/mach-msm/include/mach/vreg.h
new file mode 100644 (file)
index 0000000..9f9e25c
--- /dev/null
@@ -0,0 +1,29 @@
+/* linux/include/asm-arm/arch-msm/vreg.h
+ *
+ * Copyright (C) 2008 Google, Inc.
+ * Author: Brian Swetland <swetland@google.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ARCH_ARM_MACH_MSM_VREG_H
+#define __ARCH_ARM_MACH_MSM_VREG_H
+
+struct vreg;
+
+struct vreg *vreg_get(struct device *dev, const char *id);
+void vreg_put(struct vreg *vreg);
+
+int vreg_enable(struct vreg *vreg);
+void vreg_disable(struct vreg *vreg);
+int vreg_set_level(struct vreg *vreg, unsigned mv);
+
+#endif
index 7999e4ba8e200c4325f4df99d296262453aa1eaf..6e7692ff6f2cb1a7416a8b12c44d0aed0748f3ae 100644 (file)
@@ -28,7 +28,7 @@
 #include <mach/board.h>
 
 #define MSM_DEVICE(name) { \
-               .virtual = MSM_##name##_BASE, \
+               .virtual = (unsigned long) MSM_##name##_BASE, \
                .pfn = __phys_to_pfn(MSM_##name##_PHYS), \
                .length = MSM_##name##_SIZE, \
                .type = MT_DEVICE_NONSHARED, \
@@ -39,19 +39,11 @@ static struct map_desc msm_io_desc[] __initdata = {
        MSM_DEVICE(CSR),
        MSM_DEVICE(GPT),
        MSM_DEVICE(DMOV),
-       MSM_DEVICE(UART1),
-       MSM_DEVICE(UART2),
-       MSM_DEVICE(UART3),
-       MSM_DEVICE(I2C),
        MSM_DEVICE(GPIO1),
        MSM_DEVICE(GPIO2),
-       MSM_DEVICE(HSUSB),
        MSM_DEVICE(CLK_CTL),
-       MSM_DEVICE(PMDH),
-       MSM_DEVICE(EMDH),
-       MSM_DEVICE(MDP),
        {
-               .virtual =  MSM_SHARED_RAM_BASE,
+               .virtual =  (unsigned long) MSM_SHARED_RAM_BASE,
                .pfn =      __phys_to_pfn(MSM_SHARED_RAM_PHYS),
                .length =   MSM_SHARED_RAM_SIZE,
                .type =     MT_DEVICE,
index 04b8d182ff8aa72a33af684d79bc1f9ba7094f86..69ca0dd79bdfc65ed8bdbeff8d1535969f1bd5a8 100644 (file)
 
 static void msm_irq_ack(unsigned int irq)
 {
-       unsigned reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0);
+       void __iomem *reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0);
        irq = 1 << (irq & 31);
        writel(irq, reg);
 }
 
 static void msm_irq_mask(unsigned int irq)
 {
-       unsigned reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0);
+       void __iomem *reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0);
        writel(1 << (irq & 31), reg);
 }
 
 static void msm_irq_unmask(unsigned int irq)
 {
-       unsigned reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0);
+       void __iomem *reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0);
        writel(1 << (irq & 31), reg);
 }
 
@@ -90,8 +90,8 @@ static int msm_irq_set_wake(unsigned int irq, unsigned int on)
 
 static int msm_irq_set_type(unsigned int irq, unsigned int flow_type)
 {
-       unsigned treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0);
-       unsigned preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0);
+       void __iomem *treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0);
+       void __iomem *preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0);
        int b = 1 << (irq & 31);
 
        if (flow_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
diff --git a/arch/arm/mach-msm/proc_comm.c b/arch/arm/mach-msm/proc_comm.c
new file mode 100644 (file)
index 0000000..915ee70
--- /dev/null
@@ -0,0 +1,110 @@
+/* arch/arm/mach-msm/proc_comm.c
+ *
+ * Copyright (C) 2007-2008 Google, Inc.
+ * Author: Brian Swetland <swetland@google.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/delay.h>
+#include <linux/errno.h>
+#include <linux/io.h>
+#include <linux/spinlock.h>
+#include <mach/msm_iomap.h>
+#include <mach/system.h>
+
+#include "proc_comm.h"
+
+#define MSM_A2M_INT(n) (MSM_CSR_BASE + 0x400 + (n) * 4)
+
+static inline void notify_other_proc_comm(void)
+{
+       writel(1, MSM_A2M_INT(6));
+}
+
+#define APP_COMMAND 0x00
+#define APP_STATUS  0x04
+#define APP_DATA1   0x08
+#define APP_DATA2   0x0C
+
+#define MDM_COMMAND 0x10
+#define MDM_STATUS  0x14
+#define MDM_DATA1   0x18
+#define MDM_DATA2   0x1C
+
+static DEFINE_SPINLOCK(proc_comm_lock);
+
+/* The higher level SMD support will install this to
+ * provide a way to check for and handle modem restart.
+ */
+int (*msm_check_for_modem_crash)(void);
+
+/* Poll for a state change, checking for possible
+ * modem crashes along the way (so we don't wait
+ * forever while the ARM9 is blowing up).
+ *
+ * Return an error in the event of a modem crash and
+ * restart so the msm_proc_comm() routine can restart
+ * the operation from the beginning.
+ */
+static int proc_comm_wait_for(void __iomem *addr, unsigned value)
+{
+       for (;;) {
+               if (readl(addr) == value)
+                       return 0;
+
+               if (msm_check_for_modem_crash)
+                       if (msm_check_for_modem_crash())
+                               return -EAGAIN;
+       }
+}
+
+int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2)
+{
+       void __iomem *base = MSM_SHARED_RAM_BASE;
+       unsigned long flags;
+       int ret;
+
+       spin_lock_irqsave(&proc_comm_lock, flags);
+
+       for (;;) {
+               if (proc_comm_wait_for(base + MDM_STATUS, PCOM_READY))
+                       continue;
+
+               writel(cmd, base + APP_COMMAND);
+               writel(data1 ? *data1 : 0, base + APP_DATA1);
+               writel(data2 ? *data2 : 0, base + APP_DATA2);
+
+               notify_other_proc_comm();
+
+               if (proc_comm_wait_for(base + APP_COMMAND, PCOM_CMD_DONE))
+                       continue;
+
+               if (readl(base + APP_STATUS) != PCOM_CMD_FAIL) {
+                       if (data1)
+                               *data1 = readl(base + APP_DATA1);
+                       if (data2)
+                               *data2 = readl(base + APP_DATA2);
+                       ret = 0;
+               } else {
+                       ret = -EIO;
+               }
+               break;
+       }
+
+       writel(PCOM_CMD_IDLE, base + APP_COMMAND);
+
+       spin_unlock_irqrestore(&proc_comm_lock, flags);
+
+       return ret;
+}
+
+
diff --git a/arch/arm/mach-msm/proc_comm.h b/arch/arm/mach-msm/proc_comm.h
new file mode 100644 (file)
index 0000000..834760f
--- /dev/null
@@ -0,0 +1,165 @@
+/* arch/arm/mach-msm/proc_comm.h
+ *
+ * Copyright (c) 2007 QUALCOMM Incorporated
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef _ARCH_ARM_MACH_MSM_PROC_COMM_H_
+#define _ARCH_ARM_MACH_MSM_PROC_COMM_H_
+
+enum {
+       PCOM_CMD_IDLE = 0x0,
+       PCOM_CMD_DONE,
+       PCOM_RESET_APPS,
+       PCOM_RESET_CHIP,
+       PCOM_CONFIG_NAND_MPU,
+       PCOM_CONFIG_USB_CLKS,
+       PCOM_GET_POWER_ON_STATUS,
+       PCOM_GET_WAKE_UP_STATUS,
+       PCOM_GET_BATT_LEVEL,
+       PCOM_CHG_IS_CHARGING,
+       PCOM_POWER_DOWN,
+       PCOM_USB_PIN_CONFIG,
+       PCOM_USB_PIN_SEL,
+       PCOM_SET_RTC_ALARM,
+       PCOM_NV_READ,
+       PCOM_NV_WRITE,
+       PCOM_GET_UUID_HIGH,
+       PCOM_GET_UUID_LOW,
+       PCOM_GET_HW_ENTROPY,
+       PCOM_RPC_GPIO_TLMM_CONFIG_REMOTE,
+       PCOM_CLKCTL_RPC_ENABLE,
+       PCOM_CLKCTL_RPC_DISABLE,
+       PCOM_CLKCTL_RPC_RESET,
+       PCOM_CLKCTL_RPC_SET_FLAGS,
+       PCOM_CLKCTL_RPC_SET_RATE,
+       PCOM_CLKCTL_RPC_MIN_RATE,
+       PCOM_CLKCTL_RPC_MAX_RATE,
+       PCOM_CLKCTL_RPC_RATE,
+       PCOM_CLKCTL_RPC_PLL_REQUEST,
+       PCOM_CLKCTL_RPC_ENABLED,
+       PCOM_VREG_SWITCH,
+       PCOM_VREG_SET_LEVEL,
+       PCOM_GPIO_TLMM_CONFIG_GROUP,
+       PCOM_GPIO_TLMM_UNCONFIG_GROUP,
+       PCOM_NV_WRITE_BYTES_4_7,
+       PCOM_CONFIG_DISP,
+       PCOM_GET_FTM_BOOT_COUNT,
+       PCOM_RPC_GPIO_TLMM_CONFIG_EX,
+       PCOM_PM_MPP_CONFIG,
+       PCOM_GPIO_IN,
+       PCOM_GPIO_OUT,
+       PCOM_RESET_MODEM,
+       PCOM_RESET_CHIP_IMM,
+       PCOM_PM_VID_EN,
+       PCOM_VREG_PULLDOWN,
+       PCOM_NUM_CMDS,
+};
+
+enum {
+        PCOM_INVALID_STATUS = 0x0,
+        PCOM_READY,
+        PCOM_CMD_RUNNING,
+        PCOM_CMD_SUCCESS,
+        PCOM_CMD_FAIL,
+};
+
+/* List of VREGs that support the Pull Down Resistor setting. */
+enum {
+       PM_VREG_PDOWN_MSMA_ID,
+       PM_VREG_PDOWN_MSMP_ID,
+       PM_VREG_PDOWN_MSME1_ID, /* Not supported in Panoramix */
+       PM_VREG_PDOWN_MSMC1_ID, /* Not supported in PM6620 */
+       PM_VREG_PDOWN_MSMC2_ID, /* Supported in PM7500 only */
+       PM_VREG_PDOWN_GP3_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_MSME2_ID, /* Supported in PM7500 and Panoramix only */
+       PM_VREG_PDOWN_GP4_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_GP1_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_TCXO_ID,
+       PM_VREG_PDOWN_PA_ID,
+       PM_VREG_PDOWN_RFTX_ID,
+       PM_VREG_PDOWN_RFRX1_ID,
+       PM_VREG_PDOWN_RFRX2_ID,
+       PM_VREG_PDOWN_SYNT_ID,
+       PM_VREG_PDOWN_WLAN_ID,
+       PM_VREG_PDOWN_USB_ID,
+       PM_VREG_PDOWN_MMC_ID,
+       PM_VREG_PDOWN_RUIM_ID,
+       PM_VREG_PDOWN_MSMC0_ID, /* Supported in PM6610 only */
+       PM_VREG_PDOWN_GP2_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_GP5_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_GP6_ID,   /* Supported in PM7500 only */
+       PM_VREG_PDOWN_RF_ID,
+       PM_VREG_PDOWN_RF_VCO_ID,
+       PM_VREG_PDOWN_MPLL_ID,
+       PM_VREG_PDOWN_S2_ID,
+       PM_VREG_PDOWN_S3_ID,
+       PM_VREG_PDOWN_RFUBM_ID,
+
+       /* new for HAN */
+       PM_VREG_PDOWN_RF1_ID,
+       PM_VREG_PDOWN_RF2_ID,
+       PM_VREG_PDOWN_RFA_ID,
+       PM_VREG_PDOWN_CDC2_ID,
+       PM_VREG_PDOWN_RFTX2_ID,
+       PM_VREG_PDOWN_USIM_ID,
+       PM_VREG_PDOWN_USB2P6_ID,
+       PM_VREG_PDOWN_USB3P3_ID,
+       PM_VREG_PDOWN_INVALID_ID,
+
+       /* backward compatible enums only */
+       PM_VREG_PDOWN_CAM_ID = PM_VREG_PDOWN_GP1_ID,
+       PM_VREG_PDOWN_MDDI_ID = PM_VREG_PDOWN_GP2_ID,
+       PM_VREG_PDOWN_RUIM2_ID = PM_VREG_PDOWN_GP3_ID,
+       PM_VREG_PDOWN_AUX_ID = PM_VREG_PDOWN_GP4_ID,
+       PM_VREG_PDOWN_AUX2_ID = PM_VREG_PDOWN_GP5_ID,
+       PM_VREG_PDOWN_BT_ID = PM_VREG_PDOWN_GP6_ID,
+
+       PM_VREG_PDOWN_MSME_ID = PM_VREG_PDOWN_MSME1_ID,
+       PM_VREG_PDOWN_MSMC_ID = PM_VREG_PDOWN_MSMC1_ID,
+       PM_VREG_PDOWN_RFA1_ID = PM_VREG_PDOWN_RFRX2_ID,
+       PM_VREG_PDOWN_RFA2_ID = PM_VREG_PDOWN_RFTX2_ID,
+       PM_VREG_PDOWN_XO_ID = PM_VREG_PDOWN_TCXO_ID
+};
+
+/* gpio info for PCOM_RPC_GPIO_TLMM_CONFIG_EX */
+
+#define GPIO_ENABLE    0
+#define GPIO_DISABLE   1
+
+#define GPIO_INPUT     0
+#define GPIO_OUTPUT    1
+
+#define GPIO_NO_PULL   0
+#define GPIO_PULL_DOWN 1
+#define GPIO_KEEPER    2
+#define GPIO_PULL_UP   3
+
+#define GPIO_2MA       0
+#define GPIO_4MA       1
+#define GPIO_6MA       2
+#define GPIO_8MA       3
+#define GPIO_10MA      4
+#define GPIO_12MA      5
+#define GPIO_14MA      6
+#define GPIO_16MA      7
+
+#define PCOM_GPIO_CFG(gpio, func, dir, pull, drvstr) \
+               ((((gpio) & 0x3FF) << 4)        | \
+               ((func) & 0xf)                  | \
+               (((dir) & 0x1) << 14)           | \
+               (((pull) & 0x3) << 15)          | \
+               (((drvstr) & 0xF) << 17))
+
+int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2);
+
+#endif
index 2bffe9b7e9fe4e726b1b2814675390a03de4629c..345a14cb73c38debc9e6bf55caac2b56700dea1c 100644 (file)
@@ -45,7 +45,7 @@ struct msm_clock {
        struct clock_event_device   clockevent;
        struct clocksource          clocksource;
        struct irqaction            irq;
-       uint32_t                    regbase;
+       void __iomem                *regbase;
        uint32_t                    freq;
        uint32_t                    shift;
 };
diff --git a/arch/arm/mach-msm/vreg.c b/arch/arm/mach-msm/vreg.c
new file mode 100644 (file)
index 0000000..fcb0b9f
--- /dev/null
@@ -0,0 +1,143 @@
+/* arch/arm/mach-msm/vreg.c
+ *
+ * Copyright (C) 2008 Google, Inc.
+ * Author: Brian Swetland <swetland@google.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/init.h>
+#include <linux/debugfs.h>
+#include <mach/vreg.h>
+
+#include "proc_comm.h"
+
+struct vreg {
+       const char *name;
+       unsigned id;
+};
+
+#define VREG(_name, _id) { .name = _name, .id = _id, }
+
+static struct vreg vregs[] = {
+       VREG("msma",    0),
+       VREG("msmp",    1),
+       VREG("msme1",   2),
+       VREG("msmc1",   3),
+       VREG("msmc2",   4),
+       VREG("gp3",     5),
+       VREG("msme2",   6),
+       VREG("gp4",     7),
+       VREG("gp1",     8),
+       VREG("tcxo",    9),
+       VREG("pa",      10),
+       VREG("rftx",    11),
+       VREG("rfrx1",   12),
+       VREG("rfrx2",   13),
+       VREG("synt",    14),
+       VREG("wlan",    15),
+       VREG("usb",     16),
+       VREG("boost",   17),
+       VREG("mmc",     18),
+       VREG("ruim",    19),
+       VREG("msmc0",   20),
+       VREG("gp2",     21),
+       VREG("gp5",     22),
+       VREG("gp6",     23),
+       VREG("rf",      24),
+       VREG("rf_vco",  26),
+       VREG("mpll",    27),
+       VREG("s2",      28),
+       VREG("s3",      29),
+       VREG("rfubm",   30),
+       VREG("ncp",     31),
+};
+
+struct vreg *vreg_get(struct device *dev, const char *id)
+{
+       int n;
+       for (n = 0; n < ARRAY_SIZE(vregs); n++) {
+               if (!strcmp(vregs[n].name, id))
+                       return vregs + n;
+       }
+       return 0;
+}
+
+void vreg_put(struct vreg *vreg)
+{
+}
+
+int vreg_enable(struct vreg *vreg)
+{
+       unsigned id = vreg->id;
+       unsigned enable = 1;
+       return msm_proc_comm(PCOM_VREG_SWITCH, &id, &enable);
+}
+
+void vreg_disable(struct vreg *vreg)
+{
+       unsigned id = vreg->id;
+       unsigned enable = 0;
+       msm_proc_comm(PCOM_VREG_SWITCH, &id, &enable);
+}
+
+int vreg_set_level(struct vreg *vreg, unsigned mv)
+{
+       unsigned id = vreg->id;
+       return msm_proc_comm(PCOM_VREG_SET_LEVEL, &id, &mv);
+}
+
+#if defined(CONFIG_DEBUG_FS)
+
+static int vreg_debug_set(void *data, u64 val)
+{
+       struct vreg *vreg = data;
+       switch (val) {
+       case 0:
+               vreg_disable(vreg);
+               break;
+       case 1:
+               vreg_enable(vreg);
+               break;
+       default:
+               vreg_set_level(vreg, val);
+               break;
+       }
+       return 0;
+}
+
+static int vreg_debug_get(void *data, u64 *val)
+{
+       return -ENOSYS;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(vreg_fops, vreg_debug_get, vreg_debug_set, "%llu\n");
+
+static int __init vreg_debug_init(void)
+{
+       struct dentry *dent;
+       int n;
+
+       dent = debugfs_create_dir("vreg", 0);
+       if (IS_ERR(dent))
+               return 0;
+
+       for (n = 0; n < ARRAY_SIZE(vregs); n++)
+               (void) debugfs_create_file(vregs[n].name, 0644,
+                                          dent, vregs + n, &vreg_fops);
+
+       return 0;
+}
+
+device_initcall(vreg_debug_init);
+#endif
index f781873431f39b52bb83f1301ce32a13eae1bb3e..a062235e83a8b4c3b272c3d7af016d85dcd8b2ba 100644 (file)
@@ -71,6 +71,14 @@ config PXA_SHARPSL
          SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa)
          handheld computer.
 
+config CORGI_SSP_DEPRECATED
+       bool
+       select PXA_SSP
+       help
+         This option will include corgi_ssp.c and corgi_lcd.c
+         that corgi_ts.c and other legacy drivers (corgi_bl.c
+         and sharpsl_pm.c) may depend on.
+
 config MACH_POODLE
        bool "Enable Sharp SL-5600 (Poodle) Support"
        depends on PXA_SHARPSL
index d31c9979cfa35f34aef2e1afcf81723c7e506924..d64c68b232e3ff8265b9c52df59863b2423004b0 100644 (file)
@@ -37,6 +37,7 @@ obj-$(CONFIG_MACH_TRIZEPS4)   += trizeps4.o
 obj-$(CONFIG_MACH_COLIBRI)     += colibri.o
 obj-$(CONFIG_PXA_SHARP_C7xx)   += corgi.o sharpsl_pm.o corgi_pm.o
 obj-$(CONFIG_PXA_SHARP_Cxx00)  += spitz.o sharpsl_pm.o spitz_pm.o
+obj-$(CONFIG_CORGI_SSP_DEPRECATED)     += corgi_ssp.o corgi_lcd.o
 obj-$(CONFIG_MACH_POODLE)      += poodle.o
 obj-$(CONFIG_MACH_PCM027)      += pcm027.o
 obj-$(CONFIG_MACH_PCM990_BASEBOARD)    += pcm990-baseboard.o
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c
new file mode 100644 (file)
index 0000000..411607b
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * linux/arch/arm/mach-pxa/corgi_lcd.c
+ *
+ * Corgi/Spitz LCD Specific Code
+ *
+ * Copyright (C) 2005 Richard Purdie
+ *
+ * Connectivity:
+ *   Corgi - LCD to ATI Imageon w100 (Wallaby)
+ *   Spitz - LCD to PXA Framebuffer
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/delay.h>
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/module.h>
+#include <linux/string.h>
+#include <mach/corgi.h>
+#include <mach/hardware.h>
+#include <mach/pxa-regs.h>
+#include <mach/sharpsl.h>
+#include <mach/spitz.h>
+#include <asm/hardware/scoop.h>
+#include <asm/mach/sharpsl_param.h>
+#include "generic.h"
+
+/* Register Addresses */
+#define RESCTL_ADRS     0x00
+#define PHACTRL_ADRS    0x01
+#define DUTYCTRL_ADRS   0x02
+#define POWERREG0_ADRS  0x03
+#define POWERREG1_ADRS  0x04
+#define GPOR3_ADRS      0x05
+#define PICTRL_ADRS     0x06
+#define POLCTRL_ADRS    0x07
+
+/* Register Bit Definitions */
+#define RESCTL_QVGA     0x01
+#define RESCTL_VGA      0x00
+
+#define POWER1_VW_ON    0x01  /* VW Supply FET ON */
+#define POWER1_GVSS_ON  0x02  /* GVSS(-8V) Power Supply ON */
+#define POWER1_VDD_ON   0x04  /* VDD(8V),SVSS(-4V) Power Supply ON */
+
+#define POWER1_VW_OFF   0x00  /* VW Supply FET OFF */
+#define POWER1_GVSS_OFF 0x00  /* GVSS(-8V) Power Supply OFF */
+#define POWER1_VDD_OFF  0x00  /* VDD(8V),SVSS(-4V) Power Supply OFF */
+
+#define POWER0_COM_DCLK 0x01  /* COM Voltage DC Bias DAC Serial Data Clock */
+#define POWER0_COM_DOUT 0x02  /* COM Voltage DC Bias DAC Serial Data Out */
+#define POWER0_DAC_ON   0x04  /* DAC Power Supply ON */
+#define POWER0_COM_ON   0x08  /* COM Power Supply ON */
+#define POWER0_VCC5_ON  0x10  /* VCC5 Power Supply ON */
+
+#define POWER0_DAC_OFF  0x00  /* DAC Power Supply OFF */
+#define POWER0_COM_OFF  0x00  /* COM Power Supply OFF */
+#define POWER0_VCC5_OFF 0x00  /* VCC5 Power Supply OFF */
+
+#define PICTRL_INIT_STATE      0x01
+#define PICTRL_INIOFF          0x02
+#define PICTRL_POWER_DOWN      0x04
+#define PICTRL_COM_SIGNAL_OFF  0x08
+#define PICTRL_DAC_SIGNAL_OFF  0x10
+
+#define POLCTRL_SYNC_POL_FALL  0x01
+#define POLCTRL_EN_POL_FALL    0x02
+#define POLCTRL_DATA_POL_FALL  0x04
+#define POLCTRL_SYNC_ACT_H     0x08
+#define POLCTRL_EN_ACT_L       0x10
+
+#define POLCTRL_SYNC_POL_RISE  0x00
+#define POLCTRL_EN_POL_RISE    0x00
+#define POLCTRL_DATA_POL_RISE  0x00
+#define POLCTRL_SYNC_ACT_L     0x00
+#define POLCTRL_EN_ACT_H       0x00
+
+#define PHACTRL_PHASE_MANUAL   0x01
+#define DEFAULT_PHAD_QVGA     (9)
+#define DEFAULT_COMADJ        (125)
+
+/*
+ * This is only a psuedo I2C interface. We can't use the standard kernel
+ * routines as the interface is write only. We just assume the data is acked...
+ */
+static void lcdtg_ssp_i2c_send(u8 data)
+{
+       corgi_ssp_lcdtg_send(POWERREG0_ADRS, data);
+       udelay(10);
+}
+
+static void lcdtg_i2c_send_bit(u8 data)
+{
+       lcdtg_ssp_i2c_send(data);
+       lcdtg_ssp_i2c_send(data | POWER0_COM_DCLK);
+       lcdtg_ssp_i2c_send(data);
+}
+
+static void lcdtg_i2c_send_start(u8 base)
+{
+       lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT);
+       lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK);
+       lcdtg_ssp_i2c_send(base);
+}
+
+static void lcdtg_i2c_send_stop(u8 base)
+{
+       lcdtg_ssp_i2c_send(base);
+       lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK);
+       lcdtg_ssp_i2c_send(base | POWER0_COM_DCLK | POWER0_COM_DOUT);
+}
+
+static void lcdtg_i2c_send_byte(u8 base, u8 data)
+{
+       int i;
+       for (i = 0; i < 8; i++) {
+               if (data & 0x80)
+                       lcdtg_i2c_send_bit(base | POWER0_COM_DOUT);
+               else
+                       lcdtg_i2c_send_bit(base);
+               data <<= 1;
+       }
+}
+
+static void lcdtg_i2c_wait_ack(u8 base)
+{
+       lcdtg_i2c_send_bit(base);
+}
+
+static void lcdtg_set_common_voltage(u8 base_data, u8 data)
+{
+       /* Set Common Voltage to M62332FP via I2C */
+       lcdtg_i2c_send_start(base_data);
+       lcdtg_i2c_send_byte(base_data, 0x9c);
+       lcdtg_i2c_wait_ack(base_data);
+       lcdtg_i2c_send_byte(base_data, 0x00);
+       lcdtg_i2c_wait_ack(base_data);
+       lcdtg_i2c_send_byte(base_data, data);
+       lcdtg_i2c_wait_ack(base_data);
+       lcdtg_i2c_send_stop(base_data);
+}
+
+/* Set Phase Adjust */
+static void lcdtg_set_phadadj(int mode)
+{
+       int adj;
+       switch(mode) {
+               case 480:
+               case 640:
+                       /* Setting for VGA */
+                       adj = sharpsl_param.phadadj;
+                       if (adj < 0) {
+                               adj = PHACTRL_PHASE_MANUAL;
+                       } else {
+                               adj = ((adj & 0x0f) << 1) | PHACTRL_PHASE_MANUAL;
+                       }
+                       break;
+               case 240:
+               case 320:
+               default:
+                       /* Setting for QVGA */
+                       adj = (DEFAULT_PHAD_QVGA << 1) | PHACTRL_PHASE_MANUAL;
+                       break;
+       }
+
+       corgi_ssp_lcdtg_send(PHACTRL_ADRS, adj);
+}
+
+static int lcd_inited;
+
+void corgi_lcdtg_hw_init(int mode)
+{
+       if (!lcd_inited) {
+               int comadj;
+
+               /* Initialize Internal Logic & Port */
+               corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_POWER_DOWN | PICTRL_INIOFF | PICTRL_INIT_STATE
+                               | PICTRL_COM_SIGNAL_OFF | PICTRL_DAC_SIGNAL_OFF);
+
+               corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_OFF
+                               | POWER0_COM_OFF | POWER0_VCC5_OFF);
+
+               corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF);
+
+               /* VDD(+8V), SVSS(-4V) ON */
+               corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON);
+               mdelay(3);
+
+               /* DAC ON */
+               corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON
+                               | POWER0_COM_OFF | POWER0_VCC5_OFF);
+
+               /* INIB = H, INI = L  */
+               /* PICTL[0] = H , PICTL[1] = PICTL[2] = PICTL[4] = L */
+               corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE | PICTRL_COM_SIGNAL_OFF);
+
+               /* Set Common Voltage */
+               comadj = sharpsl_param.comadj;
+               if (comadj < 0)
+                       comadj = DEFAULT_COMADJ;
+               lcdtg_set_common_voltage((POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF), comadj);
+
+               /* VCC5 ON, DAC ON */
+               corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON |
+                               POWER0_COM_OFF | POWER0_VCC5_ON);
+
+               /* GVSS(-8V) ON, VDD ON */
+               corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON);
+               mdelay(2);
+
+               /* COM SIGNAL ON (PICTL[3] = L) */
+               corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIT_STATE);
+
+               /* COM ON, DAC ON, VCC5_ON */
+               corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_COM_DCLK | POWER0_COM_DOUT | POWER0_DAC_ON
+                               | POWER0_COM_ON | POWER0_VCC5_ON);
+
+               /* VW ON, GVSS ON, VDD ON */
+               corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_ON | POWER1_GVSS_ON | POWER1_VDD_ON);
+
+               /* Signals output enable */
+               corgi_ssp_lcdtg_send(PICTRL_ADRS, 0);
+
+               /* Set Phase Adjust */
+               lcdtg_set_phadadj(mode);
+
+               /* Initialize for Input Signals from ATI */
+               corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE
+                               | POLCTRL_DATA_POL_RISE | POLCTRL_SYNC_ACT_L | POLCTRL_EN_ACT_H);
+               udelay(1000);
+
+               lcd_inited=1;
+       } else {
+               lcdtg_set_phadadj(mode);
+       }
+
+       switch(mode) {
+               case 480:
+               case 640:
+                       /* Set Lcd Resolution (VGA) */
+                       corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_VGA);
+                       break;
+               case 240:
+               case 320:
+               default:
+                       /* Set Lcd Resolution (QVGA) */
+                       corgi_ssp_lcdtg_send(RESCTL_ADRS, RESCTL_QVGA);
+                       break;
+       }
+}
+
+void corgi_lcdtg_suspend(void)
+{
+       /* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */
+       mdelay(34);
+
+       /* (1)VW OFF */
+       corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_ON | POWER1_VDD_ON);
+
+       /* (2)COM OFF */
+       corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_COM_SIGNAL_OFF);
+       corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON);
+
+       /* (3)Set Common Voltage Bias 0V */
+       lcdtg_set_common_voltage(POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_ON, 0);
+
+       /* (4)GVSS OFF */
+       corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_ON);
+
+       /* (5)VCC5 OFF */
+       corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_ON | POWER0_COM_OFF | POWER0_VCC5_OFF);
+
+       /* (6)Set PDWN, INIOFF, DACOFF */
+       corgi_ssp_lcdtg_send(PICTRL_ADRS, PICTRL_INIOFF | PICTRL_DAC_SIGNAL_OFF |
+                       PICTRL_POWER_DOWN | PICTRL_COM_SIGNAL_OFF);
+
+       /* (7)DAC OFF */
+       corgi_ssp_lcdtg_send(POWERREG0_ADRS, POWER0_DAC_OFF | POWER0_COM_OFF | POWER0_VCC5_OFF);
+
+       /* (8)VDD OFF */
+       corgi_ssp_lcdtg_send(POWERREG1_ADRS, POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF);
+
+       lcd_inited = 0;
+}
+
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c
new file mode 100644 (file)
index 0000000..8e2f221
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ *  SSP control code for Sharp Corgi devices
+ *
+ *  Copyright (c) 2004-2005 Richard Purdie
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+
+#include <mach/ssp.h>
+#include <mach/pxa-regs.h>
+#include <mach/pxa2xx-gpio.h>
+#include <mach/regs-ssp.h>
+#include "sharpsl.h"
+
+static DEFINE_SPINLOCK(corgi_ssp_lock);
+static struct ssp_dev corgi_ssp_dev;
+static struct ssp_state corgi_ssp_state;
+static struct corgissp_machinfo *ssp_machinfo;
+
+/*
+ * There are three devices connected to the SSP interface:
+ *   1. A touchscreen controller (TI ADS7846 compatible)
+ *   2. An LCD controller (with some Backlight functionality)
+ *   3. A battery monitoring IC (Maxim MAX1111)
+ *
+ * Each device uses a different speed/mode of communication.
+ *
+ * The touchscreen is very sensitive and the most frequently used
+ * so the port is left configured for this.
+ *
+ * Devices are selected using Chip Selects on GPIOs.
+ */
+
+/*
+ *  ADS7846 Routines
+ */
+unsigned long corgi_ssp_ads7846_putget(ulong data)
+{
+       unsigned long flag;
+       u32 ret = 0;
+
+       spin_lock_irqsave(&corgi_ssp_lock, flag);
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
+
+       ssp_write_word(&corgi_ssp_dev,data);
+       ssp_read_word(&corgi_ssp_dev, &ret);
+
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
+       spin_unlock_irqrestore(&corgi_ssp_lock, flag);
+
+       return ret;
+}
+
+/*
+ * NOTE: These functions should always be called in interrupt context
+ * and use the _lock and _unlock functions. They are very time sensitive.
+ */
+void corgi_ssp_ads7846_lock(void)
+{
+       spin_lock(&corgi_ssp_lock);
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
+}
+
+void corgi_ssp_ads7846_unlock(void)
+{
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
+       spin_unlock(&corgi_ssp_lock);
+}
+
+void corgi_ssp_ads7846_put(ulong data)
+{
+       ssp_write_word(&corgi_ssp_dev,data);
+}
+
+unsigned long corgi_ssp_ads7846_get(void)
+{
+       u32 ret = 0;
+       ssp_read_word(&corgi_ssp_dev, &ret);
+       return ret;
+}
+
+EXPORT_SYMBOL(corgi_ssp_ads7846_putget);
+EXPORT_SYMBOL(corgi_ssp_ads7846_lock);
+EXPORT_SYMBOL(corgi_ssp_ads7846_unlock);
+EXPORT_SYMBOL(corgi_ssp_ads7846_put);
+EXPORT_SYMBOL(corgi_ssp_ads7846_get);
+
+
+/*
+ *  LCD/Backlight Routines
+ */
+unsigned long corgi_ssp_dac_put(ulong data)
+{
+       unsigned long flag, sscr1 = SSCR1_SPH;
+       u32 tmp;
+
+       spin_lock_irqsave(&corgi_ssp_lock, flag);
+
+       if (machine_is_spitz() || machine_is_akita() || machine_is_borzoi())
+               sscr1 = 0;
+
+       ssp_disable(&corgi_ssp_dev);
+       ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), sscr1, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_lcdcon));
+       ssp_enable(&corgi_ssp_dev);
+
+       if (ssp_machinfo->cs_lcdcon >= 0)
+               GPCR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
+       ssp_write_word(&corgi_ssp_dev,data);
+       /* Read null data back from device to prevent SSP overflow */
+       ssp_read_word(&corgi_ssp_dev, &tmp);
+       if (ssp_machinfo->cs_lcdcon >= 0)
+               GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
+
+       ssp_disable(&corgi_ssp_dev);
+       ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
+       ssp_enable(&corgi_ssp_dev);
+
+       spin_unlock_irqrestore(&corgi_ssp_lock, flag);
+
+       return 0;
+}
+
+void corgi_ssp_lcdtg_send(u8 adrs, u8 data)
+{
+       corgi_ssp_dac_put(((adrs & 0x07) << 5) | (data & 0x1f));
+}
+
+void corgi_ssp_blduty_set(int duty)
+{
+       corgi_ssp_lcdtg_send(0x02,duty);
+}
+
+EXPORT_SYMBOL(corgi_ssp_lcdtg_send);
+EXPORT_SYMBOL(corgi_ssp_blduty_set);
+
+/*
+ *  Max1111 Routines
+ */
+int corgi_ssp_max1111_get(ulong data)
+{
+       unsigned long flag;
+       long voltage = 0, voltage1 = 0, voltage2 = 0;
+
+       spin_lock_irqsave(&corgi_ssp_lock, flag);
+       if (ssp_machinfo->cs_max1111 >= 0)
+               GPCR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
+       ssp_disable(&corgi_ssp_dev);
+       ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_max1111));
+       ssp_enable(&corgi_ssp_dev);
+
+       udelay(1);
+
+       /* TB1/RB1 */
+       ssp_write_word(&corgi_ssp_dev,data);
+       ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1); /* null read */
+
+       /* TB12/RB2 */
+       ssp_write_word(&corgi_ssp_dev,0);
+       ssp_read_word(&corgi_ssp_dev, (u32*)&voltage1);
+
+       /* TB13/RB3*/
+       ssp_write_word(&corgi_ssp_dev,0);
+       ssp_read_word(&corgi_ssp_dev, (u32*)&voltage2);
+
+       ssp_disable(&corgi_ssp_dev);
+       ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
+       ssp_enable(&corgi_ssp_dev);
+       if (ssp_machinfo->cs_max1111 >= 0)
+               GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
+       spin_unlock_irqrestore(&corgi_ssp_lock, flag);
+
+       if (voltage1 & 0xc0 || voltage2 & 0x3f)
+               voltage = -1;
+       else
+               voltage = ((voltage1 << 2) & 0xfc) | ((voltage2 >> 6) & 0x03);
+
+       return voltage;
+}
+
+EXPORT_SYMBOL(corgi_ssp_max1111_get);
+
+/*
+ *  Support Routines
+ */
+
+void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo)
+{
+       ssp_machinfo = machinfo;
+}
+
+static int __init corgi_ssp_probe(struct platform_device *dev)
+{
+       int ret;
+
+       /* Chip Select - Disable All */
+       if (ssp_machinfo->cs_lcdcon >= 0)
+               pxa_gpio_mode(ssp_machinfo->cs_lcdcon  | GPIO_OUT | GPIO_DFLT_HIGH);
+       if (ssp_machinfo->cs_max1111 >= 0)
+               pxa_gpio_mode(ssp_machinfo->cs_max1111 | GPIO_OUT | GPIO_DFLT_HIGH);
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               pxa_gpio_mode(ssp_machinfo->cs_ads7846 | GPIO_OUT | GPIO_DFLT_HIGH);
+
+       ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0);
+
+       if (ret)
+               printk(KERN_ERR "Unable to register SSP handler!\n");
+       else {
+               ssp_disable(&corgi_ssp_dev);
+               ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
+               ssp_enable(&corgi_ssp_dev);
+       }
+
+       return ret;
+}
+
+static int corgi_ssp_remove(struct platform_device *dev)
+{
+       ssp_exit(&corgi_ssp_dev);
+       return 0;
+}
+
+static int corgi_ssp_suspend(struct platform_device *dev, pm_message_t state)
+{
+       ssp_flush(&corgi_ssp_dev);
+       ssp_save_state(&corgi_ssp_dev,&corgi_ssp_state);
+
+       return 0;
+}
+
+static int corgi_ssp_resume(struct platform_device *dev)
+{
+       if (ssp_machinfo->cs_lcdcon >= 0)
+               GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);  /* High - Disable LCD Control/Timing Gen */
+       if (ssp_machinfo->cs_max1111 >= 0)
+               GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
+       if (ssp_machinfo->cs_ads7846 >= 0)
+               GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
+       ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
+       ssp_enable(&corgi_ssp_dev);
+
+       return 0;
+}
+
+static struct platform_driver corgissp_driver = {
+       .probe          = corgi_ssp_probe,
+       .remove         = corgi_ssp_remove,
+       .suspend        = corgi_ssp_suspend,
+       .resume         = corgi_ssp_resume,
+       .driver         = {
+               .name   = "corgi-ssp",
+       },
+};
+
+int __init corgi_ssp_init(void)
+{
+       return platform_driver_register(&corgissp_driver);
+}
+
+arch_initcall(corgi_ssp_init);
index 585970ef08cec208b3f70779f87cb85001ea5859..7239281788de4bedb4c06b302e65710e0d185412 100644 (file)
  * Shared data structures
  */
 extern struct platform_device corgiscoop_device;
+extern struct platform_device corgissp_device;
 
 #endif /* __ASM_ARCH_CORGI_H  */
 
index e8488dfb7e9100d52d56ee4a3236d2235a9e4cac..fa1998caa78eff3a8b764e42ff79ed495168595f 100644 (file)
  */
 extern struct platform_device spitzscoop_device;
 extern struct platform_device spitzscoop2_device;
+extern struct platform_device spitzssp_device;
 extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
index 8bce6d8615b9ddec02856941fd1e700d79c505de..4df2d38507dc253d65aac1f3ea6be2c50dfe14cf 100644 (file)
 #define TOSA_KEY_MAIL          KEY_MAIL
 #endif
 
+struct spi_device;
+extern int tosa_bl_enable(struct spi_device *spi, int enable);
+
 #endif /* _ASM_ARCH_TOSA_H_ */
index 15c2f1a8623ba8b547dea59b9dcc6ab97e18adef..f0845c1b001c8a94fca44dbb93df2edf621ecbd8 100644 (file)
@@ -116,20 +116,33 @@ struct battery_thresh  spitz_battery_levels_noac[] = {
        {   0,   0},
 };
 
+/* MAX1111 Commands */
+#define MAXCTRL_PD0      1u << 0
+#define MAXCTRL_PD1      1u << 1
+#define MAXCTRL_SGL      1u << 2
+#define MAXCTRL_UNI      1u << 3
+#define MAXCTRL_SEL_SH   4
+#define MAXCTRL_STR      1u << 7
+
 /*
  * Read MAX1111 ADC
  */
-extern int max1111_read_channel(int);
-
 int sharpsl_pm_pxa_read_max1111(int channel)
 {
        if (machine_is_tosa()) // Ugly, better move this function into another module
            return 0;
 
+#ifdef CONFIG_CORGI_SSP_DEPRECATED
+       return corgi_ssp_max1111_get((channel << MAXCTRL_SEL_SH) | MAXCTRL_PD0 | MAXCTRL_PD1
+                       | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+#else
+       extern int max1111_read_channel(int);
+
        /* max1111 accepts channels from 0-3, however,
         * it is encoded from 0-7 here in the code.
         */
        return max1111_read_channel(channel >> 1);
+#endif
 }
 
 void sharpsl_pm_pxa_init(void)
index a6c4694359cabfdde423f8e669cac9dfeaca9163..224897a67d1593113cb43806ef861cad5ec95190 100644 (file)
@@ -31,6 +31,7 @@
 #include <linux/gpio.h>
 #include <linux/pda_power.h>
 #include <linux/rfkill.h>
+#include <linux/spi/spi.h>
 
 #include <asm/setup.h>
 #include <asm/mach-types.h>
@@ -42,6 +43,7 @@
 #include <mach/mmc.h>
 #include <mach/udc.h>
 #include <mach/tosa_bt.h>
+#include <mach/pxa2xx_spi.h>
 
 #include <asm/mach/arch.h>
 #include <mach/tosa.h>
@@ -612,7 +614,7 @@ static int tosa_tc6393xb_enable(struct platform_device *dev)
        rc = gpio_request(TOSA_GPIO_TC6393XB_SUSPEND, "tc6393xb #suspend");
        if (rc)
                goto err_req_suspend;
-       rc = gpio_request(TOSA_GPIO_TC6393XB_L3V_ON, "l3v");
+       rc = gpio_request(TOSA_GPIO_TC6393XB_L3V_ON, "tc6393xb l3v");
        if (rc)
                goto err_req_l3v;
        rc = gpio_direction_output(TOSA_GPIO_TC6393XB_L3V_ON, 0);
@@ -772,6 +774,20 @@ static struct platform_device tosa_bt_device = {
        .dev.platform_data = &tosa_bt_data,
 };
 
+static struct pxa2xx_spi_master pxa_ssp_master_info = {
+       .num_chipselect = 1,
+};
+
+static struct spi_board_info spi_board_info[] __initdata = {
+       {
+               .modalias       = "tosa-lcd",
+               // .platform_data
+               .max_speed_hz   = 28750,
+               .bus_num        = 2,
+               .chip_select    = 0,
+               .mode           = SPI_MODE_0,
+       },
+};
 
 static struct platform_device *devices[] __initdata = {
        &tosascoop_device,
@@ -826,6 +842,9 @@ static void __init tosa_init(void)
        pxa_set_i2c_info(NULL);
        platform_scoop_config = &tosa_pcmcia_config;
 
+       pxa2xx_set_spi_info(2, &pxa_ssp_master_info);
+       spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+
        clk_add_alias("CLK_CK3P6MI", &tc6393xb_device.dev, "GPIO11_CLK", NULL);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
index d1193884d76d9ce4540b5d2a9d11e94e0233536b..ab5f7a21350b3af41bd6a227d1920f09c8091ed1 100644 (file)
@@ -400,9 +400,9 @@ config CPU_FEROCEON_OLD_ID
 # ARMv6
 config CPU_V6
        bool "Support ARM V6 processor"
-       depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3 || ARCH_MSM7X00A || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176
+       depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3 || ARCH_MSM || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176
        default y if ARCH_MX3
-       default y if ARCH_MSM7X00A
+       default y if ARCH_MSM
        select CPU_32v6
        select CPU_ABRT_EV6
        select CPU_PABRT_NOIFAR
index 34e424041927fe57f464fa4612cd5e99b0c1ebe9..07f82db70945f7d3582dcd6c9f589ebcce648af9 100644 (file)
@@ -180,8 +180,8 @@ __v7_setup:
        mov     r10, #0x1f                      @ domains 0, 1 = manager
        mcr     p15, 0, r10, c3, c0, 0          @ load domain access register
 #endif
-       ldr     r5, =0x40e040e0
-       ldr     r6, =0xff0aa1a8
+       ldr     r5, =0xff0aa1a8
+       ldr     r6, =0x40e040e0
        mcr     p15, 0, r5, c10, c2, 0          @ write PRRR
        mcr     p15, 0, r6, c10, c2, 1          @ write NMRR
        adr     r5, v7_crval
index 49f26aaaebc8f2d58064cc1be981103742ab8524..3fa979c9c363a5dbe6f9ce6d754636ed301d01b1 100644 (file)
@@ -17,7 +17,7 @@
 #include "boot.h"
 #include "video.h"
 
-__videocard video_bios;
+static __videocard video_bios;
 
 /* Set a conventional BIOS mode */
 static int set_bios_mode(u8 mode);
@@ -119,7 +119,7 @@ static int bios_probe(void)
        return nmodes;
 }
 
-__videocard video_bios =
+static __videocard video_bios =
 {
        .card_name      = "BIOS",
        .probe          = bios_probe,
index 99b3079dc6ab1fb25c4f083639b13547fa663354..75115849af330e057c71eecd845e4b799107a077 100644 (file)
@@ -20,7 +20,7 @@
 static struct vesa_general_info vginfo;
 static struct vesa_mode_info vminfo;
 
-__videocard video_vesa;
+static __videocard video_vesa;
 
 #ifndef _WAKEUP
 static void vesa_store_mode_params_graphics(void);
@@ -293,7 +293,7 @@ void vesa_store_edid(void)
 
 #endif /* not _WAKEUP */
 
-__videocard video_vesa =
+static __videocard video_vesa =
 {
        .card_name      = "VESA",
        .probe          = vesa_probe,
index 1d88f6957d3967cf456cfad166990eb2d8dda8e0..d82f39bb7905e8f14d3cbd1dc0365ba98f03eea6 100644 (file)
@@ -93,26 +93,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
 {
 # ifdef CONFIG_IA32_EMULATION
        if (task_thread_info(task)->status & TS_COMPAT)
-               switch (i + n) {
-               case 6:
+               switch (i) {
+               case 0:
                        if (!n--) break;
-                       *args++ = regs->bp;
-               case 5:
+                       *args++ = regs->bx;
+               case 1:
                        if (!n--) break;
-                       *args++ = regs->di;
-               case 4:
+                       *args++ = regs->cx;
+               case 2:
                        if (!n--) break;
-                       *args++ = regs->si;
+                       *args++ = regs->dx;
                case 3:
                        if (!n--) break;
-                       *args++ = regs->dx;
-               case 2:
+                       *args++ = regs->si;
+               case 4:
                        if (!n--) break;
-                       *args++ = regs->cx;
-               case 1:
+                       *args++ = regs->di;
+               case 5:
                        if (!n--) break;
-                       *args++ = regs->bx;
-               case 0:
+                       *args++ = regs->bp;
+               case 6:
                        if (!n--) break;
                default:
                        BUG();
@@ -120,26 +120,26 @@ static inline void syscall_get_arguments(struct task_struct *task,
                }
        else
 # endif
-               switch (i + n) {
-               case 6:
+               switch (i) {
+               case 0:
                        if (!n--) break;
-                       *args++ = regs->r9;
-               case 5:
+                       *args++ = regs->di;
+               case 1:
                        if (!n--) break;
-                       *args++ = regs->r8;
-               case 4:
+                       *args++ = regs->si;
+               case 2:
                        if (!n--) break;
-                       *args++ = regs->r10;
+                       *args++ = regs->dx;
                case 3:
                        if (!n--) break;
-                       *args++ = regs->dx;
-               case 2:
+                       *args++ = regs->r10;
+               case 4:
                        if (!n--) break;
-                       *args++ = regs->si;
-               case 1:
+                       *args++ = regs->r8;
+               case 5:
                        if (!n--) break;
-                       *args++ = regs->di;
-               case 0:
+                       *args++ = regs->r9;
+               case 6:
                        if (!n--) break;
                default:
                        BUG();
@@ -154,55 +154,57 @@ static inline void syscall_set_arguments(struct task_struct *task,
 {
 # ifdef CONFIG_IA32_EMULATION
        if (task_thread_info(task)->status & TS_COMPAT)
-               switch (i + n) {
-               case 6:
+               switch (i) {
+               case 0:
                        if (!n--) break;
-                       regs->bp = *args++;
-               case 5:
+                       regs->bx = *args++;
+               case 1:
                        if (!n--) break;
-                       regs->di = *args++;
-               case 4:
+                       regs->cx = *args++;
+               case 2:
                        if (!n--) break;
-                       regs->si = *args++;
+                       regs->dx = *args++;
                case 3:
                        if (!n--) break;
-                       regs->dx = *args++;
-               case 2:
+                       regs->si = *args++;
+               case 4:
                        if (!n--) break;
-                       regs->cx = *args++;
-               case 1:
+                       regs->di = *args++;
+               case 5:
                        if (!n--) break;
-                       regs->bx = *args++;
-               case 0:
+                       regs->bp = *args++;
+               case 6:
                        if (!n--) break;
                default:
                        BUG();
+                       break;
                }
        else
 # endif
-               switch (i + n) {
-               case 6:
+               switch (i) {
+               case 0:
                        if (!n--) break;
-                       regs->r9 = *args++;
-               case 5:
+                       regs->di = *args++;
+               case 1:
                        if (!n--) break;
-                       regs->r8 = *args++;
-               case 4:
+                       regs->si = *args++;
+               case 2:
                        if (!n--) break;
-                       regs->r10 = *args++;
+                       regs->dx = *args++;
                case 3:
                        if (!n--) break;
-                       regs->dx = *args++;
-               case 2:
+                       regs->r10 = *args++;
+               case 4:
                        if (!n--) break;
-                       regs->si = *args++;
-               case 1:
+                       regs->r8 = *args++;
+               case 5:
                        if (!n--) break;
-                       regs->di = *args++;
-               case 0:
+                       regs->r9 = *args++;
+               case 6:
                        if (!n--) break;
                default:
                        BUG();
+                       break;
                }
 }
 
index 53b01a1ae10c8fe04e2a926ad1209473c71b487b..8c1f76abae9eac1b28d3a90abb26d6fb39fb8496 100644 (file)
@@ -1137,7 +1137,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)
                return gsi;
        }
        if (test_bit(ioapic_pin, mp_ioapic_routing[ioapic].pin_programmed)) {
-               pr_debug(KERN_DEBUG "Pin %d-%d already programmed\n",
+               pr_debug("Pin %d-%d already programmed\n",
                         mp_ioapic_routing[ioapic].apic_id, ioapic_pin);
 #ifdef CONFIG_X86_32
                return (gsi < IRQ_COMPRESSION_START ? gsi : gsi_to_irq[gsi]);
@@ -1599,6 +1599,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
                     DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
                     },
         },
+       {}
+};
+
+/* second table for DMI checks that should run after early-quirks */
+static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
        /*
         * HP laptops which use a DSDT reporting as HP/SB400/10000,
         * which includes some code which overrides all temperature
@@ -1727,6 +1732,9 @@ int __init early_acpi_boot_init(void)
 
 int __init acpi_boot_init(void)
 {
+       /* those are executed after early-quirks are executed */
+       dmi_check_system(acpi_dmi_table_late);
+
        /*
         * If acpi_disabled, bail out
         * One exception: acpi=ht continues far enough to enumerate LAPICs
index a26c480b94915a2b460c0963bf38f9693c911641..01b1244ef1c0f47456a246f89324973b4f74269e 100644 (file)
@@ -160,14 +160,16 @@ static void *c_start(struct seq_file *m, loff_t *pos)
 {
        if (*pos == 0)  /* just in case, cpu 0 is not the first */
                *pos = first_cpu(cpu_online_map);
-       if ((*pos) < nr_cpu_ids && cpu_online(*pos))
+       else
+               *pos = next_cpu_nr(*pos - 1, cpu_online_map);
+       if ((*pos) < nr_cpu_ids)
                return &cpu_data(*pos);
        return NULL;
 }
 
 static void *c_next(struct seq_file *m, void *v, loff_t *pos)
 {
-       *pos = next_cpu(*pos, cpu_online_map);
+       (*pos)++;
        return c_start(m, pos);
 }
 
index 1a78180f08d39aa2a87a2b2738e7a6b488a4d5dc..b3614752197b6c6e3c0cf53c7b718dd0167fbdea 100644 (file)
@@ -405,7 +405,6 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
                panic("Non maskable interrupt");
        console_silent();
        spin_unlock(&nmi_print_lock);
-       bust_spinlocks(0);
 
        /*
         * If we are in kernel we are probably nested up pretty bad
@@ -416,6 +415,7 @@ die_nmi(char *str, struct pt_regs *regs, int do_panic)
                crash_kexec(regs);
        }
 
+       bust_spinlocks(0);
        do_exit(SIGSEGV);
 }
 
index c356423a6026fd62123a13d6229bfa4d9a224df3..dd65143941a841de0f55a4830732be7a0fcada4b 100644 (file)
@@ -1024,7 +1024,7 @@ ENTRY(machine_check)
        RING0_INT_FRAME
        pushl $0
        CFI_ADJUST_CFA_OFFSET 4
-       pushl $do_machine_check
+       pushl machine_check_vector
        CFI_ADJUST_CFA_OFFSET 4
        jmp error_code
        CFI_ENDPROC
index 2ec2de8d8c46525a13d91a731366d5cfbce4b37b..c0262791bda40e5cd10960fb496360ca8298b879 100644 (file)
@@ -25,7 +25,7 @@
 #include <acpi/acpi_bus.h>
 #endif
 
-static int __init flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
        return 1;
 }
@@ -170,7 +170,7 @@ struct genapic apic_flat =  {
  * We cannot use logical delivery in this case because the mask
  * overflows, so use physical mode.
  */
-static int __init physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
 #ifdef CONFIG_ACPI
        /*
index e4bf2cc0d743998b069925574ff93c559f7c24f3..f6a2c8eb48a6bb1706212636246539d5f1ce64dc 100644 (file)
@@ -12,7 +12,7 @@
 
 DEFINE_PER_CPU(u32, x86_cpu_to_logical_apicid);
 
-static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
        if (cpu_has_x2apic)
                return 1;
index 8f1343df2627116e1c254f59ccd6f5525ed5f8b2..d042211768b74243f0c7b7dbfd321be707109f04 100644 (file)
@@ -19,7 +19,7 @@ static int set_x2apic_phys_mode(char *arg)
 }
 early_param("x2apic_phys", set_x2apic_phys_mode);
 
-static int __init x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
        if (cpu_has_x2apic && x2apic_phys)
                return 1;
index bfd532843df68f46b43ac822b581534bb23771ac..680a06557c5e6c255fa9ea2e5c4decc155d68a73 100644 (file)
@@ -30,7 +30,7 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
 
 static enum uv_system_type uv_system_type;
 
-static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
        if (!strcmp(oem_id, "SGI")) {
                if (!strcmp(oem_table_id, "UVL"))
index 410c88f0bfeba4c544b3f49e5db459ceb3911515..ae0c0d3bb7704605440467d26ec48eaf84faad83 100644 (file)
@@ -218,7 +218,7 @@ static void __init setup_node_to_cpumask_map(void)
        /* allocate the map */
        map = alloc_bootmem_low(nr_node_ids * sizeof(cpumask_t));
 
-       pr_debug(KERN_DEBUG "Node to cpumask map at %p for %d nodes\n",
+       pr_debug("Node to cpumask map at %p for %d nodes\n",
                 map, nr_node_ids);
 
        /* node_to_cpumask() will now work */
index 7ece815ea637497355a63ba90b218ef5536d57a0..7b1093397319766b2e4848a5a883b0dc35f49804 100644 (file)
@@ -893,9 +893,11 @@ do_rest:
                smpboot_setup_warm_reset_vector(start_ip);
                /*
                 * Be paranoid about clearing APIC errors.
-               */
-               apic_write(APIC_ESR, 0);
-               apic_read(APIC_ESR);
+               */
+               if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
+                       apic_write(APIC_ESR, 0);
+                       apic_read(APIC_ESR);
+               }
        }
 
        /*
index 8b8c0d6640fa9ba9ca7da73fac2cb4ee52e7be26..04431f34fd16f24946bb66b4eedf69ed7e51cf6f 100644 (file)
@@ -6,7 +6,7 @@
  *     This code is released under the GNU General Public License version 2 or
  *     later.
  */
-#include <linux/mc146818rtc.h>
+#include <linux/seq_file.h>
 #include <linux/proc_fs.h>
 #include <linux/kernel.h>
 
index e062974cce34265bc9f20857e3e4996c62c153c9..04d242ab0161967985bcb7f9e24f9fe54fb9f33f 100644 (file)
@@ -931,14 +931,6 @@ do_device_not_available(struct pt_regs *regs, long error)
 }
 
 #ifdef CONFIG_X86_32
-#ifdef CONFIG_X86_MCE
-dotraplinkage void __kprobes do_machine_check(struct pt_regs *regs, long error)
-{
-       conditional_sti(regs);
-       machine_check_vector(regs, error);
-}
-#endif
-
 dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
 {
        siginfo_t info;
index 9abac8a9d823656b720e81023aed96147b82d6f8..b13acb75e822e337aec4f8e8d6a094c24e30feb0 100644 (file)
@@ -248,7 +248,7 @@ clear:
  * This will be saved when ever the FP and extended state context is
  * saved on the user stack during the signal handler delivery to the user.
  */
-void prepare_fx_sw_frame(void)
+static void prepare_fx_sw_frame(void)
 {
        int size_extended = (xstate_size - sizeof(struct i387_fxsave_struct)) +
                             FP_XSTATE_MAGIC2_SIZE;
index 672e17f8262a28d3fa9a1b3c9c6a734db84693fe..9cab18b0b857e2d199d54d402c4a9dd110a58d5c 100644 (file)
@@ -61,9 +61,9 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
                                last_bad += incr;
                        } else {
                                if (start_bad) {
-                                       printk(KERN_CONT "\n  %010lx bad mem addr %010lx - %010lx reserved",
+                                       printk(KERN_CONT "\n  %016lx bad mem addr %010lx - %010lx reserved",
                                                val, start_bad, last_bad + incr);
-                                       reserve_early(start_bad, last_bad - start_bad, "BAD RAM");
+                                       reserve_early(start_bad, last_bad + incr, "BAD RAM");
                                }
                                start_bad = last_bad = start_phys_aligned;
                        }
@@ -72,9 +72,8 @@ static void __init memtest(unsigned long start_phys, unsigned long size,
        if (start_bad) {
                printk(KERN_CONT "\n  %016lx bad mem addr %010lx - %010lx reserved",
                        val, start_bad, last_bad + incr);
-               reserve_early(start_bad, last_bad - start_bad, "BAD RAM");
+               reserve_early(start_bad, last_bad + incr, "BAD RAM");
        }
-
 }
 
 /* default is disabled */
index bbb3cae57492eb793b0b9944a57cf0a08be62ff5..8cb0b360bfd83e7ae88909e3c5884f39c0191b7f 100644 (file)
@@ -1713,8 +1713,6 @@ unsigned ata_exec_internal_sg(struct ata_device *dev,
        else
                tag = 0;
 
-       if (test_and_set_bit(tag, &ap->qc_allocated))
-               BUG();
        qc = __ata_qc_from_tag(ap, tag);
 
        qc->tag = tag;
@@ -4552,37 +4550,6 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
 #endif /* __BIG_ENDIAN */
 }
 
-/**
- *     ata_qc_new - Request an available ATA command, for queueing
- *     @ap: Port associated with device @dev
- *     @dev: Device from whom we request an available command structure
- *
- *     LOCKING:
- *     None.
- */
-
-static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
-{
-       struct ata_queued_cmd *qc = NULL;
-       unsigned int i;
-
-       /* no command while frozen */
-       if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
-               return NULL;
-
-       /* the last tag is reserved for internal command. */
-       for (i = 0; i < ATA_MAX_QUEUE - 1; i++)
-               if (!test_and_set_bit(i, &ap->qc_allocated)) {
-                       qc = __ata_qc_from_tag(ap, i);
-                       break;
-               }
-
-       if (qc)
-               qc->tag = i;
-
-       return qc;
-}
-
 /**
  *     ata_qc_new_init - Request an available ATA command, and initialize it
  *     @dev: Device from whom we request an available command structure
@@ -4591,16 +4558,20 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
  *     None.
  */
 
-struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev)
+struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev, int tag)
 {
        struct ata_port *ap = dev->link->ap;
        struct ata_queued_cmd *qc;
 
-       qc = ata_qc_new(ap);
+       if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
+               return NULL;
+
+       qc = __ata_qc_from_tag(ap, tag);
        if (qc) {
                qc->scsicmd = NULL;
                qc->ap = ap;
                qc->dev = dev;
+               qc->tag = tag;
 
                ata_qc_reinit(qc);
        }
@@ -4608,31 +4579,6 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev)
        return qc;
 }
 
-/**
- *     ata_qc_free - free unused ata_queued_cmd
- *     @qc: Command to complete
- *
- *     Designed to free unused ata_queued_cmd object
- *     in case something prevents using it.
- *
- *     LOCKING:
- *     spin_lock_irqsave(host lock)
- */
-void ata_qc_free(struct ata_queued_cmd *qc)
-{
-       struct ata_port *ap = qc->ap;
-       unsigned int tag;
-
-       WARN_ON(qc == NULL);    /* ata_qc_from_tag _might_ return NULL */
-
-       qc->flags = 0;
-       tag = qc->tag;
-       if (likely(ata_tag_valid(tag))) {
-               qc->tag = ATA_TAG_POISON;
-               clear_bit(tag, &ap->qc_allocated);
-       }
-}
-
 void __ata_qc_complete(struct ata_queued_cmd *qc)
 {
        struct ata_port *ap = qc->ap;
index 5d312dc9be9ff85fde2df8b7eca8274e3181fce2..d5b9b7266c8bc9c6549acc679ec7be1b827f6f22 100644 (file)
@@ -708,7 +708,7 @@ static struct ata_queued_cmd *ata_scsi_qc_new(struct ata_device *dev,
 {
        struct ata_queued_cmd *qc;
 
-       qc = ata_qc_new_init(dev);
+       qc = ata_qc_new_init(dev, cmd->request->tag);
        if (qc) {
                qc->scsicmd = cmd;
                qc->scsidone = done;
@@ -1103,7 +1103,8 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,
 
                depth = min(sdev->host->can_queue, ata_id_queue_depth(dev->id));
                depth = min(ATA_MAX_QUEUE - 1, depth);
-               scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, depth);
+               scsi_set_tag_type(sdev, MSG_SIMPLE_TAG);
+               scsi_activate_tcq(sdev, depth);
        }
 
        return 0;
@@ -1943,6 +1944,11 @@ static unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf)
                hdr[1] |= (1 << 7);
 
        memcpy(rbuf, hdr, sizeof(hdr));
+
+       /* if ncq, set tags supported */
+       if (ata_id_has_ncq(args->id))
+               rbuf[7] |= (1 << 1);
+
        memcpy(&rbuf[8], "ATA     ", 8);
        ata_id_string(args->id, &rbuf[16], ATA_ID_PROD, 16);
        ata_id_string(args->id, &rbuf[32], ATA_ID_FW_REV, 4);
index fe2839e58774f01b86b589e3aa59a9c140e0c0d2..d3831d39bdaa09980b44d46aa2bd773cd6949f5e 100644 (file)
@@ -74,7 +74,7 @@ extern struct ata_link *ata_dev_phys_link(struct ata_device *dev);
 extern void ata_force_cbl(struct ata_port *ap);
 extern u64 ata_tf_to_lba(const struct ata_taskfile *tf);
 extern u64 ata_tf_to_lba48(const struct ata_taskfile *tf);
-extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev);
+extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev, int tag);
 extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
                           u64 block, u32 n_block, unsigned int tf_flags,
                           unsigned int tag);
@@ -103,7 +103,6 @@ extern int ata_dev_configure(struct ata_device *dev);
 extern int sata_down_spd_limit(struct ata_link *link);
 extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel);
 extern void ata_sg_clean(struct ata_queued_cmd *qc);
-extern void ata_qc_free(struct ata_queued_cmd *qc);
 extern void ata_qc_issue(struct ata_queued_cmd *qc);
 extern void __ata_qc_complete(struct ata_queued_cmd *qc);
 extern int atapi_check_dma(struct ata_queued_cmd *qc);
@@ -119,6 +118,22 @@ extern struct ata_port *ata_port_alloc(struct ata_host *host);
 extern void ata_dev_enable_pm(struct ata_device *dev, enum link_pm policy);
 extern void ata_lpm_schedule(struct ata_port *ap, enum link_pm);
 
+/**
+ *     ata_qc_free - free unused ata_queued_cmd
+ *     @qc: Command to complete
+ *
+ *     Designed to free unused ata_queued_cmd object
+ *     in case something prevents using it.
+ *
+ *     LOCKING:
+ *     spin_lock_irqsave(host lock)
+ */
+static inline void ata_qc_free(struct ata_queued_cmd *qc)
+{
+       qc->flags = 0;
+       qc->tag = ATA_TAG_POISON;
+}
+
 /* libata-acpi.c */
 #ifdef CONFIG_ATA_ACPI
 extern void ata_acpi_associate_sata_port(struct ata_port *ap);
index 8317fdef1691c0bb4c564116c8b27c75e24b561e..3d1ab8fa9accb88e341f4d66748c7cf0b09db3f0 100644 (file)
@@ -42,8 +42,9 @@ config TOUCHSCREEN_BITSY
          module will be called h3600_ts_input.
 
 config TOUCHSCREEN_CORGI
-       tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
+       tristate "SharpSL (Corgi and Spitz series) touchscreen driver (DEPRECATED)"
        depends on PXA_SHARPSL
+       select CORGI_SSP_DEPRECATED
        default y
        help
          Say Y here to enable the driver for the touchscreen on the
@@ -54,6 +55,9 @@ config TOUCHSCREEN_CORGI
          To compile this driver as a module, choose M here: the
          module will be called corgi_ts.
 
+         NOTE: this driver is deprecated, try enable SPI and generic
+         ADS7846-based touchscreen driver.
+
 config TOUCHSCREEN_FUJITSU
        tristate "Fujitsu serial touchscreen"
        select SERIO
index c7ff1e11ea853c11dc70b25079f9ccc8b943280a..e7fb7d2fcbfc4792abc91993337620a562a3323c 100644 (file)
@@ -113,11 +113,12 @@ config LEDS_GPIO
          outputs. To be useful the particular board must have LEDs
          and they must be connected to the GPIO lines.
 
-config LEDS_CM_X270
-       tristate "LED Support for the CM-X270 LEDs"
-       depends on LEDS_CLASS && MACH_ARMCORE
+config LEDS_HP_DISK
+       tristate "LED Support for disk protection LED on HP notebooks"
+       depends on LEDS_CLASS && ACPI
        help
-         This option enables support for the CM-X270 LEDs.
+         This option enable support for disk protection LED, found on
+         newer HP notebooks.
 
 config LEDS_CLEVO_MAIL
        tristate "Mail LED on Clevo notebook (EXPERIMENTAL)"
@@ -157,6 +158,13 @@ config LEDS_PCA955X
          LED driver chips accessed via the I2C bus.  Supported
          devices include PCA9550, PCA9551, PCA9552, and PCA9553.
 
+config LEDS_DA903X
+       tristate "LED Support for DA9030/DA9034 PMIC"
+       depends on LEDS_CLASS && PMIC_DA903X
+       help
+         This option enables support for on-chip LED drivers found
+         on Dialog Semiconductor DA9030/DA9034 PMICs.
+
 comment "LED Triggers"
 
 config LEDS_TRIGGERS
@@ -193,6 +201,15 @@ config LEDS_TRIGGER_HEARTBEAT
          load average.
          If unsure, say Y.
 
+config LEDS_TRIGGER_BACKLIGHT
+       tristate "LED backlight Trigger"
+       depends on LEDS_TRIGGERS
+       help
+         This allows LEDs to be controlled as a backlight device: they
+         turn off and on when the display is blanked and unblanked.
+
+         If unsure, say N.
+
 config LEDS_TRIGGER_DEFAULT_ON
        tristate "LED Default ON Trigger"
        depends on LEDS_TRIGGERS
index eb186c351a1c297d1c7bba0ffeb4f379f929afb7..e1967a29850e8b1c4ef446af8030ddfe1a547658 100644 (file)
@@ -17,14 +17,16 @@ obj-$(CONFIG_LEDS_COBALT_RAQ)               += leds-cobalt-raq.o
 obj-$(CONFIG_LEDS_SUNFIRE)             += leds-sunfire.o
 obj-$(CONFIG_LEDS_PCA9532)             += leds-pca9532.o
 obj-$(CONFIG_LEDS_GPIO)                        += leds-gpio.o
-obj-$(CONFIG_LEDS_CM_X270)              += leds-cm-x270.o
 obj-$(CONFIG_LEDS_CLEVO_MAIL)          += leds-clevo-mail.o
 obj-$(CONFIG_LEDS_HP6XX)               += leds-hp6xx.o
 obj-$(CONFIG_LEDS_FSG)                 += leds-fsg.o
 obj-$(CONFIG_LEDS_PCA955X)             += leds-pca955x.o
+obj-$(CONFIG_LEDS_DA903X)              += leds-da903x.o
+obj-$(CONFIG_LEDS_HP_DISK)             += leds-hp-disk.o
 
 # LED Triggers
 obj-$(CONFIG_LEDS_TRIGGER_TIMER)       += ledtrig-timer.o
 obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK)    += ledtrig-ide-disk.o
 obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT)   += ledtrig-heartbeat.o
+obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT)   += ledtrig-backlight.o
 obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON)  += ledtrig-default-on.o
index ee74ee7b2accab837fc43c0c8cda523795bed5ce..6c4a326176d7be57d724d994a7ff5e971f50dc93 100644 (file)
@@ -34,14 +34,11 @@ static ssize_t led_brightness_show(struct device *dev,
                struct device_attribute *attr, char *buf)
 {
        struct led_classdev *led_cdev = dev_get_drvdata(dev);
-       ssize_t ret = 0;
 
        /* no lock needed for this */
        led_update_brightness(led_cdev);
-       sprintf(buf, "%u\n", led_cdev->brightness);
-       ret = strlen(buf) + 1;
 
-       return ret;
+       return sprintf(buf, "%u\n", led_cdev->brightness);
 }
 
 static ssize_t led_brightness_store(struct device *dev,
@@ -113,6 +110,9 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
        if (rc)
                goto err_out;
 
+#ifdef CONFIG_LEDS_TRIGGERS
+       init_rwsem(&led_cdev->trigger_lock);
+#endif
        /* add to the list of leds */
        down_write(&leds_list_lock);
        list_add_tail(&led_cdev->node, &leds_list);
@@ -121,8 +121,6 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
        led_update_brightness(led_cdev);
 
 #ifdef CONFIG_LEDS_TRIGGERS
-       init_rwsem(&led_cdev->trigger_lock);
-
        rc = device_create_file(led_cdev->dev, &dev_attr_trigger);
        if (rc)
                goto err_out_led_list;
@@ -147,7 +145,7 @@ err_out:
 EXPORT_SYMBOL_GPL(led_classdev_register);
 
 /**
- * __led_classdev_unregister - unregisters a object of led_properties class.
+ * led_classdev_unregister - unregisters a object of led_properties class.
  * @led_cdev: the led device to unregister
  *
  * Unregisters a previously registered via led_classdev_register object.
index 32c98b2efa3fe4d120d497389703d6795ae470b3..1bd590bb3a6e8edce5aae8b672da8fe2a89bdb8a 100644 (file)
@@ -107,27 +107,27 @@ static int ams_delta_led_resume(struct platform_device *dev)
 
 static int ams_delta_led_probe(struct platform_device *pdev)
 {
-       int i;
-       int ret;
+       int i, ret;
 
-       for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) {
+       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) {
                ret = led_classdev_register(&pdev->dev,
                                &ams_delta_leds[i].cdev);
+               if (ret < 0)
+                       goto fail;
        }
 
-       if (ret < 0 && i > 1) {
-               for (i = i - 2; i >= 0; i--)
-                       led_classdev_unregister(&ams_delta_leds[i].cdev);
-       }
-
-       return ret;
+       return 0;
+fail:
+       while (--i >= 0)
+               led_classdev_unregister(&ams_delta_leds[i].cdev);
+       return ret;     
 }
 
 static int ams_delta_led_remove(struct platform_device *pdev)
 {
        int i;
 
-       for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--)
+       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--)
                led_classdev_unregister(&ams_delta_leds[i].cdev);
 
        return 0;
diff --git a/drivers/leds/leds-cm-x270.c b/drivers/leds/leds-cm-x270.c
deleted file mode 100644 (file)
index 836a43d..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * drivers/leds/leds-cm-x270.c
- *
- * Copyright 2007 CompuLab Ltd.
- * Author: Mike Rapoport <mike@compulab.co.il>
- *
- * Based on leds-corgi.c
- * Author: Richard Purdie <rpurdie@openedhand.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-
-#include <mach/hardware.h>
-#include <mach/pxa-regs.h>
-
-#define GPIO_RED_LED                   (93)
-#define GPIO_GREEN_LED                 (94)
-
-static void cmx270_red_set(struct led_classdev *led_cdev,
-                          enum led_brightness value)
-{
-       if (value)
-               GPCR(GPIO_RED_LED) = GPIO_bit(GPIO_RED_LED);
-       else
-               GPSR(GPIO_RED_LED) = GPIO_bit(GPIO_RED_LED);
-}
-
-static void cmx270_green_set(struct led_classdev *led_cdev,
-                            enum led_brightness value)
-{
-       if (value)
-               GPCR(GPIO_GREEN_LED) = GPIO_bit(GPIO_GREEN_LED);
-       else
-               GPSR(GPIO_GREEN_LED) = GPIO_bit(GPIO_GREEN_LED);
-}
-
-static struct led_classdev cmx270_red_led = {
-       .name                   = "cm-x270:red",
-       .default_trigger        = "nand-disk",
-       .brightness_set         = cmx270_red_set,
-};
-
-static struct led_classdev cmx270_green_led = {
-       .name                   = "cm-x270:green",
-       .default_trigger        = "heartbeat",
-       .brightness_set         = cmx270_green_set,
-};
-
-#ifdef CONFIG_PM
-static int cmx270led_suspend(struct platform_device *dev, pm_message_t state)
-{
-       led_classdev_suspend(&cmx270_red_led);
-       led_classdev_suspend(&cmx270_green_led);
-       return 0;
-}
-
-static int cmx270led_resume(struct platform_device *dev)
-{
-       led_classdev_resume(&cmx270_red_led);
-       led_classdev_resume(&cmx270_green_led);
-       return 0;
-}
-#endif
-
-static int cmx270led_probe(struct platform_device *pdev)
-{
-       int ret;
-
-       ret = led_classdev_register(&pdev->dev, &cmx270_red_led);
-       if (ret < 0)
-               return ret;
-
-       ret = led_classdev_register(&pdev->dev, &cmx270_green_led);
-       if (ret < 0)
-               led_classdev_unregister(&cmx270_red_led);
-
-       return ret;
-}
-
-static int cmx270led_remove(struct platform_device *pdev)
-{
-       led_classdev_unregister(&cmx270_red_led);
-       led_classdev_unregister(&cmx270_green_led);
-       return 0;
-}
-
-static struct platform_driver cmx270led_driver = {
-       .probe          = cmx270led_probe,
-       .remove         = cmx270led_remove,
-#ifdef CONFIG_PM
-       .suspend        = cmx270led_suspend,
-       .resume         = cmx270led_resume,
-#endif
-       .driver         = {
-               .name           = "cm-x270-led",
-               .owner          = THIS_MODULE,
-       },
-};
-
-static int __init cmx270led_init(void)
-{
-       return platform_driver_register(&cmx270led_driver);
-}
-
-static void __exit cmx270led_exit(void)
-{
-       platform_driver_unregister(&cmx270led_driver);
-}
-
-module_init(cmx270led_init);
-module_exit(cmx270led_exit);
-
-MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
-MODULE_DESCRIPTION("CM-x270 LED driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:cm-x270-led");
diff --git a/drivers/leds/leds-da903x.c b/drivers/leds/leds-da903x.c
new file mode 100644 (file)
index 0000000..f1fddb1
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * LEDs driver for Dialog Semiconductor DA9030/DA9034
+ *
+ * Copyright (C) 2008 Compulab, Ltd.
+ *     Mike Rapoport <mike@compulab.co.il>
+ *
+ * Copyright (C) 2006-2008 Marvell International Ltd.
+ *     Eric Miao <eric.miao@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/mfd/da903x.h>
+
+#define DA9030_LED1_CONTROL    0x20
+#define DA9030_LED2_CONTROL    0x21
+#define DA9030_LED3_CONTROL    0x22
+#define DA9030_LED4_CONTROL    0x23
+#define DA9030_LEDPC_CONTROL   0x24
+#define DA9030_MISC_CONTROL_A  0x26    /* Vibrator Control */
+
+#define DA9034_LED1_CONTROL    0x35
+#define DA9034_LED2_CONTROL    0x36
+#define DA9034_VIBRA           0x40
+
+struct da903x_led {
+       struct led_classdev     cdev;
+       struct work_struct      work;
+       struct device           *master;
+       enum led_brightness     new_brightness;
+       int                     id;
+       int                     flags;
+};
+
+#define DA9030_LED_OFFSET(id)  ((id) - DA9030_ID_LED_1)
+#define DA9034_LED_OFFSET(id)  ((id) - DA9034_ID_LED_1)
+
+static void da903x_led_work(struct work_struct *work)
+{
+       struct da903x_led *led = container_of(work, struct da903x_led, work);
+       uint8_t val;
+       int offset;
+
+       switch (led->id) {
+       case DA9030_ID_LED_1:
+       case DA9030_ID_LED_2:
+       case DA9030_ID_LED_3:
+       case DA9030_ID_LED_4:
+       case DA9030_ID_LED_PC:
+               offset = DA9030_LED_OFFSET(led->id);
+               val = led->flags & ~0x87;
+               val |= (led->new_brightness) ? 0x80 : 0; /* EN bit */
+               val |= (led->new_brightness >> 5) & 0x7; /* PWM<2:0> */
+               da903x_write(led->master, DA9030_LED1_CONTROL + offset, val);
+               break;
+       case DA9030_ID_VIBRA:
+               val = led->flags & ~0x80;
+               val |= (led->new_brightness) ? 0x80 : 0; /* EN bit */
+               da903x_write(led->master, DA9030_MISC_CONTROL_A, val);
+               break;
+       case DA9034_ID_LED_1:
+       case DA9034_ID_LED_2:
+               offset = DA9034_LED_OFFSET(led->id);
+               val = (led->new_brightness * 0x5f / LED_FULL) & 0x7f;
+               val |= (led->flags & DA9034_LED_RAMP) ? 0x80 : 0;
+               da903x_write(led->master, DA9034_LED1_CONTROL + offset, val);
+               break;
+       case DA9034_ID_VIBRA:
+               val = led->new_brightness & 0xfe;
+               da903x_write(led->master, DA9034_VIBRA, val);
+               break;
+       }
+}
+
+static void da903x_led_set(struct led_classdev *led_cdev,
+                          enum led_brightness value)
+{
+       struct da903x_led *led;
+       
+       led = container_of(led_cdev, struct da903x_led, cdev);
+       led->new_brightness = value;
+       schedule_work(&led->work);
+}
+
+static int __devinit da903x_led_probe(struct platform_device *pdev)
+{
+       struct led_info *pdata = pdev->dev.platform_data;
+       struct da903x_led *led;
+       int id, ret;
+
+       if (pdata == NULL)
+               return 0;
+
+       id = pdev->id;
+
+       if (!((id >= DA9030_ID_LED_1 && id <= DA9030_ID_VIBRA) ||
+             (id >= DA9034_ID_LED_1 && id <= DA9034_ID_VIBRA))) {
+               dev_err(&pdev->dev, "invalid LED ID (%d) specified\n", id);
+               return -EINVAL;
+       }
+
+       led = kzalloc(sizeof(struct da903x_led), GFP_KERNEL);
+       if (led == NULL) {
+               dev_err(&pdev->dev, "failed to alloc memory for LED%d\n", id);
+               return -ENOMEM;
+       }
+
+       led->cdev.name = pdata->name;
+       led->cdev.default_trigger = pdata->default_trigger;
+       led->cdev.brightness_set = da903x_led_set;
+       led->cdev.brightness = LED_OFF;
+
+       led->id = id;
+       led->flags = pdata->flags;
+       led->master = pdev->dev.parent;
+       led->new_brightness = LED_OFF;
+
+       INIT_WORK(&led->work, da903x_led_work);
+
+       ret = led_classdev_register(led->master, &led->cdev);
+       if (ret) {
+               dev_err(&pdev->dev, "failed to register LED %d\n", id);
+               goto err;
+       }
+
+       platform_set_drvdata(pdev, led);
+       return 0;
+
+err:
+       kfree(led);
+       return ret;
+}
+
+static int __devexit da903x_led_remove(struct platform_device *pdev)
+{
+       struct da903x_led *led = platform_get_drvdata(pdev);
+
+       led_classdev_unregister(&led->cdev);
+       kfree(led);
+       return 0;
+}
+
+static struct platform_driver da903x_led_driver = {
+       .driver = {
+               .name   = "da903x-led",
+               .owner  = THIS_MODULE,
+       },
+       .probe          = da903x_led_probe,
+       .remove         = __devexit_p(da903x_led_remove),
+};
+
+static int __init da903x_led_init(void)
+{
+       return platform_driver_register(&da903x_led_driver);
+}
+module_init(da903x_led_init);
+
+static void __exit da903x_led_exit(void)
+{
+       platform_driver_unregister(&da903x_led_driver);
+}
+module_exit(da903x_led_exit);
+
+MODULE_DESCRIPTION("LEDs driver for Dialog Semiconductor DA9030/DA9034");
+MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>"
+             "Mike Rapoport <mike@compulab.co.il>");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:da903x-led");
diff --git a/drivers/leds/leds-hp-disk.c b/drivers/leds/leds-hp-disk.c
new file mode 100644 (file)
index 0000000..53a25b1
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ *  leds-hp-disk.c - driver for HP "hard disk protection" LED
+ *
+ *  Copyright (C) 2008 Pavel Machek
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/dmi.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/platform_device.h>
+#include <linux/interrupt.h>
+#include <linux/input.h>
+#include <linux/kthread.h>
+#include <linux/version.h>
+#include <linux/leds.h>
+#include <acpi/acpi_drivers.h>
+
+#define DRIVER_NAME     "leds-hp-disk"
+#define ACPI_MDPS_CLASS "led"
+
+/* For automatic insertion of the module */
+static struct acpi_device_id hpled_device_ids[] = {
+       {"HPQ0004", 0}, /* HP Mobile Data Protection System PNP */
+       {"", 0},
+};
+MODULE_DEVICE_TABLE(acpi, hpled_device_ids);
+
+struct acpi_hpled {
+       struct acpi_device      *device;   /* The ACPI device */
+};
+
+static struct acpi_hpled adev;
+
+static acpi_status hpled_acpi_write(acpi_handle handle, int reg)
+{
+       unsigned long ret; /* Not used when writing */
+       union acpi_object in_obj[1];
+       struct acpi_object_list args = { 1, in_obj };
+
+       in_obj[0].type          = ACPI_TYPE_INTEGER;
+       in_obj[0].integer.value = reg;
+
+       return acpi_evaluate_integer(handle, "ALED", &args, &ret);
+}
+
+static void hpled_set(struct led_classdev *led_cdev,
+                              enum led_brightness value)
+{
+       hpled_acpi_write(adev.device->handle, !!value);
+}
+
+static struct led_classdev hpled_led = {
+       .name                   = "hp:red:hddprotection",
+       .default_trigger        = "heartbeat",
+       .brightness_set         = hpled_set,
+};
+
+#ifdef CONFIG_PM
+static int hpled_suspend(struct acpi_device *dev, pm_message_t state)
+{
+       led_classdev_suspend(&hpled_led);
+       return 0;
+}
+
+static int hpled_resume(struct acpi_device *dev)
+{
+       led_classdev_resume(&hpled_led);
+       return 0;
+}
+#else
+#define hpled_suspend NULL
+#define hpled_resume NULL
+#endif
+
+static int hpled_add(struct acpi_device *device)
+{
+       int ret;
+
+       if (!device)
+               return -EINVAL;
+
+       adev.device = device;
+       strcpy(acpi_device_name(device), DRIVER_NAME);
+       strcpy(acpi_device_class(device), ACPI_MDPS_CLASS);
+       device->driver_data = &adev;
+
+       ret = led_classdev_register(NULL, &hpled_led);
+       return ret;
+}
+
+static int hpled_remove(struct acpi_device *device, int type)
+{
+       if (!device)
+               return -EINVAL;
+
+       led_classdev_unregister(&hpled_led);
+       return 0;
+}
+
+
+
+static struct acpi_driver leds_hp_driver = {
+       .name  = DRIVER_NAME,
+       .class = ACPI_MDPS_CLASS,
+       .ids   = hpled_device_ids,
+       .ops = {
+               .add     = hpled_add,
+               .remove  = hpled_remove,
+               .suspend = hpled_suspend,
+               .resume  = hpled_resume,
+       }
+};
+
+static int __init hpled_init_module(void)
+{
+       int ret;
+
+       if (acpi_disabled)
+               return -ENODEV;
+
+       ret = acpi_bus_register_driver(&leds_hp_driver);
+       if (ret < 0)
+               return ret;
+
+       printk(KERN_INFO DRIVER_NAME " driver loaded.\n");
+
+       return 0;
+}
+
+static void __exit hpled_exit_module(void)
+{
+       acpi_bus_unregister_driver(&leds_hp_driver);
+}
+
+MODULE_DESCRIPTION("Driver for HP disk protection LED");
+MODULE_AUTHOR("Pavel Machek <pavel@suse.cz>");
+MODULE_LICENSE("GPL");
+
+module_init(hpled_init_module);
+module_exit(hpled_exit_module);
index f508729123b54795480eb1ec25092107fd4f4857..4e2d1a42b48f41ed4ae0bcabfb672fec5b7e0600 100644 (file)
@@ -226,7 +226,7 @@ static void pca955x_led_work(struct work_struct *work)
        pca955x_write_ls(pca955x->client, chip_ls, ls);
 }
 
-void pca955x_led_set(struct led_classdev *led_cdev, enum led_brightness value)
+static void pca955x_led_set(struct led_classdev *led_cdev, enum led_brightness value)
 {
        struct pca955x_led *pca955x;
 
index 7ac61a7b56ad9b5d62a035f05f530a567c5deacb..2f3aa87f2a1f60d86ab7c7d4ada902462c992ed2 100644 (file)
@@ -53,8 +53,9 @@ static void wrap_extra_led_set(struct led_classdev *led_cdev,
 }
 
 static struct led_classdev wrap_power_led = {
-       .name           = "wrap::power",
-       .brightness_set = wrap_power_led_set,
+       .name                   = "wrap::power",
+       .brightness_set         = wrap_power_led_set,
+       .default_trigger        = "default-on",
 };
 
 static struct led_classdev wrap_error_led = {
diff --git a/drivers/leds/ledtrig-backlight.c b/drivers/leds/ledtrig-backlight.c
new file mode 100644 (file)
index 0000000..d3dfcfb
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Backlight emulation LED trigger
+ *
+ * Copyright 2008 (C) Rodolfo Giometti <giometti@linux.it>
+ * Copyright 2008 (C) Eurotech S.p.A. <info@eurotech.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/fb.h>
+#include <linux/leds.h>
+#include "leds.h"
+
+#define BLANK          1
+#define UNBLANK                0
+
+struct bl_trig_notifier {
+       struct led_classdev *led;
+       int brightness;
+       int old_status;
+       struct notifier_block notifier;
+};
+
+static int fb_notifier_callback(struct notifier_block *p,
+                               unsigned long event, void *data)
+{
+       struct bl_trig_notifier *n = container_of(p,
+                                       struct bl_trig_notifier, notifier);
+       struct led_classdev *led = n->led;
+       struct fb_event *fb_event = data;
+       int *blank = fb_event->data;
+
+       switch (event) {
+       case FB_EVENT_BLANK :
+               if (*blank && n->old_status == UNBLANK) {
+                       n->brightness = led->brightness;
+                       led_set_brightness(led, LED_OFF);
+                       n->old_status = BLANK;
+               } else if (!*blank && n->old_status == BLANK) {
+                       led_set_brightness(led, n->brightness);
+                       n->old_status = UNBLANK;
+               }
+               break;
+       }
+
+       return 0;
+}
+
+static void bl_trig_activate(struct led_classdev *led)
+{
+       int ret;
+
+       struct bl_trig_notifier *n;
+
+       n = kzalloc(sizeof(struct bl_trig_notifier), GFP_KERNEL);
+       led->trigger_data = n;
+       if (!n) {
+               dev_err(led->dev, "unable to allocate backlight trigger\n");
+               return;
+       }
+
+       n->led = led;
+       n->brightness = led->brightness;
+       n->old_status = UNBLANK;
+       n->notifier.notifier_call = fb_notifier_callback;
+
+       ret = fb_register_client(&n->notifier);
+       if (ret)
+               dev_err(led->dev, "unable to register backlight trigger\n");
+}
+
+static void bl_trig_deactivate(struct led_classdev *led)
+{
+       struct bl_trig_notifier *n =
+               (struct bl_trig_notifier *) led->trigger_data;
+
+       if (n) {
+               fb_unregister_client(&n->notifier);
+               kfree(n);
+       }
+}
+
+static struct led_trigger bl_led_trigger = {
+       .name           = "backlight",
+       .activate       = bl_trig_activate,
+       .deactivate     = bl_trig_deactivate
+};
+
+static int __init bl_trig_init(void)
+{
+       return led_trigger_register(&bl_led_trigger);
+}
+
+static void __exit bl_trig_exit(void)
+{
+       led_trigger_unregister(&bl_led_trigger);
+}
+
+module_init(bl_trig_init);
+module_exit(bl_trig_exit);
+
+MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
+MODULE_DESCRIPTION("Backlight emulation LED trigger");
+MODULE_LICENSE("GPL v2");
index 5c99f4f0c69214f101a519c9c190d57aae64e317..db681962d7bb14742d53dea274ea3c49e424b6dd 100644 (file)
@@ -70,9 +70,7 @@ static ssize_t led_delay_on_show(struct device *dev,
        struct led_classdev *led_cdev = dev_get_drvdata(dev);
        struct timer_trig_data *timer_data = led_cdev->trigger_data;
 
-       sprintf(buf, "%lu\n", timer_data->delay_on);
-
-       return strlen(buf) + 1;
+       return sprintf(buf, "%lu\n", timer_data->delay_on);
 }
 
 static ssize_t led_delay_on_store(struct device *dev,
@@ -116,9 +114,7 @@ static ssize_t led_delay_off_show(struct device *dev,
        struct led_classdev *led_cdev = dev_get_drvdata(dev);
        struct timer_trig_data *timer_data = led_cdev->trigger_data;
 
-       sprintf(buf, "%lu\n", timer_data->delay_off);
-
-       return strlen(buf) + 1;
+       return sprintf(buf, "%lu\n", timer_data->delay_off);
 }
 
 static ssize_t led_delay_off_store(struct device *dev,
index 9f9354fd35160f8a55515437d703973cc5f7323d..d62fd4f6b52e054db684e2af1e30ac12fa3a9240 100644 (file)
@@ -1760,10 +1760,9 @@ mptscsih_get_tm_timeout(MPT_ADAPTER *ioc)
        case FC:
                return 40;
        case SAS:
-               return 10;
        case SPI:
        default:
-               return 2;
+               return 10;
        }
 }
 
index b92c19bb6876971bf042c9f0e8e372e6bd5e91ef..5311317c2e4cafd10d1382f93b41ed3f6a9baf08 100644 (file)
@@ -1924,12 +1924,9 @@ static void twa_scsiop_execute_scsi_complete(TW_Device_Extension *tw_dev, int re
            (cmd->sc_data_direction == DMA_FROM_DEVICE ||
             cmd->sc_data_direction == DMA_BIDIRECTIONAL)) {
                if (scsi_sg_count(cmd) == 1) {
-                       unsigned long flags;
                        void *buf = tw_dev->generic_buffer_virt[request_id];
 
-                       local_irq_save(flags);
                        scsi_sg_copy_from_buffer(cmd, buf, TW_SECTOR_SIZE);
-                       local_irq_restore(flags);
                }
        }
 } /* End twa_scsiop_execute_scsi_complete() */
index a0537f09aa216a3d41f7e92a518e8bae3cf8d05a..c03f1d2c9e2ec1f08e1f37d1ab389bc68d517fc6 100644 (file)
@@ -1466,12 +1466,7 @@ static int tw_scsiop_inquiry(TW_Device_Extension *tw_dev, int request_id)
 static void tw_transfer_internal(TW_Device_Extension *tw_dev, int request_id,
                                 void *data, unsigned int len)
 {
-       struct scsi_cmnd *cmd = tw_dev->srb[request_id];
-       unsigned long flags;
-
-       local_irq_save(flags);
-       scsi_sg_copy_from_buffer(cmd, data, len);
-       local_irq_restore(flags);
+       scsi_sg_copy_from_buffer(tw_dev->srb[request_id], data, len);
 }
 
 /* This function is called by the isr to complete an inquiry command */
index cca16fc5b4ad746a0ec02fedb575eea6dbc7df90..0666c22ab55b60934e815e35fc37edea6ef4eac5 100644 (file)
@@ -79,6 +79,17 @@ VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $"
                mvi     SEQINTCODE, code;                               \
        }
 
+/*
+ * Registers marked "dont_generate_debug_code" are not (yet) referenced
+ * from the driver code, and this keyword inhibit generation
+ * of debug code for them.
+ *
+ * REG_PRETTY_PRINT config will complain if dont_generate_debug_code
+ * is added to the register which is referenced in the driver.
+ * Unreferenced register with no dont_generate_debug_code will result
+ * in dead code. No warning is issued.
+ */
+
 /*
  * Mode Pointer
  * Controls which of the 5, 512byte, address spaces should be used
@@ -91,6 +102,7 @@ register MODE_PTR {
        field   DST_MODE        0x70
        field   SRC_MODE        0x07
        mode_pointer
+       dont_generate_debug_code
 }
 
 const SRC_MODE_SHIFT   0
@@ -190,6 +202,7 @@ register SEQINTCODE {
                SAW_HWERR,
                BAD_SCB_STATUS
        }
+       dont_generate_debug_code
 }
 
 /*
@@ -207,6 +220,7 @@ register CLRINT {
        field   CLRSEQINT       0x04
        field   CLRCMDINT       0x02
        field   CLRSPLTINT      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -222,6 +236,7 @@ register ERROR {
        field   SQPARERR        0x08
        field   ILLOPCODE       0x04
        field   DSCTMOUT        0x02
+       dont_generate_debug_code
 }
 
 /*
@@ -255,6 +270,7 @@ register HCNTRL {
        field   INTEN           0x02
        field   CHIPRST         0x01
        field   CHIPRSTACK      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -265,6 +281,7 @@ register HNSCB_QOFF {
        access_mode     RW
        size            2
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -274,6 +291,7 @@ register HESCB_QOFF {
        address                 0x008
        access_mode     RW
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -311,6 +329,7 @@ register CLRSEQINTSTAT {
        field   CLRSEQ_SCSIINT  0x04
        field   CLRSEQ_PCIINT   0x02
        field   CLRSEQ_SPLTINT  0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -320,6 +339,7 @@ register SWTIMER {
        address                 0x00E
        access_mode     RW
        size            2
+       dont_generate_debug_code
 }
 
 /*
@@ -330,6 +350,7 @@ register SNSCB_QOFF {
        access_mode     RW
        size            2
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -340,6 +361,7 @@ register SESCB_QOFF {
        count           2
        access_mode     RW
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -350,6 +372,7 @@ register SDSCB_QOFF {
        access_mode     RW
        modes           M_CCHAN
        size            2
+       dont_generate_debug_code
 }
 
 /*
@@ -378,6 +401,7 @@ register QOFF_CTLSTA {
                SCB_QSIZE_8192,
                SCB_QSIZE_16384
        }
+       dont_generate_debug_code
 }
 
 /*
@@ -431,6 +455,7 @@ register DSCOMMAND0 {
        field   EXTREQLCK       0x10    /* External Request Lock */
        field   DISABLE_TWATE   0x02    /* Rev B or greater */
        field   CIOPARCKEN      0x01    /* Internal bus parity error enable */
+       dont_generate_debug_code
 }
 
 /*
@@ -459,6 +484,7 @@ register SG_CACHE_PRE {
        field   SG_ADDR_MASK    0xf8
        field   ODD_SEG         0x04
        field   LAST_SEG        0x02
+       dont_generate_debug_code
 }
 
 register SG_CACHE_SHADOW {
@@ -491,6 +517,7 @@ register HADDR {
        access_mode     RW
        size            8
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -522,6 +549,7 @@ register HCNT {
        access_mode     RW
        size            3
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -551,6 +579,7 @@ register SGHADDR {
        access_mode     RW
        size            8
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -561,6 +590,7 @@ register SCBHADDR {
        access_mode     RW
        size            8
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -570,6 +600,7 @@ register SGHCNT {
        address                 0x084
        access_mode     RW
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -579,6 +610,7 @@ register SCBHCNT {
        address                 0x084
        access_mode     RW
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -609,6 +641,7 @@ register DFF_THRSH {
                RD_DFTHRSH_90,
                RD_DFTHRSH_MAX
        }
+       dont_generate_debug_code
 }
 
 /*
@@ -817,6 +850,7 @@ register PCIXCTL {
        field   SRSPDPEEN       0x04
        field   TSCSERREN       0x02
        field   CMPABCDIS       0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -863,6 +897,7 @@ register DCHSPLTSTAT0 {
        field   RXOVRUN         0x04
        field   RXSCEMSG        0x02
        field   RXSPLTRSP       0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -908,6 +943,7 @@ register DCHSPLTSTAT1 {
        modes           M_DFF0, M_DFF1
        count           2
        field   RXDATABUCKET    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1069,6 +1105,7 @@ register SGSPLTSTAT0 {
        field   RXOVRUN         0x04
        field   RXSCEMSG        0x02
        field   RXSPLTRSP       0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1080,6 +1117,7 @@ register SGSPLTSTAT1 {
        modes           M_DFF0, M_DFF1
        count           2
        field   RXDATABUCKET    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1091,6 +1129,7 @@ register SFUNCT {
        modes           M_CFG
        field   TEST_GROUP      0xF0
        field   TEST_NUM        0x0F
+       dont_generate_debug_code
 }
 
 /*
@@ -1109,6 +1148,7 @@ register DF0PCISTAT {
        field   RDPERR          0x04
        field   TWATERR         0x02
        field   DPR             0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1204,6 +1244,7 @@ register TARGPCISTAT {
        field   SSE             0x40
        field   STA             0x08
        field   TWATERR         0x02
+       dont_generate_debug_code
 }
 
 /*
@@ -1216,6 +1257,7 @@ register LQIN {
        size            20
        count           2
        modes           M_DFF0, M_DFF1, M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -1247,6 +1289,7 @@ register LUNPTR {
        access_mode     RW
        modes           M_CFG
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -1278,6 +1321,7 @@ register CMDLENPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1290,6 +1334,7 @@ register ATTRPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1302,6 +1347,7 @@ register FLAGPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1313,6 +1359,7 @@ register CMDPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1324,6 +1371,7 @@ register QNEXTPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1347,6 +1395,7 @@ register ABRTBYTEPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1358,6 +1407,7 @@ register ABRTBITPTR {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1398,6 +1448,7 @@ register LUNLEN {
        count           2
        mask            ILUNLEN 0x0F
        mask            TLUNLEN 0xF0
+       dont_generate_debug_code
 }
 const LUNLEN_SINGLE_LEVEL_LUN 0xF
 
@@ -1410,6 +1461,7 @@ register CDBLIMIT {
        access_mode     RW
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -1422,6 +1474,7 @@ register MAXCMD {
        access_mode     RW
        modes           M_CFG
        count           9
+       dont_generate_debug_code
 }
 
 /*
@@ -1432,6 +1485,7 @@ register MAXCMDCNT {
        address                 0x033
        access_mode     RW
        modes           M_CFG
+       dont_generate_debug_code
 }
 
 /*
@@ -1490,6 +1544,7 @@ register LQCTL1 {
        field   PCI2PCI         0x04
        field   SINGLECMD       0x02
        field   ABORTPENDING    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1508,6 +1563,7 @@ register LQCTL2 {
        field   LQOCONTINUE     0x04
        field   LQOTOIDLE       0x02
        field   LQOPAUSE        0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1578,6 +1634,7 @@ register SXFRCTL0 {
        field   DFPEXP          0x40
        field   BIOSCANCELEN    0x10
        field   SPIOEN          0x08
+       dont_generate_debug_code
 }
 
 /*
@@ -1594,6 +1651,7 @@ register SXFRCTL1 {
        field   ENSTIMER        0x04
        field   ACTNEGEN        0x02
        field   STPWEN          0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1696,6 +1754,7 @@ register SCSISIGO {
                P_STATUS        CDO|IOO,
                P_MESGIN        CDO|IOO|MSGO
        }
+       dont_generate_debug_code
 }
 
 /*
@@ -1738,6 +1797,7 @@ register MULTARGID {
        modes           M_CFG
        size            2
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -1774,6 +1834,7 @@ register SCSIDAT {
        access_mode     RW
        modes           M_DFF0, M_DFF1, M_SCSI
        size            2
+       dont_generate_debug_code
 }
 
 /*
@@ -1796,6 +1857,7 @@ register TARGIDIN {
        count           2
        field   CLKOUT          0x80
        field   TARGID          0x0F
+       dont_generate_debug_code
 }
 
 /*
@@ -1825,6 +1887,7 @@ register SBLKCTL {
        field   ENAB40          0x08    /* LVD transceiver active */
        field   ENAB20          0x04    /* SE/HVD transceiver active */
        field   SELWIDE         0x02
+       dont_generate_debug_code
 }
 
 /*
@@ -1842,6 +1905,7 @@ register OPTIONMODE {
        field   ENDGFORMCHK             0x04
        field   AUTO_MSGOUT_DE          0x02
        mask    OPTIONMODE_DEFAULTS     AUTO_MSGOUT_DE
+       dont_generate_debug_code
 }
 
 /*
@@ -1876,6 +1940,7 @@ register CLRSINT0 {
        field   CLROVERRUN      0x04
        field   CLRSPIORDY      0x02
        field   CLRARBDO        0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1929,6 +1994,7 @@ register CLRSINT1 {
        field   CLRSCSIPERR     0x04
        field   CLRSTRB2FAST    0x02
        field   CLRREQINIT      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -1962,6 +2028,7 @@ register CLRSINT2 {
        field   CLRWIDE_RES     0x04    /* Modes 0 and 1 only */
        field   CLRSDONE        0x02    /* Modes 0 and 1 only */
        field   CLRDMADONE      0x01    /* Modes 0 and 1 only */
+       dont_generate_debug_code
 }
 
 /*
@@ -2002,6 +2069,7 @@ register LQISTATE {
        access_mode     RO
        modes           M_CFG
        count           6
+       dont_generate_debug_code
 }
 
 /*
@@ -2022,6 +2090,7 @@ register LQOSTATE {
        access_mode     RO
        modes           M_CFG
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -2054,6 +2123,7 @@ register CLRLQIINT0 {
        field   CLRLQIBADLQT    0x04
        field   CLRLQIATNLQ     0x02
        field   CLRLQIATNCMD    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2070,6 +2140,7 @@ register LQIMODE0 {
        field   ENLQIBADLQT     0x04
        field   ENLQIATNLQ      0x02
        field   ENLQIATNCMD     0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2106,6 +2177,7 @@ register CLRLQIINT1 {
        field   CLRLQIBADLQI    0x04
        field   CLRLQIOVERI_LQ  0x02
        field   CLRLQIOVERI_NLQ 0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2124,6 +2196,7 @@ register LQIMODE1 {
        field   ENLQIBADLQI     0x04
        field   ENLQIOVERI_LQ   0x02    /* LQIOVERI1 */
        field   ENLQIOVERI_NLQ  0x01    /* LQIOVERI2 */
+       dont_generate_debug_code
 }
 
 /*
@@ -2165,6 +2238,7 @@ register CLRSINT3 {
        count           3
        field   CLRNTRAMPERR    0x02
        field   CLROSRAMPERR    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2177,6 +2251,7 @@ register SIMODE3 {
        count           4
        field   ENNTRAMPERR     0x02
        field   ENOSRAMPERR     0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2207,6 +2282,7 @@ register CLRLQOINT0 {
        field   CLRLQOATNLQ             0x04
        field   CLRLQOATNPKT            0x02
        field   CLRLQOTCRC              0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2222,6 +2298,7 @@ register LQOMODE0 {
        field   ENLQOATNLQ              0x04
        field   ENLQOATNPKT             0x02
        field   ENLQOTCRC               0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2251,6 +2328,7 @@ register CLRLQOINT1 {
        field   CLRLQOBADQAS            0x04
        field   CLRLQOBUSFREE           0x02
        field   CLRLQOPHACHGINPKT       0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2266,6 +2344,7 @@ register LQOMODE1 {
        field   ENLQOBADQAS             0x04
        field   ENLQOBUSFREE            0x02
        field   ENLQOPHACHGINPKT        0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2289,6 +2368,7 @@ register OS_SPACE_CNT {
        access_mode     RO
        modes           M_CFG
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -2318,6 +2398,7 @@ register GSFIFO {
        access_mode     RO
        size            2
        modes           M_DFF0, M_DFF1, M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2341,6 +2422,7 @@ register NEXTSCB {
        access_mode     RW
        size            2
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2357,6 +2439,7 @@ register LQOSCSCTL {
        field           LQOBUSETDLY     0x40
        field           LQONOHOLDLACK   0x02
        field           LQONOCHKOVER    0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2389,6 +2472,7 @@ register CLRSEQINTSRC {
        field   CLRCFG4TSTAT    0x04
        field   CLRCFG4ICMD     0x02
        field   CLRCFG4TCMD     0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2415,6 +2499,7 @@ register CURRSCB {
        access_mode     RW
        size            2
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2472,6 +2557,7 @@ register LASTSCB {
        access_mode     RW
        size            2
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2494,6 +2580,7 @@ register SHADDR {
        access_mode     RO
        size            8
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -2513,6 +2600,7 @@ register NEGOADDR {
        address                 0x060
        access_mode     RW
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2523,6 +2611,7 @@ register NEGPERIOD {
        access_mode     RW
        modes           M_SCSI
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -2543,6 +2632,7 @@ register NEGOFFSET {
        access_mode     RW
        modes           M_SCSI
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -2557,6 +2647,7 @@ register NEGPPROPTS {
        field   PPROPT_QAS      0x04
        field   PPROPT_DT       0x02
        field   PPROPT_IUT      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2573,6 +2664,7 @@ register NEGCONOPTS {
        field   ENAUTOATNI      0x04
        field   ENAUTOATNO      0x02
        field   WIDEXFER        0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2583,6 +2675,7 @@ register ANNEXCOL {
        access_mode     RW
        modes           M_SCSI
        count           7
+       dont_generate_debug_code
 }
 
 /*
@@ -2602,6 +2695,7 @@ register SCSCHKN {
        field   DFFACTCLR       0x04
        field   SHVALIDSTDIS    0x02
        field   LSTSGCLRDIS     0x01
+       dont_generate_debug_code
 }
 
 const AHD_ANNEXCOL_PER_DEV0    4
@@ -2635,6 +2729,7 @@ register ANNEXDAT {
        access_mode     RW
        modes           M_SCSI
        count           3
+       dont_generate_debug_code
 }
 
 /*
@@ -2645,6 +2740,7 @@ register IOWNID {
        address                 0x067
        access_mode     RW
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2671,6 +2767,7 @@ register TOWNID {
        access_mode     RW
        modes           M_SCSI
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -2702,6 +2799,7 @@ register SHCNT {
        access_mode     RW
        size            3
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -2789,6 +2887,7 @@ register SCBPTR {
        access_mode     RW
        size            2
        modes           M_DFF0, M_DFF1, M_CCHAN, M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -2816,6 +2915,7 @@ register SCBAUTOPTR {
        field   AUSCBPTR_EN     0x80
        field   SCBPTR_ADDR     0x38
        field   SCBPTR_OFF      0x07
+       dont_generate_debug_code
 }
 
 /*
@@ -2825,6 +2925,7 @@ register CCSGADDR {
        address                 0x0AC
        access_mode     RW
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -2834,6 +2935,7 @@ register CCSCBADDR {
        address                 0x0AC
        access_mode     RW
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -2899,6 +3001,7 @@ register CCSGRAM {
        address                 0x0B0
        access_mode     RW
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -2908,6 +3011,7 @@ register CCSCBRAM {
        address                 0x0B0
        access_mode     RW
        modes           M_CCHAN
+       dont_generate_debug_code
 }
 
 /*
@@ -2958,6 +3062,7 @@ register BRDDAT {
        access_mode     RW
        modes           M_SCSI
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -2974,6 +3079,7 @@ register BRDCTL {
        field   BRDEN           0x04
        field   BRDRW           0x02
        field   BRDSTB          0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -2984,6 +3090,7 @@ register SEEADR {
        access_mode     RW
        modes           M_SCSI
        count           4
+       dont_generate_debug_code
 }
 
 /*
@@ -2995,6 +3102,7 @@ register SEEDAT {
        size            2
        modes           M_SCSI
        count           4
+       dont_generate_debug_code
 }
 
 /*
@@ -3011,6 +3119,7 @@ register SEESTAT {
        field   SEEARBACK       0x04
        field   SEEBUSY         0x02
        field   SEESTART        0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -3036,6 +3145,7 @@ register SEECTL {
        mask    SEEOP_EWDS      0x40
        field   SEERST          0x02
        field   SEESTART        0x01
+       dont_generate_debug_code
 }
 
 const SEEOP_ERAL_ADDR  0x80
@@ -3050,6 +3160,7 @@ register SCBCNT {
        address                 0x0BF
        access_mode     RW
        modes           M_SCSI
+       dont_generate_debug_code
 }
 
 /*
@@ -3061,6 +3172,7 @@ register DFWADDR {
        access_mode     RW
        size            2
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -3087,6 +3199,7 @@ register DSPDATACTL {
        field   DESQDIS         0x10
        field   RCVROFFSTDIS    0x04
        field   XMITOFFSTDIS    0x02
+       dont_generate_debug_code
 }
 
 /*
@@ -3132,6 +3245,7 @@ register DFDAT {
        address                 0x0C4
        access_mode     RW
        modes           M_DFF0, M_DFF1
+       dont_generate_debug_code
 }
 
 /*
@@ -3144,6 +3258,7 @@ register DSPSELECT {
        count           1
        field   AUTOINCEN       0x80
        field   DSPSEL          0x1F
+       dont_generate_debug_code
 }
 
 const NUMDSPS 0x14
@@ -3158,6 +3273,7 @@ register WRTBIASCTL {
        count           3
        field   AUTOXBCDIS      0x80
        field   XMITMANVAL      0x3F
+       dont_generate_debug_code
 }
 
 /*
@@ -3316,6 +3432,7 @@ register FLAGS {
        count           23
        field   ZERO            0x02
        field   CARRY           0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -3344,6 +3461,7 @@ register SEQRAM {
        address                 0x0DA
        access_mode     RW
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -3355,6 +3473,7 @@ register PRGMCNT {
        access_mode     RW
        size            2
        count           5
+       dont_generate_debug_code
 }
 
 /*
@@ -3364,6 +3483,7 @@ register ACCUM {
        address                 0x0E0
        access_mode     RW
        accumulator
+       dont_generate_debug_code
 }
 
 /*
@@ -3380,6 +3500,7 @@ register SINDEX   {
        access_mode     RW
        size            2
        sindex
+       dont_generate_debug_code
 }
 
 /*
@@ -3390,6 +3511,7 @@ register DINDEX {
        address                 0x0E4
        access_mode     RW
        size            2
+       dont_generate_debug_code
 }
 
 /*
@@ -3415,6 +3537,7 @@ register ALLONES {
        address                 0x0E8
        access_mode RO
        allones
+       dont_generate_debug_code
 }
 
 /*
@@ -3425,6 +3548,7 @@ register ALLZEROS {
        address                 0x0EA
        access_mode RO
        allzeros
+       dont_generate_debug_code
 }
 
 /*
@@ -3435,6 +3559,7 @@ register NONE {
        address                 0x0EA
        access_mode WO
        none
+       dont_generate_debug_code
 }
 
 /*
@@ -3445,6 +3570,7 @@ register NONE {
 register SINDIR        {
        address                 0x0EC
        access_mode RO
+       dont_generate_debug_code
 }
 
 /*
@@ -3455,6 +3581,7 @@ register SINDIR   {
 register DINDIR         {
        address                 0x0ED
        access_mode WO
+       dont_generate_debug_code
 }
 
 /*
@@ -3479,6 +3606,7 @@ register FUNCTION1 {
 register STACK {
        address                 0x0F2
        access_mode RW
+       dont_generate_debug_code
 }
 
 /*
@@ -3491,6 +3619,7 @@ register INTVEC1_ADDR {
        size            2
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -3503,6 +3632,7 @@ register CURADDR {
        size            2
        modes           M_SCSI
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -3515,6 +3645,7 @@ register INTVEC2_ADDR {
        size            2
        modes           M_CFG
        count           1
+       dont_generate_debug_code
 }
 
 /*
@@ -3543,12 +3674,14 @@ scratch_ram {
        modes   0, 1, 2, 3
        REG0 {
                size            2
+               dont_generate_debug_code
        }
        REG1 {
                size            2
        }
        REG_ISR {
                size            2
+               dont_generate_debug_code
        }
        SG_STATE {
                size            1
@@ -3572,9 +3705,11 @@ scratch_ram {
        modes   0, 1, 2, 3
        LONGJMP_ADDR {
                size            2
+               dont_generate_debug_code
        }
        ACCUM_SAVE {
                size            1
+               dont_generate_debug_code
        }
 }
 
@@ -3591,18 +3726,22 @@ scratch_ram {
         */
        WAITING_SCB_TAILS {
                size            32
+               dont_generate_debug_code
        }
        WAITING_TID_HEAD {
                size            2
+               dont_generate_debug_code
        }
        WAITING_TID_TAIL {
                size            2
+               dont_generate_debug_code
        }
        /*
         * SCBID of the next SCB in the new SCB queue.
         */
        NEXT_QUEUED_SCB_ADDR {
                size            4
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that have
@@ -3611,6 +3750,7 @@ scratch_ram {
         */
        COMPLETE_SCB_HEAD {
                size            2
+               dont_generate_debug_code
        }
        /*
         * The list of completed SCBs in
@@ -3618,6 +3758,7 @@ scratch_ram {
         */
        COMPLETE_SCB_DMAINPROG_HEAD {
                size            2
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that have
@@ -3626,6 +3767,7 @@ scratch_ram {
         */
        COMPLETE_DMA_SCB_HEAD {
                size            2
+               dont_generate_debug_code
        }
        /*
         * tail of list of SCBs that have
@@ -3634,6 +3776,7 @@ scratch_ram {
         */
        COMPLETE_DMA_SCB_TAIL {
                size            2
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that have
@@ -3643,6 +3786,7 @@ scratch_ram {
         */
        COMPLETE_ON_QFREEZE_HEAD {
                size            2
+               dont_generate_debug_code
        }
        /*
         * Counting semaphore to prevent new select-outs
@@ -3667,6 +3811,7 @@ scratch_ram {
         */
        MSG_OUT {
                size            1
+               dont_generate_debug_code
        }
        /* Parameters for DMA Logic */
        DMAPARAMS {
@@ -3682,6 +3827,7 @@ scratch_ram {
                field   DIRECTION       0x04    /* Set indicates PCI->SCSI */
                field   FIFOFLUSH       0x02
                field   FIFORESET       0x01
+               dont_generate_debug_code
        }
        SEQ_FLAGS {
                size            1
@@ -3703,9 +3849,11 @@ scratch_ram {
         */
        SAVED_SCSIID {
                size            1
+               dont_generate_debug_code
        }
        SAVED_LUN {
                size            1
+               dont_generate_debug_code
        }
        /*
         * The last bus phase as seen by the sequencer. 
@@ -3733,6 +3881,7 @@ scratch_ram {
         */
        QOUTFIFO_ENTRY_VALID_TAG {
                size            1
+               dont_generate_debug_code
        }
        /*
         * Kernel and sequencer offsets into the queue of
@@ -3742,10 +3891,12 @@ scratch_ram {
        KERNEL_TQINPOS {
                size            1
                count           1
+               dont_generate_debug_code
        }
        TQINPOS {
                size            1
                count           8
+               dont_generate_debug_code
        }
        /*
         * Base address of our shared data with the kernel driver in host
@@ -3754,6 +3905,7 @@ scratch_ram {
         */
        SHARED_DATA_ADDR {
                size            4
+               dont_generate_debug_code
        }
        /*
         * Pointer to location in host memory for next
@@ -3761,6 +3913,7 @@ scratch_ram {
         */
        QOUTFIFO_NEXT_ADDR {
                size            4
+               dont_generate_debug_code
        }
        ARG_1 {
                size            1
@@ -3773,11 +3926,13 @@ scratch_ram {
                mask    CONT_MSG_LOOP_READ      0x03
                mask    CONT_MSG_LOOP_TARG      0x02
                alias   RETURN_1
+               dont_generate_debug_code
        }
        ARG_2 {
                size            1
                count           1
                alias   RETURN_2
+               dont_generate_debug_code
        }
 
        /*
@@ -3785,6 +3940,7 @@ scratch_ram {
         */
        LAST_MSG {
                size            1
+               dont_generate_debug_code
        }
 
        /*
@@ -3801,6 +3957,7 @@ scratch_ram {
                field   MANUALP         0x0C
                field   ENAUTOATNP      0x02
                field   ALTSTIM         0x01
+               dont_generate_debug_code
        }
 
        /*
@@ -3809,6 +3966,7 @@ scratch_ram {
        INITIATOR_TAG {
                size            1
                count           1
+               dont_generate_debug_code
        }
 
        SEQ_FLAGS2 {
@@ -3820,6 +3978,7 @@ scratch_ram {
 
        ALLOCFIFO_SCBPTR {
                size            2
+               dont_generate_debug_code
        }
 
        /*
@@ -3829,6 +3988,7 @@ scratch_ram {
         */
        INT_COALESCING_TIMER {
                size            2
+               dont_generate_debug_code
        }
 
        /*
@@ -3838,6 +3998,7 @@ scratch_ram {
         */
        INT_COALESCING_MAXCMDS {
                size            1
+               dont_generate_debug_code
        }
 
        /*
@@ -3846,6 +4007,7 @@ scratch_ram {
         */
        INT_COALESCING_MINCMDS {
                size            1
+               dont_generate_debug_code
        }
 
        /*
@@ -3853,6 +4015,7 @@ scratch_ram {
         */
        CMDS_PENDING {
                size            2
+               dont_generate_debug_code
        }
 
        /*
@@ -3860,6 +4023,7 @@ scratch_ram {
         */
        INT_COALESCING_CMDCOUNT {
                size            1
+               dont_generate_debug_code
        }
 
        /*
@@ -3868,6 +4032,7 @@ scratch_ram {
         */
        LOCAL_HS_MAILBOX {
                size            1
+               dont_generate_debug_code
        }
        /*
         * Target-mode CDB type to CDB length table used
@@ -3876,6 +4041,7 @@ scratch_ram {
        CMDSIZE_TABLE {
                size            8
                count           8
+               dont_generate_debug_code
        }
        /*
         * When an SCB with the MK_MESSAGE flag is
@@ -3908,25 +4074,31 @@ scb {
                size    4
                alias   SCB_CDB_STORE
                alias   SCB_HOST_CDB_PTR
+               dont_generate_debug_code
        }
        SCB_RESIDUAL_SGPTR {
                size    4
                field   SG_ADDR_MASK            0xf8    /* In the last byte */
                field   SG_OVERRUN_RESID        0x02    /* In the first byte */
                field   SG_LIST_NULL            0x01    /* In the first byte */
+               dont_generate_debug_code
        }
        SCB_SCSI_STATUS {
                size    1
                alias   SCB_HOST_CDB_LEN
+               dont_generate_debug_code
        }
        SCB_TARGET_PHASES {
                size    1
+               dont_generate_debug_code
        }
        SCB_TARGET_DATA_DIR {
                size    1
+               dont_generate_debug_code
        }
        SCB_TARGET_ITAG {
                size    1
+               dont_generate_debug_code
        }
        SCB_SENSE_BUSADDR {
                /*
@@ -3936,10 +4108,12 @@ scb {
                 */
                size    4
                alias   SCB_NEXT_COMPLETE
+               dont_generate_debug_code
        }
        SCB_TAG {
                alias   SCB_FIFO_USE_COUNT
                size    2
+               dont_generate_debug_code
        }
        SCB_CONTROL {
                size    1
@@ -3959,6 +4133,7 @@ scb {
        SCB_LUN {
                size    1
                field   LID     0xff
+               dont_generate_debug_code
        }
        SCB_TASK_ATTRIBUTE {
                size    1
@@ -3967,16 +4142,20 @@ scb {
                 * ignore wide residue message handling.
                 */
                field   SCB_XFERLEN_ODD 0x01
+               dont_generate_debug_code
        }
        SCB_CDB_LEN {
                size    1
                field   SCB_CDB_LEN_PTR 0x80    /* CDB in host memory */
+               dont_generate_debug_code
        }
        SCB_TASK_MANAGEMENT {
                size    1
+               dont_generate_debug_code
        }
        SCB_DATAPTR {
                size    8
+               dont_generate_debug_code
        }
        SCB_DATACNT {
                /*
@@ -3986,22 +4165,27 @@ scb {
                size    4
                field   SG_LAST_SEG             0x80    /* In the fourth byte */
                field   SG_HIGH_ADDR_BITS       0x7F    /* In the fourth byte */
+               dont_generate_debug_code
        }
        SCB_SGPTR {
                size    4
                field   SG_STATUS_VALID 0x04    /* In the first byte */
                field   SG_FULL_RESID   0x02    /* In the first byte */
                field   SG_LIST_NULL    0x01    /* In the first byte */
+               dont_generate_debug_code
        }
        SCB_BUSADDR {
                size    4
+               dont_generate_debug_code
        }
        SCB_NEXT {
                alias   SCB_NEXT_SCB_BUSADDR
                size    2
+               dont_generate_debug_code
        }
        SCB_NEXT2 {
                size    2
+               dont_generate_debug_code
        }
        SCB_SPARE {
                size    8
@@ -4009,6 +4193,7 @@ scb {
        }
        SCB_DISCONNECTED_LISTS {
                size    8
+               dont_generate_debug_code
        }
 }
 
index 55508b0fcec4020df71de8236e854f712a952393..bdad54ec088cc8d0dd6970c7f1cd9618859c6f6a 100644 (file)
@@ -2472,8 +2472,6 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat)
                if ((ahd->bugs & AHD_CLRLQO_AUTOCLR_BUG) != 0)
                        ahd_outb(ahd, CLRLQOINT1, 0);
        } else if ((status & SELTO) != 0) {
-               u_int  scbid;
-
                /* Stop the selection */
                ahd_outb(ahd, SCSISEQ0, 0);
 
@@ -2583,9 +2581,6 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat)
                case BUSFREE_DFF0:
                case BUSFREE_DFF1:
                {
-                       u_int   scbid;
-                       struct  scb *scb;
-
                        mode = busfreetime == BUSFREE_DFF0
                             ? AHD_MODE_DFF0 : AHD_MODE_DFF1;
                        ahd_set_modes(ahd, mode, mode);
@@ -3689,7 +3684,7 @@ ahd_free_tstate(struct ahd_softc *ahd, u_int scsi_id, char channel, int force)
  * by the capabilities of the bus connectivity of and sync settings for
  * the target.
  */
-void
+static void
 ahd_devlimited_syncrate(struct ahd_softc *ahd,
                        struct ahd_initiator_tinfo *tinfo,
                        u_int *period, u_int *ppr_options, role_t role)
@@ -4136,7 +4131,7 @@ ahd_update_neg_table(struct ahd_softc *ahd, struct ahd_devinfo *devinfo,
 
                        /*
                         * Harpoon2A assumed that there would be a
-                        * fallback rate between 160MHz and 80Mhz,
+                        * fallback rate between 160MHz and 80MHz,
                         * so 7 is used as the period factor rather
                         * than 8 for 160MHz.
                         */
@@ -8708,7 +8703,7 @@ ahd_reset_current_bus(struct ahd_softc *ahd)
 int
 ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
 {
-       struct  ahd_devinfo devinfo;
+       struct  ahd_devinfo caminfo;
        u_int   initiator;
        u_int   target;
        u_int   max_scsiid;
@@ -8729,7 +8724,7 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
 
        ahd->pending_device = NULL;
 
-       ahd_compile_devinfo(&devinfo,
+       ahd_compile_devinfo(&caminfo,
                            CAM_TARGET_WILDCARD,
                            CAM_TARGET_WILDCARD,
                            CAM_LUN_WILDCARD,
@@ -8868,7 +8863,7 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
        }
 
        /* Notify the XPT that a bus reset occurred */
-       ahd_send_async(ahd, devinfo.channel, CAM_TARGET_WILDCARD,
+       ahd_send_async(ahd, caminfo.channel, CAM_TARGET_WILDCARD,
                       CAM_LUN_WILDCARD, AC_BUS_RESET);
 
        ahd_restart(ahd);
index c25b6adffbf94f50fd5684063e7add6b04984895..a734d77e880efb2430795442d2e3e4c719259946 100644 (file)
@@ -223,10 +223,10 @@ static const char *pci_bus_modes[] =
        "PCI bus mode unknown",
        "PCI bus mode unknown",
        "PCI bus mode unknown",
-       "PCI-X 101-133Mhz",
-       "PCI-X 67-100Mhz",
-       "PCI-X 50-66Mhz",
-       "PCI 33 or 66Mhz"
+       "PCI-X 101-133MHz",
+       "PCI-X 67-100MHz",
+       "PCI-X 50-66MHz",
+       "PCI 33 or 66MHz"
 };
 
 #define                TESTMODE        0x00000800ul
@@ -337,8 +337,6 @@ ahd_pci_config(struct ahd_softc *ahd, const struct ahd_pci_identity *entry)
         * 64bit bus (PCI64BIT set in devconfig).
         */
        if ((ahd->flags & (AHD_39BIT_ADDRESSING|AHD_64BIT_ADDRESSING)) != 0) {
-               uint32_t devconfig;
-
                if (bootverbose)
                        printf("%s: Enabling 39Bit Addressing\n",
                               ahd_name(ahd));
@@ -483,8 +481,6 @@ ahd_pci_test_register_access(struct ahd_softc *ahd)
                goto fail;
 
        if ((ahd_inb(ahd, INTSTAT) & PCIINT) != 0) {
-               u_int targpcistat;
-
                ahd_set_modes(ahd, AHD_MODE_CFG, AHD_MODE_CFG);
                targpcistat = ahd_inb(ahd, TARGPCISTAT);
                if ((targpcistat & STA) != 0)
index c21ceab8e9134f699af09203b6dada11acd1d132..cdcead071ef6449c337b99d1696910c319cd9b70 100644 (file)
@@ -33,13 +33,6 @@ ahd_reg_print_t ahd_seqintcode_print;
     ahd_print_register(NULL, 0, "SEQINTCODE", 0x02, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_clrint_print;
-#else
-#define ahd_clrint_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CLRINT", 0x03, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_error_print;
 #else
@@ -47,20 +40,6 @@ ahd_reg_print_t ahd_error_print;
     ahd_print_register(NULL, 0, "ERROR", 0x04, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_hcntrl_print;
-#else
-#define ahd_hcntrl_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "HCNTRL", 0x05, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_hnscb_qoff_print;
-#else
-#define ahd_hnscb_qoff_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "HNSCB_QOFF", 0x06, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_hescb_qoff_print;
 #else
@@ -96,13 +75,6 @@ ahd_reg_print_t ahd_swtimer_print;
     ahd_print_register(NULL, 0, "SWTIMER", 0x0e, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_snscb_qoff_print;
-#else
-#define ahd_snscb_qoff_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SNSCB_QOFF", 0x10, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_sescb_qoff_print;
 #else
@@ -110,20 +82,6 @@ ahd_reg_print_t ahd_sescb_qoff_print;
     ahd_print_register(NULL, 0, "SESCB_QOFF", 0x12, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sdscb_qoff_print;
-#else
-#define ahd_sdscb_qoff_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SDSCB_QOFF", 0x14, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_qoff_ctlsta_print;
-#else
-#define ahd_qoff_ctlsta_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "QOFF_CTLSTA", 0x16, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_intctl_print;
 #else
@@ -138,13 +96,6 @@ ahd_reg_print_t ahd_dfcntrl_print;
     ahd_print_register(NULL, 0, "DFCNTRL", 0x19, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dscommand0_print;
-#else
-#define ahd_dscommand0_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DSCOMMAND0", 0x19, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_dfstatus_print;
 #else
@@ -159,13 +110,6 @@ ahd_reg_print_t ahd_sg_cache_shadow_print;
     ahd_print_register(NULL, 0, "SG_CACHE_SHADOW", 0x1b, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sg_cache_pre_print;
-#else
-#define ahd_sg_cache_pre_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SG_CACHE_PRE", 0x1b, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_lqin_print;
 #else
@@ -292,13 +236,6 @@ ahd_reg_print_t ahd_sxfrctl0_print;
     ahd_print_register(NULL, 0, "SXFRCTL0", 0x3c, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sxfrctl1_print;
-#else
-#define ahd_sxfrctl1_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SXFRCTL1", 0x3d, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_dffstat_print;
 #else
@@ -313,13 +250,6 @@ ahd_reg_print_t ahd_multargid_print;
     ahd_print_register(NULL, 0, "MULTARGID", 0x40, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scsisigo_print;
-#else
-#define ahd_scsisigo_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCSISIGO", 0x40, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scsisigi_print;
 #else
@@ -362,13 +292,6 @@ ahd_reg_print_t ahd_selid_print;
     ahd_print_register(NULL, 0, "SELID", 0x49, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_optionmode_print;
-#else
-#define ahd_optionmode_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "OPTIONMODE", 0x4a, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_sblkctl_print;
 #else
@@ -390,13 +313,6 @@ ahd_reg_print_t ahd_simode0_print;
     ahd_print_register(NULL, 0, "SIMODE0", 0x4b, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_clrsint0_print;
-#else
-#define ahd_clrsint0_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CLRSINT0", 0x4b, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_sstat1_print;
 #else
@@ -404,13 +320,6 @@ ahd_reg_print_t ahd_sstat1_print;
     ahd_print_register(NULL, 0, "SSTAT1", 0x4c, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_clrsint1_print;
-#else
-#define ahd_clrsint1_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CLRSINT1", 0x4c, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_sstat2_print;
 #else
@@ -461,17 +370,17 @@ ahd_reg_print_t ahd_lqistat0_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_lqimode0_print;
+ahd_reg_print_t ahd_clrlqiint0_print;
 #else
-#define ahd_lqimode0_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "LQIMODE0", 0x50, regvalue, cur_col, wrap)
+#define ahd_clrlqiint0_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "CLRLQIINT0", 0x50, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_clrlqiint0_print;
+ahd_reg_print_t ahd_lqimode0_print;
 #else
-#define ahd_clrlqiint0_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CLRLQIINT0", 0x50, regvalue, cur_col, wrap)
+#define ahd_lqimode0_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "LQIMODE0", 0x50, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -629,17 +538,17 @@ ahd_reg_print_t ahd_seqintsrc_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_seqimode_print;
+ahd_reg_print_t ahd_currscb_print;
 #else
-#define ahd_seqimode_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SEQIMODE", 0x5c, regvalue, cur_col, wrap)
+#define ahd_currscb_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "CURRSCB", 0x5c, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_currscb_print;
+ahd_reg_print_t ahd_seqimode_print;
 #else
-#define ahd_currscb_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CURRSCB", 0x5c, regvalue, cur_col, wrap)
+#define ahd_seqimode_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "SEQIMODE", 0x5c, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -656,13 +565,6 @@ ahd_reg_print_t ahd_lastscb_print;
     ahd_print_register(NULL, 0, "LASTSCB", 0x5e, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_shaddr_print;
-#else
-#define ahd_shaddr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SHADDR", 0x60, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_negoaddr_print;
 #else
@@ -747,27 +649,6 @@ ahd_reg_print_t ahd_seloid_print;
     ahd_print_register(NULL, 0, "SELOID", 0x6b, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_haddr_print;
-#else
-#define ahd_haddr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "HADDR", 0x70, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_hcnt_print;
-#else
-#define ahd_hcnt_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "HCNT", 0x78, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sghaddr_print;
-#else
-#define ahd_sghaddr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scbhaddr_print;
 #else
@@ -776,10 +657,10 @@ ahd_reg_print_t ahd_scbhaddr_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sghcnt_print;
+ahd_reg_print_t ahd_sghaddr_print;
 #else
-#define ahd_sghcnt_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap)
+#define ahd_sghaddr_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -790,10 +671,10 @@ ahd_reg_print_t ahd_scbhcnt_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dff_thrsh_print;
+ahd_reg_print_t ahd_sghcnt_print;
 #else
-#define ahd_dff_thrsh_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DFF_THRSH", 0x88, regvalue, cur_col, wrap)
+#define ahd_sghcnt_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -866,13 +747,6 @@ ahd_reg_print_t ahd_targpcistat_print;
     ahd_print_register(NULL, 0, "TARGPCISTAT", 0xa7, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scbptr_print;
-#else
-#define ahd_scbptr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCBPTR", 0xa8, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scbautoptr_print;
 #else
@@ -880,13 +754,6 @@ ahd_reg_print_t ahd_scbautoptr_print;
     ahd_print_register(NULL, 0, "SCBAUTOPTR", 0xab, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_ccsgaddr_print;
-#else
-#define ahd_ccsgaddr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CCSGADDR", 0xac, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_ccscbaddr_print;
 #else
@@ -908,13 +775,6 @@ ahd_reg_print_t ahd_ccsgctl_print;
     ahd_print_register(NULL, 0, "CCSGCTL", 0xad, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_ccsgram_print;
-#else
-#define ahd_ccsgram_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "CCSGRAM", 0xb0, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_ccscbram_print;
 #else
@@ -929,13 +789,6 @@ ahd_reg_print_t ahd_brddat_print;
     ahd_print_register(NULL, 0, "BRDDAT", 0xb8, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_brdctl_print;
-#else
-#define ahd_brdctl_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "BRDCTL", 0xb9, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_seeadr_print;
 #else
@@ -971,13 +824,6 @@ ahd_reg_print_t ahd_dspdatactl_print;
     ahd_print_register(NULL, 0, "DSPDATACTL", 0xc1, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dfdat_print;
-#else
-#define ahd_dfdat_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DFDAT", 0xc4, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_dspselect_print;
 #else
@@ -999,13 +845,6 @@ ahd_reg_print_t ahd_seqctl0_print;
     ahd_print_register(NULL, 0, "SEQCTL0", 0xd6, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_flags_print;
-#else
-#define ahd_flags_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "FLAGS", 0xd8, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_seqintctl_print;
 #else
@@ -1013,13 +852,6 @@ ahd_reg_print_t ahd_seqintctl_print;
     ahd_print_register(NULL, 0, "SEQINTCTL", 0xd9, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_seqram_print;
-#else
-#define ahd_seqram_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SEQRAM", 0xda, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_prgmcnt_print;
 #else
@@ -1027,41 +859,6 @@ ahd_reg_print_t ahd_prgmcnt_print;
     ahd_print_register(NULL, 0, "PRGMCNT", 0xde, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_accum_print;
-#else
-#define ahd_accum_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "ACCUM", 0xe0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sindex_print;
-#else
-#define ahd_sindex_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SINDEX", 0xe2, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dindex_print;
-#else
-#define ahd_dindex_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DINDEX", 0xe4, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_allones_print;
-#else
-#define ahd_allones_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "ALLONES", 0xe8, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_allzeros_print;
-#else
-#define ahd_allzeros_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "ALLZEROS", 0xea, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_none_print;
 #else
@@ -1069,27 +866,6 @@ ahd_reg_print_t ahd_none_print;
     ahd_print_register(NULL, 0, "NONE", 0xea, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sindir_print;
-#else
-#define ahd_sindir_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SINDIR", 0xec, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dindir_print;
-#else
-#define ahd_dindir_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DINDIR", 0xed, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_stack_print;
-#else
-#define ahd_stack_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "STACK", 0xf2, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_intvec1_addr_print;
 #else
@@ -1126,17 +902,17 @@ ahd_reg_print_t ahd_accum_save_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_sram_base_print;
+ahd_reg_print_t ahd_waiting_scb_tails_print;
 #else
-#define ahd_sram_base_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SRAM_BASE", 0x100, regvalue, cur_col, wrap)
+#define ahd_waiting_scb_tails_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "WAITING_SCB_TAILS", 0x100, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_waiting_scb_tails_print;
+ahd_reg_print_t ahd_sram_base_print;
 #else
-#define ahd_waiting_scb_tails_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "WAITING_SCB_TAILS", 0x100, regvalue, cur_col, wrap)
+#define ahd_sram_base_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "SRAM_BASE", 0x100, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -1223,13 +999,6 @@ ahd_reg_print_t ahd_msg_out_print;
     ahd_print_register(NULL, 0, "MSG_OUT", 0x137, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_dmaparams_print;
-#else
-#define ahd_dmaparams_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "DMAPARAMS", 0x138, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_seq_flags_print;
 #else
@@ -1237,20 +1006,6 @@ ahd_reg_print_t ahd_seq_flags_print;
     ahd_print_register(NULL, 0, "SEQ_FLAGS", 0x139, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_saved_scsiid_print;
-#else
-#define ahd_saved_scsiid_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SAVED_SCSIID", 0x13a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_saved_lun_print;
-#else
-#define ahd_saved_lun_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SAVED_LUN", 0x13b, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_lastphase_print;
 #else
@@ -1272,20 +1027,6 @@ ahd_reg_print_t ahd_kernel_tqinpos_print;
     ahd_print_register(NULL, 0, "KERNEL_TQINPOS", 0x13e, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_tqinpos_print;
-#else
-#define ahd_tqinpos_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "TQINPOS", 0x13f, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_shared_data_addr_print;
-#else
-#define ahd_shared_data_addr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x140, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_qoutfifo_next_addr_print;
 #else
@@ -1293,20 +1034,6 @@ ahd_reg_print_t ahd_qoutfifo_next_addr_print;
     ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", 0x144, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_arg_1_print;
-#else
-#define ahd_arg_1_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "ARG_1", 0x148, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_arg_2_print;
-#else
-#define ahd_arg_2_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "ARG_2", 0x149, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_last_msg_print;
 #else
@@ -1405,13 +1132,6 @@ ahd_reg_print_t ahd_mk_message_scsiid_print;
     ahd_print_register(NULL, 0, "MK_MESSAGE_SCSIID", 0x162, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_residual_datacnt_print;
-#else
-#define ahd_scb_residual_datacnt_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCB_RESIDUAL_DATACNT", 0x180, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scb_base_print;
 #else
@@ -1420,17 +1140,10 @@ ahd_reg_print_t ahd_scb_base_print;
 #endif
 
 #if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_residual_sgptr_print;
-#else
-#define ahd_scb_residual_sgptr_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCB_RESIDUAL_SGPTR", 0x184, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_scsi_status_print;
+ahd_reg_print_t ahd_scb_residual_datacnt_print;
 #else
-#define ahd_scb_scsi_status_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCB_SCSI_STATUS", 0x188, regvalue, cur_col, wrap)
+#define ahd_scb_residual_datacnt_print(regvalue, cur_col, wrap) \
+    ahd_print_register(NULL, 0, "SCB_RESIDUAL_DATACNT", 0x180, regvalue, cur_col, wrap)
 #endif
 
 #if AIC_DEBUG_REGISTERS
@@ -1475,13 +1188,6 @@ ahd_reg_print_t ahd_scb_task_attribute_print;
     ahd_print_register(NULL, 0, "SCB_TASK_ATTRIBUTE", 0x195, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_cdb_len_print;
-#else
-#define ahd_scb_cdb_len_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCB_CDB_LEN", 0x196, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scb_task_management_print;
 #else
@@ -1517,13 +1223,6 @@ ahd_reg_print_t ahd_scb_busaddr_print;
     ahd_print_register(NULL, 0, "SCB_BUSADDR", 0x1a8, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahd_reg_print_t ahd_scb_next_print;
-#else
-#define ahd_scb_next_print(regvalue, cur_col, wrap) \
-    ahd_print_register(NULL, 0, "SCB_NEXT", 0x1ac, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahd_reg_print_t ahd_scb_next2_print;
 #else
@@ -1717,10 +1416,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        SG_CACHE_PRE                    0x1b
 
-#define        TYPEPTR                         0x20
-
 #define        LQIN                            0x20
 
+#define        TYPEPTR                         0x20
+
 #define        TAGPTR                          0x21
 
 #define        LUNPTR                          0x22
@@ -1780,6 +1479,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                SINGLECMD               0x02
 #define                ABORTPENDING            0x01
 
+#define        SCSBIST0                        0x39
+#define                GSBISTERR               0x40
+#define                GSBISTDONE              0x20
+#define                GSBISTRUN               0x10
+#define                OSBISTERR               0x04
+#define                OSBISTDONE              0x02
+#define                OSBISTRUN               0x01
+
 #define        LQCTL2                          0x39
 #define                LQIRETRY                0x80
 #define                LQICONTINUE             0x40
@@ -1790,13 +1497,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                LQOTOIDLE               0x02
 #define                LQOPAUSE                0x01
 
-#define        SCSBIST0                        0x39
-#define                GSBISTERR               0x40
-#define                GSBISTDONE              0x20
-#define                GSBISTRUN               0x10
-#define                OSBISTERR               0x04
-#define                OSBISTDONE              0x02
-#define                OSBISTRUN               0x01
+#define        SCSBIST1                        0x3a
+#define                NTBISTERR               0x04
+#define                NTBISTDONE              0x02
+#define                NTBISTRUN               0x01
 
 #define        SCSISEQ0                        0x3a
 #define                TEMODEO                 0x80
@@ -1805,15 +1509,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                FORCEBUSFREE            0x10
 #define                SCSIRSTO                0x01
 
-#define        SCSBIST1                        0x3a
-#define                NTBISTERR               0x04
-#define                NTBISTDONE              0x02
-#define                NTBISTRUN               0x01
-
 #define        SCSISEQ1                        0x3b
 
-#define        BUSINITID                       0x3c
-
 #define        SXFRCTL0                        0x3c
 #define                DFON                    0x80
 #define                DFPEXP                  0x40
@@ -1822,6 +1519,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        DLCOUNT                         0x3c
 
+#define        BUSINITID                       0x3c
+
 #define        SXFRCTL1                        0x3d
 #define                BITBUCKET               0x80
 #define                ENSACHK                 0x40
@@ -1846,8 +1545,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                CURRFIFO_1              0x01
 #define                CURRFIFO_0              0x00
 
-#define        MULTARGID                       0x40
-
 #define        SCSISIGO                        0x40
 #define                CDO                     0x80
 #define                IOO                     0x40
@@ -1858,6 +1555,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                REQO                    0x02
 #define                ACKO                    0x01
 
+#define        MULTARGID                       0x40
+
 #define        SCSISIGI                        0x41
 #define                ATNI                    0x10
 #define                SELI                    0x08
@@ -1904,6 +1603,15 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                ENAB20                  0x04
 #define                SELWIDE                 0x02
 
+#define        CLRSINT0                        0x4b
+#define                CLRSELDO                0x40
+#define                CLRSELDI                0x20
+#define                CLRSELINGO              0x10
+#define                CLRIOERR                0x08
+#define                CLROVERRUN              0x04
+#define                CLRSPIORDY              0x02
+#define                CLRARBDO                0x01
+
 #define        SSTAT0                          0x4b
 #define                TARGET                  0x80
 #define                SELDO                   0x40
@@ -1923,14 +1631,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                ENSPIORDY               0x02
 #define                ENARBDO                 0x01
 
-#define        CLRSINT0                        0x4b
-#define                CLRSELDO                0x40
-#define                CLRSELDI                0x20
-#define                CLRSELINGO              0x10
-#define                CLRIOERR                0x08
-#define                CLROVERRUN              0x04
-#define                CLRSPIORDY              0x02
-#define                CLRARBDO                0x01
+#define        CLRSINT1                        0x4c
+#define                CLRSELTIMEO             0x80
+#define                CLRATNO                 0x40
+#define                CLRSCSIRSTI             0x20
+#define                CLRBUSFREE              0x08
+#define                CLRSCSIPERR             0x04
+#define                CLRSTRB2FAST            0x02
+#define                CLRREQINIT              0x01
 
 #define        SSTAT1                          0x4c
 #define                SELTO                   0x80
@@ -1942,15 +1650,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                STRB2FAST               0x02
 #define                REQINIT                 0x01
 
-#define        CLRSINT1                        0x4c
-#define                CLRSELTIMEO             0x80
-#define                CLRATNO                 0x40
-#define                CLRSCSIRSTI             0x20
-#define                CLRBUSFREE              0x08
-#define                CLRSCSIPERR             0x04
-#define                CLRSTRB2FAST            0x02
-#define                CLRREQINIT              0x01
-
 #define        SSTAT2                          0x4d
 #define                BUSFREETIME             0xc0
 #define                NONPACKREQ              0x20
@@ -1998,14 +1697,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                LQIATNLQ                0x02
 #define                LQIATNCMD               0x01
 
-#define        LQIMODE0                        0x50
-#define                ENLQIATNQASK            0x20
-#define                ENLQICRCT1              0x10
-#define                ENLQICRCT2              0x08
-#define                ENLQIBADLQT             0x04
-#define                ENLQIATNLQ              0x02
-#define                ENLQIATNCMD             0x01
-
 #define        CLRLQIINT0                      0x50
 #define                CLRLQIATNQAS            0x20
 #define                CLRLQICRCT1             0x10
@@ -2014,6 +1705,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                CLRLQIATNLQ             0x02
 #define                CLRLQIATNCMD            0x01
 
+#define        LQIMODE0                        0x50
+#define                ENLQIATNQASK            0x20
+#define                ENLQICRCT1              0x10
+#define                ENLQICRCT2              0x08
+#define                ENLQIBADLQT             0x04
+#define                ENLQIATNLQ              0x02
+#define                ENLQIATNCMD             0x01
+
 #define        LQIMODE1                        0x51
 #define                ENLQIPHASE_LQ           0x80
 #define                ENLQIPHASE_NLQ          0x40
@@ -2160,6 +1859,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                CFG4ICMD                0x02
 #define                CFG4TCMD                0x01
 
+#define        CURRSCB                         0x5c
+
 #define        SEQIMODE                        0x5c
 #define                ENCTXTDONE              0x40
 #define                ENSAVEPTRS              0x20
@@ -2169,8 +1870,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                ENCFG4ICMD              0x02
 #define                ENCFG4TCMD              0x01
 
-#define        CURRSCB                         0x5c
-
 #define        MDFFSTAT                        0x5d
 #define                SHCNTNEGATIVE           0x40
 #define                SHCNTMINUS1             0x20
@@ -2185,29 +1884,29 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        DFFTAG                          0x5e
 
+#define        LASTSCB                         0x5e
+
 #define        SCSITEST                        0x5e
 #define                CNTRTEST                0x08
 #define                SEL_TXPLL_DEBUG         0x04
 
-#define        LASTSCB                         0x5e
-
 #define        IOPDNCTL                        0x5f
 #define                DISABLE_OE              0x80
 #define                PDN_IDIST               0x04
 #define                PDN_DIFFSENSE           0x01
 
-#define        DGRPCRCI                        0x60
-
 #define        SHADDR                          0x60
 
 #define        NEGOADDR                        0x60
 
-#define        NEGPERIOD                       0x61
+#define        DGRPCRCI                        0x60
 
-#define        NEGOFFSET                       0x62
+#define        NEGPERIOD                       0x61
 
 #define        PACKCRCI                        0x62
 
+#define        NEGOFFSET                       0x62
+
 #define        NEGPPROPTS                      0x63
 #define                PPROPT_PACE             0x08
 #define                PPROPT_QAS              0x04
@@ -2253,8 +1952,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        SELOID                          0x6b
 
-#define        FAIRNESS                        0x6c
-
 #define        PLL400CTL0                      0x6c
 #define                PLL_VCOSEL              0x80
 #define                PLL_PWDN                0x40
@@ -2264,6 +1961,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                PLL_DLPF                0x02
 #define                PLL_ENFBM               0x01
 
+#define        FAIRNESS                        0x6c
+
 #define        PLL400CTL1                      0x6d
 #define                PLL_CNTEN               0x80
 #define                PLL_CNTCLR              0x40
@@ -2275,25 +1974,25 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        HADDR                           0x70
 
-#define        HODMAADR                        0x70
-
 #define        PLLDELAY                        0x70
 #define                SPLIT_DROP_REQ          0x80
 
-#define        HCNT                            0x78
+#define        HODMAADR                        0x70
 
 #define        HODMACNT                        0x78
 
-#define        HODMAEN                         0x7a
+#define        HCNT                            0x78
 
-#define        SGHADDR                         0x7c
+#define        HODMAEN                         0x7a
 
 #define        SCBHADDR                        0x7c
 
-#define        SGHCNT                          0x84
+#define        SGHADDR                         0x7c
 
 #define        SCBHCNT                         0x84
 
+#define        SGHCNT                          0x84
+
 #define        DFF_THRSH                       0x88
 #define                WR_DFTHRSH              0x70
 #define                RD_DFTHRSH              0x07
@@ -2326,10 +2025,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        CMCRXMSG0                       0x90
 
-#define        OVLYRXMSG0                      0x90
-
-#define        DCHRXMSG0                       0x90
-
 #define        ROENABLE                        0x90
 #define                MSIROEN                 0x20
 #define                OVLYROEN                0x10
@@ -2338,11 +2033,11 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                DCH1ROEN                0x02
 #define                DCH0ROEN                0x01
 
-#define        OVLYRXMSG1                      0x91
+#define        OVLYRXMSG0                      0x90
 
-#define        CMCRXMSG1                       0x91
+#define        DCHRXMSG0                       0x90
 
-#define        DCHRXMSG1                       0x91
+#define        OVLYRXMSG1                      0x91
 
 #define        NSENABLE                        0x91
 #define                MSINSEN                 0x20
@@ -2352,6 +2047,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                DCH1NSEN                0x02
 #define                DCH0NSEN                0x01
 
+#define        CMCRXMSG1                       0x91
+
+#define        DCHRXMSG1                       0x91
+
 #define        DCHRXMSG2                       0x92
 
 #define        CMCRXMSG2                       0x92
@@ -2375,24 +2074,24 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                TSCSERREN               0x02
 #define                CMPABCDIS               0x01
 
-#define        CMCSEQBCNT                      0x94
-
 #define        OVLYSEQBCNT                     0x94
 
 #define        DCHSEQBCNT                      0x94
 
+#define        CMCSEQBCNT                      0x94
+
+#define        CMCSPLTSTAT0                    0x96
+
 #define        DCHSPLTSTAT0                    0x96
 
 #define        OVLYSPLTSTAT0                   0x96
 
-#define        CMCSPLTSTAT0                    0x96
+#define        CMCSPLTSTAT1                    0x97
 
 #define        OVLYSPLTSTAT1                   0x97
 
 #define        DCHSPLTSTAT1                    0x97
 
-#define        CMCSPLTSTAT1                    0x97
-
 #define        SGRXMSG0                        0x98
 #define                CDNUM                   0xf8
 #define                CFNUM                   0x07
@@ -2420,15 +2119,18 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                TAG_NUM                 0x1f
 #define                RLXORD                  0x10
 
+#define        SGSEQBCNT                       0x9c
+
 #define        SLVSPLTOUTATTR0                 0x9c
 #define                LOWER_BCNT              0xff
 
-#define        SGSEQBCNT                       0x9c
-
 #define        SLVSPLTOUTATTR1                 0x9d
 #define                CMPLT_DNUM              0xf8
 #define                CMPLT_FNUM              0x07
 
+#define        SLVSPLTOUTATTR2                 0x9e
+#define                CMPLT_BNUM              0xff
+
 #define        SGSPLTSTAT0                     0x9e
 #define                STAETERM                0x80
 #define                SCBCERR                 0x40
@@ -2439,9 +2141,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                RXSCEMSG                0x02
 #define                RXSPLTRSP               0x01
 
-#define        SLVSPLTOUTATTR2                 0x9e
-#define                CMPLT_BNUM              0xff
-
 #define        SGSPLTSTAT1                     0x9f
 #define                RXDATABUCKET            0x01
 
@@ -2497,10 +2196,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        CCSGADDR                        0xac
 
-#define        CCSCBADDR                       0xac
-
 #define        CCSCBADR_BK                     0xac
 
+#define        CCSCBADDR                       0xac
+
 #define        CMC_RAMBIST                     0xad
 #define                SG_ELEMENT_SIZE         0x80
 #define                SCBRAMBIST_FAIL         0x40
@@ -2554,9 +2253,9 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define        SEEDAT                          0xbc
 
 #define        SEECTL                          0xbe
-#define                SEEOP_EWDS              0x40
 #define                SEEOP_WALL              0x40
 #define                SEEOP_EWEN              0x40
+#define                SEEOP_EWDS              0x40
 #define                SEEOPCODE               0x70
 #define                SEERST                  0x02
 #define                SEESTART                0x01
@@ -2573,25 +2272,25 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        SCBCNT                          0xbf
 
+#define        DFWADDR                         0xc0
+
 #define        DSPFLTRCTL                      0xc0
 #define                FLTRDISABLE             0x20
 #define                EDGESENSE               0x10
 #define                DSPFCNTSEL              0x0f
 
-#define        DFWADDR                         0xc0
-
 #define        DSPDATACTL                      0xc1
 #define                BYPASSENAB              0x80
 #define                DESQDIS                 0x10
 #define                RCVROFFSTDIS            0x04
 #define                XMITOFFSTDIS            0x02
 
+#define        DFRADDR                         0xc2
+
 #define        DSPREQCTL                       0xc2
 #define                MANREQCTL               0xc0
 #define                MANREQDLY               0x3f
 
-#define        DFRADDR                         0xc2
-
 #define        DSPACKCTL                       0xc3
 #define                MANACKCTL               0xc0
 #define                MANACKDLY               0x3f
@@ -2612,14 +2311,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        WRTBIASCALC                     0xc7
 
-#define        DFPTRS                          0xc8
-
 #define        RCVRBIASCALC                    0xc8
 
-#define        DFBKPTR                         0xc9
+#define        DFPTRS                          0xc8
 
 #define        SKEWCALC                        0xc9
 
+#define        DFBKPTR                         0xc9
+
 #define        DFDBCTL                         0xcb
 #define                DFF_CIO_WR_RDY          0x20
 #define                DFF_CIO_RD_RDY          0x10
@@ -2704,12 +2403,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        ACCUM_SAVE                      0xfa
 
+#define        WAITING_SCB_TAILS               0x100
+
 #define        AHD_PCI_CONFIG_BASE             0x100
 
 #define        SRAM_BASE                       0x100
 
-#define        WAITING_SCB_TAILS               0x100
-
 #define        WAITING_TID_HEAD                0x120
 
 #define        WAITING_TID_TAIL                0x122
@@ -2738,8 +2437,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define                PRELOADEN               0x80
 #define                WIDEODD                 0x40
 #define                SCSIEN                  0x20
-#define                SDMAENACK               0x10
 #define                SDMAEN                  0x10
+#define                SDMAENACK               0x10
 #define                HDMAEN                  0x08
 #define                HDMAENACK               0x08
 #define                DIRECTION               0x04
@@ -2837,12 +2536,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 
 #define        MK_MESSAGE_SCSIID               0x162
 
+#define        SCB_BASE                        0x180
+
 #define        SCB_RESIDUAL_DATACNT            0x180
 #define        SCB_CDB_STORE                   0x180
 #define        SCB_HOST_CDB_PTR                0x180
 
-#define        SCB_BASE                        0x180
-
 #define        SCB_RESIDUAL_SGPTR              0x184
 #define                SG_ADDR_MASK            0xf8
 #define                SG_OVERRUN_RESID        0x02
@@ -2910,17 +2609,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define        SCB_DISCONNECTED_LISTS          0x1b8
 
 
-#define        CMD_GROUP_CODE_SHIFT    0x05
-#define        STIMESEL_MIN    0x18
-#define        STIMESEL_SHIFT  0x03
-#define        INVALID_ADDR    0x80
-#define        AHD_PRECOMP_MASK        0x07
-#define        TARGET_DATA_IN  0x01
-#define        CCSCBADDR_MAX   0x80
-#define        NUMDSPS         0x14
-#define        SEEOP_EWEN_ADDR 0xc0
-#define        AHD_ANNEXCOL_PER_DEV0   0x04
-#define        DST_MODE_SHIFT  0x04
 #define        AHD_TIMER_MAX_US        0x18ffe7
 #define        AHD_TIMER_MAX_TICKS     0xffff
 #define        AHD_SENSE_BUFSIZE       0x100
@@ -2955,32 +2643,43 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
 #define        LUNLEN_SINGLE_LEVEL_LUN 0x0f
 #define        NVRAM_SCB_OFFSET        0x2c
 #define        STATUS_PKT_SENSE        0xff
+#define        CMD_GROUP_CODE_SHIFT    0x05
 #define        MAX_OFFSET_PACED_BUG    0x7f
 #define        STIMESEL_BUG_ADJ        0x08
+#define        STIMESEL_MIN    0x18
+#define        STIMESEL_SHIFT  0x03
 #define        CCSGRAM_MAXSEGS 0x10
+#define        INVALID_ADDR    0x80
 #define        SEEOP_ERAL_ADDR 0x80
 #define        AHD_SLEWRATE_DEF_REVB   0x08
 #define        AHD_PRECOMP_CUTBACK_17  0x04
+#define        AHD_PRECOMP_MASK        0x07
 #define        SRC_MODE_SHIFT  0x00
 #define        PKT_OVERRUN_BUFSIZE     0x200
 #define        SCB_TRANSFER_SIZE_1BYTE_LUN     0x30
+#define        TARGET_DATA_IN  0x01
 #define        HOST_MSG        0xff
 #define        MAX_OFFSET      0xfe
 #define        BUS_16_BIT      0x01
+#define        CCSCBADDR_MAX   0x80
+#define        NUMDSPS         0x14
+#define        SEEOP_EWEN_ADDR 0xc0
+#define        AHD_ANNEXCOL_PER_DEV0   0x04
+#define        DST_MODE_SHIFT  0x04
 
 
 /* Downloaded Constant Definitions */
-#define        SG_SIZEOF       0x04
-#define        SG_PREFETCH_ALIGN_MASK  0x02
-#define        SG_PREFETCH_CNT_LIMIT   0x01
 #define        CACHELINE_MASK  0x07
 #define        SCB_TRANSFER_SIZE       0x06
 #define        PKT_OVERRUN_BUFOFFSET   0x05
+#define        SG_SIZEOF       0x04
 #define        SG_PREFETCH_ADDR_MASK   0x03
+#define        SG_PREFETCH_ALIGN_MASK  0x02
+#define        SG_PREFETCH_CNT_LIMIT   0x01
 #define        SG_PREFETCH_CNT 0x00
 #define        DOWNLOAD_CONST_COUNT    0x08
 
 
 /* Exported Labels */
-#define        LABEL_timer_isr 0x28b
 #define        LABEL_seq_isr   0x28f
+#define        LABEL_timer_isr 0x28b
index c4c8a96bf5a36b53003f8ce15549760f94dfd134..f5ea715d6ac33af433688a62669506ebb67303cf 100644 (file)
@@ -8,18 +8,6 @@
 
 #include "aic79xx_osm.h"
 
-static const ahd_reg_parse_entry_t MODE_PTR_parse_table[] = {
-       { "SRC_MODE",           0x07, 0x07 },
-       { "DST_MODE",           0x70, 0x70 }
-};
-
-int
-ahd_mode_ptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(MODE_PTR_parse_table, 2, "MODE_PTR",
-           0x00, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t INTSTAT_parse_table[] = {
        { "SPLTINT",            0x01, 0x01 },
        { "CMDCMPLT",           0x02, 0x02 },
@@ -39,110 +27,6 @@ ahd_intstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x01, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SEQINTCODE_parse_table[] = {
-       { "NO_SEQINT",          0x00, 0xff },
-       { "BAD_PHASE",          0x01, 0xff },
-       { "SEND_REJECT",        0x02, 0xff },
-       { "PROTO_VIOLATION",    0x03, 0xff },
-       { "NO_MATCH",           0x04, 0xff },
-       { "IGN_WIDE_RES",       0x05, 0xff },
-       { "PDATA_REINIT",       0x06, 0xff },
-       { "HOST_MSG_LOOP",      0x07, 0xff },
-       { "BAD_STATUS",         0x08, 0xff },
-       { "DATA_OVERRUN",       0x09, 0xff },
-       { "MKMSG_FAILED",       0x0a, 0xff },
-       { "MISSED_BUSFREE",     0x0b, 0xff },
-       { "DUMP_CARD_STATE",    0x0c, 0xff },
-       { "ILLEGAL_PHASE",      0x0d, 0xff },
-       { "INVALID_SEQINT",     0x0e, 0xff },
-       { "CFG4ISTAT_INTR",     0x0f, 0xff },
-       { "STATUS_OVERRUN",     0x10, 0xff },
-       { "CFG4OVERRUN",        0x11, 0xff },
-       { "ENTERING_NONPACK",   0x12, 0xff },
-       { "TASKMGMT_FUNC_COMPLETE",0x13, 0xff },
-       { "TASKMGMT_CMD_CMPLT_OKAY",0x14, 0xff },
-       { "TRACEPOINT0",        0x15, 0xff },
-       { "TRACEPOINT1",        0x16, 0xff },
-       { "TRACEPOINT2",        0x17, 0xff },
-       { "TRACEPOINT3",        0x18, 0xff },
-       { "SAW_HWERR",          0x19, 0xff },
-       { "BAD_SCB_STATUS",     0x1a, 0xff }
-};
-
-int
-ahd_seqintcode_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEQINTCODE_parse_table, 27, "SEQINTCODE",
-           0x02, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CLRINT_parse_table[] = {
-       { "CLRSPLTINT",         0x01, 0x01 },
-       { "CLRCMDINT",          0x02, 0x02 },
-       { "CLRSEQINT",          0x04, 0x04 },
-       { "CLRSCSIINT",         0x08, 0x08 },
-       { "CLRPCIINT",          0x10, 0x10 },
-       { "CLRSWTMINT",         0x20, 0x20 },
-       { "CLRBRKADRINT",       0x40, 0x40 },
-       { "CLRHWERRINT",        0x80, 0x80 }
-};
-
-int
-ahd_clrint_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRINT_parse_table, 8, "CLRINT",
-           0x03, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t ERROR_parse_table[] = {
-       { "DSCTMOUT",           0x02, 0x02 },
-       { "ILLOPCODE",          0x04, 0x04 },
-       { "SQPARERR",           0x08, 0x08 },
-       { "DPARERR",            0x10, 0x10 },
-       { "MPARERR",            0x20, 0x20 },
-       { "CIOACCESFAIL",       0x40, 0x40 },
-       { "CIOPARERR",          0x80, 0x80 }
-};
-
-int
-ahd_error_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(ERROR_parse_table, 7, "ERROR",
-           0x04, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t HCNTRL_parse_table[] = {
-       { "CHIPRST",            0x01, 0x01 },
-       { "CHIPRSTACK",         0x01, 0x01 },
-       { "INTEN",              0x02, 0x02 },
-       { "PAUSE",              0x04, 0x04 },
-       { "SWTIMER_START_B",    0x08, 0x08 },
-       { "SWINT",              0x10, 0x10 },
-       { "POWRDN",             0x40, 0x40 },
-       { "SEQ_RESET",          0x80, 0x80 }
-};
-
-int
-ahd_hcntrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(HCNTRL_parse_table, 8, "HCNTRL",
-           0x05, regvalue, cur_col, wrap));
-}
-
-int
-ahd_hnscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "HNSCB_QOFF",
-           0x06, regvalue, cur_col, wrap));
-}
-
-int
-ahd_hescb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "HESCB_QOFF",
-           0x08, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t HS_MAILBOX_parse_table[] = {
        { "ENINT_COALESCE",     0x40, 0x40 },
        { "HOST_TQINPOS",       0x80, 0x80 }
@@ -170,77 +54,6 @@ ahd_seqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x0c, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRSEQINTSTAT_parse_table[] = {
-       { "CLRSEQ_SPLTINT",     0x01, 0x01 },
-       { "CLRSEQ_PCIINT",      0x02, 0x02 },
-       { "CLRSEQ_SCSIINT",     0x04, 0x04 },
-       { "CLRSEQ_SEQINT",      0x08, 0x08 },
-       { "CLRSEQ_SWTMRTO",     0x10, 0x10 }
-};
-
-int
-ahd_clrseqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSEQINTSTAT_parse_table, 5, "CLRSEQINTSTAT",
-           0x0c, regvalue, cur_col, wrap));
-}
-
-int
-ahd_swtimer_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SWTIMER",
-           0x0e, regvalue, cur_col, wrap));
-}
-
-int
-ahd_snscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SNSCB_QOFF",
-           0x10, regvalue, cur_col, wrap));
-}
-
-int
-ahd_sescb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SESCB_QOFF",
-           0x12, regvalue, cur_col, wrap));
-}
-
-int
-ahd_sdscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SDSCB_QOFF",
-           0x14, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t QOFF_CTLSTA_parse_table[] = {
-       { "SCB_QSIZE_4",        0x00, 0x0f },
-       { "SCB_QSIZE_8",        0x01, 0x0f },
-       { "SCB_QSIZE_16",       0x02, 0x0f },
-       { "SCB_QSIZE_32",       0x03, 0x0f },
-       { "SCB_QSIZE_64",       0x04, 0x0f },
-       { "SCB_QSIZE_128",      0x05, 0x0f },
-       { "SCB_QSIZE_256",      0x06, 0x0f },
-       { "SCB_QSIZE_512",      0x07, 0x0f },
-       { "SCB_QSIZE_1024",     0x08, 0x0f },
-       { "SCB_QSIZE_2048",     0x09, 0x0f },
-       { "SCB_QSIZE_4096",     0x0a, 0x0f },
-       { "SCB_QSIZE_8192",     0x0b, 0x0f },
-       { "SCB_QSIZE_16384",    0x0c, 0x0f },
-       { "SCB_QSIZE",          0x0f, 0x0f },
-       { "HS_MAILBOX_ACT",     0x10, 0x10 },
-       { "SDSCB_ROLLOVR",      0x20, 0x20 },
-       { "NEW_SCB_AVAIL",      0x40, 0x40 },
-       { "EMPTY_SCB_AVAIL",    0x80, 0x80 }
-};
-
-int
-ahd_qoff_ctlsta_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(QOFF_CTLSTA_parse_table, 18, "QOFF_CTLSTA",
-           0x16, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t INTCTL_parse_table[] = {
        { "SPLTINTEN",          0x01, 0x01 },
        { "SEQINTEN",           0x02, 0x02 },
@@ -280,22 +93,6 @@ ahd_dfcntrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x19, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t DSCOMMAND0_parse_table[] = {
-       { "CIOPARCKEN",         0x01, 0x01 },
-       { "DISABLE_TWATE",      0x02, 0x02 },
-       { "EXTREQLCK",          0x10, 0x10 },
-       { "MPARCKEN",           0x20, 0x20 },
-       { "DPARCKEN",           0x40, 0x40 },
-       { "CACHETHEN",          0x80, 0x80 }
-};
-
-int
-ahd_dscommand0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(DSCOMMAND0_parse_table, 6, "DSCOMMAND0",
-           0x19, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t DFSTATUS_parse_table[] = {
        { "FIFOEMP",            0x01, 0x01 },
        { "FIFOFULL",           0x02, 0x02 },
@@ -327,146 +124,6 @@ ahd_sg_cache_shadow_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x1b, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SG_CACHE_PRE_parse_table[] = {
-       { "LAST_SEG",           0x02, 0x02 },
-       { "ODD_SEG",            0x04, 0x04 },
-       { "SG_ADDR_MASK",       0xf8, 0xf8 }
-};
-
-int
-ahd_sg_cache_pre_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SG_CACHE_PRE_parse_table, 3, "SG_CACHE_PRE",
-           0x1b, regvalue, cur_col, wrap));
-}
-
-int
-ahd_lqin_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LQIN",
-           0x20, regvalue, cur_col, wrap));
-}
-
-int
-ahd_lunptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LUNPTR",
-           0x22, regvalue, cur_col, wrap));
-}
-
-int
-ahd_cmdlenptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CMDLENPTR",
-           0x25, regvalue, cur_col, wrap));
-}
-
-int
-ahd_attrptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ATTRPTR",
-           0x26, regvalue, cur_col, wrap));
-}
-
-int
-ahd_flagptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "FLAGPTR",
-           0x27, regvalue, cur_col, wrap));
-}
-
-int
-ahd_cmdptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CMDPTR",
-           0x28, regvalue, cur_col, wrap));
-}
-
-int
-ahd_qnextptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "QNEXTPTR",
-           0x29, regvalue, cur_col, wrap));
-}
-
-int
-ahd_abrtbyteptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ABRTBYTEPTR",
-           0x2b, regvalue, cur_col, wrap));
-}
-
-int
-ahd_abrtbitptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ABRTBITPTR",
-           0x2c, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LUNLEN_parse_table[] = {
-       { "ILUNLEN",            0x0f, 0x0f },
-       { "TLUNLEN",            0xf0, 0xf0 }
-};
-
-int
-ahd_lunlen_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LUNLEN_parse_table, 2, "LUNLEN",
-           0x30, regvalue, cur_col, wrap));
-}
-
-int
-ahd_cdblimit_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CDBLIMIT",
-           0x31, regvalue, cur_col, wrap));
-}
-
-int
-ahd_maxcmd_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MAXCMD",
-           0x32, regvalue, cur_col, wrap));
-}
-
-int
-ahd_maxcmdcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MAXCMDCNT",
-           0x33, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LQCTL1_parse_table[] = {
-       { "ABORTPENDING",       0x01, 0x01 },
-       { "SINGLECMD",          0x02, 0x02 },
-       { "PCI2PCI",            0x04, 0x04 }
-};
-
-int
-ahd_lqctl1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQCTL1_parse_table, 3, "LQCTL1",
-           0x38, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LQCTL2_parse_table[] = {
-       { "LQOPAUSE",           0x01, 0x01 },
-       { "LQOTOIDLE",          0x02, 0x02 },
-       { "LQOCONTINUE",        0x04, 0x04 },
-       { "LQORETRY",           0x08, 0x08 },
-       { "LQIPAUSE",           0x10, 0x10 },
-       { "LQITOIDLE",          0x20, 0x20 },
-       { "LQICONTINUE",        0x40, 0x40 },
-       { "LQIRETRY",           0x80, 0x80 }
-};
-
-int
-ahd_lqctl2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQCTL2_parse_table, 8, "LQCTL2",
-           0x39, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SCSISEQ0_parse_table[] = {
        { "SCSIRSTO",           0x01, 0x01 },
        { "FORCEBUSFREE",       0x10, 0x10 },
@@ -498,37 +155,6 @@ ahd_scsiseq1_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x3b, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SXFRCTL0_parse_table[] = {
-       { "SPIOEN",             0x08, 0x08 },
-       { "BIOSCANCELEN",       0x10, 0x10 },
-       { "DFPEXP",             0x40, 0x40 },
-       { "DFON",               0x80, 0x80 }
-};
-
-int
-ahd_sxfrctl0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SXFRCTL0_parse_table, 4, "SXFRCTL0",
-           0x3c, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SXFRCTL1_parse_table[] = {
-       { "STPWEN",             0x01, 0x01 },
-       { "ACTNEGEN",           0x02, 0x02 },
-       { "ENSTIMER",           0x04, 0x04 },
-       { "STIMESEL",           0x18, 0x18 },
-       { "ENSPCHK",            0x20, 0x20 },
-       { "ENSACHK",            0x40, 0x40 },
-       { "BITBUCKET",          0x80, 0x80 }
-};
-
-int
-ahd_sxfrctl1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SXFRCTL1_parse_table, 7, "SXFRCTL1",
-           0x3d, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t DFFSTAT_parse_table[] = {
        { "CURRFIFO_0",         0x00, 0x03 },
        { "CURRFIFO_1",         0x01, 0x03 },
@@ -545,40 +171,6 @@ ahd_dffstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x3f, regvalue, cur_col, wrap));
 }
 
-int
-ahd_multargid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MULTARGID",
-           0x40, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCSISIGO_parse_table[] = {
-       { "P_DATAOUT",          0x00, 0xe0 },
-       { "P_DATAOUT_DT",       0x20, 0xe0 },
-       { "P_DATAIN",           0x40, 0xe0 },
-       { "P_DATAIN_DT",        0x60, 0xe0 },
-       { "P_COMMAND",          0x80, 0xe0 },
-       { "P_MESGOUT",          0xa0, 0xe0 },
-       { "P_STATUS",           0xc0, 0xe0 },
-       { "P_MESGIN",           0xe0, 0xe0 },
-       { "ACKO",               0x01, 0x01 },
-       { "REQO",               0x02, 0x02 },
-       { "BSYO",               0x04, 0x04 },
-       { "SELO",               0x08, 0x08 },
-       { "ATNO",               0x10, 0x10 },
-       { "MSGO",               0x20, 0x20 },
-       { "IOO",                0x40, 0x40 },
-       { "CDO",                0x80, 0x80 },
-       { "PHASE_MASK",         0xe0, 0xe0 }
-};
-
-int
-ahd_scsisigo_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCSISIGO_parse_table, 17, "SCSISIGO",
-           0x40, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SCSISIGI_parse_table[] = {
        { "P_DATAOUT",          0x00, 0xe0 },
        { "P_DATAOUT_DT",       0x20, 0xe0 },
@@ -623,13 +215,6 @@ ahd_scsiphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x42, regvalue, cur_col, wrap));
 }
 
-int
-ahd_scsidat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCSIDAT",
-           0x44, regvalue, cur_col, wrap));
-}
-
 int
 ahd_scsibus_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
@@ -637,18 +222,6 @@ ahd_scsibus_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x46, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t TARGIDIN_parse_table[] = {
-       { "TARGID",             0x0f, 0x0f },
-       { "CLKOUT",             0x80, 0x80 }
-};
-
-int
-ahd_targidin_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(TARGIDIN_parse_table, 2, "TARGIDIN",
-           0x48, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SELID_parse_table[] = {
        { "ONEBIT",             0x08, 0x08 },
        { "SELID_MASK",         0xf0, 0xf0 }
@@ -661,38 +234,6 @@ ahd_selid_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x49, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t OPTIONMODE_parse_table[] = {
-       { "AUTO_MSGOUT_DE",     0x02, 0x02 },
-       { "ENDGFORMCHK",        0x04, 0x04 },
-       { "BUSFREEREV",         0x10, 0x10 },
-       { "BIASCANCTL",         0x20, 0x20 },
-       { "AUTOACKEN",          0x40, 0x40 },
-       { "BIOSCANCTL",         0x80, 0x80 },
-       { "OPTIONMODE_DEFAULTS",0x02, 0x02 }
-};
-
-int
-ahd_optionmode_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(OPTIONMODE_parse_table, 7, "OPTIONMODE",
-           0x4a, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SBLKCTL_parse_table[] = {
-       { "SELWIDE",            0x02, 0x02 },
-       { "ENAB20",             0x04, 0x04 },
-       { "ENAB40",             0x08, 0x08 },
-       { "DIAGLEDON",          0x40, 0x40 },
-       { "DIAGLEDEN",          0x80, 0x80 }
-};
-
-int
-ahd_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SBLKCTL_parse_table, 5, "SBLKCTL",
-           0x4a, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SSTAT0_parse_table[] = {
        { "ARBDO",              0x01, 0x01 },
        { "SPIORDY",            0x02, 0x02 },
@@ -728,23 +269,6 @@ ahd_simode0_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x4b, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRSINT0_parse_table[] = {
-       { "CLRARBDO",           0x01, 0x01 },
-       { "CLRSPIORDY",         0x02, 0x02 },
-       { "CLROVERRUN",         0x04, 0x04 },
-       { "CLRIOERR",           0x08, 0x08 },
-       { "CLRSELINGO",         0x10, 0x10 },
-       { "CLRSELDI",           0x20, 0x20 },
-       { "CLRSELDO",           0x40, 0x40 }
-};
-
-int
-ahd_clrsint0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSINT0_parse_table, 7, "CLRSINT0",
-           0x4b, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SSTAT1_parse_table[] = {
        { "REQINIT",            0x01, 0x01 },
        { "STRB2FAST",          0x02, 0x02 },
@@ -763,23 +287,6 @@ ahd_sstat1_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x4c, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRSINT1_parse_table[] = {
-       { "CLRREQINIT",         0x01, 0x01 },
-       { "CLRSTRB2FAST",       0x02, 0x02 },
-       { "CLRSCSIPERR",        0x04, 0x04 },
-       { "CLRBUSFREE",         0x08, 0x08 },
-       { "CLRSCSIRSTI",        0x20, 0x20 },
-       { "CLRATNO",            0x40, 0x40 },
-       { "CLRSELTIMEO",        0x80, 0x80 }
-};
-
-int
-ahd_clrsint1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSINT1_parse_table, 7, "CLRSINT1",
-           0x4c, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SSTAT2_parse_table[] = {
        { "BUSFREE_LQO",        0x40, 0xc0 },
        { "BUSFREE_DFF0",       0x80, 0xc0 },
@@ -800,20 +307,6 @@ ahd_sstat2_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x4d, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRSINT2_parse_table[] = {
-       { "CLRDMADONE",         0x01, 0x01 },
-       { "CLRSDONE",           0x02, 0x02 },
-       { "CLRWIDE_RES",        0x04, 0x04 },
-       { "CLRNONPACKREQ",      0x20, 0x20 }
-};
-
-int
-ahd_clrsint2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSINT2_parse_table, 4, "CLRSINT2",
-           0x4d, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t PERRDIAG_parse_table[] = {
        { "DTERR",              0x01, 0x01 },
        { "DGFORMERR",          0x02, 0x02 },
@@ -832,13 +325,6 @@ ahd_perrdiag_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x4e, regvalue, cur_col, wrap));
 }
 
-int
-ahd_lqistate_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LQISTATE",
-           0x4e, regvalue, cur_col, wrap));
-}
-
 int
 ahd_soffcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
@@ -846,13 +332,6 @@ ahd_soffcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x4f, regvalue, cur_col, wrap));
 }
 
-int
-ahd_lqostate_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LQOSTATE",
-           0x4f, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQISTAT0_parse_table[] = {
        { "LQIATNCMD",          0x01, 0x01 },
        { "LQIATNLQ",           0x02, 0x02 },
@@ -869,56 +348,6 @@ ahd_lqistat0_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x50, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t LQIMODE0_parse_table[] = {
-       { "ENLQIATNCMD",        0x01, 0x01 },
-       { "ENLQIATNLQ",         0x02, 0x02 },
-       { "ENLQIBADLQT",        0x04, 0x04 },
-       { "ENLQICRCT2",         0x08, 0x08 },
-       { "ENLQICRCT1",         0x10, 0x10 },
-       { "ENLQIATNQASK",       0x20, 0x20 }
-};
-
-int
-ahd_lqimode0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQIMODE0_parse_table, 6, "LQIMODE0",
-           0x50, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CLRLQIINT0_parse_table[] = {
-       { "CLRLQIATNCMD",       0x01, 0x01 },
-       { "CLRLQIATNLQ",        0x02, 0x02 },
-       { "CLRLQIBADLQT",       0x04, 0x04 },
-       { "CLRLQICRCT2",        0x08, 0x08 },
-       { "CLRLQICRCT1",        0x10, 0x10 },
-       { "CLRLQIATNQAS",       0x20, 0x20 }
-};
-
-int
-ahd_clrlqiint0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRLQIINT0_parse_table, 6, "CLRLQIINT0",
-           0x50, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LQIMODE1_parse_table[] = {
-       { "ENLQIOVERI_NLQ",     0x01, 0x01 },
-       { "ENLQIOVERI_LQ",      0x02, 0x02 },
-       { "ENLQIBADLQI",        0x04, 0x04 },
-       { "ENLQICRCI_NLQ",      0x08, 0x08 },
-       { "ENLQICRCI_LQ",       0x10, 0x10 },
-       { "ENLIQABORT",         0x20, 0x20 },
-       { "ENLQIPHASE_NLQ",     0x40, 0x40 },
-       { "ENLQIPHASE_LQ",      0x80, 0x80 }
-};
-
-int
-ahd_lqimode1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQIMODE1_parse_table, 8, "LQIMODE1",
-           0x51, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQISTAT1_parse_table[] = {
        { "LQIOVERI_NLQ",       0x01, 0x01 },
        { "LQIOVERI_LQ",        0x02, 0x02 },
@@ -937,24 +366,6 @@ ahd_lqistat1_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x51, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRLQIINT1_parse_table[] = {
-       { "CLRLQIOVERI_NLQ",    0x01, 0x01 },
-       { "CLRLQIOVERI_LQ",     0x02, 0x02 },
-       { "CLRLQIBADLQI",       0x04, 0x04 },
-       { "CLRLQICRCI_NLQ",     0x08, 0x08 },
-       { "CLRLQICRCI_LQ",      0x10, 0x10 },
-       { "CLRLIQABORT",        0x20, 0x20 },
-       { "CLRLQIPHASE_NLQ",    0x40, 0x40 },
-       { "CLRLQIPHASE_LQ",     0x80, 0x80 }
-};
-
-int
-ahd_clrlqiint1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRLQIINT1_parse_table, 8, "CLRLQIINT1",
-           0x51, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQISTAT2_parse_table[] = {
        { "LQIGSAVAIL",         0x01, 0x01 },
        { "LQISTOPCMD",         0x02, 0x02 },
@@ -985,30 +396,6 @@ ahd_sstat3_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x53, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SIMODE3_parse_table[] = {
-       { "ENOSRAMPERR",        0x01, 0x01 },
-       { "ENNTRAMPERR",        0x02, 0x02 }
-};
-
-int
-ahd_simode3_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SIMODE3_parse_table, 2, "SIMODE3",
-           0x53, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CLRSINT3_parse_table[] = {
-       { "CLROSRAMPERR",       0x01, 0x01 },
-       { "CLRNTRAMPERR",       0x02, 0x02 }
-};
-
-int
-ahd_clrsint3_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSINT3_parse_table, 2, "CLRSINT3",
-           0x53, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQOSTAT0_parse_table[] = {
        { "LQOTCRC",            0x01, 0x01 },
        { "LQOATNPKT",          0x02, 0x02 },
@@ -1024,51 +411,6 @@ ahd_lqostat0_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x54, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRLQOINT0_parse_table[] = {
-       { "CLRLQOTCRC",         0x01, 0x01 },
-       { "CLRLQOATNPKT",       0x02, 0x02 },
-       { "CLRLQOATNLQ",        0x04, 0x04 },
-       { "CLRLQOSTOPT2",       0x08, 0x08 },
-       { "CLRLQOTARGSCBPERR",  0x10, 0x10 }
-};
-
-int
-ahd_clrlqoint0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRLQOINT0_parse_table, 5, "CLRLQOINT0",
-           0x54, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LQOMODE0_parse_table[] = {
-       { "ENLQOTCRC",          0x01, 0x01 },
-       { "ENLQOATNPKT",        0x02, 0x02 },
-       { "ENLQOATNLQ",         0x04, 0x04 },
-       { "ENLQOSTOPT2",        0x08, 0x08 },
-       { "ENLQOTARGSCBPERR",   0x10, 0x10 }
-};
-
-int
-ahd_lqomode0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQOMODE0_parse_table, 5, "LQOMODE0",
-           0x54, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LQOMODE1_parse_table[] = {
-       { "ENLQOPHACHGINPKT",   0x01, 0x01 },
-       { "ENLQOBUSFREE",       0x02, 0x02 },
-       { "ENLQOBADQAS",        0x04, 0x04 },
-       { "ENLQOSTOPI2",        0x08, 0x08 },
-       { "ENLQOINITSCBPERR",   0x10, 0x10 }
-};
-
-int
-ahd_lqomode1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQOMODE1_parse_table, 5, "LQOMODE1",
-           0x55, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQOSTAT1_parse_table[] = {
        { "LQOPHACHGINPKT",     0x01, 0x01 },
        { "LQOBUSFREE",         0x02, 0x02 },
@@ -1084,21 +426,6 @@ ahd_lqostat1_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x55, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t CLRLQOINT1_parse_table[] = {
-       { "CLRLQOPHACHGINPKT",  0x01, 0x01 },
-       { "CLRLQOBUSFREE",      0x02, 0x02 },
-       { "CLRLQOBADQAS",       0x04, 0x04 },
-       { "CLRLQOSTOPI2",       0x08, 0x08 },
-       { "CLRLQOINITSCBPERR",  0x10, 0x10 }
-};
-
-int
-ahd_clrlqoint1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRLQOINT1_parse_table, 5, "CLRLQOINT1",
-           0x55, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t LQOSTAT2_parse_table[] = {
        { "LQOSTOP0",           0x01, 0x01 },
        { "LQOPHACHGOUTPKT",    0x02, 0x02 },
@@ -1113,13 +440,6 @@ ahd_lqostat2_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x56, regvalue, cur_col, wrap));
 }
 
-int
-ahd_os_space_cnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "OS_SPACE_CNT",
-           0x56, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SIMODE1_parse_table[] = {
        { "ENREQINIT",          0x01, 0x01 },
        { "ENSTRB2FAST",        0x02, 0x02 },
@@ -1138,13 +458,6 @@ ahd_simode1_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x57, regvalue, cur_col, wrap));
 }
 
-int
-ahd_gsfifo_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "GSFIFO",
-           0x58, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t DFFSXFRCTL_parse_table[] = {
        { "RSTCHN",             0x01, 0x01 },
        { "CLRCHN",             0x02, 0x02 },
@@ -1159,44 +472,6 @@ ahd_dffsxfrctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x5a, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t LQOSCSCTL_parse_table[] = {
-       { "LQONOCHKOVER",       0x01, 0x01 },
-       { "LQONOHOLDLACK",      0x02, 0x02 },
-       { "LQOBUSETDLY",        0x40, 0x40 },
-       { "LQOH2A_VERSION",     0x80, 0x80 }
-};
-
-int
-ahd_lqoscsctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LQOSCSCTL_parse_table, 4, "LQOSCSCTL",
-           0x5a, regvalue, cur_col, wrap));
-}
-
-int
-ahd_nextscb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "NEXTSCB",
-           0x5a, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CLRSEQINTSRC_parse_table[] = {
-       { "CLRCFG4TCMD",        0x01, 0x01 },
-       { "CLRCFG4ICMD",        0x02, 0x02 },
-       { "CLRCFG4TSTAT",       0x04, 0x04 },
-       { "CLRCFG4ISTAT",       0x08, 0x08 },
-       { "CLRCFG4DATA",        0x10, 0x10 },
-       { "CLRSAVEPTRS",        0x20, 0x20 },
-       { "CLRCTXTDONE",        0x40, 0x40 }
-};
-
-int
-ahd_clrseqintsrc_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CLRSEQINTSRC_parse_table, 7, "CLRSEQINTSRC",
-           0x5b, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t SEQINTSRC_parse_table[] = {
        { "CFG4TCMD",           0x01, 0x01 },
        { "CFG4ICMD",           0x02, 0x02 },
@@ -1231,13 +506,6 @@ ahd_seqimode_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x5c, regvalue, cur_col, wrap));
 }
 
-int
-ahd_currscb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CURRSCB",
-           0x5c, regvalue, cur_col, wrap));
-}
-
 static const ahd_reg_parse_entry_t MDFFSTAT_parse_table[] = {
        { "FIFOFREE",           0x01, 0x01 },
        { "DATAINFIFO",         0x02, 0x02 },
@@ -1256,1213 +524,222 @@ ahd_mdffstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
 }
 
 int
-ahd_lastscb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LASTSCB",
-           0x5e, regvalue, cur_col, wrap));
-}
-
-int
-ahd_shaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SHADDR",
-           0x60, regvalue, cur_col, wrap));
-}
-
-int
-ahd_negoaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "NEGOADDR",
-           0x60, regvalue, cur_col, wrap));
-}
-
-int
-ahd_negperiod_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "NEGPERIOD",
-           0x61, regvalue, cur_col, wrap));
-}
-
-int
-ahd_negoffset_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_seloid_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "NEGOFFSET",
-           0x62, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "SELOID",
+           0x6b, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t NEGPPROPTS_parse_table[] = {
-       { "PPROPT_IUT",         0x01, 0x01 },
-       { "PPROPT_DT",          0x02, 0x02 },
-       { "PPROPT_QAS",         0x04, 0x04 },
-       { "PPROPT_PACE",        0x08, 0x08 }
+static const ahd_reg_parse_entry_t SG_STATE_parse_table[] = {
+       { "SEGS_AVAIL",         0x01, 0x01 },
+       { "LOADING_NEEDED",     0x02, 0x02 },
+       { "FETCH_INPROG",       0x04, 0x04 }
 };
 
 int
-ahd_negppropts_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_sg_state_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NEGPPROPTS_parse_table, 4, "NEGPPROPTS",
-           0x63, regvalue, cur_col, wrap));
+       return (ahd_print_register(SG_STATE_parse_table, 3, "SG_STATE",
+           0xa6, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t NEGCONOPTS_parse_table[] = {
-       { "WIDEXFER",           0x01, 0x01 },
-       { "ENAUTOATNO",         0x02, 0x02 },
-       { "ENAUTOATNI",         0x04, 0x04 },
-       { "ENSLOWCRC",          0x08, 0x08 },
-       { "RTI_OVRDTRN",        0x10, 0x10 },
-       { "RTI_WRTDIS",         0x20, 0x20 },
-       { "ENSNAPSHOT",         0x40, 0x40 }
+static const ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = {
+       { "CCSCBRESET",         0x01, 0x01 },
+       { "CCSCBDIR",           0x04, 0x04 },
+       { "CCSCBEN",            0x08, 0x08 },
+       { "CCARREN",            0x10, 0x10 },
+       { "ARRDONE",            0x40, 0x40 },
+       { "CCSCBDONE",          0x80, 0x80 }
 };
 
 int
-ahd_negconopts_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NEGCONOPTS_parse_table, 7, "NEGCONOPTS",
-           0x64, regvalue, cur_col, wrap));
-}
-
-int
-ahd_annexcol_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ANNEXCOL",
-           0x65, regvalue, cur_col, wrap));
-}
-
-int
-ahd_annexdat_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_ccscbctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "ANNEXDAT",
-           0x66, regvalue, cur_col, wrap));
+       return (ahd_print_register(CCSCBCTL_parse_table, 6, "CCSCBCTL",
+           0xad, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SCSCHKN_parse_table[] = {
-       { "LSTSGCLRDIS",        0x01, 0x01 },
-       { "SHVALIDSTDIS",       0x02, 0x02 },
-       { "DFFACTCLR",          0x04, 0x04 },
-       { "SDONEMSKDIS",        0x08, 0x08 },
-       { "WIDERESEN",          0x10, 0x10 },
-       { "CURRFIFODEF",        0x20, 0x20 },
-       { "STSELSKIDDIS",       0x40, 0x40 },
-       { "BIDICHKDIS",         0x80, 0x80 }
+static const ahd_reg_parse_entry_t CCSGCTL_parse_table[] = {
+       { "CCSGRESET",          0x01, 0x01 },
+       { "SG_FETCH_REQ",       0x02, 0x02 },
+       { "CCSGENACK",          0x08, 0x08 },
+       { "SG_CACHE_AVAIL",     0x10, 0x10 },
+       { "CCSGDONE",           0x80, 0x80 },
+       { "CCSGEN",             0x0c, 0x0c }
 };
 
 int
-ahd_scschkn_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(SCSCHKN_parse_table, 8, "SCSCHKN",
-           0x66, regvalue, cur_col, wrap));
+       return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL",
+           0xad, regvalue, cur_col, wrap));
 }
 
-int
-ahd_iownid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "IOWNID",
-           0x67, regvalue, cur_col, wrap));
-}
+static const ahd_reg_parse_entry_t SEQCTL0_parse_table[] = {
+       { "LOADRAM",            0x01, 0x01 },
+       { "SEQRESET",           0x02, 0x02 },
+       { "STEP",               0x04, 0x04 },
+       { "BRKADRINTEN",        0x08, 0x08 },
+       { "FASTMODE",           0x10, 0x10 },
+       { "FAILDIS",            0x20, 0x20 },
+       { "PAUSEDIS",           0x40, 0x40 },
+       { "PERRORDIS",          0x80, 0x80 }
+};
 
 int
-ahd_shcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_seqctl0_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "SHCNT",
-           0x68, regvalue, cur_col, wrap));
+       return (ahd_print_register(SEQCTL0_parse_table, 8, "SEQCTL0",
+           0xd6, regvalue, cur_col, wrap));
 }
 
-int
-ahd_townid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "TOWNID",
-           0x69, regvalue, cur_col, wrap));
-}
+static const ahd_reg_parse_entry_t SEQINTCTL_parse_table[] = {
+       { "IRET",               0x01, 0x01 },
+       { "INTMASK1",           0x02, 0x02 },
+       { "INTMASK2",           0x04, 0x04 },
+       { "SCS_SEQ_INT1M0",     0x08, 0x08 },
+       { "SCS_SEQ_INT1M1",     0x10, 0x10 },
+       { "INT1_CONTEXT",       0x20, 0x20 },
+       { "INTVEC1DSL",         0x80, 0x80 }
+};
 
 int
-ahd_seloid_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_seqintctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "SELOID",
-           0x6b, regvalue, cur_col, wrap));
+       return (ahd_print_register(SEQINTCTL_parse_table, 7, "SEQINTCTL",
+           0xd9, regvalue, cur_col, wrap));
 }
 
 int
-ahd_haddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_sram_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "HADDR",
-           0x70, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "SRAM_BASE",
+           0x100, regvalue, cur_col, wrap));
 }
 
 int
-ahd_hcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "HCNT",
-           0x78, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "QFREEZE_COUNT",
+           0x132, regvalue, cur_col, wrap));
 }
 
 int
-ahd_sghaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_kernel_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "SGHADDR",
-           0x7c, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT",
+           0x134, regvalue, cur_col, wrap));
 }
 
 int
-ahd_scbhaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "SCBHADDR",
-           0x7c, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "SAVED_MODE",
+           0x136, regvalue, cur_col, wrap));
 }
 
-int
-ahd_sghcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SGHCNT",
-           0x84, regvalue, cur_col, wrap));
-}
+static const ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = {
+       { "NO_DISCONNECT",      0x01, 0x01 },
+       { "SPHASE_PENDING",     0x02, 0x02 },
+       { "DPHASE_PENDING",     0x04, 0x04 },
+       { "CMDPHASE_PENDING",   0x08, 0x08 },
+       { "TARG_CMD_PENDING",   0x10, 0x10 },
+       { "DPHASE",             0x20, 0x20 },
+       { "NO_CDB_SENT",        0x40, 0x40 },
+       { "TARGET_CMD_IS_TAGGED",0x40, 0x40 },
+       { "NOT_IDENTIFIED",     0x80, 0x80 }
+};
 
 int
-ahd_scbhcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(NULL, 0, "SCBHCNT",
-           0x84, regvalue, cur_col, wrap));
+       return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS",
+           0x139, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t DFF_THRSH_parse_table[] = {
-       { "WR_DFTHRSH_MIN",     0x00, 0x70 },
-       { "RD_DFTHRSH_MIN",     0x00, 0x07 },
-       { "RD_DFTHRSH_25",      0x01, 0x07 },
-       { "RD_DFTHRSH_50",      0x02, 0x07 },
-       { "RD_DFTHRSH_63",      0x03, 0x07 },
-       { "RD_DFTHRSH_75",      0x04, 0x07 },
-       { "RD_DFTHRSH_85",      0x05, 0x07 },
-       { "RD_DFTHRSH_90",      0x06, 0x07 },
-       { "RD_DFTHRSH_MAX",     0x07, 0x07 },
-       { "WR_DFTHRSH_25",      0x10, 0x70 },
-       { "WR_DFTHRSH_50",      0x20, 0x70 },
-       { "WR_DFTHRSH_63",      0x30, 0x70 },
-       { "WR_DFTHRSH_75",      0x40, 0x70 },
-       { "WR_DFTHRSH_85",      0x50, 0x70 },
-       { "WR_DFTHRSH_90",      0x60, 0x70 },
-       { "WR_DFTHRSH_MAX",     0x70, 0x70 },
-       { "RD_DFTHRSH",         0x07, 0x07 },
-       { "WR_DFTHRSH",         0x70, 0x70 }
+static const ahd_reg_parse_entry_t LASTPHASE_parse_table[] = {
+       { "P_DATAOUT",          0x00, 0xe0 },
+       { "P_DATAOUT_DT",       0x20, 0xe0 },
+       { "P_DATAIN",           0x40, 0xe0 },
+       { "P_DATAIN_DT",        0x60, 0xe0 },
+       { "P_COMMAND",          0x80, 0xe0 },
+       { "P_MESGOUT",          0xa0, 0xe0 },
+       { "P_STATUS",           0xc0, 0xe0 },
+       { "P_MESGIN",           0xe0, 0xe0 },
+       { "P_BUSFREE",          0x01, 0x01 },
+       { "MSGI",               0x20, 0x20 },
+       { "IOI",                0x40, 0x40 },
+       { "CDI",                0x80, 0x80 },
+       { "PHASE_MASK",         0xe0, 0xe0 }
 };
 
 int
-ahd_dff_thrsh_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(DFF_THRSH_parse_table, 18, "DFF_THRSH",
-           0x88, regvalue, cur_col, wrap));
+       return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE",
+           0x13c, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t PCIXCTL_parse_table[] = {
-       { "CMPABCDIS",          0x01, 0x01 },
-       { "TSCSERREN",          0x02, 0x02 },
-       { "SRSPDPEEN",          0x04, 0x04 },
-       { "SPLTSTADIS",         0x08, 0x08 },
-       { "SPLTSMADIS",         0x10, 0x10 },
-       { "UNEXPSCIEN",         0x20, 0x20 },
-       { "SERRPULSE",          0x80, 0x80 }
+static const ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = {
+       { "PENDING_MK_MESSAGE", 0x01, 0x01 },
+       { "TARGET_MSG_PENDING", 0x02, 0x02 },
+       { "SELECTOUT_QFROZEN",  0x04, 0x04 }
 };
 
 int
-ahd_pcixctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(PCIXCTL_parse_table, 7, "PCIXCTL",
-           0x93, regvalue, cur_col, wrap));
+       return (ahd_print_register(SEQ_FLAGS2_parse_table, 3, "SEQ_FLAGS2",
+           0x14d, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = {
-       { "RXSPLTRSP",          0x01, 0x01 },
-       { "RXSCEMSG",           0x02, 0x02 },
-       { "RXOVRUN",            0x04, 0x04 },
-       { "CNTNOTCMPLT",        0x08, 0x08 },
-       { "SCDATBUCKET",        0x10, 0x10 },
-       { "SCADERR",            0x20, 0x20 },
-       { "SCBCERR",            0x40, 0x40 },
-       { "STAETERM",           0x80, 0x80 }
-};
-
 int
-ahd_dchspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_mk_message_scb_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(DCHSPLTSTAT0_parse_table, 8, "DCHSPLTSTAT0",
-           0x96, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCB",
+           0x160, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t DCHSPLTSTAT1_parse_table[] = {
-       { "RXDATABUCKET",       0x01, 0x01 }
-};
-
 int
-ahd_dchspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_mk_message_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(DCHSPLTSTAT1_parse_table, 1, "DCHSPLTSTAT1",
-           0x97, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCSIID",
+           0x162, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SGSPLTSTAT0_parse_table[] = {
-       { "RXSPLTRSP",          0x01, 0x01 },
-       { "RXSCEMSG",           0x02, 0x02 },
-       { "RXOVRUN",            0x04, 0x04 },
-       { "CNTNOTCMPLT",        0x08, 0x08 },
-       { "SCDATBUCKET",        0x10, 0x10 },
-       { "SCADERR",            0x20, 0x20 },
-       { "SCBCERR",            0x40, 0x40 },
-       { "STAETERM",           0x80, 0x80 }
-};
-
 int
-ahd_sgspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(SGSPLTSTAT0_parse_table, 8, "SGSPLTSTAT0",
-           0x9e, regvalue, cur_col, wrap));
+       return (ahd_print_register(NULL, 0, "SCB_BASE",
+           0x180, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SGSPLTSTAT1_parse_table[] = {
-       { "RXDATABUCKET",       0x01, 0x01 }
+static const ahd_reg_parse_entry_t SCB_CONTROL_parse_table[] = {
+       { "SCB_TAG_TYPE",       0x03, 0x03 },
+       { "DISCONNECTED",       0x04, 0x04 },
+       { "STATUS_RCVD",        0x08, 0x08 },
+       { "MK_MESSAGE",         0x10, 0x10 },
+       { "TAG_ENB",            0x20, 0x20 },
+       { "DISCENB",            0x40, 0x40 },
+       { "TARGET_SCB",         0x80, 0x80 }
 };
 
 int
-ahd_sgspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_scb_control_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahd_print_register(SGSPLTSTAT1_parse_table, 1, "SGSPLTSTAT1",
-           0x9f, regvalue, cur_col, wrap));
+       return (ahd_print_register(SCB_CONTROL_parse_table, 7, "SCB_CONTROL",
+           0x192, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t DF0PCISTAT_parse_table[] = {
-       { "DPR",                0x01, 0x01 },
-       { "TWATERR",            0x02, 0x02 },
-       { "RDPERR",             0x04, 0x04 },
-       { "SCAAPERR",           0x08, 0x08 },
-       { "RTA",                0x10, 0x10 },
-       { "RMA",                0x20, 0x20 },
-       { "SSE",                0x40, 0x40 },
-       { "DPE",                0x80, 0x80 }
+static const ahd_reg_parse_entry_t SCB_SCSIID_parse_table[] = {
+       { "OID",                0x0f, 0x0f },
+       { "TID",                0xf0, 0xf0 }
 };
 
 int
-ahd_df0pcistat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(DF0PCISTAT_parse_table, 8, "DF0PCISTAT",
-           0xa0, regvalue, cur_col, wrap));
-}
-
-int
-ahd_reg0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "REG0",
-           0xa0, regvalue, cur_col, wrap));
-}
-
-int
-ahd_reg_isr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "REG_ISR",
-           0xa4, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SG_STATE_parse_table[] = {
-       { "SEGS_AVAIL",         0x01, 0x01 },
-       { "LOADING_NEEDED",     0x02, 0x02 },
-       { "FETCH_INPROG",       0x04, 0x04 }
-};
-
-int
-ahd_sg_state_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SG_STATE_parse_table, 3, "SG_STATE",
-           0xa6, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t TARGPCISTAT_parse_table[] = {
-       { "TWATERR",            0x02, 0x02 },
-       { "STA",                0x08, 0x08 },
-       { "SSE",                0x40, 0x40 },
-       { "DPE",                0x80, 0x80 }
-};
-
-int
-ahd_targpcistat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(TARGPCISTAT_parse_table, 4, "TARGPCISTAT",
-           0xa7, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCBPTR",
-           0xa8, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCBAUTOPTR_parse_table[] = {
-       { "SCBPTR_OFF",         0x07, 0x07 },
-       { "SCBPTR_ADDR",        0x38, 0x38 },
-       { "AUSCBPTR_EN",        0x80, 0x80 }
-};
-
-int
-ahd_scbautoptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCBAUTOPTR_parse_table, 3, "SCBAUTOPTR",
-           0xab, regvalue, cur_col, wrap));
-}
-
-int
-ahd_ccsgaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CCSGADDR",
-           0xac, regvalue, cur_col, wrap));
-}
-
-int
-ahd_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CCSCBADDR",
-           0xac, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = {
-       { "CCSCBRESET",         0x01, 0x01 },
-       { "CCSCBDIR",           0x04, 0x04 },
-       { "CCSCBEN",            0x08, 0x08 },
-       { "CCARREN",            0x10, 0x10 },
-       { "ARRDONE",            0x40, 0x40 },
-       { "CCSCBDONE",          0x80, 0x80 }
-};
-
-int
-ahd_ccscbctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CCSCBCTL_parse_table, 6, "CCSCBCTL",
-           0xad, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t CCSGCTL_parse_table[] = {
-       { "CCSGRESET",          0x01, 0x01 },
-       { "SG_FETCH_REQ",       0x02, 0x02 },
-       { "CCSGENACK",          0x08, 0x08 },
-       { "SG_CACHE_AVAIL",     0x10, 0x10 },
-       { "CCSGDONE",           0x80, 0x80 },
-       { "CCSGEN",             0x0c, 0x0c }
-};
-
-int
-ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL",
-           0xad, regvalue, cur_col, wrap));
-}
-
-int
-ahd_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CCSGRAM",
-           0xb0, regvalue, cur_col, wrap));
-}
-
-int
-ahd_ccscbram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CCSCBRAM",
-           0xb0, regvalue, cur_col, wrap));
-}
-
-int
-ahd_brddat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "BRDDAT",
-           0xb8, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t BRDCTL_parse_table[] = {
-       { "BRDSTB",             0x01, 0x01 },
-       { "BRDRW",              0x02, 0x02 },
-       { "BRDEN",              0x04, 0x04 },
-       { "BRDADDR",            0x38, 0x38 },
-       { "FLXARBREQ",          0x40, 0x40 },
-       { "FLXARBACK",          0x80, 0x80 }
-};
-
-int
-ahd_brdctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(BRDCTL_parse_table, 6, "BRDCTL",
-           0xb9, regvalue, cur_col, wrap));
-}
-
-int
-ahd_seeadr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SEEADR",
-           0xba, regvalue, cur_col, wrap));
-}
-
-int
-ahd_seedat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SEEDAT",
-           0xbc, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEECTL_parse_table[] = {
-       { "SEEOP_ERAL",         0x40, 0x70 },
-       { "SEEOP_WRITE",        0x50, 0x70 },
-       { "SEEOP_READ",         0x60, 0x70 },
-       { "SEEOP_ERASE",        0x70, 0x70 },
-       { "SEESTART",           0x01, 0x01 },
-       { "SEERST",             0x02, 0x02 },
-       { "SEEOPCODE",          0x70, 0x70 },
-       { "SEEOP_EWEN",         0x40, 0x40 },
-       { "SEEOP_WALL",         0x40, 0x40 },
-       { "SEEOP_EWDS",         0x40, 0x40 }
-};
-
-int
-ahd_seectl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEECTL_parse_table, 10, "SEECTL",
-           0xbe, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEESTAT_parse_table[] = {
-       { "SEESTART",           0x01, 0x01 },
-       { "SEEBUSY",            0x02, 0x02 },
-       { "SEEARBACK",          0x04, 0x04 },
-       { "LDALTID_L",          0x08, 0x08 },
-       { "SEEOPCODE",          0x70, 0x70 },
-       { "INIT_DONE",          0x80, 0x80 }
-};
-
-int
-ahd_seestat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEESTAT_parse_table, 6, "SEESTAT",
-           0xbe, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t DSPDATACTL_parse_table[] = {
-       { "XMITOFFSTDIS",       0x02, 0x02 },
-       { "RCVROFFSTDIS",       0x04, 0x04 },
-       { "DESQDIS",            0x10, 0x10 },
-       { "BYPASSENAB",         0x80, 0x80 }
-};
-
-int
-ahd_dspdatactl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(DSPDATACTL_parse_table, 4, "DSPDATACTL",
-           0xc1, regvalue, cur_col, wrap));
-}
-
-int
-ahd_dfdat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "DFDAT",
-           0xc4, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t DSPSELECT_parse_table[] = {
-       { "DSPSEL",             0x1f, 0x1f },
-       { "AUTOINCEN",          0x80, 0x80 }
-};
-
-int
-ahd_dspselect_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(DSPSELECT_parse_table, 2, "DSPSELECT",
-           0xc4, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t WRTBIASCTL_parse_table[] = {
-       { "XMITMANVAL",         0x3f, 0x3f },
-       { "AUTOXBCDIS",         0x80, 0x80 }
-};
-
-int
-ahd_wrtbiasctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(WRTBIASCTL_parse_table, 2, "WRTBIASCTL",
-           0xc5, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEQCTL0_parse_table[] = {
-       { "LOADRAM",            0x01, 0x01 },
-       { "SEQRESET",           0x02, 0x02 },
-       { "STEP",               0x04, 0x04 },
-       { "BRKADRINTEN",        0x08, 0x08 },
-       { "FASTMODE",           0x10, 0x10 },
-       { "FAILDIS",            0x20, 0x20 },
-       { "PAUSEDIS",           0x40, 0x40 },
-       { "PERRORDIS",          0x80, 0x80 }
-};
-
-int
-ahd_seqctl0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEQCTL0_parse_table, 8, "SEQCTL0",
-           0xd6, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t FLAGS_parse_table[] = {
-       { "CARRY",              0x01, 0x01 },
-       { "ZERO",               0x02, 0x02 }
-};
-
-int
-ahd_flags_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(FLAGS_parse_table, 2, "FLAGS",
-           0xd8, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEQINTCTL_parse_table[] = {
-       { "IRET",               0x01, 0x01 },
-       { "INTMASK1",           0x02, 0x02 },
-       { "INTMASK2",           0x04, 0x04 },
-       { "SCS_SEQ_INT1M0",     0x08, 0x08 },
-       { "SCS_SEQ_INT1M1",     0x10, 0x10 },
-       { "INT1_CONTEXT",       0x20, 0x20 },
-       { "INTVEC1DSL",         0x80, 0x80 }
-};
-
-int
-ahd_seqintctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEQINTCTL_parse_table, 7, "SEQINTCTL",
-           0xd9, regvalue, cur_col, wrap));
-}
-
-int
-ahd_seqram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SEQRAM",
-           0xda, regvalue, cur_col, wrap));
-}
-
-int
-ahd_prgmcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "PRGMCNT",
-           0xde, regvalue, cur_col, wrap));
-}
-
-int
-ahd_accum_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ACCUM",
-           0xe0, regvalue, cur_col, wrap));
-}
-
-int
-ahd_sindex_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SINDEX",
-           0xe2, regvalue, cur_col, wrap));
-}
-
-int
-ahd_dindex_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "DINDEX",
-           0xe4, regvalue, cur_col, wrap));
-}
-
-int
-ahd_allones_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ALLONES",
-           0xe8, regvalue, cur_col, wrap));
-}
-
-int
-ahd_allzeros_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ALLZEROS",
-           0xea, regvalue, cur_col, wrap));
-}
-
-int
-ahd_none_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "NONE",
-           0xea, regvalue, cur_col, wrap));
-}
-
-int
-ahd_sindir_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SINDIR",
-           0xec, regvalue, cur_col, wrap));
-}
-
-int
-ahd_dindir_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "DINDIR",
-           0xed, regvalue, cur_col, wrap));
-}
-
-int
-ahd_stack_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "STACK",
-           0xf2, regvalue, cur_col, wrap));
-}
-
-int
-ahd_intvec1_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INTVEC1_ADDR",
-           0xf4, regvalue, cur_col, wrap));
-}
-
-int
-ahd_curaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CURADDR",
-           0xf4, regvalue, cur_col, wrap));
-}
-
-int
-ahd_intvec2_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INTVEC2_ADDR",
-           0xf6, regvalue, cur_col, wrap));
-}
-
-int
-ahd_longjmp_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LONGJMP_ADDR",
-           0xf8, regvalue, cur_col, wrap));
-}
-
-int
-ahd_accum_save_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ACCUM_SAVE",
-           0xfa, regvalue, cur_col, wrap));
-}
-
-int
-ahd_sram_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SRAM_BASE",
-           0x100, regvalue, cur_col, wrap));
-}
-
-int
-ahd_waiting_scb_tails_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "WAITING_SCB_TAILS",
-           0x100, regvalue, cur_col, wrap));
-}
-
-int
-ahd_waiting_tid_head_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "WAITING_TID_HEAD",
-           0x120, regvalue, cur_col, wrap));
-}
-
-int
-ahd_waiting_tid_tail_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "WAITING_TID_TAIL",
-           0x122, regvalue, cur_col, wrap));
-}
-
-int
-ahd_next_queued_scb_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "NEXT_QUEUED_SCB_ADDR",
-           0x124, regvalue, cur_col, wrap));
-}
-
-int
-ahd_complete_scb_head_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "COMPLETE_SCB_HEAD",
-           0x128, regvalue, cur_col, wrap));
-}
-
-int
-ahd_complete_scb_dmainprog_head_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "COMPLETE_SCB_DMAINPROG_HEAD",
-           0x12a, regvalue, cur_col, wrap));
-}
-
-int
-ahd_complete_dma_scb_head_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_HEAD",
-           0x12c, regvalue, cur_col, wrap));
-}
-
-int
-ahd_complete_dma_scb_tail_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_TAIL",
-           0x12e, regvalue, cur_col, wrap));
-}
-
-int
-ahd_complete_on_qfreeze_head_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "COMPLETE_ON_QFREEZE_HEAD",
-           0x130, regvalue, cur_col, wrap));
-}
-
-int
-ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "QFREEZE_COUNT",
-           0x132, regvalue, cur_col, wrap));
-}
-
-int
-ahd_kernel_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT",
-           0x134, regvalue, cur_col, wrap));
-}
-
-int
-ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SAVED_MODE",
-           0x136, regvalue, cur_col, wrap));
-}
-
-int
-ahd_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MSG_OUT",
-           0x137, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t DMAPARAMS_parse_table[] = {
-       { "FIFORESET",          0x01, 0x01 },
-       { "FIFOFLUSH",          0x02, 0x02 },
-       { "DIRECTION",          0x04, 0x04 },
-       { "HDMAEN",             0x08, 0x08 },
-       { "HDMAENACK",          0x08, 0x08 },
-       { "SDMAEN",             0x10, 0x10 },
-       { "SDMAENACK",          0x10, 0x10 },
-       { "SCSIEN",             0x20, 0x20 },
-       { "WIDEODD",            0x40, 0x40 },
-       { "PRELOADEN",          0x80, 0x80 }
-};
-
-int
-ahd_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS",
-           0x138, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = {
-       { "NO_DISCONNECT",      0x01, 0x01 },
-       { "SPHASE_PENDING",     0x02, 0x02 },
-       { "DPHASE_PENDING",     0x04, 0x04 },
-       { "CMDPHASE_PENDING",   0x08, 0x08 },
-       { "TARG_CMD_PENDING",   0x10, 0x10 },
-       { "DPHASE",             0x20, 0x20 },
-       { "NO_CDB_SENT",        0x40, 0x40 },
-       { "TARGET_CMD_IS_TAGGED",0x40, 0x40 },
-       { "NOT_IDENTIFIED",     0x80, 0x80 }
-};
-
-int
-ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS",
-           0x139, regvalue, cur_col, wrap));
-}
-
-int
-ahd_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SAVED_SCSIID",
-           0x13a, regvalue, cur_col, wrap));
-}
-
-int
-ahd_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SAVED_LUN",
-           0x13b, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t LASTPHASE_parse_table[] = {
-       { "P_DATAOUT",          0x00, 0xe0 },
-       { "P_DATAOUT_DT",       0x20, 0xe0 },
-       { "P_DATAIN",           0x40, 0xe0 },
-       { "P_DATAIN_DT",        0x60, 0xe0 },
-       { "P_COMMAND",          0x80, 0xe0 },
-       { "P_MESGOUT",          0xa0, 0xe0 },
-       { "P_STATUS",           0xc0, 0xe0 },
-       { "P_MESGIN",           0xe0, 0xe0 },
-       { "P_BUSFREE",          0x01, 0x01 },
-       { "MSGI",               0x20, 0x20 },
-       { "IOI",                0x40, 0x40 },
-       { "CDI",                0x80, 0x80 },
-       { "PHASE_MASK",         0xe0, 0xe0 }
-};
-
-int
-ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE",
-           0x13c, regvalue, cur_col, wrap));
-}
-
-int
-ahd_qoutfifo_entry_valid_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG",
-           0x13d, regvalue, cur_col, wrap));
-}
-
-int
-ahd_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "KERNEL_TQINPOS",
-           0x13e, regvalue, cur_col, wrap));
-}
-
-int
-ahd_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "TQINPOS",
-           0x13f, regvalue, cur_col, wrap));
-}
-
-int
-ahd_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SHARED_DATA_ADDR",
-           0x140, regvalue, cur_col, wrap));
-}
-
-int
-ahd_qoutfifo_next_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR",
-           0x144, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t ARG_1_parse_table[] = {
-       { "CONT_MSG_LOOP_TARG", 0x02, 0x02 },
-       { "CONT_MSG_LOOP_READ", 0x03, 0x03 },
-       { "CONT_MSG_LOOP_WRITE",0x04, 0x04 },
-       { "EXIT_MSG_LOOP",      0x08, 0x08 },
-       { "MSGOUT_PHASEMIS",    0x10, 0x10 },
-       { "SEND_REJ",           0x20, 0x20 },
-       { "SEND_SENSE",         0x40, 0x40 },
-       { "SEND_MSG",           0x80, 0x80 }
-};
-
-int
-ahd_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(ARG_1_parse_table, 8, "ARG_1",
-           0x148, regvalue, cur_col, wrap));
-}
-
-int
-ahd_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ARG_2",
-           0x149, regvalue, cur_col, wrap));
-}
-
-int
-ahd_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LAST_MSG",
-           0x14a, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = {
-       { "ALTSTIM",            0x01, 0x01 },
-       { "ENAUTOATNP",         0x02, 0x02 },
-       { "MANUALP",            0x0c, 0x0c },
-       { "ENRSELI",            0x10, 0x10 },
-       { "ENSELI",             0x20, 0x20 },
-       { "MANUALCTL",          0x40, 0x40 }
-};
-
-int
-ahd_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE",
-           0x14b, regvalue, cur_col, wrap));
-}
-
-int
-ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INITIATOR_TAG",
-           0x14c, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = {
-       { "PENDING_MK_MESSAGE", 0x01, 0x01 },
-       { "TARGET_MSG_PENDING", 0x02, 0x02 },
-       { "SELECTOUT_QFROZEN",  0x04, 0x04 }
-};
-
-int
-ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SEQ_FLAGS2_parse_table, 3, "SEQ_FLAGS2",
-           0x14d, regvalue, cur_col, wrap));
-}
-
-int
-ahd_allocfifo_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR",
-           0x14e, regvalue, cur_col, wrap));
-}
-
-int
-ahd_int_coalescing_timer_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INT_COALESCING_TIMER",
-           0x150, regvalue, cur_col, wrap));
-}
-
-int
-ahd_int_coalescing_maxcmds_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS",
-           0x152, regvalue, cur_col, wrap));
-}
-
-int
-ahd_int_coalescing_mincmds_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS",
-           0x153, regvalue, cur_col, wrap));
-}
-
-int
-ahd_cmds_pending_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CMDS_PENDING",
-           0x154, regvalue, cur_col, wrap));
-}
-
-int
-ahd_int_coalescing_cmdcount_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT",
-           0x156, regvalue, cur_col, wrap));
-}
-
-int
-ahd_local_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX",
-           0x157, regvalue, cur_col, wrap));
-}
-
-int
-ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "CMDSIZE_TABLE",
-           0x158, regvalue, cur_col, wrap));
-}
-
-int
-ahd_mk_message_scb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCB",
-           0x160, regvalue, cur_col, wrap));
-}
-
-int
-ahd_mk_message_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCSIID",
-           0x162, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_residual_datacnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_RESIDUAL_DATACNT",
-           0x180, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_BASE",
-           0x180, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_RESIDUAL_SGPTR_parse_table[] = {
-       { "SG_LIST_NULL",       0x01, 0x01 },
-       { "SG_OVERRUN_RESID",   0x02, 0x02 },
-       { "SG_ADDR_MASK",       0xf8, 0xf8 }
-};
-
-int
-ahd_scb_residual_sgptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_RESIDUAL_SGPTR_parse_table, 3, "SCB_RESIDUAL_SGPTR",
-           0x184, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_scsi_status_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_SCSI_STATUS",
-           0x188, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_sense_busaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_SENSE_BUSADDR",
-           0x18c, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_TAG",
-           0x190, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_CONTROL_parse_table[] = {
-       { "SCB_TAG_TYPE",       0x03, 0x03 },
-       { "DISCONNECTED",       0x04, 0x04 },
-       { "STATUS_RCVD",        0x08, 0x08 },
-       { "MK_MESSAGE",         0x10, 0x10 },
-       { "TAG_ENB",            0x20, 0x20 },
-       { "DISCENB",            0x40, 0x40 },
-       { "TARGET_SCB",         0x80, 0x80 }
-};
-
-int
-ahd_scb_control_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_CONTROL_parse_table, 7, "SCB_CONTROL",
-           0x192, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_SCSIID_parse_table[] = {
-       { "OID",                0x0f, 0x0f },
-       { "TID",                0xf0, 0xf0 }
-};
-
-int
-ahd_scb_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahd_scb_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
        return (ahd_print_register(SCB_SCSIID_parse_table, 2, "SCB_SCSIID",
            0x193, regvalue, cur_col, wrap));
 }
 
-static const ahd_reg_parse_entry_t SCB_LUN_parse_table[] = {
-       { "LID",                0xff, 0xff }
-};
-
-int
-ahd_scb_lun_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_LUN_parse_table, 1, "SCB_LUN",
-           0x194, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_TASK_ATTRIBUTE_parse_table[] = {
-       { "SCB_XFERLEN_ODD",    0x01, 0x01 }
-};
-
-int
-ahd_scb_task_attribute_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_TASK_ATTRIBUTE_parse_table, 1, "SCB_TASK_ATTRIBUTE",
-           0x195, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_CDB_LEN_parse_table[] = {
-       { "SCB_CDB_LEN_PTR",    0x80, 0x80 }
-};
-
-int
-ahd_scb_cdb_len_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_CDB_LEN_parse_table, 1, "SCB_CDB_LEN",
-           0x196, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_task_management_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_TASK_MANAGEMENT",
-           0x197, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_dataptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_DATAPTR",
-           0x198, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_DATACNT_parse_table[] = {
-       { "SG_HIGH_ADDR_BITS",  0x7f, 0x7f },
-       { "SG_LAST_SEG",        0x80, 0x80 }
-};
-
-int
-ahd_scb_datacnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_DATACNT_parse_table, 2, "SCB_DATACNT",
-           0x1a0, regvalue, cur_col, wrap));
-}
-
-static const ahd_reg_parse_entry_t SCB_SGPTR_parse_table[] = {
-       { "SG_LIST_NULL",       0x01, 0x01 },
-       { "SG_FULL_RESID",      0x02, 0x02 },
-       { "SG_STATUS_VALID",    0x04, 0x04 }
-};
-
-int
-ahd_scb_sgptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(SCB_SGPTR_parse_table, 3, "SCB_SGPTR",
-           0x1a4, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_busaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_BUSADDR",
-           0x1a8, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_next_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_NEXT",
-           0x1ac, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_next2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_NEXT2",
-           0x1ae, regvalue, cur_col, wrap));
-}
-
-int
-ahd_scb_disconnected_lists_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahd_print_register(NULL, 0, "SCB_DISCONNECTED_LISTS",
-           0x1b8, regvalue, cur_col, wrap));
-}
-
index 0d2f763c3427c820300303fb8bec461a4a66548b..9a96e55da39ad6406090b5f693c0396d1512d64f 100644 (file)
@@ -50,6 +50,17 @@ VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $"
  * Adaptec's Technical Documents Department 1-800-934-2766
  */
 
+/*
+ * Registers marked "dont_generate_debug_code" are not (yet) referenced
+ * from the driver code, and this keyword inhibit generation
+ * of debug code for them.
+ *
+ * REG_PRETTY_PRINT config will complain if dont_generate_debug_code
+ * is added to the register which is referenced in the driver.
+ * Unreferenced register with no dont_generate_debug_code will result
+ * in dead code. No warning is issued.
+ */
+
 /*
  * SCSI Sequence Control (p. 3-11).
  * Each bit, when set starts a specific SCSI sequence on the bus
@@ -97,6 +108,7 @@ register SXFRCTL1 {
        field   ENSTIMER        0x04
        field   ACTNEGEN        0x02
        field   STPWEN          0x01    /* Powered Termination */
+       dont_generate_debug_code
 }
 
 /*
@@ -155,6 +167,7 @@ register SCSISIGO {
        mask    P_MESGOUT       CDI|MSGI
        mask    P_STATUS        CDI|IOI
        mask    P_MESGIN        CDI|IOI|MSGI
+       dont_generate_debug_code
 }
 
 /* 
@@ -194,6 +207,7 @@ register SCSIID     {
         */
        alias   SCSIOFFSET
        mask    SOFS_ULTRA2     0x7f            /* Sync offset U2 chips */
+       dont_generate_debug_code
 }
 
 /*
@@ -205,6 +219,7 @@ register SCSIID     {
 register SCSIDATL {
        address                 0x006
        access_mode RW
+       dont_generate_debug_code
 }
 
 register SCSIDATH {
@@ -223,6 +238,7 @@ register STCNT {
        address                 0x008
        size    3
        access_mode RW
+       dont_generate_debug_code
 }
 
 /* ALT_MODE registers (Ultra2 and Ultra160 chips) */
@@ -248,6 +264,7 @@ register OPTIONMODE {
        field   AUTO_MSGOUT_DE          0x02
        field   DIS_MSGIN_DUALEDGE      0x01
        mask    OPTIONMODE_DEFAULTS     AUTO_MSGOUT_DE|DIS_MSGIN_DUALEDGE
+       dont_generate_debug_code
 }
 
 /* ALT_MODE register on Ultra160 chips */
@@ -256,6 +273,7 @@ register TARGCRCCNT {
        size    2
        access_mode RW
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -271,6 +289,7 @@ register CLRSINT0 {
        field   CLRSWRAP        0x08
        field   CLRIOERR        0x08    /* Ultra2 Only */
        field   CLRSPIORDY      0x02
+       dont_generate_debug_code
 }
 
 /*
@@ -306,6 +325,7 @@ register CLRSINT1 {
        field   CLRSCSIPERR     0x04
        field   CLRPHASECHG     0x02
        field   CLRREQINIT      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -360,6 +380,7 @@ register SCSIID_ULTRA2 {
        access_mode RW
        mask    TID             0xf0            /* Target ID mask */
        mask    OID             0x0f            /* Our ID mask */
+       dont_generate_debug_code
 }
 
 /*
@@ -425,6 +446,7 @@ register SHADDR {
        address                 0x014
        size    4
        access_mode RO
+       dont_generate_debug_code
 }
 
 /*
@@ -441,6 +463,7 @@ register SELTIMER {
        field   STAGE2          0x02
        field   STAGE1          0x01
        alias   TARGIDIN
+       dont_generate_debug_code
 }
 
 /*
@@ -453,6 +476,7 @@ register SELID {
        access_mode RW
        mask    SELID_MASK      0xf0
        field   ONEBIT          0x08
+       dont_generate_debug_code
 }
 
 register SCAMCTL {
@@ -473,6 +497,7 @@ register TARGID {
        size                    2
        access_mode RW
        count           14
+       dont_generate_debug_code
 }
 
 /*
@@ -495,6 +520,7 @@ register SPIOCAP {
        field   EEPROM          0x04    /* Writable external BIOS ROM */
        field   ROM             0x02    /* Logic for accessing external ROM */
        field   SSPIOCPS        0x01    /* Termination and cable detection */
+       dont_generate_debug_code
 }
 
 register BRDCTL        {
@@ -514,6 +540,7 @@ register BRDCTL     {
        field   BRDDAT2         0x04
        field   BRDRW_ULTRA2    0x02
        field   BRDSTB_ULTRA2   0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -551,6 +578,7 @@ register SEECTL {
        field   SEECK           0x04
        field   SEEDO           0x02
        field   SEEDI           0x01
+       dont_generate_debug_code
 }
 /*
  * SCSI Block Control (p. 3-32)
@@ -601,6 +629,7 @@ register SEQRAM {
        address                 0x061
        access_mode RW
        count           2
+       dont_generate_debug_code
 }
 
 /*
@@ -610,6 +639,7 @@ register SEQRAM {
 register SEQADDR0 {
        address                 0x062
        access_mode RW
+       dont_generate_debug_code
 }
 
 register SEQADDR1 {
@@ -617,6 +647,7 @@ register SEQADDR1 {
        access_mode RW
        count           8
        mask    SEQADDR1_MASK   0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -627,35 +658,41 @@ register ACCUM {
        address                 0x064
        access_mode RW
        accumulator
+       dont_generate_debug_code
 }
 
 register SINDEX        {
        address                 0x065
        access_mode RW
        sindex
+       dont_generate_debug_code
 }
 
 register DINDEX {
        address                 0x066
        access_mode RW
+       dont_generate_debug_code
 }
 
 register ALLONES {
        address                 0x069
        access_mode RO
        allones
+       dont_generate_debug_code
 }
 
 register ALLZEROS {
        address                 0x06a
        access_mode RO
        allzeros
+       dont_generate_debug_code
 }
 
 register NONE {
        address                 0x06a
        access_mode WO
        none
+       dont_generate_debug_code
 }
 
 register FLAGS {
@@ -664,16 +701,19 @@ register FLAGS {
        count           18
        field   ZERO            0x02
        field   CARRY           0x01
+       dont_generate_debug_code
 }
 
 register SINDIR        {
        address                 0x06c
        access_mode RO
+       dont_generate_debug_code
 }
 
 register DINDIR         {
        address                 0x06d
        access_mode WO
+       dont_generate_debug_code
 }
 
 register FUNCTION1 {
@@ -685,6 +725,7 @@ register STACK {
        address                 0x06f
        access_mode RO
        count           5
+       dont_generate_debug_code
 }
 
 const  STACK_SIZE      4
@@ -716,6 +757,7 @@ register DSCOMMAND0 {
        field   RAMPS           0x04    /* External SCB RAM Present */
        field   USCBSIZE32      0x02    /* Use 32byte SCB Page Size */
        field   CIOPARCKEN      0x01    /* Internal bus parity error enable */
+       dont_generate_debug_code
 }
 
 register DSCOMMAND1 {
@@ -724,6 +766,7 @@ register DSCOMMAND1 {
        mask    DSLATT          0xfc    /* PCI latency timer (non-ultra2) */
        field   HADDLDSEL1      0x02    /* Host Address Load Select Bits */
        field   HADDLDSEL0      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -735,6 +778,7 @@ register BUSTIME {
        count           2
        mask    BOFF            0xf0
        mask    BON             0x0f
+       dont_generate_debug_code
 }
 
 /*
@@ -749,6 +793,7 @@ register BUSSPD {
        mask    STBON           0x07
        mask    DFTHRSH_100     0xc0
        mask    DFTHRSH_75      0x80
+       dont_generate_debug_code
 }
 
 /* aic7850/55/60/70/80/95 only */
@@ -756,6 +801,7 @@ register DSPCISTATUS {
        address                 0x086
        count           4
        mask    DFTHRSH_100     0xc0
+       dont_generate_debug_code
 }
 
 /* aic7890/91/96/97 only */
@@ -764,6 +810,7 @@ register HS_MAILBOX {
        mask    HOST_MAILBOX    0xF0
        mask    SEQ_MAILBOX     0x0F
        mask    HOST_TQINPOS    0x80    /* Boundary at either 0 or 128 */
+       dont_generate_debug_code
 }
 
 const  HOST_MAILBOX_SHIFT      4
@@ -784,6 +831,7 @@ register HCNTRL {
        field   INTEN           0x02
        field   CHIPRST         0x01
        field   CHIPRSTACK      0x01
+       dont_generate_debug_code
 }
 
 /*
@@ -795,12 +843,14 @@ register HADDR {
        address                 0x088
        size    4
        access_mode RW
+       dont_generate_debug_code
 }
 
 register HCNT {
        address                 0x08c
        size    3
        access_mode RW
+       dont_generate_debug_code
 }
 
 /*
@@ -810,6 +860,7 @@ register HCNT {
 register SCBPTR {
        address                 0x090
        access_mode RW
+       dont_generate_debug_code
 }
 
 /*
@@ -878,6 +929,7 @@ register INTSTAT {
 
        mask    SEQINT_MASK     0xf0|SEQINT     /* SEQINT Status Codes */
        mask    INT_PEND  (BRKADRINT|SEQINT|SCSIINT|CMDCMPLT)
+       dont_generate_debug_code
 }
 
 /*
@@ -911,6 +963,7 @@ register CLRINT {
        field   CLRSCSIINT      0x04
        field   CLRCMDINT       0x02
        field   CLRSEQINT       0x01
+       dont_generate_debug_code
 }
 
 register DFCNTRL {
@@ -944,6 +997,7 @@ register DFSTATUS {
 register DFWADDR {
        address                 0x95
        access_mode RW
+       dont_generate_debug_code
 }
 
 register DFRADDR {
@@ -954,6 +1008,7 @@ register DFRADDR {
 register DFDAT {
        address                 0x099
        access_mode RW
+       dont_generate_debug_code
 }
 
 /*
@@ -967,6 +1022,7 @@ register SCBCNT {
        count           1
        field   SCBAUTO         0x80
        mask    SCBCNT_MASK     0x1f
+       dont_generate_debug_code
 }
 
 /*
@@ -977,6 +1033,7 @@ register QINFIFO {
        address                 0x09b
        access_mode RW
        count           12
+       dont_generate_debug_code
 }
 
 /*
@@ -996,6 +1053,7 @@ register QOUTFIFO {
        address                 0x09d
        access_mode WO
        count           7
+       dont_generate_debug_code
 }
 
 register CRCCONTROL1 {
@@ -1008,6 +1066,7 @@ register CRCCONTROL1 {
        field   CRCREQCHKEN             0x10
        field   TARGCRCENDEN            0x08
        field   TARGCRCCNTEN            0x04
+       dont_generate_debug_code
 }
 
 
@@ -1040,6 +1099,7 @@ register SFUNCT {
        access_mode RW
        count       4
        field   ALT_MODE        0x80
+       dont_generate_debug_code
 }
 
 /*
@@ -1053,24 +1113,31 @@ scb {
                size    4
                alias   SCB_RESIDUAL_DATACNT
                alias   SCB_CDB_STORE
+               dont_generate_debug_code
        }
        SCB_RESIDUAL_SGPTR {
                size    4
+               dont_generate_debug_code
        }
        SCB_SCSI_STATUS {
                size    1
+               dont_generate_debug_code
        }
        SCB_TARGET_PHASES {
                size    1
+               dont_generate_debug_code
        }
        SCB_TARGET_DATA_DIR {
                size    1
+               dont_generate_debug_code
        }
        SCB_TARGET_ITAG {
                size    1
+               dont_generate_debug_code
        }
        SCB_DATAPTR {
                size    4
+               dont_generate_debug_code
        }
        SCB_DATACNT {
                /*
@@ -1080,12 +1147,14 @@ scb {
                size    4
                field   SG_LAST_SEG             0x80    /* In the fourth byte */
                mask    SG_HIGH_ADDR_BITS       0x7F    /* In the fourth byte */
+               dont_generate_debug_code
        }
        SCB_SGPTR {
                size    4
                field   SG_RESID_VALID  0x04    /* In the first byte */
                field   SG_FULL_RESID   0x02    /* In the first byte */
                field   SG_LIST_NULL    0x01    /* In the first byte */
+               dont_generate_debug_code
        }
        SCB_CONTROL {
                size    1
@@ -1115,22 +1184,27 @@ scb {
        }
        SCB_CDB_LEN {
                size    1
+               dont_generate_debug_code
        }
        SCB_SCSIRATE {
                size    1
+               dont_generate_debug_code
        }
        SCB_SCSIOFFSET {
                size    1
                count   1
+               dont_generate_debug_code
        }
        SCB_NEXT {
                size    1
+               dont_generate_debug_code
        }
        SCB_64_SPARE {
                size    16
        }
        SCB_64_BTT {
                size    16
+               dont_generate_debug_code
        }
 }
 
@@ -1149,6 +1223,7 @@ register SEECTL_2840 {
        field   CS_2840         0x04
        field   CK_2840         0x02
        field   DO_2840         0x01
+       dont_generate_debug_code
 }
 
 register STATUS_2840 {
@@ -1159,6 +1234,7 @@ register STATUS_2840 {
        mask    BIOS_SEL        0x60
        mask    ADSEL           0x1e
        field   DI_2840         0x01
+       dont_generate_debug_code
 }
 
 /* --------------------- AIC-7870-only definitions -------------------- */
@@ -1166,18 +1242,22 @@ register STATUS_2840 {
 register CCHADDR {
        address                 0x0E0
        size 8
+       dont_generate_debug_code
 }
 
 register CCHCNT {
        address                 0x0E8
+       dont_generate_debug_code
 }
 
 register CCSGRAM {
        address                 0x0E9
+       dont_generate_debug_code
 }
 
 register CCSGADDR {
        address                 0x0EA
+       dont_generate_debug_code
 }
 
 register CCSGCTL {
@@ -1186,11 +1266,13 @@ register CCSGCTL {
        field   CCSGEN          0x08
        field   SG_FETCH_NEEDED 0x02    /* Bit used for software state */
        field   CCSGRESET       0x01
+       dont_generate_debug_code
 }
 
 register CCSCBCNT {
        address                 0xEF
        count           1
+       dont_generate_debug_code
 }
 
 register CCSCBCTL {
@@ -1201,14 +1283,17 @@ register CCSCBCTL {
        field   CCSCBEN         0x08
        field   CCSCBDIR        0x04
        field   CCSCBRESET      0x01
+       dont_generate_debug_code
 }
 
 register CCSCBADDR {
        address                 0x0ED
+       dont_generate_debug_code
 }
 
 register CCSCBRAM {
        address                 0xEC
+       dont_generate_debug_code
 }
 
 /*
@@ -1218,23 +1303,28 @@ register SCBBADDR {
        address                 0x0F0
        access_mode RW
        count           3
+       dont_generate_debug_code
 }
 
 register CCSCBPTR {
        address                 0x0F1
+       dont_generate_debug_code
 }
 
 register HNSCB_QOFF {
        address                 0x0F4
        count           4
+       dont_generate_debug_code
 }
 
 register SNSCB_QOFF {
        address                 0x0F6
+       dont_generate_debug_code
 }
 
 register SDSCB_QOFF {
        address                 0x0F8
+       dont_generate_debug_code
 }
 
 register QOFF_CTLSTA {
@@ -1244,6 +1334,7 @@ register QOFF_CTLSTA {
        field   SDSCB_ROLLOVER  0x10
        mask    SCB_QSIZE       0x07
        mask    SCB_QSIZE_256   0x06
+       dont_generate_debug_code
 }
 
 register DFF_THRSH {
@@ -1267,6 +1358,7 @@ register DFF_THRSH {
        mask    WR_DFTHRSH_90   0x60
        mask    WR_DFTHRSH_MAX  0x70
        count   4
+       dont_generate_debug_code
 }
 
 register SG_CACHE_PRE {
@@ -1275,6 +1367,7 @@ register SG_CACHE_PRE {
        mask    SG_ADDR_MASK    0xf8
        field   LAST_SEG        0x02
        field   LAST_SEG_DONE   0x01
+       dont_generate_debug_code
 }
 
 register SG_CACHE_SHADOW {
@@ -1283,6 +1376,7 @@ register SG_CACHE_SHADOW {
        mask    SG_ADDR_MASK    0xf8
        field   LAST_SEG        0x02
        field   LAST_SEG_DONE   0x01
+       dont_generate_debug_code
 }
 /* ---------------------- Scratch RAM Offsets ------------------------- */
 /* These offsets are either to values that are initialized by the board's
@@ -1309,6 +1403,7 @@ scratch_ram {
        BUSY_TARGETS {
                alias           TARG_SCSIRATE
                size            16
+               dont_generate_debug_code
        }
        /*
         * Bit vector of targets that have ULTRA enabled as set by
@@ -1321,6 +1416,7 @@ scratch_ram {
                alias           CMDSIZE_TABLE
                size            2
                count           2
+               dont_generate_debug_code
        }
        /*
         * Bit vector of targets that have disconnection disabled as set by
@@ -1331,6 +1427,7 @@ scratch_ram {
        DISC_DSB {
                size            2
                count           6
+               dont_generate_debug_code
        }
        CMDSIZE_TABLE_TAIL {
                size            4
@@ -1341,12 +1438,14 @@ scratch_ram {
         */
        MWI_RESIDUAL {
                size            1
+               dont_generate_debug_code
        }
        /*
         * SCBID of the next SCB to be started by the controller.
         */
        NEXT_QUEUED_SCB {
                size            1
+               dont_generate_debug_code
        }
        /*
         * Single byte buffer used to designate the type or message
@@ -1354,6 +1453,7 @@ scratch_ram {
         */
        MSG_OUT {
                size            1
+               dont_generate_debug_code
        }
        /* Parameters for DMA Logic */
        DMAPARAMS {
@@ -1369,6 +1469,7 @@ scratch_ram {
                field   DIRECTION       0x04    /* Set indicates PCI->SCSI */
                field   FIFOFLUSH       0x02
                field   FIFORESET       0x01
+               dont_generate_debug_code
        }
        SEQ_FLAGS {
                size            1
@@ -1390,9 +1491,11 @@ scratch_ram {
         */
        SAVED_SCSIID {
                size            1
+               dont_generate_debug_code
        }
        SAVED_LUN {
                size            1
+               dont_generate_debug_code
        }
        /*
         * The last bus phase as seen by the sequencer. 
@@ -1417,6 +1520,7 @@ scratch_ram {
         */
        WAITING_SCBH {
                size            1
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that are
@@ -1425,6 +1529,7 @@ scratch_ram {
         */
        DISCONNECTED_SCBH {
                size            1
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that are
@@ -1432,6 +1537,7 @@ scratch_ram {
         */
        FREE_SCBH {
                size            1
+               dont_generate_debug_code
        }
        /*
         * head of list of SCBs that have
@@ -1446,6 +1552,7 @@ scratch_ram {
         */
        HSCB_ADDR {
                size            4
+               dont_generate_debug_code
        }
        /*
         * Base address of our shared data with the kernel driver in host
@@ -1454,15 +1561,19 @@ scratch_ram {
         */
        SHARED_DATA_ADDR {
                size            4
+               dont_generate_debug_code
        }
        KERNEL_QINPOS {
                size            1
+               dont_generate_debug_code
        }
        QINPOS {
                size            1
+               dont_generate_debug_code
        }
        QOUTPOS {
                size            1
+               dont_generate_debug_code
        }
        /*
         * Kernel and sequencer offsets into the queue of
@@ -1471,9 +1582,11 @@ scratch_ram {
         */
        KERNEL_TQINPOS {
                size            1
+               dont_generate_debug_code
        }
        TQINPOS {
                size            1
+               dont_generate_debug_code
        }
        ARG_1 {
                size            1
@@ -1486,10 +1599,12 @@ scratch_ram {
                mask    CONT_MSG_LOOP           0x04
                mask    CONT_TARG_SESSION       0x02
                alias   RETURN_1
+               dont_generate_debug_code
        }
        ARG_2 {
                size            1
                alias   RETURN_2
+               dont_generate_debug_code
        }
 
        /*
@@ -1498,6 +1613,7 @@ scratch_ram {
        LAST_MSG {
                size            1
                alias   TARG_IMMEDIATE_SCB
+               dont_generate_debug_code
        }
 
        /*
@@ -1513,6 +1629,7 @@ scratch_ram {
                field   ENAUTOATNO      0x08
                field   ENAUTOATNI      0x04
                field   ENAUTOATNP      0x02
+               dont_generate_debug_code
        }
 }
 
@@ -1533,12 +1650,14 @@ scratch_ram {
                field   HA_274_EXTENDED_TRANS   0x01
                alias   INITIATOR_TAG
                count           1
+               dont_generate_debug_code
        }
 
        SEQ_FLAGS2 {
                size    1
                field   SCB_DMA                 0x01
                field   TARGET_MSG_PENDING      0x02
+               dont_generate_debug_code
        }
 }
 
@@ -1562,6 +1681,7 @@ scratch_ram {
                field   ENSPCHK         0x20
                mask    HSCSIID         0x07    /* our SCSI ID */
                mask    HWSCSIID        0x0f    /* our SCSI ID if Wide Bus */
+               dont_generate_debug_code
        }
        INTDEF {
                address         0x05c
@@ -1569,11 +1689,13 @@ scratch_ram {
                count           1
                field   EDGE_TRIG       0x80
                mask    VECTOR          0x0f
+               dont_generate_debug_code
        }
        HOSTCONF {
                address         0x05d
                size            1
                count           1
+               dont_generate_debug_code
        }
        HA_274_BIOSCTRL {
                address         0x05f
@@ -1582,6 +1704,7 @@ scratch_ram {
                mask    BIOSMODE                0x30
                mask    BIOSDISABLED            0x30    
                field   CHANNEL_B_PRIMARY       0x08
+               dont_generate_debug_code
        }
 }
 
@@ -1595,6 +1718,7 @@ scratch_ram {
        TARG_OFFSET {
                size            16
                count           1
+               dont_generate_debug_code
        }
 }
 
index 0ae2b4605d09aa9068765486903aa19929ed7e9d..e6f2bb7365e64da1736a7a45759ddb3a2ec34638 100644 (file)
@@ -814,6 +814,7 @@ ahc_intr(struct ahc_softc *ahc)
 static void
 ahc_restart(struct ahc_softc *ahc)
 {
+       uint8_t sblkctl;
 
        ahc_pause(ahc);
 
@@ -868,6 +869,12 @@ ahc_restart(struct ahc_softc *ahc)
        ahc_outb(ahc, SEQADDR0, 0);
        ahc_outb(ahc, SEQADDR1, 0);
 
+       /*
+        * Take the LED out of diagnostic mode on PM resume, too
+        */
+       sblkctl = ahc_inb(ahc, SBLKCTL);
+       ahc_outb(ahc, SBLKCTL, (sblkctl & ~(DIAGLEDEN|DIAGLEDON)));
+
        ahc_unpause(ahc);
 }
 
index 2ce1febca207c27d5695626a5316c6d1ceb8c17c..e821082a4f47a23db505a829b47c1cfe47eafe26 100644 (file)
@@ -26,20 +26,6 @@ ahc_reg_print_t ahc_sxfrctl0_print;
     ahc_print_register(NULL, 0, "SXFRCTL0", 0x01, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sxfrctl1_print;
-#else
-#define ahc_sxfrctl1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SXFRCTL1", 0x02, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsisigo_print;
-#else
-#define ahc_scsisigo_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSISIGO", 0x03, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_scsisigi_print;
 #else
@@ -54,55 +40,6 @@ ahc_reg_print_t ahc_scsirate_print;
     ahc_print_register(NULL, 0, "SCSIRATE", 0x04, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsiid_print;
-#else
-#define ahc_scsiid_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSIID", 0x05, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsidatl_print;
-#else
-#define ahc_scsidatl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSIDATL", 0x06, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsidath_print;
-#else
-#define ahc_scsidath_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSIDATH", 0x07, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_stcnt_print;
-#else
-#define ahc_stcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "STCNT", 0x08, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_optionmode_print;
-#else
-#define ahc_optionmode_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "OPTIONMODE", 0x08, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_targcrccnt_print;
-#else
-#define ahc_targcrccnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "TARGCRCCNT", 0x0a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_clrsint0_print;
-#else
-#define ahc_clrsint0_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CLRSINT0", 0x0b, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_sstat0_print;
 #else
@@ -110,13 +47,6 @@ ahc_reg_print_t ahc_sstat0_print;
     ahc_print_register(NULL, 0, "SSTAT0", 0x0b, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_clrsint1_print;
-#else
-#define ahc_clrsint1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CLRSINT1", 0x0c, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_sstat1_print;
 #else
@@ -138,13 +68,6 @@ ahc_reg_print_t ahc_sstat3_print;
     ahc_print_register(NULL, 0, "SSTAT3", 0x0e, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsiid_ultra2_print;
-#else
-#define ahc_scsiid_ultra2_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSIID_ULTRA2", 0x0f, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_simode0_print;
 #else
@@ -166,76 +89,6 @@ ahc_reg_print_t ahc_scsibusl_print;
     ahc_print_register(NULL, 0, "SCSIBUSL", 0x12, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsibush_print;
-#else
-#define ahc_scsibush_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSIBUSH", 0x13, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sxfrctl2_print;
-#else
-#define ahc_sxfrctl2_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SXFRCTL2", 0x13, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_shaddr_print;
-#else
-#define ahc_shaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SHADDR", 0x14, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seltimer_print;
-#else
-#define ahc_seltimer_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SELTIMER", 0x18, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_selid_print;
-#else
-#define ahc_selid_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SELID", 0x19, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scamctl_print;
-#else
-#define ahc_scamctl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCAMCTL", 0x1a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_targid_print;
-#else
-#define ahc_targid_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "TARGID", 0x1b, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_spiocap_print;
-#else
-#define ahc_spiocap_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SPIOCAP", 0x1b, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_brdctl_print;
-#else
-#define ahc_brdctl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "BRDCTL", 0x1d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seectl_print;
-#else
-#define ahc_seectl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEECTL", 0x1e, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_sblkctl_print;
 #else
@@ -243,62 +96,6 @@ ahc_reg_print_t ahc_sblkctl_print;
     ahc_print_register(NULL, 0, "SBLKCTL", 0x1f, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_busy_targets_print;
-#else
-#define ahc_busy_targets_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "BUSY_TARGETS", 0x20, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ultra_enb_print;
-#else
-#define ahc_ultra_enb_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ULTRA_ENB", 0x30, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_disc_dsb_print;
-#else
-#define ahc_disc_dsb_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DISC_DSB", 0x32, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_cmdsize_table_tail_print;
-#else
-#define ahc_cmdsize_table_tail_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CMDSIZE_TABLE_TAIL", 0x34, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_mwi_residual_print;
-#else
-#define ahc_mwi_residual_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "MWI_RESIDUAL", 0x38, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_next_queued_scb_print;
-#else
-#define ahc_next_queued_scb_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "NEXT_QUEUED_SCB", 0x39, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_msg_out_print;
-#else
-#define ahc_msg_out_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "MSG_OUT", 0x3a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dmaparams_print;
-#else
-#define ahc_dmaparams_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DMAPARAMS", 0x3b, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_seq_flags_print;
 #else
@@ -306,20 +103,6 @@ ahc_reg_print_t ahc_seq_flags_print;
     ahc_print_register(NULL, 0, "SEQ_FLAGS", 0x3c, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_saved_scsiid_print;
-#else
-#define ahc_saved_scsiid_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SAVED_SCSIID", 0x3d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_saved_lun_print;
-#else
-#define ahc_saved_lun_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SAVED_LUN", 0x3e, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_lastphase_print;
 #else
@@ -327,153 +110,6 @@ ahc_reg_print_t ahc_lastphase_print;
     ahc_print_register(NULL, 0, "LASTPHASE", 0x3f, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_waiting_scbh_print;
-#else
-#define ahc_waiting_scbh_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "WAITING_SCBH", 0x40, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_disconnected_scbh_print;
-#else
-#define ahc_disconnected_scbh_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DISCONNECTED_SCBH", 0x41, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_free_scbh_print;
-#else
-#define ahc_free_scbh_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "FREE_SCBH", 0x42, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_complete_scbh_print;
-#else
-#define ahc_complete_scbh_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "COMPLETE_SCBH", 0x43, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hscb_addr_print;
-#else
-#define ahc_hscb_addr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HSCB_ADDR", 0x44, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_shared_data_addr_print;
-#else
-#define ahc_shared_data_addr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x48, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_kernel_qinpos_print;
-#else
-#define ahc_kernel_qinpos_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "KERNEL_QINPOS", 0x4c, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qinpos_print;
-#else
-#define ahc_qinpos_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QINPOS", 0x4d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qoutpos_print;
-#else
-#define ahc_qoutpos_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QOUTPOS", 0x4e, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_kernel_tqinpos_print;
-#else
-#define ahc_kernel_tqinpos_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "KERNEL_TQINPOS", 0x4f, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_tqinpos_print;
-#else
-#define ahc_tqinpos_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "TQINPOS", 0x50, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_arg_1_print;
-#else
-#define ahc_arg_1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ARG_1", 0x51, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_arg_2_print;
-#else
-#define ahc_arg_2_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ARG_2", 0x52, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_last_msg_print;
-#else
-#define ahc_last_msg_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "LAST_MSG", 0x53, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsiseq_template_print;
-#else
-#define ahc_scsiseq_template_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x54, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ha_274_biosglobal_print;
-#else
-#define ahc_ha_274_biosglobal_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HA_274_BIOSGLOBAL", 0x56, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seq_flags2_print;
-#else
-#define ahc_seq_flags2_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEQ_FLAGS2", 0x57, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scsiconf_print;
-#else
-#define ahc_scsiconf_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCSICONF", 0x5a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_intdef_print;
-#else
-#define ahc_intdef_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "INTDEF", 0x5c, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hostconf_print;
-#else
-#define ahc_hostconf_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HOSTCONF", 0x5d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ha_274_biosctrl_print;
-#else
-#define ahc_ha_274_biosctrl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HA_274_BIOSCTRL", 0x5f, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_seqctl_print;
 #else
@@ -481,111 +117,6 @@ ahc_reg_print_t ahc_seqctl_print;
     ahc_print_register(NULL, 0, "SEQCTL", 0x60, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seqram_print;
-#else
-#define ahc_seqram_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEQRAM", 0x61, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seqaddr0_print;
-#else
-#define ahc_seqaddr0_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEQADDR0", 0x62, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seqaddr1_print;
-#else
-#define ahc_seqaddr1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEQADDR1", 0x63, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_accum_print;
-#else
-#define ahc_accum_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ACCUM", 0x64, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sindex_print;
-#else
-#define ahc_sindex_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SINDEX", 0x65, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dindex_print;
-#else
-#define ahc_dindex_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DINDEX", 0x66, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_allones_print;
-#else
-#define ahc_allones_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ALLONES", 0x69, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_allzeros_print;
-#else
-#define ahc_allzeros_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "ALLZEROS", 0x6a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_none_print;
-#else
-#define ahc_none_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "NONE", 0x6a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_flags_print;
-#else
-#define ahc_flags_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "FLAGS", 0x6b, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sindir_print;
-#else
-#define ahc_sindir_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SINDIR", 0x6c, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dindir_print;
-#else
-#define ahc_dindir_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DINDIR", 0x6d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_function1_print;
-#else
-#define ahc_function1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "FUNCTION1", 0x6e, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_stack_print;
-#else
-#define ahc_stack_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "STACK", 0x6f, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_targ_offset_print;
-#else
-#define ahc_targ_offset_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "TARG_OFFSET", 0x70, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_sram_base_print;
 #else
@@ -593,97 +124,6 @@ ahc_reg_print_t ahc_sram_base_print;
     ahc_print_register(NULL, 0, "SRAM_BASE", 0x70, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_bctl_print;
-#else
-#define ahc_bctl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "BCTL", 0x84, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dscommand0_print;
-#else
-#define ahc_dscommand0_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DSCOMMAND0", 0x84, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_bustime_print;
-#else
-#define ahc_bustime_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "BUSTIME", 0x85, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dscommand1_print;
-#else
-#define ahc_dscommand1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DSCOMMAND1", 0x85, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_busspd_print;
-#else
-#define ahc_busspd_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "BUSSPD", 0x86, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hs_mailbox_print;
-#else
-#define ahc_hs_mailbox_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HS_MAILBOX", 0x86, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dspcistatus_print;
-#else
-#define ahc_dspcistatus_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DSPCISTATUS", 0x86, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hcntrl_print;
-#else
-#define ahc_hcntrl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HCNTRL", 0x87, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_haddr_print;
-#else
-#define ahc_haddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HADDR", 0x88, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hcnt_print;
-#else
-#define ahc_hcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HCNT", 0x8c, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scbptr_print;
-#else
-#define ahc_scbptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCBPTR", 0x90, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_intstat_print;
-#else
-#define ahc_intstat_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "INTSTAT", 0x91, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_clrint_print;
-#else
-#define ahc_clrint_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CLRINT", 0x92, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_error_print;
 #else
@@ -705,69 +145,6 @@ ahc_reg_print_t ahc_dfstatus_print;
     ahc_print_register(NULL, 0, "DFSTATUS", 0x94, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dfwaddr_print;
-#else
-#define ahc_dfwaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DFWADDR", 0x95, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dfraddr_print;
-#else
-#define ahc_dfraddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DFRADDR", 0x97, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dfdat_print;
-#else
-#define ahc_dfdat_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DFDAT", 0x99, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scbcnt_print;
-#else
-#define ahc_scbcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCBCNT", 0x9a, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qinfifo_print;
-#else
-#define ahc_qinfifo_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QINFIFO", 0x9b, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qincnt_print;
-#else
-#define ahc_qincnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QINCNT", 0x9c, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qoutfifo_print;
-#else
-#define ahc_qoutfifo_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QOUTFIFO", 0x9d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_crccontrol1_print;
-#else
-#define ahc_crccontrol1_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CRCCONTROL1", 0x9d, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qoutcnt_print;
-#else
-#define ahc_qoutcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QOUTCNT", 0x9e, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_scsiphase_print;
 #else
@@ -775,13 +152,6 @@ ahc_reg_print_t ahc_scsiphase_print;
     ahc_print_register(NULL, 0, "SCSIPHASE", 0x9e, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sfunct_print;
-#else
-#define ahc_sfunct_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_scb_base_print;
 #else
@@ -789,69 +159,6 @@ ahc_reg_print_t ahc_scb_base_print;
     ahc_print_register(NULL, 0, "SCB_BASE", 0xa0, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_cdb_ptr_print;
-#else
-#define ahc_scb_cdb_ptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_CDB_PTR", 0xa0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_residual_sgptr_print;
-#else
-#define ahc_scb_residual_sgptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_RESIDUAL_SGPTR", 0xa4, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_scsi_status_print;
-#else
-#define ahc_scb_scsi_status_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_SCSI_STATUS", 0xa8, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_target_phases_print;
-#else
-#define ahc_scb_target_phases_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_TARGET_PHASES", 0xa9, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_target_data_dir_print;
-#else
-#define ahc_scb_target_data_dir_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_TARGET_DATA_DIR", 0xaa, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_target_itag_print;
-#else
-#define ahc_scb_target_itag_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_TARGET_ITAG", 0xab, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_dataptr_print;
-#else
-#define ahc_scb_dataptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_DATAPTR", 0xac, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_datacnt_print;
-#else
-#define ahc_scb_datacnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_DATACNT", 0xb0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_sgptr_print;
-#else
-#define ahc_scb_sgptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_SGPTR", 0xb4, regvalue, cur_col, wrap)
-#endif
-
 #if AIC_DEBUG_REGISTERS
 ahc_reg_print_t ahc_scb_control_print;
 #else
@@ -880,188 +187,6 @@ ahc_reg_print_t ahc_scb_tag_print;
     ahc_print_register(NULL, 0, "SCB_TAG", 0xbb, regvalue, cur_col, wrap)
 #endif
 
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_cdb_len_print;
-#else
-#define ahc_scb_cdb_len_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_CDB_LEN", 0xbc, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_scsirate_print;
-#else
-#define ahc_scb_scsirate_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_SCSIRATE", 0xbd, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_scsioffset_print;
-#else
-#define ahc_scb_scsioffset_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_SCSIOFFSET", 0xbe, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_next_print;
-#else
-#define ahc_scb_next_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_NEXT", 0xbf, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_64_spare_print;
-#else
-#define ahc_scb_64_spare_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_64_SPARE", 0xc0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_seectl_2840_print;
-#else
-#define ahc_seectl_2840_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SEECTL_2840", 0xc0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_status_2840_print;
-#else
-#define ahc_status_2840_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "STATUS_2840", 0xc1, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scb_64_btt_print;
-#else
-#define ahc_scb_64_btt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCB_64_BTT", 0xd0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_cchaddr_print;
-#else
-#define ahc_cchaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCHADDR", 0xe0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_cchcnt_print;
-#else
-#define ahc_cchcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCHCNT", 0xe8, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccsgram_print;
-#else
-#define ahc_ccsgram_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSGRAM", 0xe9, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccsgaddr_print;
-#else
-#define ahc_ccsgaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSGADDR", 0xea, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccsgctl_print;
-#else
-#define ahc_ccsgctl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSGCTL", 0xeb, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccscbram_print;
-#else
-#define ahc_ccscbram_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSCBRAM", 0xec, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccscbaddr_print;
-#else
-#define ahc_ccscbaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSCBADDR", 0xed, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccscbctl_print;
-#else
-#define ahc_ccscbctl_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSCBCTL", 0xee, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccscbcnt_print;
-#else
-#define ahc_ccscbcnt_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSCBCNT", 0xef, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_scbbaddr_print;
-#else
-#define ahc_scbbaddr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SCBBADDR", 0xf0, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_ccscbptr_print;
-#else
-#define ahc_ccscbptr_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "CCSCBPTR", 0xf1, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_hnscb_qoff_print;
-#else
-#define ahc_hnscb_qoff_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "HNSCB_QOFF", 0xf4, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_snscb_qoff_print;
-#else
-#define ahc_snscb_qoff_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SNSCB_QOFF", 0xf6, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sdscb_qoff_print;
-#else
-#define ahc_sdscb_qoff_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SDSCB_QOFF", 0xf8, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_qoff_ctlsta_print;
-#else
-#define ahc_qoff_ctlsta_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "QOFF_CTLSTA", 0xfa, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_dff_thrsh_print;
-#else
-#define ahc_dff_thrsh_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "DFF_THRSH", 0xfb, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sg_cache_shadow_print;
-#else
-#define ahc_sg_cache_shadow_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SG_CACHE_SHADOW", 0xfc, regvalue, cur_col, wrap)
-#endif
-
-#if AIC_DEBUG_REGISTERS
-ahc_reg_print_t ahc_sg_cache_pre_print;
-#else
-#define ahc_sg_cache_pre_print(regvalue, cur_col, wrap) \
-    ahc_print_register(NULL, 0, "SG_CACHE_PRE", 0xfc, regvalue, cur_col, wrap)
-#endif
-
 
 #define        SCSISEQ                         0x00
 #define                TEMODE                  0x80
index 309a562b009ef284294ff27fbbe6ea7950dc2cab..9f9b88047d0c610aee6c06d6cbcde7e19965171e 100644 (file)
@@ -43,48 +43,6 @@ ahc_sxfrctl0_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x01, regvalue, cur_col, wrap));
 }
 
-static const ahc_reg_parse_entry_t SXFRCTL1_parse_table[] = {
-       { "STPWEN",             0x01, 0x01 },
-       { "ACTNEGEN",           0x02, 0x02 },
-       { "ENSTIMER",           0x04, 0x04 },
-       { "ENSPCHK",            0x20, 0x20 },
-       { "SWRAPEN",            0x40, 0x40 },
-       { "BITBUCKET",          0x80, 0x80 },
-       { "STIMESEL",           0x18, 0x18 }
-};
-
-int
-ahc_sxfrctl1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SXFRCTL1_parse_table, 7, "SXFRCTL1",
-           0x02, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCSISIGO_parse_table[] = {
-       { "ACKO",               0x01, 0x01 },
-       { "REQO",               0x02, 0x02 },
-       { "BSYO",               0x04, 0x04 },
-       { "SELO",               0x08, 0x08 },
-       { "ATNO",               0x10, 0x10 },
-       { "MSGO",               0x20, 0x20 },
-       { "IOO",                0x40, 0x40 },
-       { "CDO",                0x80, 0x80 },
-       { "P_DATAOUT",          0x00, 0x00 },
-       { "P_DATAIN",           0x40, 0x40 },
-       { "P_COMMAND",          0x80, 0x80 },
-       { "P_MESGOUT",          0xa0, 0xa0 },
-       { "P_STATUS",           0xc0, 0xc0 },
-       { "PHASE_MASK",         0xe0, 0xe0 },
-       { "P_MESGIN",           0xe0, 0xe0 }
-};
-
-int
-ahc_scsisigo_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSISIGO_parse_table, 15, "SCSISIGO",
-           0x03, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SCSISIGI_parse_table[] = {
        { "ACKI",               0x01, 0x01 },
        { "REQI",               0x02, 0x02 },
@@ -128,77 +86,6 @@ ahc_scsirate_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x04, regvalue, cur_col, wrap));
 }
 
-static const ahc_reg_parse_entry_t SCSIID_parse_table[] = {
-       { "TWIN_CHNLB",         0x80, 0x80 },
-       { "OID",                0x0f, 0x0f },
-       { "TWIN_TID",           0x70, 0x70 },
-       { "SOFS_ULTRA2",        0x7f, 0x7f },
-       { "TID",                0xf0, 0xf0 }
-};
-
-int
-ahc_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSIID_parse_table, 5, "SCSIID",
-           0x05, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scsidatl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCSIDATL",
-           0x06, regvalue, cur_col, wrap));
-}
-
-int
-ahc_stcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "STCNT",
-           0x08, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t OPTIONMODE_parse_table[] = {
-       { "DIS_MSGIN_DUALEDGE", 0x01, 0x01 },
-       { "AUTO_MSGOUT_DE",     0x02, 0x02 },
-       { "SCSIDATL_IMGEN",     0x04, 0x04 },
-       { "EXPPHASEDIS",        0x08, 0x08 },
-       { "BUSFREEREV",         0x10, 0x10 },
-       { "ATNMGMNTEN",         0x20, 0x20 },
-       { "AUTOACKEN",          0x40, 0x40 },
-       { "AUTORATEEN",         0x80, 0x80 },
-       { "OPTIONMODE_DEFAULTS",0x03, 0x03 }
-};
-
-int
-ahc_optionmode_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(OPTIONMODE_parse_table, 9, "OPTIONMODE",
-           0x08, regvalue, cur_col, wrap));
-}
-
-int
-ahc_targcrccnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "TARGCRCCNT",
-           0x0a, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t CLRSINT0_parse_table[] = {
-       { "CLRSPIORDY",         0x02, 0x02 },
-       { "CLRSWRAP",           0x08, 0x08 },
-       { "CLRIOERR",           0x08, 0x08 },
-       { "CLRSELINGO",         0x10, 0x10 },
-       { "CLRSELDI",           0x20, 0x20 },
-       { "CLRSELDO",           0x40, 0x40 }
-};
-
-int
-ahc_clrsint0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CLRSINT0_parse_table, 6, "CLRSINT0",
-           0x0b, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SSTAT0_parse_table[] = {
        { "DMADONE",            0x01, 0x01 },
        { "SPIORDY",            0x02, 0x02 },
@@ -218,23 +105,6 @@ ahc_sstat0_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x0b, regvalue, cur_col, wrap));
 }
 
-static const ahc_reg_parse_entry_t CLRSINT1_parse_table[] = {
-       { "CLRREQINIT",         0x01, 0x01 },
-       { "CLRPHASECHG",        0x02, 0x02 },
-       { "CLRSCSIPERR",        0x04, 0x04 },
-       { "CLRBUSFREE",         0x08, 0x08 },
-       { "CLRSCSIRSTI",        0x20, 0x20 },
-       { "CLRATNO",            0x40, 0x40 },
-       { "CLRSELTIMEO",        0x80, 0x80 }
-};
-
-int
-ahc_clrsint1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CLRSINT1_parse_table, 7, "CLRSINT1",
-           0x0c, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SSTAT1_parse_table[] = {
        { "REQINIT",            0x01, 0x01 },
        { "PHASECHG",           0x02, 0x02 },
@@ -284,18 +154,6 @@ ahc_sstat3_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x0e, regvalue, cur_col, wrap));
 }
 
-static const ahc_reg_parse_entry_t SCSIID_ULTRA2_parse_table[] = {
-       { "OID",                0x0f, 0x0f },
-       { "TID",                0xf0, 0xf0 }
-};
-
-int
-ahc_scsiid_ultra2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSIID_ULTRA2_parse_table, 2, "SCSIID_ULTRA2",
-           0x0f, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SIMODE0_parse_table[] = {
        { "ENDMADONE",          0x01, 0x01 },
        { "ENSPIORDY",          0x02, 0x02 },
@@ -339,107 +197,6 @@ ahc_scsibusl_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x12, regvalue, cur_col, wrap));
 }
 
-int
-ahc_shaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SHADDR",
-           0x14, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SELTIMER_parse_table[] = {
-       { "STAGE1",             0x01, 0x01 },
-       { "STAGE2",             0x02, 0x02 },
-       { "STAGE3",             0x04, 0x04 },
-       { "STAGE4",             0x08, 0x08 },
-       { "STAGE5",             0x10, 0x10 },
-       { "STAGE6",             0x20, 0x20 }
-};
-
-int
-ahc_seltimer_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SELTIMER_parse_table, 6, "SELTIMER",
-           0x18, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SELID_parse_table[] = {
-       { "ONEBIT",             0x08, 0x08 },
-       { "SELID_MASK",         0xf0, 0xf0 }
-};
-
-int
-ahc_selid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SELID_parse_table, 2, "SELID",
-           0x19, regvalue, cur_col, wrap));
-}
-
-int
-ahc_targid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "TARGID",
-           0x1b, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SPIOCAP_parse_table[] = {
-       { "SSPIOCPS",           0x01, 0x01 },
-       { "ROM",                0x02, 0x02 },
-       { "EEPROM",             0x04, 0x04 },
-       { "SEEPROM",            0x08, 0x08 },
-       { "EXT_BRDCTL",         0x10, 0x10 },
-       { "SOFTCMDEN",          0x20, 0x20 },
-       { "SOFT0",              0x40, 0x40 },
-       { "SOFT1",              0x80, 0x80 }
-};
-
-int
-ahc_spiocap_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SPIOCAP_parse_table, 8, "SPIOCAP",
-           0x1b, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t BRDCTL_parse_table[] = {
-       { "BRDCTL0",            0x01, 0x01 },
-       { "BRDSTB_ULTRA2",      0x01, 0x01 },
-       { "BRDCTL1",            0x02, 0x02 },
-       { "BRDRW_ULTRA2",       0x02, 0x02 },
-       { "BRDRW",              0x04, 0x04 },
-       { "BRDDAT2",            0x04, 0x04 },
-       { "BRDCS",              0x08, 0x08 },
-       { "BRDDAT3",            0x08, 0x08 },
-       { "BRDSTB",             0x10, 0x10 },
-       { "BRDDAT4",            0x10, 0x10 },
-       { "BRDDAT5",            0x20, 0x20 },
-       { "BRDDAT6",            0x40, 0x40 },
-       { "BRDDAT7",            0x80, 0x80 }
-};
-
-int
-ahc_brdctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(BRDCTL_parse_table, 13, "BRDCTL",
-           0x1d, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SEECTL_parse_table[] = {
-       { "SEEDI",              0x01, 0x01 },
-       { "SEEDO",              0x02, 0x02 },
-       { "SEECK",              0x04, 0x04 },
-       { "SEECS",              0x08, 0x08 },
-       { "SEERDY",             0x10, 0x10 },
-       { "SEEMS",              0x20, 0x20 },
-       { "EXTARBREQ",          0x40, 0x40 },
-       { "EXTARBACK",          0x80, 0x80 }
-};
-
-int
-ahc_seectl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SEECTL_parse_table, 8, "SEECTL",
-           0x1e, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SBLKCTL_parse_table[] = {
        { "XCVR",               0x01, 0x01 },
        { "SELWIDE",            0x02, 0x02 },
@@ -458,68 +215,6 @@ ahc_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x1f, regvalue, cur_col, wrap));
 }
 
-int
-ahc_busy_targets_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "BUSY_TARGETS",
-           0x20, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ultra_enb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "ULTRA_ENB",
-           0x30, regvalue, cur_col, wrap));
-}
-
-int
-ahc_disc_dsb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "DISC_DSB",
-           0x32, regvalue, cur_col, wrap));
-}
-
-int
-ahc_mwi_residual_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "MWI_RESIDUAL",
-           0x38, regvalue, cur_col, wrap));
-}
-
-int
-ahc_next_queued_scb_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "NEXT_QUEUED_SCB",
-           0x39, regvalue, cur_col, wrap));
-}
-
-int
-ahc_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "MSG_OUT",
-           0x3a, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DMAPARAMS_parse_table[] = {
-       { "FIFORESET",          0x01, 0x01 },
-       { "FIFOFLUSH",          0x02, 0x02 },
-       { "DIRECTION",          0x04, 0x04 },
-       { "HDMAEN",             0x08, 0x08 },
-       { "HDMAENACK",          0x08, 0x08 },
-       { "SDMAEN",             0x10, 0x10 },
-       { "SDMAENACK",          0x10, 0x10 },
-       { "SCSIEN",             0x20, 0x20 },
-       { "WIDEODD",            0x40, 0x40 },
-       { "PRELOADEN",          0x80, 0x80 }
-};
-
-int
-ahc_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS",
-           0x3b, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t SEQ_FLAGS_parse_table[] = {
        { "NO_DISCONNECT",      0x01, 0x01 },
        { "SPHASE_PENDING",     0x02, 0x02 },
@@ -539,20 +234,6 @@ ahc_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x3c, regvalue, cur_col, wrap));
 }
 
-int
-ahc_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SAVED_SCSIID",
-           0x3d, regvalue, cur_col, wrap));
-}
-
-int
-ahc_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SAVED_LUN",
-           0x3e, regvalue, cur_col, wrap));
-}
-
 static const ahc_reg_parse_entry_t LASTPHASE_parse_table[] = {
        { "MSGI",               0x20, 0x20 },
        { "IOI",                0x40, 0x40 },
@@ -574,728 +255,127 @@ ahc_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0x3f, regvalue, cur_col, wrap));
 }
 
-int
-ahc_waiting_scbh_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "WAITING_SCBH",
-           0x40, regvalue, cur_col, wrap));
-}
+static const ahc_reg_parse_entry_t SEQCTL_parse_table[] = {
+       { "LOADRAM",            0x01, 0x01 },
+       { "SEQRESET",           0x02, 0x02 },
+       { "STEP",               0x04, 0x04 },
+       { "BRKADRINTEN",        0x08, 0x08 },
+       { "FASTMODE",           0x10, 0x10 },
+       { "FAILDIS",            0x20, 0x20 },
+       { "PAUSEDIS",           0x40, 0x40 },
+       { "PERRORDIS",          0x80, 0x80 }
+};
 
 int
-ahc_disconnected_scbh_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_seqctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "DISCONNECTED_SCBH",
-           0x41, regvalue, cur_col, wrap));
+       return (ahc_print_register(SEQCTL_parse_table, 8, "SEQCTL",
+           0x60, regvalue, cur_col, wrap));
 }
 
 int
-ahc_free_scbh_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_sram_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "FREE_SCBH",
-           0x42, regvalue, cur_col, wrap));
+       return (ahc_print_register(NULL, 0, "SRAM_BASE",
+           0x70, regvalue, cur_col, wrap));
 }
 
-int
-ahc_hscb_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "HSCB_ADDR",
-           0x44, regvalue, cur_col, wrap));
-}
+static const ahc_reg_parse_entry_t ERROR_parse_table[] = {
+       { "ILLHADDR",           0x01, 0x01 },
+       { "ILLSADDR",           0x02, 0x02 },
+       { "ILLOPCODE",          0x04, 0x04 },
+       { "SQPARERR",           0x08, 0x08 },
+       { "DPARERR",            0x10, 0x10 },
+       { "MPARERR",            0x20, 0x20 },
+       { "PCIERRSTAT",         0x40, 0x40 },
+       { "CIOPARERR",          0x80, 0x80 }
+};
 
 int
-ahc_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_error_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "SHARED_DATA_ADDR",
-           0x48, regvalue, cur_col, wrap));
+       return (ahc_print_register(ERROR_parse_table, 8, "ERROR",
+           0x92, regvalue, cur_col, wrap));
 }
 
-int
-ahc_kernel_qinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "KERNEL_QINPOS",
-           0x4c, regvalue, cur_col, wrap));
-}
+static const ahc_reg_parse_entry_t DFCNTRL_parse_table[] = {
+       { "FIFORESET",          0x01, 0x01 },
+       { "FIFOFLUSH",          0x02, 0x02 },
+       { "DIRECTION",          0x04, 0x04 },
+       { "HDMAEN",             0x08, 0x08 },
+       { "HDMAENACK",          0x08, 0x08 },
+       { "SDMAEN",             0x10, 0x10 },
+       { "SDMAENACK",          0x10, 0x10 },
+       { "SCSIEN",             0x20, 0x20 },
+       { "WIDEODD",            0x40, 0x40 },
+       { "PRELOADEN",          0x80, 0x80 }
+};
 
 int
-ahc_qinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_dfcntrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "QINPOS",
-           0x4d, regvalue, cur_col, wrap));
+       return (ahc_print_register(DFCNTRL_parse_table, 10, "DFCNTRL",
+           0x93, regvalue, cur_col, wrap));
 }
 
+static const ahc_reg_parse_entry_t DFSTATUS_parse_table[] = {
+       { "FIFOEMP",            0x01, 0x01 },
+       { "FIFOFULL",           0x02, 0x02 },
+       { "DFTHRESH",           0x04, 0x04 },
+       { "HDONE",              0x08, 0x08 },
+       { "MREQPEND",           0x10, 0x10 },
+       { "FIFOQWDEMP",         0x20, 0x20 },
+       { "DFCACHETH",          0x40, 0x40 },
+       { "PRELOAD_AVAIL",      0x80, 0x80 }
+};
+
 int
-ahc_qoutpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_dfstatus_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "QOUTPOS",
-           0x4e, regvalue, cur_col, wrap));
+       return (ahc_print_register(DFSTATUS_parse_table, 8, "DFSTATUS",
+           0x94, regvalue, cur_col, wrap));
 }
 
+static const ahc_reg_parse_entry_t SCSIPHASE_parse_table[] = {
+       { "DATA_OUT_PHASE",     0x01, 0x01 },
+       { "DATA_IN_PHASE",      0x02, 0x02 },
+       { "MSG_OUT_PHASE",      0x04, 0x04 },
+       { "MSG_IN_PHASE",       0x08, 0x08 },
+       { "COMMAND_PHASE",      0x10, 0x10 },
+       { "STATUS_PHASE",       0x20, 0x20 },
+       { "DATA_PHASE_MASK",    0x03, 0x03 }
+};
+
 int
-ahc_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_scsiphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "KERNEL_TQINPOS",
-           0x4f, regvalue, cur_col, wrap));
+       return (ahc_print_register(SCSIPHASE_parse_table, 7, "SCSIPHASE",
+           0x9e, regvalue, cur_col, wrap));
 }
 
 int
-ahc_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "TQINPOS",
-           0x50, regvalue, cur_col, wrap));
+       return (ahc_print_register(NULL, 0, "SCB_BASE",
+           0xa0, regvalue, cur_col, wrap));
 }
 
-static const ahc_reg_parse_entry_t ARG_1_parse_table[] = {
-       { "CONT_TARG_SESSION",  0x02, 0x02 },
-       { "CONT_MSG_LOOP",      0x04, 0x04 },
-       { "EXIT_MSG_LOOP",      0x08, 0x08 },
-       { "MSGOUT_PHASEMIS",    0x10, 0x10 },
-       { "SEND_REJ",           0x20, 0x20 },
-       { "SEND_SENSE",         0x40, 0x40 },
-       { "SEND_MSG",           0x80, 0x80 }
+static const ahc_reg_parse_entry_t SCB_CONTROL_parse_table[] = {
+       { "DISCONNECTED",       0x04, 0x04 },
+       { "ULTRAENB",           0x08, 0x08 },
+       { "MK_MESSAGE",         0x10, 0x10 },
+       { "TAG_ENB",            0x20, 0x20 },
+       { "DISCENB",            0x40, 0x40 },
+       { "TARGET_SCB",         0x80, 0x80 },
+       { "STATUS_RCVD",        0x80, 0x80 },
+       { "SCB_TAG_TYPE",       0x03, 0x03 }
 };
 
 int
-ahc_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(ARG_1_parse_table, 7, "ARG_1",
-           0x51, regvalue, cur_col, wrap));
-}
-
-int
-ahc_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap)
+ahc_scb_control_print(u_int regvalue, u_int *cur_col, u_int wrap)
 {
-       return (ahc_print_register(NULL, 0, "ARG_2",
-           0x52, regvalue, cur_col, wrap));
-}
-
-int
-ahc_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "LAST_MSG",
-           0x53, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = {
-       { "ENAUTOATNP",         0x02, 0x02 },
-       { "ENAUTOATNI",         0x04, 0x04 },
-       { "ENAUTOATNO",         0x08, 0x08 },
-       { "ENRSELI",            0x10, 0x10 },
-       { "ENSELI",             0x20, 0x20 },
-       { "ENSELO",             0x40, 0x40 }
-};
-
-int
-ahc_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE",
-           0x54, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t HA_274_BIOSGLOBAL_parse_table[] = {
-       { "HA_274_EXTENDED_TRANS",0x01, 0x01 }
-};
-
-int
-ahc_ha_274_biosglobal_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(HA_274_BIOSGLOBAL_parse_table, 1, "HA_274_BIOSGLOBAL",
-           0x56, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = {
-       { "SCB_DMA",            0x01, 0x01 },
-       { "TARGET_MSG_PENDING", 0x02, 0x02 }
-};
-
-int
-ahc_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2",
-           0x57, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCSICONF_parse_table[] = {
-       { "ENSPCHK",            0x20, 0x20 },
-       { "RESET_SCSI",         0x40, 0x40 },
-       { "TERM_ENB",           0x80, 0x80 },
-       { "HSCSIID",            0x07, 0x07 },
-       { "HWSCSIID",           0x0f, 0x0f }
-};
-
-int
-ahc_scsiconf_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSICONF_parse_table, 5, "SCSICONF",
-           0x5a, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t INTDEF_parse_table[] = {
-       { "EDGE_TRIG",          0x80, 0x80 },
-       { "VECTOR",             0x0f, 0x0f }
-};
-
-int
-ahc_intdef_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(INTDEF_parse_table, 2, "INTDEF",
-           0x5c, regvalue, cur_col, wrap));
-}
-
-int
-ahc_hostconf_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "HOSTCONF",
-           0x5d, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t HA_274_BIOSCTRL_parse_table[] = {
-       { "CHANNEL_B_PRIMARY",  0x08, 0x08 },
-       { "BIOSMODE",           0x30, 0x30 },
-       { "BIOSDISABLED",       0x30, 0x30 }
-};
-
-int
-ahc_ha_274_biosctrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(HA_274_BIOSCTRL_parse_table, 3, "HA_274_BIOSCTRL",
-           0x5f, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SEQCTL_parse_table[] = {
-       { "LOADRAM",            0x01, 0x01 },
-       { "SEQRESET",           0x02, 0x02 },
-       { "STEP",               0x04, 0x04 },
-       { "BRKADRINTEN",        0x08, 0x08 },
-       { "FASTMODE",           0x10, 0x10 },
-       { "FAILDIS",            0x20, 0x20 },
-       { "PAUSEDIS",           0x40, 0x40 },
-       { "PERRORDIS",          0x80, 0x80 }
-};
-
-int
-ahc_seqctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SEQCTL_parse_table, 8, "SEQCTL",
-           0x60, regvalue, cur_col, wrap));
-}
-
-int
-ahc_seqram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SEQRAM",
-           0x61, regvalue, cur_col, wrap));
-}
-
-int
-ahc_seqaddr0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SEQADDR0",
-           0x62, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SEQADDR1_parse_table[] = {
-       { "SEQADDR1_MASK",      0x01, 0x01 }
-};
-
-int
-ahc_seqaddr1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SEQADDR1_parse_table, 1, "SEQADDR1",
-           0x63, regvalue, cur_col, wrap));
-}
-
-int
-ahc_accum_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "ACCUM",
-           0x64, regvalue, cur_col, wrap));
-}
-
-int
-ahc_sindex_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SINDEX",
-           0x65, regvalue, cur_col, wrap));
-}
-
-int
-ahc_dindex_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "DINDEX",
-           0x66, regvalue, cur_col, wrap));
-}
-
-int
-ahc_allones_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "ALLONES",
-           0x69, regvalue, cur_col, wrap));
-}
-
-int
-ahc_allzeros_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "ALLZEROS",
-           0x6a, regvalue, cur_col, wrap));
-}
-
-int
-ahc_none_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "NONE",
-           0x6a, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t FLAGS_parse_table[] = {
-       { "CARRY",              0x01, 0x01 },
-       { "ZERO",               0x02, 0x02 }
-};
-
-int
-ahc_flags_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(FLAGS_parse_table, 2, "FLAGS",
-           0x6b, regvalue, cur_col, wrap));
-}
-
-int
-ahc_sindir_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SINDIR",
-           0x6c, regvalue, cur_col, wrap));
-}
-
-int
-ahc_dindir_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "DINDIR",
-           0x6d, regvalue, cur_col, wrap));
-}
-
-int
-ahc_stack_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "STACK",
-           0x6f, regvalue, cur_col, wrap));
-}
-
-int
-ahc_targ_offset_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "TARG_OFFSET",
-           0x70, regvalue, cur_col, wrap));
-}
-
-int
-ahc_sram_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SRAM_BASE",
-           0x70, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DSCOMMAND0_parse_table[] = {
-       { "CIOPARCKEN",         0x01, 0x01 },
-       { "USCBSIZE32",         0x02, 0x02 },
-       { "RAMPS",              0x04, 0x04 },
-       { "INTSCBRAMSEL",       0x08, 0x08 },
-       { "EXTREQLCK",          0x10, 0x10 },
-       { "MPARCKEN",           0x20, 0x20 },
-       { "DPARCKEN",           0x40, 0x40 },
-       { "CACHETHEN",          0x80, 0x80 }
-};
-
-int
-ahc_dscommand0_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DSCOMMAND0_parse_table, 8, "DSCOMMAND0",
-           0x84, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t BUSTIME_parse_table[] = {
-       { "BON",                0x0f, 0x0f },
-       { "BOFF",               0xf0, 0xf0 }
-};
-
-int
-ahc_bustime_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(BUSTIME_parse_table, 2, "BUSTIME",
-           0x85, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DSCOMMAND1_parse_table[] = {
-       { "HADDLDSEL0",         0x01, 0x01 },
-       { "HADDLDSEL1",         0x02, 0x02 },
-       { "DSLATT",             0xfc, 0xfc }
-};
-
-int
-ahc_dscommand1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DSCOMMAND1_parse_table, 3, "DSCOMMAND1",
-           0x85, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t BUSSPD_parse_table[] = {
-       { "STBON",              0x07, 0x07 },
-       { "STBOFF",             0x38, 0x38 },
-       { "DFTHRSH_75",         0x80, 0x80 },
-       { "DFTHRSH",            0xc0, 0xc0 },
-       { "DFTHRSH_100",        0xc0, 0xc0 }
-};
-
-int
-ahc_busspd_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(BUSSPD_parse_table, 5, "BUSSPD",
-           0x86, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t HS_MAILBOX_parse_table[] = {
-       { "SEQ_MAILBOX",        0x0f, 0x0f },
-       { "HOST_TQINPOS",       0x80, 0x80 },
-       { "HOST_MAILBOX",       0xf0, 0xf0 }
-};
-
-int
-ahc_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(HS_MAILBOX_parse_table, 3, "HS_MAILBOX",
-           0x86, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DSPCISTATUS_parse_table[] = {
-       { "DFTHRSH_100",        0xc0, 0xc0 }
-};
-
-int
-ahc_dspcistatus_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DSPCISTATUS_parse_table, 1, "DSPCISTATUS",
-           0x86, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t HCNTRL_parse_table[] = {
-       { "CHIPRST",            0x01, 0x01 },
-       { "CHIPRSTACK",         0x01, 0x01 },
-       { "INTEN",              0x02, 0x02 },
-       { "PAUSE",              0x04, 0x04 },
-       { "IRQMS",              0x08, 0x08 },
-       { "SWINT",              0x10, 0x10 },
-       { "POWRDN",             0x40, 0x40 }
-};
-
-int
-ahc_hcntrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(HCNTRL_parse_table, 7, "HCNTRL",
-           0x87, regvalue, cur_col, wrap));
-}
-
-int
-ahc_haddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "HADDR",
-           0x88, regvalue, cur_col, wrap));
-}
-
-int
-ahc_hcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "HCNT",
-           0x8c, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCBPTR",
-           0x90, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t INTSTAT_parse_table[] = {
-       { "SEQINT",             0x01, 0x01 },
-       { "CMDCMPLT",           0x02, 0x02 },
-       { "SCSIINT",            0x04, 0x04 },
-       { "BRKADRINT",          0x08, 0x08 },
-       { "BAD_PHASE",          0x01, 0x01 },
-       { "INT_PEND",           0x0f, 0x0f },
-       { "SEND_REJECT",        0x11, 0x11 },
-       { "PROTO_VIOLATION",    0x21, 0x21 },
-       { "NO_MATCH",           0x31, 0x31 },
-       { "IGN_WIDE_RES",       0x41, 0x41 },
-       { "PDATA_REINIT",       0x51, 0x51 },
-       { "HOST_MSG_LOOP",      0x61, 0x61 },
-       { "BAD_STATUS",         0x71, 0x71 },
-       { "PERR_DETECTED",      0x81, 0x81 },
-       { "DATA_OVERRUN",       0x91, 0x91 },
-       { "MKMSG_FAILED",       0xa1, 0xa1 },
-       { "MISSED_BUSFREE",     0xb1, 0xb1 },
-       { "SCB_MISMATCH",       0xc1, 0xc1 },
-       { "NO_FREE_SCB",        0xd1, 0xd1 },
-       { "OUT_OF_RANGE",       0xe1, 0xe1 },
-       { "SEQINT_MASK",        0xf1, 0xf1 }
-};
-
-int
-ahc_intstat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(INTSTAT_parse_table, 21, "INTSTAT",
-           0x91, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t CLRINT_parse_table[] = {
-       { "CLRSEQINT",          0x01, 0x01 },
-       { "CLRCMDINT",          0x02, 0x02 },
-       { "CLRSCSIINT",         0x04, 0x04 },
-       { "CLRBRKADRINT",       0x08, 0x08 },
-       { "CLRPARERR",          0x10, 0x10 }
-};
-
-int
-ahc_clrint_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CLRINT_parse_table, 5, "CLRINT",
-           0x92, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t ERROR_parse_table[] = {
-       { "ILLHADDR",           0x01, 0x01 },
-       { "ILLSADDR",           0x02, 0x02 },
-       { "ILLOPCODE",          0x04, 0x04 },
-       { "SQPARERR",           0x08, 0x08 },
-       { "DPARERR",            0x10, 0x10 },
-       { "MPARERR",            0x20, 0x20 },
-       { "PCIERRSTAT",         0x40, 0x40 },
-       { "CIOPARERR",          0x80, 0x80 }
-};
-
-int
-ahc_error_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(ERROR_parse_table, 8, "ERROR",
-           0x92, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DFCNTRL_parse_table[] = {
-       { "FIFORESET",          0x01, 0x01 },
-       { "FIFOFLUSH",          0x02, 0x02 },
-       { "DIRECTION",          0x04, 0x04 },
-       { "HDMAEN",             0x08, 0x08 },
-       { "HDMAENACK",          0x08, 0x08 },
-       { "SDMAEN",             0x10, 0x10 },
-       { "SDMAENACK",          0x10, 0x10 },
-       { "SCSIEN",             0x20, 0x20 },
-       { "WIDEODD",            0x40, 0x40 },
-       { "PRELOADEN",          0x80, 0x80 }
-};
-
-int
-ahc_dfcntrl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DFCNTRL_parse_table, 10, "DFCNTRL",
-           0x93, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DFSTATUS_parse_table[] = {
-       { "FIFOEMP",            0x01, 0x01 },
-       { "FIFOFULL",           0x02, 0x02 },
-       { "DFTHRESH",           0x04, 0x04 },
-       { "HDONE",              0x08, 0x08 },
-       { "MREQPEND",           0x10, 0x10 },
-       { "FIFOQWDEMP",         0x20, 0x20 },
-       { "DFCACHETH",          0x40, 0x40 },
-       { "PRELOAD_AVAIL",      0x80, 0x80 }
-};
-
-int
-ahc_dfstatus_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DFSTATUS_parse_table, 8, "DFSTATUS",
-           0x94, regvalue, cur_col, wrap));
-}
-
-int
-ahc_dfwaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "DFWADDR",
-           0x95, regvalue, cur_col, wrap));
-}
-
-int
-ahc_dfdat_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "DFDAT",
-           0x99, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCBCNT_parse_table[] = {
-       { "SCBAUTO",            0x80, 0x80 },
-       { "SCBCNT_MASK",        0x1f, 0x1f }
-};
-
-int
-ahc_scbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCBCNT_parse_table, 2, "SCBCNT",
-           0x9a, regvalue, cur_col, wrap));
-}
-
-int
-ahc_qinfifo_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "QINFIFO",
-           0x9b, regvalue, cur_col, wrap));
-}
-
-int
-ahc_qoutfifo_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "QOUTFIFO",
-           0x9d, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t CRCCONTROL1_parse_table[] = {
-       { "TARGCRCCNTEN",       0x04, 0x04 },
-       { "TARGCRCENDEN",       0x08, 0x08 },
-       { "CRCREQCHKEN",        0x10, 0x10 },
-       { "CRCENDCHKEN",        0x20, 0x20 },
-       { "CRCVALCHKEN",        0x40, 0x40 },
-       { "CRCONSEEN",          0x80, 0x80 }
-};
-
-int
-ahc_crccontrol1_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CRCCONTROL1_parse_table, 6, "CRCCONTROL1",
-           0x9d, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCSIPHASE_parse_table[] = {
-       { "DATA_OUT_PHASE",     0x01, 0x01 },
-       { "DATA_IN_PHASE",      0x02, 0x02 },
-       { "MSG_OUT_PHASE",      0x04, 0x04 },
-       { "MSG_IN_PHASE",       0x08, 0x08 },
-       { "COMMAND_PHASE",      0x10, 0x10 },
-       { "STATUS_PHASE",       0x20, 0x20 },
-       { "DATA_PHASE_MASK",    0x03, 0x03 }
-};
-
-int
-ahc_scsiphase_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCSIPHASE_parse_table, 7, "SCSIPHASE",
-           0x9e, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SFUNCT_parse_table[] = {
-       { "ALT_MODE",           0x80, 0x80 }
-};
-
-int
-ahc_sfunct_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SFUNCT_parse_table, 1, "SFUNCT",
-           0x9f, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_BASE",
-           0xa0, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_cdb_ptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_CDB_PTR",
-           0xa0, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_residual_sgptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_RESIDUAL_SGPTR",
-           0xa4, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_scsi_status_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_SCSI_STATUS",
-           0xa8, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_target_phases_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_TARGET_PHASES",
-           0xa9, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_target_data_dir_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_TARGET_DATA_DIR",
-           0xaa, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_target_itag_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_TARGET_ITAG",
-           0xab, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_dataptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_DATAPTR",
-           0xac, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCB_DATACNT_parse_table[] = {
-       { "SG_LAST_SEG",        0x80, 0x80 },
-       { "SG_HIGH_ADDR_BITS",  0x7f, 0x7f }
-};
-
-int
-ahc_scb_datacnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCB_DATACNT_parse_table, 2, "SCB_DATACNT",
-           0xb0, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCB_SGPTR_parse_table[] = {
-       { "SG_LIST_NULL",       0x01, 0x01 },
-       { "SG_FULL_RESID",      0x02, 0x02 },
-       { "SG_RESID_VALID",     0x04, 0x04 }
-};
-
-int
-ahc_scb_sgptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCB_SGPTR_parse_table, 3, "SCB_SGPTR",
-           0xb4, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SCB_CONTROL_parse_table[] = {
-       { "DISCONNECTED",       0x04, 0x04 },
-       { "ULTRAENB",           0x08, 0x08 },
-       { "MK_MESSAGE",         0x10, 0x10 },
-       { "TAG_ENB",            0x20, 0x20 },
-       { "DISCENB",            0x40, 0x40 },
-       { "TARGET_SCB",         0x80, 0x80 },
-       { "STATUS_RCVD",        0x80, 0x80 },
-       { "SCB_TAG_TYPE",       0x03, 0x03 }
-};
-
-int
-ahc_scb_control_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SCB_CONTROL_parse_table, 8, "SCB_CONTROL",
-           0xb8, regvalue, cur_col, wrap));
+       return (ahc_print_register(SCB_CONTROL_parse_table, 8, "SCB_CONTROL",
+           0xb8, regvalue, cur_col, wrap));
 }
 
 static const ahc_reg_parse_entry_t SCB_SCSIID_parse_table[] = {
@@ -1331,248 +411,3 @@ ahc_scb_tag_print(u_int regvalue, u_int *cur_col, u_int wrap)
            0xbb, regvalue, cur_col, wrap));
 }
 
-int
-ahc_scb_cdb_len_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_CDB_LEN",
-           0xbc, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_scsirate_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_SCSIRATE",
-           0xbd, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_scsioffset_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_SCSIOFFSET",
-           0xbe, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_next_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_NEXT",
-           0xbf, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SEECTL_2840_parse_table[] = {
-       { "DO_2840",            0x01, 0x01 },
-       { "CK_2840",            0x02, 0x02 },
-       { "CS_2840",            0x04, 0x04 }
-};
-
-int
-ahc_seectl_2840_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SEECTL_2840_parse_table, 3, "SEECTL_2840",
-           0xc0, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t STATUS_2840_parse_table[] = {
-       { "DI_2840",            0x01, 0x01 },
-       { "EEPROM_TF",          0x80, 0x80 },
-       { "ADSEL",              0x1e, 0x1e },
-       { "BIOS_SEL",           0x60, 0x60 }
-};
-
-int
-ahc_status_2840_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(STATUS_2840_parse_table, 4, "STATUS_2840",
-           0xc1, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scb_64_btt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCB_64_BTT",
-           0xd0, regvalue, cur_col, wrap));
-}
-
-int
-ahc_cchaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCHADDR",
-           0xe0, regvalue, cur_col, wrap));
-}
-
-int
-ahc_cchcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCHCNT",
-           0xe8, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSGRAM",
-           0xe9, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccsgaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSGADDR",
-           0xea, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t CCSGCTL_parse_table[] = {
-       { "CCSGRESET",          0x01, 0x01 },
-       { "SG_FETCH_NEEDED",    0x02, 0x02 },
-       { "CCSGEN",             0x08, 0x08 },
-       { "CCSGDONE",           0x80, 0x80 }
-};
-
-int
-ahc_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CCSGCTL_parse_table, 4, "CCSGCTL",
-           0xeb, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccscbram_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSCBRAM",
-           0xec, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSCBADDR",
-           0xed, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t CCSCBCTL_parse_table[] = {
-       { "CCSCBRESET",         0x01, 0x01 },
-       { "CCSCBDIR",           0x04, 0x04 },
-       { "CCSCBEN",            0x08, 0x08 },
-       { "CCARREN",            0x10, 0x10 },
-       { "ARRDONE",            0x40, 0x40 },
-       { "CCSCBDONE",          0x80, 0x80 }
-};
-
-int
-ahc_ccscbctl_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(CCSCBCTL_parse_table, 6, "CCSCBCTL",
-           0xee, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccscbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSCBCNT",
-           0xef, regvalue, cur_col, wrap));
-}
-
-int
-ahc_scbbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SCBBADDR",
-           0xf0, regvalue, cur_col, wrap));
-}
-
-int
-ahc_ccscbptr_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "CCSCBPTR",
-           0xf1, regvalue, cur_col, wrap));
-}
-
-int
-ahc_hnscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "HNSCB_QOFF",
-           0xf4, regvalue, cur_col, wrap));
-}
-
-int
-ahc_snscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SNSCB_QOFF",
-           0xf6, regvalue, cur_col, wrap));
-}
-
-int
-ahc_sdscb_qoff_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(NULL, 0, "SDSCB_QOFF",
-           0xf8, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t QOFF_CTLSTA_parse_table[] = {
-       { "SDSCB_ROLLOVER",     0x10, 0x10 },
-       { "SNSCB_ROLLOVER",     0x20, 0x20 },
-       { "SCB_AVAIL",          0x40, 0x40 },
-       { "SCB_QSIZE_256",      0x06, 0x06 },
-       { "SCB_QSIZE",          0x07, 0x07 }
-};
-
-int
-ahc_qoff_ctlsta_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(QOFF_CTLSTA_parse_table, 5, "QOFF_CTLSTA",
-           0xfa, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t DFF_THRSH_parse_table[] = {
-       { "RD_DFTHRSH_MIN",     0x00, 0x00 },
-       { "WR_DFTHRSH_MIN",     0x00, 0x00 },
-       { "RD_DFTHRSH_25",      0x01, 0x01 },
-       { "RD_DFTHRSH_50",      0x02, 0x02 },
-       { "RD_DFTHRSH_63",      0x03, 0x03 },
-       { "RD_DFTHRSH_75",      0x04, 0x04 },
-       { "RD_DFTHRSH_85",      0x05, 0x05 },
-       { "RD_DFTHRSH_90",      0x06, 0x06 },
-       { "RD_DFTHRSH",         0x07, 0x07 },
-       { "RD_DFTHRSH_MAX",     0x07, 0x07 },
-       { "WR_DFTHRSH_25",      0x10, 0x10 },
-       { "WR_DFTHRSH_50",      0x20, 0x20 },
-       { "WR_DFTHRSH_63",      0x30, 0x30 },
-       { "WR_DFTHRSH_75",      0x40, 0x40 },
-       { "WR_DFTHRSH_85",      0x50, 0x50 },
-       { "WR_DFTHRSH_90",      0x60, 0x60 },
-       { "WR_DFTHRSH",         0x70, 0x70 },
-       { "WR_DFTHRSH_MAX",     0x70, 0x70 }
-};
-
-int
-ahc_dff_thrsh_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(DFF_THRSH_parse_table, 18, "DFF_THRSH",
-           0xfb, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SG_CACHE_SHADOW_parse_table[] = {
-       { "LAST_SEG_DONE",      0x01, 0x01 },
-       { "LAST_SEG",           0x02, 0x02 },
-       { "SG_ADDR_MASK",       0xf8, 0xf8 }
-};
-
-int
-ahc_sg_cache_shadow_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SG_CACHE_SHADOW_parse_table, 3, "SG_CACHE_SHADOW",
-           0xfc, regvalue, cur_col, wrap));
-}
-
-static const ahc_reg_parse_entry_t SG_CACHE_PRE_parse_table[] = {
-       { "LAST_SEG_DONE",      0x01, 0x01 },
-       { "LAST_SEG",           0x02, 0x02 },
-       { "SG_ADDR_MASK",       0xf8, 0xf8 }
-};
-
-int
-ahc_sg_cache_pre_print(u_int regvalue, u_int *cur_col, u_int wrap)
-{
-       return (ahc_print_register(SG_CACHE_PRE_parse_table, 3, "SG_CACHE_PRE",
-           0xfc, regvalue, cur_col, wrap));
-}
-
index 81be6a261cc8503a0853699b9e6719139cb9b5f6..e4064433842e62d8c876d478658b5d2597493007 100644 (file)
@@ -147,6 +147,8 @@ void yyerror(const char *string);
 
 %token T_ACCESS_MODE
 
+%token T_DONT_GENERATE_DEBUG_CODE
+
 %token T_MODES
 
 %token T_DEFINE
@@ -357,6 +359,7 @@ reg_attribute:
 |      size
 |      count
 |      access_mode
+|      dont_generate_debug_code
 |      modes
 |      field_defn
 |      enum_defn
@@ -410,6 +413,13 @@ access_mode:
        }
 ;
 
+dont_generate_debug_code:
+       T_DONT_GENERATE_DEBUG_CODE
+       {
+               cur_symbol->dont_generate_debug_code = 1;
+       }
+;
+
 modes:
        T_MODES mode_list
        {
index 2c7f02daf88d21387967be473c660dcc9a2c1a0e..93c8667cd704dd0af10d85a32e2806422ccecfce 100644 (file)
@@ -164,6 +164,7 @@ download            { return T_DOWNLOAD; }
 address                        { return T_ADDRESS; }
 count                  { return T_COUNT; }
 access_mode            { return T_ACCESS_MODE; }
+dont_generate_debug_code { return T_DONT_GENERATE_DEBUG_CODE; }
 modes                  { return T_MODES; }
 RW|RO|WO               {
                                 if (strcmp(yytext, "RW") == 0)
index fcd357872b43d0e360456e732dbdb868f7eb013c..078ed600f47ab14bec403cc44633ef27520ba03d 100644 (file)
@@ -539,6 +539,9 @@ symtable_dump(FILE *ofile, FILE *dfile)
        aic_print_include(dfile, stock_include_file);
        SLIST_FOREACH(curnode, &registers, links) {
 
+               if (curnode->symbol->dont_generate_debug_code)
+                       continue;
+
                switch(curnode->symbol->type) {
                case REGISTER:
                case SCBLOC:
index 05190c1a2fb779b880efbb2cc672b65da2058e4c..2ba73ae7c7774f362bf80391ae999ec8b3fff02b 100644 (file)
@@ -137,7 +137,8 @@ typedef struct symbol {
                struct label_info *linfo;
                struct cond_info  *condinfo;
                struct macro_info *macroinfo;
-       }info;
+       } info;
+       int     dont_generate_debug_code;
 } symbol_t;
 
 typedef struct symbol_ref {
index a43c3ed4df28c3dcb68d1843a6028459d085c0f0..3d50cabca7eeba34bbdda3ae84eb8ce9228df5f3 100644 (file)
@@ -401,6 +401,9 @@ static int check_ownership(struct scsi_device *sdev, struct rdac_dh_data *h)
                }
        }
 
+       if (h->lun_state == RDAC_LUN_UNOWNED)
+               h->state = RDAC_STATE_PASSIVE;
+
        return err;
 }
 
index 098739deb02e1394dc466f51061284a484245cf8..ded854a6dd35bd0d916f630090fc87990cd59182 100644 (file)
@@ -2456,20 +2456,14 @@ static ssize_t ipr_read_trace(struct kobject *kobj,
        struct Scsi_Host *shost = class_to_shost(dev);
        struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata;
        unsigned long lock_flags = 0;
-       int size = IPR_TRACE_SIZE;
-       char *src = (char *)ioa_cfg->trace;
-
-       if (off > size)
-               return 0;
-       if (off + count > size) {
-               size -= off;
-               count = size;
-       }
+       ssize_t ret;
 
        spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
-       memcpy(buf, &src[off], count);
+       ret = memory_read_from_buffer(buf, count, &off, ioa_cfg->trace,
+                               IPR_TRACE_SIZE);
        spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
-       return count;
+
+       return ret;
 }
 
 static struct bin_attribute ipr_trace_attr = {
index e5a9526d20376ab341b54618248dbdd93db3ded3..f5d3b96890dc6d9dd180eb86bb0f2b737a60e7f1 100644 (file)
@@ -529,6 +529,14 @@ static void scsi_single_lun_run(struct scsi_device *current_sdev)
        spin_unlock_irqrestore(shost->host_lock, flags);
 }
 
+static inline int scsi_device_is_busy(struct scsi_device *sdev)
+{
+       if (sdev->device_busy >= sdev->queue_depth || sdev->device_blocked)
+               return 1;
+
+       return 0;
+}
+
 static inline int scsi_target_is_busy(struct scsi_target *starget)
 {
        return ((starget->can_queue > 0 &&
@@ -536,6 +544,15 @@ static inline int scsi_target_is_busy(struct scsi_target *starget)
                 starget->target_blocked);
 }
 
+static inline int scsi_host_is_busy(struct Scsi_Host *shost)
+{
+       if ((shost->can_queue > 0 && shost->host_busy >= shost->can_queue) ||
+           shost->host_blocked || shost->host_self_blocked)
+               return 1;
+
+       return 0;
+}
+
 /*
  * Function:   scsi_run_queue()
  *
@@ -558,11 +575,7 @@ static void scsi_run_queue(struct request_queue *q)
                scsi_single_lun_run(sdev);
 
        spin_lock_irqsave(shost->host_lock, flags);
-       while (!list_empty(&shost->starved_list) &&
-              !shost->host_blocked && !shost->host_self_blocked &&
-               !((shost->can_queue > 0) &&
-                 (shost->host_busy >= shost->can_queue))) {
-
+       while (!list_empty(&shost->starved_list) && !scsi_host_is_busy(shost)) {
                int flagset;
 
                /*
@@ -1348,8 +1361,6 @@ int scsi_prep_fn(struct request_queue *q, struct request *req)
 static inline int scsi_dev_queue_ready(struct request_queue *q,
                                  struct scsi_device *sdev)
 {
-       if (sdev->device_busy >= sdev->queue_depth)
-               return 0;
        if (sdev->device_busy == 0 && sdev->device_blocked) {
                /*
                 * unblock after device_blocked iterates to zero
@@ -1363,7 +1374,7 @@ static inline int scsi_dev_queue_ready(struct request_queue *q,
                        return 0;
                }
        }
-       if (sdev->device_blocked)
+       if (scsi_device_is_busy(sdev))
                return 0;
 
        return 1;
@@ -1440,8 +1451,7 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
                        return 0;
                }
        }
-       if ((shost->can_queue > 0 && shost->host_busy >= shost->can_queue) ||
-           shost->host_blocked || shost->host_self_blocked) {
+       if (scsi_host_is_busy(shost)) {
                if (list_empty(&sdev->starved_entry))
                        list_add_tail(&sdev->starved_entry, &shost->starved_list);
                return 0;
@@ -1454,6 +1464,37 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
        return 1;
 }
 
+/*
+ * Busy state exporting function for request stacking drivers.
+ *
+ * For efficiency, no lock is taken to check the busy state of
+ * shost/starget/sdev, since the returned value is not guaranteed and
+ * may be changed after request stacking drivers call the function,
+ * regardless of taking lock or not.
+ *
+ * When scsi can't dispatch I/Os anymore and needs to kill I/Os
+ * (e.g. !sdev), scsi needs to return 'not busy'.
+ * Otherwise, request stacking drivers may hold requests forever.
+ */
+static int scsi_lld_busy(struct request_queue *q)
+{
+       struct scsi_device *sdev = q->queuedata;
+       struct Scsi_Host *shost;
+       struct scsi_target *starget;
+
+       if (!sdev)
+               return 0;
+
+       shost = sdev->host;
+       starget = scsi_target(sdev);
+
+       if (scsi_host_in_recovery(shost) || scsi_host_is_busy(shost) ||
+           scsi_target_is_busy(starget) || scsi_device_is_busy(sdev))
+               return 1;
+
+       return 0;
+}
+
 /*
  * Kill a request for a dead device
  */
@@ -1757,6 +1798,7 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev)
        blk_queue_prep_rq(q, scsi_prep_fn);
        blk_queue_softirq_done(q, scsi_softirq_done);
        blk_queue_rq_timed_out(q, scsi_times_out);
+       blk_queue_lld_busy(q, scsi_lld_busy);
        return q;
 }
 
@@ -2105,22 +2147,21 @@ scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries,
        do {
                result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr,
                                          timeout, retries);
-       } while ((driver_byte(result) & DRIVER_SENSE) &&
-                sshdr && sshdr->sense_key == UNIT_ATTENTION &&
-                --retries);
+               if (sdev->removable && scsi_sense_valid(sshdr) &&
+                   sshdr->sense_key == UNIT_ATTENTION)
+                       sdev->changed = 1;
+       } while (scsi_sense_valid(sshdr) &&
+                sshdr->sense_key == UNIT_ATTENTION && --retries);
 
        if (!sshdr)
                /* could not allocate sense buffer, so can't process it */
                return result;
 
-       if ((driver_byte(result) & DRIVER_SENSE) && sdev->removable) {
-
-               if ((scsi_sense_valid(sshdr)) &&
-                   ((sshdr->sense_key == UNIT_ATTENTION) ||
-                    (sshdr->sense_key == NOT_READY))) {
-                       sdev->changed = 1;
-                       result = 0;
-               }
+       if (sdev->removable && scsi_sense_valid(sshdr) &&
+           (sshdr->sense_key == UNIT_ATTENTION ||
+            sshdr->sense_key == NOT_READY)) {
+               sdev->changed = 1;
+               result = 0;
        }
        if (!sshdr_external)
                kfree(sshdr);
index b37e133de80557e3be96e70f0960d5ef910c1fb5..723fdecd91bdd4ba027ae4edd20470c6d84bc520 100644 (file)
@@ -205,16 +205,13 @@ static struct notifier_block scsi_netlink_notifier = {
 };
 
 
-/**
+/*
  * GENERIC SCSI transport receive and event handlers
- **/
+ */
 
 /**
- * scsi_generic_msg_handler - receive message handler for GENERIC transport
- *                      messages
- *
+ * scsi_generic_msg_handler - receive message handler for GENERIC transport messages
  * @skb:               socket receive buffer
- *
  **/
 static int
 scsi_generic_msg_handler(struct sk_buff *skb)
index 43f34c73df126b3e93a98ab819921fe50999d612..c9e1242eaf2511067e122e89b331d438823a0a69 100644 (file)
@@ -1049,7 +1049,6 @@ static int sd_done(struct scsi_cmnd *SCpnt)
                good_bytes = sd_completed_bytes(SCpnt);
                break;
        case RECOVERED_ERROR:
-       case NO_SENSE:
                /* Inform the user, but make sure that it's not treated
                 * as a hard error.
                 */
@@ -1058,6 +1057,15 @@ static int sd_done(struct scsi_cmnd *SCpnt)
                memset(SCpnt->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
                good_bytes = scsi_bufflen(SCpnt);
                break;
+       case NO_SENSE:
+               /* This indicates a false check condition, so ignore it.  An
+                * unknown amount of data was transferred so treat it as an
+                * error.
+                */
+               scsi_print_sense("sd", SCpnt);
+               SCpnt->result = 0;
+               memset(SCpnt->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
+               break;
        case ABORTED_COMMAND:
                if (sshdr.asc == 0x10) { /* DIF: Disk detected corruption */
                        scsi_print_result(SCpnt);
@@ -1071,15 +1079,6 @@ static int sd_done(struct scsi_cmnd *SCpnt)
                        scsi_print_sense("sd", SCpnt);
                        good_bytes = sd_completed_bytes(SCpnt);
                }
-               if (!scsi_device_protection(SCpnt->device) &&
-                   SCpnt->device->use_10_for_rw &&
-                   (SCpnt->cmnd[0] == READ_10 ||
-                    SCpnt->cmnd[0] == WRITE_10))
-                       SCpnt->device->use_10_for_rw = 0;
-               if (SCpnt->device->use_10_for_ms &&
-                   (SCpnt->cmnd[0] == MODE_SENSE_10 ||
-                    SCpnt->cmnd[0] == MODE_SELECT_10))
-                       SCpnt->device->use_10_for_ms = 0;
                break;
        default:
                break;
@@ -1432,7 +1431,7 @@ got_data:
 
        {
                char cap_str_2[10], cap_str_10[10];
-               u64 sz = sdkp->capacity << ffz(~sector_size);
+               u64 sz = (u64)sdkp->capacity << ilog2(sector_size);
 
                string_get_size(sz, STRING_UNITS_2, cap_str_2,
                                sizeof(cap_str_2));
index 7514b3a0390e5b19b75689a4493047a7ef3d67be..34a99620e5bd35ca2d7ed411ed42004d59788240 100644 (file)
@@ -213,7 +213,7 @@ static int __devinit esp_sun3x_probe(struct platform_device *dev)
        esp->ops = &sun3x_esp_ops;
 
        res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-       if (!res && !res->start)
+       if (!res || !res->start)
                goto fail_unlink;
 
        esp->regs = ioremap_nocache(res->start, 0x20);
@@ -221,7 +221,7 @@ static int __devinit esp_sun3x_probe(struct platform_device *dev)
                goto fail_unmap_regs;
 
        res = platform_get_resource(dev, IORESOURCE_MEM, 1);
-       if (!res && !res->start)
+       if (!res || !res->start)
                goto fail_unmap_regs;
 
        esp->dma_regs = ioremap_nocache(res->start, 0x10);
index c4eff44c9f2780fdd2eff6a4e650dba8e95252be..e1654f59eb709f997300d2dee136002856009f2d 100644 (file)
@@ -43,8 +43,6 @@ source "drivers/staging/echo/Kconfig"
 
 source "drivers/staging/at76_usb/Kconfig"
 
-source "drivers/staging/pcc-acpi/Kconfig"
-
 source "drivers/staging/poch/Kconfig"
 
 endif # STAGING
index 7cb8701d96d45639ec7d38a2d0cbd97547ca6ef6..71c4d53760b842815514e6b82a9b0c0b244d509b 100644 (file)
@@ -13,5 +13,4 @@ obj-$(CONFIG_W35UND)          += winbond/
 obj-$(CONFIG_PRISM2_USB)       += wlan-ng/
 obj-$(CONFIG_ECHO)             += echo/
 obj-$(CONFIG_USB_ATMEL)                += at76_usb/
-obj-$(CONFIG_PCC_ACPI)         += pcc-acpi/
 obj-$(CONFIG_POCH)             += poch/
diff --git a/drivers/staging/pcc-acpi/Kconfig b/drivers/staging/pcc-acpi/Kconfig
deleted file mode 100644 (file)
index 6720d40..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-config PCC_ACPI
-       tristate "Panasonic ACPI Hotkey support"
-       depends on ACPI
-       default n
-       ---help---
-         This driver provides support for Panasonic hotkeys through the
-         ACPI interface.  This works for the Panasonic R1 (N variant),
-         R2, R3, T2, W2, and Y2 laptops.
-
-         To compile this driver as a module, choose M here. The module
-         will be called pcc-acpi.
diff --git a/drivers/staging/pcc-acpi/Makefile b/drivers/staging/pcc-acpi/Makefile
deleted file mode 100644 (file)
index f93b29e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-obj-$(CONFIG_PCC_ACPI)         += pcc-acpi.o
diff --git a/drivers/staging/pcc-acpi/TODO b/drivers/staging/pcc-acpi/TODO
deleted file mode 100644 (file)
index fab2409..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TODO:
-       - Lindent fixes
-       - checkpatch.pl fixes
-       - verify that the acpi interface is correct
-       - remove /proc dependancy if needed (not sure yet.)
-
-Please send any patches for this driver to Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/pcc-acpi/pcc-acpi.c b/drivers/staging/pcc-acpi/pcc-acpi.c
deleted file mode 100644 (file)
index 3b34a3e..0000000
+++ /dev/null
@@ -1,1111 +0,0 @@
-/*
- *  Panasonic HotKey and lcd brightness control Extra driver
- *  (C) 2004 Hiroshi Miura <miura@da-cha.org>
- *  (C) 2004 NTT DATA Intellilink Co. http://www.intellilink.co.jp/
- *  (C) YOKOTA Hiroshi <yokota (at) netlab. is. tsukuba. ac. jp>
- *  (C) 2004 David Bronaugh <dbronaugh>
- *
- *  derived from toshiba_acpi.c, Copyright (C) 2002-2004 John Belmonte
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2 as
- *  publicshed by the Free Software Foundation.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- *---------------------------------------------------------------------------
- *
- * ChangeLog:
- *
- *     Nov.04, 2006    Hiroshi Miura <miura@da-cha.org>
- *             -v0.9   remove warning about section reference.
- *                     remove acpi_os_free
- *                     add /proc/acpi/pcc/brightness interface to
- *                     allow HAL to access.
- *                     merge dbronaugh's enhancement
- *                     Aug.17, 2004 David Bronaugh (dbronaugh)
- *                             - Added screen brightness setting interface
- *                               Thanks to the FreeBSD crew
- *                               (acpi_panasonic.c authors)
- *                               for the ideas I needed to accomplish it
- *
- *     May.29, 2006    Hiroshi Miura <miura@da-cha.org>
- *             -v0.8.4 follow to change keyinput structure
- *                     thanks Fabian Yamaguchi <fabs@cs.tu-berlin.de>,
- *                     Jacob Bower <jacob.bower@ic.ac.uk> and
- *                     Hiroshi Yokota for providing solutions.
- *
- *     Oct.02, 2004    Hiroshi Miura <miura@da-cha.org>
- *             -v0.8.2 merge code of YOKOTA Hiroshi
- *                     <yokota@netlab.is.tsukuba.ac.jp>.
- *                     Add sticky key mode interface.
- *                     Refactoring acpi_pcc_generete_keyinput().
- *
- *     Sep.15, 2004    Hiroshi Miura <miura@da-cha.org>
- *             -v0.8   Generate key input event on input subsystem.
- *                     This is based on yet another driver
- *                     written by Ryuta Nakanishi.
- *
- *     Sep.10, 2004    Hiroshi Miura <miura@da-cha.org>
- *             -v0.7   Change proc interface functions using seq_file
- *                     facility as same as other ACPI drivers.
- *
- *     Aug.28, 2004    Hiroshi Miura <miura@da-cha.org>
- *             -v0.6.4 Fix a silly error with status checking
- *
- *     Aug.25, 2004    Hiroshi Miura <miura@da-cha.org>
- *             -v0.6.3 replace read_acpi_int by standard
- *                     function acpi_evaluate_integer
- *                     some clean up and make smart copyright notice.
- *                     fix return value of pcc_acpi_get_key()
- *                     fix checking return value of acpi_bus_register_driver()
- *
- *      Aug.22, 2004    David Bronaugh <dbronaugh@linuxboxen.org>
- *              -v0.6.2 Add check on ACPI data (num_sifr)
- *                      Coding style cleanups, better error messages/handling
- *                     Fixed an off-by-one error in memory allocation
- *
- *      Aug.21, 2004    David Bronaugh <dbronaugh@linuxboxen.org>
- *              -v0.6.1 Fix a silly error with status checking
- *
- *      Aug.20, 2004    David Bronaugh <dbronaugh@linuxboxen.org>
- *              - v0.6  Correct brightness controls to reflect reality
- *                      based on information gleaned by Hiroshi Miura
- *                      and discussions with Hiroshi Miura
- *
- *     Aug.10, 2004    Hiroshi Miura <miura@da-cha.org>
- *             - v0.5  support LCD brightness control
- *                     based on the disclosed information by MEI.
- *
- *     Jul.25, 2004    Hiroshi Miura <miura@da-cha.org>
- *             - v0.4  first post version
- *                     add function to retrive SIFR
- *
- *     Jul.24, 2004    Hiroshi Miura <miura@da-cha.org>
- *             - v0.3  get proper status of hotkey
- *
- *      Jul.22, 2004   Hiroshi Miura <miura@da-cha.org>
- *             - v0.2  add HotKey handler
- *
- *      Jul.17, 2004   Hiroshi Miura <miura@da-cha.org>
- *             - v0.1  start from toshiba_acpi driver written by John Belmonte
- *
- */
-
-#define ACPI_PCC_VERSION       "0.9+hy"
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/ctype.h>
-#include <linux/init.h>
-#include <linux/input.h>
-#include <linux/proc_fs.h>
-#include <linux/seq_file.h>
-#include <linux/slab.h>
-#include <linux/uaccess.h>
-#include <acpi/acpi_bus.h>
-#include <acpi/acpi_drivers.h>
-
-
-/*************************************************************************
- * "seq" file template definition.
- */
-/* "seq" initializer */
-#define SEQ_OPEN_FS(_open_func_name_, _show_func_name_) \
-static int _open_func_name_(struct inode *inode, struct file *file) \
-{                                                                    \
-       return single_open(file, _show_func_name_, PDE(inode)->data);  \
-}
-
-/*-------------------------------------------------------------------------
- * "seq" fops template for read-only files.
- */
-#define SEQ_FILEOPS_R(_open_func_name_) \
-{ \
-       .open    = _open_func_name_,              \
-       .read    = seq_read,                      \
-       .llseek  = seq_lseek,                     \
-       .release = single_release,                \
-}
-
-/*------------------------------------------------------------------------
- * "seq" fops template for read-write files.
- */
-#define SEQ_FILEOPS_RW(_open_func_name_, _write_func_name_) \
-{ \
-       .open    = _open_func_name_ ,             \
-       .read    = seq_read,                      \
-       .write   = _write_func_name_,             \
-       .llseek  = seq_lseek,                     \
-       .release = single_release,                \
-}
-
-/*
- * "seq" file template definition ended.
- ***************************************************************************
- */
-#ifndef ACPI_HOTKEY_COMPONENT
-#define ACPI_HOTKEY_COMPONENT  0x10000000
-#endif
-
-#define _COMPONENT             ACPI_HOTKEY_COMPONENT
-ACPI_MODULE_NAME("pcc_acpi");
-
-MODULE_AUTHOR("Hiroshi Miura, Hiroshi Yokota");
-MODULE_DESCRIPTION("ACPI HotKey driver for Panasonic Let's Note laptops");
-MODULE_LICENSE("GPL");
-
-#define LOGPREFIX "pcc_acpi: "
-
-/****************************************************
- * Define ACPI PATHs
- ****************************************************/
-/* Lets note hotkeys */
-#define METHOD_HKEY_QUERY      "HINF"
-#define METHOD_HKEY_SQTY       "SQTY"
-#define METHOD_HKEY_SINF       "SINF"
-#define METHOD_HKEY_SSET       "SSET"
-#define HKEY_NOTIFY             0x80
-
-/* for brightness control */
-#define LCD_MAX_BRIGHTNESS 255
-/* This may be magical -- beware */
-#define LCD_BRIGHTNESS_INCREMENT 17
-/* Registers of SINF */
-#define SINF_LCD_BRIGHTNESS 4
-
-/*******************************************************************
- *
- * definitions for /proc/ interface
- *
- *******************************************************************/
-#define ACPI_PCC_DRIVER_NAME   "pcc_acpi"
-#define ACPI_PCC_DEVICE_NAME   "PCCExtra"
-#define ACPI_PCC_CLASS         "pcc"
-#define PROC_PCC               ACPI_PCC_CLASS
-
-#define ACPI_PCC_INPUT_PHYS    "panasonic/hkey0"
-
-/* This is transitional definition */
-#ifndef KEY_BATT
-# define KEY_BATT 227
-#endif
-
-#define PROC_STR_MAX_LEN  8
-
-#define BUS_PCC_HOTKEY BUS_I8042 /*0x1a*/ /* FIXME: BUS_I8042? */
-
-/* Fn+F4/F5 confricts with Shift+F1/F2  */
-/* This hack avoids key number confrict */
-#define PCC_KEYINPUT_MODE (0)
-
-/* LCD_TYPEs: 0 = Normal, 1 = Semi-transparent
-   ENV_STATEs: Normal temp=0x01, High temp=0x81, N/A=0x00
-*/
-enum SINF_BITS { SINF_NUM_BATTERIES = 0,
-                SINF_LCD_TYPE,
-                SINF_AC_MAX_BRIGHT,
-                SINF_AC_MIN_BRIGHT,
-                SINF_AC_CUR_BRIGHT,
-                            /* 4 = R1 only handle SINF_AC_CUR_BRIGHT
-                             * as SINF_CUR_BRIGHT and don't know AC state */
-                SINF_DC_MAX_BRIGHT,
-                SINF_DC_MIN_BRIGHT,
-                SINF_DC_CUR_BRIGHT,
-                SINF_MUTE,
-                SINF_RESERVED,
-                SINF_ENV_STATE, /* 10 */
-                SINF_STICKY_KEY = 0x80,
-};
-
-static struct acpi_device_id pcc_device_ids[] = {
-       {"MAT0012", 0},
-       {"MAT0013", 0},
-       {"MAT0018", 0},
-       {"MAT0019", 0},
-       {"",        0},
-};
-MODULE_DEVICE_TABLE(acpi, pcc_device_ids);
-
-
-static int __devinit acpi_pcc_hotkey_add(struct acpi_device *device);
-static int __devexit acpi_pcc_hotkey_remove(struct acpi_device *device,
-                                           int type);
-static int acpi_pcc_hotkey_resume(struct acpi_device *device);
-
-
-static struct acpi_driver acpi_pcc_driver = {
-       .name =         ACPI_PCC_DRIVER_NAME,
-       .class =        ACPI_PCC_CLASS,
-       .ids =          pcc_device_ids,
-       .ops =          {
-                               .add = acpi_pcc_hotkey_add,
-                               .remove = __devexit_p(acpi_pcc_hotkey_remove),
-#ifdef CONFIG_PM
-                               /*.suspend = acpi_pcc_hotkey_suspend,*/
-                               .resume = acpi_pcc_hotkey_resume,
-#endif
-                       },
-};
-
-struct acpi_hotkey {
-       acpi_handle             handle;
-       struct acpi_device      *device;
-       struct proc_dir_entry   *proc_dir_entry;
-       unsigned long           num_sifr;
-       unsigned long           status;
-       struct input_dev        *input_dev;
-       int                     sticky_mode;
-};
-
-struct pcc_keyinput {
-       struct acpi_hotkey      *hotkey;
-       int key_mode;
-};
-
-/* *************************************************************************
-   Hotkey driver core
-   ************************************************************************* */
-/* -------------------------------------------------------------------------
-   method access functions
-   ------------------------------------------------------------------------- */
-static int acpi_pcc_write_sset(struct acpi_hotkey *hotkey, int func, int val)
-{
-       union acpi_object in_objs[] = {
-               { .integer.type  = ACPI_TYPE_INTEGER,
-                 .integer.value = func, },
-               { .integer.type  = ACPI_TYPE_INTEGER,
-                 .integer.value = val, },
-       };
-       struct acpi_object_list params = {
-               .count   = ARRAY_SIZE(in_objs),
-               .pointer = in_objs,
-       };
-       acpi_status status;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_write_sset");
-
-       status = acpi_evaluate_object(hotkey->handle, METHOD_HKEY_SSET,
-                                                               &params, NULL);
-
-       return_VALUE(status == AE_OK ? AE_OK : AE_ERROR);
-}
-
-static inline int acpi_pcc_get_sqty(struct acpi_device *device)
-{
-       unsigned long s;
-       acpi_status status;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_get_sqty");
-
-       status = acpi_evaluate_integer(device->handle, METHOD_HKEY_SQTY,
-                                                               NULL, &s);
-       if (ACPI_SUCCESS(status)) {
-               return_VALUE(s);
-       } else {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "evaluation error HKEY.SQTY\n"));
-               return_VALUE(-EINVAL);
-       }
-}
-
-static int acpi_pcc_retrieve_biosdata(struct acpi_hotkey *hotkey, u32 *sinf)
-{
-       acpi_status status;
-       struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
-       union acpi_object *hkey = NULL;
-       int i;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_retrieve_biosdata");
-
-       status = acpi_evaluate_object(hotkey->handle, METHOD_HKEY_SINF, 0,
-                                     &buffer);
-       if (ACPI_FAILURE(status)) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "evaluation error HKEY.SINF\n"));
-               status = AE_ERROR;
-               return_VALUE(status);
-       }
-
-       hkey = buffer.pointer;
-       if (!hkey || (hkey->type != ACPI_TYPE_PACKAGE)) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid HKEY.SINF\n"));
-               goto free_buffer;
-       }
-
-       if (hotkey->num_sifr < hkey->package.count) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "SQTY reports bad SINF length\n"));
-               status = AE_ERROR;
-               goto free_buffer;
-       }
-
-       for (i = 0; i < hkey->package.count; i++) {
-               union acpi_object *element = &(hkey->package.elements[i]);
-               if (likely(element->type == ACPI_TYPE_INTEGER)) {
-                       sinf[i] = element->integer.value;
-               } else {
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                        "Invalid HKEY.SINF data\n"));
-                       status = AE_ERROR;
-                       break;
-               }
-       }
-       sinf[hkey->package.count] = -1;
-
- free_buffer:
-       kfree(buffer.pointer);
-       return_VALUE(status == AE_OK ? AE_OK : AE_ERROR);
-}
-
-static int acpi_pcc_read_sinf_field(struct seq_file *seq, int field)
-{
-       struct acpi_hotkey *hotkey = (struct acpi_hotkey *) seq->private;
-       u32 sinf[hotkey->num_sifr + 1];
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_read_sinf_field");
-
-       if (ACPI_SUCCESS(acpi_pcc_retrieve_biosdata(hotkey, sinf)))
-               seq_printf(seq, "%u\n", sinf[field]);
-       else
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't retrieve BIOS data\n"));
-
-       return_VALUE(AE_OK);
-}
-
-/* -------------------------------------------------------------------------
-   user interface functions
-   ------------------------------------------------------------------------- */
-/* read methods */
-/* Sinf read methods */
-#define PCC_SINF_READ_F(_name_, FUNC) \
-static int _name_(struct seq_file *seq, void *offset) \
-{ \
-       return_VALUE(ACPI_SUCCESS(acpi_pcc_read_sinf_field(seq, \
-                                                         (FUNC))) \
-                                                         ? 0 : -EINVAL); \
-}
-
-PCC_SINF_READ_F(acpi_pcc_numbatteries_show,     SINF_NUM_BATTERIES);
-PCC_SINF_READ_F(acpi_pcc_lcdtype_show,          SINF_LCD_TYPE);
-PCC_SINF_READ_F(acpi_pcc_ac_brightness_max_show, SINF_AC_MAX_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_ac_brightness_min_show, SINF_AC_MIN_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_ac_brightness_show,    SINF_AC_CUR_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_dc_brightness_max_show, SINF_DC_MAX_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_dc_brightness_min_show, SINF_DC_MIN_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_dc_brightness_show,    SINF_DC_CUR_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_brightness_show,       SINF_AC_CUR_BRIGHT);
-PCC_SINF_READ_F(acpi_pcc_mute_show,             SINF_MUTE);
-
-static int acpi_pcc_sticky_key_show(struct seq_file *seq, void *offset)
-{
-       struct acpi_hotkey *hotkey = seq->private;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_sticky_key_show");
-
-       if (!hotkey || !hotkey->device)
-               return_VALUE(-EINVAL);
-
-       seq_printf(seq, "%d\n", hotkey->sticky_mode);
-
-       return_VALUE(0);
-}
-
-static int acpi_pcc_keyinput_show(struct seq_file *seq, void *offset)
-{
-       struct acpi_hotkey      *hotkey = seq->private;
-       struct input_dev        *hotk_input_dev = hotkey->input_dev;
-       struct pcc_keyinput     *keyinput = input_get_drvdata(hotk_input_dev);
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_keyinput_show");
-
-       seq_printf(seq, "%d\n", keyinput->key_mode);
-
-       return_VALUE(0);
-}
-
-static int acpi_pcc_version_show(struct seq_file *seq, void *offset)
-{
-       struct acpi_hotkey *hotkey = seq->private;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_version_show");
-
-       if (!hotkey || !hotkey->device)
-               return_VALUE(-EINVAL);
-
-       seq_printf(seq, "%s version %s\n", ACPI_PCC_DRIVER_NAME,
-                  ACPI_PCC_VERSION);
-       seq_printf(seq, "%li functions\n", hotkey->num_sifr);
-
-       return_VALUE(0);
-}
-
-/* write methods */
-static ssize_t acpi_pcc_write_single_flag(struct file *file,
-                                         const char __user *buffer,
-                                         size_t count,
-                                         int sinf_func)
-{
-       struct seq_file         *seq = file->private_data;
-       struct acpi_hotkey      *hotkey = seq->private;
-       char                    write_string[PROC_STR_MAX_LEN];
-       u32                     val;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_write_single_flag");
-
-       if (!hotkey || (count > sizeof(write_string) - 1))
-               return_VALUE(-EINVAL);
-
-       if (copy_from_user(write_string, buffer, count))
-               return_VALUE(-EFAULT);
-
-       write_string[count] = '\0';
-
-       if ((sscanf(write_string, "%3i", &val) == 1) &&
-           (val == 0 || val == 1))
-               acpi_pcc_write_sset(hotkey, sinf_func, val);
-
-       return_VALUE(count);
-}
-
-static unsigned long acpi_pcc_write_brightness(struct file *file,
-                                              const char __user *buffer,
-                                              size_t count,
-                                              int min_index, int max_index,
-                                              int cur_index)
-{
-       struct seq_file         *seq = (struct seq_file *)file->private_data;
-       struct acpi_hotkey      *hotkey = (struct acpi_hotkey *)seq->private;
-       char                    write_string[PROC_STR_MAX_LEN];
-       u32 bright;
-       u32 sinf[hotkey->num_sifr + 1];
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_write_brightness");
-
-       if (!hotkey || (count > sizeof(write_string) - 1))
-               return_VALUE(-EINVAL);
-
-       if (copy_from_user(write_string, buffer, count))
-               return_VALUE(-EFAULT);
-
-       write_string[count] = '\0';
-
-       if (ACPI_FAILURE(acpi_pcc_retrieve_biosdata(hotkey, sinf))) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't retrieve BIOS data\n"));
-               goto end;
-       }
-
-       if ((sscanf(write_string, "%4i", &bright) == 1) &&
-           (bright >= sinf[min_index]) &&
-           (bright <= sinf[max_index]))
-               acpi_pcc_write_sset(hotkey, cur_index, bright);
-
-end:
-       return_VALUE(count);
-}
-
-static ssize_t acpi_pcc_write_ac_brightness(struct file *file,
-                                           const char __user *buffer,
-                                           size_t count, loff_t *ppos)
-{
-       return_VALUE(acpi_pcc_write_brightness(file, buffer, count,
-                                              SINF_AC_MIN_BRIGHT,
-                                              SINF_AC_MAX_BRIGHT,
-                                              SINF_AC_CUR_BRIGHT));
-}
-
-static ssize_t acpi_pcc_write_dc_brightness(struct file *file,
-                                           const char __user *buffer,
-                                           size_t count, loff_t *ppos)
-{
-       return_VALUE(acpi_pcc_write_brightness(file, buffer, count,
-                                              SINF_DC_MIN_BRIGHT,
-                                              SINF_DC_MAX_BRIGHT,
-                                              SINF_DC_CUR_BRIGHT));
-}
-
-static ssize_t acpi_pcc_write_no_brightness(struct file *file,
-                                           const char __user *buffer,
-                                           size_t count, loff_t *ppos)
-{
-       return acpi_pcc_write_brightness(file, buffer, count,
-                                        SINF_AC_MIN_BRIGHT,
-                                        SINF_AC_MAX_BRIGHT,
-                                        SINF_AC_CUR_BRIGHT);
-}
-
-static ssize_t acpi_pcc_write_mute(struct file *file,
-                                  const char __user *buffer,
-                                  size_t count, loff_t *ppos)
-{
-       return_VALUE(acpi_pcc_write_single_flag(file, buffer, count,
-                                               SINF_MUTE));
-}
-
-static ssize_t acpi_pcc_write_sticky_key(struct file *file,
-                                        const char __user *buffer,
-                                        size_t count, loff_t *ppos)
-{
-       struct seq_file     *seq = (struct seq_file *)file->private_data;
-       struct acpi_hotkey  *hotkey = (struct acpi_hotkey *)seq->private;
-       char                 write_string[PROC_STR_MAX_LEN];
-       int                  mode;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_write_sticky_key");
-
-       if (!hotkey || (count > sizeof(write_string) - 1))
-               return_VALUE(-EINVAL);
-
-       if (copy_from_user(write_string, buffer, count))
-               return_VALUE(-EFAULT);
-
-       write_string[count] = '\0';
-
-       if ((sscanf(write_string, "%3i", &mode) == 1) &&
-           (mode == 0 || mode == 1)) {
-               acpi_pcc_write_sset(hotkey, SINF_STICKY_KEY, mode);
-               hotkey->sticky_mode = mode;
-       }
-
-       return_VALUE(count);
-}
-
-static ssize_t acpi_pcc_write_keyinput(struct file *file,
-                                      const char __user *buffer,
-                                      size_t count, loff_t *ppos)
-{
-       struct seq_file         *seq = (struct seq_file *)file->private_data;
-       struct acpi_hotkey      *hotkey = (struct acpi_hotkey *)seq->private;
-       struct pcc_keyinput     *keyinput;
-       char                    write_string[PROC_STR_MAX_LEN];
-       int                     key_mode;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_write_keyinput");
-
-       if (!hotkey || (count > (sizeof(write_string) - 1)))
-               return_VALUE(-EINVAL);
-
-       if (copy_from_user(write_string, buffer, count))
-               return_VALUE(-EFAULT);
-
-       write_string[count] = '\0';
-
-       if ((sscanf(write_string, "%4i", &key_mode) == 1) &&
-           (key_mode == 0 || key_mode == 1)) {
-               keyinput = input_get_drvdata(hotkey->input_dev);
-               keyinput->key_mode = key_mode;
-       }
-
-       return_VALUE(count);
-}
-
-/* -------------------------------------------------------------------------
-   hotkey driver
-   ------------------------------------------------------------------------- */
-static void acpi_pcc_generete_keyinput(struct acpi_hotkey *hotkey)
-{
-       struct input_dev    *hotk_input_dev = hotkey->input_dev;
-       struct pcc_keyinput *keyinput = input_get_drvdata(hotk_input_dev);
-       int hinf = hotkey->status;
-       int key_code, hkey_num;
-       const int key_map[] = {
-               /*  0 */ -1,
-               /*  1 */ KEY_BRIGHTNESSDOWN,
-               /*  2 */ KEY_BRIGHTNESSUP,
-               /*  3 */ -1, /* vga/lcd switch event is not occur on
-                               hotkey driver. */
-               /*  4 */ KEY_MUTE,
-               /*  5 */ KEY_VOLUMEDOWN,
-               /*  6 */ KEY_VOLUMEUP,
-               /*  7 */ KEY_SLEEP,
-               /*  8 */ -1, /* Change CPU boost: do nothing */
-               /*  9 */ KEY_BATT,
-               /* 10 */ KEY_SUSPEND,
-       };
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_generete_keyinput");
-
-       if (keyinput->key_mode == 0)
-               return_VOID;
-
-       hkey_num = hinf & 0xf;
-
-       if ((0 > hkey_num) ||
-           (hkey_num > ARRAY_SIZE(key_map))) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "hotkey number out of range: %d\n",
-                                 hkey_num));
-               return_VOID;
-       }
-
-       key_code = key_map[hkey_num];
-
-       if (key_code != -1) {
-               int pushed = (hinf & 0x80) ? TRUE : FALSE;
-
-               input_report_key(hotk_input_dev, key_code, pushed);
-               input_sync(hotk_input_dev);
-       }
-}
-
-static int acpi_pcc_hotkey_get_key(struct acpi_hotkey *hotkey)
-{
-       unsigned long result;
-       acpi_status status = AE_OK;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_get_key");
-
-       status = acpi_evaluate_integer(hotkey->handle, METHOD_HKEY_QUERY,
-                                                               NULL, &result);
-       if (likely(ACPI_SUCCESS(status)))
-               hotkey->status = result;
-       else
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                       "error getting hotkey status\n"));
-
-       return_VALUE(status == AE_OK);
-}
-
-void acpi_pcc_hotkey_notify(acpi_handle handle, u32 event, void *data)
-{
-       struct acpi_hotkey *hotkey = (struct acpi_hotkey *) data;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_notify");
-
-       switch (event) {
-       case HKEY_NOTIFY:
-               if (acpi_pcc_hotkey_get_key(hotkey)) {
-                       /* generate event like '"pcc HKEY 00000080 00000084"'
-                        * when Fn+F4 pressed */
-                       acpi_bus_generate_proc_event(hotkey->device, event,
-                                                               hotkey->status);
-               }
-               acpi_pcc_generete_keyinput(hotkey);
-               break;
-       default:
-               /* nothing to do */
-               break;
-       }
-       return_VOID;
-}
-
-/* *************************************************************************
-   FS Interface (/proc)
-   ************************************************************************* */
-/* oepn proc file fs*/
-SEQ_OPEN_FS(acpi_pcc_dc_brightness_open_fs, acpi_pcc_dc_brightness_show);
-SEQ_OPEN_FS(acpi_pcc_numbatteries_open_fs, acpi_pcc_numbatteries_show);
-SEQ_OPEN_FS(acpi_pcc_lcdtype_open_fs, acpi_pcc_lcdtype_show);
-SEQ_OPEN_FS(acpi_pcc_ac_brightness_max_open_fs,
-           acpi_pcc_ac_brightness_max_show);
-SEQ_OPEN_FS(acpi_pcc_ac_brightness_min_open_fs,
-           acpi_pcc_ac_brightness_min_show);
-SEQ_OPEN_FS(acpi_pcc_ac_brightness_open_fs, acpi_pcc_ac_brightness_show);
-SEQ_OPEN_FS(acpi_pcc_dc_brightness_max_open_fs,
-           acpi_pcc_dc_brightness_max_show);
-SEQ_OPEN_FS(acpi_pcc_dc_brightness_min_open_fs,
-           acpi_pcc_dc_brightness_min_show);
-SEQ_OPEN_FS(acpi_pcc_brightness_open_fs, acpi_pcc_brightness_show);
-SEQ_OPEN_FS(acpi_pcc_mute_open_fs, acpi_pcc_mute_show);
-SEQ_OPEN_FS(acpi_pcc_version_open_fs, acpi_pcc_version_show);
-SEQ_OPEN_FS(acpi_pcc_keyinput_open_fs, acpi_pcc_keyinput_show);
-SEQ_OPEN_FS(acpi_pcc_sticky_key_open_fs, acpi_pcc_sticky_key_show);
-
-static struct file_operations acpi_pcc_numbatteries_fops =
-       SEQ_FILEOPS_R(acpi_pcc_numbatteries_open_fs);
-static struct file_operations acpi_pcc_lcdtype_fops =
-       SEQ_FILEOPS_R(acpi_pcc_lcdtype_open_fs);
-static struct file_operations acpi_pcc_mute_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_mute_open_fs, acpi_pcc_write_mute);
-static struct file_operations acpi_pcc_ac_brightness_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_ac_brightness_open_fs,
-                      acpi_pcc_write_ac_brightness);
-static struct file_operations acpi_pcc_ac_brightness_max_fops =
-       SEQ_FILEOPS_R(acpi_pcc_ac_brightness_max_open_fs);
-static struct file_operations acpi_pcc_ac_brightness_min_fops =
-       SEQ_FILEOPS_R(acpi_pcc_ac_brightness_min_open_fs);
-static struct file_operations acpi_pcc_dc_brightness_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_dc_brightness_open_fs,
-                      acpi_pcc_write_dc_brightness);
-static struct file_operations acpi_pcc_dc_brightness_max_fops =
-       SEQ_FILEOPS_R(acpi_pcc_dc_brightness_max_open_fs);
-static struct file_operations acpi_pcc_dc_brightness_min_fops =
-       SEQ_FILEOPS_R(acpi_pcc_dc_brightness_min_open_fs);
-static struct file_operations acpi_pcc_brightness_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_brightness_open_fs,
-                      acpi_pcc_write_no_brightness);
-static struct file_operations acpi_pcc_sticky_key_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_sticky_key_open_fs, acpi_pcc_write_sticky_key);
-static struct file_operations acpi_pcc_keyinput_fops =
-       SEQ_FILEOPS_RW(acpi_pcc_keyinput_open_fs, acpi_pcc_write_keyinput);
-static struct file_operations acpi_pcc_version_fops =
-       SEQ_FILEOPS_R(acpi_pcc_version_open_fs);
-
-struct proc_item {
-       const char *name;
-       struct file_operations *fops;
-       mode_t flag;
-};
-
-/* Note: These functions map *exactly* to the SINF/SSET functions */
-struct proc_item acpi_pcc_proc_items_sifr[] = {
-       { "num_batteries", &acpi_pcc_numbatteries_fops, S_IRUGO },
-       { "lcd_type", &acpi_pcc_lcdtype_fops, S_IRUGO },
-       { "ac_brightness_max", &acpi_pcc_ac_brightness_max_fops, S_IRUGO },
-       { "ac_brightness_min", &acpi_pcc_ac_brightness_min_fops, S_IRUGO },
-       { "ac_brightness", &acpi_pcc_ac_brightness_fops,
-               S_IFREG | S_IRUGO | S_IWUSR },
-       { "dc_brightness_max", &acpi_pcc_dc_brightness_max_fops, S_IRUGO },
-       { "dc_brightness_min", &acpi_pcc_dc_brightness_min_fops, S_IRUGO },
-       { "dc_brightness", &acpi_pcc_dc_brightness_fops,
-               S_IFREG | S_IRUGO | S_IWUSR },
-       { "brightness", &acpi_pcc_brightness_fops, S_IFREG | S_IRUGO | S_IWUSR},
-       { "mute", &acpi_pcc_mute_fops, S_IFREG | S_IRUGO | S_IWUSR },
-       { NULL, NULL, 0 },
-};
-
-struct proc_item acpi_pcc_proc_items[] = {
-       { "sticky_key", &acpi_pcc_sticky_key_fops, S_IFREG | S_IRUGO | S_IWUSR},
-       { "keyinput", &acpi_pcc_keyinput_fops, S_IFREG | S_IRUGO | S_IWUSR },
-       { "version", &acpi_pcc_version_fops, S_IRUGO },
-       { NULL, NULL, 0 },
-};
-
-static int __devinit acpi_pcc_add_device(struct acpi_device *device,
-                                        struct proc_item *proc_items,
-                                        int num)
-{
-       struct acpi_hotkey *hotkey = acpi_driver_data(device);
-       struct proc_dir_entry *proc;
-       struct proc_item *item;
-       int i;
-
-       for (item = proc_items, i = 0; item->name && i < num; ++item, ++i) {
-               proc = create_proc_entry(item->name, item->flag,
-                                        hotkey->proc_dir_entry);
-               if (likely(proc)) {
-                       proc->proc_fops = item->fops;
-                       proc->data = hotkey;
-                       proc->owner = THIS_MODULE;
-               } else {
-                       while (i-- > 0) {
-                               item--;
-                               remove_proc_entry(item->name,
-                                       hotkey->proc_dir_entry);
-                       }
-                       return_VALUE(-ENODEV);
-               }
-       }
-       return_VALUE(0);
-}
-
-static int __devinit acpi_pcc_proc_init(struct acpi_device *device)
-{
-       struct proc_dir_entry *acpi_pcc_dir;
-       struct acpi_hotkey    *hotkey = acpi_driver_data(device);
-       acpi_status status;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_proc_init");
-
-       acpi_pcc_dir = proc_mkdir(PROC_PCC, acpi_root_dir);
-
-       if (unlikely(!acpi_pcc_dir)) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't create dir in /proc\n"));
-               return_VALUE(-ENODEV);
-       }
-
-       acpi_pcc_dir->owner = THIS_MODULE;
-       hotkey->proc_dir_entry = acpi_pcc_dir;
-
-       status =  acpi_pcc_add_device(device, acpi_pcc_proc_items_sifr,
-                                     hotkey->num_sifr);
-       status |= acpi_pcc_add_device(device, acpi_pcc_proc_items,
-                                     ARRAY_SIZE(acpi_pcc_proc_items));
-       if (unlikely(status)) {
-               remove_proc_entry(PROC_PCC, acpi_root_dir);
-               hotkey->proc_dir_entry = NULL;
-               return_VALUE(-ENODEV);
-       }
-
-       return_VALUE(status);
-}
-
-static void __devexit acpi_pcc_remove_device(struct acpi_device *device,
-                                            struct proc_item *proc_items,
-                                            int num)
-{
-       struct acpi_hotkey *hotkey = acpi_driver_data(device);
-       struct proc_item *item;
-       int i;
-
-       for (item = proc_items, i = 0;
-            item->name != NULL && i < num;
-            ++item, ++i) {
-               remove_proc_entry(item->name, hotkey->proc_dir_entry);
-       }
-
-       return_VOID;
-}
-
-/* *************************************************************************
-   Power Management
-   ************************************************************************* */
-#ifdef CONFIG_PM
-static int acpi_pcc_hotkey_resume(struct acpi_device *device)
-{
-       struct acpi_hotkey *hotkey = acpi_driver_data(device);
-       acpi_status         status = AE_OK;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_resume");
-
-       if (device == NULL || hotkey == NULL)
-               return_VALUE(-EINVAL);
-
-       if (hotkey->num_sifr != 0) {
-               ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Sticky mode restore: %d\n",
-                                hotkey->sticky_mode));
-
-               status = acpi_pcc_write_sset(hotkey, SINF_STICKY_KEY,
-                                            hotkey->sticky_mode);
-       }
-       if (status != AE_OK)
-               return_VALUE(-EINVAL);
-
-       return_VALUE(0);
-}
-#endif
-
-/* *************************************************************************
-   Module init/remove
-   ************************************************************************* */
-/* -------------------------------------------------------------------------
-   input
-   ------------------------------------------------------------------------- */
-static int __devinit acpi_pcc_init_input(struct acpi_hotkey *hotkey)
-{
-       struct input_dev    *hotk_input_dev;
-       struct pcc_keyinput *pcc_keyinput;
-       int error;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_init_input");
-
-       hotk_input_dev = input_allocate_device();
-       if (hotk_input_dev == NULL) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't allocate input device for hotkey"));
-               goto err_input;
-       }
-
-       pcc_keyinput = kcalloc(1, sizeof(struct pcc_keyinput), GFP_KERNEL);
-
-       if (pcc_keyinput == NULL) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't allocate mem for private data"));
-               goto err_pcc;
-       }
-
-       hotk_input_dev->evbit[0] = BIT(EV_KEY);
-
-       set_bit(KEY_BRIGHTNESSDOWN, hotk_input_dev->keybit);
-       set_bit(KEY_BRIGHTNESSUP,   hotk_input_dev->keybit);
-       set_bit(KEY_MUTE,           hotk_input_dev->keybit);
-       set_bit(KEY_VOLUMEDOWN,     hotk_input_dev->keybit);
-       set_bit(KEY_VOLUMEUP,       hotk_input_dev->keybit);
-       set_bit(KEY_SLEEP,          hotk_input_dev->keybit);
-       set_bit(KEY_BATT,           hotk_input_dev->keybit);
-       set_bit(KEY_SUSPEND,        hotk_input_dev->keybit);
-
-       hotk_input_dev->name       = ACPI_PCC_DRIVER_NAME;
-       hotk_input_dev->phys       = ACPI_PCC_INPUT_PHYS;
-       hotk_input_dev->id.bustype = BUS_PCC_HOTKEY;
-       hotk_input_dev->id.vendor  = 0x0001;
-       hotk_input_dev->id.product = 0x0001;
-       hotk_input_dev->id.version = 0x0100;
-
-       pcc_keyinput->key_mode = PCC_KEYINPUT_MODE;
-       pcc_keyinput->hotkey   = hotkey;
-
-       input_set_drvdata(hotk_input_dev, pcc_keyinput);
-
-       hotkey->input_dev = hotk_input_dev;
-
-       error = input_register_device(hotk_input_dev);
-
-       if (error)
-               goto err_pcc;
-
-       return_VALUE(0);
-
- err_pcc:
-       input_unregister_device(hotk_input_dev);
- err_input:
-       return_VALUE(-ENOMEM);
-}
-
-static void __devexit acpi_pcc_remove_input(struct acpi_hotkey *hotkey)
-{
-       struct input_dev    *hotk_input_dev;
-       struct pcc_keyinput *pcc_keyinput;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_remove_input");
-
-       if (hotkey == NULL) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Can't free memory"));
-               return_VOID;
-       }
-
-       hotk_input_dev = hotkey->input_dev;
-       pcc_keyinput   = input_get_drvdata(hotk_input_dev);
-
-       input_unregister_device(hotk_input_dev);
-
-       kfree(pcc_keyinput);
-}
-
-/* -------------------------------------------------------------------------
-   ACPI
-   ------------------------------------------------------------------------- */
-static int __devinit acpi_pcc_hotkey_add(struct acpi_device *device)
-{
-       acpi_status             status = AE_OK;
-       struct acpi_hotkey      *hotkey = NULL;
-       int sifr_status, num_sifr, result;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_add");
-
-       if (device == NULL)
-               return_VALUE(-EINVAL);
-
-       sifr_status = acpi_pcc_get_sqty(device);
-
-       if (sifr_status > 255) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "num_sifr too large"));
-               return_VALUE(-ENODEV);
-       }
-
-       if (sifr_status < 0) {
-               ACPI_DEBUG_PRINT((ACPI_DB_INFO, "not support SQTY"));
-               num_sifr = 0;
-       } else {
-               num_sifr = sifr_status;
-       }
-
-       hotkey = kcalloc(1, sizeof(struct acpi_hotkey), GFP_KERNEL);
-       if (hotkey == NULL) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Couldn't allocate mem for hotkey"));
-               return_VALUE(-ENOMEM);
-       }
-
-       hotkey->device   = device;
-       hotkey->handle   = device->handle;
-       hotkey->num_sifr = num_sifr;
-       device->driver_data = hotkey;
-       strcpy(acpi_device_name(device),  ACPI_PCC_DEVICE_NAME);
-       strcpy(acpi_device_class(device), ACPI_PCC_CLASS);
-
-       status = acpi_install_notify_handler(hotkey->handle,
-                                            ACPI_DEVICE_NOTIFY,
-                                            acpi_pcc_hotkey_notify,
-                                            hotkey);
-
-       if (ACPI_FAILURE(status)) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Error installing notify handler\n"));
-               kfree(hotkey);
-               return_VALUE(-ENODEV);
-       }
-
-       result = acpi_pcc_init_input(hotkey);
-       if (result != 0) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Error installing keyinput handler\n"));
-               kfree(hotkey);
-               return_VALUE(result);
-       }
-
-       return_VALUE(acpi_pcc_proc_init(device));
-}
-
-static int __devexit acpi_pcc_hotkey_remove(struct acpi_device *device,
-                                           int type)
-{
-       acpi_status             status = AE_OK;
-       struct acpi_hotkey      *hotkey = acpi_driver_data(device);
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_hotkey_remove");
-
-       if (!device || !hotkey)
-               return_VALUE(-EINVAL);
-
-       if (hotkey->proc_dir_entry) {
-               acpi_pcc_remove_device(device, acpi_pcc_proc_items_sifr,
-                                      hotkey->num_sifr);
-               acpi_pcc_remove_device(device, acpi_pcc_proc_items,
-                                      ARRAY_SIZE(acpi_pcc_proc_items));
-               remove_proc_entry(PROC_PCC, acpi_root_dir);
-       }
-
-       status = acpi_remove_notify_handler(hotkey->handle,
-                   ACPI_DEVICE_NOTIFY, acpi_pcc_hotkey_notify);
-
-       if (ACPI_FAILURE(status)) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Error removing notify handler\n"));
-       }
-
-       acpi_pcc_remove_input(hotkey);
-       kfree(hotkey);
-       return_VALUE(status == AE_OK);
-}
-
-/* *********************************************************************
-   Module entry point
-   ********************************************************************* */
-static int __init acpi_pcc_init(void)
-{
-       int result;
-
-       ACPI_FUNCTION_TRACE("acpi_pcc_init");
-
-       printk(KERN_INFO LOGPREFIX "loading...\n");
-
-       if (acpi_disabled) {
-               printk(KERN_INFO LOGPREFIX "ACPI disabled.\n");
-               return_VALUE(-ENODEV);
-       }
-
-       result = acpi_bus_register_driver(&acpi_pcc_driver);
-       if (result < 0) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                "Error registering hotkey driver\n"));
-               return_VALUE(-ENODEV);
-       }
-
-       return_VALUE(result);
-}
-
-static void __exit acpi_pcc_exit(void)
-{
-       ACPI_FUNCTION_TRACE("acpi_pcc_exit");
-
-       printk(KERN_INFO LOGPREFIX "unloading...\n");
-
-       acpi_bus_unregister_driver(&acpi_pcc_driver);
-
-       return_VOID;
-}
-
-module_init(acpi_pcc_init);
-module_exit(acpi_pcc_exit);
index c72a13562954d2d404bea84f810fc1d1a590dd4d..4a4dd9adc328cfc63f797cd2d785c14ed8082259 100644 (file)
@@ -75,6 +75,15 @@ config LCD_PLATFORM
          This driver provides a platform-device registered LCD power
          control interface.
 
+config LCD_TOSA
+       tristate "Sharp SL-6000 LCD Driver"
+       depends on LCD_CLASS_DEVICE && SPI
+       depends on MACH_TOSA
+       default n
+       help
+         If you have an Sharp SL-6000 Zaurus say Y to enable a driver
+         for its LCD.
+
 #
 # Backlight
 #
@@ -115,7 +124,7 @@ config BACKLIGHT_ATMEL_PWM
          called atmel-pwm-bl.
 
 config BACKLIGHT_CORGI
-       tristate "Generic (aka Sharp Corgi) Backlight Driver"
+       tristate "Generic (aka Sharp Corgi) Backlight Driver (DEPRECATED)"
        depends on BACKLIGHT_CLASS_DEVICE
        default n
        help
@@ -123,6 +132,9 @@ config BACKLIGHT_CORGI
          known as the Corgi backlight driver. If you have a Sharp Zaurus
          SL-C7xx, SL-Cxx00 or SL-6000x say y. Most users can say n.
 
+         Note: this driver is marked as deprecated, try enable SPI and
+         use the new corgi_lcd driver with integrated backlight control
+
 config BACKLIGHT_LOCOMO
        tristate "Sharp LOCOMO LCD/Backlight Driver"
        depends on BACKLIGHT_CLASS_DEVICE && SHARP_LOCOMO
@@ -171,6 +183,13 @@ config BACKLIGHT_PWM
          If you have a LCD backlight adjustable by PWM, say Y to enable
          this driver.
 
+config BACKLIGHT_DA903X
+       tristate "Backlight Driver for DA9030/DA9034 using WLED"
+       depends on BACKLIGHT_CLASS_DEVICE && PMIC_DA903X
+       help
+         If you have a LCD backlight connected to the WLED output of DA9030
+         or DA9034 WLED output, say Y here to enable this driver.
+
 config BACKLIGHT_MBP_NVIDIA
        tristate "MacBook Pro Nvidia Backlight Driver"
        depends on BACKLIGHT_CLASS_DEVICE && X86
@@ -179,3 +198,19 @@ config BACKLIGHT_MBP_NVIDIA
          If you have an Apple Macbook Pro with Nvidia graphics hardware say Y
         to enable a driver for its backlight
 
+config BACKLIGHT_TOSA
+       tristate "Sharp SL-6000 Backlight Driver"
+       depends on BACKLIGHT_CLASS_DEVICE && I2C
+       depends on MACH_TOSA && LCD_TOSA
+       default n
+       help
+         If you have an Sharp SL-6000 Zaurus say Y to enable a driver
+         for its backlight
+
+config BACKLIGHT_SAHARA
+       tristate "Tabletkiosk Sahara Touch-iT Backlight Driver"
+       depends on BACKLIGHT_CLASS_DEVICE && X86
+       default n
+       help
+         If you have a Tabletkiosk Sahara Touch-iT, say y to enable the
+         backlight driver.
index 3ec551eb472ce6d46c0a446f22badd1eda586def..103427de670357f4f974fd598b37ee41cd5f6ef2 100644 (file)
@@ -7,6 +7,7 @@ obj-$(CONFIG_LCD_ILI9320)          += ili9320.o
 obj-$(CONFIG_LCD_PLATFORM)        += platform_lcd.o
 obj-$(CONFIG_LCD_VGG2432A4)       += vgg2432a4.o
 obj-$(CONFIG_LCD_TDO24M)          += tdo24m.o
+obj-$(CONFIG_LCD_TOSA)            += tosa_lcd.o
 
 obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o
 obj-$(CONFIG_BACKLIGHT_ATMEL_PWM)    += atmel-pwm-bl.o
@@ -17,5 +18,8 @@ obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_bl.o
 obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
 obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o
 obj-$(CONFIG_BACKLIGHT_PWM)    += pwm_bl.o
+obj-$(CONFIG_BACKLIGHT_DA903X) += da903x.o
 obj-$(CONFIG_BACKLIGHT_MBP_NVIDIA) += mbp_nvidia_bl.o
+obj-$(CONFIG_BACKLIGHT_TOSA)   += tosa_bl.o
+obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o
 
diff --git a/drivers/video/backlight/da903x.c b/drivers/video/backlight/da903x.c
new file mode 100644 (file)
index 0000000..242c382
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * Backlight driver for Dialog Semiconductor DA9030/DA9034
+ *
+ * Copyright (C) 2008 Compulab, Ltd.
+ *     Mike Rapoport <mike@compulab.co.il>
+ *
+ * Copyright (C) 2006-2008 Marvell International Ltd.
+ *     Eric Miao <eric.miao@marvell.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/fb.h>
+#include <linux/backlight.h>
+#include <linux/mfd/da903x.h>
+
+#define DA9030_WLED_CONTROL    0x25
+#define DA9030_WLED_CP_EN      (1 << 6)
+#define DA9030_WLED_TRIM(x)    ((x) & 0x7)
+
+#define DA9034_WLED_CONTROL1   0x3C
+#define DA9034_WLED_CONTROL2   0x3D
+
+#define DA9034_WLED_BOOST_EN   (1 << 5)
+
+#define DA9030_MAX_BRIGHTNESS  7
+#define DA9034_MAX_BRIGHTNESS  0x7f
+
+struct da903x_backlight_data {
+       struct device *da903x_dev;
+       int id;
+       int current_brightness;
+};
+
+static int da903x_backlight_set(struct backlight_device *bl, int brightness)
+{
+       struct da903x_backlight_data *data = bl_get_data(bl);
+       struct device *dev = data->da903x_dev;
+       uint8_t val;
+       int ret = 0;
+
+       switch (data->id) {
+       case DA9034_ID_WLED:
+               ret = da903x_update(dev, DA9034_WLED_CONTROL1,
+                               brightness, 0x7f);
+               if (ret)
+                       return ret;
+
+               if (data->current_brightness && brightness == 0)
+                       ret = da903x_clr_bits(dev,
+                                       DA9034_WLED_CONTROL2,
+                                       DA9034_WLED_BOOST_EN);
+
+               if (data->current_brightness == 0 && brightness)
+                       ret = da903x_set_bits(dev,
+                                       DA9034_WLED_CONTROL2,
+                                       DA9034_WLED_BOOST_EN);
+               break;
+       case DA9030_ID_WLED:
+               val = DA9030_WLED_TRIM(brightness);
+               val |= brightness ? DA9030_WLED_CP_EN : 0;
+               ret = da903x_write(dev, DA9030_WLED_CONTROL, val);
+               break;
+       }
+
+       if (ret)
+               return ret;
+
+       data->current_brightness = brightness;
+       return 0;
+}
+
+static int da903x_backlight_update_status(struct backlight_device *bl)
+{
+       int brightness = bl->props.brightness;
+
+       if (bl->props.power != FB_BLANK_UNBLANK)
+               brightness = 0;
+
+       if (bl->props.fb_blank != FB_BLANK_UNBLANK)
+               brightness = 0;
+
+       return da903x_backlight_set(bl, brightness);
+}
+
+static int da903x_backlight_get_brightness(struct backlight_device *bl)
+{
+       struct da903x_backlight_data *data = bl_get_data(bl);
+       return data->current_brightness;
+}
+
+static struct backlight_ops da903x_backlight_ops = {
+       .update_status  = da903x_backlight_update_status,
+       .get_brightness = da903x_backlight_get_brightness,
+};
+
+static int da903x_backlight_probe(struct platform_device *pdev)
+{
+       struct da903x_backlight_data *data;
+       struct backlight_device *bl;
+       int max_brightness;
+
+       data = kzalloc(sizeof(*data), GFP_KERNEL);
+       if (data == NULL)
+               return -ENOMEM;
+
+       switch (pdev->id) {
+       case DA9030_ID_WLED:
+               max_brightness = DA9030_MAX_BRIGHTNESS;
+               break;
+       case DA9034_ID_WLED:
+               max_brightness = DA9034_MAX_BRIGHTNESS;
+               break;
+       default:
+               dev_err(&pdev->dev, "invalid backlight device ID(%d)\n",
+                               pdev->id);
+               return -EINVAL;
+       }
+
+       data->id = pdev->id;
+       data->da903x_dev = pdev->dev.parent;
+       data->current_brightness = 0;
+
+       bl = backlight_device_register(pdev->name, data->da903x_dev,
+                       data, &da903x_backlight_ops);
+       if (IS_ERR(bl)) {
+               dev_err(&pdev->dev, "failed to register backlight\n");
+               return PTR_ERR(bl);
+       }
+
+       bl->props.max_brightness = max_brightness;
+       bl->props.brightness = max_brightness;
+
+       platform_set_drvdata(pdev, bl);
+       backlight_update_status(bl);
+       return 0;
+}
+
+static int da903x_backlight_remove(struct platform_device *pdev)
+{
+       struct backlight_device *bl = platform_get_drvdata(pdev);
+       struct da903x_backlight_data *data = bl_get_data(bl);
+
+       backlight_device_unregister(bl);
+       kfree(data);
+       return 0;
+}
+
+#ifdef CONFIG_PM
+static int da903x_backlight_suspend(struct platform_device *pdev,
+                                pm_message_t state)
+{
+       struct backlight_device *bl = platform_get_drvdata(pdev);
+       return da903x_backlight_set(bl, 0);
+}
+
+static int da903x_backlight_resume(struct platform_device *pdev)
+{
+       struct backlight_device *bl = platform_get_drvdata(pdev);
+
+       backlight_update_status(bl);
+       return 0;
+}
+#else
+#define da903x_backlight_suspend       NULL
+#define da903x_backlight_resume                NULL
+#endif
+
+static struct platform_driver da903x_backlight_driver = {
+       .driver         = {
+               .name   = "da903x-backlight",
+               .owner  = THIS_MODULE,
+       },
+       .probe          = da903x_backlight_probe,
+       .remove         = da903x_backlight_remove,
+       .suspend        = da903x_backlight_suspend,
+       .resume         = da903x_backlight_resume,
+};
+
+static int __init da903x_backlight_init(void)
+{
+       return platform_driver_register(&da903x_backlight_driver);
+}
+module_init(da903x_backlight_init);
+
+static void __exit da903x_backlight_exit(void)
+{
+       platform_driver_unregister(&da903x_backlight_driver);
+}
+module_exit(da903x_backlight_exit);
+
+MODULE_DESCRIPTION("Backlight Driver for Dialog Semiconductor DA9030/DA9034");
+MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>"
+             "Mike Rapoport <mike@compulab.co.il>");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:da903x-backlight");
diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c
new file mode 100644 (file)
index 0000000..a38fda1
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ *  Backlight Driver for the KB3886 Backlight
+ *
+ *  Copyright (c) 2007-2008 Claudio Nieder
+ *
+ *  Based on corgi_bl.c by Richard Purdie and kb3886 driver by Robert Woerle
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mutex.h>
+#include <linux/fb.h>
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/dmi.h>
+
+#define KB3886_PARENT 0x64
+#define KB3886_IO 0x60
+#define KB3886_ADC_DAC_PWM 0xC4
+#define KB3886_PWM0_WRITE 0x81
+#define KB3886_PWM0_READ 0x41
+
+static DEFINE_MUTEX(bl_mutex);
+
+static void kb3886_bl_set_intensity(int intensity)
+{
+       mutex_lock(&bl_mutex);
+       intensity = intensity&0xff;
+       outb(KB3886_ADC_DAC_PWM, KB3886_PARENT);
+       msleep(10);
+       outb(KB3886_PWM0_WRITE, KB3886_IO);
+       msleep(10);
+       outb(intensity, KB3886_IO);
+       mutex_unlock(&bl_mutex);
+}
+
+struct kb3886bl_machinfo {
+       int max_intensity;
+       int default_intensity;
+       int limit_mask;
+       void (*set_bl_intensity)(int intensity);
+};
+
+static struct kb3886bl_machinfo kb3886_bl_machinfo = {
+       .max_intensity = 0xff,
+       .default_intensity = 0xa0,
+       .limit_mask = 0x7f,
+       .set_bl_intensity = kb3886_bl_set_intensity,
+};
+
+static struct platform_device kb3886bl_device = {
+       .name           = "kb3886-bl",
+       .dev            = {
+               .platform_data  = &kb3886_bl_machinfo,
+       },
+       .id             = -1,
+};
+
+static struct platform_device *devices[] __initdata = {
+       &kb3886bl_device,
+};
+
+/*
+ * Back to driver
+ */
+
+static int kb3886bl_intensity;
+static struct backlight_device *kb3886_backlight_device;
+static struct kb3886bl_machinfo *bl_machinfo;
+
+static unsigned long kb3886bl_flags;
+#define KB3886BL_SUSPENDED     0x01
+
+static struct dmi_system_id __initdata kb3886bl_device_table[] = {
+       {
+               .ident = "Sahara Touch-iT",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "SDV"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "iTouch T201"),
+               },
+       },
+       { }
+};
+
+static int kb3886bl_send_intensity(struct backlight_device *bd)
+{
+       int intensity = bd->props.brightness;
+
+       if (bd->props.power != FB_BLANK_UNBLANK)
+               intensity = 0;
+       if (bd->props.fb_blank != FB_BLANK_UNBLANK)
+               intensity = 0;
+       if (kb3886bl_flags & KB3886BL_SUSPENDED)
+               intensity = 0;
+
+       bl_machinfo->set_bl_intensity(intensity);
+
+       kb3886bl_intensity = intensity;
+       return 0;
+}
+
+#ifdef CONFIG_PM
+static int kb3886bl_suspend(struct platform_device *pdev, pm_message_t state)
+{
+       struct backlight_device *bd = platform_get_drvdata(pdev);
+
+       kb3886bl_flags |= KB3886BL_SUSPENDED;
+       backlight_update_status(bd);
+       return 0;
+}
+
+static int kb3886bl_resume(struct platform_device *pdev)
+{
+       struct backlight_device *bd = platform_get_drvdata(pdev);
+
+       kb3886bl_flags &= ~KB3886BL_SUSPENDED;
+       backlight_update_status(bd);
+       return 0;
+}
+#else
+#define kb3886bl_suspend       NULL
+#define kb3886bl_resume                NULL
+#endif
+
+static int kb3886bl_get_intensity(struct backlight_device *bd)
+{
+       return kb3886bl_intensity;
+}
+
+static struct backlight_ops kb3886bl_ops = {
+       .get_brightness = kb3886bl_get_intensity,
+       .update_status  = kb3886bl_send_intensity,
+};
+
+static int kb3886bl_probe(struct platform_device *pdev)
+{
+       struct kb3886bl_machinfo *machinfo = pdev->dev.platform_data;
+
+       bl_machinfo = machinfo;
+       if (!machinfo->limit_mask)
+               machinfo->limit_mask = -1;
+
+       kb3886_backlight_device = backlight_device_register("kb3886-bl",
+               &pdev->dev, NULL, &kb3886bl_ops);
+       if (IS_ERR(kb3886_backlight_device))
+               return PTR_ERR(kb3886_backlight_device);
+
+       platform_set_drvdata(pdev, kb3886_backlight_device);
+
+       kb3886_backlight_device->props.max_brightness = machinfo->max_intensity;
+       kb3886_backlight_device->props.power = FB_BLANK_UNBLANK;
+       kb3886_backlight_device->props.brightness = machinfo->default_intensity;
+       backlight_update_status(kb3886_backlight_device);
+
+       return 0;
+}
+
+static int kb3886bl_remove(struct platform_device *pdev)
+{
+       struct backlight_device *bd = platform_get_drvdata(pdev);
+
+       backlight_device_unregister(bd);
+
+       return 0;
+}
+
+static struct platform_driver kb3886bl_driver = {
+       .probe          = kb3886bl_probe,
+       .remove         = kb3886bl_remove,
+       .suspend        = kb3886bl_suspend,
+       .resume         = kb3886bl_resume,
+       .driver         = {
+               .name   = "kb3886-bl",
+       },
+};
+
+static int __init kb3886_init(void)
+{
+       if (!dmi_check_system(kb3886bl_device_table))
+               return -ENODEV;
+
+       platform_add_devices(devices, ARRAY_SIZE(devices));
+       return platform_driver_register(&kb3886bl_driver);
+}
+
+static void __exit kb3886_exit(void)
+{
+       platform_driver_unregister(&kb3886bl_driver);
+}
+
+module_init(kb3886_init);
+module_exit(kb3886_exit);
+
+MODULE_AUTHOR("Claudio Nieder <private@claudio.ch>");
+MODULE_DESCRIPTION("Tabletkiosk Sahara Touch-iT Backlight Driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("dmi:*:svnSDV:pniTouchT201:*");
diff --git a/drivers/video/backlight/tosa_bl.c b/drivers/video/backlight/tosa_bl.c
new file mode 100644 (file)
index 0000000..43edbad
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ *  LCD / Backlight control code for Sharp SL-6000x (tosa)
+ *
+ *  Copyright (c) 2005         Dirk Opfer
+ *  Copyright (c) 2007,2008    Dmitry Baryshkov
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/spi/spi.h>
+#include <linux/i2c.h>
+#include <linux/gpio.h>
+#include <linux/fb.h>
+#include <linux/backlight.h>
+
+#include <asm/mach/sharpsl_param.h>
+
+#include <mach/tosa.h>
+
+#define COMADJ_DEFAULT 97
+
+#define DAC_CH1                0
+#define DAC_CH2                1
+
+struct tosa_bl_data {
+       struct i2c_client *i2c;
+       struct backlight_device *bl;
+
+       int comadj;
+};
+
+static void tosa_bl_set_backlight(struct tosa_bl_data *data, int brightness)
+{
+       struct spi_device *spi = data->i2c->dev.platform_data;
+
+       i2c_smbus_write_byte_data(data->i2c, DAC_CH1, data->comadj);
+
+       /* SetBacklightDuty */
+       i2c_smbus_write_byte_data(data->i2c, DAC_CH2, (u8)(brightness & 0xff));
+
+       /* SetBacklightVR */
+       gpio_set_value(TOSA_GPIO_BL_C20MA, brightness & 0x100);
+
+       tosa_bl_enable(spi, brightness);
+}
+
+static int tosa_bl_update_status(struct backlight_device *dev)
+{
+       struct backlight_properties *props = &dev->props;
+       struct tosa_bl_data *data = dev_get_drvdata(&dev->dev);
+       int power = max(props->power, props->fb_blank);
+       int brightness = props->brightness;
+
+       if (power)
+               brightness = 0;
+
+       tosa_bl_set_backlight(data, brightness);
+
+       return 0;
+}
+
+static int tosa_bl_get_brightness(struct backlight_device *dev)
+{
+       struct backlight_properties *props = &dev->props;
+
+       return props->brightness;
+}
+
+static struct backlight_ops bl_ops = {
+       .get_brightness         = tosa_bl_get_brightness,
+       .update_status          = tosa_bl_update_status,
+};
+
+static int __devinit tosa_bl_probe(struct i2c_client *client,
+               const struct i2c_device_id *id)
+{
+       struct tosa_bl_data *data = kzalloc(sizeof(struct tosa_bl_data), GFP_KERNEL);
+       int ret = 0;
+       if (!data)
+               return -ENOMEM;
+
+       data->comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj;
+
+       ret = gpio_request(TOSA_GPIO_BL_C20MA, "backlight");
+       if (ret) {
+               dev_dbg(&data->bl->dev, "Unable to request gpio!\n");
+               goto err_gpio_bl;
+       }
+       ret = gpio_direction_output(TOSA_GPIO_BL_C20MA, 0);
+       if (ret)
+               goto err_gpio_dir;
+
+       i2c_set_clientdata(client, data);
+       data->i2c = client;
+
+       data->bl = backlight_device_register("tosa-bl", &client->dev,
+                       data, &bl_ops);
+       if (IS_ERR(data->bl)) {
+               ret = PTR_ERR(data->bl);
+               goto err_reg;
+       }
+
+       data->bl->props.brightness = 69;
+       data->bl->props.max_brightness = 512 - 1;
+       data->bl->props.power = FB_BLANK_UNBLANK;
+
+       backlight_update_status(data->bl);
+
+       return 0;
+
+err_reg:
+       data->bl = NULL;
+       i2c_set_clientdata(client, NULL);
+err_gpio_dir:
+       gpio_free(TOSA_GPIO_BL_C20MA);
+err_gpio_bl:
+       kfree(data);
+       return ret;
+}
+
+static int __devexit tosa_bl_remove(struct i2c_client *client)
+{
+       struct tosa_bl_data *data = i2c_get_clientdata(client);
+
+       backlight_device_unregister(data->bl);
+       data->bl = NULL;
+       i2c_set_clientdata(client, NULL);
+
+       gpio_free(TOSA_GPIO_BL_C20MA);
+
+       kfree(data);
+
+       return 0;
+}
+
+#ifdef CONFIG_PM
+static int tosa_bl_suspend(struct i2c_client *client, pm_message_t pm)
+{
+       struct tosa_bl_data *data = i2c_get_clientdata(client);
+
+       tosa_bl_set_backlight(data, 0);
+
+       return 0;
+}
+
+static int tosa_bl_resume(struct i2c_client *client)
+{
+       struct tosa_bl_data *data = i2c_get_clientdata(client);
+
+       backlight_update_status(data->bl);
+       return 0;
+}
+#else
+#define tosa_bl_suspend NULL
+#define tosa_bl_resume NULL
+#endif
+
+static const struct i2c_device_id tosa_bl_id[] = {
+       { "tosa-bl", 0 },
+       { },
+};
+
+
+static struct i2c_driver tosa_bl_driver = {
+       .driver = {
+               .name           = "tosa-bl",
+               .owner          = THIS_MODULE,
+       },
+       .probe          = tosa_bl_probe,
+       .remove         = __devexit_p(tosa_bl_remove),
+       .suspend        = tosa_bl_suspend,
+       .resume         = tosa_bl_resume,
+       .id_table       = tosa_bl_id,
+};
+
+static int __init tosa_bl_init(void)
+{
+       return i2c_add_driver(&tosa_bl_driver);
+}
+
+static void __exit tosa_bl_exit(void)
+{
+       i2c_del_driver(&tosa_bl_driver);
+}
+
+module_init(tosa_bl_init);
+module_exit(tosa_bl_exit);
+
+MODULE_AUTHOR("Dmitry Baryshkov");
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("LCD/Backlight control for Sharp SL-6000 PDA");
+
diff --git a/drivers/video/backlight/tosa_lcd.c b/drivers/video/backlight/tosa_lcd.c
new file mode 100644 (file)
index 0000000..57a2664
--- /dev/null
@@ -0,0 +1,280 @@
+/*
+ *  LCD / Backlight control code for Sharp SL-6000x (tosa)
+ *
+ *  Copyright (c) 2005         Dirk Opfer
+ *  Copyright (c) 2007,2008    Dmitry Baryshkov
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/device.h>
+#include <linux/spi/spi.h>
+#include <linux/i2c.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
+#include <linux/lcd.h>
+#include <linux/fb.h>
+
+#include <asm/mach/sharpsl_param.h>
+
+#include <mach/tosa.h>
+
+#define POWER_IS_ON(pwr)       ((pwr) <= FB_BLANK_NORMAL)
+
+#define TG_REG0_VQV    0x0001
+#define TG_REG0_COLOR  0x0002
+#define TG_REG0_UD     0x0004
+#define TG_REG0_LR     0x0008
+
+#define        DAC_BASE        0x4e
+
+struct tosa_lcd_data {
+       struct spi_device *spi;
+       struct lcd_device *lcd;
+       struct i2c_client *i2c;
+
+       int lcd_power;
+};
+
+static int tosa_tg_send(struct spi_device *spi, int adrs, uint8_t data)
+{
+       u8 buf[1];
+       struct spi_message msg;
+       struct spi_transfer xfer = {
+               .len            = 1,
+               .cs_change      = 1,
+               .tx_buf         = buf,
+       };
+
+       buf[0] = ((adrs & 0x07) << 5) | (data & 0x1f);
+       spi_message_init(&msg);
+       spi_message_add_tail(&xfer, &msg);
+
+       return spi_sync(spi, &msg);
+}
+
+int tosa_bl_enable(struct spi_device *spi, int enable)
+{
+       /* bl_enable GP04=1 otherwise GP04=0*/
+       return tosa_tg_send(spi, TG_GPODR2, enable? 0x01 : 0x00);
+}
+EXPORT_SYMBOL(tosa_bl_enable);
+
+static void tosa_lcd_tg_init(struct tosa_lcd_data *data)
+{
+       /* TG on */
+       gpio_set_value(TOSA_GPIO_TG_ON, 0);
+
+       mdelay(60);
+
+       /* delayed 0clk TCTL signal for VGA */
+       tosa_tg_send(data->spi, TG_TPOSCTL, 0x00);
+       /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
+       tosa_tg_send(data->spi, TG_GPOSR, 0x02);
+}
+
+static void tosa_lcd_tg_on(struct tosa_lcd_data *data)
+{
+       struct spi_device *spi = data->spi;
+       const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
+       tosa_tg_send(spi, TG_PNLCTL, value | TG_REG0_VQV); /* this depends on mode */
+
+       /* TG LCD pannel power up */
+       tosa_tg_send(spi, TG_PINICTL,0x4);
+       mdelay(50);
+
+       /* TG LCD GVSS */
+       tosa_tg_send(spi, TG_PINICTL,0x0);
+
+       if (!data->i2c) {
+               /* after the pannel is powered up the first time, we can access the i2c bus */
+               /* so probe for the DAC */
+               struct i2c_adapter *adap = i2c_get_adapter(0);
+               struct i2c_board_info info = {
+                       .type   = "tosa-bl",
+                       .addr   = DAC_BASE,
+                       .platform_data = data->spi,
+               };
+               data->i2c = i2c_new_device(adap, &info);
+       }
+}
+
+static void tosa_lcd_tg_off(struct tosa_lcd_data *data)
+{
+       struct spi_device *spi = data->spi;
+
+       /* TG LCD VHSA off */
+       tosa_tg_send(spi, TG_PINICTL,0x4);
+       mdelay(50);
+
+       /* TG LCD signal off */
+       tosa_tg_send(spi, TG_PINICTL,0x6);
+       mdelay(50);
+
+       /* TG Off */
+       gpio_set_value(TOSA_GPIO_TG_ON, 1);
+       mdelay(100);
+}
+
+int tosa_lcd_set_power(struct lcd_device *lcd, int power)
+{
+       struct tosa_lcd_data *data = lcd_get_data(lcd);
+
+       if (POWER_IS_ON(power) && !POWER_IS_ON(data->lcd_power))
+               tosa_lcd_tg_on(data);
+
+       if (!POWER_IS_ON(power) && POWER_IS_ON(data->lcd_power))
+               tosa_lcd_tg_off(data);
+
+       data->lcd_power = power;
+       return 0;
+}
+
+static int tosa_lcd_get_power(struct lcd_device *lcd)
+{
+       struct tosa_lcd_data *data = lcd_get_data(lcd);
+
+       return data->lcd_power;
+}
+
+static struct lcd_ops tosa_lcd_ops = {
+       .set_power = tosa_lcd_set_power,
+       .get_power = tosa_lcd_get_power,
+};
+
+static int __devinit tosa_lcd_probe(struct spi_device *spi)
+{
+       int ret;
+       struct tosa_lcd_data *data;
+
+       data = kzalloc(sizeof(struct tosa_lcd_data), GFP_KERNEL);
+       if (!data)
+               return -ENOMEM;
+
+       /*
+        * bits_per_word cannot be configured in platform data
+        */
+       spi->bits_per_word = 8;
+
+       ret = spi_setup(spi);
+       if (ret < 0)
+               goto err_spi;
+
+       data->spi = spi;
+       dev_set_drvdata(&spi->dev, data);
+
+       ret = gpio_request(TOSA_GPIO_TG_ON, "tg #pwr");
+       if (ret < 0)
+               goto err_gpio_tg;
+
+       mdelay(60);
+
+       ret = gpio_direction_output(TOSA_GPIO_TG_ON, 0);
+       if (ret < 0)
+               goto err_gpio_dir;
+
+       mdelay(60);
+       tosa_lcd_tg_init(data);
+
+       tosa_lcd_tg_on(data);
+
+       data->lcd = lcd_device_register("tosa-lcd", &spi->dev, data,
+                       &tosa_lcd_ops);
+
+       if (IS_ERR(data->lcd)) {
+               ret = PTR_ERR(data->lcd);
+               data->lcd = NULL;
+               goto err_register;
+       }
+
+       return 0;
+
+err_register:
+       tosa_lcd_tg_off(data);
+err_gpio_dir:
+       gpio_free(TOSA_GPIO_TG_ON);
+err_gpio_tg:
+       dev_set_drvdata(&spi->dev, NULL);
+err_spi:
+       kfree(data);
+       return ret;
+}
+
+static int __devexit tosa_lcd_remove(struct spi_device *spi)
+{
+       struct tosa_lcd_data *data = dev_get_drvdata(&spi->dev);
+
+       lcd_device_unregister(data->lcd);
+
+       if (data->i2c)
+               i2c_unregister_device(data->i2c);
+
+       tosa_lcd_tg_off(data);
+
+       gpio_free(TOSA_GPIO_TG_ON);
+       dev_set_drvdata(&spi->dev, NULL);
+       kfree(data);
+
+       return 0;
+}
+
+#ifdef CONFIG_PM
+static int tosa_lcd_suspend(struct spi_device *spi, pm_message_t state)
+{
+       struct tosa_lcd_data *data = dev_get_drvdata(&spi->dev);
+
+       tosa_lcd_tg_off(data);
+
+       return 0;
+}
+
+static int tosa_lcd_resume(struct spi_device *spi)
+{
+       struct tosa_lcd_data *data = dev_get_drvdata(&spi->dev);
+
+       tosa_lcd_tg_init(data);
+       if (POWER_IS_ON(data->lcd_power))
+               tosa_lcd_tg_on(data);
+       else
+               tosa_lcd_tg_off(data);
+
+       return 0;
+}
+#else
+#define tosa_lcd_suspend       NULL
+#define tosa_lcd_reume NULL
+#endif
+
+static struct spi_driver tosa_lcd_driver = {
+       .driver = {
+               .name           = "tosa-lcd",
+               .owner          = THIS_MODULE,
+       },
+       .probe          = tosa_lcd_probe,
+       .remove         = __devexit_p(tosa_lcd_remove),
+       .suspend        = tosa_lcd_suspend,
+       .resume         = tosa_lcd_resume,
+};
+
+static int __init tosa_lcd_init(void)
+{
+       return spi_register_driver(&tosa_lcd_driver);
+}
+
+static void __exit tosa_lcd_exit(void)
+{
+       spi_unregister_driver(&tosa_lcd_driver);
+}
+
+module_init(tosa_lcd_init);
+module_exit(tosa_lcd_exit);
+
+MODULE_AUTHOR("Dmitry Baryshkov");
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("LCD/Backlight control for Sharp SL-6000 PDA");
+
index d41ccb56146ace0077cf09b2add2a5c6209a266b..d3a73f5a48c3f0514508da1395914e7846b488c5 100644 (file)
@@ -123,7 +123,7 @@ extern void ledtrig_ide_activity(void);
  */
 struct led_info {
        const char      *name;
-       char            *default_trigger;
+       const char      *default_trigger;
        int             flags;
 };
 
@@ -135,7 +135,7 @@ struct led_platform_data {
 /* For the leds-gpio driver */
 struct gpio_led {
        const char *name;
-       char *default_trigger;
+       const char *default_trigger;
        unsigned        gpio;
        u8              active_low;
 };
index c261aa0584b192027822a9069c782f5f663e242c..507f53ef8038a7a7ffcbc8fb8a9655055553ec4c 100644 (file)
@@ -695,7 +695,6 @@ struct ata_port {
        unsigned int            cbl;    /* cable type; ATA_CBL_xxx */
 
        struct ata_queued_cmd   qcmd[ATA_MAX_QUEUE];
-       unsigned long           qc_allocated;
        unsigned int            qc_active;
        int                     nr_active_links; /* #links with active qcs */
 
index 8347925030ff51a0a98d1a81cb5ae9c0b06413fa..ab431d4cc970d50f4b90b8f0639fcdea417e78a0 100644 (file)
@@ -23,7 +23,7 @@
 int string_get_size(u64 size, const enum string_size_units units,
                    char *buf, int len)
 {
-       const char *units_10[] = { "B", "KB", "MB", "GB", "TB", "PB",
+       const char *units_10[] = { "B", "kB", "MB", "GB", "TB", "PB",
                                   "EB", "ZB", "YB", NULL};
        const char *units_2[] = {"B", "KiB", "MiB", "GiB", "TiB", "PiB",
                                 "EiB", "ZiB", "YiB", NULL };
@@ -31,7 +31,7 @@ int string_get_size(u64 size, const enum string_size_units units,
                [STRING_UNITS_10] =  units_10,
                [STRING_UNITS_2] = units_2,
        };
-       const int divisor[] = {
+       const unsigned int divisor[] = {
                [STRING_UNITS_10] = 1000,
                [STRING_UNITS_2] = 1024,
        };
@@ -40,23 +40,27 @@ int string_get_size(u64 size, const enum string_size_units units,
        char tmp[8];
 
        tmp[0] = '\0';
+       i = 0;
+       if (size >= divisor[units]) {
+               while (size >= divisor[units] && units_str[units][i]) {
+                       remainder = do_div(size, divisor[units]);
+                       i++;
+               }
 
-       for (i = 0; size > divisor[units] && units_str[units][i]; i++)
-               remainder = do_div(size, divisor[units]);
+               sf_cap = size;
+               for (j = 0; sf_cap*10 < 1000; j++)
+                       sf_cap *= 10;
 
-       sf_cap = size;
-       for (j = 0; sf_cap*10 < 1000; j++)
-               sf_cap *= 10;
-
-       if (j) {
-               remainder *= 1000;
-               do_div(remainder, divisor[units]);
-               snprintf(tmp, sizeof(tmp), ".%03lld",
-                        (unsigned long long)remainder);
-               tmp[j+1] = '\0';
+               if (j) {
+                       remainder *= 1000;
+                       do_div(remainder, divisor[units]);
+                       snprintf(tmp, sizeof(tmp), ".%03lld",
+                                (unsigned long long)remainder);
+                       tmp[j+1] = '\0';
+               }
        }
 
-       snprintf(buf, len, "%lld%s%s", (unsigned long long)size,
+       snprintf(buf, len, "%lld%s %s", (unsigned long long)size,
                 tmp, units_str[units][i]);
 
        return 0;