Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
Linus Torvalds [Sat, 27 Feb 2010 00:54:27 +0000 (16:54 -0800)]
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (187 commits)
  sh: remove dead LED code for migo-r and ms7724se
  sh: ecovec build fix for CONFIG_I2C=n
  sh: ecovec r-standby support
  sh: ms7724se r-standby support
  sh: SH-Mobile R-standby register save/restore
  clocksource: Fix up a registration/IRQ race in the sh drivers.
  sh: ms7724: modify scan_timing for KEYSC
  sh: ms7724: Add sh_sir support
  sh: mach-ecovec24: Add sh_sir support
  sh: wire up SET/GET_UNALIGN_CTL.
  sh: allow alignment fault mode to be configured at kernel boot.
  sh: sh7724: Update FSI/SPU2 clock
  sh: always enable sh7724 vpu_clk and set to 166MHz on Ecovec
  sh: add sh7724 kick callback to clk_div4_table
  sh: introduce struct clk_div4_table
  sh: clock-cpg div4 set_rate() shift fix
  sh: Turn on speculative return for SH7785 and SH7786
  sh: Merge legacy and dynamic PMB modes.
  sh: Use uncached I/O helpers in PMB setup.
  sh: Provide uncached I/O helpers.
  ...

289 files changed:
arch/sh/Kconfig
arch/sh/Kconfig.cpu
arch/sh/Makefile
arch/sh/boards/Kconfig
arch/sh/boards/Makefile
arch/sh/boards/board-magicpanelr2.c
arch/sh/boards/board-polaris.c
arch/sh/boards/board-sh7785lcr.c
arch/sh/boards/board-shmin.c
arch/sh/boards/board-titan.c [new file with mode: 0644]
arch/sh/boards/board-urquell.c
arch/sh/boards/mach-ap325rxa/setup.c
arch/sh/boards/mach-cayman/irq.c
arch/sh/boards/mach-dreamcast/irq.c
arch/sh/boards/mach-dreamcast/rtc.c
arch/sh/boards/mach-dreamcast/setup.c
arch/sh/boards/mach-ecovec24/sdram.S
arch/sh/boards/mach-ecovec24/setup.c
arch/sh/boards/mach-highlander/irq-r7780mp.c
arch/sh/boards/mach-highlander/irq-r7780rp.c
arch/sh/boards/mach-highlander/irq-r7785rp.c
arch/sh/boards/mach-highlander/psw.c
arch/sh/boards/mach-highlander/setup.c
arch/sh/boards/mach-hp6xx/hp6xx_apm.c
arch/sh/boards/mach-hp6xx/pm.c
arch/sh/boards/mach-hp6xx/setup.c
arch/sh/boards/mach-kfr2r09/setup.c
arch/sh/boards/mach-landisk/gio.c
arch/sh/boards/mach-landisk/irq.c
arch/sh/boards/mach-landisk/psw.c
arch/sh/boards/mach-landisk/setup.c
arch/sh/boards/mach-lboxre2/setup.c
arch/sh/boards/mach-microdev/io.c
arch/sh/boards/mach-microdev/irq.c
arch/sh/boards/mach-migor/setup.c
arch/sh/boards/mach-r2d/irq.c
arch/sh/boards/mach-r2d/setup.c
arch/sh/boards/mach-rsk/devices-rsk7203.c
arch/sh/boards/mach-sdk7780/irq.c
arch/sh/boards/mach-sdk7780/setup.c
arch/sh/boards/mach-sdk7786/Makefile [new file with mode: 0644]
arch/sh/boards/mach-sdk7786/fpga.c [new file with mode: 0644]
arch/sh/boards/mach-sdk7786/irq.c [new file with mode: 0644]
arch/sh/boards/mach-sdk7786/setup.c [new file with mode: 0644]
arch/sh/boards/mach-se/7206/io.c
arch/sh/boards/mach-se/7206/irq.c
arch/sh/boards/mach-se/7206/setup.c
arch/sh/boards/mach-se/7343/irq.c
arch/sh/boards/mach-se/7343/setup.c
arch/sh/boards/mach-se/770x/irq.c
arch/sh/boards/mach-se/770x/setup.c
arch/sh/boards/mach-se/7721/irq.c
arch/sh/boards/mach-se/7721/setup.c
arch/sh/boards/mach-se/7722/irq.c
arch/sh/boards/mach-se/7722/setup.c
arch/sh/boards/mach-se/7724/irq.c
arch/sh/boards/mach-se/7724/sdram.S
arch/sh/boards/mach-se/7724/setup.c
arch/sh/boards/mach-se/7780/irq.c
arch/sh/boards/mach-se/7780/setup.c
arch/sh/boards/mach-sh03/rtc.c
arch/sh/boards/mach-sh03/setup.c
arch/sh/boards/mach-sh7763rdp/irq.c
arch/sh/boards/mach-sh7763rdp/setup.c
arch/sh/boards/mach-snapgear/setup.c
arch/sh/boards/mach-systemh/irq.c
arch/sh/boards/mach-titan/Makefile [deleted file]
arch/sh/boards/mach-titan/io.c [deleted file]
arch/sh/boards/mach-titan/setup.c [deleted file]
arch/sh/boards/mach-x3proto/ilsel.c
arch/sh/boards/mach-x3proto/setup.c
arch/sh/boot/Makefile
arch/sh/boot/compressed/Makefile
arch/sh/boot/compressed/misc.c
arch/sh/cchips/hd6446x/hd64461.c
arch/sh/configs/sdk7786_defconfig [new file with mode: 0644]
arch/sh/drivers/dma/dma-pvr2.c
arch/sh/drivers/dma/dma-sh.c
arch/sh/drivers/dma/dmabrg.c
arch/sh/drivers/heartbeat.c
arch/sh/drivers/pci/Makefile
arch/sh/drivers/pci/common.c [new file with mode: 0644]
arch/sh/drivers/pci/fixups-dreamcast.c
arch/sh/drivers/pci/fixups-r7780rp.c
arch/sh/drivers/pci/fixups-rts7751r2d.c
arch/sh/drivers/pci/fixups-sdk7780.c
arch/sh/drivers/pci/fixups-se7751.c
arch/sh/drivers/pci/ops-sh4.c
arch/sh/drivers/pci/pci-dreamcast.c
arch/sh/drivers/pci/pci-sh4.h
arch/sh/drivers/pci/pci-sh5.c
arch/sh/drivers/pci/pci-sh5.h
arch/sh/drivers/pci/pci-sh7751.c
arch/sh/drivers/pci/pci-sh7780.c
arch/sh/drivers/pci/pci-sh7780.h
arch/sh/drivers/pci/pci.c
arch/sh/drivers/pci/pcie-sh7786.c
arch/sh/drivers/pci/pcie-sh7786.h
arch/sh/drivers/superhyway/ops-sh4-202.c
arch/sh/include/asm/Kbuild
arch/sh/include/asm/addrspace.h
arch/sh/include/asm/alignment.h [new file with mode: 0644]
arch/sh/include/asm/atomic-grb.h
arch/sh/include/asm/atomic-llsc.h
arch/sh/include/asm/atomic.h
arch/sh/include/asm/clock.h
arch/sh/include/asm/cmpxchg-grb.h
arch/sh/include/asm/dma-mapping.h
arch/sh/include/asm/dma-sh.h
arch/sh/include/asm/dwarf.h
arch/sh/include/asm/fixmap.h
arch/sh/include/asm/fpu.h
arch/sh/include/asm/hw_breakpoint.h [new file with mode: 0644]
arch/sh/include/asm/io.h
arch/sh/include/asm/kdebug.h
arch/sh/include/asm/mmu.h
arch/sh/include/asm/mmu_context.h
arch/sh/include/asm/mmu_context_32.h
arch/sh/include/asm/module.h
arch/sh/include/asm/page.h
arch/sh/include/asm/pci.h
arch/sh/include/asm/pgalloc.h
arch/sh/include/asm/pgtable-2level.h [new file with mode: 0644]
arch/sh/include/asm/pgtable-3level.h [new file with mode: 0644]
arch/sh/include/asm/pgtable.h
arch/sh/include/asm/pgtable_32.h
arch/sh/include/asm/pgtable_64.h
arch/sh/include/asm/processor.h
arch/sh/include/asm/processor_32.h
arch/sh/include/asm/processor_64.h
arch/sh/include/asm/ptrace.h
arch/sh/include/asm/reboot.h [new file with mode: 0644]
arch/sh/include/asm/setup.h
arch/sh/include/asm/sh_bios.h
arch/sh/include/asm/suspend.h
arch/sh/include/asm/system.h
arch/sh/include/asm/system_32.h
arch/sh/include/asm/system_64.h
arch/sh/include/asm/thread_info.h
arch/sh/include/asm/tlb.h
arch/sh/include/asm/ubc.h [deleted file]
arch/sh/include/asm/uncached.h [new file with mode: 0644]
arch/sh/include/asm/vmlinux.lds.h
arch/sh/include/asm/watchdog.h
arch/sh/include/cpu-sh2/cpu/ubc.h [deleted file]
arch/sh/include/cpu-sh2/cpu/watchdog.h
arch/sh/include/cpu-sh3/cpu/dac.h
arch/sh/include/cpu-sh3/cpu/dma.h
arch/sh/include/cpu-sh3/cpu/ubc.h [deleted file]
arch/sh/include/cpu-sh4/cpu/addrspace.h
arch/sh/include/cpu-sh4/cpu/dma-sh4a.h
arch/sh/include/cpu-sh4/cpu/dma.h
arch/sh/include/cpu-sh4/cpu/mmu_context.h
arch/sh/include/cpu-sh4/cpu/sq.h
arch/sh/include/cpu-sh4/cpu/ubc.h [deleted file]
arch/sh/include/mach-common/mach/magicpanelr2.h
arch/sh/include/mach-dreamcast/mach/sysasic.h
arch/sh/include/mach-sdk7786/mach/fpga.h [new file with mode: 0644]
arch/sh/include/mach-sdk7786/mach/irq.h [new file with mode: 0644]
arch/sh/include/mach-se/mach/se7343.h
arch/sh/kernel/Makefile
arch/sh/kernel/cpu/Makefile
arch/sh/kernel/cpu/adc.c
arch/sh/kernel/cpu/clock-cpg.c
arch/sh/kernel/cpu/fpu.c [new file with mode: 0644]
arch/sh/kernel/cpu/init.c
arch/sh/kernel/cpu/irq/intc-sh5.c
arch/sh/kernel/cpu/sh2/clock-sh7619.c
arch/sh/kernel/cpu/sh2a/clock-sh7201.c
arch/sh/kernel/cpu/sh2a/clock-sh7203.c
arch/sh/kernel/cpu/sh2a/clock-sh7206.c
arch/sh/kernel/cpu/sh2a/fpu.c
arch/sh/kernel/cpu/sh3/clock-sh3.c
arch/sh/kernel/cpu/sh3/clock-sh7705.c
arch/sh/kernel/cpu/sh3/clock-sh7706.c
arch/sh/kernel/cpu/sh3/clock-sh7709.c
arch/sh/kernel/cpu/sh3/clock-sh7710.c
arch/sh/kernel/cpu/sh3/clock-sh7712.c
arch/sh/kernel/cpu/sh3/ex.S
arch/sh/kernel/cpu/sh3/probe.c
arch/sh/kernel/cpu/sh3/setup-sh3.c
arch/sh/kernel/cpu/sh4/clock-sh4-202.c
arch/sh/kernel/cpu/sh4/clock-sh4.c
arch/sh/kernel/cpu/sh4/fpu.c
arch/sh/kernel/cpu/sh4/probe.c
arch/sh/kernel/cpu/sh4/setup-sh4-202.c
arch/sh/kernel/cpu/sh4/setup-sh7750.c
arch/sh/kernel/cpu/sh4/setup-sh7760.c
arch/sh/kernel/cpu/sh4/sq.c
arch/sh/kernel/cpu/sh4a/Makefile
arch/sh/kernel/cpu/sh4a/clock-sh7343.c
arch/sh/kernel/cpu/sh4a/clock-sh7366.c
arch/sh/kernel/cpu/sh4a/clock-sh7722.c
arch/sh/kernel/cpu/sh4a/clock-sh7723.c
arch/sh/kernel/cpu/sh4a/clock-sh7724.c
arch/sh/kernel/cpu/sh4a/clock-sh7757.c
arch/sh/kernel/cpu/sh4a/clock-sh7763.c
arch/sh/kernel/cpu/sh4a/clock-sh7770.c
arch/sh/kernel/cpu/sh4a/clock-sh7780.c
arch/sh/kernel/cpu/sh4a/clock-sh7785.c
arch/sh/kernel/cpu/sh4a/clock-sh7786.c
arch/sh/kernel/cpu/sh4a/clock-shx3.c
arch/sh/kernel/cpu/sh4a/pinmux-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7723.c
arch/sh/kernel/cpu/sh4a/setup-sh7724.c
arch/sh/kernel/cpu/sh4a/setup-sh7757.c
arch/sh/kernel/cpu/sh4a/setup-sh7763.c
arch/sh/kernel/cpu/sh4a/setup-sh7770.c
arch/sh/kernel/cpu/sh4a/setup-sh7780.c
arch/sh/kernel/cpu/sh4a/setup-sh7785.c
arch/sh/kernel/cpu/sh4a/setup-sh7786.c
arch/sh/kernel/cpu/sh4a/smp-shx3.c
arch/sh/kernel/cpu/sh4a/ubc.c [new file with mode: 0644]
arch/sh/kernel/cpu/sh5/clock-sh5.c
arch/sh/kernel/cpu/sh5/entry.S
arch/sh/kernel/cpu/sh5/fpu.c
arch/sh/kernel/cpu/shmobile/pm.c
arch/sh/kernel/cpu/shmobile/sleep.S
arch/sh/kernel/debugtraps.S
arch/sh/kernel/dwarf.c
arch/sh/kernel/early_printk.c [deleted file]
arch/sh/kernel/head_32.S
arch/sh/kernel/head_64.S
arch/sh/kernel/hw_breakpoint.c [new file with mode: 0644]
arch/sh/kernel/idle.c
arch/sh/kernel/io_trapped.c
arch/sh/kernel/kgdb.c
arch/sh/kernel/machine_kexec.c
arch/sh/kernel/process.c [new file with mode: 0644]
arch/sh/kernel/process_32.c
arch/sh/kernel/process_64.c
arch/sh/kernel/ptrace_32.c
arch/sh/kernel/ptrace_64.c
arch/sh/kernel/reboot.c [new file with mode: 0644]
arch/sh/kernel/setup.c
arch/sh/kernel/sh_bios.c
arch/sh/kernel/signal_32.c
arch/sh/kernel/signal_64.c
arch/sh/kernel/smp.c
arch/sh/kernel/traps.c
arch/sh/kernel/traps_32.c
arch/sh/kernel/traps_64.c
arch/sh/kernel/vmlinux.lds.S
arch/sh/math-emu/math.c
arch/sh/mm/Kconfig
arch/sh/mm/Makefile
arch/sh/mm/alignment.c [new file with mode: 0644]
arch/sh/mm/cache-debugfs.c
arch/sh/mm/cache-sh2.c
arch/sh/mm/cache-sh2a.c
arch/sh/mm/cache-sh3.c
arch/sh/mm/cache-sh4.c
arch/sh/mm/cache-sh7705.c
arch/sh/mm/cache.c
arch/sh/mm/fault_32.c
arch/sh/mm/init.c
arch/sh/mm/ioremap.c [moved from arch/sh/mm/ioremap_32.c with 78% similarity]
arch/sh/mm/ioremap_64.c [deleted file]
arch/sh/mm/ioremap_fixed.c [new file with mode: 0644]
arch/sh/mm/nommu.c
arch/sh/mm/pgtable.c [new file with mode: 0644]
arch/sh/mm/pmb.c
arch/sh/mm/tlb-pteaex.c
arch/sh/mm/tlb-sh3.c
arch/sh/mm/tlb-sh4.c
arch/sh/mm/tlb-sh5.c
arch/sh/mm/tlb-urb.c [new file with mode: 0644]
arch/sh/mm/tlbflush_32.c
arch/sh/mm/tlbflush_64.c
arch/sh/mm/uncached.c [new file with mode: 0644]
arch/sh/tools/mach-types
drivers/clocksource/sh_cmt.c
drivers/clocksource/sh_mtu2.c
drivers/clocksource/sh_tmu.c
drivers/dma/shdma.c
drivers/dma/shdma.h
drivers/mtd/nand/Kconfig
drivers/mtd/nand/sh_flctl.c
drivers/serial/sh-sci.h
drivers/sh/intc.c
drivers/sh/pfc.c
drivers/video/pvr2fb.c
drivers/video/sh_mobile_lcdcfb.c
include/linux/mtd/sh_flctl.h
include/linux/sh_intc.h
include/video/sh_mobile_lcdc.h
lib/Kconfig.debug
mm/Kconfig

index 2121fbb..05cef50 100644 (file)
@@ -13,7 +13,6 @@ config SUPERH
        select HAVE_LMB
        select HAVE_OPROFILE
        select HAVE_GENERIC_DMA_COHERENT
-       select HAVE_IOREMAP_PROT if MMU
        select HAVE_ARCH_TRACEHOOK
        select HAVE_DMA_API_DEBUG
        select HAVE_DMA_ATTRS
@@ -22,6 +21,7 @@ config SUPERH
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
        select HAVE_KERNEL_LZMA
+       select HAVE_KERNEL_LZO
        select HAVE_SYSCALL_TRACEPOINTS
        select RTC_LIB
        select GENERIC_ATOMIC64
@@ -35,6 +35,7 @@ config SUPERH32
        def_bool ARCH = "sh"
        select HAVE_KPROBES
        select HAVE_KRETPROBES
+       select HAVE_IOREMAP_PROT if MMU && !X2TLB
        select HAVE_FUNCTION_TRACER
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_DYNAMIC_FTRACE
@@ -42,6 +43,8 @@ config SUPERH32
        select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_ARCH_KGDB
+       select HAVE_HW_BREAKPOINT
+       select PERF_EVENTS if HAVE_HW_BREAKPOINT
        select ARCH_HIBERNATION_POSSIBLE if MMU
 
 config SUPERH64
@@ -78,11 +81,12 @@ config GENERIC_HARDIRQS
 config GENERIC_HARDIRQS_NO__DO_IRQ
        def_bool y
 
-config GENERIC_IRQ_PROBE
+config IRQ_PER_CPU
        def_bool y
 
-config IRQ_PER_CPU
+config SPARSE_IRQ
        def_bool y
+       depends on SUPERH32
 
 config GENERIC_GPIO
        def_bool n
@@ -548,8 +552,7 @@ config SH_PCLK_FREQ
                              CPU_SUBTYPE_SH7203 || \
                              CPU_SUBTYPE_SH7206 || \
                              CPU_SUBTYPE_SH7263 || \
-                             CPU_SUBTYPE_MXG    || \
-                             CPU_SUBTYPE_SH7786
+                             CPU_SUBTYPE_MXG
        default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R
        default "66000000" if CPU_SUBTYPE_SH4_202
        default "50000000"
@@ -563,7 +566,8 @@ config SH_CLK_CPG
 
 config SH_CLK_CPG_LEGACY
        depends on SH_CLK_CPG
-       def_bool y if !CPU_SUBTYPE_SH7785 && !ARCH_SHMOBILE
+       def_bool y if !CPU_SUBTYPE_SH7785 && !ARCH_SHMOBILE && \
+                     !CPU_SUBTYPE_SH7786
 
 config SH_CLK_MD
        int "CPU Mode Pin Setting"
@@ -725,18 +729,6 @@ config GUSA_RB
          LLSC, this should be more efficient than the other alternative of
          disabling interrupts around the atomic sequence.
 
-config SPARSE_IRQ
-       bool "Support sparse irq numbering"
-       depends on EXPERIMENTAL
-       help
-         This enables support for sparse irqs. This is useful in general
-         as most CPUs have a fairly sparse array of IRQ vectors, which
-         the irq_desc then maps directly on to. Systems with a high
-         number of off-chip IRQs will want to treat this as
-         experimental until they have been independently verified.
-
-         If you don't know what to do here, say N.
-
 endmenu
 
 menu "Boot options"
@@ -822,11 +814,15 @@ config MAPLE
 config PCI
        bool "PCI support"
        depends on SYS_SUPPORTS_PCI
+       select PCI_DOMAINS
        help
          Find out whether you have a PCI motherboard. PCI is the name of a
          bus system, i.e. the way the CPU talks to the other stuff inside
          your box. If you have PCI, say Y, otherwise N.
 
+config PCI_DOMAINS
+       bool
+
 source "drivers/pci/pcie/Kconfig"
 
 source "drivers/pci/Kconfig"
index cd6e3ea..ddf096c 100644 (file)
@@ -68,7 +68,8 @@ config SH_STORE_QUEUES
 
 config SPECULATIVE_EXECUTION
        bool "Speculative subroutine return"
-       depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
+       depends on EXPERIMENTAL
+       depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 || CPU_SUBTYPE_SH7786
        help
          This enables support for a speculative instruction fetch for
          subroutine return. There are various pitfalls associated with
index db91925..588579a 100644 (file)
@@ -83,6 +83,7 @@ defaultimage-$(CONFIG_SH_AP325RXA)            := uImage
 defaultimage-$(CONFIG_SH_7724_SOLUTION_ENGINE) := uImage
 defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux
 defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux
+defaultimage-$(CONFIG_SH_SDK7786)              := vmlinux.bin
 
 # Set some sensible Kbuild defaults
 KBUILD_IMAGE           := $(defaultimage-y)
@@ -143,11 +144,11 @@ machdir-$(CONFIG_SH_AP325RXA)                     += mach-ap325rxa
 machdir-$(CONFIG_SH_KFR2R09)                   += mach-kfr2r09
 machdir-$(CONFIG_SH_ECOVEC)                    += mach-ecovec24
 machdir-$(CONFIG_SH_SDK7780)                   += mach-sdk7780
+machdir-$(CONFIG_SH_SDK7786)                   += mach-sdk7786
 machdir-$(CONFIG_SH_X3PROTO)                   += mach-x3proto
 machdir-$(CONFIG_SH_SH7763RDP)                 += mach-sh7763rdp
 machdir-$(CONFIG_SH_SH4202_MICRODEV)           += mach-microdev
 machdir-$(CONFIG_SH_LANDISK)                   += mach-landisk
-machdir-$(CONFIG_SH_TITAN)                     += mach-titan
 machdir-$(CONFIG_SH_LBOX_RE2)                  += mach-lboxre2
 machdir-$(CONFIG_SH_CAYMAN)                    += mach-cayman
 machdir-$(CONFIG_SH_RSK)                       += mach-rsk
@@ -203,8 +204,9 @@ endif
 libs-$(CONFIG_SUPERH32)                := arch/sh/lib/ $(libs-y)
 libs-$(CONFIG_SUPERH64)                := arch/sh/lib64/ $(libs-y)
 
-BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec uImage.bin \
-              zImage vmlinux.srec romImage
+BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.lzo \
+              uImage.srec uImage.bin zImage vmlinux.bin vmlinux.srec \
+              romImage
 PHONY += $(BOOT_TARGETS)
 
 all: $(KBUILD_IMAGE)
@@ -225,10 +227,12 @@ define archhelp
        @echo '  zImage                    - Compressed kernel image'
        @echo '  romImage                  - Compressed ROM image, if supported'
        @echo '  vmlinux.srec              - Create an ELF S-record'
+       @echo '  vmlinux.bin               - Create an uncompressed binary image'
        @echo '* uImage                    - Alias to bootable U-Boot image'
        @echo '  uImage.srec               - Create an S-record for U-Boot'
        @echo '  uImage.bin                - Kernel-only image for U-Boot (bin)'
        @echo '* uImage.gz                 - Kernel-only image for U-Boot (gzip)'
        @echo '  uImage.bz2                - Kernel-only image for U-Boot (bzip2)'
        @echo '  uImage.lzma               - Kernel-only image for U-Boot (lzma)'
+       @echo '  uImage.lzo                - Kernel-only image for U-Boot (lzo)'
 endef
index aedd9de..938e87d 100644 (file)
@@ -150,6 +150,14 @@ config SH_SDK7780
          Select SDK7780 if configuring for a Renesas SH7780 SDK7780R3
          evaluation board.
 
+config SH_SDK7786
+       bool "SDK7786"
+       depends on CPU_SUBTYPE_SH7786
+       select SYS_SUPPORTS_PCI
+       help
+         Select SDK7786 if configuring for a Renesas Technology Europe
+         SH7786-65nm board.
+
 config SH_HIGHLANDER
        bool "Highlander"
        depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
index ce0f263..4f90f9b 100644 (file)
@@ -8,3 +8,4 @@ obj-$(CONFIG_SH_SHMIN)          += board-shmin.o
 obj-$(CONFIG_SH_EDOSK7760)     += board-edosk7760.o
 obj-$(CONFIG_SH_ESPT)          += board-espt.o
 obj-$(CONFIG_SH_POLARIS)       += board-polaris.o
+obj-$(CONFIG_SH_TITAN)         += board-titan.o
index 99ffc5f..efba450 100644 (file)
@@ -23,7 +23,7 @@
 #include <asm/heartbeat.h>
 #include <cpu/sh7720.h>
 
-#define LAN9115_READY  (ctrl_inl(0xA8000084UL) & 0x00000001UL)
+#define LAN9115_READY  (__raw_readl(0xA8000084UL) & 0x00000001UL)
 
 /* Prefer cmdline over RedBoot */
 static const char *probes[] = { "cmdlinepart", "RedBoot", NULL };
@@ -60,33 +60,33 @@ static void __init setup_chip_select(void)
 {
        /* CS2: LAN (0x08000000 - 0x0bffffff) */
        /* no idle cycles, normal space, 8 bit data bus */
-       ctrl_outl(0x36db0400, CS2BCR);
+       __raw_writel(0x36db0400, CS2BCR);
        /* (SW:1.5 WR:3 HW:1.5), ext. wait */
-       ctrl_outl(0x000003c0, CS2WCR);
+       __raw_writel(0x000003c0, CS2WCR);
 
        /* CS4: CAN1 (0xb0000000 - 0xb3ffffff) */
        /* no idle cycles, normal space, 8 bit data bus */
-       ctrl_outl(0x00000200, CS4BCR);
+       __raw_writel(0x00000200, CS4BCR);
        /* (SW:1.5 WR:3 HW:1.5), ext. wait */
-       ctrl_outl(0x00100981, CS4WCR);
+       __raw_writel(0x00100981, CS4WCR);
 
        /* CS5a: CAN2 (0xb4000000 - 0xb5ffffff) */
        /* no idle cycles, normal space, 8 bit data bus */
-       ctrl_outl(0x00000200, CS5ABCR);
+       __raw_writel(0x00000200, CS5ABCR);
        /* (SW:1.5 WR:3 HW:1.5), ext. wait */
-       ctrl_outl(0x00100981, CS5AWCR);
+       __raw_writel(0x00100981, CS5AWCR);
 
        /* CS5b: CAN3 (0xb6000000 - 0xb7ffffff) */
        /* no idle cycles, normal space, 8 bit data bus */
-       ctrl_outl(0x00000200, CS5BBCR);
+       __raw_writel(0x00000200, CS5BBCR);
        /* (SW:1.5 WR:3 HW:1.5), ext. wait */
-       ctrl_outl(0x00100981, CS5BWCR);
+       __raw_writel(0x00100981, CS5BWCR);
 
        /* CS6a: Rotary (0xb8000000 - 0xb9ffffff) */
        /* no idle cycles, normal space, 8 bit data bus */
-       ctrl_outl(0x00000200, CS6ABCR);
+       __raw_writel(0x00000200, CS6ABCR);
        /* (SW:1.5 WR:3 HW:1.5), no ext. wait */
-       ctrl_outl(0x001009C1, CS6AWCR);
+       __raw_writel(0x001009C1, CS6AWCR);
 }
 
 static void __init setup_port_multiplexing(void)
@@ -94,71 +94,71 @@ static void __init setup_port_multiplexing(void)
        /* A7 GPO(LED8);     A6 GPO(LED7);     A5 GPO(LED6);      A4 GPO(LED5);
         * A3 GPO(LED4);     A2 GPO(LED3);     A1 GPO(LED2);      A0 GPO(LED1);
         */
-       ctrl_outw(0x5555, PORT_PACR);   /* 01 01 01 01 01 01 01 01 */
+       __raw_writew(0x5555, PORT_PACR);        /* 01 01 01 01 01 01 01 01 */
 
        /* B7 GPO(RST4);   B6 GPO(RST3);  B5 GPO(RST2);    B4 GPO(RST1);
         * B3 GPO(PB3);    B2 GPO(PB2);   B1 GPO(PB1);     B0 GPO(PB0);
         */
-       ctrl_outw(0x5555, PORT_PBCR);   /* 01 01 01 01 01 01 01 01 */
+       __raw_writew(0x5555, PORT_PBCR);        /* 01 01 01 01 01 01 01 01 */
 
        /* C7 GPO(PC7);   C6 GPO(PC6);    C5 GPO(PC5);     C4 GPO(PC4);
         * C3 LCD_DATA3;  C2 LCD_DATA2;   C1 LCD_DATA1;    C0 LCD_DATA0;
         */
-       ctrl_outw(0x5500, PORT_PCCR);   /* 01 01 01 01 00 00 00 00 */
+       __raw_writew(0x5500, PORT_PCCR);        /* 01 01 01 01 00 00 00 00 */
 
        /* D7 GPO(PD7); D6 GPO(PD6);    D5 GPO(PD5);       D4 GPO(PD4);
         * D3 GPO(PD3); D2 GPO(PD2);    D1 GPO(PD1);       D0 GPO(PD0);
         */
-       ctrl_outw(0x5555, PORT_PDCR);   /* 01 01 01 01 01 01 01 01 */
+       __raw_writew(0x5555, PORT_PDCR);        /* 01 01 01 01 01 01 01 01 */
 
        /* E7 (x);        E6 GPI(nu);    E5 GPI(nu);      E4 LCD_M_DISP;
         * E3 LCD_CL1;    E2 LCD_CL2;    E1 LCD_DON;      E0 LCD_FLM;
         */
-       ctrl_outw(0x3C00, PORT_PECR);   /* 00 11 11 00 00 00 00 00 */
+       __raw_writew(0x3C00, PORT_PECR);        /* 00 11 11 00 00 00 00 00 */
 
        /* F7 (x);           F6 DA1(VLCD);     F5 DA0(nc);        F4 AN3;
         * F3 AN2(MID_AD);   F2 AN1(EARTH_AD); F1 AN0(TEMP);      F0 GPI+(nc);
         */
-       ctrl_outw(0x0002, PORT_PFCR);   /* 00 00 00 00 00 00 00 10 */
+       __raw_writew(0x0002, PORT_PFCR);        /* 00 00 00 00 00 00 00 10 */
 
        /* G7 (x);        G6 IRQ5(TOUCH_BUSY); G5 IRQ4(TOUCH_IRQ); G4 GPI(KEY2);
         * G3 GPI(KEY1);  G2 GPO(LED11);        G1 GPO(LED10);     G0 GPO(LED9);
         */
-       ctrl_outw(0x03D5, PORT_PGCR);   /* 00 00 00 11 11 01 01 01 */
+       __raw_writew(0x03D5, PORT_PGCR);        /* 00 00 00 11 11 01 01 01 */
 
        /* H7 (x);            H6 /RAS(BRAS);      H5 /CAS(BCAS); H4 CKE(BCKE);
         * H3 GPO(EARTH_OFF); H2 GPO(EARTH_TEST); H1 USB2_PWR;   H0 USB1_PWR;
         */
-       ctrl_outw(0x0050, PORT_PHCR);   /* 00 00 00 00 01 01 00 00 */
+       __raw_writew(0x0050, PORT_PHCR);        /* 00 00 00 00 01 01 00 00 */
 
        /* J7 (x);        J6 AUDCK;        J5 ASEBRKAK;     J4 AUDATA3;
         * J3 AUDATA2;    J2 AUDATA1;      J1 AUDATA0;      J0 AUDSYNC;
         */
-       ctrl_outw(0x0000, PORT_PJCR);   /* 00 00 00 00 00 00 00 00 */
+       __raw_writew(0x0000, PORT_PJCR);        /* 00 00 00 00 00 00 00 00 */
 
        /* K7 (x);          K6 (x);          K5 (x);       K4 (x);
         * K3 PINT7(/PWR2); K2 PINT6(/PWR1); K1 PINT5(nu); K0 PINT4(FLASH_READY)
         */
-       ctrl_outw(0x00FF, PORT_PKCR);   /* 00 00 00 00 11 11 11 11 */
+       __raw_writew(0x00FF, PORT_PKCR);        /* 00 00 00 00 11 11 11 11 */
 
        /* L7 TRST;        L6 TMS;           L5 TDO;              L4 TDI;
         * L3 TCK;         L2 (x);           L1 (x);              L0 (x);
         */
-       ctrl_outw(0x0000, PORT_PLCR);   /* 00 00 00 00 00 00 00 00 */
+       __raw_writew(0x0000, PORT_PLCR);        /* 00 00 00 00 00 00 00 00 */
 
        /* M7 GPO(CURRENT_SINK);    M6 GPO(PWR_SWITCH);     M5 GPO(LAN_SPEED);
         * M4 GPO(LAN_RESET);       M3 GPO(BUZZER);         M2 GPO(LCD_BL);
         * M1 CS5B(CAN3_CS);        M0 GPI+(nc);
         */
-       ctrl_outw(0x5552, PORT_PMCR);      /* 01 01 01 01 01 01 00 10 */
+       __raw_writew(0x5552, PORT_PMCR);           /* 01 01 01 01 01 01 00 10 */
 
        /* CURRENT_SINK=off,    PWR_SWITCH=off, LAN_SPEED=100MBit,
         * LAN_RESET=off,       BUZZER=off,     LCD_BL=off
         */
 #if CONFIG_SH_MAGIC_PANEL_R2_VERSION == 2
-       ctrl_outb(0x30, PORT_PMDR);
+       __raw_writeb(0x30, PORT_PMDR);
 #elif CONFIG_SH_MAGIC_PANEL_R2_VERSION == 3
-       ctrl_outb(0xF0, PORT_PMDR);
+       __raw_writeb(0xF0, PORT_PMDR);
 #else
 #error Unknown revision of PLATFORM_MP_R2
 #endif
@@ -167,8 +167,8 @@ static void __init setup_port_multiplexing(void)
         * P4 GPO(nu);         P3 IRQ3(LAN_IRQ);  P2 IRQ2(CAN3_IRQ);
         * P1 IRQ1(CAN2_IRQ);  P0 IRQ0(CAN1_IRQ)
         */
-       ctrl_outw(0x0100, PORT_PPCR);   /* 00 00 00 01 00 00 00 00 */
-       ctrl_outb(0x10, PORT_PPDR);
+       __raw_writew(0x0100, PORT_PPCR);        /* 00 00 00 01 00 00 00 00 */
+       __raw_writeb(0x10, PORT_PPDR);
 
        /* R7 A25;           R6 A24;         R5 A23;              R4 A22;
         * R3 A21;           R2 A20;         R1 A19;              R0 A0;
@@ -185,22 +185,22 @@ static void __init setup_port_multiplexing(void)
        /* S7 (x);              S6 (x);        S5 (x);       S4 GPO(EEPROM_CS2);
         * S3 GPO(EEPROM_CS1);  S2 SIOF0_TXD;  S1 SIOF0_RXD; S0 SIOF0_SCK;
         */
-       ctrl_outw(0x0140, PORT_PSCR);   /* 00 00 00 01 01 00 00 00 */
+       __raw_writew(0x0140, PORT_PSCR);        /* 00 00 00 01 01 00 00 00 */
 
        /* T7 (x);         T6 (x);        T5 (x);         T4 COM1_CTS;
         * T3 COM1_RTS;    T2 COM1_TXD;   T1 COM1_RXD;    T0 GPO(WDOG)
         */
-       ctrl_outw(0x0001, PORT_PTCR);   /* 00 00 00 00 00 00 00 01 */
+       __raw_writew(0x0001, PORT_PTCR);        /* 00 00 00 00 00 00 00 01 */
 
        /* U7 (x);           U6 (x);       U5 (x);        U4 GPI+(/AC_FAULT);
         * U3 GPO(TOUCH_CS); U2 TOUCH_TXD; U1 TOUCH_RXD;  U0 TOUCH_SCK;
         */
-       ctrl_outw(0x0240, PORT_PUCR);   /* 00 00 00 10 01 00 00 00 */
+       __raw_writew(0x0240, PORT_PUCR);        /* 00 00 00 10 01 00 00 00 */
 
        /* V7 (x);        V6 (x);       V5 (x);           V4 GPO(MID2);
         * V3 GPO(MID1);  V2 CARD_TxD;  V1 CARD_RxD;      V0 GPI+(/BAT_FAULT);
         */
-       ctrl_outw(0x0142, PORT_PVCR);   /* 00 00 00 01 01 00 00 10 */
+       __raw_writew(0x0142, PORT_PVCR);        /* 00 00 00 01 01 00 00 10 */
 }
 
 static void __init mpr2_setup(char **cmdline_p)
@@ -209,24 +209,24 @@ static void __init mpr2_setup(char **cmdline_p)
         * /PCC_CD1, /PCC_CD2,  PCC_BVD1, PCC_BVD2,
         * /IOIS16,  IRQ4,      IRQ5,     USB1d_SUSPEND
         */
-       ctrl_outw(0xAABC, PORT_PSELA);
+       __raw_writew(0xAABC, PORT_PSELA);
        /* set Pin Select Register B:
         * /SCIF0_RTS, /SCIF0_CTS, LCD_VCPWC,
         * LCD_VEPWC,  IIC_SDA,    IIC_SCL, Reserved
         */
-       ctrl_outw(0x3C00, PORT_PSELB);
+       __raw_writew(0x3C00, PORT_PSELB);
        /* set Pin Select Register C:
         * SIOF1_SCK, SIOF1_RxD, SCIF1_RxD, SCIF1_TxD, Reserved
         */
-       ctrl_outw(0x0000, PORT_PSELC);
+       __raw_writew(0x0000, PORT_PSELC);
        /* set Pin Select Register D: Reserved, SIOF1_TxD, Reserved, SIOF1_MCLK,
         * Reserved, SIOF1_SYNC, Reserved, SCIF1_SCK, Reserved
         */
-       ctrl_outw(0x0000, PORT_PSELD);
+       __raw_writew(0x0000, PORT_PSELD);
        /* set USB TxRx Control: Reserved, DRV, Reserved, USB_TRANS, USB_SEL */
-       ctrl_outw(0x0101, PORT_UTRCTL);
+       __raw_writew(0x0101, PORT_UTRCTL);
        /* set USB Clock Control: USSCS, USSTB, Reserved (HighByte always A5) */
-       ctrl_outw(0xA5C0, PORT_UCLKCR_W);
+       __raw_writew(0xA5C0, PORT_UCLKCR_W);
 
        setup_chip_select();
 
index 62607eb..5948663 100644 (file)
@@ -59,15 +59,12 @@ static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3 };
 static struct heartbeat_data heartbeat_data = {
        .bit_pos        = heartbeat_bit_pos,
        .nr_bits        = ARRAY_SIZE(heartbeat_bit_pos),
-       .regsize        = 8,
 };
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PORT_PCDR,
-               .end    = PORT_PCDR,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PORT_PCDR,
+       .end    = PORT_PCDR,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_8BIT,
 };
 
 static struct platform_device heartbeat_device = {
@@ -76,8 +73,8 @@ static struct platform_device heartbeat_device = {
        .dev    = {
                .platform_data  = &heartbeat_data,
        },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 static struct platform_device *polaris_devices[] __initdata = {
@@ -92,15 +89,15 @@ static int __init polaris_initialise(void)
        printk(KERN_INFO "Configuring Polaris external bus\n");
 
        /* Configure area 5 with 2 wait states */
-       wcr = ctrl_inw(WCR2);
+       wcr = __raw_readw(WCR2);
        wcr &= (~AREA5_WAIT_CTRL);
        wcr |= (WAIT_STATES_10 << 10);
-       ctrl_outw(wcr, WCR2);
+       __raw_writew(wcr, WCR2);
 
        /* Configure area 5 for 32-bit access */
-       bcr_mask = ctrl_inw(BCR2);
+       bcr_mask = __raw_readw(BCR2);
        bcr_mask |= 1 << 10;
-       ctrl_outw(bcr_mask, BCR2);
+       __raw_writew(bcr_mask, BCR2);
 
        return platform_add_devices(polaris_devices,
                                    ARRAY_SIZE(polaris_devices));
@@ -131,13 +128,13 @@ static struct ipr_desc ipr_irq_desc = {
 static void __init init_polaris_irq(void)
 {
        /* Disable all interrupts */
-       ctrl_outw(0, BCR_ILCRA);
-       ctrl_outw(0, BCR_ILCRB);
-       ctrl_outw(0, BCR_ILCRC);
-       ctrl_outw(0, BCR_ILCRD);
-       ctrl_outw(0, BCR_ILCRE);
-       ctrl_outw(0, BCR_ILCRF);
-       ctrl_outw(0, BCR_ILCRG);
+       __raw_writew(0, BCR_ILCRA);
+       __raw_writew(0, BCR_ILCRB);
+       __raw_writew(0, BCR_ILCRC);
+       __raw_writew(0, BCR_ILCRD);
+       __raw_writew(0, BCR_ILCRE);
+       __raw_writew(0, BCR_ILCRF);
+       __raw_writew(0, BCR_ILCRG);
 
        register_ipr_controller(&ipr_irq_desc);
 }
index e5a8a2f..fe7e686 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/i2c-algo-pca.h>
 #include <linux/usb/r8a66597.h>
 #include <linux/irq.h>
+#include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/errno.h>
 #include <mach/sh7785lcr.h>
  * NOTE: This board has 2 physical memory maps.
  *      Please look at include/asm-sh/sh7785lcr.h or hardware manual.
  */
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PLD_LEDCR,
-               .end    = PLD_LEDCR,
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 8,
+static struct resource heartbeat_resource = {
+       .start  = PLD_LEDCR,
+       .end    = PLD_LEDCR,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_8BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev    = {
-               .platform_data  = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 static struct mtd_partition nor_flash_partitions[] = {
@@ -341,8 +333,14 @@ static void __init sh7785lcr_setup(char **cmdline_p)
        pm_power_off = sh7785lcr_power_off;
 
        /* sm501 DRAM configuration */
-       sm501_reg = (void __iomem *)0xb3e00000 + SM501_DRAM_CONTROL;
-       writel(0x000307c2, sm501_reg);
+       sm501_reg = ioremap_nocache(SM107_REG_ADDR, SM501_DRAM_CONTROL);
+       if (!sm501_reg) {
+               printk(KERN_ERR "%s: ioremap error.\n", __func__);
+               return;
+       }
+
+       writel(0x000307c2, sm501_reg + SM501_DRAM_CONTROL);
+       iounmap(sm501_reg);
 }
 
 /* Return the board specific boot mode pin configuration */
index b1dcbbc..325bed5 100644 (file)
@@ -17,8 +17,8 @@
 
 static void __init init_shmin_irq(void)
 {
-       ctrl_outw(0x2a00, PFC_PHCR);    // IRQ0-3=IRQ
-       ctrl_outw(0x0aaa, INTC_ICR1);   // IRQ0-3=IRQ-mode,Low-active.
+       __raw_writew(0x2a00, PFC_PHCR); // IRQ0-3=IRQ
+       __raw_writew(0x0aaa, INTC_ICR1);        // IRQ0-3=IRQ-mode,Low-active.
        plat_irq_setup_pins(IRQ_MODE_IRQ);
 }
 
diff --git a/arch/sh/boards/board-titan.c b/arch/sh/boards/board-titan.c
new file mode 100644 (file)
index 0000000..94c36c7
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * arch/sh/boards/titan/setup.c - Setup for Titan
+ *
+ *  Copyright (C) 2006  Jamie Lenehan
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#include <linux/init.h>
+#include <linux/irq.h>
+#include <mach/titan.h>
+#include <asm/io.h>
+
+static void __init init_titan_irq(void)
+{
+       /* enable individual interrupt mode for externals */
+       plat_irq_setup_pins(IRQ_MODE_IRQ);
+}
+
+static struct sh_machine_vector mv_titan __initmv = {
+       .mv_name        = "Titan",
+       .mv_init_irq    = init_titan_irq,
+};
index 36b8bac..a9bd6e3 100644 (file)
@@ -2,7 +2,7 @@
  * Renesas Technology Corp. SH7786 Urquell Support.
  *
  * Copyright (C) 2008  Kuninori Morimoto <morimoto.kuninori@renesas.com>
- * Copyright (C) 2009  Paul Mundt
+ * Copyright (C) 2009, 2010  Paul Mundt
  *
  * Based on board-sh7785lcr.c
  * Copyright (C) 2008  Yoshihiro Shimoda
@@ -19,6 +19,7 @@
 #include <linux/delay.h>
 #include <linux/gpio.h>
 #include <linux/irq.h>
+#include <linux/clk.h>
 #include <mach/urquell.h>
 #include <cpu/sh7786.h>
 #include <asm/heartbeat.h>
  */
 
 /* HeartBeat */
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = BOARDREG(SLEDR),
-               .end    = BOARDREG(SLEDR),
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
+static struct resource heartbeat_resource = {
+       .start  = BOARDREG(SLEDR),
+       .end    = BOARDREG(SLEDR),
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev    = {
-               .platform_data  = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* LAN91C111 */
@@ -184,6 +176,27 @@ static int urquell_mode_pins(void)
        return __raw_readw(UBOARDREG(MDSWMR));
 }
 
+static int urquell_clk_init(void)
+{
+       struct clk *clk;
+       int ret;
+
+       /*
+        * Only handle the EXTAL case, anyone interfacing a crystal
+        * resonator will need to provide their own input clock.
+        */
+       if (test_mode_pin(MODE_PIN9))
+               return -EINVAL;
+
+       clk = clk_get(NULL, "extal");
+       if (!clk || IS_ERR(clk))
+               return PTR_ERR(clk);
+       ret = clk_set_rate(clk, 33333333);
+       clk_put(clk);
+
+       return ret;
+}
+
 /* Initialize the board */
 static void __init urquell_setup(char **cmdline_p)
 {
@@ -200,4 +213,5 @@ static struct sh_machine_vector mv_urquell __initmv = {
        .mv_setup       = urquell_setup,
        .mv_init_irq    = urquell_init_irq,
        .mv_mode_pins   = urquell_mode_pins,
+       .mv_clk_init    = urquell_clk_init,
 };
index 1f5fa5c..b598069 100644 (file)
@@ -159,21 +159,21 @@ static void ap320_wvga_power_on(void *board_data)
        msleep(100);
 
        /* ASD AP-320/325 LCD ON */
-       ctrl_outw(FPGA_LCDREG_VAL, FPGA_LCDREG);
+       __raw_writew(FPGA_LCDREG_VAL, FPGA_LCDREG);
 
        /* backlight */
        gpio_set_value(GPIO_PTS3, 0);
-       ctrl_outw(0x100, FPGA_BKLREG);
+       __raw_writew(0x100, FPGA_BKLREG);
 }
 
 static void ap320_wvga_power_off(void *board_data)
 {
        /* backlight */
-       ctrl_outw(0, FPGA_BKLREG);
+       __raw_writew(0, FPGA_BKLREG);
        gpio_set_value(GPIO_PTS3, 1);
 
        /* ASD AP-320/325 LCD OFF */
-       ctrl_outw(0, FPGA_LCDREG);
+       __raw_writew(0, FPGA_LCDREG);
 }
 
 static struct sh_mobile_lcdc_info lcdc_info = {
@@ -420,7 +420,7 @@ static struct resource sdhi0_cn3_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 101,
+               .start  = 100,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -443,7 +443,7 @@ static struct resource sdhi1_cn7_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 24,
+               .start  = 23,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -595,7 +595,7 @@ static int __init ap325rxa_devices_setup(void)
        gpio_request(GPIO_PTZ4, NULL);
        gpio_direction_output(GPIO_PTZ4, 0); /* SADDR */
 
-       ctrl_outw(ctrl_inw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB);
+       __raw_writew(__raw_readw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB);
 
        /* FLCTL */
        gpio_request(GPIO_FN_FCE, NULL);
@@ -613,9 +613,9 @@ static int __init ap325rxa_devices_setup(void)
        gpio_request(GPIO_FN_FWE, NULL);
        gpio_request(GPIO_FN_FRB, NULL);
 
-       ctrl_outw(0, PORT_HIZCRC);
-       ctrl_outw(0xFFFF, PORT_DRVCRA);
-       ctrl_outw(0xFFFF, PORT_DRVCRB);
+       __raw_writew(0, PORT_HIZCRC);
+       __raw_writew(0xFFFF, PORT_DRVCRA);
+       __raw_writew(0xFFFF, PORT_DRVCRB);
 
        platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20);
 
index 33f7708..1394b07 100644 (file)
@@ -66,9 +66,9 @@ static void enable_cayman_irq(unsigned int irq)
        reg = EPLD_MASK_BASE + ((irq / 8) << 2);
        bit = 1<<(irq % 8);
        local_irq_save(flags);
-       mask = ctrl_inl(reg);
+       mask = __raw_readl(reg);
        mask |= bit;
-       ctrl_outl(mask, reg);
+       __raw_writel(mask, reg);
        local_irq_restore(flags);
 }
 
@@ -83,9 +83,9 @@ void disable_cayman_irq(unsigned int irq)
        reg = EPLD_MASK_BASE + ((irq / 8) << 2);
        bit = 1<<(irq % 8);
        local_irq_save(flags);
-       mask = ctrl_inl(reg);
+       mask = __raw_readl(reg);
        mask &= ~bit;
-       ctrl_outl(mask, reg);
+       __raw_writel(mask, reg);
        local_irq_restore(flags);
 }
 
@@ -109,8 +109,8 @@ int cayman_irq_demux(int evt)
                unsigned long status;
                int i;
 
-               status = ctrl_inl(EPLD_STATUS_BASE) &
-                        ctrl_inl(EPLD_MASK_BASE) & 0xff;
+               status = __raw_readl(EPLD_STATUS_BASE) &
+                        __raw_readl(EPLD_MASK_BASE) & 0xff;
                if (status == 0) {
                        irq = -1;
                } else {
@@ -126,8 +126,8 @@ int cayman_irq_demux(int evt)
                unsigned long status;
                int i;
 
-               status = ctrl_inl(EPLD_STATUS_BASE + 3 * sizeof(u32)) &
-                        ctrl_inl(EPLD_MASK_BASE + 3 * sizeof(u32)) & 0xff;
+               status = __raw_readl(EPLD_STATUS_BASE + 3 * sizeof(u32)) &
+                        __raw_readl(EPLD_MASK_BASE + 3 * sizeof(u32)) & 0xff;
                if (status == 0) {
                        irq = -1;
                } else {
index f55fc8e..d932667 100644 (file)
@@ -135,3 +135,30 @@ int systemasic_irq_demux(int irq)
        /* Not reached */
        return irq;
 }
+
+void systemasic_irq_init(void)
+{
+       int i, nid = cpu_to_node(boot_cpu_data);
+
+       /* Assign all virtual IRQs to the System ASIC int. handler */
+       for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++) {
+               unsigned int irq;
+
+               irq = create_irq_nr(i, nid);
+               if (unlikely(irq == 0)) {
+                       pr_err("%s: failed hooking irq %d for systemasic\n",
+                              __func__, i);
+                       return;
+               }
+
+               if (unlikely(irq != i)) {
+                       pr_err("%s: got irq %d but wanted %d, bailing.\n",
+                              __func__, irq, i);
+                       destroy_irq(irq);
+                       return;
+               }
+
+               set_irq_chip_and_handler(i, &systemasic_int,
+                                        handle_level_irq);
+       }
+}
index a743368..061d657 100644 (file)
@@ -35,11 +35,11 @@ static void aica_rtc_gettimeofday(struct timespec *ts)
        unsigned long val1, val2;
 
        do {
-               val1 = ((ctrl_inl(AICA_RTC_SECS_H) & 0xffff) << 16) |
-                       (ctrl_inl(AICA_RTC_SECS_L) & 0xffff);
+               val1 = ((__raw_readl(AICA_RTC_SECS_H) & 0xffff) << 16) |
+                       (__raw_readl(AICA_RTC_SECS_L) & 0xffff);
 
-               val2 = ((ctrl_inl(AICA_RTC_SECS_H) & 0xffff) << 16) |
-                       (ctrl_inl(AICA_RTC_SECS_L) & 0xffff);
+               val2 = ((__raw_readl(AICA_RTC_SECS_H) & 0xffff) << 16) |
+                       (__raw_readl(AICA_RTC_SECS_L) & 0xffff);
        } while (val1 != val2);
 
        ts->tv_sec = val1 - TWENTY_YEARS;
@@ -60,14 +60,14 @@ static int aica_rtc_settimeofday(const time_t secs)
        unsigned long adj = secs + TWENTY_YEARS;
 
        do {
-               ctrl_outl((adj & 0xffff0000) >> 16, AICA_RTC_SECS_H);
-               ctrl_outl((adj & 0xffff), AICA_RTC_SECS_L);
+               __raw_writel((adj & 0xffff0000) >> 16, AICA_RTC_SECS_H);
+               __raw_writel((adj & 0xffff), AICA_RTC_SECS_L);
 
-               val1 = ((ctrl_inl(AICA_RTC_SECS_H) & 0xffff) << 16) |
-                       (ctrl_inl(AICA_RTC_SECS_L) & 0xffff);
+               val1 = ((__raw_readl(AICA_RTC_SECS_H) & 0xffff) << 16) |
+                       (__raw_readl(AICA_RTC_SECS_L) & 0xffff);
 
-               val2 = ((ctrl_inl(AICA_RTC_SECS_H) & 0xffff) << 16) |
-                       (ctrl_inl(AICA_RTC_SECS_L) & 0xffff);
+               val2 = ((__raw_readl(AICA_RTC_SECS_H) & 0xffff) << 16) |
+                       (__raw_readl(AICA_RTC_SECS_L) & 0xffff);
        } while (val1 != val2);
 
        return 0;
index a4b7402..ad1a4db 100644 (file)
 #include <asm/machvec.h>
 #include <mach/sysasic.h>
 
-extern struct irq_chip systemasic_int;
-extern void aica_time_init(void);
-extern int systemasic_irq_demux(int);
-
 static void __init dreamcast_setup(char **cmdline_p)
 {
-       int i;
-
-       /* Mask all hardware events */
-       /* XXX */
-
-       /* Acknowledge any previous events */
-       /* XXX */
-
-       /* Assign all virtual IRQs to the System ASIC int. handler */
-       for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++)
-               set_irq_chip_and_handler(i, &systemasic_int,
-                                        handle_level_irq);
-
        board_time_init = aica_time_init;
 }
 
@@ -54,4 +37,5 @@ static struct sh_machine_vector mv_dreamcast __initmv = {
        .mv_name                = "Sega Dreamcast",
        .mv_setup               = dreamcast_setup,
        .mv_irq_demux           = systemasic_irq_demux,
+       .mv_init_irq            = systemasic_irq_init,
 };
index 8334400..3963c6f 100644 (file)
@@ -37,6 +37,10 @@ ENTRY(ecovec24_sdram_enter_end)
        .balign 4
 ENTRY(ecovec24_sdram_leave_start)
 
+       mov.l   @(SH_SLEEP_MODE, r5), r0
+       tst     #SUSP_SH_RSTANDBY, r0
+       bf      resume_rstandby
+
        /* DBSC: put memory in auto-refresh mode */
 
        ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
@@ -49,4 +53,59 @@ ENTRY(ecovec24_sdram_leave_start)
        rts
         nop
 
+resume_rstandby:
+
+       /* DBSC: re-initialize and put in auto-refresh */
+
+       ED 0xFD000108, 0x00000181 /* DBPDCNT0 */
+       ED 0xFD000020, 0x015B0002 /* DBCONF */
+       ED 0xFD000030, 0x03071502 /* DBTR0 */
+       ED 0xFD000034, 0x02020102 /* DBTR1 */
+       ED 0xFD000038, 0x01090405 /* DBTR2 */
+       ED 0xFD00003C, 0x00000002 /* DBTR3 */
+       ED 0xFD000008, 0x00000005 /* DBKIND */
+       ED 0xFD000040, 0x00000001 /* DBRFPDN0 */
+       ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
+       ED 0xFD000018, 0x00000001 /* DBCKECNT */
+
+       mov     #100,r0
+WAIT_400NS:
+       dt      r0
+       bf      WAIT_400NS
+
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000060, 0x00020000 /* DBMRCNT (EMR2) */
+       ED 0xFD000060, 0x00030000 /* DBMRCNT (EMR3) */
+       ED 0xFD000060, 0x00010004 /* DBMRCNT (EMR) */
+       ED 0xFD000060, 0x00000532 /* DBMRCNT (MRS) */
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000060, 0x00000432 /* DBMRCNT (MRS) */
+       ED 0xFD000060, 0x000103c0 /* DBMRCNT (EMR) */
+       ED 0xFD000060, 0x00010040 /* DBMRCNT (EMR) */
+
+       mov     #100,r0
+WAIT_400NS_2:
+       dt      r0
+       bf      WAIT_400NS_2
+
+       ED 0xFD000010, 0x00000001 /* DBEN */
+       ED 0xFD000044, 0x0000050f /* DBRFPDN1 */
+       ED 0xFD000048, 0x236800e6 /* DBRFPDN2 */
+
+       mov.l   DUMMY,r0
+       mov.l   @r0, r1 /* force single dummy read */
+
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000108, 0x00000080 /* DBPDCNT0 */
+       ED 0xFD000040, 0x00010000 /* DBRFPDN0 */
+
+       rts
+        nop
+
+       .balign 4
+DUMMY: .long   0xac400000
+
 ENTRY(ecovec24_sdram_leave_end)
index 5c24628..39ed872 100644 (file)
 
 /* Heartbeat */
 static unsigned char led_pos[] = { 0, 1, 2, 3 };
+
 static struct heartbeat_data heartbeat_data = {
-       .regsize = 8,
        .nr_bits = 4,
        .bit_pos = led_pos,
 };
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = 0xA405012C, /* PTG */
-               .end    = 0xA405012E - 1,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = 0xA405012C, /* PTG */
+       .end    = 0xA405012E - 1,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_8BIT,
 };
 
 static struct platform_device heartbeat_device = {
@@ -84,8 +82,8 @@ static struct platform_device heartbeat_device = {
        .dev = {
                .platform_data = &heartbeat_data,
        },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* MTD */
@@ -455,7 +453,7 @@ static struct resource sdhi0_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 101,
+               .start  = 100,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -491,7 +489,7 @@ static struct resource sdhi1_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 24,
+               .start  = 23,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -698,13 +696,13 @@ static struct platform_device camera_devices[] = {
 #define FCLKBCR                0xa415000c
 static void fsimck_init(struct clk *clk)
 {
-       u32 status = ctrl_inl(clk->enable_reg);
+       u32 status = __raw_readl(clk->enable_reg);
 
        /* use external clock */
        status &= ~0x000000ff;
        status |= 0x00000080;
 
-       ctrl_outl(status, clk->enable_reg);
+       __raw_writel(status, clk->enable_reg);
 }
 
 static struct clk_ops fsimck_clk_ops = {
@@ -753,6 +751,26 @@ static struct platform_device fsi_device = {
        },
 };
 
+/* IrDA */
+static struct resource irda_resources[] = {
+       [0] = {
+               .name   = "IrDA",
+               .start  = 0xA45D0000,
+               .end    = 0xA45D0049,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = 20,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device irda_device = {
+       .name           = "sh_sir",
+       .num_resources  = ARRAY_SIZE(irda_resources),
+       .resource       = irda_resources,
+};
+
 static struct platform_device *ecovec_devices[] __initdata = {
        &heartbeat_device,
        &nor_flash_device,
@@ -773,8 +791,10 @@ static struct platform_device *ecovec_devices[] __initdata = {
        &camera_devices[1],
        &camera_devices[2],
        &fsi_device,
+       &irda_device,
 };
 
+#ifdef CONFIG_I2C
 #define EEPROM_ADDR 0x50
 static u8 mac_read(struct i2c_adapter *a, u8 command)
 {
@@ -817,6 +837,12 @@ static void __init sh_eth_init(struct sh_eth_plat_data *pd)
                msleep(10);
        }
 }
+#else
+static void __init sh_eth_init(struct sh_eth_plat_data *pd)
+{
+       pr_err("unable to read sh_eth MAC address\n");
+}
+#endif
 
 #define PORT_HIZA 0xA4050158
 #define IODRIVEA  0xA405018A
@@ -831,7 +857,8 @@ static int __init arch_setup(void)
        struct clk *clk;
 
        /* register board specific self-refresh code */
-       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF,
+       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF |
+                                       SUSP_SH_RSTANDBY,
                                        &ecovec24_sdram_enter_start,
                                        &ecovec24_sdram_enter_end,
                                        &ecovec24_sdram_leave_start,
@@ -855,7 +882,7 @@ static int __init arch_setup(void)
        gpio_direction_output(GPIO_PTG1, 0);
        gpio_direction_output(GPIO_PTG2, 0);
        gpio_direction_output(GPIO_PTG3, 0);
-       ctrl_outw((ctrl_inw(PORT_HIZA) & ~(0x1 << 1)) , PORT_HIZA);
+       __raw_writew((__raw_readw(PORT_HIZA) & ~(0x1 << 1)) , PORT_HIZA);
 
        /* enable SH-Eth */
        gpio_request(GPIO_PTA1, NULL);
@@ -875,16 +902,16 @@ static int __init arch_setup(void)
        gpio_request(GPIO_FN_LNKSTA,       NULL);
 
        /* enable USB */
-       ctrl_outw(0x0000, 0xA4D80000);
-       ctrl_outw(0x0000, 0xA4D90000);
+       __raw_writew(0x0000, 0xA4D80000);
+       __raw_writew(0x0000, 0xA4D90000);
        gpio_request(GPIO_PTB3,  NULL);
        gpio_request(GPIO_PTB4,  NULL);
        gpio_request(GPIO_PTB5,  NULL);
        gpio_direction_input(GPIO_PTB3);
        gpio_direction_output(GPIO_PTB4, 0);
        gpio_direction_output(GPIO_PTB5, 0);
-       ctrl_outw(0x0600, 0xa40501d4);
-       ctrl_outw(0x0600, 0xa4050192);
+       __raw_writew(0x0600, 0xa40501d4);
+       __raw_writew(0x0600, 0xa4050192);
 
        if (gpio_get_value(GPIO_PTB3)) {
                printk(KERN_INFO "USB1 function is selected\n");
@@ -925,7 +952,7 @@ static int __init arch_setup(void)
        gpio_request(GPIO_FN_LCDVSYN,  NULL);
        gpio_request(GPIO_FN_LCDDON,   NULL);
        gpio_request(GPIO_FN_LCDLCLK,  NULL);
-       ctrl_outw((ctrl_inw(PORT_HIZA) & ~0x0001), PORT_HIZA);
+       __raw_writew((__raw_readw(PORT_HIZA) & ~0x0001), PORT_HIZA);
 
        gpio_request(GPIO_PTE6, NULL);
        gpio_request(GPIO_PTU1, NULL);
@@ -937,7 +964,7 @@ static int __init arch_setup(void)
        gpio_direction_output(GPIO_PTA2, 0);
 
        /* I/O buffer drive ability is high */
-       ctrl_outw((ctrl_inw(IODRIVEA) & ~0x00c0) | 0x0080 , IODRIVEA);
+       __raw_writew((__raw_readw(IODRIVEA) & ~0x00c0) | 0x0080 , IODRIVEA);
 
        if (gpio_get_value(GPIO_PTE6)) {
                /* DVI */
@@ -1069,7 +1096,7 @@ static int __init arch_setup(void)
        gpio_direction_output(GPIO_PTB7, 0);
 
        /* I/O buffer drive ability is high for SDHI1 */
-       ctrl_outw((ctrl_inw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA);
+       __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA);
 #else
        /* enable MSIOF0 on CN11 (needs DS2.4 set to OFF) */
        gpio_request(GPIO_FN_MSIOF0_TXD, NULL);
@@ -1107,6 +1134,11 @@ static int __init arch_setup(void)
        gpio_request(GPIO_FN_FSIOBLRCK,  NULL);
        gpio_request(GPIO_FN_CLKAUDIOBO, NULL);
 
+       /* set SPU2 clock to 83.4 MHz */
+       clk = clk_get(NULL, "spu_clk");
+       clk_set_rate(clk, clk_round_rate(clk, 83333333));
+       clk_put(clk);
+
        /* change parent of FSI B */
        clk = clk_get(NULL, "fsib_clk");
        clk_register(&fsimckb_clk);
@@ -1123,6 +1155,17 @@ static int __init arch_setup(void)
        gpio_request(GPIO_FN_INTC_IRQ1, NULL);
        gpio_direction_input(GPIO_FN_INTC_IRQ1);
 
+       /* set VPU clock to 166 MHz */
+       clk = clk_get(NULL, "vpu_clk");
+       clk_set_rate(clk, clk_round_rate(clk, 166000000));
+       clk_put(clk);
+
+       /* enable IrDA */
+       gpio_request(GPIO_FN_IRDA_OUT, NULL);
+       gpio_request(GPIO_FN_IRDA_IN,  NULL);
+       gpio_request(GPIO_PTU5, NULL);
+       gpio_direction_output(GPIO_PTU5, 0);
+
        /* enable I2C device */
        i2c_register_board_info(0, i2c0_devices,
                                ARRAY_SIZE(i2c0_devices));
index 83c28bc..9893fd3 100644 (file)
@@ -64,7 +64,7 @@ static DECLARE_INTC_DESC(intc_desc, "r7780mp", vectors,
 
 unsigned char * __init highlander_plat_irq_setup(void)
 {
-       if ((ctrl_inw(0xa4000700) & 0xf000) == 0x2000) {
+       if ((__raw_readw(0xa4000700) & 0xf000) == 0x2000) {
                printk(KERN_INFO "Using r7780mp interrupt controller.\n");
                register_intc_controller(&intc_desc);
                return irl2irq;
index b721e86..0805b21 100644 (file)
@@ -57,7 +57,7 @@ static DECLARE_INTC_DESC(intc_desc, "r7780rp", vectors,
 
 unsigned char * __init highlander_plat_irq_setup(void)
 {
-       if (ctrl_inw(0xa5000600)) {
+       if (__raw_readw(0xa5000600)) {
                printk(KERN_INFO "Using r7780rp interrupt controller.\n");
                register_intc_controller(&intc_desc);
                return irl2irq;
index 3811b06..558b248 100644 (file)
@@ -66,20 +66,20 @@ static DECLARE_INTC_DESC(intc_desc, "r7785rp", vectors,
 
 unsigned char * __init highlander_plat_irq_setup(void)
 {
-       if ((ctrl_inw(0xa4000158) & 0xf000) != 0x1000)
+       if ((__raw_readw(0xa4000158) & 0xf000) != 0x1000)
                return NULL;
 
        printk(KERN_INFO "Using r7785rp interrupt controller.\n");
 
-       ctrl_outw(0x0000, PA_IRLSSR1);  /* FPGA IRLSSR1(CF_CD clear) */
+       __raw_writew(0x0000, PA_IRLSSR1);       /* FPGA IRLSSR1(CF_CD clear) */
 
        /* Setup the FPGA IRL */
-       ctrl_outw(0x0000, PA_IRLPRA);   /* FPGA IRLA */
-       ctrl_outw(0xe598, PA_IRLPRB);   /* FPGA IRLB */
-       ctrl_outw(0x7060, PA_IRLPRC);   /* FPGA IRLC */
-       ctrl_outw(0x0000, PA_IRLPRD);   /* FPGA IRLD */
-       ctrl_outw(0x4321, PA_IRLPRE);   /* FPGA IRLE */
-       ctrl_outw(0xdcba, PA_IRLPRF);   /* FPGA IRLF */
+       __raw_writew(0x0000, PA_IRLPRA);        /* FPGA IRLA */
+       __raw_writew(0xe598, PA_IRLPRB);        /* FPGA IRLB */
+       __raw_writew(0x7060, PA_IRLPRC);        /* FPGA IRLC */
+       __raw_writew(0x0000, PA_IRLPRD);        /* FPGA IRLD */
+       __raw_writew(0x4321, PA_IRLPRE);        /* FPGA IRLE */
+       __raw_writew(0xdcba, PA_IRLPRF);        /* FPGA IRLF */
 
        register_intc_controller(&intc_desc);
        return irl2irq;
index 37b1a2e..5227863 100644 (file)
@@ -24,7 +24,7 @@ static irqreturn_t psw_irq_handler(int irq, void *arg)
        unsigned int l, mask;
        int ret = 0;
 
-       l = ctrl_inw(PA_DBSW);
+       l = __raw_readw(PA_DBSW);
 
        /* Nothing to do if there's no state change */
        if (psw->state) {
@@ -45,7 +45,7 @@ static irqreturn_t psw_irq_handler(int irq, void *arg)
 out:
        /* Clear the switch IRQs */
        l |= (0x7 << 12);
-       ctrl_outw(l, PA_DBSW);
+       __raw_writew(l, PA_DBSW);
 
        return IRQ_RETVAL(ret);
 }
index f663c14..affd667 100644 (file)
@@ -311,13 +311,13 @@ device_initcall(r7780rp_devices_setup);
  */
 static int ivdr_clk_enable(struct clk *clk)
 {
-       ctrl_outw(ctrl_inw(PA_IVDRCTL) | (1 << IVDR_CK_ON), PA_IVDRCTL);
+       __raw_writew(__raw_readw(PA_IVDRCTL) | (1 << IVDR_CK_ON), PA_IVDRCTL);
        return 0;
 }
 
 static void ivdr_clk_disable(struct clk *clk)
 {
-       ctrl_outw(ctrl_inw(PA_IVDRCTL) & ~(1 << IVDR_CK_ON), PA_IVDRCTL);
+       __raw_writew(__raw_readw(PA_IVDRCTL) & ~(1 << IVDR_CK_ON), PA_IVDRCTL);
 }
 
 static struct clk_ops ivdr_clk_ops = {
@@ -337,7 +337,7 @@ static struct clk *r7780rp_clocks[] = {
 static void r7780rp_power_off(void)
 {
        if (mach_is_r7780mp() || mach_is_r7785rp())
-               ctrl_outw(0x0001, PA_POFF);
+               __raw_writew(0x0001, PA_POFF);
 }
 
 /*
@@ -345,7 +345,7 @@ static void r7780rp_power_off(void)
  */
 static void __init highlander_setup(char **cmdline_p)
 {
-       u16 ver = ctrl_inw(PA_VERREG);
+       u16 ver = __raw_readw(PA_VERREG);
        int i;
 
        printk(KERN_INFO "Renesas Solutions Highlander %s support.\n",
@@ -370,12 +370,12 @@ static void __init highlander_setup(char **cmdline_p)
                clk_enable(clk);
        }
 
-       ctrl_outw(0x0000, PA_OBLED);    /* Clear LED. */
+       __raw_writew(0x0000, PA_OBLED); /* Clear LED. */
 
        if (mach_is_r7780rp())
-               ctrl_outw(0x0001, PA_SDPOW);    /* SD Power ON */
+               __raw_writew(0x0001, PA_SDPOW); /* SD Power ON */
 
-       ctrl_outw(ctrl_inw(PA_IVDRCTL) | 0x01, PA_IVDRCTL);     /* Si13112 */
+       __raw_writew(__raw_readw(PA_IVDRCTL) | 0x01, PA_IVDRCTL);       /* Si13112 */
 
        pm_power_off = r7780rp_power_off;
 }
index e85212f..b49535c 100644 (file)
@@ -53,7 +53,7 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info)
        info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ?
                         APM_AC_ONLINE : APM_AC_OFFLINE;
 
-       pgdr = ctrl_inb(PGDR);
+       pgdr = __raw_readb(PGDR);
        if (pgdr & PGDR_MAIN_BATTERY_OUT) {
                info->battery_status    = APM_BATTERY_STATUS_NOT_PRESENT;
                info->battery_flag      = 0x80;
index d936c1a..4499a37 100644 (file)
@@ -53,17 +53,17 @@ static void pm_enter(void)
        sh_wdt_write_cnt(0);
 
        /* disable PLL1 */
-       frqcr = ctrl_inw(FRQCR);
+       frqcr = __raw_readw(FRQCR);
        frqcr &= ~(FRQCR_PLLEN | FRQCR_PSTBY);
-       ctrl_outw(frqcr, FRQCR);
+       __raw_writew(frqcr, FRQCR);
 
        /* enable standby */
-       stbcr = ctrl_inb(STBCR);
-       ctrl_outb(stbcr | STBCR_STBY | STBCR_MSTP2, STBCR);
+       stbcr = __raw_readb(STBCR);
+       __raw_writeb(stbcr | STBCR_STBY | STBCR_MSTP2, STBCR);
 
        /* set self-refresh */
-       mcr = ctrl_inw(MCR);
-       ctrl_outw(mcr & ~MCR_RFSH, MCR);
+       mcr = __raw_readw(MCR);
+       __raw_writew(mcr & ~MCR_RFSH, MCR);
 
        /* set interrupt handler */
        asm volatile("stc vbr, %0" : "=r" (vbr_old));
@@ -73,8 +73,8 @@ static void pm_enter(void)
               &wakeup_start, &wakeup_end - &wakeup_start);
        asm volatile("ldc %0, vbr" : : "r" (vbr_new));
 
-       ctrl_outw(0, RTCNT);
-       ctrl_outw(mcr | MCR_RFSH | MCR_RMODE, MCR);
+       __raw_writew(0, RTCNT);
+       __raw_writew(mcr | MCR_RFSH | MCR_RMODE, MCR);
 
        cpu_sleep();
 
@@ -83,14 +83,14 @@ static void pm_enter(void)
        free_page(vbr_new);
 
        /* enable PLL1 */
-       frqcr = ctrl_inw(FRQCR);
+       frqcr = __raw_readw(FRQCR);
        frqcr |= FRQCR_PSTBY;
-       ctrl_outw(frqcr, FRQCR);
+       __raw_writew(frqcr, FRQCR);
        udelay(50);
        frqcr |= FRQCR_PLLEN;
-       ctrl_outw(frqcr, FRQCR);
+       __raw_writew(frqcr, FRQCR);
 
-       ctrl_outb(stbcr, STBCR);
+       __raw_writeb(stbcr, STBCR);
 
        clear_bl_bit();
 }
@@ -115,21 +115,21 @@ static int hp6x0_pm_enter(suspend_state_t state)
        outw(hd64461_stbcr, HD64461_STBCR);
 #endif
 
-       ctrl_outb(0x1f, DACR);
+       __raw_writeb(0x1f, DACR);
 
-       stbcr = ctrl_inb(STBCR);
-       ctrl_outb(0x01, STBCR);
+       stbcr = __raw_readb(STBCR);
+       __raw_writeb(0x01, STBCR);
 
-       stbcr2 = ctrl_inb(STBCR2);
-       ctrl_outb(0x7f , STBCR2);
+       stbcr2 = __raw_readb(STBCR2);
+       __raw_writeb(0x7f , STBCR2);
 
        outw(0xf07f, HD64461_SCPUCR);
 
        pm_enter();
 
        outw(0, HD64461_SCPUCR);
-       ctrl_outb(stbcr, STBCR);
-       ctrl_outb(stbcr2, STBCR2);
+       __raw_writeb(stbcr, STBCR);
+       __raw_writeb(stbcr2, STBCR2);
 
 #ifdef CONFIG_HD64461_ENABLER
        hd64461_stbcr = inw(HD64461_STBCR);
index e6dd5e9..8c9add5 100644 (file)
@@ -149,19 +149,19 @@ static void __init hp6xx_setup(char **cmdline_p)
 
        sh_dac_output(0, DAC_SPEAKER_VOLUME);
        sh_dac_disable(DAC_SPEAKER_VOLUME);
-       v8 = ctrl_inb(DACR);
+       v8 = __raw_readb(DACR);
        v8 &= ~DACR_DAE;
-       ctrl_outb(v8,DACR);
+       __raw_writeb(v8,DACR);
 
-       v8 = ctrl_inb(SCPDR);
+       v8 = __raw_readb(SCPDR);
        v8 |= SCPDR_TS_SCAN_X | SCPDR_TS_SCAN_Y;
        v8 &= ~SCPDR_TS_SCAN_ENABLE;
-       ctrl_outb(v8, SCPDR);
+       __raw_writeb(v8, SCPDR);
 
-       v = ctrl_inw(SCPCR);
+       v = __raw_readw(SCPCR);
        v &= ~SCPCR_TS_MASK;
        v |= SCPCR_TS_ENABLE;
-       ctrl_outw(v, SCPCR);
+       __raw_writew(v, SCPCR);
 }
 device_initcall(hp6xx_devices_setup);
 
index 5d7b5d9..b2cd0ed 100644 (file)
@@ -282,7 +282,7 @@ static int camera_power(struct device *dev, int mode)
                 * use 1.8 V for VccQ_VIO
                 * use 2.85V for VccQ_SR
                 */
-               ctrl_outw((ctrl_inw(DRVCRB) & ~0x0003) | 0x0001, DRVCRB);
+               __raw_writew((__raw_readw(DRVCRB) & ~0x0003) | 0x0001, DRVCRB);
 
                /* reset clear */
                ret = gpio_request(GPIO_PTB4, NULL);
@@ -351,7 +351,7 @@ static struct resource kfr2r09_sh_sdhi0_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 101,
+               .start  = 100,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -492,13 +492,13 @@ static int kfr2r09_usb0_gadget_setup(void)
        if (kfr2r09_usb0_gadget_i2c_setup() != 0)
                return -ENODEV; /* unable to configure using i2c */
 
-       ctrl_outw((ctrl_inw(PORT_MSELCRB) & ~0xc000) | 0x8000, PORT_MSELCRB);
+       __raw_writew((__raw_readw(PORT_MSELCRB) & ~0xc000) | 0x8000, PORT_MSELCRB);
        gpio_request(GPIO_FN_PDSTATUS, NULL); /* R-standby disables USB clock */
        gpio_request(GPIO_PTV6, NULL); /* USBCLK_ON */
        gpio_direction_output(GPIO_PTV6, 1); /* USBCLK_ON = H */
        msleep(20); /* wait 20ms to let the clock settle */
        clk_enable(clk_get(NULL, "usb0"));
-       ctrl_outw(0x0600, 0xa40501d4);
+       __raw_writew(0x0600, 0xa40501d4);
 
        return 0;
 }
@@ -526,12 +526,12 @@ static int __init kfr2r09_devices_setup(void)
        gpio_direction_output(GPIO_PTG3, 1); /* HPON_ON = H */
 
        /* setup NOR flash at CS0 */
-       ctrl_outl(0x36db0400, BSC_CS0BCR);
-       ctrl_outl(0x00000500, BSC_CS0WCR);
+       __raw_writel(0x36db0400, BSC_CS0BCR);
+       __raw_writel(0x00000500, BSC_CS0WCR);
 
        /* setup NAND flash at CS4 */
-       ctrl_outl(0x36db0400, BSC_CS4BCR);
-       ctrl_outl(0x00000500, BSC_CS4WCR);
+       __raw_writel(0x36db0400, BSC_CS4BCR);
+       __raw_writel(0x00000500, BSC_CS4WCR);
 
        /* setup KEYSC pins */
        gpio_request(GPIO_FN_KEYOUT0, NULL);
index 5280131..01e6abb 100644 (file)
@@ -76,39 +76,39 @@ static long gio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                break;
 
        case GIODRV_IOCSGIODATA1:       /* write byte */
-               ctrl_outb((unsigned char)(0x0ff & data), addr);
+               __raw_writeb((unsigned char)(0x0ff & data), addr);
                break;
 
        case GIODRV_IOCSGIODATA2:       /* write word */
                if (addr & 0x01) {
                        return -EFAULT;
                }
-               ctrl_outw((unsigned short int)(0x0ffff & data), addr);
+               __raw_writew((unsigned short int)(0x0ffff & data), addr);
                break;
 
        case GIODRV_IOCSGIODATA4:       /* write long */
                if (addr & 0x03) {
                        return -EFAULT;
                }
-               ctrl_outl(data, addr);
+               __raw_writel(data, addr);
                break;
 
        case GIODRV_IOCGGIODATA1:       /* read byte */
-               data = ctrl_inb(addr);
+               data = __raw_readb(addr);
                break;
 
        case GIODRV_IOCGGIODATA2:       /* read word */
                if (addr & 0x01) {
                        return -EFAULT;
                }
-               data = ctrl_inw(addr);
+               data = __raw_readw(addr);
                break;
 
        case GIODRV_IOCGGIODATA4:       /* read long */
                if (addr & 0x03) {
                        return -EFAULT;
                }
-               data = ctrl_inl(addr);
+               data = __raw_readl(addr);
                break;
        default:
                return -EFAULT;
index 7b284cd..96f38a4 100644 (file)
@@ -22,14 +22,14 @@ static void disable_landisk_irq(unsigned int irq)
 {
        unsigned char mask = 0xff ^ (0x01 << (irq - 5));
 
-       ctrl_outb(ctrl_inb(PA_IMASK) & mask, PA_IMASK);
+       __raw_writeb(__raw_readb(PA_IMASK) & mask, PA_IMASK);
 }
 
 static void enable_landisk_irq(unsigned int irq)
 {
        unsigned char value = (0x01 << (irq - 5));
 
-       ctrl_outb(ctrl_inb(PA_IMASK) | value, PA_IMASK);
+       __raw_writeb(__raw_readb(PA_IMASK) | value, PA_IMASK);
 }
 
 static struct irq_chip landisk_irq_chip __read_mostly = {
@@ -52,5 +52,5 @@ void __init init_landisk_IRQ(void)
                                              handle_level_irq, "level");
                enable_landisk_irq(i);
        }
-       ctrl_outb(0x00, PA_PWRINT_CLR);
+       __raw_writeb(0x00, PA_PWRINT_CLR);
 }
index e6b0efa..bef8352 100644 (file)
@@ -25,7 +25,7 @@ static irqreturn_t psw_irq_handler(int irq, void *arg)
        unsigned int sw_value;
        int ret = 0;
 
-       sw_value = (0x0ff & (~ctrl_inb(PA_STATUS)));
+       sw_value = (0x0ff & (~__raw_readb(PA_STATUS)));
 
        /* Nothing to do if there's no state change */
        if (psw->state) {
@@ -42,7 +42,7 @@ static irqreturn_t psw_irq_handler(int irq, void *arg)
 
 out:
        /* Clear the switch IRQs */
-       ctrl_outb(0x00, PA_PWRINT_CLR);
+       __raw_writeb(0x00, PA_PWRINT_CLR);
 
        return IRQ_RETVAL(ret);
 }
index db22ea2..50337ac 100644 (file)
@@ -25,7 +25,7 @@ void init_landisk_IRQ(void);
 
 static void landisk_power_off(void)
 {
-        ctrl_outb(0x01, PA_SHUTDOWN);
+        __raw_writeb(0x01, PA_SHUTDOWN);
 }
 
 static struct resource cf_ide_resources[3];
@@ -63,7 +63,7 @@ static int __init landisk_devices_setup(void)
        /* open I/O area window */
        paddrbase = virt_to_phys((void *)PA_AREA5_IO);
        prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16);
-       cf_ide_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
+       cf_ide_base = ioremap_prot(paddrbase, PAGE_SIZE, pgprot_val(prot));
        if (!cf_ide_base) {
                printk("allocate_cf_area : can't open CF I/O window!\n");
                return -ENOMEM;
@@ -88,7 +88,7 @@ __initcall(landisk_devices_setup);
 static void __init landisk_setup(char **cmdline_p)
 {
         /* LED ON */
-       ctrl_outb(ctrl_inb(PA_LED) | 0x03, PA_LED);
+       __raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED);
 
        printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n");
        pm_power_off = landisk_power_off;
index 2b0b581..79b4e0d 100644 (file)
@@ -56,8 +56,8 @@ static int __init lboxre2_devices_setup(void)
        /* open I/O area window */
        paddrbase = virt_to_phys((void*)PA_AREA5_IO);
        psize = PAGE_SIZE;
-       prot = PAGE_KERNEL_PCC( 1 , _PAGE_PCC_IO16);
-       cf0_io_base = (u32)p3_ioremap(paddrbase, psize, prot.pgprot);
+       prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16);
+       cf0_io_base = (u32)ioremap_prot(paddrbase, psize, pgprot_val(prot));
        if (!cf0_io_base) {
                printk(KERN_ERR "%s : can't open CF I/O window!\n" , __func__ );
                return -ENOMEM;
index 52dd748..2960c65 100644 (file)
@@ -141,10 +141,10 @@ static inline void delay(void)
 #if defined(CONFIG_PCI)
        /* System board present, just make a dummy SRAM access.  (CS0 will be
           mapped to PCI memory, probably good to avoid it.) */
-       ctrl_inw(0xa6800000);
+       __raw_readw(0xa6800000);
 #else
        /* CS0 will be mapped to flash, ROM etc so safe to access it. */
-       ctrl_inw(0xa0000000);
+       __raw_readw(0xa0000000);
 #endif
 }
 
index b551963..a26d166 100644 (file)
@@ -88,7 +88,7 @@ static void disable_microdev_irq(unsigned int irq)
        fpgaIrq = fpgaIrqTable[irq].fpgaIrq;
 
        /* disable interrupts on the FPGA INTC register */
-       ctrl_outl(MICRODEV_FPGA_INTC_MASK(fpgaIrq), MICRODEV_FPGA_INTDSB_REG);
+       __raw_writel(MICRODEV_FPGA_INTC_MASK(fpgaIrq), MICRODEV_FPGA_INTDSB_REG);
 }
 
 static void enable_microdev_irq(unsigned int irq)
@@ -107,13 +107,13 @@ static void enable_microdev_irq(unsigned int irq)
        priorityReg = MICRODEV_FPGA_INTPRI_REG(fpgaIrq);
 
        /* set priority for the interrupt */
-       priorities = ctrl_inl(priorityReg);
+       priorities = __raw_readl(priorityReg);
        priorities &= ~MICRODEV_FPGA_INTPRI_MASK(fpgaIrq);
        priorities |= MICRODEV_FPGA_INTPRI_LEVEL(fpgaIrq, pri);
-       ctrl_outl(priorities, priorityReg);
+       __raw_writel(priorities, priorityReg);
 
        /* enable interrupts on the FPGA INTC register */
-       ctrl_outl(MICRODEV_FPGA_INTC_MASK(fpgaIrq), MICRODEV_FPGA_INTENB_REG);
+       __raw_writel(MICRODEV_FPGA_INTC_MASK(fpgaIrq), MICRODEV_FPGA_INTENB_REG);
 }
 
 /* This function sets the desired irq handler to be a MicroDev type */
@@ -134,7 +134,7 @@ extern void __init init_microdev_irq(void)
        int i;
 
        /* disable interrupts on the FPGA INTC register */
-       ctrl_outl(~0ul, MICRODEV_FPGA_INTDSB_REG);
+       __raw_writel(~0ul, MICRODEV_FPGA_INTDSB_REG);
 
        for (i = 0; i < NUM_EXTERNAL_IRQS; i++)
                make_microdev_irq(i);
index 507c77b..e08d513 100644 (file)
@@ -397,7 +397,7 @@ static struct resource sdhi_cn9_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 101,
+               .start  = 100,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -496,28 +496,16 @@ static int __init migor_devices_setup(void)
                                        &migor_sdram_enter_end,
                                        &migor_sdram_leave_start,
                                        &migor_sdram_leave_end);
-#ifdef CONFIG_PM
        /* Let D11 LED show STATUS0 */
        gpio_request(GPIO_FN_STATUS0, NULL);
 
        /* Lit D12 LED show PDSTATUS */
        gpio_request(GPIO_FN_PDSTATUS, NULL);
-#else
-       /* Lit D11 LED */
-       gpio_request(GPIO_PTJ7, NULL);
-       gpio_direction_output(GPIO_PTJ7, 1);
-       gpio_export(GPIO_PTJ7, 0);
-
-       /* Lit D12 LED */
-       gpio_request(GPIO_PTJ5, NULL);
-       gpio_direction_output(GPIO_PTJ5, 1);
-       gpio_export(GPIO_PTJ5, 0);
-#endif
 
        /* SMC91C111 - Enable IRQ0, Setup CS4 for 16-bit fast access */
        gpio_request(GPIO_FN_IRQ0, NULL);
-       ctrl_outl(0x00003400, BSC_CS4BCR);
-       ctrl_outl(0x00110080, BSC_CS4WCR);
+       __raw_writel(0x00003400, BSC_CS4BCR);
+       __raw_writel(0x00110080, BSC_CS4WCR);
 
        /* KEYSC */
        gpio_request(GPIO_FN_KEYOUT0, NULL);
@@ -533,7 +521,7 @@ static int __init migor_devices_setup(void)
 
        /* NAND Flash */
        gpio_request(GPIO_FN_CS6A_CE2B, NULL);
-       ctrl_outl((ctrl_inl(BSC_CS6ABCR) & ~0x0600) | 0x0200, BSC_CS6ABCR);
+       __raw_writel((__raw_readl(BSC_CS6ABCR) & ~0x0600) | 0x0200, BSC_CS6ABCR);
        gpio_request(GPIO_PTA1, NULL);
        gpio_direction_input(GPIO_PTA1);
 
@@ -627,7 +615,7 @@ static int __init migor_devices_setup(void)
 #else
        gpio_direction_output(GPIO_PTT0, 1);
 #endif
-       ctrl_outw(ctrl_inw(PORT_MSELCRB) | 0x2000, PORT_MSELCRB); /* D15->D8 */
+       __raw_writew(__raw_readw(PORT_MSELCRB) | 0x2000, PORT_MSELCRB); /* D15->D8 */
 
        platform_resource_setup_memory(&migor_ceu_device, "ceu", 4 << 20);
 
index 78d7b27..574f009 100644 (file)
@@ -129,7 +129,7 @@ void __init init_rts7751r2d_IRQ(void)
 {
        struct intc_desc *d;
 
-       switch (ctrl_inw(PA_VERREG) & 0xf0) {
+       switch (__raw_readw(PA_VERREG) & 0xf0) {
 #ifdef CONFIG_RTS7751R2D_PLUS
        case 0x10:
                printk(KERN_INFO "Using R2D-PLUS interrupt controller.\n");
@@ -147,7 +147,7 @@ void __init init_rts7751r2d_IRQ(void)
 #endif
        default:
                printk(KERN_INFO "Unknown R2D interrupt controller 0x%04x\n",
-                      ctrl_inw(PA_VERREG));
+                      __raw_readw(PA_VERREG));
                return;
        }
 
index a625ecb..b84df6a 100644 (file)
@@ -70,7 +70,7 @@ static struct spi_board_info spi_bus[] = {
 static void r2d_chip_select(struct sh_spi_info *spi, int cs, int state)
 {
        BUG_ON(cs != 0);  /* Single Epson RTC-9701JE attached on CS0 */
-       ctrl_outw(state == BITBANG_CS_ACTIVE, PA_RTCCE);
+       __raw_writew(state == BITBANG_CS_ACTIVE, PA_RTCCE);
 }
 
 static struct sh_spi_info spi_info = {
@@ -262,7 +262,7 @@ __initcall(rts7751r2d_devices_setup);
 
 static void rts7751r2d_power_off(void)
 {
-       ctrl_outw(0x0001, PA_POWOFF);
+       __raw_writew(0x0001, PA_POWOFF);
 }
 
 /*
@@ -271,14 +271,14 @@ static void rts7751r2d_power_off(void)
 static void __init rts7751r2d_setup(char **cmdline_p)
 {
        void __iomem *sm501_reg;
-       u16 ver = ctrl_inw(PA_VERREG);
+       u16 ver = __raw_readw(PA_VERREG);
 
        printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n");
 
        printk(KERN_INFO "FPGA version:%d (revision:%d)\n",
                                        (ver >> 4) & 0xf, ver & 0xf);
 
-       ctrl_outw(0x0000, PA_OUTPORT);
+       __raw_writew(0x0000, PA_OUTPORT);
        pm_power_off = rts7751r2d_power_off;
 
        /* sm501 dram configuration:
index c37617e..4fa08ba 100644 (file)
@@ -96,7 +96,7 @@ static int __init rsk7203_devices_setup(void)
        gpio_request(GPIO_FN_RXD0, NULL);
 
        /* Setup LAN9118: CS1 in 16-bit Big Endian Mode, IRQ0 at Port B */
-       ctrl_outl(0x36db0400, 0xfffc0008); /* CS1BCR */
+       __raw_writel(0x36db0400, 0xfffc0008); /* CS1BCR */
        gpio_request(GPIO_FN_IRQ0_PB, NULL);
 
        return platform_add_devices(rsk7203_devices,
index 8555581..e5f7564 100644 (file)
@@ -37,9 +37,9 @@ void __init init_sdk7780_IRQ(void)
 {
        printk(KERN_INFO "Using SDK7780 interrupt controller.\n");
 
-       ctrl_outw(0xFFFF, FPGA_IRQ0MR);
+       __raw_writew(0xFFFF, FPGA_IRQ0MR);
        /* Setup IRL 0-3 */
-       ctrl_outw(0x0003, FPGA_IMSR);
+       __raw_writew(0x0003, FPGA_IMSR);
        plat_irq_setup_pins(IRQ_MODE_IRL3210);
 
        register_intc_controller(&fpga_intc_desc);
index aad94a7..4da38db 100644 (file)
 
 #define GPIO_PECR        0xFFEA0008
 
-//* Heartbeat */
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
-};
-
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+/* Heartbeat */
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev = {
-               .platform_data = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* SMC91x */
@@ -83,8 +74,8 @@ device_initcall(sdk7780_devices_setup);
 
 static void __init sdk7780_setup(char **cmdline_p)
 {
-       u16 ver = ctrl_inw(FPGA_FPVERR);
-       u16 dateStamp = ctrl_inw(FPGA_FPDATER);
+       u16 ver = __raw_readw(FPGA_FPVERR);
+       u16 dateStamp = __raw_readw(FPGA_FPDATER);
 
        printk(KERN_INFO "Renesas Technology Europe SDK7780 support.\n");
        printk(KERN_INFO "Board version: %d (revision %d), "
@@ -94,7 +85,7 @@ static void __init sdk7780_setup(char **cmdline_p)
                         dateStamp);
 
        /* Setup pin mux'ing for PCIC */
-       ctrl_outw(0x0000, GPIO_PECR);
+       __raw_writew(0x0000, GPIO_PECR);
 }
 
 /*
diff --git a/arch/sh/boards/mach-sdk7786/Makefile b/arch/sh/boards/mach-sdk7786/Makefile
new file mode 100644 (file)
index 0000000..a29f19e
--- /dev/null
@@ -0,0 +1 @@
+obj-y  := setup.o fpga.o irq.o
diff --git a/arch/sh/boards/mach-sdk7786/fpga.c b/arch/sh/boards/mach-sdk7786/fpga.c
new file mode 100644 (file)
index 0000000..3e4ec66
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * SDK7786 FPGA Support.
+ *
+ * Copyright (C) 2010  Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/bcd.h>
+#include <mach/fpga.h>
+#include <asm/sizes.h>
+
+#define FPGA_REGS_OFFSET       0x03fff800
+#define FPGA_REGS_SIZE         0x490
+
+/*
+ * The FPGA can be mapped in any of the generally available areas,
+ * so we attempt to scan for it using the fixed SRSTR read magic.
+ *
+ * Once the FPGA is located, the rest of the mapping data for the other
+ * components can be determined dynamically from its section mapping
+ * registers.
+ */
+static void __iomem *sdk7786_fpga_probe(void)
+{
+       unsigned long area;
+       void __iomem *base;
+
+       /*
+        * Iterate over all of the areas where the FPGA could be mapped.
+        * The possible range is anywhere from area 0 through 6, area 7
+        * is reserved.
+        */
+       for (area = PA_AREA0; area < PA_AREA7; area += SZ_64M) {
+               base = ioremap_nocache(area + FPGA_REGS_OFFSET, FPGA_REGS_SIZE);
+               if (!base) {
+                       /* Failed to remap this area, move along. */
+                       continue;
+               }
+
+               if (ioread16(base + SRSTR) == SRSTR_MAGIC)
+                       return base;    /* Found it! */
+
+               iounmap(base);
+       }
+
+       return NULL;
+}
+
+void __iomem *sdk7786_fpga_base;
+
+void __init sdk7786_fpga_init(void)
+{
+       u16 version, date;
+
+       sdk7786_fpga_base = sdk7786_fpga_probe();
+       if (unlikely(!sdk7786_fpga_base)) {
+               panic("FPGA detection failed.\n");
+               return;
+       }
+
+       version = fpga_read_reg(FPGAVR);
+       date = fpga_read_reg(FPGADR);
+
+       pr_info("\tFPGA version:\t%d.%d (built on %d/%d/%d)\n",
+               bcd2bin(version >> 8) & 0xf, bcd2bin(version & 0xf),
+               ((date >> 12) & 0xf) + 2000,
+               (date >> 8) & 0xf, bcd2bin(date & 0xff));
+}
diff --git a/arch/sh/boards/mach-sdk7786/irq.c b/arch/sh/boards/mach-sdk7786/irq.c
new file mode 100644 (file)
index 0000000..46943a0
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * SDK7786 FPGA IRQ Controller Support.
+ *
+ * Copyright (C) 2010  Matt Fleming
+ * Copyright (C) 2010  Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#include <linux/irq.h>
+#include <mach/fpga.h>
+#include <mach/irq.h>
+
+enum {
+       ATA_IRQ_BIT             = 1,
+       SPI_BUSY_BIT            = 2,
+       LIRQ5_BIT               = 3,
+       LIRQ6_BIT               = 4,
+       LIRQ7_BIT               = 5,
+       LIRQ8_BIT               = 6,
+       KEY_IRQ_BIT             = 7,
+       PEN_IRQ_BIT             = 8,
+       ETH_IRQ_BIT             = 9,
+       RTC_ALARM_BIT           = 10,
+       CRYSTAL_FAIL_BIT        = 12,
+       ETH_PME_BIT             = 14,
+};
+
+void __init sdk7786_init_irq(void)
+{
+       unsigned int tmp;
+
+       /* Enable priority encoding for all IRLs */
+       fpga_write_reg(fpga_read_reg(INTMSR) | 0x0303, INTMSR);
+
+       /* Clear FPGA interrupt status registers */
+       fpga_write_reg(0x0000, INTASR);
+       fpga_write_reg(0x0000, INTBSR);
+
+       /* Unmask FPGA interrupts */
+       tmp = fpga_read_reg(INTAMR);
+       tmp &= ~(1 << ETH_IRQ_BIT);
+       fpga_write_reg(tmp, INTAMR);
+
+       plat_irq_setup_pins(IRQ_MODE_IRL7654_MASK);
+       plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK);
+}
diff --git a/arch/sh/boards/mach-sdk7786/setup.c b/arch/sh/boards/mach-sdk7786/setup.c
new file mode 100644 (file)
index 0000000..f094ea2
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * Renesas Technology Europe SDK7786 Support.
+ *
+ * Copyright (C) 2010  Matt Fleming
+ * Copyright (C) 2010  Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/io.h>
+#include <linux/smsc911x.h>
+#include <linux/i2c.h>
+#include <linux/irq.h>
+#include <linux/clk.h>
+#include <mach/fpga.h>
+#include <mach/irq.h>
+#include <asm/machvec.h>
+#include <asm/heartbeat.h>
+#include <asm/sizes.h>
+#include <asm/reboot.h>
+
+static struct resource heartbeat_resource = {
+       .start          = 0x07fff8b0,
+       .end            = 0x07fff8b0 + sizeof(u16) - 1,
+       .flags          = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
+};
+
+static struct platform_device heartbeat_device = {
+       .name           = "heartbeat",
+       .id             = -1,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
+};
+
+static struct resource smsc911x_resources[] = {
+       [0] = {
+               .name           = "smsc911x-memory",
+               .start          = 0x07ffff00,
+               .end            = 0x07ffff00 + SZ_256 - 1,
+               .flags          = IORESOURCE_MEM,
+       },
+       [1] = {
+               .name           = "smsc911x-irq",
+               .start          = evt2irq(0x2c0),
+               .end            = evt2irq(0x2c0),
+               .flags          = IORESOURCE_IRQ,
+       },
+};
+
+static struct smsc911x_platform_config smsc911x_config = {
+       .irq_polarity   = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
+       .irq_type       = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
+       .flags          = SMSC911X_USE_32BIT,
+       .phy_interface  = PHY_INTERFACE_MODE_MII,
+};
+
+static struct platform_device smsc911x_device = {
+       .name           = "smsc911x",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(smsc911x_resources),
+       .resource       = smsc911x_resources,
+       .dev = {
+               .platform_data = &smsc911x_config,
+       },
+};
+
+static struct resource smbus_fpga_resource = {
+       .start          = 0x07fff9e0,
+       .end            = 0x07fff9e0 + SZ_32 - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device smbus_fpga_device = {
+       .name           = "i2c-sdk7786",
+       .id             = 0,
+       .num_resources  = 1,
+       .resource       = &smbus_fpga_resource,
+};
+
+static struct resource smbus_pcie_resource = {
+       .start          = 0x07fffc30,
+       .end            = 0x07fffc30 + SZ_32 - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device smbus_pcie_device = {
+       .name           = "i2c-sdk7786",
+       .id             = 1,
+       .num_resources  = 1,
+       .resource       = &smbus_pcie_resource,
+};
+
+static struct i2c_board_info __initdata sdk7786_i2c_devices[] = {
+       {
+               I2C_BOARD_INFO("max6900", 0x68),
+       },
+};
+
+static struct platform_device *sh7786_devices[] __initdata = {
+       &heartbeat_device,
+       &smsc911x_device,
+       &smbus_fpga_device,
+       &smbus_pcie_device,
+};
+
+static int sdk7786_i2c_setup(void)
+{
+       unsigned int tmp;
+
+       /*
+        * Hand over I2C control to the FPGA.
+        */
+       tmp = fpga_read_reg(SBCR);
+       tmp &= ~SCBR_I2CCEN;
+       tmp |= SCBR_I2CMEN;
+       fpga_write_reg(tmp, SBCR);
+
+       return i2c_register_board_info(0, sdk7786_i2c_devices,
+                                      ARRAY_SIZE(sdk7786_i2c_devices));
+}
+
+static int __init sdk7786_devices_setup(void)
+{
+       int ret;
+
+       ret = platform_add_devices(sh7786_devices, ARRAY_SIZE(sh7786_devices));
+       if (unlikely(ret != 0))
+               return ret;
+
+       return sdk7786_i2c_setup();
+}
+__initcall(sdk7786_devices_setup);
+
+static int sdk7786_mode_pins(void)
+{
+       return fpga_read_reg(MODSWR);
+}
+
+static int sdk7786_clk_init(void)
+{
+       struct clk *clk;
+       int ret;
+
+       /*
+        * Only handle the EXTAL case, anyone interfacing a crystal
+        * resonator will need to provide their own input clock.
+        */
+       if (test_mode_pin(MODE_PIN9))
+               return -EINVAL;
+
+       clk = clk_get(NULL, "extal");
+       if (!clk || IS_ERR(clk))
+               return PTR_ERR(clk);
+       ret = clk_set_rate(clk, 33333333);
+       clk_put(clk);
+
+       return ret;
+}
+
+static void sdk7786_restart(char *cmd)
+{
+       fpga_write_reg(0xa5a5, SRSTR);
+}
+
+/* Initialize the board */
+static void __init sdk7786_setup(char **cmdline_p)
+{
+       pr_info("Renesas Technology Europe SDK7786 support:\n");
+
+       sdk7786_fpga_init();
+
+       pr_info("\tPCB revision:\t%d\n", fpga_read_reg(PCBRR) & 0xf);
+
+       machine_ops.restart = sdk7786_restart;
+}
+
+/*
+ * The Machine Vector
+ */
+static struct sh_machine_vector mv_sdk7786 __initmv = {
+       .mv_name                = "SDK7786",
+       .mv_setup               = sdk7786_setup,
+       .mv_mode_pins           = sdk7786_mode_pins,
+       .mv_clk_init            = sdk7786_clk_init,
+       .mv_init_irq            = sdk7786_init_irq,
+};
index 1804556..adadc77 100644 (file)
@@ -16,7 +16,7 @@
 
 static inline void delay(void)
 {
-       ctrl_inw(0x20000000);  /* P2 ROM Area */
+       __raw_readw(0x20000000);  /* P2 ROM Area */
 }
 
 /* MS7750 requires special versions of in*, out* routines, since
index aef7f05..8d82175 100644 (file)
@@ -32,12 +32,12 @@ static void disable_se7206_irq(unsigned int irq)
        unsigned short msk0,msk1;
 
        /* Set the priority in IPR to 0 */
-       val = ctrl_inw(INTC_IPR01);
+       val = __raw_readw(INTC_IPR01);
        val &= mask;
-       ctrl_outw(val, INTC_IPR01);
+       __raw_writew(val, INTC_IPR01);
        /* FPGA mask set */
-       msk0 = ctrl_inw(INTMSK0);
-       msk1 = ctrl_inw(INTMSK1);
+       msk0 = __raw_readw(INTMSK0);
+       msk1 = __raw_readw(INTMSK1);
 
        switch (irq) {
        case IRQ0_IRQ:
@@ -51,8 +51,8 @@ static void disable_se7206_irq(unsigned int irq)
                msk1 |= 0x00ff;
                break;
        }
-       ctrl_outw(msk0, INTMSK0);
-       ctrl_outw(msk1, INTMSK1);
+       __raw_writew(msk0, INTMSK0);
+       __raw_writew(msk1, INTMSK1);
 }
 
 static void enable_se7206_irq(unsigned int irq)
@@ -62,13 +62,13 @@ static void enable_se7206_irq(unsigned int irq)
        unsigned short msk0,msk1;
 
        /* Set priority in IPR back to original value */
-       val = ctrl_inw(INTC_IPR01);
+       val = __raw_readw(INTC_IPR01);
        val |= value;
-       ctrl_outw(val, INTC_IPR01);
+       __raw_writew(val, INTC_IPR01);
 
        /* FPGA mask reset */
-       msk0 = ctrl_inw(INTMSK0);
-       msk1 = ctrl_inw(INTMSK1);
+       msk0 = __raw_readw(INTMSK0);
+       msk1 = __raw_readw(INTMSK1);
 
        switch (irq) {
        case IRQ0_IRQ:
@@ -82,19 +82,20 @@ static void enable_se7206_irq(unsigned int irq)
                msk1 &= ~0x00ff;
                break;
        }
-       ctrl_outw(msk0, INTMSK0);
-       ctrl_outw(msk1, INTMSK1);
+       __raw_writew(msk0, INTMSK0);
+       __raw_writew(msk1, INTMSK1);
 }
 
 static void eoi_se7206_irq(unsigned int irq)
 {
        unsigned short sts0,sts1;
+       struct irq_desc *desc = irq_to_desc(irq);
 
-       if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
+       if (!(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)))
                enable_se7206_irq(irq);
        /* FPGA isr clear */
-       sts0 = ctrl_inw(INTSTS0);
-       sts1 = ctrl_inw(INTSTS1);
+       sts0 = __raw_readw(INTSTS0);
+       sts1 = __raw_readw(INTSTS1);
 
        switch (irq) {
        case IRQ0_IRQ:
@@ -108,8 +109,8 @@ static void eoi_se7206_irq(unsigned int irq)
                sts1 &= ~0x00ff;
                break;
        }
-       ctrl_outw(sts0, INTSTS0);
-       ctrl_outw(sts1, INTSTS1);
+       __raw_writew(sts0, INTSTS0);
+       __raw_writew(sts1, INTSTS1);
 }
 
 static struct irq_chip se7206_irq_chip __read_mostly = {
@@ -136,11 +137,11 @@ void __init init_se7206_IRQ(void)
        make_se7206_irq(IRQ0_IRQ); /* SMC91C111 */
        make_se7206_irq(IRQ1_IRQ); /* ATA */
        make_se7206_irq(IRQ3_IRQ); /* SLOT / PCM */
-       ctrl_outw(inw(INTC_ICR1) | 0x000b ,INTC_ICR1 ) ; /* ICR1 */
+       __raw_writew(inw(INTC_ICR1) | 0x000b ,INTC_ICR1 ) ; /* ICR1 */
 
        /* FPGA System register setup*/
-       ctrl_outw(0x0000,INTSTS0); /* Clear INTSTS0 */
-       ctrl_outw(0x0000,INTSTS1); /* Clear INTSTS1 */
+       __raw_writew(0x0000,INTSTS0); /* Clear INTSTS0 */
+       __raw_writew(0x0000,INTSTS1); /* Clear INTSTS1 */
        /* IRQ0=LAN, IRQ1=ATA, IRQ3=SLT,PCM */
-       ctrl_outw(0x0001,INTSEL);
+       __raw_writew(0x0001,INTSEL);
 }
index f546638..8f5c65d 100644 (file)
@@ -50,15 +50,12 @@ static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
 static struct heartbeat_data heartbeat_data = {
        .bit_pos        = heartbeat_bit_pos,
        .nr_bits        = ARRAY_SIZE(heartbeat_bit_pos),
-       .regsize        = 32,
 };
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_32BIT,
 };
 
 static struct platform_device heartbeat_device = {
@@ -67,8 +64,8 @@ static struct platform_device heartbeat_device = {
        .dev    = {
                .platform_data  = &heartbeat_data,
        },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 static struct platform_device *se7206_devices[] __initdata = {
index 051c29d..d4305c2 100644 (file)
 #include <linux/io.h>
 #include <mach-se/mach/se7343.h>
 
+unsigned int se7343_fpga_irq[SE7343_FPGA_IRQ_NR] = { 0, };
+
 static void disable_se7343_irq(unsigned int irq)
 {
-       unsigned int bit = irq - SE7343_FPGA_IRQ_BASE;
-       ctrl_outw(ctrl_inw(PA_CPLD_IMSK) | 1 << bit, PA_CPLD_IMSK);
+       unsigned int bit = (unsigned int)get_irq_chip_data(irq);
+       __raw_writew(__raw_readw(PA_CPLD_IMSK) | 1 << bit, PA_CPLD_IMSK);
 }
 
 static void enable_se7343_irq(unsigned int irq)
 {
-       unsigned int bit = irq - SE7343_FPGA_IRQ_BASE;
-       ctrl_outw(ctrl_inw(PA_CPLD_IMSK) & ~(1 << bit), PA_CPLD_IMSK);
+       unsigned int bit = (unsigned int)get_irq_chip_data(irq);
+       __raw_writew(__raw_readw(PA_CPLD_IMSK) & ~(1 << bit), PA_CPLD_IMSK);
 }
 
 static struct irq_chip se7343_irq_chip __read_mostly = {
@@ -37,19 +39,16 @@ static struct irq_chip se7343_irq_chip __read_mostly = {
 
 static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-       unsigned short intv = ctrl_inw(PA_CPLD_ST);
-       struct irq_desc *ext_desc;
-       unsigned int ext_irq = SE7343_FPGA_IRQ_BASE;
+       unsigned short intv = __raw_readw(PA_CPLD_ST);
+       unsigned int ext_irq = 0;
 
        intv &= (1 << SE7343_FPGA_IRQ_NR) - 1;
 
-       while (intv) {
-               if (intv & 1) {
-                       ext_desc = irq_desc + ext_irq;
-                       handle_level_irq(ext_irq, ext_desc);
-               }
-               intv >>= 1;
-               ext_irq++;
+       for (; intv; intv >>= 1, ext_irq++) {
+               if (!(intv & 1))
+                       continue;
+
+               generic_handle_irq(se7343_fpga_irq[ext_irq]);
        }
 }
 
@@ -58,16 +57,24 @@ static void se7343_irq_demux(unsigned int irq, struct irq_desc *desc)
  */
 void __init init_7343se_IRQ(void)
 {
-       int i;
+       int i, irq;
+
+       __raw_writew(0, PA_CPLD_IMSK);  /* disable all irqs */
+       __raw_writew(0x2000, 0xb03fffec);       /* mrshpc irq enable */
 
-       ctrl_outw(0, PA_CPLD_IMSK);     /* disable all irqs */
-       ctrl_outw(0x2000, 0xb03fffec);  /* mrshpc irq enable */
+       for (i = 0; i < SE7343_FPGA_IRQ_NR; i++) {
+               irq = create_irq();
+               if (irq < 0)
+                       return;
+               se7343_fpga_irq[i] = irq;
 
-       for (i = 0; i < SE7343_FPGA_IRQ_NR; i++)
-               set_irq_chip_and_handler_name(SE7343_FPGA_IRQ_BASE + i,
+               set_irq_chip_and_handler_name(se7343_fpga_irq[i],
                                              &se7343_irq_chip,
                                              handle_level_irq, "level");
 
+               set_irq_chip_data(se7343_fpga_irq[i], (void *)i);
+       }
+
        set_irq_chained_handler(IRQ0_IRQ, se7343_irq_demux);
        set_irq_type(IRQ0_IRQ, IRQ_TYPE_LEVEL_LOW);
        set_irq_chained_handler(IRQ1_IRQ, se7343_irq_demux);
index 4de56f3..d2370af 100644 (file)
 #include <asm/irq.h>
 #include <asm/io.h>
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev = {
-               .platform_data = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 static struct mtd_partition nor_flash_partitions[] = {
@@ -82,7 +73,6 @@ static struct plat_serial8250_port serial_platform_data[] = {
                .mapbase        = 0x16000000,
                .regshift       = 1,
                .flags          = ST16C2550C_FLAGS,
-               .irq            = UARTA_IRQ,
                .uartclk        = 7372800,
        },
        [1] = {
@@ -90,7 +80,6 @@ static struct plat_serial8250_port serial_platform_data[] = {
                .mapbase        = 0x17000000,
                .regshift       = 1,
                .flags          = ST16C2550C_FLAGS,
-               .irq            = UARTB_IRQ,
                .uartclk        = 7372800,
        },
        { },
@@ -121,7 +110,7 @@ static struct resource usb_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [2] = {
-               .start  = USB_IRQ,
+               /* Filled in later */
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -138,8 +127,8 @@ static struct isp116x_platform_data usb_platform_data = {
 static struct platform_device usb_device = {
        .name                   = "isp116x-hcd",
        .id                     = -1,
-       .num_resources          = ARRAY_SIZE(usb_resources),
-       .resource               = usb_resources,
+       .num_resources          = ARRAY_SIZE(usb_resources),
+       .resource               = usb_resources,
        .dev                    = {
                .platform_data  = &usb_platform_data,
        },
@@ -155,6 +144,13 @@ static struct platform_device *sh7343se_platform_devices[] __initdata = {
 
 static int __init sh7343se_devices_setup(void)
 {
+       /* Wire-up dynamic vectors */
+       serial_platform_data[0].irq = se7343_fpga_irq[SE7343_FPGA_IRQ_UARTA];
+       serial_platform_data[1].irq = se7343_fpga_irq[SE7343_FPGA_IRQ_UARTB];
+
+       usb_resources[2].start = usb_resources[2].end =
+               se7343_fpga_irq[SE7343_FPGA_IRQ_USB];
+
        return platform_add_devices(sh7343se_platform_devices,
                                    ARRAY_SIZE(sh7343se_platform_devices));
 }
@@ -165,10 +161,10 @@ device_initcall(sh7343se_devices_setup);
  */
 static void __init sh7343se_setup(char **cmdline_p)
 {
-       ctrl_outw(0xf900, FPGA_OUT);    /* FPGA */
+       __raw_writew(0xf900, FPGA_OUT); /* FPGA */
 
-       ctrl_outw(0x0002, PORT_PECR);   /* PORT E 1 = IRQ5 */
-       ctrl_outw(0x0020, PORT_PSELD);
+       __raw_writew(0x0002, PORT_PECR);        /* PORT E 1 = IRQ5 */
+       __raw_writew(0x0020, PORT_PSELD);
 
        printk(KERN_INFO "MS7343CP01 Setup...done\n");
 }
@@ -179,6 +175,5 @@ static void __init sh7343se_setup(char **cmdline_p)
 static struct sh_machine_vector mv_7343se __initmv = {
        .mv_name = "SolutionEngine 7343",
        .mv_setup = sh7343se_setup,
-       .mv_nr_irqs = SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_NR,
        .mv_init_irq = init_7343se_IRQ,
 };
index ec1fea5..1028c17 100644 (file)
@@ -96,13 +96,13 @@ static struct ipr_desc ipr_irq_desc = {
 void __init init_se_IRQ(void)
 {
        /* Disable all interrupts */
-       ctrl_outw(0, BCR_ILCRA);
-       ctrl_outw(0, BCR_ILCRB);
-       ctrl_outw(0, BCR_ILCRC);
-       ctrl_outw(0, BCR_ILCRD);
-       ctrl_outw(0, BCR_ILCRE);
-       ctrl_outw(0, BCR_ILCRF);
-       ctrl_outw(0, BCR_ILCRG);
+       __raw_writew(0, BCR_ILCRA);
+       __raw_writew(0, BCR_ILCRB);
+       __raw_writew(0, BCR_ILCRC);
+       __raw_writew(0, BCR_ILCRD);
+       __raw_writew(0, BCR_ILCRE);
+       __raw_writew(0, BCR_ILCRF);
+       __raw_writew(0, BCR_ILCRG);
 
        register_ipr_controller(&ipr_irq_desc);
 }
index 527eb6b..66d39d1 100644 (file)
@@ -93,15 +93,12 @@ static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
 static struct heartbeat_data heartbeat_data = {
        .bit_pos        = heartbeat_bit_pos,
        .nr_bits        = ARRAY_SIZE(heartbeat_bit_pos),
-       .regsize        = 16,
 };
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
@@ -110,8 +107,8 @@ static struct platform_device heartbeat_device = {
        .dev    = {
                .platform_data  = &heartbeat_data,
        },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 #if defined(CONFIG_CPU_SUBTYPE_SH7710) ||\
index b417acc..d85022e 100644 (file)
@@ -38,7 +38,7 @@ static DECLARE_INTC_DESC(intc_desc, "SE7721", vectors,
 void __init init_se7721_IRQ(void)
 {
        /* PPCR */
-       ctrl_outw(ctrl_inw(0xa4050118) & ~0x00ff, 0xa4050118);
+       __raw_writew(__raw_readw(0xa4050118) & ~0x00ff, 0xa4050118);
 
        register_intc_controller(&intc_desc);
        intc_set_priority(MRSHPC_IRQ0, 0xf - MRSHPC_IRQ0);
index 55af4c3..7416ad7 100644 (file)
@@ -23,15 +23,12 @@ static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
 static struct heartbeat_data heartbeat_data = {
        .bit_pos        = heartbeat_bit_pos,
        .nr_bits        = ARRAY_SIZE(heartbeat_bit_pos),
-       .regsize        = 16,
 };
 
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
@@ -40,8 +37,8 @@ static struct platform_device heartbeat_device = {
        .dev    = {
                .platform_data  = &heartbeat_data,
        },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 static struct resource cf_ide_resources[] = {
@@ -83,10 +80,10 @@ device_initcall(se7721_devices_setup);
 static void __init se7721_setup(char **cmdline_p)
 {
        /* for USB */
-       ctrl_outw(0x0000, 0xA405010C);  /* PGCR */
-       ctrl_outw(0x0000, 0xA405010E);  /* PHCR */
-       ctrl_outw(0x00AA, 0xA4050118);  /* PPCR */
-       ctrl_outw(0x0000, 0xA4050124);  /* PSELA */
+       __raw_writew(0x0000, 0xA405010C);       /* PGCR */
+       __raw_writew(0x0000, 0xA405010E);       /* PHCR */
+       __raw_writew(0x00AA, 0xA4050118);       /* PPCR */
+       __raw_writew(0x0000, 0xA4050124);       /* PSELA */
 }
 
 /*
index b221b68..61605db 100644 (file)
@@ -21,13 +21,13 @@ unsigned int se7722_fpga_irq[SE7722_FPGA_IRQ_NR] = { 0, };
 static void disable_se7722_irq(unsigned int irq)
 {
        unsigned int bit = (unsigned int)get_irq_chip_data(irq);
-       ctrl_outw(ctrl_inw(IRQ01_MASK) | 1 << bit, IRQ01_MASK);
+       __raw_writew(__raw_readw(IRQ01_MASK) | 1 << bit, IRQ01_MASK);
 }
 
 static void enable_se7722_irq(unsigned int irq)
 {
        unsigned int bit = (unsigned int)get_irq_chip_data(irq);
-       ctrl_outw(ctrl_inw(IRQ01_MASK) & ~(1 << bit), IRQ01_MASK);
+       __raw_writew(__raw_readw(IRQ01_MASK) & ~(1 << bit), IRQ01_MASK);
 }
 
 static struct irq_chip se7722_irq_chip __read_mostly = {
@@ -39,7 +39,7 @@ static struct irq_chip se7722_irq_chip __read_mostly = {
 
 static void se7722_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-       unsigned short intv = ctrl_inw(IRQ01_STS);
+       unsigned short intv = __raw_readw(IRQ01_STS);
        unsigned int ext_irq = 0;
 
        intv &= (1 << SE7722_FPGA_IRQ_NR) - 1;
@@ -59,8 +59,8 @@ void __init init_se7722_IRQ(void)
 {
        int i, irq;
 
-       ctrl_outw(0, IRQ01_MASK);       /* disable all irqs */
-       ctrl_outw(0x2000, 0xb03fffec);  /* mrshpc irq enable */
+       __raw_writew(0, IRQ01_MASK);       /* disable all irqs */
+       __raw_writew(0x2000, 0xb03fffec);  /* mrshpc irq enable */
 
        for (i = 0; i < SE7722_FPGA_IRQ_NR; i++) {
                irq = create_irq();
index b1cb942..80a4e57 100644 (file)
 #include <cpu/sh7722.h>
 
 /* Heartbeat */
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
-};
-
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev = {
-               .platform_data = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* SMC91x */
@@ -165,32 +156,32 @@ device_initcall(se7722_devices_setup);
 
 static void __init se7722_setup(char **cmdline_p)
 {
-       ctrl_outw(0x010D, FPGA_OUT);    /* FPGA */
+       __raw_writew(0x010D, FPGA_OUT);    /* FPGA */
 
-       ctrl_outw(0x0000, PORT_PECR);   /* PORT E 1 = IRQ5 ,E 0 = BS */
-       ctrl_outw(0x1000, PORT_PJCR);   /* PORT J 1 = IRQ1,J 0 =IRQ0 */
+       __raw_writew(0x0000, PORT_PECR);   /* PORT E 1 = IRQ5 ,E 0 = BS */
+       __raw_writew(0x1000, PORT_PJCR);   /* PORT J 1 = IRQ1,J 0 =IRQ0 */
 
        /* LCDC I/O */
-       ctrl_outw(0x0020, PORT_PSELD);
+       __raw_writew(0x0020, PORT_PSELD);
 
        /* SIOF1*/
-       ctrl_outw(0x0003, PORT_PSELB);
-       ctrl_outw(0xe000, PORT_PSELC);
-       ctrl_outw(0x0000, PORT_PKCR);
+       __raw_writew(0x0003, PORT_PSELB);
+       __raw_writew(0xe000, PORT_PSELC);
+       __raw_writew(0x0000, PORT_PKCR);
 
        /* LCDC */
-       ctrl_outw(0x4020, PORT_PHCR);
-       ctrl_outw(0x0000, PORT_PLCR);
-       ctrl_outw(0x0000, PORT_PMCR);
-       ctrl_outw(0x0002, PORT_PRCR);
-       ctrl_outw(0x0000, PORT_PXCR);   /* LCDC,CS6A */
+       __raw_writew(0x4020, PORT_PHCR);
+       __raw_writew(0x0000, PORT_PLCR);
+       __raw_writew(0x0000, PORT_PMCR);
+       __raw_writew(0x0002, PORT_PRCR);
+       __raw_writew(0x0000, PORT_PXCR);   /* LCDC,CS6A */
 
        /* KEYSC */
-       ctrl_outw(0x0A10, PORT_PSELA); /* BS,SHHID2 */
-       ctrl_outw(0x0000, PORT_PYCR);
-       ctrl_outw(0x0000, PORT_PZCR);
-       ctrl_outw(ctrl_inw(PORT_HIZCRA) & ~0x4000, PORT_HIZCRA);
-       ctrl_outw(ctrl_inw(PORT_HIZCRC) & ~0xc000, PORT_HIZCRC);
+       __raw_writew(0x0A10, PORT_PSELA); /* BS,SHHID2 */
+       __raw_writew(0x0000, PORT_PYCR);
+       __raw_writew(0x0000, PORT_PZCR);
+       __raw_writew(__raw_readw(PORT_HIZCRA) & ~0x4000, PORT_HIZCRA);
+       __raw_writew(__raw_readw(PORT_HIZCRC) & ~0xc000, PORT_HIZCRC);
 }
 
 /*
index f76cf3b..0942be2 100644 (file)
@@ -72,14 +72,14 @@ static void disable_se7724_irq(unsigned int irq)
 {
        struct fpga_irq set = get_fpga_irq(fpga2irq(irq));
        unsigned int bit = irq - set.base;
-       ctrl_outw(ctrl_inw(set.mraddr) | 0x0001 << bit, set.mraddr);
+       __raw_writew(__raw_readw(set.mraddr) | 0x0001 << bit, set.mraddr);
 }
 
 static void enable_se7724_irq(unsigned int irq)
 {
        struct fpga_irq set = get_fpga_irq(fpga2irq(irq));
        unsigned int bit = irq - set.base;
-       ctrl_outw(ctrl_inw(set.mraddr) & ~(0x0001 << bit), set.mraddr);
+       __raw_writew(__raw_readw(set.mraddr) & ~(0x0001 << bit), set.mraddr);
 }
 
 static struct irq_chip se7724_irq_chip __read_mostly = {
@@ -92,19 +92,16 @@ static struct irq_chip se7724_irq_chip __read_mostly = {
 static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
        struct fpga_irq set = get_fpga_irq(irq);
-       unsigned short intv = ctrl_inw(set.sraddr);
-       struct irq_desc *ext_desc;
+       unsigned short intv = __raw_readw(set.sraddr);
        unsigned int ext_irq = set.base;
 
        intv &= set.mask;
 
-       while (intv) {
-               if (intv & 0x0001) {
-                       ext_desc = irq_desc + ext_irq;
-                       handle_level_irq(ext_irq, ext_desc);
-               }
-               intv >>= 1;
-               ext_irq++;
+       for (; intv; intv >>= 1, ext_irq++) {
+               if (!(intv & 1))
+                       continue;
+
+               generic_handle_irq(ext_irq);
        }
 }
 
@@ -113,20 +110,39 @@ static void se7724_irq_demux(unsigned int irq, struct irq_desc *desc)
  */
 void __init init_se7724_IRQ(void)
 {
-       int i;
-
-       ctrl_outw(0xffff, IRQ0_MR);  /* mask all */
-       ctrl_outw(0xffff, IRQ1_MR);  /* mask all */
-       ctrl_outw(0xffff, IRQ2_MR);  /* mask all */
-       ctrl_outw(0x0000, IRQ0_SR);  /* clear irq */
-       ctrl_outw(0x0000, IRQ1_SR);  /* clear irq */
-       ctrl_outw(0x0000, IRQ2_SR);  /* clear irq */
-       ctrl_outw(0x002a, IRQ_MODE); /* set irq type */
-
-       for (i = 0; i < SE7724_FPGA_IRQ_NR; i++)
-               set_irq_chip_and_handler_name(SE7724_FPGA_IRQ_BASE + i,
+       int i, nid = cpu_to_node(boot_cpu_data);
+
+       __raw_writew(0xffff, IRQ0_MR);  /* mask all */
+       __raw_writew(0xffff, IRQ1_MR);  /* mask all */
+       __raw_writew(0xffff, IRQ2_MR);  /* mask all */
+       __raw_writew(0x0000, IRQ0_SR);  /* clear irq */
+       __raw_writew(0x0000, IRQ1_SR);  /* clear irq */
+       __raw_writew(0x0000, IRQ2_SR);  /* clear irq */
+       __raw_writew(0x002a, IRQ_MODE); /* set irq type */
+
+       for (i = 0; i < SE7724_FPGA_IRQ_NR; i++) {
+               int irq, wanted;
+
+               wanted = SE7724_FPGA_IRQ_BASE + i;
+
+               irq = create_irq_nr(wanted, nid);
+               if (unlikely(irq == 0)) {
+                       pr_err("%s: failed hooking irq %d for FPGA\n",
+                              __func__, wanted);
+                       return;
+               }
+
+               if (unlikely(irq != wanted)) {
+                       pr_err("%s: got irq %d but wanted %d, bailing.\n",
+                              __func__, irq, wanted);
+                       destroy_irq(irq);
+                       return;
+               }
+
+               set_irq_chip_and_handler_name(irq,
                                              &se7724_irq_chip,
                                              handle_level_irq, "level");
+       }
 
        set_irq_chained_handler(IRQ0_IRQ, se7724_irq_demux);
        set_irq_type(IRQ0_IRQ, IRQ_TYPE_LEVEL_LOW);
index 9040167..6fa4734 100644 (file)
@@ -39,6 +39,10 @@ ENTRY(ms7724se_sdram_leave_start)
 
        /* DBSC: put memory in auto-refresh mode */
 
+       mov.l   @(SH_SLEEP_MODE, r5), r0
+       tst     #SUSP_SH_RSTANDBY, r0
+       bf      resume_rstandby
+
        ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
        WAIT 1
        ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
@@ -49,4 +53,79 @@ ENTRY(ms7724se_sdram_leave_start)
        rts
         nop
 
+resume_rstandby:
+
+       /* CPG: setup clocks before restarting external memory */
+
+       ED 0xA4150024, 0x00004000 /* PLLCR */
+
+       mov.l   FRQCRA,r0
+       mov.l   @r0,r3
+       mov.l   KICK,r1
+       or      r1, r3
+       mov.l   r3, @r0
+
+       mov.l   LSTATS,r0
+       mov     #1,r1
+WAIT_LSTATS:
+       mov.l   @r0,r3
+       tst     r1,r3
+       bf      WAIT_LSTATS
+
+       /* DBSC: re-initialize and put in auto-refresh */
+
+       ED 0xFD000108, 0x00000181 /* DBPDCNT0 */
+       ED 0xFD000020, 0x015B0002 /* DBCONF */
+       ED 0xFD000030, 0x03071502 /* DBTR0 */
+       ED 0xFD000034, 0x02020102 /* DBTR1 */
+       ED 0xFD000038, 0x01090405 /* DBTR2 */
+       ED 0xFD00003C, 0x00000002 /* DBTR3 */
+       ED 0xFD000008, 0x00000005 /* DBKIND */
+       ED 0xFD000040, 0x00000001 /* DBRFPDN0 */
+       ED 0xFD000040, 0x00000000 /* DBRFPDN0 */
+       ED 0xFD000018, 0x00000001 /* DBCKECNT */
+
+       mov     #100,r0
+WAIT_400NS:
+       dt      r0
+       bf      WAIT_400NS
+
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000060, 0x00020000 /* DBMRCNT (EMR2) */
+       ED 0xFD000060, 0x00030000 /* DBMRCNT (EMR3) */
+       ED 0xFD000060, 0x00010004 /* DBMRCNT (EMR) */
+       ED 0xFD000060, 0x00000532 /* DBMRCNT (MRS) */
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000060, 0x00000432 /* DBMRCNT (MRS) */
+       ED 0xFD000060, 0x000103c0 /* DBMRCNT (EMR) */
+       ED 0xFD000060, 0x00010040 /* DBMRCNT (EMR) */
+
+       mov     #100,r0
+WAIT_400NS_2:
+       dt      r0
+       bf      WAIT_400NS_2
+
+       ED 0xFD000010, 0x00000001 /* DBEN */
+       ED 0xFD000044, 0x0000050f /* DBRFPDN1 */
+       ED 0xFD000048, 0x236800e6 /* DBRFPDN2 */
+
+       mov.l   DUMMY,r0
+       mov.l   @r0, r1 /* force single dummy read */
+
+       ED 0xFD000014, 0x00000002 /* DBCMDCNT (PALL) */
+       ED 0xFD000014, 0x00000004 /* DBCMDCNT (REF) */
+       ED 0xFD000108, 0x00000080 /* DBPDCNT0 */
+       ED 0xFD000040, 0x00010000 /* DBRFPDN0 */
+
+       rts
+        nop
+
+       .balign 4
+DUMMY: .long   0xac400000
+FRQCRA:        .long   0xa4150000
+KICK:  .long   0x80000000
+LSTATS:        .long   0xa4150060
+
 ENTRY(ms7724se_sdram_leave_end)
index 858ecb2..66cdbc3 100644 (file)
  */
 
 /* Heartbeat */
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
-};
-
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev = {
-               .platform_data = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* LAN91C111 */
@@ -265,12 +256,12 @@ static struct platform_device ceu1_device = {
 #define FCLKACR                0xa4150008
 static void fsimck_init(struct clk *clk)
 {
-       u32 status = ctrl_inl(clk->enable_reg);
+       u32 status = __raw_readl(clk->enable_reg);
 
        /* use external clock */
        status &= ~0x000000ff;
        status |= 0x00000080;
-       ctrl_outl(status, clk->enable_reg);
+       __raw_writel(status, clk->enable_reg);
 }
 
 static struct clk_ops fsimck_clk_ops = {
@@ -322,7 +313,7 @@ static struct platform_device fsi_device = {
 /* KEYSC in SoC (Needs SW33-2 set to ON) */
 static struct sh_keysc_info keysc_info = {
        .mode = SH_KEYSC_MODE_1,
-       .scan_timing = 10,
+       .scan_timing = 3,
        .delay = 50,
        .keycodes = {
                KEY_1, KEY_2, KEY_3, KEY_4, KEY_5,
@@ -460,7 +451,7 @@ static struct resource sdhi0_cn7_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 101,
+               .start  = 100,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -483,7 +474,7 @@ static struct resource sdhi1_cn8_resources[] = {
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
-               .start  = 24,
+               .start  = 23,
                .flags  = IORESOURCE_IRQ,
        },
 };
@@ -498,6 +489,26 @@ static struct platform_device sdhi1_cn8_device = {
        },
 };
 
+/* IrDA */
+static struct resource irda_resources[] = {
+       [0] = {
+               .name   = "IrDA",
+               .start  = 0xA45D0000,
+               .end    = 0xA45D0049,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = 20,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device irda_device = {
+       .name           = "sh_sir",
+       .num_resources  = ARRAY_SIZE(irda_resources),
+       .resource       = irda_resources,
+};
+
 static struct platform_device *ms7724se_devices[] __initdata = {
        &heartbeat_device,
        &smc91x_eth_device,
@@ -512,6 +523,7 @@ static struct platform_device *ms7724se_devices[] __initdata = {
        &fsi_device,
        &sdhi0_cn7_device,
        &sdhi1_cn8_device,
+       &irda_device,
 };
 
 /* I2C device */
@@ -531,7 +543,7 @@ static int __init sh_eth_is_eeprom_ready(void)
        int t = 10000;
 
        while (t--) {
-               if (!ctrl_inw(EEPROM_STAT))
+               if (!__raw_readw(EEPROM_STAT))
                        return 1;
                udelay(1);
        }
@@ -551,13 +563,13 @@ static void __init sh_eth_init(void)
 
        /* read MAC addr from EEPROM */
        for (i = 0 ; i < 3 ; i++) {
-               ctrl_outw(0x0, EEPROM_OP); /* read */
-               ctrl_outw(i*2, EEPROM_ADR);
-               ctrl_outw(0x1, EEPROM_STRT);
+               __raw_writew(0x0, EEPROM_OP); /* read */
+               __raw_writew(i*2, EEPROM_ADR);
+               __raw_writew(0x1, EEPROM_STRT);
                if (!sh_eth_is_eeprom_ready())
                        return;
 
-               mac = ctrl_inw(EEPROM_DATA);
+               mac = __raw_readw(EEPROM_DATA);
                sh_eth_plat.mac_addr[i << 1] = mac & 0xff;
                sh_eth_plat.mac_addr[(i << 1) + 1] = mac >> 8;
        }
@@ -594,28 +606,29 @@ arch_initcall(arch_setup);
 
 static int __init devices_setup(void)
 {
-       u16 sw = ctrl_inw(SW4140); /* select camera, monitor */
-       struct clk *fsia_clk;
+       u16 sw = __raw_readw(SW4140); /* select camera, monitor */
+       struct clk *clk;
 
        /* register board specific self-refresh code */
-       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF,
+       sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF |
+                                       SUSP_SH_RSTANDBY,
                                        &ms7724se_sdram_enter_start,
                                        &ms7724se_sdram_enter_end,
                                        &ms7724se_sdram_leave_start,
                                        &ms7724se_sdram_leave_end);
        /* Reset Release */
-       ctrl_outw(ctrl_inw(FPGA_OUT) &
+       __raw_writew(__raw_readw(FPGA_OUT) &
                  ~((1 << 1)  | /* LAN */
                    (1 << 6)  | /* VIDEO DAC */
                    (1 << 7)  | /* AK4643 */
+                   (1 << 8)  | /* IrDA */
                    (1 << 12) | /* USB0 */
                    (1 << 14)), /* RMII */
                  FPGA_OUT);
 
        /* turn on USB clocks, use external clock */
-       ctrl_outw((ctrl_inw(PORT_MSELCRB) & ~0xc000) | 0x8000, PORT_MSELCRB);
+       __raw_writew((__raw_readw(PORT_MSELCRB) & ~0xc000) | 0x8000, PORT_MSELCRB);
 
-#ifdef CONFIG_PM
        /* Let LED9 show STATUS2 */
        gpio_request(GPIO_FN_STATUS2, NULL);
 
@@ -624,28 +637,12 @@ static int __init devices_setup(void)
 
        /* Lit LED11 show PDSTATUS */
        gpio_request(GPIO_FN_PDSTATUS, NULL);
-#else
-       /* Lit LED9 */
-       gpio_request(GPIO_PTJ6, NULL);
-       gpio_direction_output(GPIO_PTJ6, 1);
-       gpio_export(GPIO_PTJ6, 0);
-
-       /* Lit LED10 */
-       gpio_request(GPIO_PTJ5, NULL);
-       gpio_direction_output(GPIO_PTJ5, 1);
-       gpio_export(GPIO_PTJ5, 0);
-
-       /* Lit LED11 */
-       gpio_request(GPIO_PTJ7, NULL);
-       gpio_direction_output(GPIO_PTJ7, 1);
-       gpio_export(GPIO_PTJ7, 0);
-#endif
 
        /* enable USB0 port */
-       ctrl_outw(0x0600, 0xa40501d4);
+       __raw_writew(0x0600, 0xa40501d4);
 
        /* enable USB1 port */
-       ctrl_outw(0x0600, 0xa4050192);
+       __raw_writew(0x0600, 0xa4050192);
 
        /* enable IRQ 0,1,2 */
        gpio_request(GPIO_FN_INTC_IRQ0, NULL);
@@ -693,7 +690,7 @@ static int __init devices_setup(void)
        gpio_request(GPIO_FN_LCDVCPWC, NULL);
        gpio_request(GPIO_FN_LCDRD,    NULL);
        gpio_request(GPIO_FN_LCDLCLK,  NULL);
-       ctrl_outw((ctrl_inw(PORT_HIZA) & ~0x0001), PORT_HIZA);
+       __raw_writew((__raw_readw(PORT_HIZA) & ~0x0001), PORT_HIZA);
 
        /* enable CEU0 */
        gpio_request(GPIO_FN_VIO0_D15, NULL);
@@ -764,13 +761,18 @@ static int __init devices_setup(void)
        gpio_request(GPIO_FN_CLKAUDIOBO, NULL);
        gpio_request(GPIO_FN_FSIIASD,    NULL);
 
+       /* set SPU2 clock to 83.4 MHz */
+       clk = clk_get(NULL, "spu_clk");
+       clk_set_rate(clk, clk_round_rate(clk, 83333333));
+       clk_put(clk);
+
        /* change parent of FSI A */
-       fsia_clk = clk_get(NULL, "fsia_clk");
+       clk = clk_get(NULL, "fsia_clk");
        clk_register(&fsimcka_clk);
-       clk_set_parent(fsia_clk, &fsimcka_clk);
-       clk_set_rate(fsia_clk, 11000);
+       clk_set_parent(clk, &fsimcka_clk);
+       clk_set_rate(clk, 11000);
        clk_set_rate(&fsimcka_clk, 11000);
-       clk_put(fsia_clk);
+       clk_put(clk);
 
        /* SDHI0 connected to cn7 */
        gpio_request(GPIO_FN_SDHI0CD, NULL);
@@ -792,6 +794,10 @@ static int __init devices_setup(void)
        gpio_request(GPIO_FN_SDHI1CMD, NULL);
        gpio_request(GPIO_FN_SDHI1CLK, NULL);
 
+       /* enable IrDA */
+       gpio_request(GPIO_FN_IRDA_OUT, NULL);
+       gpio_request(GPIO_FN_IRDA_IN,  NULL);
+
        /*
         * enable SH-Eth
         *
index 121744c..d5c9edc 100644 (file)
 void __init init_se7780_IRQ(void)
 {
        /* enable all interrupt at FPGA */
-       ctrl_outw(0, FPGA_INTMSK1);
+       __raw_writew(0, FPGA_INTMSK1);
        /* mask SM501 interrupt */
-       ctrl_outw((ctrl_inw(FPGA_INTMSK1) | 0x0002), FPGA_INTMSK1);
+       __raw_writew((__raw_readw(FPGA_INTMSK1) | 0x0002), FPGA_INTMSK1);
        /* enable all interrupt at FPGA */
-       ctrl_outw(0, FPGA_INTMSK2);
+       __raw_writew(0, FPGA_INTMSK2);
 
        /* set FPGA INTSEL register */
        /* FPGA + 0x06 */
-       ctrl_outw( ((IRQPIN_SM501 << IRQPOS_SM501) |
+       __raw_writew( ((IRQPIN_SM501 << IRQPOS_SM501) |
                (IRQPIN_SMC91CX << IRQPOS_SMC91CX)), FPGA_INTSEL1);
 
        /* FPGA + 0x08 */
-       ctrl_outw(((IRQPIN_EXTINT4 << IRQPOS_EXTINT4) |
+       __raw_writew(((IRQPIN_EXTINT4 << IRQPOS_EXTINT4) |
                (IRQPIN_EXTINT3 << IRQPOS_EXTINT3) |
                (IRQPIN_EXTINT2 << IRQPOS_EXTINT2) |
                (IRQPIN_EXTINT1 << IRQPOS_EXTINT1)), FPGA_INTSEL2);
 
        /* FPGA + 0x0A */
-       ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3);
+       __raw_writew((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3);
 
        plat_irq_setup_pins(IRQ_MODE_IRQ); /* install handlers for IRQ0-7 */
 
        /* ICR1: detect low level(for 2ndcut) */
-       ctrl_outl(0xAAAA0000, INTC_ICR1);
+       __raw_writel(0xAAAA0000, INTC_ICR1);
 
        /*
         * FPGA PCISEL register initialize
@@ -63,6 +63,6 @@ void __init init_se7780_IRQ(void)
         *  INTD || INTD  | INTC  |  --   | INTA
         *  -------------------------------------
         */
-       ctrl_outw(0x0013, FPGA_PCI_INTSEL1);
-       ctrl_outw(0xE402, FPGA_PCI_INTSEL2);
+       __raw_writew(0x0013, FPGA_PCI_INTSEL1);
+       __raw_writew(0xE402, FPGA_PCI_INTSEL2);
 }
index 1d3a867..6f7c207 100644 (file)
 #include <asm/heartbeat.h>
 
 /* Heartbeat */
-static struct heartbeat_data heartbeat_data = {
-       .regsize = 16,
-};
-
-static struct resource heartbeat_resources[] = {
-       [0] = {
-               .start  = PA_LED,
-               .end    = PA_LED,
-               .flags  = IORESOURCE_MEM,
-       },
+static struct resource heartbeat_resource = {
+       .start  = PA_LED,
+       .end    = PA_LED,
+       .flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT,
 };
 
 static struct platform_device heartbeat_device = {
        .name           = "heartbeat",
        .id             = -1,
-       .dev = {
-               .platform_data = &heartbeat_data,
-       },
-       .num_resources  = ARRAY_SIZE(heartbeat_resources),
-       .resource       = heartbeat_resources,
+       .num_resources  = 1,
+       .resource       = &heartbeat_resource,
 };
 
 /* SMC91x */
@@ -84,14 +75,14 @@ device_initcall(se7780_devices_setup);
 static void __init se7780_setup(char **cmdline_p)
 {
        /* "SH-Linux" on LED Display */
-       ctrl_outw( 'S' , PA_LED_DISP + (DISP_SEL0_ADDR << 1) );
-       ctrl_outw( 'H' , PA_LED_DISP + (DISP_SEL1_ADDR << 1) );
-       ctrl_outw( '-' , PA_LED_DISP + (DISP_SEL2_ADDR << 1) );
-       ctrl_outw( 'L' , PA_LED_DISP + (DISP_SEL3_ADDR << 1) );
-       ctrl_outw( 'i' , PA_LED_DISP + (DISP_SEL4_ADDR << 1) );
-       ctrl_outw( 'n' , PA_LED_DISP + (DISP_SEL5_ADDR << 1) );
-       ctrl_outw( 'u' , PA_LED_DISP + (DISP_SEL6_ADDR << 1) );
-       ctrl_outw( 'x' , PA_LED_DISP + (DISP_SEL7_ADDR << 1) );
+       __raw_writew( 'S' , PA_LED_DISP + (DISP_SEL0_ADDR << 1) );
+       __raw_writew( 'H' , PA_LED_DISP + (DISP_SEL1_ADDR << 1) );
+       __raw_writew( '-' , PA_LED_DISP + (DISP_SEL2_ADDR << 1) );
+       __raw_writew( 'L' , PA_LED_DISP + (DISP_SEL3_ADDR << 1) );
+       __raw_writew( 'i' , PA_LED_DISP + (DISP_SEL4_ADDR << 1) );
+       __raw_writew( 'n' , PA_LED_DISP + (DISP_SEL5_ADDR << 1) );
+       __raw_writew( 'u' , PA_LED_DISP + (DISP_SEL6_ADDR << 1) );
+       __raw_writew( 'x' , PA_LED_DISP + (DISP_SEL7_ADDR << 1) );
 
        printk(KERN_INFO "Hitachi UL Solutions Engine 7780SE03 support.\n");
 
@@ -102,15 +93,15 @@ static void __init se7780_setup(char **cmdline_p)
         *   REQ2/GNT2 -> Serial ATA
         *   REQ3/GNT3 -> PCI slot
         */
-       ctrl_outw(0x0213, FPGA_REQSEL);
+       __raw_writew(0x0213, FPGA_REQSEL);
 
        /* GPIO setting */
-       ctrl_outw(0x0000, GPIO_PECR);
-       ctrl_outw(ctrl_inw(GPIO_PHCR)&0xfff3, GPIO_PHCR);
-       ctrl_outw(0x0c00, GPIO_PMSELR);
+       __raw_writew(0x0000, GPIO_PECR);
+       __raw_writew(__raw_readw(GPIO_PHCR)&0xfff3, GPIO_PHCR);
+       __raw_writew(0x0c00, GPIO_PMSELR);
 
        /* iVDR Power ON */
-       ctrl_outw(0x0001, FPGA_IVDRPW);
+       __raw_writew(0x0001, FPGA_IVDRPW);
 }
 
 /*
index a8b9f84..1b20099 100644 (file)
@@ -44,15 +44,15 @@ unsigned long get_cmos_time(void)
        spin_lock(&sh03_rtc_lock);
  again:
        do {
-               sec  = (ctrl_inb(RTC_SEC1) & 0xf) + (ctrl_inb(RTC_SEC10) & 0x7) * 10;
-               min  = (ctrl_inb(RTC_MIN1) & 0xf) + (ctrl_inb(RTC_MIN10) & 0xf) * 10;
-               hour = (ctrl_inb(RTC_HOU1) & 0xf) + (ctrl_inb(RTC_HOU10) & 0xf) * 10;
-               day  = (ctrl_inb(RTC_DAY1) & 0xf) + (ctrl_inb(RTC_DAY10) & 0xf) * 10;
-               mon  = (ctrl_inb(RTC_MON1) & 0xf) + (ctrl_inb(RTC_MON10) & 0xf) * 10;
-               year = (ctrl_inb(RTC_YEA1) & 0xf) + (ctrl_inb(RTC_YEA10) & 0xf) * 10
-                    + (ctrl_inb(RTC_YEA100 ) & 0xf) * 100
-                    + (ctrl_inb(RTC_YEA1000) & 0xf) * 1000;
-       } while (sec != (ctrl_inb(RTC_SEC1) & 0xf) + (ctrl_inb(RTC_SEC10) & 0x7) * 10);
+               sec  = (__raw_readb(RTC_SEC1) & 0xf) + (__raw_readb(RTC_SEC10) & 0x7) * 10;
+               min  = (__raw_readb(RTC_MIN1) & 0xf) + (__raw_readb(RTC_MIN10) & 0xf) * 10;
+               hour = (__raw_readb(RTC_HOU1) & 0xf) + (__raw_readb(RTC_HOU10) & 0xf) * 10;
+               day  = (__raw_readb(RTC_DAY1) & 0xf) + (__raw_readb(RTC_DAY10) & 0xf) * 10;
+               mon  = (__raw_readb(RTC_MON1) & 0xf) + (__raw_readb(RTC_MON10) & 0xf) * 10;
+               year = (__raw_readb(RTC_YEA1) & 0xf) + (__raw_readb(RTC_YEA10) & 0xf) * 10
+                    + (__raw_readb(RTC_YEA100 ) & 0xf) * 100
+                    + (__raw_readb(RTC_YEA1000) & 0xf) * 1000;
+       } while (sec != (__raw_readb(RTC_SEC1) & 0xf) + (__raw_readb(RTC_SEC10) & 0x7) * 10);
        if (year == 0 || mon < 1 || mon > 12 || day > 31 || day < 1 ||
            hour > 23 || min > 59 || sec > 59) {
                printk(KERN_ERR
@@ -60,16 +60,16 @@ unsigned long get_cmos_time(void)
                printk("year=%d, mon=%d, day=%d, hour=%d, min=%d, sec=%d\n",
                       year, mon, day, hour, min, sec);
 
-               ctrl_outb(0, RTC_SEC1); ctrl_outb(0, RTC_SEC10);
-               ctrl_outb(0, RTC_MIN1); ctrl_outb(0, RTC_MIN10);
-               ctrl_outb(0, RTC_HOU1); ctrl_outb(0, RTC_HOU10);
-               ctrl_outb(6, RTC_WEE1);
-               ctrl_outb(1, RTC_DAY1); ctrl_outb(0, RTC_DAY10);
-               ctrl_outb(1, RTC_MON1); ctrl_outb(0, RTC_MON10);
-               ctrl_outb(0, RTC_YEA1); ctrl_outb(0, RTC_YEA10);
-               ctrl_outb(0, RTC_YEA100);
-               ctrl_outb(2, RTC_YEA1000);
-               ctrl_outb(0, RTC_CTL);
+               __raw_writeb(0, RTC_SEC1); __raw_writeb(0, RTC_SEC10);
+               __raw_writeb(0, RTC_MIN1); __raw_writeb(0, RTC_MIN10);
+               __raw_writeb(0, RTC_HOU1); __raw_writeb(0, RTC_HOU10);
+               __raw_writeb(6, RTC_WEE1);
+               __raw_writeb(1, RTC_DAY1); __raw_writeb(0, RTC_DAY10);
+               __raw_writeb(1, RTC_MON1); __raw_writeb(0, RTC_MON10);
+               __raw_writeb(0, RTC_YEA1); __raw_writeb(0, RTC_YEA10);
+               __raw_writeb(0, RTC_YEA100);
+               __raw_writeb(2, RTC_YEA1000);
+               __raw_writeb(0, RTC_CTL);
                goto again;
        }
 
@@ -93,9 +93,9 @@ static int set_rtc_mmss(unsigned long nowtime)
        /* gets recalled with irq locally disabled */
        spin_lock(&sh03_rtc_lock);
        for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */
-               if (!(ctrl_inb(RTC_CTL) & RTC_BUSY))
+               if (!(__raw_readb(RTC_CTL) & RTC_BUSY))
                        break;
-       cmos_minutes = (ctrl_inb(RTC_MIN1) & 0xf) + (ctrl_inb(RTC_MIN10) & 0xf) * 10;
+       cmos_minutes = (__raw_readb(RTC_MIN1) & 0xf) + (__raw_readb(RTC_MIN10) & 0xf) * 10;
        real_seconds = nowtime % 60;
        real_minutes = nowtime / 60;
        if (((abs(real_minutes - cmos_minutes) + 15)/30) & 1)
@@ -103,10 +103,10 @@ static int set_rtc_mmss(unsigned long nowtime)
        real_minutes %= 60;
 
        if (abs(real_minutes - cmos_minutes) < 30) {
-               ctrl_outb(real_seconds % 10, RTC_SEC1);
-               ctrl_outb(real_seconds / 10, RTC_SEC10);
-               ctrl_outb(real_minutes % 10, RTC_MIN1);
-               ctrl_outb(real_minutes / 10, RTC_MIN10);
+               __raw_writeb(real_seconds % 10, RTC_SEC1);
+               __raw_writeb(real_seconds / 10, RTC_SEC10);
+               __raw_writeb(real_minutes % 10, RTC_MIN1);
+               __raw_writeb(real_minutes / 10, RTC_MIN10);
        } else {
                printk(KERN_WARNING
                       "set_rtc_mmss: can't update from %d to %d\n",
index 74cfb4b..af4a0c0 100644 (file)
@@ -82,7 +82,7 @@ static int __init sh03_devices_setup(void)
        /* open I/O area window */
        paddrbase = virt_to_phys((void *)PA_AREA5_IO);
        prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16);
-       cf_ide_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
+       cf_ide_base = ioremap_prot(paddrbase, PAGE_SIZE, pgprot_val(prot));
        if (!cf_ide_base) {
                printk("allocate_cf_area : can't open CF I/O window!\n");
                return -ENOMEM;
index d8ebfa7..add698c 100644 (file)
 void __init init_sh7763rdp_IRQ(void)
 {
        /* GPIO enabled */
-       ctrl_outl(1 << 25, INTC_INT2MSKCR);
+       __raw_writel(1 << 25, INTC_INT2MSKCR);
 
        /* enable GPIO interrupts */
-       ctrl_outl((ctrl_inl(INTC_INT2PRI7) & 0xFF00FFFF) | 0x000F0000,
+       __raw_writel((__raw_readl(INTC_INT2PRI7) & 0xFF00FFFF) | 0x000F0000,
                  INTC_INT2PRI7);
 
        /* USBH enabled */
-       ctrl_outl(1 << 17, INTC_INT2MSKCR1);
+       __raw_writel(1 << 17, INTC_INT2MSKCR1);
 
        /* GETHER enabled */
-       ctrl_outl(1 << 16, INTC_INT2MSKCR1);
+       __raw_writel(1 << 16, INTC_INT2MSKCR1);
 
        /* DMAC enabled */
-       ctrl_outl(1 << 8, INTC_INT2MSKCR);
+       __raw_writel(1 << 8, INTC_INT2MSKCR);
 }
index 390534a..f64a691 100644 (file)
@@ -158,50 +158,50 @@ device_initcall(sh7763rdp_devices_setup);
 static void __init sh7763rdp_setup(char **cmdline_p)
 {
        /* Board version check */
-       if (ctrl_inw(CPLD_BOARD_ID_ERV_REG) == 0xECB1)
+       if (__raw_readw(CPLD_BOARD_ID_ERV_REG) == 0xECB1)
                printk(KERN_INFO "RTE Standard Configuration\n");
        else
                printk(KERN_INFO "RTA Standard Configuration\n");
 
        /* USB pin select bits (clear bit 5-2 to 0) */
-       ctrl_outw((ctrl_inw(PORT_PSEL2) & 0xFFC3), PORT_PSEL2);
+       __raw_writew((__raw_readw(PORT_PSEL2) & 0xFFC3), PORT_PSEL2);
        /* USBH setup port I controls to other (clear bits 4-9 to 0) */
-       ctrl_outw(ctrl_inw(PORT_PICR) & 0xFC0F, PORT_PICR);
+       __raw_writew(__raw_readw(PORT_PICR) & 0xFC0F, PORT_PICR);
 
        /* Select USB Host controller */
-       ctrl_outw(0x00, USB_USBHSC);
+       __raw_writew(0x00, USB_USBHSC);
 
        /* For LCD */
        /* set PTJ7-1, bits 15-2 of PJCR to 0 */
-       ctrl_outw(ctrl_inw(PORT_PJCR) & 0x0003, PORT_PJCR);
+       __raw_writew(__raw_readw(PORT_PJCR) & 0x0003, PORT_PJCR);
        /* set PTI5, bits 11-10 of PICR to 0 */
-       ctrl_outw(ctrl_inw(PORT_PICR) & 0xF3FF, PORT_PICR);
-       ctrl_outw(0, PORT_PKCR);
-       ctrl_outw(0, PORT_PLCR);
+       __raw_writew(__raw_readw(PORT_PICR) & 0xF3FF, PORT_PICR);
+       __raw_writew(0, PORT_PKCR);
+       __raw_writew(0, PORT_PLCR);
        /* set PSEL2 bits 14-8, 5-4, of PSEL2 to 0 */
-       ctrl_outw((ctrl_inw(PORT_PSEL2) & 0x00C0), PORT_PSEL2);
+       __raw_writew((__raw_readw(PORT_PSEL2) & 0x00C0), PORT_PSEL2);
        /* set PSEL3 bits 14-12, 6-4, 2-0 of PSEL3 to 0 */
-       ctrl_outw((ctrl_inw(PORT_PSEL3) & 0x0700), PORT_PSEL3);
+       __raw_writew((__raw_readw(PORT_PSEL3) & 0x0700), PORT_PSEL3);
 
        /* For HAC */
        /* bit3-0  0100:HAC & SSI1 enable */
-       ctrl_outw((ctrl_inw(PORT_PSEL1) & 0xFFF0) | 0x0004, PORT_PSEL1);
+       __raw_writew((__raw_readw(PORT_PSEL1) & 0xFFF0) | 0x0004, PORT_PSEL1);
        /* bit14      1:SSI_HAC_CLK enable */
-       ctrl_outw(ctrl_inw(PORT_PSEL4) | 0x4000, PORT_PSEL4);
+       __raw_writew(__raw_readw(PORT_PSEL4) | 0x4000, PORT_PSEL4);
 
        /* SH-Ether */
-       ctrl_outw((ctrl_inw(PORT_PSEL1) & ~0xff00) | 0x2400, PORT_PSEL1);
-       ctrl_outw(0x0, PORT_PFCR);
-       ctrl_outw(0x0, PORT_PFCR);
-       ctrl_outw(0x0, PORT_PFCR);
+       __raw_writew((__raw_readw(PORT_PSEL1) & ~0xff00) | 0x2400, PORT_PSEL1);
+       __raw_writew(0x0, PORT_PFCR);
+       __raw_writew(0x0, PORT_PFCR);
+       __raw_writew(0x0, PORT_PFCR);
 
        /* MMC */
        /*selects SCIF and MMC other functions */
-       ctrl_outw(0x0001, PORT_PSEL0);
+       __raw_writew(0x0001, PORT_PSEL0);
        /* MMC clock operates */
-       ctrl_outl(ctrl_inl(MSTPCR1) & ~0x8, MSTPCR1);
-       ctrl_outw(ctrl_inw(PORT_PACR) & ~0x3000, PORT_PACR);
-       ctrl_outw(ctrl_inw(PORT_PCCR) & ~0xCFC3, PORT_PCCR);
+       __raw_writel(__raw_readl(MSTPCR1) & ~0x8, MSTPCR1);
+       __raw_writew(__raw_readw(PORT_PACR) & ~0x3000, PORT_PACR);
+       __raw_writew(__raw_readw(PORT_PCCR) & ~0xCFC3, PORT_PCCR);
 }
 
 static struct sh_machine_vector mv_sh7763rdp __initmv = {
index a3277a2..331745d 100644 (file)
@@ -30,7 +30,7 @@
 
 static irqreturn_t eraseconfig_interrupt(int irq, void *dev_id)
 {
-       (void)ctrl_inb(0xb8000000);     /* dummy read */
+       (void)__raw_readb(0xb8000000);  /* dummy read */
 
        printk("SnapGear: erase switch interrupt!\n");
 
index 986a0e7..523aea5 100644 (file)
@@ -41,13 +41,13 @@ static void disable_systemh_irq(unsigned int irq)
                unsigned long val, mask = 0x01 << 1;
 
                /* Clear the "irq"th bit in the mask and set it in the request */
-               val = ctrl_inl((unsigned long)systemh_irq_mask_register);
+               val = __raw_readl((unsigned long)systemh_irq_mask_register);
                val &= ~mask;
-               ctrl_outl(val, (unsigned long)systemh_irq_mask_register);
+               __raw_writel(val, (unsigned long)systemh_irq_mask_register);
 
-               val = ctrl_inl((unsigned long)systemh_irq_request_register);
+               val = __raw_readl((unsigned long)systemh_irq_request_register);
                val |= mask;
-               ctrl_outl(val, (unsigned long)systemh_irq_request_register);
+               __raw_writel(val, (unsigned long)systemh_irq_request_register);
        }
 }
 
@@ -57,9 +57,9 @@ static void enable_systemh_irq(unsigned int irq)
                unsigned long val, mask = 0x01 << 1;
 
                /* Set "irq"th bit in the mask register */
-               val = ctrl_inl((unsigned long)systemh_irq_mask_register);
+               val = __raw_readl((unsigned long)systemh_irq_mask_register);
                val |= mask;
-               ctrl_outl(val, (unsigned long)systemh_irq_mask_register);
+               __raw_writel(val, (unsigned long)systemh_irq_mask_register);
        }
 }
 
diff --git a/arch/sh/boards/mach-titan/Makefile b/arch/sh/boards/mach-titan/Makefile
deleted file mode 100644 (file)
index 08d7537..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the Nimble Microsystems TITAN specific parts of the kernel
-#
-
-obj-y   := setup.o io.o
diff --git a/arch/sh/boards/mach-titan/io.c b/arch/sh/boards/mach-titan/io.c
deleted file mode 100644 (file)
index 0130e98..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *     I/O routines for Titan
- */
-#include <linux/pci.h>
-#include <asm/machvec.h>
-#include <asm/addrspace.h>
-#include <mach/titan.h>
-#include <asm/io.h>
-
-static inline unsigned int port2adr(unsigned int port)
-{
-        maybebadio((unsigned long)port);
-        return port;
-}
-
-u8 titan_inb(unsigned long port)
-{
-        if (PXSEG(port))
-                return ctrl_inb(port);
-        return ctrl_inw(port2adr(port)) & 0xff;
-}
-
-u8 titan_inb_p(unsigned long port)
-{
-        u8 v;
-
-        if (PXSEG(port))
-                v = ctrl_inb(port);
-        else
-                v = ctrl_inw(port2adr(port)) & 0xff;
-        ctrl_delay();
-        return v;
-}
-
-u16 titan_inw(unsigned long port)
-{
-        if (PXSEG(port))
-                return ctrl_inw(port);
-        else if (port >= 0x2000)
-                return ctrl_inw(port2adr(port));
-        else
-                maybebadio(port);
-        return 0;
-}
-
-u32 titan_inl(unsigned long port)
-{
-        if (PXSEG(port))
-                return ctrl_inl(port);
-        else if (port >= 0x2000)
-                return ctrl_inw(port2adr(port));
-        else
-                maybebadio(port);
-        return 0;
-}
-
-void titan_outb(u8 value, unsigned long port)
-{
-        if (PXSEG(port))
-                ctrl_outb(value, port);
-        else
-                ctrl_outw(value, port2adr(port));
-}
-
-void titan_outb_p(u8 value, unsigned long port)
-{
-        if (PXSEG(port))
-                ctrl_outb(value, port);
-        else
-                ctrl_outw(value, port2adr(port));
-        ctrl_delay();
-}
-
-void titan_outw(u16 value, unsigned long port)
-{
-        if (PXSEG(port))
-                ctrl_outw(value, port);
-        else if (port >= 0x2000)
-                ctrl_outw(value, port2adr(port));
-        else
-                maybebadio(port);
-}
-
-void titan_outl(u32 value, unsigned long port)
-{
-        if (PXSEG(port))
-                ctrl_outl(value, port);
-        else
-                maybebadio(port);
-}
-
-void titan_insl(unsigned long port, void *dst, unsigned long count)
-{
-        maybebadio(port);
-}
-
-void titan_outsl(unsigned long port, const void *src, unsigned long count)
-{
-        maybebadio(port);
-}
-
-void __iomem *titan_ioport_map(unsigned long port, unsigned int size)
-{
-       if (PXSEG(port))
-               return (void __iomem *)port;
-
-       return (void __iomem *)port2adr(port);
-}
diff --git a/arch/sh/boards/mach-titan/setup.c b/arch/sh/boards/mach-titan/setup.c
deleted file mode 100644 (file)
index 81e7e0f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * arch/sh/boards/titan/setup.c - Setup for Titan
- *
- *  Copyright (C) 2006  Jamie Lenehan
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- */
-#include <linux/init.h>
-#include <linux/irq.h>
-#include <mach/titan.h>
-#include <asm/io.h>
-
-static void __init init_titan_irq(void)
-{
-       /* enable individual interrupt mode for externals */
-       plat_irq_setup_pins(IRQ_MODE_IRQ);
-}
-
-static struct sh_machine_vector mv_titan __initmv = {
-       .mv_name =      "Titan",
-
-       .mv_inb =       titan_inb,
-       .mv_inw =       titan_inw,
-       .mv_inl =       titan_inl,
-       .mv_outb =      titan_outb,
-       .mv_outw =      titan_outw,
-       .mv_outl =      titan_outl,
-
-       .mv_inb_p =     titan_inb_p,
-       .mv_inw_p =     titan_inw,
-       .mv_inl_p =     titan_inl,
-       .mv_outb_p =    titan_outb_p,
-       .mv_outw_p =    titan_outw,
-       .mv_outl_p =    titan_outl,
-
-       .mv_insl =      titan_insl,
-       .mv_outsl =     titan_outsl,
-
-       .mv_ioport_map = titan_ioport_map,
-
-       .mv_init_irq =  init_titan_irq,
-};
index b5c673c..5c98427 100644 (file)
@@ -70,10 +70,10 @@ static void __ilsel_enable(ilsel_source_t set, unsigned int bit)
        pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n",
                 __func__, bit, addr, shift, set);
 
-       tmp = ctrl_inw(addr);
+       tmp = __raw_readw(addr);
        tmp &= ~(0xf << shift);
        tmp |= set << shift;
-       ctrl_outw(tmp, addr);
+       __raw_writew(tmp, addr);
 }
 
 /**
@@ -142,9 +142,9 @@ void ilsel_disable(unsigned int irq)
 
        addr = mk_ilsel_addr(irq);
 
-       tmp = ctrl_inw(addr);
+       tmp = __raw_readw(addr);
        tmp &= ~(0xf << mk_ilsel_shift(irq));
-       ctrl_outw(tmp, addr);
+       __raw_writew(tmp, addr);
 
        clear_bit(irq, &ilsel_level_map);
 }
index efe4cb9..e284592 100644 (file)
@@ -149,7 +149,7 @@ static void __init x3proto_init_irq(void)
        plat_irq_setup_pins(IRQ_MODE_IRL3210);
 
        /* Set ICR0.LVLMODE */
-       ctrl_outl(ctrl_inl(0xfe410000) | (1 << 21), 0xfe410000);
+       __raw_writel(__raw_readl(0xfe410000) | (1 << 21), 0xfe410000);
 }
 
 static struct sh_machine_vector mv_x3proto __initmv = {
index cb8cf55..1ce6362 100644 (file)
@@ -21,12 +21,15 @@ CONFIG_ZERO_PAGE_OFFSET     ?= 0x00001000
 CONFIG_ENTRY_OFFSET    ?= 0x00001000
 
 suffix-y := bin
-suffix-$(CONFIG_KERNEL_GZIP)  := gz
-suffix-$(CONFIG_KERNEL_BZIP2) := bz2
-suffix-$(CONFIG_KERNEL_LZMA)  := lzma
-
-targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma uImage.bin
-extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma
+suffix-$(CONFIG_KERNEL_GZIP)   := gz
+suffix-$(CONFIG_KERNEL_BZIP2)  := bz2
+suffix-$(CONFIG_KERNEL_LZMA)   := lzma
+suffix-$(CONFIG_KERNEL_LZO)    := lzo
+
+targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz \
+          uImage.bz2 uImage.lzma uImage.lzo uImage.bin
+extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
+          vmlinux.bin.lzo
 subdir- := compressed romimage
 
 $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
@@ -43,15 +46,8 @@ $(obj)/romImage: $(obj)/romimage/vmlinux FORCE
 $(obj)/romimage/vmlinux: $(obj)/zImage FORCE
        $(Q)$(MAKE) $(build)=$(obj)/romimage $@
 
-KERNEL_MEMORY := 0x00000000
-ifeq ($(CONFIG_PMB_FIXED),y)
-KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \
+KERNEL_MEMORY  := $(shell /bin/bash -c 'printf "0x%08x" \
                     $$[$(CONFIG_MEMORY_START) & 0x1fffffff]')
-endif
-ifeq ($(CONFIG_29BIT),y)
-KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \
-                    $$[$(CONFIG_MEMORY_START)]')
-endif
 
 KERNEL_LOAD    := $(shell /bin/bash -c 'printf "0x%08x" \
                     $$[$(CONFIG_PAGE_OFFSET)  + \
@@ -80,6 +76,9 @@ $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
 $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
        $(call if_changed,lzma)
 
+$(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE
+       $(call if_changed,lzo)
+
 $(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2
        $(call if_changed,uimage,bzip2)
 
@@ -89,6 +88,9 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz
 $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma
        $(call if_changed,uimage,lzma)
 
+$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo
+       $(call if_changed,uimage,lzo)
+
 $(obj)/uImage.bin: $(obj)/vmlinux.bin
        $(call if_changed,uimage,none)
 
index 6182eca..5d660b9 100644 (file)
@@ -6,14 +6,11 @@
 
 targets                := vmlinux vmlinux.bin vmlinux.bin.gz \
                   vmlinux.bin.bz2 vmlinux.bin.lzma \
+                  vmlinux.bin.lzo \
                   head_$(BITS).o misc.o piggy.o
 
 OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/cache.o
 
-ifdef CONFIG_SH_STANDARD_BIOS
-OBJECTS += $(obj)/../../kernel/sh_bios.o
-endif
-
 #
 # IMAGE_OFFSET is the load offset of the compression loader
 #
@@ -47,6 +44,8 @@ $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
        $(call if_changed,bzip2)
 $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
        $(call if_changed,lzma)
+$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
+       $(call if_changed,lzo)
 
 OBJCOPYFLAGS += -R .empty_zero_page
 
index b51b1fc..27140a6 100644 (file)
@@ -14,7 +14,6 @@
 #include <asm/uaccess.h>
 #include <asm/addrspace.h>
 #include <asm/page.h>
-#include <asm/sh_bios.h>
 
 /*
  * gzip declarations
@@ -62,29 +61,15 @@ static unsigned long free_mem_end_ptr;
 #include "../../../../lib/decompress_unlzma.c"
 #endif
 
-#ifdef CONFIG_SH_STANDARD_BIOS
-size_t strlen(const char *s)
-{
-       int i = 0;
-
-       while (*s++)
-               i++;
-       return i;
-}
+#ifdef CONFIG_KERNEL_LZO
+#include "../../../../lib/decompress_unlzo.c"
+#endif
 
 int puts(const char *s)
 {
-       int len = strlen(s);
-       sh_bios_console_write(s, len);
-       return len;
-}
-#else
-int puts(const char *s)
-{
        /* This should be updated to use the sh-sci routines */
        return 0;
 }
-#endif
 
 void* memset(void* s, int c, size_t n)
 {
@@ -132,7 +117,7 @@ void decompress_kernel(void)
        output_addr = (CONFIG_MEMORY_START + 0x2000);
 #else
        output_addr = __pa((unsigned long)&_text+PAGE_SIZE);
-#ifdef CONFIG_29BIT
+#if defined(CONFIG_29BIT)
        output_addr |= P2SEG;
 #endif
 #endif
index 50aa0c1..bcb31ae 100644 (file)
@@ -55,25 +55,22 @@ static struct irq_chip hd64461_irq_chip = {
 
 static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-       unsigned short intv = ctrl_inw(HD64461_NIRR);
-       struct irq_desc *ext_desc;
+       unsigned short intv = __raw_readw(HD64461_NIRR);
        unsigned int ext_irq = HD64461_IRQBASE;
 
        intv &= (1 << HD64461_IRQ_NUM) - 1;
 
-       while (intv) {
-               if (intv & 1) {
-                       ext_desc = irq_desc + ext_irq;
-                       handle_level_irq(ext_irq, ext_desc);
-               }
-               intv >>= 1;
-               ext_irq++;
+       for (; intv; intv >>= 1, ext_irq++) {
+               if (!(intv & 1))
+                       continue;
+
+               generic_handle_irq(ext_irq);
        }
 }
 
 int __init setup_hd64461(void)
 {
-       int i;
+       int i, nid = cpu_to_node(boot_cpu_data);
 
        if (!MACH_HD64461)
                return 0;
@@ -90,9 +87,26 @@ int __init setup_hd64461(void)
        __raw_writew(0xffff, HD64461_NIMR);
 
        /*  IRQ 80 -> 95 belongs to HD64461  */
-       for (i = HD64461_IRQBASE; i < HD64461_IRQBASE + 16; i++)
+       for (i = HD64461_IRQBASE; i < HD64461_IRQBASE + 16; i++) {
+               unsigned int irq;
+
+               irq = create_irq_nr(i, nid);
+               if (unlikely(irq == 0)) {
+                       pr_err("%s: failed hooking irq %d for HD64461\n",
+                              __func__, i);
+                       return -EBUSY;
+               }
+
+               if (unlikely(irq != i)) {
+                       pr_err("%s: got irq %d but wanted %d, bailing.\n",
+                              __func__, irq, i);
+                       destroy_irq(irq);
+                       return -EINVAL;
+               }
+
                set_irq_chip_and_handler(i, &hd64461_irq_chip,
                                         handle_level_irq);
+       }
 
        set_irq_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux);
        set_irq_type(CONFIG_HD64461_IRQ, IRQ_TYPE_LEVEL_LOW);
diff --git a/arch/sh/configs/sdk7786_defconfig b/arch/sh/configs/sdk7786_defconfig
new file mode 100644 (file)
index 0000000..9b331ea
--- /dev/null
@@ -0,0 +1,1754 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.33-rc7
+# Tue Feb  9 15:27:06 2010
+#
+CONFIG_SUPERH=y
+CONFIG_SUPERH32=y
+# CONFIG_SUPERH64 is not set
+CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_SYS_SUPPORTS_SMP=y
+CONFIG_SYS_SUPPORTS_NUMA=y
+CONFIG_SYS_SUPPORTS_PCI=y
+CONFIG_SYS_SUPPORTS_TMU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_ARCH_NO_VIRT_TO_BUS=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+CONFIG_DMA_COHERENT=y
+# CONFIG_DMA_NONCOHERENT is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+CONFIG_RCU_TRACE=y
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+CONFIG_TREE_RCU_TRACE=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_NS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+# CONFIG_CPUSETS is not set
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+CONFIG_CGROUP_MEM_RES_CTLR=y
+# CONFIG_CGROUP_MEM_RES_CTLR_SWAP is not set
+CONFIG_MM_OWNER=y
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+# CONFIG_LBDAF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
+# CONFIG_DEBUG_CFQ_IOSCHED is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_SPIN_UNLOCK is not set
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_READ_UNLOCK is not set
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_WRITE_UNLOCK is not set
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
+CONFIG_FREEZER=y
+
+#
+# System type
+#
+CONFIG_CPU_SH4=y
+CONFIG_CPU_SH4A=y
+CONFIG_CPU_SHX3=y
+# CONFIG_CPU_SUBTYPE_SH7619 is not set
+# CONFIG_CPU_SUBTYPE_SH7201 is not set
+# CONFIG_CPU_SUBTYPE_SH7203 is not set
+# CONFIG_CPU_SUBTYPE_SH7206 is not set
+# CONFIG_CPU_SUBTYPE_SH7263 is not set
+# CONFIG_CPU_SUBTYPE_MXG is not set
+# CONFIG_CPU_SUBTYPE_SH7705 is not set
+# CONFIG_CPU_SUBTYPE_SH7706 is not set
+# CONFIG_CPU_SUBTYPE_SH7707 is not set
+# CONFIG_CPU_SUBTYPE_SH7708 is not set
+# CONFIG_CPU_SUBTYPE_SH7709 is not set
+# CONFIG_CPU_SUBTYPE_SH7710 is not set
+# CONFIG_CPU_SUBTYPE_SH7712 is not set
+# CONFIG_CPU_SUBTYPE_SH7720 is not set
+# CONFIG_CPU_SUBTYPE_SH7721 is not set
+# CONFIG_CPU_SUBTYPE_SH7750 is not set
+# CONFIG_CPU_SUBTYPE_SH7091 is not set
+# CONFIG_CPU_SUBTYPE_SH7750R is not set
+# CONFIG_CPU_SUBTYPE_SH7750S is not set
+# CONFIG_CPU_SUBTYPE_SH7751 is not set
+# CONFIG_CPU_SUBTYPE_SH7751R is not set
+# CONFIG_CPU_SUBTYPE_SH7760 is not set
+# CONFIG_CPU_SUBTYPE_SH4_202 is not set
+# CONFIG_CPU_SUBTYPE_SH7723 is not set
+# CONFIG_CPU_SUBTYPE_SH7724 is not set
+# CONFIG_CPU_SUBTYPE_SH7757 is not set
+# CONFIG_CPU_SUBTYPE_SH7763 is not set
+# CONFIG_CPU_SUBTYPE_SH7770 is not set
+# CONFIG_CPU_SUBTYPE_SH7780 is not set
+# CONFIG_CPU_SUBTYPE_SH7785 is not set
+CONFIG_CPU_SUBTYPE_SH7786=y
+# CONFIG_CPU_SUBTYPE_SHX3 is not set
+# CONFIG_CPU_SUBTYPE_SH7343 is not set
+# CONFIG_CPU_SUBTYPE_SH7722 is not set
+# CONFIG_CPU_SUBTYPE_SH7366 is not set
+
+#
+# Memory management options
+#
+CONFIG_QUICKLIST=y
+CONFIG_MMU=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_MEMORY_START=0x60000000
+CONFIG_MEMORY_SIZE=0x20000000
+# CONFIG_29BIT is not set
+CONFIG_32BIT=y
+CONFIG_PMB=y
+# CONFIG_PMB_LEGACY is not set
+CONFIG_X2TLB=y
+CONFIG_VSYSCALL=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_MAX_ACTIVE_REGIONS=1
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+CONFIG_ARCH_MEMORY_PROBE=y
+CONFIG_IOREMAP_FIXED=y
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_8KB is not set
+# CONFIG_PAGE_SIZE_16KB is not set
+# CONFIG_PAGE_SIZE_64KB is not set
+# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
+# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
+CONFIG_HUGETLB_PAGE_SIZE_1MB=y
+# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
+# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
+# CONFIG_HUGETLB_PAGE_SIZE_512MB is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_NR_QUICK=1
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+
+#
+# Cache configuration
+#
+CONFIG_CACHE_WRITEBACK=y
+# CONFIG_CACHE_WRITETHROUGH is not set
+# CONFIG_CACHE_OFF is not set
+
+#
+# Processor features
+#
+CONFIG_CPU_LITTLE_ENDIAN=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_SH_FPU=y
+CONFIG_SH_STORE_QUEUES=y
+CONFIG_CPU_HAS_INTEVT=y
+CONFIG_CPU_HAS_SR_RB=y
+CONFIG_CPU_HAS_PTEAEX=y
+CONFIG_CPU_HAS_FPU=y
+
+#
+# Board support
+#
+CONFIG_SH_SDK7786=y
+# CONFIG_SH_URQUELL is not set
+
+#
+# Timer and clock configuration
+#
+CONFIG_SH_TIMER_TMU=y
+CONFIG_SH_CLK_CPG=y
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_SH_CPU_FREQ=y
+
+#
+# DMA support
+#
+# CONFIG_SH_DMA is not set
+
+#
+# Companion Chips
+#
+
+#
+# Additional SuperH Device Drivers
+#
+CONFIG_HEARTBEAT=y
+# CONFIG_PUSH_SWITCH is not set
+
+#
+# Kernel features
+#
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+# CONFIG_CRASH_DUMP is not set
+CONFIG_SECCOMP=y
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_GUSA=y
+
+#
+# Boot options
+#
+CONFIG_ZERO_PAGE_OFFSET=0x00001000
+CONFIG_BOOT_LINK_OFFSET=0x00800000
+CONFIG_ENTRY_OFFSET=0x00001000
+CONFIG_CMDLINE_OVERWRITE=y
+# CONFIG_CMDLINE_EXTEND is not set
+CONFIG_CMDLINE="console=ttySC1,115200 earlyprintk=sh-sci.1,115200 root=/dev/sda1 nmi_debug=state,debounce rootdelay=10"
+
+#
+# Bus options
+#
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+CONFIG_PCIEAER_INJECT=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEBUG=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCI_LEGACY is not set
+CONFIG_PCI_DEBUG=y
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options (EXPERIMENTAL)
+#
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_VERBOSE=y
+# CONFIG_HIBERNATION is not set
+CONFIG_PM_RUNTIME=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+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_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+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_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS 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
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_LIB80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+# CONFIG_DEVTMPFS is not set
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_MTD is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+
+#
+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
+#
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_CB710_CORE is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# 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 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_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_BNX2_ISCSI is not set
+# CONFIG_BE2ISCSI is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_HPSA is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_3W_SAS is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_MVSAS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_MPT2SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
+# CONFIG_FCOE is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_PMCRAID is not set
+# CONFIG_SCSI_PM8001 is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_BFA_FC is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_SATA_PMP=y
+# CONFIG_SATA_AHCI is not set
+CONFIG_SATA_SIL24=y
+CONFIG_ATA_SFF=y
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATP867X is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NINJA32 is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_NS87415 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RDC is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_TOSHIBA is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+CONFIG_PATA_PLATFORM=y
+# CONFIG_PATA_SCH is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# The newer stack is recommended.
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+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
+# CONFIG_VETH is not set
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_FIXED_PHY is not set
+CONFIG_MDIO_BITBANG=y
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_STNIC is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_SMC91X=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+CONFIG_SMSC911X=y
+# CONFIG_DNET is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 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_NET_PCI is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_ATL2 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+CONFIG_WLAN=y
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_VMXNET3 is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_SH_KEYSC is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# 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
+# CONFIG_NOZOMI is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SH_SCI_NR_UARTS=6
+CONFIG_SERIAL_SH_SCI_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_SH_MOBILE 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
+
+#
+# Miscellaneous I2C Chip support
+#
+# 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_SH_MSIOF is not set
+# CONFIG_SPI_SH_SCI is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_SH_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SH_MOBILE_SDHI is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_MC13783 is not set
+# CONFIG_AB3100_CORE is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_88PM8607 is not set
+# CONFIG_AB4500_CORE is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_VGA_ARB=y
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_ZEROPLUS is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS 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
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# 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_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_WHCI_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT 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
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# 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
+# 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_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# 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_R8A66597 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
+# CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+CONFIG_USB_GADGET_M66592=y
+CONFIG_USB_M66592=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_MASS_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_MULTI is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_UWB is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+CONFIG_RTC_DRV_MAX6900=y
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_SH=y
+# CONFIG_RTC_DRV_GENERIC is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_UIO=m
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_PDRV is not set
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_SMX is not set
+# CONFIG_UIO_AEC is not set
+# CONFIG_UIO_SERCOS3 is not set
+# CONFIG_UIO_PCI_GENERIC is not set
+
+#
+# TI VLYNQ
+#
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY 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 is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# 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
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# 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_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_VM=y
+# 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_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_FRAME_POINTER=y
+# 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_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_PAGE_POISONING is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_KSYM_TRACER=y
+# CONFIG_PROFILE_KSYM_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_SH_STANDARD_BIOS is not set
+# CONFIG_STACK_DEBUG is not set
+CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_4KSTACKS is not set
+CONFIG_DUMP_CODE=y
+CONFIG_DWARF_UNWINDER=y
+# CONFIG_SH_NO_BSS_INIT is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_MANAGER2 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# 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 is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# 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 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+# CONFIG_CRC_CCITT is not set
+# 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 is not set
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_HAVE_LMB=y
+CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
index 391cbe1..3cee58e 100644 (file)
@@ -40,10 +40,10 @@ static irqreturn_t pvr2_dma_interrupt(int irq, void *dev_id)
 
 static int pvr2_request_dma(struct dma_channel *chan)
 {
-       if (ctrl_inl(PVR2_DMA_MODE) != 0)
+       if (__raw_readl(PVR2_DMA_MODE) != 0)
                return -EBUSY;
 
-       ctrl_outl(0, PVR2_DMA_LMMODE0);
+       __raw_writel(0, PVR2_DMA_LMMODE0);
 
        return 0;
 }
@@ -60,9 +60,9 @@ static int pvr2_xfer_dma(struct dma_channel *chan)
 
        xfer_complete = 0;
 
-       ctrl_outl(chan->dar, PVR2_DMA_ADDR);
-       ctrl_outl(chan->count, PVR2_DMA_COUNT);
-       ctrl_outl(chan->mode & DMA_MODE_MASK, PVR2_DMA_MODE);
+       __raw_writel(chan->dar, PVR2_DMA_ADDR);
+       __raw_writel(chan->count, PVR2_DMA_COUNT);
+       __raw_writel(chan->mode & DMA_MODE_MASK, PVR2_DMA_MODE);
 
        return 0;
 }
index 37fb5b8..8272087 100644 (file)
@@ -52,11 +52,14 @@ static inline unsigned int get_dmte_irq(unsigned int chan)
  *
  * iterations to complete the transfer.
  */
+static unsigned int ts_shift[] = TS_SHIFT;
 static inline unsigned int calc_xmit_shift(struct dma_channel *chan)
 {
-       u32 chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
+       u32 chcr = __raw_readl(dma_base_addr[chan->chan] + CHCR);
+       int cnt = ((chcr & CHCR_TS_LOW_MASK) >> CHCR_TS_LOW_SHIFT) |
+               ((chcr & CHCR_TS_HIGH_MASK) >> CHCR_TS_HIGH_SHIFT);
 
-       return ts_shift[(chcr & CHCR_TS_MASK)>>CHCR_TS_SHIFT];
+       return ts_shift[cnt];
 }
 
 /*
@@ -70,13 +73,13 @@ static irqreturn_t dma_tei(int irq, void *dev_id)
        struct dma_channel *chan = dev_id;
        u32 chcr;
 
-       chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
+       chcr = __raw_readl(dma_base_addr[chan->chan] + CHCR);
 
        if (!(chcr & CHCR_TE))
                return IRQ_NONE;
 
        chcr &= ~(CHCR_IE | CHCR_DE);
-       ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
+       __raw_writel(chcr, (dma_base_addr[chan->chan] + CHCR));
 
        wake_up(&chan->wait_queue);
 
@@ -115,7 +118,7 @@ sh_dmac_configure_channel(struct dma_channel *chan, unsigned long chcr)
                chan->flags &= ~DMA_TEI_CAPABLE;
        }
 
-       ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
+       __raw_writel(chcr, (dma_base_addr[chan->chan] + CHCR));
 
        chan->flags |= DMA_CONFIGURED;
        return 0;
@@ -126,13 +129,13 @@ static void sh_dmac_enable_dma(struct dma_channel *chan)
        int irq;
        u32 chcr;
 
-       chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
+       chcr = __raw_readl(dma_base_addr[chan->chan] + CHCR);
        chcr |= CHCR_DE;
 
        if (chan->flags & DMA_TEI_CAPABLE)
                chcr |= CHCR_IE;
 
-       ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
+       __raw_writel(chcr, (dma_base_addr[chan->chan] + CHCR));
 
        if (chan->flags & DMA_TEI_CAPABLE) {
                irq = get_dmte_irq(chan->chan);
@@ -150,9 +153,9 @@ static void sh_dmac_disable_dma(struct dma_channel *chan)
                disable_irq(irq);
        }
 
-       chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
+       chcr = __raw_readl(dma_base_addr[chan->chan] + CHCR);
        chcr &= ~(CHCR_DE | CHCR_TE | CHCR_IE);
-       ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
+       __raw_writel(chcr, (dma_base_addr[chan->chan] + CHCR));
 }
 
 static int sh_dmac_xfer_dma(struct dma_channel *chan)
@@ -183,12 +186,12 @@ static int sh_dmac_xfer_dma(struct dma_channel *chan)
         */
        if (chan->sar || (mach_is_dreamcast() &&
                          chan->chan == PVR2_CASCADE_CHAN))
-               ctrl_outl(chan->sar, (dma_base_addr[chan->chan]+SAR));
+               __raw_writel(chan->sar, (dma_base_addr[chan->chan]+SAR));
        if (chan->dar || (mach_is_dreamcast() &&
                          chan->chan == PVR2_CASCADE_CHAN))
-               ctrl_outl(chan->dar, (dma_base_addr[chan->chan] + DAR));
+               __raw_writel(chan->dar, (dma_base_addr[chan->chan] + DAR));
 
-       ctrl_outl(chan->count >> calc_xmit_shift(chan),
+       __raw_writel(chan->count >> calc_xmit_shift(chan),
                (dma_base_addr[chan->chan] + TCR));
 
        sh_dmac_enable_dma(chan);
@@ -198,10 +201,10 @@ static int sh_dmac_xfer_dma(struct dma_channel *chan)
 
 static int sh_dmac_get_dma_residue(struct dma_channel *chan)
 {
-       if (!(ctrl_inl(dma_base_addr[chan->chan] + CHCR) & CHCR_DE))
+       if (!(__raw_readl(dma_base_addr[chan->chan] + CHCR) & CHCR_DE))
                return 0;
 
-       return ctrl_inl(dma_base_addr[chan->chan] + TCR)
+       return __raw_readl(dma_base_addr[chan->chan] + TCR)
                 << calc_xmit_shift(chan);
 }
 
index 5e22689..72622e3 100644 (file)
@@ -86,8 +86,8 @@ static irqreturn_t dmabrg_irq(int irq, void *data)
        unsigned long dcr;
        unsigned int i;
 
-       dcr = ctrl_inl(DMABRGCR);
-       ctrl_outl(dcr & ~0x00ff0003, DMABRGCR); /* ack all */
+       dcr = __raw_readl(DMABRGCR);
+       __raw_writel(dcr & ~0x00ff0003, DMABRGCR);      /* ack all */
        dcr &= dcr >> 8;        /* ignore masked */
 
        /* USB stuff, get it out of the way first */
@@ -109,17 +109,17 @@ static irqreturn_t dmabrg_irq(int irq, void *data)
 static void dmabrg_disable_irq(unsigned int dmairq)
 {
        unsigned long dcr;
-       dcr = ctrl_inl(DMABRGCR);
+       dcr = __raw_readl(DMABRGCR);
        dcr &= ~(1 << ((dmairq > 1) ? dmairq + 22 : dmairq + 8));
-       ctrl_outl(dcr, DMABRGCR);
+       __raw_writel(dcr, DMABRGCR);
 }
 
 static void dmabrg_enable_irq(unsigned int dmairq)
 {
        unsigned long dcr;
-       dcr = ctrl_inl(DMABRGCR);
+       dcr = __raw_readl(DMABRGCR);
        dcr |= (1 << ((dmairq > 1) ? dmairq + 22 : dmairq + 8));
-       ctrl_outl(dcr, DMABRGCR);
+       __raw_writel(dcr, DMABRGCR);
 }
 
 int dmabrg_request_irq(unsigned int dmairq, void(*handler)(void*),
@@ -165,13 +165,13 @@ static int __init dmabrg_init(void)
                printk(KERN_INFO "DMABRG: DMAC ch0 not reserved!\n");
 #endif
 
-       ctrl_outl(0, DMABRGCR);
-       ctrl_outl(0, DMACHCR0);
-       ctrl_outl(0x94000000, DMARSRA); /* enable DMABRG in DMAC 0 */
+       __raw_writel(0, DMABRGCR);
+       __raw_writel(0, DMACHCR0);
+       __raw_writel(0x94000000, DMARSRA);      /* enable DMABRG in DMAC 0 */
 
        /* enable DMABRG mode, enable the DMAC */
-       or = ctrl_inl(DMAOR);
-       ctrl_outl(or | DMAOR_BRG | DMAOR_DMEN, DMAOR);
+       or = __raw_readl(DMAOR);
+       __raw_writel(or | DMAOR_BRG | DMAOR_DMEN, DMAOR);
 
        ret = request_irq(DMABRGI0, dmabrg_irq, IRQF_DISABLED,
                        "DMABRG USB address error", NULL);
index a9339a6..2acbc79 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Generic heartbeat driver for regular LED banks
  *
- * Copyright (C) 2007  Paul Mundt
+ * Copyright (C) 2007 - 2010  Paul Mundt
  *
  * Most SH reference boards include a number of individual LEDs that can
  * be independently controlled (either via a pre-defined hardware
@@ -27,7 +27,7 @@
 #include <asm/heartbeat.h>
 
 #define DRV_NAME "heartbeat"
-#define DRV_VERSION "0.1.1"
+#define DRV_VERSION "0.1.2"
 
 static unsigned char default_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
 
@@ -98,7 +98,7 @@ static int heartbeat_drv_probe(struct platform_device *pdev)
                        return -ENOMEM;
        }
 
-       hd->base = ioremap_nocache(res->start, res->end - res->start + 1);
+       hd->base = ioremap_nocache(res->start, resource_size(res));
        if (unlikely(!hd->base)) {
                dev_err(&pdev->dev, "ioremap failed\n");
 
@@ -117,8 +117,20 @@ static int heartbeat_drv_probe(struct platform_device *pdev)
        for (i = 0; i < hd->nr_bits; i++)
                hd->mask |= (1 << hd->bit_pos[i]);
 
-       if (!hd->regsize)
-               hd->regsize = 8;        /* default access size */
+       if (!hd->regsize) {
+               switch (res->flags & IORESOURCE_MEM_TYPE_MASK) {
+               case IORESOURCE_MEM_32BIT:
+                       hd->regsize = 32;
+                       break;
+               case IORESOURCE_MEM_16BIT:
+                       hd->regsize = 16;
+                       break;
+               case IORESOURCE_MEM_8BIT:
+               default:
+                       hd->regsize = 8;
+                       break;
+               }
+       }
 
        setup_timer(&hd->timer, heartbeat_timer, (unsigned long)hd);
        platform_set_drvdata(pdev, hd);
index 08af1f4..4a59e68 100644 (file)
@@ -1,14 +1,14 @@
 #
 # Makefile for the PCI specific kernel interface routines under Linux.
 #
-obj-y                                  += pci.o
+obj-y                                  += common.o pci.o
 
 obj-$(CONFIG_CPU_SUBTYPE_SH7751)       += pci-sh7751.o ops-sh4.o
 obj-$(CONFIG_CPU_SUBTYPE_SH7751R)      += pci-sh7751.o ops-sh4.o
 obj-$(CONFIG_CPU_SUBTYPE_SH7763)       += pci-sh7780.o ops-sh4.o
 obj-$(CONFIG_CPU_SUBTYPE_SH7780)       += pci-sh7780.o ops-sh4.o
 obj-$(CONFIG_CPU_SUBTYPE_SH7785)       += pci-sh7780.o ops-sh4.o
-obj-$(CONFIG_CPU_SUBTYPE_SH7786)       += ops-sh7786.o
+obj-$(CONFIG_CPU_SUBTYPE_SH7786)       += pcie-sh7786.o ops-sh7786.o
 obj-$(CONFIG_CPU_SH5)                  += pci-sh5.o ops-sh5.o
 
 obj-$(CONFIG_SH_DREAMCAST)             += ops-dreamcast.o fixups-dreamcast.o \
@@ -25,4 +25,3 @@ obj-$(CONFIG_SH_TITAN)                        += fixups-titan.o
 obj-$(CONFIG_SH_LANDISK)               += fixups-landisk.o
 obj-$(CONFIG_SH_LBOX_RE2)              += fixups-rts7751r2d.o
 obj-$(CONFIG_SH_CAYMAN)                        += fixups-cayman.o
-obj-$(CONFIG_SH_URQUELL)               += pcie-sh7786.o
diff --git a/arch/sh/drivers/pci/common.c b/arch/sh/drivers/pci/common.c
new file mode 100644 (file)
index 0000000..dbf1381
--- /dev/null
@@ -0,0 +1,162 @@
+#include <linux/pci.h>
+#include <linux/interrupt.h>
+#include <linux/timer.h>
+#include <linux/kernel.h>
+
+/*
+ * These functions are used early on before PCI scanning is done
+ * and all of the pci_dev and pci_bus structures have been created.
+ */
+static struct pci_dev *fake_pci_dev(struct pci_channel *hose,
+       int top_bus, int busnr, int devfn)
+{
+       static struct pci_dev dev;
+       static struct pci_bus bus;
+
+       dev.bus = &bus;
+       dev.sysdata = hose;
+       dev.devfn = devfn;
+       bus.number = busnr;
+       bus.sysdata = hose;
+       bus.ops = hose->pci_ops;
+
+       if(busnr != top_bus)
+               /* Fake a parent bus structure. */
+               bus.parent = &bus;
+       else
+               bus.parent = NULL;
+
+       return &dev;
+}
+
+#define EARLY_PCI_OP(rw, size, type)                                   \
+int __init early_##rw##_config_##size(struct pci_channel *hose,                \
+       int top_bus, int bus, int devfn, int offset, type value)        \
+{                                                                      \
+       return pci_##rw##_config_##size(                                \
+               fake_pci_dev(hose, top_bus, bus, devfn),                \
+               offset, value);                                         \
+}
+
+EARLY_PCI_OP(read, byte, u8 *)
+EARLY_PCI_OP(read, word, u16 *)
+EARLY_PCI_OP(read, dword, u32 *)
+EARLY_PCI_OP(write, byte, u8)
+EARLY_PCI_OP(write, word, u16)
+EARLY_PCI_OP(write, dword, u32)
+
+int __init pci_is_66mhz_capable(struct pci_channel *hose,
+                               int top_bus, int current_bus)
+{
+       u32 pci_devfn;
+       unsigned short vid;
+       int cap66 = -1;
+       u16 stat;
+
+       printk(KERN_INFO "PCI: Checking 66MHz capabilities...\n");
+
+       for (pci_devfn = 0; pci_devfn < 0xff; pci_devfn++) {
+               if (PCI_FUNC(pci_devfn))
+                       continue;
+               if (early_read_config_word(hose, top_bus, current_bus,
+                                          pci_devfn, PCI_VENDOR_ID, &vid) !=
+                   PCIBIOS_SUCCESSFUL)
+                       continue;
+               if (vid == 0xffff)
+                       continue;
+
+               /* check 66MHz capability */
+               if (cap66 < 0)
+                       cap66 = 1;
+               if (cap66) {
+                       early_read_config_word(hose, top_bus, current_bus,
+                                              pci_devfn, PCI_STATUS, &stat);
+                       if (!(stat & PCI_STATUS_66MHZ)) {
+                               printk(KERN_DEBUG
+                                      "PCI: %02x:%02x not 66MHz capable.\n",
+                                      current_bus, pci_devfn);
+                               cap66 = 0;
+                               break;
+                       }
+               }
+       }
+
+       return cap66 > 0;
+}
+
+static void pcibios_enable_err(unsigned long __data)
+{
+       struct pci_channel *hose = (struct pci_channel *)__data;
+
+       del_timer(&hose->err_timer);
+       printk(KERN_DEBUG "PCI: re-enabling error IRQ.\n");
+       enable_irq(hose->err_irq);
+}
+
+static void pcibios_enable_serr(unsigned long __data)
+{
+       struct pci_channel *hose = (struct pci_channel *)__data;
+
+       del_timer(&hose->serr_timer);
+       printk(KERN_DEBUG "PCI: re-enabling system error IRQ.\n");
+       enable_irq(hose->serr_irq);
+}
+
+void pcibios_enable_timers(struct pci_channel *hose)
+{
+       if (hose->err_irq) {
+               init_timer(&hose->err_timer);
+               hose->err_timer.data = (unsigned long)hose;
+               hose->err_timer.function = pcibios_enable_err;
+       }
+
+       if (hose->serr_irq) {
+               init_timer(&hose->serr_timer);
+               hose->serr_timer.data = (unsigned long)hose;
+               hose->serr_timer.function = pcibios_enable_serr;
+       }
+}
+
+/*
+ * A simple handler for the regular PCI status errors, called from IRQ
+ * context.
+ */
+unsigned int pcibios_handle_status_errors(unsigned long addr,
+                                         unsigned int status,
+                                         struct pci_channel *hose)
+{
+       unsigned int cmd = 0;
+
+       if (status & PCI_STATUS_REC_MASTER_ABORT) {
+               printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n", addr);
+               cmd |= PCI_STATUS_REC_MASTER_ABORT;
+       }
+
+       if (status & PCI_STATUS_REC_TARGET_ABORT) {
+               printk(KERN_DEBUG "PCI: target abort: ");
+               pcibios_report_status(PCI_STATUS_REC_TARGET_ABORT |
+                                     PCI_STATUS_SIG_TARGET_ABORT |
+                                     PCI_STATUS_REC_MASTER_ABORT, 1);
+               printk("\n");
+
+               cmd |= PCI_STATUS_REC_TARGET_ABORT;
+       }
+
+       if (status & (PCI_STATUS_PARITY | PCI_STATUS_DETECTED_PARITY)) {
+               printk(KERN_DEBUG "PCI: parity error detected: ");
+               pcibios_report_status(PCI_STATUS_PARITY |
+                                     PCI_STATUS_DETECTED_PARITY, 1);
+               printk("\n");
+
+               cmd |= PCI_STATUS_PARITY | PCI_STATUS_DETECTED_PARITY;
+
+               /* Now back off of the IRQ for awhile */
+               if (hose->err_irq) {
+                       disable_irq_nosync(hose->err_irq);
+                       hose->err_timer.expires = jiffies + HZ;
+                       add_timer(&hose->err_timer);
+               }
+       }
+
+       return cmd;
+}
index ed7f489..942ef4f 100644 (file)
@@ -39,7 +39,7 @@ static void __init gapspci_fixup_resources(struct pci_dev *dev)
                /*
                 * We also assume that dev->devfn == 0
                 */
-               dev->resource[1].start  = p->io_resource->start  + 0x100;
+               dev->resource[1].start  = p->resources[0].start  + 0x100;
                dev->resource[1].end    = dev->resource[1].start + 0x200 - 1;
 
                /*
index 15ca65c..08b2d86 100644 (file)
@@ -22,15 +22,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
 {
        return irq_tab[slot];
 }
-
-int pci_fixup_pcic(struct pci_channel *chan)
-{
-       pci_write_reg(chan, 0x000043ff, SH4_PCIINTM);
-       pci_write_reg(chan, 0x00000000, SH7780_PCIIBAR);
-       pci_write_reg(chan, 0x08000000, SH7780_PCICSCR0);
-       pci_write_reg(chan, 0x0000001b, SH7780_PCICSAR0);
-       pci_write_reg(chan, 0xfd000000, SH7780_PCICSCR1);
-       pci_write_reg(chan, 0x0000000f, SH7780_PCICSAR1);
-
-       return 0;
-}
index 7898f14..e248516 100644 (file)
@@ -43,7 +43,7 @@ int pci_fixup_pcic(struct pci_channel *chan)
 {
        unsigned long bcr1, mcr;
 
-       bcr1 = ctrl_inl(SH7751_BCR1);
+       bcr1 = __raw_readl(SH7751_BCR1);
        bcr1 |= 0x40080000;     /* Enable Bit 19 BREQEN, set PCIC to slave */
        pci_write_reg(chan, bcr1, SH4_PCIBCR1);
 
@@ -54,7 +54,7 @@ int pci_fixup_pcic(struct pci_channel *chan)
        pci_write_reg(chan, 0xfb900047, SH7751_PCICONF1);
        pci_write_reg(chan, 0xab000001, SH7751_PCICONF4);
 
-       mcr = ctrl_inl(SH7751_MCR);
+       mcr = __raw_readl(SH7751_MCR);
        mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF;
        pci_write_reg(chan, mcr, SH4_PCIMCR);
 
index 250b0ed..0930f98 100644 (file)
@@ -31,22 +31,3 @@ int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
 {
        return sdk7780_irq_tab[pin-1][slot];
 }
-int pci_fixup_pcic(struct pci_channel *chan)
-{
-       /* Enable all interrupts, so we know what to fix */
-       pci_write_reg(chan, 0x0000C3FF, SH7780_PCIIMR);
-
-       /* Set up standard PCI config registers */
-       pci_write_reg(chan, 0x08000000, SH7780_PCIMBAR0);       /* PCI */
-       pci_write_reg(chan, 0x08000000, SH4_PCILAR0);   /* SHwy */
-       pci_write_reg(chan, 0x07F00001, SH4_PCILSR0);   /* size 128M w/ MBAR */
-
-       pci_write_reg(chan, 0x00000000, SH7780_PCIMBAR1);
-       pci_write_reg(chan, 0x00000000, SH4_PCILAR1);
-       pci_write_reg(chan, 0x00000000, SH4_PCILSR1);
-
-       pci_write_reg(chan, 0xAB000801, SH7780_PCIIBAR);
-       pci_write_reg(chan, 0xA5000C01, SH4_PCICR);
-
-       return 0;
-}
index 475fa9f..a4c7d3a 100644 (file)
@@ -97,12 +97,12 @@ int pci_fixup_pcic(struct pci_channel *chan)
        * meaning all calls go straight through... use BUG_ON to
        * catch erroneous assumption.
        */
-       BUG_ON(chan->mem_resource->start != SH7751_PCI_MEMORY_BASE);
+       BUG_ON(chan->resources[1].start != SH7751_PCI_MEMORY_BASE);
 
-       PCIC_WRITE(SH7751_PCIMBR, chan->mem_resource->start);
+       PCIC_WRITE(SH7751_PCIMBR, chan->resources[1].start);
 
        /* Set IOBR for window containing area specified in pci.h */
-       PCIC_WRITE(SH7751_PCIIOBR, (chan->io_resource->start & SH7751_PCIIOBR_MASK));
+       PCIC_WRITE(SH7751_PCIIOBR, (chan->resources[0].start & SH7751_PCIIOBR_MASK));
 
        /* All done, may as well say so... */
        printk("SH7751 PCI: Finished initialization of the PCI controller\n");
index 78bebeb..0b81999 100644 (file)
@@ -16,7 +16,7 @@
  * Direct access to PCI hardware...
  */
 #define CONFIG_CMD(bus, devfn, where) \
-       (P1SEG | (bus->number << 16) | (devfn << 8) | (where & ~3))
+       (0x80000000 | (bus->number << 16) | (devfn << 8) | (where & ~3))
 
 static DEFINE_SPINLOCK(sh4_pci_lock);
 
@@ -102,34 +102,6 @@ struct pci_ops sh4_pci_ops = {
        .write          = sh4_pci_write,
 };
 
-/*
- * Not really related to pci_ops, but it's common and not worth shoving
- * somewhere else for now..
- */
-int __init sh4_pci_check_direct(struct pci_channel *chan)
-{
-       /*
-        * Check if configuration works.
-        */
-       unsigned int tmp = pci_read_reg(chan, SH4_PCIPAR);
-
-       pci_write_reg(chan, P1SEG, SH4_PCIPAR);
-
-       if (pci_read_reg(chan, SH4_PCIPAR) == P1SEG) {
-               pci_write_reg(chan, tmp, SH4_PCIPAR);
-               printk(KERN_INFO "PCI: Using configuration type 1\n");
-               request_region(chan->reg_base + SH4_PCIPAR, 8,
-                              "PCI conf1");
-               return 0;
-       }
-
-       pci_write_reg(chan, tmp, SH4_PCIPAR);
-
-       printk(KERN_ERR "PCI: %s failed\n", __func__);
-
-       return -EINVAL;
-}
-
 int __attribute__((weak)) pci_fixup_pcic(struct pci_channel *chan)
 {
        /* Nothing to do. */
index 210f9d4..6336941 100644 (file)
 #include <asm/irq.h>
 #include <mach/pci.h>
 
-static struct resource gapspci_io_resource = {
-       .name   = "GAPSPCI IO",
-       .start  = GAPSPCI_BBA_CONFIG,
-       .end    = GAPSPCI_BBA_CONFIG + GAPSPCI_BBA_CONFIG_SIZE - 1,
-       .flags  = IORESOURCE_IO,
-};
-
-static struct resource gapspci_mem_resource = {
-       .name   = "GAPSPCI mem",
-       .start  = GAPSPCI_DMA_BASE,
-       .end    = GAPSPCI_DMA_BASE + GAPSPCI_DMA_SIZE - 1,
-       .flags  = IORESOURCE_MEM,
+static struct resource gapspci_resources[] = {
+       {
+               .name   = "GAPSPCI IO",
+               .start  = GAPSPCI_BBA_CONFIG,
+               .end    = GAPSPCI_BBA_CONFIG + GAPSPCI_BBA_CONFIG_SIZE - 1,
+               .flags  = IORESOURCE_IO,
+       },  {
+               .name   = "GAPSPCI mem",
+               .start  = GAPSPCI_DMA_BASE,
+               .end    = GAPSPCI_DMA_BASE + GAPSPCI_DMA_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
 };
 
 static struct pci_channel dreamcast_pci_controller = {
        .pci_ops        = &gapspci_pci_ops,
-       .io_resource    = &gapspci_io_resource,
+       .resources      = gapspci_resources,
+       .nr_resources   = ARRAY_SIZE(gapspci_resources),
        .io_offset      = 0x00000000,
-       .mem_resource   = &gapspci_mem_resource,
        .mem_offset     = 0x00000000,
 };
 
@@ -95,8 +95,6 @@ static int __init gapspci_init(void)
        outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
        outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);
 
-       register_pci_controller(&dreamcast_pci_controller);
-
-       return 0;
+       return register_pci_controller(&dreamcast_pci_controller);
 }
 arch_initcall(gapspci_init);
index 3d5296c..cbf763b 100644 (file)
   #define SH4_PCIINT_MWPD        0x00000002    /* Master Write PERR Detect */
   #define SH4_PCIINT_MRPD        0x00000001    /* Master Read PERR Detect */
 #define SH4_PCIINTM            0x118           /* PCI Interrupt Mask */
+  #define SH4_PCIINTM_TTADIM     BIT(14)       /* Target-target abort interrupt */
+  #define SH4_PCIINTM_TMTOIM     BIT(9)        /* Target retry timeout */
+  #define SH4_PCIINTM_MDEIM      BIT(8)        /* Master function disable error */
+  #define SH4_PCIINTM_APEDIM     BIT(7)        /* Address parity error detection */
+  #define SH4_PCIINTM_SDIM       BIT(6)        /* SERR detection */
+  #define SH4_PCIINTM_DPEITWM    BIT(5)        /* Data parity error for target write */
+  #define SH4_PCIINTM_PEDITRM    BIT(4)        /* PERR detection for target read */
+  #define SH4_PCIINTM_TADIMM     BIT(3)        /* Target abort for master */
+  #define SH4_PCIINTM_MADIMM     BIT(2)        /* Master abort for master */
+  #define SH4_PCIINTM_MWPDIM     BIT(1)        /* Master write data parity error */
+  #define SH4_PCIINTM_MRDPEIM    BIT(0)        /* Master read data parity error */
 #define SH4_PCIALR             0x11C           /* Error Address Register */
 #define SH4_PCICLR             0x120           /* Error Command/Data */
   #define SH4_PCICLR_MPIO        0x80000000
@@ -61,7 +72,7 @@
 #define SH4_PCIAINT            0x130           /* Arbiter Interrupt Register */
   #define SH4_PCIAINT_MBKN       0x00002000    /* Master Broken Interrupt */
   #define SH4_PCIAINT_TBTO       0x00001000    /* Target Bus Time Out */
-  #define SH4_PCIAINT_MBTO       0x00001000    /* Master Bus Time Out */
+  #define SH4_PCIAINT_MBTO       0x00000800    /* Master Bus Time Out */
   #define SH4_PCIAINT_TABT       0x00000008    /* Target Abort */
   #define SH4_PCIAINT_MABT       0x00000004    /* Master Abort */
   #define SH4_PCIAINT_RDPE       0x00000002    /* Read Data Parity Error */
 
 /* arch/sh/kernel/drivers/pci/ops-sh4.c */
 extern struct pci_ops sh4_pci_ops;
-int sh4_pci_check_direct(struct pci_channel *chan);
 int pci_fixup_pcic(struct pci_channel *chan);
 
 struct sh4_pci_address_space {
@@ -167,13 +177,13 @@ struct sh4_pci_address_map {
 static inline void pci_write_reg(struct pci_channel *chan,
                                 unsigned long val, unsigned long reg)
 {
-       ctrl_outl(val, chan->reg_base + reg);
+       __raw_writel(val, chan->reg_base + reg);
 }
 
 static inline unsigned long pci_read_reg(struct pci_channel *chan,
                                         unsigned long reg)
 {
-       return ctrl_inl(chan->reg_base + reg);
+       return __raw_readl(chan->reg_base + reg);
 }
 
 #endif /* __PCI_SH4_H */
index 873ed2b..0bf296c 100644 (file)
@@ -89,14 +89,13 @@ static irqreturn_t pcish5_serr_irq(int irq, void *dev_id)
        return IRQ_NONE;
 }
 
-static struct resource sh5_io_resource = { /* place holder */ };
-static struct resource sh5_mem_resource = { /* place holder */ };
+static struct resource sh5_pci_resources[2];
 
 static struct pci_channel sh5pci_controller = {
        .pci_ops                = &sh5_pci_ops,
-       .mem_resource           = &sh5_mem_resource,
+       .resources              = sh5_pci_resources,
+       .nr_resources           = ARRAY_SIZE(sh5_pci_resources),
        .mem_offset             = 0x00000000,
-       .io_resource            = &sh5_io_resource,
        .io_offset              = 0x00000000,
 };
 
@@ -210,14 +209,12 @@ static int __init sh5pci_init(void)
         SH5PCI_WRITE(AINTM, ~0);
         SH5PCI_WRITE(PINTM, ~0);
 
-       sh5_io_resource.start = PCI_IO_AREA;
-       sh5_io_resource.end = PCI_IO_AREA + 0x10000;
+       sh5_pci_resources[0].start = PCI_IO_AREA;
+       sh5_pci_resources[0].end = PCI_IO_AREA + 0x10000;
 
-       sh5_mem_resource.start = memStart;
-       sh5_mem_resource.end = memStart + memSize;
+       sh5_pci_resources[1].start = memStart;
+       sh5_pci_resources[1].end = memStart + memSize;
 
-       register_pci_controller(&sh5pci_controller);
-
-       return 0;
+       return register_pci_controller(&sh5pci_controller);
 }
 arch_initcall(sh5pci_init);
index f277628..3f01dec 100644 (file)
@@ -86,14 +86,14 @@ extern unsigned long pcicr_virt;
 /* #define PCISH5_VCR_REG(x)                ( SH5PCI_VCR_BASE (PCISH5_VCR_##x)) */
 
 /* Write I/O functions */
-#define SH5PCI_WRITE(reg,val)        ctrl_outl((u32)(val),PCISH5_ICR_REG(reg))
-#define SH5PCI_WRITE_SHORT(reg,val)  ctrl_outw((u16)(val),PCISH5_ICR_REG(reg))
-#define SH5PCI_WRITE_BYTE(reg,val)   ctrl_outb((u8)(val),PCISH5_ICR_REG(reg))
+#define SH5PCI_WRITE(reg,val)        __raw_writel((u32)(val),PCISH5_ICR_REG(reg))
+#define SH5PCI_WRITE_SHORT(reg,val)  __raw_writew((u16)(val),PCISH5_ICR_REG(reg))
+#define SH5PCI_WRITE_BYTE(reg,val)   __raw_writeb((u8)(val),PCISH5_ICR_REG(reg))
 
 /* Read I/O functions */
-#define SH5PCI_READ(reg)             ctrl_inl(PCISH5_ICR_REG(reg))
-#define SH5PCI_READ_SHORT(reg)       ctrl_inw(PCISH5_ICR_REG(reg))
-#define SH5PCI_READ_BYTE(reg)        ctrl_inb(PCISH5_ICR_REG(reg))
+#define SH5PCI_READ(reg)             __raw_readl(PCISH5_ICR_REG(reg))
+#define SH5PCI_READ_SHORT(reg)       __raw_readw(PCISH5_ICR_REG(reg))
+#define SH5PCI_READ_BYTE(reg)        __raw_readb(PCISH5_ICR_REG(reg))
 
 /* Set PCI config bits */
 #define SET_CONFIG_BITS(bus,devfn,where)  ((((bus) << 16) | ((devfn) << 8) | ((where) & ~3)) | 0x80000000)
index 70c1999..17811e5 100644 (file)
@@ -44,25 +44,25 @@ static int __init __area_sdram_check(struct pci_channel *chan,
        return 1;
 }
 
-static struct resource sh7751_io_resource = {
-       .name   = "SH7751_IO",
-       .start  = SH7751_PCI_IO_BASE,
-       .end    = SH7751_PCI_IO_BASE + SH7751_PCI_IO_SIZE - 1,
-       .flags  = IORESOURCE_IO
-};
-
-static struct resource sh7751_mem_resource = {
-       .name   = "SH7751_mem",
-       .start  = SH7751_PCI_MEMORY_BASE,
-       .end    = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1,
-       .flags  = IORESOURCE_MEM
+static struct resource sh7751_pci_resources[] = {
+       {
+               .name   = "SH7751_IO",
+               .start  = SH7751_PCI_IO_BASE,
+               .end    = SH7751_PCI_IO_BASE + SH7751_PCI_IO_SIZE - 1,
+               .flags  = IORESOURCE_IO
+       }, {
+               .name   = "SH7751_mem",
+               .start  = SH7751_PCI_MEMORY_BASE,
+               .end    = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1,
+               .flags  = IORESOURCE_MEM
+       },
 };
 
 static struct pci_channel sh7751_pci_controller = {
        .pci_ops        = &sh4_pci_ops,
-       .mem_resource   = &sh7751_mem_resource,
+       .resources      = sh7751_pci_resources,
+       .nr_resources   = ARRAY_SIZE(sh7751_pci_resources),
        .mem_offset     = 0x00000000,
-       .io_resource    = &sh7751_io_resource,
        .io_offset      = 0x00000000,
        .io_map_base    = SH7751_PCI_IO_BASE,
 };
@@ -79,7 +79,6 @@ static int __init sh7751_pci_init(void)
        struct pci_channel *chan = &sh7751_pci_controller;
        unsigned int id;
        u32 word, reg;
-       int ret;
 
        printk(KERN_NOTICE "PCI: Starting intialization.\n");
 
@@ -93,13 +92,10 @@ static int __init sh7751_pci_init(void)
                return -ENODEV;
        }
 
-       if ((ret = sh4_pci_check_direct(chan)) != 0)
-               return ret;
-
        /* Set the BCR's to enable PCI access */
-       reg = ctrl_inl(SH7751_BCR1);
+       reg = __raw_readl(SH7751_BCR1);
        reg |= 0x80000;
-       ctrl_outl(reg, SH7751_BCR1);
+       __raw_writel(reg, SH7751_BCR1);
 
        /* Turn the clocks back on (not done in reset)*/
        pci_write_reg(chan, 0, SH4_PCICLKR);
@@ -132,13 +128,13 @@ static int __init sh7751_pci_init(void)
        /* Set the local 16MB PCI memory space window to
         * the lowest PCI mapped address
         */
-       word = chan->mem_resource->start & SH4_PCIMBR_MASK;
+       word = chan->resources[1].start & SH4_PCIMBR_MASK;
        pr_debug("PCI: Setting upper bits of Memory window to 0x%x\n", word);
        pci_write_reg(chan, word , SH4_PCIMBR);
 
        /* Make sure the MSB's of IO window are set to access PCI space
         * correctly */
-       word = chan->io_resource->start & SH4_PCIIOBR_MASK;
+       word = chan->resources[0].start & SH4_PCIIOBR_MASK;
        pr_debug("PCI: Setting upper bits of IO window to 0x%x\n", word);
        pci_write_reg(chan, word, SH4_PCIIOBR);
 
@@ -159,13 +155,13 @@ static int __init sh7751_pci_init(void)
                return -1;
 
        /* configure the wait control registers */
-       word = ctrl_inl(SH7751_WCR1);
+       word = __raw_readl(SH7751_WCR1);
        pci_write_reg(chan, word, SH4_PCIWCR1);
-       word = ctrl_inl(SH7751_WCR2);
+       word = __raw_readl(SH7751_WCR2);
        pci_write_reg(chan, word, SH4_PCIWCR2);
-       word = ctrl_inl(SH7751_WCR3);
+       word = __raw_readl(SH7751_WCR3);
        pci_write_reg(chan, word, SH4_PCIWCR3);
-       word = ctrl_inl(SH7751_MCR);
+       word = __raw_readl(SH7751_MCR);
        pci_write_reg(chan, word, SH4_PCIMCR);
 
        /* NOTE: I'm ignoring the PCI error IRQs for now..
@@ -180,8 +176,6 @@ static int __init sh7751_pci_init(void)
        word = SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_ARBM;
        pci_write_reg(chan, word, SH4_PCICR);
 
-       register_pci_controller(chan);
-
-       return 0;
+       return register_pci_controller(chan);
 }
 arch_initcall(sh7751_pci_init);