add rk29 project
authorlhh <lhh@rock-chips.com>
Wed, 20 Oct 2010 07:29:03 +0000 (15:29 +0800)
committerlhh <lhh@rock-chips.com>
Wed, 20 Oct 2010 07:29:03 +0000 (15:29 +0800)
22 files changed:
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/configs/rk29_sdk_defconfig [new file with mode: 0644]
arch/arm/mach-rk29/Kconfig [new file with mode: 0644]
arch/arm/mach-rk29/Makefile [new file with mode: 0644]
arch/arm/mach-rk29/Makefile.boot [new file with mode: 0644]
arch/arm/mach-rk29/board-rk29sdk.c [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/clkdev.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/debug-macro.S [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/entry-macro.S [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/hardware.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/io.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/irqs.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/memory.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/rk29_iomap.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/system.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/timex.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/uncompress.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/vmalloc.h [new file with mode: 0644]
arch/arm/mach-rk29/include/mach/vreg.h [new file with mode: 0644]
arch/arm/mach-rk29/timer.c [new file with mode: 0644]
arch/arm/tools/mach-types

index 69c7e1becf063f9ce61072a00a1185d6c9ed9581..9d26ae3dff8e008b5fc42ec7f3f4934bc5acb0c8 100644 (file)
@@ -701,20 +701,29 @@ config ARCH_BCMRING
        select ARCH_WANT_OPTIONAL_GPIOLIB
        help
          Support for Broadcom's BCMRing platform.
+         
 config ARCH_RK2818
-        bool "Rockchip soc rk2818"
-        select CPU_ARM926T
-        select CPU_CP15_MMU
+       bool "Rockchip soc rk2818"
+       select CPU_ARM926T
+       select CPU_CP15_MMU
        select HAVE_TCM
        select HAVE_CLK
        select COMMON_CLKDEV
        select ARCH_HAS_CPUFREQ
-        select GENERIC_TIME
-        select GENERIC_CLOCKEVENTS
-        select ARCH_REQUIRE_GPIOLIB
+       select GENERIC_TIME
+       select GENERIC_CLOCKEVENTS
+       select ARCH_REQUIRE_GPIOLIB
        help
-          Support for Rockchip RK2818 soc.
-
+               Support for Rockchip RK2818 soc.
+          
+config ARCH_RK29
+       bool "Rockchip Soc Rk29"
+       select HAVE_CLK
+       select CPU_V7
+       select GENERIC_TIME
+       select GENERIC_CLOCKEVENTS
+       help
+         Support for Rockchip RK29 soc.
 
 endchoice
 
@@ -817,8 +826,11 @@ source "arch/arm/mach-u300/Kconfig"
 source "arch/arm/mach-w90x900/Kconfig"
 
 source "arch/arm/mach-bcmring/Kconfig"
+
 source "arch/arm/mach-rk2818/Kconfig"
 
+source "arch/arm/mach-rk29/Kconfig"
+
 # Definitions to make life easier
 config ARCH_ACORN
        bool
index 1442b3bebaee96f2c91edc3775fe3c093b445ad3..798442a24c1bdf0d4bf9430753507e8f0e54c908 100644 (file)
@@ -170,7 +170,8 @@ machine-$(CONFIG_ARCH_VERSATILE)    := versatile
 machine-$(CONFIG_ARCH_W90X900)         := w90x900
 machine-$(CONFIG_FOOTBRIDGE)           := footbridge
 machine-$(CONFIG_ARCH_MXC91231)                := mxc91231
-machine-$(CONFIG_ARCH_RK2818)   := rk2818
+machine-$(CONFIG_ARCH_RK2818)          := rk2818
+machine-$(CONFIG_ARCH_RK29)            := rk29
 
 # Platform directory name.  This list is sorted alphanumerically
 # by CONFIG_* macro name.
diff --git a/arch/arm/configs/rk29_sdk_defconfig b/arch/arm/configs/rk29_sdk_defconfig
new file mode 100644 (file)
index 0000000..451e597
--- /dev/null
@@ -0,0 +1,950 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.32.9
+# Wed Oct 20 15:12:34 2010
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+# CONFIG_SYSVIPC is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_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 is not set
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_DEBUG=y
+# CONFIG_CGROUP_NS is not set
+CONFIG_CGROUP_FREEZER=y
+# CONFIG_CGROUP_DEVICE is not set
+# CONFIG_CPUSETS is not set
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_CGROUP_MEM_RES_CTLR is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_PANIC_TIMEOUT=5
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_ASHMEM=y
+CONFIG_AIO=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+# CONFIG_LBDAF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_STMP3XXX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5PC1XX is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_RK2818 is not set
+CONFIG_ARCH_RK29=y
+CONFIG_MACH_RK29SDK=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMBEE is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+CONFIG_ARM_L1_CACHE_SHIFT=5
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_VERBOSE is not set
+CONFIG_CAN_PM_TRACE=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+# CONFIG_PM_RUNTIME is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_UNIX is not set
+# CONFIG_NET_KEY is not set
+# CONFIG_INET is not set
+CONFIG_ANDROID_PARANOID_NETWORK=y
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_MTD is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_ANDROID_PMEM is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_KERNEL_DEBUGGER_CORE is not set
+# CONFIG_UID_STAT is not set
+# CONFIG_APANIC is not set
+# CONFIG_STE is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_93CX6 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_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_KEYRESET=y
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_INPUT_GPIO is not set
+# CONFIG_G_SENSOR_DEVICE is not set
+# CONFIG_INPUT_JOGBALL is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+# CONFIG_HW_RANDOM is not set
+CONFIG_R3964=y
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=256
+# CONFIG_TCG_TPM is not set
+# CONFIG_DCC_TTY is not set
+# CONFIG_I2C is not set
+# CONFIG_SPI is not set
+# CONFIG_SPI_FPGA is not set
+# CONFIG_HEADSET_DET is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_WATCHDOG 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_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_MEDIA_SUPPORT is not set
+# CONFIG_SMS_SIANO_MDTV 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
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+# CONFIG_HID_SUPPORT 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_SWITCH is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+
+#
+# TI VLYNQ
+#
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+# CONFIG_ECHO is not set
+
+#
+# Android
+#
+CONFIG_ANDROID=y
+CONFIG_ANDROID_BINDER_IPC=y
+# CONFIG_ANDROID_LOGGER is not set
+# CONFIG_ANDROID_RAM_CONSOLE is not set
+# CONFIG_ANDROID_TIMED_OUTPUT is not set
+# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
+
+#
+# Qualcomm MSM Camera And Video
+#
+
+#
+# Camera Sensor Selection
+#
+# CONFIG_DST is not set
+# CONFIG_POHMELFS is not set
+# CONFIG_PLAN9AUTH is not set
+
+#
+# RAR Register Driver
+#
+# CONFIG_RAR_REGISTER is not set
+# CONFIG_IIO is not set
+
+#
+# DSP
+#
+# CONFIG_RK2818_DSP is not set
+
+#
+# RK1000 control
+#
+# CONFIG_RK1000_CONTROL is not set
+
+#
+# rk2818 POWER CONTROL
+#
+# CONFIG_RK2818_POWER is not set
+
+#
+# CMMB
+#
+# CONFIG_CMMB is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+# CONFIG_DNOTIFY is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=y
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_PAGE_POISONING is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_ICEDCC=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_SECURITYFS=y
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=y
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
diff --git a/arch/arm/mach-rk29/Kconfig b/arch/arm/mach-rk29/Kconfig
new file mode 100644 (file)
index 0000000..611c1cf
--- /dev/null
@@ -0,0 +1,6 @@
+config MACH_RK29SDK
+       depends on ARCH_RK29
+       default y
+       bool "ROCKCHIP Board Rk29 For Sdk"
+       help
+         Support for the ROCKCHIP Board For Rk29 Sdk.
\ No newline at end of file
diff --git a/arch/arm/mach-rk29/Makefile b/arch/arm/mach-rk29/Makefile
new file mode 100644 (file)
index 0000000..7e5236b
--- /dev/null
@@ -0,0 +1,2 @@
+obj-y += timer.o 
+obj-$(CONFIG_MACH_RK29SDK) += board-rk29sdk.o
diff --git a/arch/arm/mach-rk29/Makefile.boot b/arch/arm/mach-rk29/Makefile.boot
new file mode 100644 (file)
index 0000000..b1c7917
--- /dev/null
@@ -0,0 +1,3 @@
+  zreladdr-y           := 0x60408000
+params_phys-y          := 0x600f8000
+initrd_phys-y          := 0x60800000
diff --git a/arch/arm/mach-rk29/board-rk29sdk.c b/arch/arm/mach-rk29/board-rk29sdk.c
new file mode 100644 (file)
index 0000000..6014b66
--- /dev/null
@@ -0,0 +1,103 @@
+/* linux/arch/arm/mach-rk29/board-rk29.c\r
+ *\r
+ * Copyright (C) 2010 ROCKCHIP, Inc.\r
+ *\r
+ * This software is licensed under the terms of the GNU General Public\r
+ * License version 2, as published by the Free Software Foundation, and\r
+ * may be copied, distributed, and modified under those terms.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ */\r
+\r
+#include <linux/kernel.h>\r
+#include <linux/init.h>\r
+#include <linux/platform_device.h>\r
+#include <linux/input.h>\r
+#include <linux/io.h>\r
+#include <linux/delay.h>\r
+#include <linux/i2c.h>\r
+#include <linux/spi/spi.h>\r
+#include <linux/mmc/host.h>\r
+\r
+#include <mach/hardware.h>\r
+#include <asm/mach-types.h>\r
+#include <asm/mach/arch.h>\r
+#include <asm/mach/map.h>\r
+#include <asm/mach/flash.h>\r
+\r
+#include <mach/irqs.h>\r
+#include <mach/rk29_iomap.h>\r
+\r
+\r
+#include <linux/mtd/nand.h>\r
+#include <linux/mtd/partitions.h>\r
+\r
+extern struct sys_timer rk29_timer;\r
+\r
+\r
+//IOÓ³É䷽ʽÃèÊö £¬Ã¿¸öΪһ¶ÎÏßÐÔÁ¬ÐøÓ³Éä\r
+static struct map_desc rk29_io_desc[] __initdata = {\r
+       \r
+       {\r
+               .virtual        = RK29_GICCPU_BASE,                                     \r
+               .pfn            = __phys_to_pfn(RK29_GICCPU_PHYS),   \r
+               .length         = RK29_GICCPU_SIZE,                                     \r
+               .type           = MT_DEVICE                                             \r
+       },\r
+       \r
+       {\r
+               .virtual        = RK29_GICPERI_BASE,                                    \r
+               .pfn            = __phys_to_pfn(RK29_GICPERI_PHYS),   \r
+               .length         = RK29_GICPERI_SIZE,                                    \r
+               .type           = MT_DEVICE                                             \r
+       },\r
+       \r
+       {\r
+               .virtual        = RK29_NANDC_BASE,                              \r
+               .pfn            = __phys_to_pfn(RK29_NANDC_PHYS),        \r
+               .length         = RK29_NANDC_SIZE,                              \r
+               .type           = MT_DEVICE                                     \r
+       },\r
+\r
+       {\r
+               .virtual        = RK29_DDRC_BASE,\r
+               .pfn            = __phys_to_pfn(RK29_DDRC_PHYS),\r
+               .length         = RK29_DDRC_SIZE,\r
+               .type           = MT_DEVICE\r
+       },\r
+       \r
+};\r
+\r
+static void __init machine_rk29_init_irq(void)\r
+{\r
+       //rk29_init_irq();\r
+       //rk29_gpio_init(rk29_gpioBank, 8);\r
+       //rk29_gpio_irq_setup();\r
+}\r
+static void __init machine_rk29_board_init(void)\r
+{\r
+       \r
+}\r
+\r
+static void __init machine_rk29_mapio(void)\r
+{\r
+       iotable_init(rk29_io_desc, ARRAY_SIZE(rk29_io_desc));\r
+       //rk29_clock_init();\r
+       //rk29_iomux_init();    \r
+}\r
+\r
+MACHINE_START(RK29, "RK29board")\r
+\r
+/* UART for LL DEBUG */\r
+       .phys_io        = RK29_UART1_PHYS, \r
+       .io_pg_offst    = ((RK29_ADDR_BASE0) >> 18) & 0xfffc,\r
+       .boot_params    = RK29_SDRAM_PHYS + 0xf8000,\r
+       .map_io         = machine_rk29_mapio,\r
+       .init_irq       = machine_rk29_init_irq,\r
+       .init_machine   = machine_rk29_board_init,\r
+       .timer          = &rk29_timer,\r
+MACHINE_END
\ No newline at end of file
diff --git a/arch/arm/mach-rk29/include/mach/clkdev.h b/arch/arm/mach-rk29/include/mach/clkdev.h
new file mode 100644 (file)
index 0000000..730c49d
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef __MACH_CLKDEV_H
+#define __MACH_CLKDEV_H
+
+static inline int __clk_get(struct clk *clk)
+{
+       return 1;
+}
+
+static inline void __clk_put(struct clk *clk)
+{
+}
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/debug-macro.S b/arch/arm/mach-rk29/include/mach/debug-macro.S
new file mode 100644 (file)
index 0000000..ad42c6e
--- /dev/null
@@ -0,0 +1,45 @@
+/* arch/arm/mach-rk29/include/mach/debug-macro.S
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/* pull in the relevant register and map files. */
+
+#include <mach/rk29_iomap.h>
+
+       /* note, for the boot process to work we have to keep the UART
+        * virtual address aligned to an 1MiB boundary for the L1
+        * mapping the head code makes. We keep the UART virtual address
+        * aligned and add in the offset when we load the value here.
+        */
+
+       .macro addruart, rx
+               mrc     p15, 0, \rx, c1, c0
+               tst     \rx, #1
+               ldreq   \rx, = RK29_UART1_PHYS
+               ldrne   \rx, = RK29_UART1_BASE
+       .endm
+
+       .macro  senduart,rd,rx
+       str     \rd, [\rx, #0x00]
+       .endm
+
+       .macro  waituart,rd,rx
+       @ wait for TX_READY
+1:     ldr     \rd, [\rx, #0x7C]
+       tst     \rd, #0x02
+       beq     1b
+       .endm
+
+       .macro  busyuart,rd,rx
+       .endm
diff --git a/arch/arm/mach-rk29/include/mach/entry-macro.S b/arch/arm/mach-rk29/include/mach/entry-macro.S
new file mode 100644 (file)
index 0000000..43849c8
--- /dev/null
@@ -0,0 +1,51 @@
+/* arch/arm/mach-rk29/include/mach/entry-macro.S
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include "irqs.h"
+#include "rk29_iomap.h"
+
+       .macro  disable_fiq
+       .endm
+
+       .macro  get_irqnr_preamble, base, tmp
+       ldr     \base, =RK29_GICPERI_BASE
+       .endm
+
+       .macro  arch_ret_to_user, tmp1, tmp2
+       .endm
+
+       .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
+#if 0  
+       @ check the vic0
+       mov     \irqnr, # S3C_IRQ_OFFSET + 31
+       ldr     \irqstat, [ \base, # VIC_IRQ_STATUS ]
+       teq     \irqstat, #0
+
+       @ otherwise try vic1
+       addeq   \tmp, \base, #(S3C_VA_VIC1 - S3C_VA_VIC0)
+       addeq   \irqnr, \irqnr, #32
+       ldreq   \irqstat, [ \tmp, # VIC_IRQ_STATUS ]
+       teqeq   \irqstat, #0
+
+       @ otherwise try vic2
+       addeq   \tmp, \base, #(S3C_VA_VIC2 - S3C_VA_VIC0)
+       addeq   \irqnr, \irqnr, #32
+       ldreq   \irqstat, [ \tmp, # VIC_IRQ_STATUS ]
+       teqeq   \irqstat, #0
+
+       clzne   \irqstat, \irqstat
+       subne   \irqnr, \irqnr, \irqstat
+#endif         
+       .endm
\ No newline at end of file
diff --git a/arch/arm/mach-rk29/include/mach/hardware.h b/arch/arm/mach-rk29/include/mach/hardware.h
new file mode 100644 (file)
index 0000000..f8328d6
--- /dev/null
@@ -0,0 +1,25 @@
+/* arch/arm/mach-rk29/include/mach/hardware.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_HARDWARE_H
+
+
+#ifndef __ASSEMBLY__
+# define __REG(x)       (*((volatile u32 *)IO_ADDRESS(x)))
+
+# define __REG2(x,y)        (*(volatile u32 *)((u32)&__REG(x) + (y)))
+#endif
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/io.h b/arch/arm/mach-rk29/include/mach/io.h
new file mode 100644 (file)
index 0000000..3a4b15a
--- /dev/null
@@ -0,0 +1,24 @@
+/* arch/arm/mach-rk29/include/mach/io.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARM_ARCH_IO_H
+#define __ASM_ARM_ARCH_IO_H
+
+#define IO_SPACE_LIMIT 0xffffffff
+
+#define __io(a)                __typesafe_io(a)
+#define __mem_pci(a)    (a)
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/irqs.h b/arch/arm/mach-rk29/include/mach/irqs.h
new file mode 100644 (file)
index 0000000..72fab36
--- /dev/null
@@ -0,0 +1,26 @@
+/* arch/arm/mach-rk29/include/mach/irqs.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+
+#ifndef __ARCH_ARM_MACH_RK29_IRQS_H
+#define __ARCH_ARM_MACH_RK29_IRQS_H
+
+#define        NR_IRQS         64  
+#define IRQ_NR_TIMER0                15
+#define IRQ_NR_TIMER1                16
+#define IRQ_NR_TIMER2                17
+#define IRQ_NR_TIMER3                18
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/memory.h b/arch/arm/mach-rk29/include/mach/memory.h
new file mode 100644 (file)
index 0000000..bb8a94a
--- /dev/null
@@ -0,0 +1,27 @@
+/* arch/arm/mach-rk29/include/mach/memory.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_MEMORY_H
+#define __ASM_ARCH_RK29_MEMORY_H
+
+/* physical offset of RAM */
+#define PHYS_OFFSET            UL(0x60000000)
+
+/* bus address and physical addresses are identical */
+#define __virt_to_bus(x)       __virt_to_phys(x)
+#define __bus_to_virt(x)       __phys_to_virt(x)
+
+#endif
+
diff --git a/arch/arm/mach-rk29/include/mach/rk29_iomap.h b/arch/arm/mach-rk29/include/mach/rk29_iomap.h
new file mode 100644 (file)
index 0000000..9c18b2d
--- /dev/null
@@ -0,0 +1,71 @@
+/* arch/arm/mach-rk29/include/mach/rk29_iomap.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_IOMAP_H
+#define __ASM_ARCH_RK29_IOMAP_H
+
+#include <asm/sizes.h>
+
+/* defines */
+#define                SZ_22K                          0x5800
+/*IOÓ³É䷽ʽ¶¨Ò壬ÒÔÎïÀíµØÖ·0x20000000Ϊ»ùµØÖ·
+ *ºÍÒÔ0x10000000Ϊ»ùµØÖ··ÖÁíÓ³ÉäΪ£º0xf5000000,
+ *0xf4000000
+ */
+#define RK29_ADDR_BASE1                        0xF5000000  
+#define RK29_ADDR_BASE0                        0xF4000000
+
+#define RK29_SDRAM_PHYS                                0x60000000
+#define RK29_AXI0_PHYS                         0x1012C000                      
+#define RK29_AXI1_PHYS                         0x10000000      
+#define RK29_PERI_PHYS                         0x10140000      
+
+#define RK29_BOOTROM_PHYS              0x10100000
+#define RK29_BOOTROM_SIZE              SZ_16K
+
+#define RK29_DDRC_PHYS                 0x10124000
+#define RK29_DDRC_BASE                 (RK29_ADDR_BASE0+0x124000)
+#define RK29_DDRC_SIZE                 SZ_16K
+
+#define RK29_GICCPU_PHYS                       0x1012C000
+#define RK29_GICCPU_BASE                       (RK29_ADDR_BASE0+0x12C000)
+#define RK29_GICCPU_SIZE                       SZ_8K
+
+#define RK29_GICPERI_PHYS                      0x1012E000
+#define RK29_GICPERI_BASE                      (RK29_ADDR_BASE0+0x12E000)
+#define RK29_GICPERI_SIZE                      SZ_8K
+
+#define RK29_USBHOST_PHYS           0x10140000
+#define RK29_USBHOST_SIZE           SZ_256K
+
+#define RK29_USBOTG0_PHYS           0x10180000
+#define RK29_USBOTG0_SIZE           SZ_256K
+
+#define RK29_USBOTG1_PHYS           0x101c0000
+#define RK29_USBOTG1_SIZE           SZ_256K
+
+#define RK29_NANDC_PHYS                                0x1012E000
+#define RK29_NANDC_BASE                                (RK29_ADDR_BASE0+0x500000)
+#define RK29_NANDC_SIZE                                SZ_16K
+
+#define RK29_TIMER0_BASE                       (RK29_ADDR_BASE1+0x38000)
+#define RK29_TIMER0_PHYS                       0x20038000
+#define RK29_TIMER0_SIZE                       SZ_8K
+
+#define RK29_UART1_PHYS                0x20060000
+#define RK29_UART1_BASE                (RK29_ADDR_BASE1+0x60000)
+#define RK29_UART1_SIZE                SZ_16K
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/system.h b/arch/arm/mach-rk29/include/mach/system.h
new file mode 100644 (file)
index 0000000..e2a092e
--- /dev/null
@@ -0,0 +1,41 @@
+/* arch/arm/mach-rk29/include/mach/system.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+ /***************
+*       DEBUG
+****************/
+#define RESTART_DEBUG
+#ifdef RESTART_DEBUG
+#define restart_dbg(format, arg...) \
+       printk("RESTART_DEBUG : " format "\n" , ## arg)
+#else
+#define restart_dbg(format, arg...) do {} while (0)
+#endif
+
+static inline void arch_reset(int  mode, const char *cmd)
+{
+       
+       /*
+       *  debug trace
+       */
+       restart_dbg("%s->%s->%d->mode=%c cmd=%s",__FILE__,__FUNCTION__,__LINE__,mode,cmd);
+       printk("Can't reboot. Please open rk2818 power manage!!\n");
+       for(;;);
+}
+
+static inline void arch_idle(void)
+{
+       cpu_do_idle();
+}
diff --git a/arch/arm/mach-rk29/include/mach/timex.h b/arch/arm/mach-rk29/include/mach/timex.h
new file mode 100644 (file)
index 0000000..7896c4e
--- /dev/null
@@ -0,0 +1,21 @@
+/* arch/arm/mach-rk29/include/mach/timex.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_TIMEX_H
+#define __ASM_ARCH_RK29_TIMEX_H
+
+#define CLOCK_TICK_RATE                1000000
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/uncompress.h b/arch/arm/mach-rk29/include/mach/uncompress.h
new file mode 100644 (file)
index 0000000..8f09385
--- /dev/null
@@ -0,0 +1,36 @@
+/* arch/arm/mach-rk29/include/mach/uncompress.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_UNCOMPRESS_H
+
+#include "hardware.h"
+
+static void putc(int c)
+{
+}
+
+static inline void flush(void)
+{
+}
+
+static inline void arch_decomp_setup(void)
+{
+}
+
+static inline void arch_decomp_wdog(void)
+{
+}
+
+#endif
diff --git a/arch/arm/mach-rk29/include/mach/vmalloc.h b/arch/arm/mach-rk29/include/mach/vmalloc.h
new file mode 100644 (file)
index 0000000..014c8ba
--- /dev/null
@@ -0,0 +1,22 @@
+/* arch/arm/mach-rk29/include/mach/vmalloc.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ASM_ARCH_RK29_VMALLOC_H
+#define __ASM_ARCH_RK29_VMALLOC_H
+
+#define VMALLOC_END      (PAGE_OFFSET + 0x18000000)
+
+#endif
+
diff --git a/arch/arm/mach-rk29/include/mach/vreg.h b/arch/arm/mach-rk29/include/mach/vreg.h
new file mode 100644 (file)
index 0000000..49f15d2
--- /dev/null
@@ -0,0 +1,28 @@
+/* arch/arm/mach-rk2818/include/mach/vreg.h
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __ARCH_ARM_MACH_RK29_VREG_H
+#define __ARCH_ARM_MACH_RK29_VREG_H
+
+struct vreg;
+
+struct vreg *vreg_get(struct device *dev, const char *id);
+void vreg_put(struct vreg *vreg);
+
+int vreg_enable(struct vreg *vreg);
+void vreg_disable(struct vreg *vreg);
+int vreg_set_level(struct vreg *vreg, unsigned mv);
+
+#endif
diff --git a/arch/arm/mach-rk29/timer.c b/arch/arm/mach-rk29/timer.c
new file mode 100644 (file)
index 0000000..cd62da5
--- /dev/null
@@ -0,0 +1,206 @@
+/* linux/arch/arm/mach-rk29/timer.c
+ *
+ * Copyright (C) 2010 ROCKCHIP, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/time.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/clk.h>
+#include <linux/clockchips.h>
+#include <linux/io.h>
+#include <linux/cpufreq.h>
+
+#include <asm/mach/time.h>
+#include <mach/rk29_iomap.h>
+
+#define TIMER_LOAD_COUNT       0x0000
+#define TIMER_CUR_VALUE                0x0004
+#define TIMER_CONTROL_REG      0x0008
+#define TIMER_EOI              0x000C
+#define TIMER_INT_STATUS       0x0010
+
+#define TIMER_DISABLE                  4
+#define TIMER_ENABLE                   3
+#define TIMER_ENABLE_FREE_RUNNING      1
+
+#define CHECK_VBUS_MS                  1000    /* ms */
+
+#define RK_TIMER_ENABLE(n)             writel(TIMER_ENABLE, RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_CONTROL_REG)
+#define RK_TIMER_ENABLE_FREE_RUNNING(n)        writel(TIMER_ENABLE_FREE_RUNNING, RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_CONTROL_REG)
+#define RK_TIMER_DISABLE(n)            writel(TIMER_DISABLE, RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_CONTROL_REG)
+
+#define RK_TIMER_SETCOUNT(n, count)    writel(count, RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_LOAD_COUNT)
+#define RK_TIMER_GETCOUNT(n)           readl(RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_LOAD_COUNT)
+
+#define RK_TIMER_READVALUE(n)          readl(RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_CUR_VALUE)
+#define RK_TIMER_INT_CLEAR(n)          readl(RK29_TIMER0_BASE + 0x14 * (n - 1) + TIMER_EOI)
+
+#define TIMER_CLKEVT                   2       /* timer2 */
+#define IRQ_NR_TIMER_CLKEVT            IRQ_NR_TIMER2
+#define TIMER_CLKEVT_NAME              "timer2"
+
+#define TIMER_CLKSRC                   3       /* timer3 */
+#define IRQ_NR_TIMER_CLKSRC            IRQ_NR_TIMER3
+#define TIMER_CLKSRC_NAME              "timer3"
+
+static struct clk *timer_clk;
+static volatile unsigned long timer_mult; /* timer count = cycle * timer_mult */
+
+void rk29_timer_update_mult(void)
+{
+       //if (timer_clk)
+       //      timer_mult = clk_get_rate(timer_clk) / 1000000;
+}
+
+static int rk29_timer_set_next_event(unsigned long cycles, struct clock_event_device *evt)
+{
+       RK_TIMER_DISABLE(TIMER_CLKEVT);
+       RK_TIMER_SETCOUNT(TIMER_CLKEVT, cycles * timer_mult);
+       RK_TIMER_ENABLE(TIMER_CLKEVT);
+
+       return 0;
+}
+
+static void rk29_timer_set_mode(enum clock_event_mode mode, struct clock_event_device *evt)
+{
+       switch (mode) {
+       case CLOCK_EVT_MODE_RESUME:
+       case CLOCK_EVT_MODE_PERIODIC:
+       case CLOCK_EVT_MODE_ONESHOT:
+               break;
+       case CLOCK_EVT_MODE_UNUSED:
+       case CLOCK_EVT_MODE_SHUTDOWN:
+               RK_TIMER_DISABLE(TIMER_CLKEVT);
+               break;
+       }
+}
+
+static struct clock_event_device rk29_timer_clockevent = {
+       .name           = TIMER_CLKEVT_NAME,
+       .features       = CLOCK_EVT_FEAT_ONESHOT,
+       .shift          = 32,
+       .rating         = 200,
+       .set_next_event = rk29_timer_set_next_event,
+       .set_mode       = rk29_timer_set_mode,
+};
+
+static irqreturn_t rk29_timer_clockevent_interrupt(int irq, void *dev_id)
+{
+       struct clock_event_device *evt = dev_id;
+
+       RK_TIMER_INT_CLEAR(TIMER_CLKEVT);
+       RK_TIMER_DISABLE(TIMER_CLKEVT);
+
+       evt->event_handler(evt);
+
+       return IRQ_HANDLED;
+}
+
+static struct irqaction rk29_timer_clockevent_irq = {
+       .name           = TIMER_CLKEVT_NAME,
+       .flags          = IRQF_DISABLED | IRQF_TIMER,
+       .handler        = rk29_timer_clockevent_interrupt,
+       .irq            = IRQ_NR_TIMER_CLKEVT,
+       .dev_id         = &rk29_timer_clockevent,
+};
+
+static int rk29_timer_cpufreq_notifier(struct notifier_block *nb, unsigned long val, void *data)
+{
+       if (val == CPUFREQ_POSTCHANGE) {
+               rk29_timer_update_mult();
+       }
+
+       return 0;
+}
+
+static struct notifier_block rk29_timer_cpufreq_notifier_block = {
+       .notifier_call  = rk29_timer_cpufreq_notifier,
+       .priority       = 0x7ffffff,
+};
+
+static __init int rk29_timer_init_cpufreq(void)
+{
+       cpufreq_register_notifier(&rk29_timer_cpufreq_notifier_block, CPUFREQ_TRANSITION_NOTIFIER);
+       return 0;
+}
+
+arch_initcall_sync(rk29_timer_init_cpufreq);
+
+static __init int rk29_timer_init_clockevent(void)
+{
+       struct clock_event_device *ce = &rk29_timer_clockevent;
+
+       //timer_clk = clk_get(NULL, "timer");
+       rk29_timer_update_mult();
+
+       RK_TIMER_DISABLE(TIMER_CLKEVT);
+
+       setup_irq(rk29_timer_clockevent_irq.irq, &rk29_timer_clockevent_irq);
+
+       ce->mult = div_sc(1000000, NSEC_PER_SEC, ce->shift);
+       ce->max_delta_ns = clockevent_delta2ns(0xFFFFFFFFUL / 256, ce); // max pclk < 256MHz
+       ce->min_delta_ns = clockevent_delta2ns(1, ce) + 1;
+
+       ce->cpumask = cpumask_of(0);
+
+       clockevents_register_device(ce);
+
+       return 0;
+}
+
+static cycle_t rk29_timer_read(struct clocksource *cs)
+{
+       return ~RK_TIMER_READVALUE(TIMER_CLKSRC);
+}
+
+static struct clocksource rk29_timer_clocksource = {
+       .name           = TIMER_CLKSRC_NAME,
+       .rating         = 200,
+       .read           = rk29_timer_read,
+       .mask           = CLOCKSOURCE_MASK(32),
+       .shift          = 26,
+       .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
+};
+
+static void __init rk29_timer_init_clocksource(void)
+{
+       static char err[] __initdata = KERN_ERR "%s: can't register clocksource!\n";
+       struct clocksource *cs = &rk29_timer_clocksource;
+
+       RK_TIMER_DISABLE(TIMER_CLKSRC);
+       RK_TIMER_SETCOUNT(TIMER_CLKSRC, 0xFFFFFFFF);
+       RK_TIMER_ENABLE_FREE_RUNNING(TIMER_CLKSRC);
+
+       cs->mult = clocksource_hz2mult(24000000, cs->shift);
+       if (clocksource_register(cs))
+               printk(err, cs->name);
+
+}
+
+static void __init rk29_timer_init(void)
+{
+       rk29_timer_init_clocksource();
+       rk29_timer_init_clockevent();
+}
+
+struct sys_timer rk29_timer = {
+       .init = rk29_timer_init
+};
+
+
+
+
+
+
index bbc21a40681efc80d91ca5d4b13b052eb32540ae..2caffbbf410845f8ea08aaf8a219d8994bab1feb 100644 (file)
@@ -2536,3 +2536,4 @@ c3ax03                    MACH_C3AX03             C3AX03                  2549
 mxt_td60               MACH_MXT_TD60           MXT_TD60                2550
 esyx                   MACH_ESYX               ESYX                    2551
 bulldog                        MACH_BULLDOG            BULLDOG                 2553
+rk29                   MACH_RK29               RK29                    2929
\ No newline at end of file