Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
fd5b1245
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fd5b1245
编写于
5月 12, 2009
作者:
P
Paul Mundt
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into sh/clkfwk
上级
9fe5ee0e
8be5f1a6
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
2359 addition
and
557 deletion
+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
未找到文件。
arch/sh/Kconfig
浏览文件 @
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
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录