Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
fd5b1245
Commit
fd5b1245
authored
May 12, 2009
by
Paul Mundt
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into sh/clkfwk
parents
9fe5ee0e
8be5f1a6
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
2359 additions
and
557 deletions
+2359
-557
arch/sh/Kconfig
arch/sh/Kconfig
+3
-19
arch/sh/configs/sh7770_generic_defconfig
arch/sh/configs/sh7770_generic_defconfig
+700
-0
arch/sh/include/asm/timer.h
arch/sh/include/asm/timer.h
+0
-29
arch/sh/include/cpu-sh3/cpu/timer.h
arch/sh/include/cpu-sh3/cpu/timer.h
+0
-67
arch/sh/include/cpu-sh4/cpu/timer.h
arch/sh/include/cpu-sh4/cpu/timer.h
+0
-60
arch/sh/kernel/Makefile_32
arch/sh/kernel/Makefile_32
+1
-1
arch/sh/kernel/Makefile_64
arch/sh/kernel/Makefile_64
+1
-1
arch/sh/kernel/cpu/clock.c
arch/sh/kernel/cpu/clock.c
+0
-1
arch/sh/kernel/cpu/sh3/setup-sh7705.c
arch/sh/kernel/cpu/sh3/setup-sh7705.c
+108
-0
arch/sh/kernel/cpu/sh3/setup-sh770x.c
arch/sh/kernel/cpu/sh3/setup-sh770x.c
+108
-0
arch/sh/kernel/cpu/sh3/setup-sh7710.c
arch/sh/kernel/cpu/sh3/setup-sh7710.c
+108
-0
arch/sh/kernel/cpu/sh3/setup-sh7720.c
arch/sh/kernel/cpu/sh3/setup-sh7720.c
+270
-0
arch/sh/kernel/cpu/sh4/setup-sh4-202.c
arch/sh/kernel/cpu/sh4/setup-sh4-202.c
+163
-1
arch/sh/kernel/cpu/sh4a/setup-sh7343.c
arch/sh/kernel/cpu/sh4a/setup-sh7343.c
+98
-0
arch/sh/kernel/cpu/sh4a/setup-sh7366.c
arch/sh/kernel/cpu/sh4a/setup-sh7366.c
+98
-0
arch/sh/kernel/cpu/sh4a/setup-sh7724.c
arch/sh/kernel/cpu/sh4a/setup-sh7724.c
+195
-0
arch/sh/kernel/cpu/sh4a/setup-sh7763.c
arch/sh/kernel/cpu/sh4a/setup-sh7763.c
+204
-0
arch/sh/kernel/cpu/sh4a/setup-sh7770.c
arch/sh/kernel/cpu/sh4a/setup-sh7770.c
+300
-0
arch/sh/kernel/time.c
arch/sh/kernel/time.c
+2
-27
arch/sh/kernel/timers/Makefile
arch/sh/kernel/timers/Makefile
+0
-7
arch/sh/kernel/timers/timer-tmu.c
arch/sh/kernel/timers/timer-tmu.c
+0
-295
arch/sh/kernel/timers/timer.c
arch/sh/kernel/timers/timer.c
+0
-49
No files found.
arch/sh/Kconfig
View file @
fd5b1245
...
...
@@ -302,6 +302,7 @@ config CPU_SUBTYPE_SH7720
bool "Support SH7720 processor"
select CPU_SH3
select CPU_HAS_DSP
select SYS_SUPPORTS_CMT
help
Select SH7720 if you have a SH3-DSP SH7720 CPU.
...
...
@@ -309,6 +310,7 @@ config CPU_SUBTYPE_SH7721
bool "Support SH7721 processor"
select CPU_SH3
select CPU_HAS_DSP
select SYS_SUPPORTS_CMT
help
Select SH7721 if you have a SH3-DSP SH7721 CPU.
...
...
@@ -471,16 +473,9 @@ source "arch/sh/boards/Kconfig"
menu "Timer and clock configuration"
config SH_TMU
bool "TMU timer support"
depends on CPU_SH3 || CPU_SH4
default y
help
This enables the use of the TMU as the system timer.
config SH_TIMER_TMU
bool "TMU timer driver"
depends on
!SH_TMU &&
SYS_SUPPORTS_TMU
depends on SYS_SUPPORTS_TMU
default y
help
This enables the build of the TMU timer driver.
...
...
@@ -499,17 +494,6 @@ config SH_TIMER_MTU2
help
This enables build of the MTU2 timer driver.
config SH_TIMER_IRQ
int
default "28" if CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 || \
CPU_SUBTYPE_SH7763
default "86" if CPU_SUBTYPE_SH7619
default "140" if CPU_SUBTYPE_SH7206
default "142" if CPU_SUBTYPE_SH7203 && SH_CMT
default "153" if CPU_SUBTYPE_SH7203 && SH_MTU2
default "238" if CPU_SUBTYPE_MXG
default "16"
config SH_PCLK_FREQ
int "Peripheral clock frequency (in Hz)"
default "27000000" if CPU_SUBTYPE_SH7343
...
...
arch/sh/configs/sh7770_generic_defconfig
0 → 100644
View file @
fd5b1245
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.30-rc4
# Tue May 12 14:48:21 2009
#
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_GENERIC_IRQ_PROBE=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_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_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
#
# RCU Subsystem
#
# CONFIG_CLASSIC_RCU is not set
CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
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 is not set
# CONFIG_CGROUP_FREEZER is not set
# CONFIG_CGROUP_DEVICE is not set
# CONFIG_CPUSETS is not set
# CONFIG_CGROUP_CPUACCT is not set
# CONFIG_RESOURCE_COUNTERS is not set
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
# 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 is not set
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_STRIP_ASM_SYMS 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_VM_EVENT_COUNTERS=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y
# CONFIG_MARKERS is not set
CONFIG_OPROFILE=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_DMA_API_DEBUG=y
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
CONFIG_FREEZER=y
#
# System type
#
CONFIG_CPU_SH4=y
CONFIG_CPU_SH4A=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_SH7763 is not set
CONFIG_CPU_SUBTYPE_SH7770=y
# CONFIG_CPU_SUBTYPE_SH7780 is not set
# CONFIG_CPU_SUBTYPE_SH7785 is not set
# CONFIG_CPU_SUBTYPE_SH7786 is not set
# 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_MEMORY_START=0x08000000
CONFIG_MEMORY_SIZE=0x04000000
CONFIG_29BIT=y
CONFIG_VSYSCALL=y
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_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_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
#
# Memory hotplug is currently incompatible with Software Suspend
#
CONFIG_PAGEFLAGS_EXTENDED=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=2
CONFIG_UNEVICTABLE_LRU=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
#
# 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 is not set
CONFIG_CPU_HAS_INTEVT=y
CONFIG_CPU_HAS_SR_RB=y
CONFIG_CPU_HAS_FPU=y
#
# Board support
#
#
# Timer and clock configuration
#
CONFIG_SH_TMU=y
CONFIG_SH_TIMER_IRQ=16
CONFIG_SH_PCLK_FREQ=41666666
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 is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
CONFIG_SH_CPU_FREQ=y
#
# DMA support
#
# CONFIG_SH_DMA is not set
#
# Companion Chips
#
#
# Additional SuperH Device Drivers
#
# CONFIG_HEARTBEAT is not set
# 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_KEXEC_JUMP=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_GUSA=y
#
# Boot options
#
CONFIG_ZERO_PAGE_OFFSET=0x00001000
CONFIG_BOOT_LINK_OFFSET=0x00800000
CONFIG_ENTRY_OFFSET=0x00001000
# CONFIG_CMDLINE_BOOL is not set
#
# Bus options
#
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD 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 is not set
#
# Power management options (EXPERIMENTAL)
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_NET is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_BLK_DEV_HD is not set
# CONFIG_MISC_DEVICES is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_PHONE is not set
#
# Input device support
#
# CONFIG_INPUT is not set
#
# Hardware I/O ports
#
# CONFIG_SERIO is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#
# CONFIG_VT is not set
# CONFIG_DEVKMEM is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
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_UNIX98_PTYS 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_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_SH_MOBILE=y
# 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
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_SPI 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_THERMAL_HWMON is not set
# CONFIG_WATCHDOG 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_HTC_PASIC3 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_REGULATOR is not set
#
# Multimedia devices
#
#
# Multimedia core support
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_VIDEO_MEDIA is not set
#
# Multimedia drivers
#
# CONFIG_DAB is not set
#
# Graphics support
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_SOUND is not set
# CONFIG_USB_SUPPORT 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_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_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 is not set
# 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_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
#
# SPI RTC drivers
#
#
# 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_BQ4802 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=y
# CONFIG_UIO_PDRV is not set
CONFIG_UIO_PDRV_GENIRQ=y
# CONFIG_UIO_SMX is not set
# CONFIG_UIO_SERCOS3 is not set
# CONFIG_STAGING is not set
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_EXT4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
CONFIG_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_DNOTIFY is not set
# CONFIG_INOTIFY is not set
# 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 is not set
# CONFIG_SYSFS is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_MISC_FILESYSTEMS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_NLS is not set
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_KERNEL is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_RING_BUFFER=y
CONFIG_TRACING=y
CONFIG_TRACING_SUPPORT=y
#
# Tracers
#
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_EVENT_TRACER is not set
# CONFIG_BOOT_TRACER is not set
# CONFIG_TRACE_BRANCH_PROFILING is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_FTRACE_STARTUP_TEST 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_SH_STANDARD_BIOS is not set
# CONFIG_EARLY_SCIF_CONSOLE is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITYFS is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_CRYPTO is not set
CONFIG_BINARY_PRINTF=y
#
# Library routines
#
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 is not set
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
arch/sh/include/asm/timer.h
deleted
100644 → 0
View file @
9fe5ee0e
#ifndef __ASM_SH_TIMER_H
#define __ASM_SH_TIMER_H
#include <linux/sysdev.h>
#include <linux/clocksource.h>
#include <cpu/timer.h>
struct
sys_timer_ops
{
int
(
*
init
)(
void
);
int
(
*
start
)(
void
);
int
(
*
stop
)(
void
);
};
struct
sys_timer
{
const
char
*
name
;
struct
sys_device
dev
;
struct
sys_timer_ops
*
ops
;
};
extern
struct
sys_timer
tmu_timer
;
extern
struct
sys_timer
*
sys_timer
;
/* arch/sh/kernel/timers/timer.c */
struct
sys_timer
*
get_sys_timer
(
void
);
extern
struct
clocksource
clocksource_sh
;
#endif
/* __ASM_SH_TIMER_H */
arch/sh/include/cpu-sh3/cpu/timer.h
deleted
100644 → 0
View file @
9fe5ee0e
/*
* include/asm-sh/cpu-sh3/timer.h
*
* Copyright (C) 2004 Lineo Solutions, Inc.
*
* 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.
*/
#ifndef __ASM_CPU_SH3_TIMER_H
#define __ASM_CPU_SH3_TIMER_H
/*
* ---------------------------------------------------------------------------
* TMU Common definitions for SH3 processors
* SH7706
* SH7709S
* SH7727
* SH7729R
* SH7710
* SH7720
* SH7710
* ---------------------------------------------------------------------------
*/
#if !defined(CONFIG_CPU_SUBTYPE_SH7720) && !defined(CONFIG_CPU_SUBTYPE_SH7721)
#define TMU_TOCR 0xfffffe90
/* Byte access */
#endif
#if defined(CONFIG_CPU_SUBTYPE_SH7710) || \
defined(CONFIG_CPU_SUBTYPE_SH7720) || \
defined(CONFIG_CPU_SUBTYPE_SH7721)
#define TMU_012_TSTR 0xa412fe92
/* Byte access */
#define TMU0_TCOR 0xa412fe94
/* Long access */
#define TMU0_TCNT 0xa412fe98
/* Long access */
#define TMU0_TCR 0xa412fe9c
/* Word access */
#define TMU1_TCOR 0xa412fea0
/* Long access */
#define TMU1_TCNT 0xa412fea4
/* Long access */
#define TMU1_TCR 0xa412fea8
/* Word access */
#define TMU2_TCOR 0xa412feac
/* Long access */
#define TMU2_TCNT 0xa412feb0
/* Long access */
#define TMU2_TCR 0xa412feb4
/* Word access */
#else
#define TMU_012_TSTR 0xfffffe92
/* Byte access */
#define TMU0_TCOR 0xfffffe94
/* Long access */
#define TMU0_TCNT 0xfffffe98
/* Long access */
#define TMU0_TCR 0xfffffe9c
/* Word access */
#define TMU1_TCOR 0xfffffea0
/* Long access */
#define TMU1_TCNT 0xfffffea4
/* Long access */
#define TMU1_TCR 0xfffffea8
/* Word access */
#define TMU2_TCOR 0xfffffeac
/* Long access */
#define TMU2_TCNT 0xfffffeb0
/* Long access */
#define TMU2_TCR 0xfffffeb4
/* Word access */
#if !defined(CONFIG_CPU_SUBTYPE_SH7720) && !defined(CONFIG_CPU_SUBTYPE_SH7721)
#define TMU2_TCPR2 0xfffffeb8
/* Long access */
#endif
#endif
#endif
/* __ASM_CPU_SH3_TIMER_H */
arch/sh/include/cpu-sh4/cpu/timer.h
deleted
100644 → 0
View file @
9fe5ee0e
/*
* include/asm-sh/cpu-sh4/timer.h
*
* Copyright (C) 2004 Lineo Solutions, Inc.
*
* 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.
*/
#ifndef __ASM_CPU_SH4_TIMER_H
#define __ASM_CPU_SH4_TIMER_H
/*
* ---------------------------------------------------------------------------
* TMU Common definitions for SH4 processors
* SH7750S/SH7750R
* SH7751/SH7751R
* SH7760
* SH-X3
* ---------------------------------------------------------------------------
*/
#ifdef CONFIG_CPU_SUBTYPE_SHX3
#define TMU_012_BASE 0xffc10000
#define TMU_345_BASE 0xffc20000
#else
#define TMU_012_BASE 0xffd80000
#define TMU_345_BASE 0xfe100000
#endif
#define TMU_TOCR TMU_012_BASE
/* Not supported on all CPUs */
#define TMU_012_TSTR (TMU_012_BASE + 0x04)
#define TMU_345_TSTR (TMU_345_BASE + 0x04)
#define TMU0_TCOR (TMU_012_BASE + 0x08)
#define TMU0_TCNT (TMU_012_BASE + 0x0c)
#define TMU0_TCR (TMU_012_BASE + 0x10)
#define TMU1_TCOR (TMU_012_BASE + 0x14)
#define TMU1_TCNT (TMU_012_BASE + 0x18)
#define TMU1_TCR (TMU_012_BASE + 0x1c)
#define TMU2_TCOR (TMU_012_BASE + 0x20)
#define TMU2_TCNT (TMU_012_BASE + 0x24)
#define TMU2_TCR (TMU_012_BASE + 0x28)
#define TMU2_TCPR (TMU_012_BASE + 0x2c)
#define TMU3_TCOR (TMU_345_BASE + 0x08)
#define TMU3_TCNT (TMU_345_BASE + 0x0c)
#define TMU3_TCR (TMU_345_BASE + 0x10)
#define TMU4_TCOR (TMU_345_BASE + 0x14)
#define TMU4_TCNT (TMU_345_BASE + 0x18)
#define TMU4_TCR (TMU_345_BASE + 0x1c)
#define TMU5_TCOR (TMU_345_BASE + 0x20)
#define TMU5_TCNT (TMU_345_BASE + 0x24)
#define TMU5_TCR (TMU_345_BASE + 0x28)
#endif
/* __ASM_CPU_SH4_TIMER_H */
arch/sh/kernel/Makefile_32
View file @
fd5b1245
...
...
@@ -14,7 +14,7 @@ obj-y := debugtraps.o idle.o io.o io_generic.o irq.o \
sys_sh.o sys_sh32.o syscalls_32.o time.o topology.o \
traps.o traps_32.o
obj-y += cpu/
timers/
obj-y += cpu/
obj-$(CONFIG_VSYSCALL) += vsyscall/
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_SH_STANDARD_BIOS) += sh_bios.o
...
...
arch/sh/kernel/Makefile_64
View file @
fd5b1245
...
...
@@ -4,7 +4,7 @@ obj-y := debugtraps.o idle.o io.o io_generic.o irq.o machvec.o process_64.o \
ptrace_64.o setup.o signal_64.o sys_sh.o sys_sh64.o \
syscalls_64.o time.o topology.o traps.o traps_64.o
obj-y += cpu/
timers/
obj-y += cpu/
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o
obj-$(CONFIG_MODULES) += sh_ksyms_64.o module.o
...
...
arch/sh/kernel/cpu/clock.c
View file @
fd5b1245
...
...
@@ -30,7 +30,6 @@
#include <linux/platform_device.h>
#include <linux/proc_fs.h>
#include <asm/clock.h>
#include <asm/timer.h>
static
LIST_HEAD
(
clock_list
);
static
DEFINE_SPINLOCK
(
clock_lock
);
...
...
arch/sh/kernel/cpu/sh3/setup-sh7705.c
View file @
fd5b1245
...
...
@@ -13,6 +13,7 @@
#include <linux/irq.h>
#include <linux/serial.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
#include <asm/rtc.h>
enum
{
...
...
@@ -116,7 +117,102 @@ static struct platform_device rtc_device = {
},
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x02
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xfffffe94
,
.
end
=
0xfffffe9f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0xe
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xfffffea0
,
.
end
=
0xfffffeab
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1a
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xfffffeac
,
.
end
=
0xfffffebb
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
platform_device
*
sh7705_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
sci_device
,
&
rtc_device
,
};
...
...
@@ -128,6 +224,18 @@ static int __init sh7705_devices_setup(void)
}
__initcall
(
sh7705_devices_setup
);
static
struct
platform_device
*
sh7705_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh7705_early_devices
,
ARRAY_SIZE
(
sh7705_early_devices
));
}
void
__init
plat_irq_setup
(
void
)
{
register_intc_controller
(
&
intc_desc
);
...
...
arch/sh/kernel/cpu/sh3/setup-sh770x.c
View file @
fd5b1245
...
...
@@ -18,6 +18,7 @@
#include <linux/platform_device.h>
#include <linux/serial.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
enum
{
UNUSED
=
0
,
...
...
@@ -144,7 +145,102 @@ static struct platform_device sci_device = {
},
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x02
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xfffffe94
,
.
end
=
0xfffffe9f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0xe
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xfffffea0
,
.
end
=
0xfffffeab
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1a
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xfffffeac
,
.
end
=
0xfffffebb
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
platform_device
*
sh770x_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
sci_device
,
&
rtc_device
,
};
...
...
@@ -156,6 +252,18 @@ static int __init sh770x_devices_setup(void)
}
__initcall
(
sh770x_devices_setup
);
static
struct
platform_device
*
sh770x_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh770x_early_devices
,
ARRAY_SIZE
(
sh770x_early_devices
));
}
void
__init
plat_irq_setup
(
void
)
{
register_intc_controller
(
&
intc_desc
);
...
...
arch/sh/kernel/cpu/sh3/setup-sh7710.c
View file @
fd5b1245
...
...
@@ -13,6 +13,7 @@
#include <linux/irq.h>
#include <linux/serial.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
#include <asm/rtc.h>
enum
{
...
...
@@ -120,7 +121,102 @@ static struct platform_device sci_device = {
},
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x02
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xa412fe94
,
.
end
=
0xa412fe9f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0xe
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xa412fea0
,
.
end
=
0xa412feab
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1a
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xa412feac
,
.
end
=
0xa412feb5
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
platform_device
*
sh7710_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
sci_device
,
&
rtc_device
,
};
...
...
@@ -132,6 +228,18 @@ static int __init sh7710_devices_setup(void)
}
__initcall
(
sh7710_devices_setup
);
static
struct
platform_device
*
sh7710_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh7710_early_devices
,
ARRAY_SIZE
(
sh7710_early_devices
));
}
void
__init
plat_irq_setup
(
void
)
{
register_intc_controller
(
&
intc_desc
);
...
...
arch/sh/kernel/cpu/sh3/setup-sh7720.c
View file @
fd5b1245
...
...
@@ -18,6 +18,7 @@
#include <linux/serial.h>
#include <linux/io.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
#include <asm/rtc.h>
static
struct
resource
rtc_resources
[]
=
{
...
...
@@ -123,7 +124,259 @@ static struct platform_device usbf_device = {
.
resource
=
usbf_resources
,
};
static
struct
sh_timer_config
cmt0_platform_data
=
{
.
name
=
"CMT0"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
125
,
.
clocksource_rating
=
125
,
};
static
struct
resource
cmt0_resources
[]
=
{
[
0
]
=
{
.
name
=
"CMT0"
,
.
start
=
0x044a0010
,
.
end
=
0x044a001b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
104
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
cmt0_device
=
{
.
name
=
"sh_cmt"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
cmt0_platform_data
,
},
.
resource
=
cmt0_resources
,
.
num_resources
=
ARRAY_SIZE
(
cmt0_resources
),
};
static
struct
sh_timer_config
cmt1_platform_data
=
{
.
name
=
"CMT1"
,
.
channel_offset
=
0x20
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
};
static
struct
resource
cmt1_resources
[]
=
{
[
0
]
=
{
.
name
=
"CMT1"
,
.
start
=
0x044a0020
,
.
end
=
0x044a002b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
104
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
cmt1_device
=
{
.
name
=
"sh_cmt"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
cmt1_platform_data
,
},
.
resource
=
cmt1_resources
,
.
num_resources
=
ARRAY_SIZE
(
cmt1_resources
),
};
static
struct
sh_timer_config
cmt2_platform_data
=
{
.
name
=
"CMT2"
,
.
channel_offset
=
0x30
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
cmt2_resources
[]
=
{
[
0
]
=
{
.
name
=
"CMT2"
,
.
start
=
0x044a0030
,
.
end
=
0x044a003b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
104
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
cmt2_device
=
{
.
name
=
"sh_cmt"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
cmt2_platform_data
,
},
.
resource
=
cmt2_resources
,
.
num_resources
=
ARRAY_SIZE
(
cmt2_resources
),
};
static
struct
sh_timer_config
cmt3_platform_data
=
{
.
name
=
"CMT3"
,
.
channel_offset
=
0x40
,
.
timer_bit
=
3
,
.
clk
=
"module_clk"
,
};
static
struct
resource
cmt3_resources
[]
=
{
[
0
]
=
{
.
name
=
"CMT3"
,
.
start
=
0x044a0040
,
.
end
=
0x044a004b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
104
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
cmt3_device
=
{
.
name
=
"sh_cmt"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
cmt3_platform_data
,
},
.
resource
=
cmt3_resources
,
.
num_resources
=
ARRAY_SIZE
(
cmt3_resources
),
};
static
struct
sh_timer_config
cmt4_platform_data
=
{
.
name
=
"CMT4"
,
.
channel_offset
=
0x50
,
.
timer_bit
=
4
,
.
clk
=
"module_clk"
,
};
static
struct
resource
cmt4_resources
[]
=
{
[
0
]
=
{
.
name
=
"CMT4"
,
.
start
=
0x044a0050
,
.
end
=
0x044a005b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
104
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
cmt4_device
=
{
.
name
=
"sh_cmt"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
cmt4_platform_data
,
},
.
resource
=
cmt4_resources
,
.
num_resources
=
ARRAY_SIZE
(
cmt4_resources
),
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x02
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xa412fe94
,
.
end
=
0xa412fe9f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0xe
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xa412fea0
,
.
end
=
0xa412feab
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1a
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xa412feac
,
.
end
=
0xa412feb5
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
platform_device
*
sh7720_devices
[]
__initdata
=
{
&
cmt0_device
,
&
cmt1_device
,
&
cmt2_device
,
&
cmt3_device
,
&
cmt4_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
rtc_device
,
&
sci_device
,
&
usb_ohci_device
,
...
...
@@ -137,6 +390,23 @@ static int __init sh7720_devices_setup(void)
}
__initcall
(
sh7720_devices_setup
);
static
struct
platform_device
*
sh7720_early_devices
[]
__initdata
=
{
&
cmt0_device
,
&
cmt1_device
,
&
cmt2_device
,
&
cmt3_device
,
&
cmt4_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh7720_early_devices
,
ARRAY_SIZE
(
sh7720_early_devices
));
}
enum
{
UNUSED
=
0
,
...
...
arch/sh/kernel/cpu/sh4/setup-sh4-202.c
View file @
fd5b1245
...
...
@@ -2,6 +2,7 @@
* SH4-202 Setup
*
* Copyright (C) 2006 Paul Mundt
* Copyright (C) 2009 Magnus Damm
*
* 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
...
...
@@ -11,6 +12,8 @@
#include <linux/init.h>
#include <linux/serial.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
#include <linux/io.h>
static
struct
plat_sci_port
sci_platform_data
[]
=
{
{
...
...
@@ -31,8 +34,103 @@ static struct platform_device sci_device = {
},
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
platform_device
*
sh4202_devices
[]
__initdata
=
{
&
sci_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
static
int
__init
sh4202_devices_setup
(
void
)
...
...
@@ -42,7 +140,71 @@ static int __init sh4202_devices_setup(void)
}
__initcall
(
sh4202_devices_setup
);
static
struct
platform_device
*
sh4202_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh4202_early_devices
,
ARRAY_SIZE
(
sh4202_early_devices
));
}
enum
{
UNUSED
=
0
,
/* interrupt sources */
IRL0
,
IRL1
,
IRL2
,
IRL3
,
/* only IRLM mode supported */
HUDI
,
TMU0
,
TMU1
,
TMU2
,
RTC
,
SCIF
,
WDT
,
};
static
struct
intc_vect
vectors
[]
__initdata
=
{
INTC_VECT
(
HUDI
,
0x600
),
INTC_VECT
(
TMU0
,
0x400
),
INTC_VECT
(
TMU1
,
0x420
),
INTC_VECT
(
TMU2
,
0x440
),
INTC_VECT
(
TMU2
,
0x460
),
INTC_VECT
(
RTC
,
0x480
),
INTC_VECT
(
RTC
,
0x4a0
),
INTC_VECT
(
RTC
,
0x4c0
),
INTC_VECT
(
SCIF
,
0x700
),
INTC_VECT
(
SCIF
,
0x720
),
INTC_VECT
(
SCIF
,
0x740
),
INTC_VECT
(
SCIF
,
0x760
),
INTC_VECT
(
WDT
,
0x560
),
};
static
struct
intc_prio_reg
prio_registers
[]
__initdata
=
{
{
0xffd00004
,
0
,
16
,
4
,
/* IPRA */
{
TMU0
,
TMU1
,
TMU2
,
RTC
}
},
{
0xffd00008
,
0
,
16
,
4
,
/* IPRB */
{
WDT
,
0
,
0
,
0
}
},
{
0xffd0000c
,
0
,
16
,
4
,
/* IPRC */
{
0
,
0
,
SCIF
,
HUDI
}
},
{
0xffd00010
,
0
,
16
,
4
,
/* IPRD */
{
IRL0
,
IRL1
,
IRL2
,
IRL3
}
},
};
static
DECLARE_INTC_DESC
(
intc_desc
,
"sh4-202"
,
vectors
,
NULL
,
NULL
,
prio_registers
,
NULL
);
static
struct
intc_vect
vectors_irlm
[]
__initdata
=
{
INTC_VECT
(
IRL0
,
0x240
),
INTC_VECT
(
IRL1
,
0x2a0
),
INTC_VECT
(
IRL2
,
0x300
),
INTC_VECT
(
IRL3
,
0x360
),
};
static
DECLARE_INTC_DESC
(
intc_desc_irlm
,
"sh4-202_irlm"
,
vectors_irlm
,
NULL
,
NULL
,
prio_registers
,
NULL
);
void
__init
plat_irq_setup
(
void
)
{
/* do nothing - all IRL interrupts are handled by the board code */
register_intc_controller
(
&
intc_desc
);
}
#define INTC_ICR 0xffd00000UL
#define INTC_ICR_IRLM (1<<7)
void
__init
plat_irq_setup_pins
(
int
mode
)
{
switch
(
mode
)
{
case
IRQ_MODE_IRQ
:
/* individual interrupt mode for IRL3-0 */
ctrl_outw
(
ctrl_inw
(
INTC_ICR
)
|
INTC_ICR_IRLM
,
INTC_ICR
);
register_intc_controller
(
&
intc_desc_irlm
);
break
;
default:
BUG
();
}
}
arch/sh/kernel/cpu/sh4a/setup-sh7343.c
View file @
fd5b1245
...
...
@@ -173,6 +173,98 @@ static struct platform_device cmt_device = {
.
num_resources
=
ARRAY_SIZE
(
cmt_resources
),
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"tmu0"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"tmu0"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"tmu0"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
plat_sci_port
sci_platform_data
[]
=
{
{
.
mapbase
=
0xffe00000
,
...
...
@@ -213,6 +305,9 @@ static struct platform_device sci_device = {
static
struct
platform_device
*
sh7343_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
iic0_device
,
&
iic1_device
,
&
sci_device
,
...
...
@@ -234,6 +329,9 @@ __initcall(sh7343_devices_setup);
static
struct
platform_device
*
sh7343_early_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
...
...
arch/sh/kernel/cpu/sh4a/setup-sh7366.c
View file @
fd5b1245
...
...
@@ -180,6 +180,98 @@ static struct platform_device cmt_device = {
.
num_resources
=
ARRAY_SIZE
(
cmt_resources
),
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"tmu0"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"tmu0"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"tmu0"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
plat_sci_port
sci_platform_data
[]
=
{
{
.
mapbase
=
0xffe00000
,
...
...
@@ -202,6 +294,9 @@ static struct platform_device sci_device = {
static
struct
platform_device
*
sh7366_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
iic_device
,
&
sci_device
,
&
usb_host_device
,
...
...
@@ -223,6 +318,9 @@ __initcall(sh7366_devices_setup);
static
struct
platform_device
*
sh7366_early_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
};
void
__init
plat_early_device_setup
(
void
)
...
...
arch/sh/kernel/cpu/sh4a/setup-sh7724.c
View file @
fd5b1245
...
...
@@ -268,8 +268,197 @@ static struct platform_device cmt_device = {
.
num_resources
=
ARRAY_SIZE
(
cmt_resources
),
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"tmu0"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"tmu0"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"tmu0"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
sh_timer_config
tmu3_platform_data
=
{
.
name
=
"TMU3"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"tmu1"
,
};
static
struct
resource
tmu3_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU3"
,
.
start
=
0xffd90008
,
.
end
=
0xffd90013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
57
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu3_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
tmu3_platform_data
,
},
.
resource
=
tmu3_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu3_resources
),
};
static
struct
sh_timer_config
tmu4_platform_data
=
{
.
name
=
"TMU4"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"tmu1"
,
};
static
struct
resource
tmu4_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU4"
,
.
start
=
0xffd90014
,
.
end
=
0xffd9001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
58
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu4_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
tmu4_platform_data
,
},
.
resource
=
tmu4_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu4_resources
),
};
static
struct
sh_timer_config
tmu5_platform_data
=
{
.
name
=
"TMU5"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"tmu1"
,
};
static
struct
resource
tmu5_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU5"
,
.
start
=
0xffd90020
,
.
end
=
0xffd9002b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
57
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu5_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
5
,
.
dev
=
{
.
platform_data
=
&
tmu5_platform_data
,
},
.
resource
=
tmu5_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu5_resources
),
};
static
struct
platform_device
*
sh7724_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
&
sci_device
,
&
rtc_device
,
&
iic0_device
,
...
...
@@ -292,6 +481,12 @@ device_initcall(sh7724_devices_setup);
static
struct
platform_device
*
sh7724_early_devices
[]
__initdata
=
{
&
cmt_device
,
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
};
void
__init
plat_early_device_setup
(
void
)
...
...
arch/sh/kernel/cpu/sh4a/setup-sh7763.c
View file @
fd5b1245
...
...
@@ -12,6 +12,7 @@
#include <linux/platform_device.h>
#include <linux/init.h>
#include <linux/serial.h>
#include <linux/sh_timer.h>
#include <linux/io.h>
#include <linux/serial_sci.h>
...
...
@@ -113,7 +114,195 @@ static struct platform_device usbf_device = {
.
resource
=
usbf_resources
,
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
28
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
29
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
30
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
sh_timer_config
tmu3_platform_data
=
{
.
name
=
"TMU3"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu3_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU3"
,
.
start
=
0xffd88008
,
.
end
=
0xffd88013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
96
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu3_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
tmu3_platform_data
,
},
.
resource
=
tmu3_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu3_resources
),
};
static
struct
sh_timer_config
tmu4_platform_data
=
{
.
name
=
"TMU4"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu4_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU4"
,
.
start
=
0xffd88014
,
.
end
=
0xffd8801f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
97
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu4_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
tmu4_platform_data
,
},
.
resource
=
tmu4_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu4_resources
),
};
static
struct
sh_timer_config
tmu5_platform_data
=
{
.
name
=
"TMU5"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu5_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU5"
,
.
start
=
0xffd88020
,
.
end
=
0xffd8802b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
98
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu5_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
5
,
.
dev
=
{
.
platform_data
=
&
tmu5_platform_data
,
},
.
resource
=
tmu5_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu5_resources
),
};
static
struct
platform_device
*
sh7763_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
&
rtc_device
,
&
sci_device
,
&
usb_ohci_device
,
...
...
@@ -127,6 +316,21 @@ static int __init sh7763_devices_setup(void)
}
__initcall
(
sh7763_devices_setup
);
static
struct
platform_device
*
sh7763_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh7763_early_devices
,
ARRAY_SIZE
(
sh7763_early_devices
));
}
enum
{
UNUSED
=
0
,
...
...
arch/sh/kernel/cpu/sh4a/setup-sh7770.c
View file @
fd5b1245
...
...
@@ -11,6 +11,7 @@
#include <linux/init.h>
#include <linux/serial.h>
#include <linux/serial_sci.h>
#include <linux/sh_timer.h>
static
struct
plat_sci_port
sci_platform_data
[]
=
{
{
...
...
@@ -76,7 +77,288 @@ static struct platform_device sci_device = {
},
};
static
struct
sh_timer_config
tmu0_platform_data
=
{
.
name
=
"TMU0"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
.
clockevent_rating
=
200
,
};
static
struct
resource
tmu0_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU0"
,
.
start
=
0xffd80008
,
.
end
=
0xffd80013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
16
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu0_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
tmu0_platform_data
,
},
.
resource
=
tmu0_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu0_resources
),
};
static
struct
sh_timer_config
tmu1_platform_data
=
{
.
name
=
"TMU1"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
.
clocksource_rating
=
200
,
};
static
struct
resource
tmu1_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU1"
,
.
start
=
0xffd80014
,
.
end
=
0xffd8001f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
17
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu1_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
tmu1_platform_data
,
},
.
resource
=
tmu1_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu1_resources
),
};
static
struct
sh_timer_config
tmu2_platform_data
=
{
.
name
=
"TMU2"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu2_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU2"
,
.
start
=
0xffd80020
,
.
end
=
0xffd8002f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
18
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu2_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
tmu2_platform_data
,
},
.
resource
=
tmu2_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu2_resources
),
};
static
struct
sh_timer_config
tmu3_platform_data
=
{
.
name
=
"TMU3"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu3_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU3"
,
.
start
=
0xffd81008
,
.
end
=
0xffd81013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
19
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu3_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
tmu3_platform_data
,
},
.
resource
=
tmu3_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu3_resources
),
};
static
struct
sh_timer_config
tmu4_platform_data
=
{
.
name
=
"TMU4"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu4_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU4"
,
.
start
=
0xffd81014
,
.
end
=
0xffd8101f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
20
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu4_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
tmu4_platform_data
,
},
.
resource
=
tmu4_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu4_resources
),
};
static
struct
sh_timer_config
tmu5_platform_data
=
{
.
name
=
"TMU5"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu5_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU5"
,
.
start
=
0xffd81020
,
.
end
=
0xffd8102f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
21
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu5_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
5
,
.
dev
=
{
.
platform_data
=
&
tmu5_platform_data
,
},
.
resource
=
tmu5_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu5_resources
),
};
static
struct
sh_timer_config
tmu6_platform_data
=
{
.
name
=
"TMU6"
,
.
channel_offset
=
0x04
,
.
timer_bit
=
0
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu6_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU6"
,
.
start
=
0xffd82008
,
.
end
=
0xffd82013
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
22
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu6_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
6
,
.
dev
=
{
.
platform_data
=
&
tmu6_platform_data
,
},
.
resource
=
tmu6_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu6_resources
),
};
static
struct
sh_timer_config
tmu7_platform_data
=
{
.
name
=
"TMU7"
,
.
channel_offset
=
0x10
,
.
timer_bit
=
1
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu7_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU7"
,
.
start
=
0xffd82014
,
.
end
=
0xffd8201f
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
23
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu7_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
7
,
.
dev
=
{
.
platform_data
=
&
tmu7_platform_data
,
},
.
resource
=
tmu7_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu7_resources
),
};
static
struct
sh_timer_config
tmu8_platform_data
=
{
.
name
=
"TMU8"
,
.
channel_offset
=
0x1c
,
.
timer_bit
=
2
,
.
clk
=
"module_clk"
,
};
static
struct
resource
tmu8_resources
[]
=
{
[
0
]
=
{
.
name
=
"TMU8"
,
.
start
=
0xffd82020
,
.
end
=
0xffd8202b
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
24
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
tmu8_device
=
{
.
name
=
"sh_tmu"
,
.
id
=
8
,
.
dev
=
{
.
platform_data
=
&
tmu8_platform_data
,
},
.
resource
=
tmu8_resources
,
.
num_resources
=
ARRAY_SIZE
(
tmu8_resources
),
};
static
struct
platform_device
*
sh7770_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
&
tmu6_device
,
&
tmu7_device
,
&
tmu8_device
,
&
sci_device
,
};
...
...
@@ -87,6 +369,24 @@ static int __init sh7770_devices_setup(void)
}
__initcall
(
sh7770_devices_setup
);
static
struct
platform_device
*
sh7770_early_devices
[]
__initdata
=
{
&
tmu0_device
,
&
tmu1_device
,
&
tmu2_device
,
&
tmu3_device
,
&
tmu4_device
,
&
tmu5_device
,
&
tmu6_device
,
&
tmu7_device
,
&
tmu8_device
,
};
void
__init
plat_early_device_setup
(
void
)
{
early_platform_add_devices
(
sh7770_early_devices
,
ARRAY_SIZE
(
sh7770_early_devices
));
}
void
__init
plat_irq_setup
(
void
)
{
}
arch/sh/kernel/time.c
View file @
fd5b1245
...
...
@@ -22,9 +22,6 @@
#include <linux/rtc.h>
#include <asm/clock.h>
#include <asm/rtc.h>
#include <asm/timer.h>
struct
sys_timer
*
sys_timer
;
/* Dummy RTC ops */
static
void
null_rtc_get_time
(
struct
timespec
*
tv
)
...
...
@@ -94,20 +91,9 @@ module_init(rtc_generic_init);
void
(
*
board_time_init
)(
void
);
struct
clocksource
clocksource_sh
=
{
.
name
=
"SuperH"
,
};
unsigned
long
long
sched_clock
(
void
)
{
unsigned
long
long
cycles
;
/* jiffies based sched_clock if no clocksource is installed */
if
(
!
clocksource_sh
.
rating
)
return
(
jiffies_64
-
INITIAL_JIFFIES
)
*
(
NSEC_PER_SEC
/
HZ
);
cycles
=
clocksource_sh
.
read
(
&
clocksource_sh
);
return
cyc2ns
(
&
clocksource_sh
,
cycles
);
return
(
jiffies_64
-
INITIAL_JIFFIES
)
*
(
NSEC_PER_SEC
/
HZ
);
}
static
void
__init
sh_late_time_init
(
void
)
...
...
@@ -117,18 +103,7 @@ static void __init sh_late_time_init(void)
* Run probe() for one "earlytimer" device.
*/
early_platform_driver_register_all
(
"earlytimer"
);
if
(
early_platform_driver_probe
(
"earlytimer"
,
1
,
0
))
return
;
/*
* Find the timer to use as the system timer, it will be
* initialized for us.
*/
sys_timer
=
get_sys_timer
();
if
(
unlikely
(
!
sys_timer
))
panic
(
"System timer missing.
\n
"
);
printk
(
KERN_INFO
"Using %s for system timer
\n
"
,
sys_timer
->
name
);
early_platform_driver_probe
(
"earlytimer"
,
1
,
0
);
}
void
__init
time_init
(
void
)
...
...
arch/sh/kernel/timers/Makefile
deleted
100644 → 0
View file @
9fe5ee0e
#
# Makefile for the various Linux/SuperH timers
#
obj-y
:=
timer.o
obj-$(CONFIG_SH_TMU)
+=
timer-tmu.o
arch/sh/kernel/timers/timer-tmu.c
deleted
100644 → 0
View file @
9fe5ee0e
/*
* arch/sh/kernel/timers/timer-tmu.c - TMU Timer Support
*
* Copyright (C) 2005 - 2007 Paul Mundt
*
* TMU handling code hacked out of arch/sh/kernel/time.c
*
* Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka
* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
* Copyright (C) 2002, 2003, 2004 Paul Mundt
* Copyright (C) 2002 M. R. Brown <mrbrown@linux-sh.org>
*
* 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/kernel.h>
#include <linux/interrupt.h>
#include <linux/seqlock.h>
#include <linux/clockchips.h>
#include <asm/timer.h>
#include <asm/rtc.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/clock.h>
#define TMU_TOCR_INIT 0x00
#define TMU_TCR_INIT 0x0020
#define TMU0 (0)
#define TMU1 (1)
static
inline
void
_tmu_start
(
int
tmu_num
)
{
ctrl_outb
(
ctrl_inb
(
TMU_012_TSTR
)
|
(
0x1
<<
tmu_num
),
TMU_012_TSTR
);
}
static
inline
void
_tmu_set_irq
(
int
tmu_num
,
int
enabled
)
{
register
unsigned
long
tmu_tcr
=
TMU0_TCR
+
(
0xc
*
tmu_num
);
ctrl_outw
(
(
enabled
?
ctrl_inw
(
tmu_tcr
)
|
(
1
<<
5
)
:
ctrl_inw
(
tmu_tcr
)
&
~
(
1
<<
5
)),
tmu_tcr
);
}
static
inline
void
_tmu_stop
(
int
tmu_num
)
{
ctrl_outb
(
ctrl_inb
(
TMU_012_TSTR
)
&
~
(
0x1
<<
tmu_num
),
TMU_012_TSTR
);
}
static
inline
void
_tmu_clear_status
(
int
tmu_num
)
{
register
unsigned
long
tmu_tcr
=
TMU0_TCR
+
(
0xc
*
tmu_num
);
/* Clear UNF bit */
ctrl_outw
(
ctrl_inw
(
tmu_tcr
)
&
~
0x100
,
tmu_tcr
);
}
static
inline
unsigned
long
_tmu_read
(
int
tmu_num
)
{
return
ctrl_inl
(
TMU0_TCNT
+
0xC
*
tmu_num
);
}
static
int
tmu_timer_start
(
void
)
{
_tmu_start
(
TMU0
);
_tmu_start
(
TMU1
);
_tmu_set_irq
(
TMU0
,
1
);
return
0
;
}
static
int
tmu_timer_stop
(
void
)
{
_tmu_stop
(
TMU0
);
_tmu_stop
(
TMU1
);
_tmu_clear_status
(
TMU0
);
return
0
;
}
/*
* also when the module_clk is scaled the TMU1
* will show the same frequency
*/
static
int
tmus_are_scaled
;
static
cycle_t
tmu_timer_read
(
struct
clocksource
*
cs
)
{
return
((
cycle_t
)(
~
_tmu_read
(
TMU1
)))
<<
tmus_are_scaled
;
}
static
unsigned
long
tmu_latest_interval
[
3
];
static
void
tmu_timer_set_interval
(
int
tmu_num
,
unsigned
long
interval
,
unsigned
int
reload
)
{
unsigned
long
tmu_tcnt
=
TMU0_TCNT
+
tmu_num
*
0xC
;
unsigned
long
tmu_tcor
=
TMU0_TCOR
+
tmu_num
*
0xC
;
_tmu_stop
(
tmu_num
);
ctrl_outl
(
interval
,
tmu_tcnt
);
tmu_latest_interval
[
tmu_num
]
=
interval
;
/*
* TCNT reloads from TCOR on underflow, clear it if we don't
* intend to auto-reload
*/
ctrl_outl
(
reload
?
interval
:
0
,
tmu_tcor
);
_tmu_start
(
tmu_num
);
}
static
int
tmu_set_next_event
(
unsigned
long
cycles
,
struct
clock_event_device
*
evt
)
{
tmu_timer_set_interval
(
TMU0
,
cycles
,
evt
->
mode
==
CLOCK_EVT_MODE_PERIODIC
);
_tmu_set_irq
(
TMU0
,
1
);
return
0
;
}
static
void
tmu_set_mode
(
enum
clock_event_mode
mode
,
struct
clock_event_device
*
evt
)
{
switch
(
mode
)
{
case
CLOCK_EVT_MODE_PERIODIC
:
ctrl_outl
(
tmu_latest_interval
[
TMU0
],
TMU0_TCOR
);
break
;
case
CLOCK_EVT_MODE_ONESHOT
:
ctrl_outl
(
0
,
TMU0_TCOR
);
break
;
case
CLOCK_EVT_MODE_UNUSED
:
case
CLOCK_EVT_MODE_SHUTDOWN
:
case
CLOCK_EVT_MODE_RESUME
:
break
;
}
}
static
struct
clock_event_device
tmu0_clockevent
=
{
.
name
=
"tmu0"
,
.
shift
=
32
,
.
features
=
CLOCK_EVT_FEAT_PERIODIC
|
CLOCK_EVT_FEAT_ONESHOT
,
.
set_mode
=
tmu_set_mode
,
.
set_next_event
=
tmu_set_next_event
,
};
static
irqreturn_t
tmu_timer_interrupt
(
int
irq
,
void
*
dummy
)
{
struct
clock_event_device
*
evt
=
&
tmu0_clockevent
;
_tmu_clear_status
(
TMU0
);
_tmu_set_irq
(
TMU0
,
tmu0_clockevent
.
mode
!=
CLOCK_EVT_MODE_ONESHOT
);
switch
(
tmu0_clockevent
.
mode
)
{
case
CLOCK_EVT_MODE_ONESHOT
:
case
CLOCK_EVT_MODE_PERIODIC
:
evt
->
event_handler
(
evt
);
break
;
default:
break
;
}
return
IRQ_HANDLED
;
}
static
struct
irqaction
tmu0_irq
=
{
.
name
=
"periodic/oneshot timer"
,
.
handler
=
tmu_timer_interrupt
,
.
flags
=
IRQF_DISABLED
|
IRQF_TIMER
|
IRQF_IRQPOLL
,
};
static
void
__init
tmu_clk_init
(
struct
clk
*
clk
)
{
u8
divisor
=
TMU_TCR_INIT
&
0x7
;
int
tmu_num
=
clk
->
name
[
3
]
-
'0'
;
ctrl_outw
(
TMU_TCR_INIT
,
TMU0_TCR
+
(
tmu_num
*
0xC
));
clk
->
rate
=
clk_get_rate
(
clk
->
parent
)
/
(
4
<<
(
divisor
<<
1
));
}
static
unsigned
long
tmu_clk_recalc
(
struct
clk
*
clk
)
{
int
tmu_num
=
clk
->
name
[
3
]
-
'0'
;
unsigned
long
new_rate
;
unsigned
long
flags
;
u8
divisor
=
ctrl_inw
(
TMU0_TCR
+
tmu_num
*
0xC
)
&
0x7
;
new_rate
=
clk_get_rate
(
clk
->
parent
)
/
(
4
<<
(
divisor
<<
1
));
if
(
clk
->
rate
==
new_rate
||
tmu_num
)
return
clk
->
rate
;
/* No more work on TMU1 */
local_irq_save
(
flags
);
tmus_are_scaled
=
(
clk
->
rate
>
new_rate
);
_tmu_stop
(
TMU0
);
tmu0_clockevent
.
mult
=
div_sc
(
clk
->
rate
,
NSEC_PER_SEC
,
tmu0_clockevent
.
shift
);
tmu0_clockevent
.
max_delta_ns
=
clockevent_delta2ns
(
-
1
,
&
tmu0_clockevent
);
tmu0_clockevent
.
min_delta_ns
=
clockevent_delta2ns
(
1
,
&
tmu0_clockevent
);
if
(
tmus_are_scaled
)
tmu_latest_interval
[
TMU0
]
>>=
1
;
else
tmu_latest_interval
[
TMU0
]
<<=
1
;
tmu_timer_set_interval
(
TMU0
,
tmu_latest_interval
[
TMU0
],
tmu0_clockevent
.
mode
==
CLOCK_EVT_MODE_PERIODIC
);
_tmu_start
(
TMU0
);
local_irq_restore
(
flags
);
return
new_rate
;
}
static
struct
clk_ops
tmu_clk_ops
=
{
.
init
=
tmu_clk_init
,
.
recalc
=
tmu_clk_recalc
,
};
static
struct
clk
tmu0_clk
=
{
.
name
=
"tmu0_clk"
,
.
ops
=
&
tmu_clk_ops
,
};
static
struct
clk
tmu1_clk
=
{
.
name
=
"tmu1_clk"
,
.
ops
=
&
tmu_clk_ops
,
};
static
int
tmu_timer_init
(
void
)
{
unsigned
long
interval
;
unsigned
long
frequency
;
setup_irq
(
CONFIG_SH_TIMER_IRQ
,
&
tmu0_irq
);
tmu0_clk
.
parent
=
clk_get
(
NULL
,
"module_clk"
);
tmu1_clk
.
parent
=
clk_get
(
NULL
,
"module_clk"
);
tmu_timer_stop
();
#if !defined(CONFIG_CPU_SUBTYPE_SH7720) && \
!defined(CONFIG_CPU_SUBTYPE_SH7721) && \
!defined(CONFIG_CPU_SUBTYPE_SH7760) && \
!defined(CONFIG_CPU_SUBTYPE_SH7785) && \
!defined(CONFIG_CPU_SUBTYPE_SH7786) && \
!defined(CONFIG_CPU_SUBTYPE_SHX3)
ctrl_outb
(
TMU_TOCR_INIT
,
TMU_TOCR
);
#endif
clk_register
(
&
tmu0_clk
);
clk_register
(
&
tmu1_clk
);
clk_enable
(
&
tmu0_clk
);
clk_enable
(
&
tmu1_clk
);
frequency
=
clk_get_rate
(
&
tmu0_clk
);
interval
=
(
frequency
+
HZ
/
2
)
/
HZ
;
tmu_timer_set_interval
(
TMU0
,
interval
,
1
);
tmu_timer_set_interval
(
TMU1
,
~
0
,
1
);
_tmu_start
(
TMU1
);
clocksource_sh
.
rating
=
200
;
clocksource_sh
.
mask
=
CLOCKSOURCE_MASK
(
32
);
clocksource_sh
.
read
=
tmu_timer_read
;
clocksource_sh
.
shift
=
10
;
clocksource_sh
.
mult
=
clocksource_hz2mult
(
clk_get_rate
(
&
tmu1_clk
),
clocksource_sh
.
shift
);
clocksource_sh
.
flags
=
CLOCK_SOURCE_IS_CONTINUOUS
;
clocksource_register
(
&
clocksource_sh
);
tmu0_clockevent
.
mult
=
div_sc
(
frequency
,
NSEC_PER_SEC
,
tmu0_clockevent
.
shift
);
tmu0_clockevent
.
max_delta_ns
=
clockevent_delta2ns
(
-
1
,
&
tmu0_clockevent
);
tmu0_clockevent
.
min_delta_ns
=
clockevent_delta2ns
(
1
,
&
tmu0_clockevent
);
tmu0_clockevent
.
cpumask
=
cpumask_of
(
0
);
tmu0_clockevent
.
rating
=
100
;
clockevents_register_device
(
&
tmu0_clockevent
);
return
0
;
}
static
struct
sys_timer_ops
tmu_timer_ops
=
{
.
init
=
tmu_timer_init
,
.
start
=
tmu_timer_start
,
.
stop
=
tmu_timer_stop
,
};
struct
sys_timer
tmu_timer
=
{
.
name
=
"tmu"
,
.
ops
=
&
tmu_timer_ops
,
};
arch/sh/kernel/timers/timer.c
deleted
100644 → 0
View file @
9fe5ee0e
/*
* arch/sh/kernel/timers/timer.c - Common timer code
*
* Copyright (C) 2005 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/kernel.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/string.h>
#include <asm/timer.h>
static
struct
sys_timer
*
sys_timers
[]
=
{
#ifdef CONFIG_SH_TMU
&
tmu_timer
,
#endif
NULL
,
};
static
char
timer_override
[
10
];
static
int
__init
timer_setup
(
char
*
str
)
{
if
(
str
)
strlcpy
(
timer_override
,
str
,
sizeof
(
timer_override
));
return
1
;
}
__setup
(
"timer="
,
timer_setup
);
struct
sys_timer
*
get_sys_timer
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
sys_timers
);
i
++
)
{
struct
sys_timer
*
t
=
sys_timers
[
i
];
if
(
unlikely
(
!
t
))
break
;
if
(
unlikely
(
timer_override
[
0
]))
if
((
strcmp
(
timer_override
,
t
->
name
)
!=
0
))
continue
;
if
(
likely
(
t
->
ops
->
init
()
==
0
))
return
t
;
}
return
NULL
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment