summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig4
-rw-r--r--arch/arm/configs/wedge_defconfig1479
-rw-r--r--arch/arm/kernel/head.S4
-rwxr-xr-xarch/arm/mach-aspeed/include/mach/ast_wdt.h2
-rw-r--r--arch/arm/mach-aspeed/include/mach/debug-macro.S5
-rw-r--r--arch/arm/mach-aspeed/include/mach/system.h2
-rw-r--r--arch/arm/mach-aspeed/include/mach/uncompress.h4
-rw-r--r--arch/arm/mach-aspeed/include/mach/vmalloc.h2
-rw-r--r--arch/arm/plat-aspeed/Makefile5
-rw-r--r--arch/arm/plat-aspeed/ast-scu.c17
-rw-r--r--arch/arm/plat-aspeed/dev-i2c.c183
-rw-r--r--arch/arm/plat-aspeed/dev-lpc.c22
-rw-r--r--arch/arm/plat-aspeed/dev-pwm-fan.c8
-rw-r--r--arch/arm/plat-aspeed/dev-rtc.c2
-rw-r--r--arch/arm/plat-aspeed/dev-spi.c74
-rw-r--r--arch/arm/plat-aspeed/dev-uart.c12
-rw-r--r--arch/arm/plat-aspeed/dev-virthub.c62
-rw-r--r--arch/arm/plat-aspeed/devs.c10
-rw-r--r--arch/arm/plat-aspeed/include/plat/ast-scu.h1
-rw-r--r--arch/arm/plat-aspeed/include/plat/devs.h2
-rw-r--r--arch/arm/plat-aspeed/include/plat/regs-lpc.h6
-rw-r--r--arch/arm/plat-aspeed/include/plat/regs-pwm_fan.h32
-rw-r--r--arch/arm/plat-aspeed/timer.c223
23 files changed, 2006 insertions, 155 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 71db83ffe935..1869327f0f6a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -203,8 +203,10 @@ config ARCH_ASPEED
bool "ASPEED AST Family"
select ARM_AMBA
select PLAT_ASPEED
- select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
+ select GENERIC_GPIO
+ select GENERIC_TIME
+ select GENERIC_CLOCKEVENTS
config ARCH_AAEC2000
diff --git a/arch/arm/configs/wedge_defconfig b/arch/arm/configs/wedge_defconfig
new file mode 100644
index 000000000000..23a9fe3403f8
--- /dev/null
+++ b/arch/arm/configs/wedge_defconfig
@@ -0,0 +1,1479 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.28.9
+# Tue Feb 3 16:41:40 2015
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+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_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+# CONFIG_CGROUPS is not set
+# CONFIG_GROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+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_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+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_CLASSIC_RCU=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_ARCH_ASPEED=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_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_MSM is not set
+CONFIG_IRMP=y
+# CONFIG_PCEXT is not set
+# CONFIG_REMOTEFX is not set
+# CONFIG_ARCH_AST1100 is not set
+# CONFIG_ARCH_AST2100 is not set
+# CONFIG_ARCH_AST2200 is not set
+# CONFIG_ARCH_AST2300 is not set
+CONFIG_ARCH_AST2400=y
+# CONFIG_ARCH_AST2500 is not set
+
+#
+# FLASH Chip Select
+#
+# CONFIG_AST_CS0_NOR is not set
+# CONFIG_AST_CS0_NAND is not set
+CONFIG_AST_CS0_SPI=y
+# CONFIG_AST_CS0_NONE is not set
+# CONFIG_AST_CS1_NOR is not set
+# CONFIG_AST_CS1_NAND is not set
+# CONFIG_AST_CS1_SPI is not set
+CONFIG_AST_CS1_NONE=y
+# CONFIG_AST_CS2_NOR is not set
+# CONFIG_AST_CS2_NAND is not set
+# CONFIG_AST_CS2_SPI is not set
+CONFIG_AST_CS2_NONE=y
+# CONFIG_AST_CS3_NOR is not set
+# CONFIG_AST_CS3_NAND is not set
+# CONFIG_AST_CS3_SPI is not set
+CONFIG_AST_CS3_NONE=y
+# CONFIG_AST_CS4_NOR is not set
+# CONFIG_AST_CS4_NAND is not set
+# CONFIG_AST_CS4_SPI is not set
+CONFIG_AST_CS4_NONE=y
+# CONFIG_ARCH_AST1070 is not set
+# CONFIG_AST_SCU_LOCK is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+CONFIG_PLAT_ASPEED=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+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 is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_UNEVICTABLE_LRU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+CONFIG_FPE_NWFPE_XP=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+CONFIG_BINFMT_AOUT=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+# CONFIG_VLAN_8021Q_GVRP is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+CONFIG_WAN_ROUTER=y
+# CONFIG_NET_SCHED 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_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_DATAFLASH=m
+CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
+# CONFIG_MTD_DATAFLASH_OTP is not set
+CONFIG_MTD_M25P80=y
+CONFIG_M25PXX_USE_FAST_READ=y
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI 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=y
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_RD_BZIP2 is not set
+CONFIG_RD_LZMA=y
+CONFIG_RD_GZIP=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_C2PORT is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=y
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+CONFIG_BONDING=m
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_NET_ETHERNET is not set
+CONFIG_NETDEV_1000=y
+CONFIG_ASPEEDMAC=y
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_IWLWIFI_LEDS is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_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
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_SERIAL=y
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_AMBAKMI is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_N_HDLC is not set
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_AST_DMA_UART is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_AMBA_PL010 is not set
+# CONFIG_SERIAL_AMBA_PL011 is not set
+# CONFIG_SERIAL_AST is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_AST_MISC=y
+# CONFIG_AST_VIDEO is not set
+# CONFIG_ADC_CAT9883 is not set
+# CONFIG_AST_SPI_BIOS is not set
+CONFIG_AST_PECI=y
+# CONFIG_AST_KCS is not set
+# CONFIG_AST_GPIO is not set
+# CONFIG_HW_RANDOM is not set
+CONFIG_NVRAM=y
+# 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_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_AST=y
+CONFIG_AST_I2C_SLAVE_MODE=y
+CONFIG_AST_I2C_SLAVE_EEPROM=y
+# CONFIG_AST_I2C_SLAVE_RDWR is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+CONFIG_AT24=m
+# CONFIG_SENSORS_EEPROM is not set
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_AST=y
+CONFIG_SPI_FMC=y
+CONFIG_SPI_BITBANG=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_AT25=m
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM75=m
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+CONFIG_SENSORS_MAX127=m
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+CONFIG_SENSORS_ADS7828=m
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AST_ADC=y
+CONFIG_SENSORS_AST_PWM_FAN=y
+CONFIG_SENSORS_FB_PANTHER_PLUS=m
+CONFIG_PMBUS=m
+CONFIG_SENSORS_PMBUS=m
+CONFIG_SENSORS_ADM1275=m
+# CONFIG_SENSORS_LM25066 is not set
+# CONFIG_SENSORS_LTC2978 is not set
+# CONFIG_SENSORS_MAX16064 is not set
+# CONFIG_SENSORS_MAX34440 is not set
+# CONFIG_SENSORS_MAX8688 is not set
+CONFIG_SENSORS_PFE1100=m
+CONFIG_SENSORS_PFE3000=m
+# CONFIG_SENSORS_UCD9000 is not set
+# CONFIG_SENSORS_UCD9200 is not set
+# CONFIG_SENSORS_ZL6100 is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_AST_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_VIDEO_MEDIA is not set
+
+#
+# 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
+
+#
+# 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=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+
+#
+# AST USB Drivers
+#
+CONFIG_AST_USB_UHCI_HCD=y
+# CONFIG_AST_USB_UHCI_MULTIPORT_1 is not set
+# CONFIG_AST_USB_UHCI_MULTIPORT_2 is not set
+CONFIG_AST_USB_UHCI_MULTIPORT_4=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+
+#
+# see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+CONFIG_USB_GADGET_ASPEED_AST=y
+CONFIG_USB_ASPEED_AST=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+CONFIG_USB_CDC_COMPOSITE=m
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 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
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# 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_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+CONFIG_RTC_DRV_ASPEED=y
+# CONFIG_DMADEVICES is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_UIO 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 is not set
+# CONFIG_EXT4_FS is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# 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=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# 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=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# 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_YAFFS_FS=y
+CONFIG_YAFFS_YAFFS1=y
+# CONFIG_YAFFS_9BYTE_TAGS is not set
+# CONFIG_YAFFS_DOES_ECC is not set
+CONFIG_YAFFS_YAFFS2=y
+CONFIG_YAFFS_AUTO_YAFFS2=y
+# CONFIG_YAFFS_DISABLE_TAGS_ECC is not set
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
+# CONFIG_YAFFS_EMPTY_LOST_AND_FOUND is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+# 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=y
+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 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+
+#
+# Tracers
+#
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
+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_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_NULL=y
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_AUTHENC=m
+# 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 is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+# CONFIG_CRYPTO_CRC32C 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 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=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=m
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+
+
+# GUC USB Drivers
+#
+CONFIG_GUC_USB_UHCI_HCD=m
+# CONFIG_GUC_USB_UHCI_MULTIPORT_1 is not set
+# CONFIG_GUC_USB_UHCI_MULTIPORT_2 is not set
+CONFIG_GUC_USB_UHCI_MULTIPORT_4=y
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 8ff0e2379fd8..21e17dc94cb5 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -21,7 +21,6 @@
#include <asm/memory.h>
#include <asm/thread_info.h>
#include <asm/system.h>
-#include <asm/mach-types.h>
#if (PHYS_OFFSET & 0x001fffff)
#error "PHYS_OFFSET must be at an even 2MiB boundary!"
@@ -77,14 +76,13 @@
*/
.section ".text.head", "ax"
ENTRY(stext)
- ldr r5, =machine_arch_type @ find the machine type
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
@ and irqs disabled
mrc p15, 0, r9, c0, c0 @ get processor id
bl __lookup_processor_type @ r5=procinfo r9=cpuid
movs r10, r5 @ invalid processor (r5=0)?
beq __error_p @ yes, error 'p'
-@ bl __lookup_machine_type @ r5=machinfo
+ bl __lookup_machine_type @ r5=machinfo
movs r8, r5 @ invalid machine (r5=0)?
beq __error_a @ yes, error 'a'
bl __vet_atags
diff --git a/arch/arm/mach-aspeed/include/mach/ast_wdt.h b/arch/arm/mach-aspeed/include/mach/ast_wdt.h
index 6d7d7f470b11..f9125a112fa2 100755
--- a/arch/arm/mach-aspeed/include/mach/ast_wdt.h
+++ b/arch/arm/mach-aspeed/include/mach/ast_wdt.h
@@ -8,4 +8,4 @@
* your option) any later version.
*/
- extern void ast_soc_wdt_reset(void);
+ extern void ast_wdt_reset_full(void);
diff --git a/arch/arm/mach-aspeed/include/mach/debug-macro.S b/arch/arm/mach-aspeed/include/mach/debug-macro.S
index 0b7c9278b9b0..ff3195ac820f 100644
--- a/arch/arm/mach-aspeed/include/mach/debug-macro.S
+++ b/arch/arm/mach-aspeed/include/mach/debug-macro.S
@@ -13,9 +13,8 @@
.macro addruart, rx, tmp
mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
- ldreq \rx, =AST_UART0_BASE
- ldrne \rx, =IO_ADDRESS(AST_UART0_BASE)
- orr \rx, \rx, #0x00012000
+ ldreq \rx, =AST_UART3_BASE
+ ldrne \rx, =IO_ADDRESS(AST_UART3_BASE)
.endm
#define UART_SHIFT 2
diff --git a/arch/arm/mach-aspeed/include/mach/system.h b/arch/arm/mach-aspeed/include/mach/system.h
index 96e90dad52fc..926268b948e1 100644
--- a/arch/arm/mach-aspeed/include/mach/system.h
+++ b/arch/arm/mach-aspeed/include/mach/system.h
@@ -37,7 +37,7 @@ static inline void arch_reset(char mode)
* Use WDT to restart system
*/
#if defined(CONFIG_AST_WATCHDOG) || defined(CONFIG_AST_WATCHDOG_MODULE)
- ast_soc_wdt_reset();
+ ast_wdt_reset_full();
#endif
}
diff --git a/arch/arm/mach-aspeed/include/mach/uncompress.h b/arch/arm/mach-aspeed/include/mach/uncompress.h
index 896b8542a530..80e560db4033 100644
--- a/arch/arm/mach-aspeed/include/mach/uncompress.h
+++ b/arch/arm/mach-aspeed/include/mach/uncompress.h
@@ -12,8 +12,8 @@
#include <mach/platform.h>
#include <mach/aspeed_serial.h>
-#define UART_PUT_CHAR (*(volatile unsigned char *)(AST_UART0_BASE + UART_THR))
-#define UART_GET_LSR (*(volatile unsigned char *)(AST_UART0_BASE + UART_LSR))
+#define UART_PUT_CHAR (*(volatile unsigned char *)(AST_UART3_BASE + UART_THR))
+#define UART_GET_LSR (*(volatile unsigned char *)(AST_UART3_BASE + UART_LSR))
static void putc(int c)
{
diff --git a/arch/arm/mach-aspeed/include/mach/vmalloc.h b/arch/arm/mach-aspeed/include/mach/vmalloc.h
index 3706cf1f168e..51912aefaa38 100644
--- a/arch/arm/mach-aspeed/include/mach/vmalloc.h
+++ b/arch/arm/mach-aspeed/include/mach/vmalloc.h
@@ -23,7 +23,7 @@
#define VMALLOC_OFFSET (8*1024*1024)
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
-#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
+#define VMALLOC_END (PAGE_OFFSET + 0x20000000)
#else
#define VMALLOC_END 0xf8000000UL
#endif \ No newline at end of file
diff --git a/arch/arm/plat-aspeed/Makefile b/arch/arm/plat-aspeed/Makefile
index faba830357bd..b63191c706f1 100644
--- a/arch/arm/plat-aspeed/Makefile
+++ b/arch/arm/plat-aspeed/Makefile
@@ -18,7 +18,7 @@ obj-y += dev-uart.o dev-vuart.o dev-wdt.o dev-rtc.o dev-gpio.o dev-sgpio.o
obj-y += dev-nor.o dev-nand.o dev-sdhci.o
#bus
-obj-y += dev-i2c.o dev-spi.o dev-ehci.o dev-uhci.o dev-lpc.o dev-peci.o dev-kcs.o dev-mbx.o dev-snoop.o
+obj-y += dev-i2c.o dev-spi.o dev-ehci.o dev-uhci.o dev-lpc.o dev-peci.o dev-kcs.o dev-mbx.o dev-snoop.o dev-lpc.o
#dev
#obj-y += dev-udc11.o
@@ -33,3 +33,6 @@ obj-y += dev-fb.o dev-video.o
#obj-m :=
#obj-n :=
#obj- :=
+
+#usbdevicegadgetthing
+obj-y += dev-virthub.o
diff --git a/arch/arm/plat-aspeed/ast-scu.c b/arch/arm/plat-aspeed/ast-scu.c
index 1f1dde27608f..76722f481c78 100644
--- a/arch/arm/plat-aspeed/ast-scu.c
+++ b/arch/arm/plat-aspeed/ast-scu.c
@@ -251,6 +251,15 @@ ast_scu_init_usb20(void)
}
+extern void
+ast_scu_init_vhub(void) {
+ //start USB20 clock
+ ast_scu_write(ast_scu_read(AST_SCU_CLK_STOP) | SCU_USB20_CLK_EN, AST_SCU_CLK_STOP);
+ mdelay(10);
+ //disable USB20 reset
+ ast_scu_write(ast_scu_read(AST_SCU_RESET) & ~SCU_RESET_USB20, AST_SCU_RESET);
+}
+
EXPORT_SYMBOL(ast_scu_init_usb20);
extern void
@@ -739,7 +748,7 @@ ast_scu_multi_func_uart(u8 uart)
{
switch(uart) {
case 1:
- ast_scu_write(ast_scu_read(AST_SCU_FUN_PIN_CTRL1) |
+ ast_scu_write(ast_scu_read(AST_SCU_FUN_PIN_CTRL2) |
SCU_FUN_PIN_UART1_RXD |
SCU_FUN_PIN_UART1_TXD |
SCU_FUN_PIN_UART1_NRTS |
@@ -748,10 +757,10 @@ ast_scu_multi_func_uart(u8 uart)
SCU_FUN_PIN_UART1_NDSR |
SCU_FUN_PIN_UART1_NDCD |
SCU_FUN_PIN_UART1_NCTS,
- AST_SCU_FUN_PIN_CTRL1);
+ AST_SCU_FUN_PIN_CTRL2);
break;
case 2:
- ast_scu_write(ast_scu_read(AST_SCU_FUN_PIN_CTRL1) |
+ ast_scu_write(ast_scu_read(AST_SCU_FUN_PIN_CTRL2) |
SCU_FUN_PIN_UART2_RXD |
SCU_FUN_PIN_UART2_TXD |
SCU_FUN_PIN_UART2_NRTS |
@@ -760,7 +769,7 @@ ast_scu_multi_func_uart(u8 uart)
SCU_FUN_PIN_UART2_NDSR |
SCU_FUN_PIN_UART2_NDCD |
SCU_FUN_PIN_UART2_NCTS,
- AST_SCU_FUN_PIN_CTRL1);
+ AST_SCU_FUN_PIN_CTRL2);
break;
case 3:
ast_scu_write(ast_scu_read(AST_SCU_FUN_PIN_CTRL1) |
diff --git a/arch/arm/plat-aspeed/dev-i2c.c b/arch/arm/plat-aspeed/dev-i2c.c
index 47cd15249b10..990539024336 100644
--- a/arch/arm/plat-aspeed/dev-i2c.c
+++ b/arch/arm/plat-aspeed/dev-i2c.c
@@ -46,7 +46,8 @@
#if defined (CONFIG_ARCH_AST2400)
#define I2C_PAGE_SIZE 8
-struct buf_page page_info[I2C_PAGE_SIZE] =
+static spinlock_t page_info_lock = SPIN_LOCK_UNLOCKED;
+static struct buf_page page_info[I2C_PAGE_SIZE] =
{
[0] = {
.flag = 0,
@@ -117,9 +118,10 @@ static void pool_buff_page_init(u32 buf_pool_addr)
static u8 request_pool_buff_page(struct buf_page **req_page)
{
int i;
+ unsigned long flags;
//TODO
- spinlock_t lock;
- spin_lock(&lock);
+
+ spin_lock_irqsave(&page_info_lock, flags);
for(i=0;i<I2C_PAGE_SIZE;i++) {
if(page_info[i].flag ==0) {
page_info[i].flag = 1;
@@ -128,21 +130,26 @@ static u8 request_pool_buff_page(struct buf_page **req_page)
break;
}
}
- spin_unlock(&lock);
- return 0;
+ spin_unlock_irqrestore(&page_info_lock, flags);
+ return (i >= I2C_PAGE_SIZE);
}
static void free_pool_buff_page(struct buf_page *req_page)
{
+ unsigned long flags;
+ spin_lock_irqsave(&page_info_lock, flags);
+
req_page->flag = 0;
// I2CDBUG( "free page addr %x \n", req_page->page_addr);
req_page = NULL;
+ spin_unlock_irqrestore(&page_info_lock, flags);
}
#elif defined (CONFIG_ARCH_AST2300)
#define I2C_PAGE_SIZE 5
-struct buf_page page_info[I2C_PAGE_SIZE] =
+static spinlock_t page_info_lock = SPIN_LOCK_UNLOCKED;
+static struct buf_page page_info[I2C_PAGE_SIZE] =
{
[0] = {
.flag = 0,
@@ -186,27 +193,31 @@ static void pool_buff_page_init(u32 buf_pool_addr)
static u8 request_pool_buff_page(struct buf_page **req_page)
{
int i;
+ unsigned long flags;
//TODO
- spinlock_t lock;
- spin_lock(&lock);
+
+ spin_lock_irqsave(&page_info_lock, flags);
for(i=0;i<I2C_PAGE_SIZE;i++) {
if(page_info[i].flag ==0) {
page_info[i].flag = 1;
*req_page = &page_info[i];
- spin_unlock(&lock);
- return 1;
+ spin_unlock_irqrestore(&page_info_lock, flags);
+ return 0;
}
}
- spin_unlock(&lock);
- return 0;
+ spin_unlock_irqrestore(&page_info_lock, flags);
+ return 1;
}
//TODO check free ?
static void free_pool_buff_page(struct buf_page *req_page)
{
+ unsigned long flags;
+ spin_lock_irqsave(&page_info_lock, flags);
req_page->flag = 0;
req_page = NULL;
+ spin_unlock_irqrestore(&page_info_lock, flags);
}
#else
@@ -592,19 +603,148 @@ static struct i2c_board_info __initdata ast_i2c_board_info_1[] = {
}
};
+
+//Under I2C Dev 2
+static struct i2c_board_info __initdata ast_i2c_board_info_2[] = {
+ // Looks like ncp4200 i2c address could be floating depending
+ // on the system. List all possibilities here (0x60 - 0x63).
+ // Hope the address will not change after probing.
+ {
+ I2C_BOARD_INFO("ncp4200", 0x60),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x61),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x62),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x63),
+ },
+};
+
+
+//Under I2C Dev 3
+static struct i2c_board_info __initdata ast_i2c_board_info_3[] = {
+ // Looks like ncp4200 i2c address could be floating depending
+ // on the system. List all possibilities here (0x60 - 0x63)
+ // Hope the address will not change after probing.
+ {
+ I2C_BOARD_INFO("ncp4200", 0x60),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x61),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x62),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x63),
+ },
+};
+
+
//Under I2C Dev 4
static struct i2c_board_info __initdata ast_i2c_board_info_4[] = {
+ // Temperature sensors on Wedge:
+ {
+ I2C_BOARD_INFO("tmp75", 0x48),
+ },
+ {
+ I2C_BOARD_INFO("tmp75", 0x49),
+ },
{
- I2C_BOARD_INFO("24c128", 0x50),
+ I2C_BOARD_INFO("tmp75", 0x4a),
+ },
+};
+//Under I2C Dev 5
+static struct i2c_board_info __initdata ast_i2c_board_info_5[] = {
+ /* Panther+ microserver */
+ {
+ I2C_BOARD_INFO("fb_panther_plus", 0x40),
+ },
+ // Temperature sensor on uServer:
+ {
+ I2C_BOARD_INFO("tmp75", 0x4c),
+ },
+ {
+ I2C_BOARD_INFO("ads7828", 0x4b),
+ },
+ {
+ I2C_BOARD_INFO("24c128", 0x51),
+ },
+};
+//Under I2C Dev 7
+static struct i2c_board_info __initdata ast_i2c_board_info_7[] = {
+ // Wedge devices
+ {
+ I2C_BOARD_INFO("max127", 0x28),
+ },
+ {
+ // Differs from the schematic, but appears to be correct
+ I2C_BOARD_INFO("pcf8574", 0x3f),
+ },
+ {
+ I2C_BOARD_INFO("24c64", 0x50),
}
};
+
+
//Under I2C Dev 8
static struct i2c_board_info __initdata ast_i2c_board_info_8[] = {
{
+ // Eval board:
I2C_BOARD_INFO("lm75b", 0x4a),
- }
+ },
+ // EEPROMS on the pfe1100 power supplies
+ {
+ I2C_BOARD_INFO("24c64", 0x51),
+ },
+ {
+ I2C_BOARD_INFO("24c64", 0x52),
+ },
+ {
+ I2C_BOARD_INFO("pfe1100", 0x59),
+ },
+ {
+ I2C_BOARD_INFO("pfe1100", 0x5a),
+ },
+};
+
+
+//Under I2C Dev 9
+static struct i2c_board_info __initdata ast_i2c_board_info_9[] = {
+ // Looks like ncp4200 i2c address could be floating depending
+ // on the system. List all possibilities here (0x60 - 0x63)
+ // Hope the address will not change after probing.
+ {
+ I2C_BOARD_INFO("ncp4200", 0x60),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x61),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x62),
+ },
+ {
+ I2C_BOARD_INFO("ncp4200", 0x63),
+ },
+};
+
+//Under I2C Dev 12
+static struct i2c_board_info __initdata ast_i2c_board_info_12[] = {
+ {
+ I2C_BOARD_INFO("pfe3000", 0x10),
+ },
+};
+
+//Under I2C Dev 13
+static struct i2c_board_info __initdata ast_i2c_board_info_13[] = {
+ {
+ I2C_BOARD_INFO("adm1278", 0x10),
+ },
};
#endif
@@ -642,25 +782,36 @@ void __init ast_add_device_i2c(void)
platform_device_register(&ast_i2c_dev1_device);
i2c_register_board_info(0, ast_i2c_board_info_1, ARRAY_SIZE(ast_i2c_board_info_1));
platform_device_register(&ast_i2c_dev2_device);
+ i2c_register_board_info(1, ast_i2c_board_info_2, ARRAY_SIZE(ast_i2c_board_info_2));
platform_device_register(&ast_i2c_dev3_device);
+ i2c_register_board_info(2, ast_i2c_board_info_3, ARRAY_SIZE(ast_i2c_board_info_3));
platform_device_register(&ast_i2c_dev4_device);
i2c_register_board_info(3, ast_i2c_board_info_4, ARRAY_SIZE(ast_i2c_board_info_4));
platform_device_register(&ast_i2c_dev5_device);
+ i2c_register_board_info(4, ast_i2c_board_info_5, ARRAY_SIZE(ast_i2c_board_info_5));
platform_device_register(&ast_i2c_dev6_device);
platform_device_register(&ast_i2c_dev7_device);
+ i2c_register_board_info(6, ast_i2c_board_info_7, ARRAY_SIZE(ast_i2c_board_info_7));
platform_device_register(&ast_i2c_dev8_device);
i2c_register_board_info(7, ast_i2c_board_info_8, ARRAY_SIZE(ast_i2c_board_info_8));
platform_device_register(&ast_i2c_dev9_device);
+ i2c_register_board_info(8, ast_i2c_board_info_9, ARRAY_SIZE(ast_i2c_board_info_9));
#if defined(CONFIG_ARCH_AST2400)
platform_device_register(&ast_i2c_dev10_device);
#if defined(CONFIG_MMC_AST)
//Due to share pin with SD
#else
- platform_device_register(&ast_i2c_dev11_device);
+ /*
+ * On Wedge, bus 13 is used as i2c bus. Bus 12 is used on other
+ * hardware. Pins for bus 11, 12, and 14 are used as GPIOs, on
+ * various hardware, but enabling the i2c bus does not seem to
+ * interfere with the GPIOs.
+ */
platform_device_register(&ast_i2c_dev12_device);
+ i2c_register_board_info(11, ast_i2c_board_info_12, ARRAY_SIZE(ast_i2c_board_info_12));
platform_device_register(&ast_i2c_dev13_device);
- platform_device_register(&ast_i2c_dev14_device);
+ i2c_register_board_info(12, ast_i2c_board_info_13, ARRAY_SIZE(ast_i2c_board_info_13));
#endif
#endif
}
diff --git a/arch/arm/plat-aspeed/dev-lpc.c b/arch/arm/plat-aspeed/dev-lpc.c
index 50eb4e6b9a03..945e320945dc 100644
--- a/arch/arm/plat-aspeed/dev-lpc.c
+++ b/arch/arm/plat-aspeed/dev-lpc.c
@@ -25,22 +25,14 @@
#include <linux/string.h>
#include <linux/platform_device.h>
+#include <asm/io.h>
#include <mach/irqs.h>
#include <mach/platform.h>
#include <plat/devs.h>
#include <plat/ast-scu.h>
+#include <plat/regs-lpc.h>
-
-
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/platform_device.h>
-
-#include <mach/irqs.h>
-#include <mach/platform.h>
-#include <plat/devs.h>
-#include <plat/ast-scu.h>
-
+static u32 ast_lpc_base = IO_ADDRESS(AST_LPC_BASE);
/* --------------------------------------------------------------------
* LPC
@@ -100,6 +92,12 @@ void __init ast_add_device_lpc(void)
platform_device_register(&ast_lpc_plus_device);
}
#else
-void __init ast_add_device_lpc(void) {}
+void __init ast_add_device_lpc(void) {
+ // Since we disable LPC, bring the UART1 and UART2 out from LPC control
+ writel((readl(ast_lpc_base + AST_LPC_HICR9)
+ & ~(LPC_HICR9_SOURCE_UART1|LPC_HICR9_SOURCE_UART2
+ |LPC_HICR9_SOURCE_UART3|LPC_HICR9_SOURCE_UART4)),
+ ast_lpc_base + AST_LPC_HICR9);
+}
#endif
diff --git a/arch/arm/plat-aspeed/dev-pwm-fan.c b/arch/arm/plat-aspeed/dev-pwm-fan.c
index 85570bb6196c..c66719479c0e 100644
--- a/arch/arm/plat-aspeed/dev-pwm-fan.c
+++ b/arch/arm/plat-aspeed/dev-pwm-fan.c
@@ -65,14 +65,6 @@ struct platform_device ast_pwm_fan_device = {
void __init ast_add_device_pwm_fan(void)
{
- //SCU Initial
-
- //SCU Pin-MUX //PWM & TACHO
- ast_scu_multi_func_pwm_tacho();
-
- //SCU PWM CTRL Reset
- ast_scu_init_pwm_tacho();
-
platform_device_register(&ast_pwm_fan_device);
}
#else
diff --git a/arch/arm/plat-aspeed/dev-rtc.c b/arch/arm/plat-aspeed/dev-rtc.c
index 214aa686dcd5..a8d9b2fe40b5 100644
--- a/arch/arm/plat-aspeed/dev-rtc.c
+++ b/arch/arm/plat-aspeed/dev-rtc.c
@@ -33,7 +33,7 @@
* Watchdog
* -------------------------------------------------------------------- */
-#if defined(CONFIG_RTC_DRV_AST) || defined(CONFIG_RTC_DRV_AST_MODULE)
+#if defined(CONFIG_RTC_DRV_ASPEED) || defined(CONFIG_RTC_DRV_ASPEED_MODULE)
static struct resource ast_rtc_resource[] = {
[0] = {
diff --git a/arch/arm/plat-aspeed/dev-spi.c b/arch/arm/plat-aspeed/dev-spi.c
index 7ddd2e437212..e22c49ea3cbf 100644
--- a/arch/arm/plat-aspeed/dev-spi.c
+++ b/arch/arm/plat-aspeed/dev-spi.c
@@ -210,8 +210,8 @@ static struct ast_spi_driver_data ast_spi0_data = {
static struct resource ast_spi_resource0[] = {
{
- .start = AST_SPI0_BASE,
- .end = AST_SPI0_BASE + SZ_16,
+ .start = AST_SPI_BASE,
+ .end = AST_SPI_BASE + SZ_16,
.flags = IORESOURCE_MEM,
},
{
@@ -299,21 +299,21 @@ static struct mtd_partition ast_spi_flash_partitions[] = {
static struct mtd_partition ast_spi_flash_partitions[] = {
{
.name = "u-boot",
- .offset = 0,
- .size = 0x80000,
+ .offset = 0, /* From 0 */
+ .size = 0x60000, /* Size 384K */
.mask_flags = MTD_WRITEABLE,
+ }, {
+ .name = "env",
+ .offset = 0x60000, /* From 384K */
+ .size = 0x20000, /* Size 128K, two sectors */
}, {
- .name = "kernel",
- .offset = 0x80000,
- .size = 0x200000,
+ .name = "kernel",
+ .offset = 0x80000, /* From 512K */
+ .size = 0x200000, /* Size 2M */
}, {
- .name = "rootfs",
- .offset = 0x300000,
- .size = 0x4F0000,
- }, {
- .name = "env",
- .offset = 0x7f0000,
- .size = 0x10000,
+ .name = "rootfs",
+ .offset = 0x300000, /* From 3M */
+ .size = 0xC00000, /* Size 12M */
}, {
.name = "data0",
.offset = MTDPART_OFS_APPEND,
@@ -334,7 +334,34 @@ static struct flash_platform_data ast_spi_flash_data = {
.parts = ast_spi_flash_partitions,
};
+#ifdef CONFIG_ARCH_AST2400
+static struct flash_platform_data wedge_spi_flash_data = {
+ .type = "n25q128a13",
+ .nr_parts = ARRAY_SIZE(ast_spi_flash_partitions),
+ .parts = ast_spi_flash_partitions,
+};
+#endif
+
+
+/* Device info for the flash on ast-spi */
+#ifdef CONFIG_ARCH_AST2400
+static struct mtd_partition ast_spi5_flash_partitions[] = {
+ {
+ .name = "led-fpga",
+ .offset = 0, /* From 0 */
+ .size = MTDPART_SIZ_FULL,
+ },
+};
+
+static struct flash_platform_data wedge_spi5_flash_data = {
+ .type = "at45db011d",
+ .nr_parts = ARRAY_SIZE(ast_spi5_flash_partitions),
+ .parts = ast_spi5_flash_partitions,
+};
+#endif
+
static struct spi_board_info ast_spi_devices[] = {
+#if 0
{
.modalias = "m25p80",
.platform_data = &ast_spi_flash_data,
@@ -343,6 +370,25 @@ static struct spi_board_info ast_spi_devices[] = {
.bus_num = 0, // This chooses if SPI0 or SPI1 of the SoC is used.
.mode = SPI_MODE_0,
},
+#endif
+#ifdef CONFIG_ARCH_AST2400
+ {
+ .modalias = "mtd_dataflash",
+ .platform_data = &wedge_spi5_flash_data,
+ .chip_select = 0,
+ .max_speed_hz = 33 * 1000 * 1000,
+ .bus_num = 5,
+ .mode = SPI_MODE_0,
+ },
+ {
+ .modalias = "m25p80",
+ .platform_data = &wedge_spi_flash_data,
+ .chip_select = 0, //.chip_select This tells your device driver which chipselect to use.
+ .max_speed_hz = 50 * 1000 * 1000,
+ .bus_num = 0, // This chooses if SPI0 or SPI1 of the SoC is used.
+ .mode = SPI_MODE_0,
+ },
+#endif
{
.modalias = "spidev",
.chip_select = 0,
diff --git a/arch/arm/plat-aspeed/dev-uart.c b/arch/arm/plat-aspeed/dev-uart.c
index 592ef4fdadd5..0b7b61410285 100644
--- a/arch/arm/plat-aspeed/dev-uart.c
+++ b/arch/arm/plat-aspeed/dev-uart.c
@@ -98,6 +98,17 @@ static struct plat_serial8250_port ast_uart_data[] = {
},
#endif
#endif
+#ifdef AST_UART1_BASE
+ {
+ .mapbase = AST_UART1_BASE,
+ .membase = (char*)(IO_ADDRESS(AST_UART1_BASE)),
+ .irq = IRQ_UART1,
+ .uartclk = (24*1000000L),
+ .regshift = 2,
+ .iotype = UPIO_MEM,
+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+ },
+#endif
#ifdef AST_UART3_BASE
{
.mapbase = AST_UART3_BASE,
@@ -134,6 +145,7 @@ void __init ast_add_device_uart(void)
{
#if defined(CONFIG_ARCH_AST1010)
#else
+ ast_scu_multi_func_uart(1);
ast_scu_multi_func_uart(3);
ast_scu_multi_func_uart(4);
#endif
diff --git a/arch/arm/plat-aspeed/dev-virthub.c b/arch/arm/plat-aspeed/dev-virthub.c
new file mode 100644
index 000000000000..34a5ae1aefe8
--- /dev/null
+++ b/arch/arm/plat-aspeed/dev-virthub.c
@@ -0,0 +1,62 @@
+/*
+ * dev-virthub
+ *
+ * Copyright 2014-present Facebook. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/platform_device.h>
+
+#include <mach/irqs.h>
+#include <mach/platform.h>
+#include <plat/devs.h>
+#include <plat/ast-scu.h>
+
+static struct resource ast_virthub_resource[] = {
+ [0] = {
+ .start = AST_USB20_BASE,
+ .end = AST_USB20_BASE + SZ_1K,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_USB20_HUB,
+ .end = IRQ_USB20_HUB,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static u64 ast_virthub_dma_mask = 0xfffffff8UL;
+
+static struct platform_device ast_virthub_device = {
+ .name = "aspeed_udc",
+ .id = 0,
+ .dev = {
+ .dma_mask = &ast_virthub_dma_mask,
+ .coherent_dma_mask = 0xffffffff,
+ },
+ .resource = ast_virthub_resource,
+ .num_resources = ARRAY_SIZE(ast_virthub_resource),
+};
+
+void __init ast_add_device_virthub(void)
+{
+ ast_scu_multi_func_usb20_host_hub(0);
+ ast_scu_init_vhub();
+ printk("virtual hub inited?\n");
+ platform_device_register(&ast_virthub_device);
+}
diff --git a/arch/arm/plat-aspeed/devs.c b/arch/arm/plat-aspeed/devs.c
index 7906b9cbbce8..be6d7f426634 100644
--- a/arch/arm/plat-aspeed/devs.c
+++ b/arch/arm/plat-aspeed/devs.c
@@ -31,13 +31,14 @@
typedef void (init_fnc_t) (void);
init_fnc_t __initdata *init_all_device[] = {
+ ast_add_device_lpc,
ast_add_device_uart,
ast_add_device_vuart,
ast_add_device_watchdog,
ast_add_device_rtc,
ast_add_device_i2c,
ast_add_device_spi,
- ast_add_device_ehci,
+//ast_add_device_ehci, disabled by tfang for USB HUB mode
ast_add_device_nand,
ast_add_device_flash,
ast_add_device_pwm_fan,
@@ -46,13 +47,14 @@ init_fnc_t __initdata *init_all_device[] = {
ast_add_device_sgpio,
ast_add_device_peci,
ast_add_device_fb,
- ast_add_device_sdhci,
- ast_add_device_uhci,
- ast_add_device_video,
+// ast_add_device_sdhci, disabled by tfang
+// ast_add_device_uhci, disabled by tfang
+// ast_add_device_video, disabled by tfang
ast_add_device_kcs,
ast_add_device_mailbox,
ast_add_device_snoop,
ast_add_device_gmac,
+ ast_add_device_virthub,
// ast_add_device_nand,
NULL,
};
diff --git a/arch/arm/plat-aspeed/include/plat/ast-scu.h b/arch/arm/plat-aspeed/include/plat/ast-scu.h
index 77169ee3279c..14a437fb56c6 100644
--- a/arch/arm/plat-aspeed/include/plat/ast-scu.h
+++ b/arch/arm/plat-aspeed/include/plat/ast-scu.h
@@ -49,6 +49,7 @@ extern void ast_scu_init_lpc(void);
extern u8 ast_scu_get_lpc_plus_enable(void);
extern void ast_scu_init_udc11(void);
extern void ast_scu_init_usb20(void);
+extern void ast_scu_init_vhub(void);
extern void ast_scu_init_uhci(void);
extern void ast_scu_init_sdhci(void);
extern void ast_scu_init_i2c(void);
diff --git a/arch/arm/plat-aspeed/include/plat/devs.h b/arch/arm/plat-aspeed/include/plat/devs.h
index 41cbea934421..8653e959c24a 100644
--- a/arch/arm/plat-aspeed/include/plat/devs.h
+++ b/arch/arm/plat-aspeed/include/plat/devs.h
@@ -41,6 +41,8 @@ extern void __init ast_add_device_uhci(void);
extern void __init ast_add_device_gmac(void);
extern void __init ast_add_device_udc11(void);
extern void __init ast_add_device_hid(void);
+extern void __init ast_add_device_lpc(void);
+extern void __init ast_add_device_virthub(void);
extern void __init ast_add_device_pcie(void);
diff --git a/arch/arm/plat-aspeed/include/plat/regs-lpc.h b/arch/arm/plat-aspeed/include/plat/regs-lpc.h
index f4523d7eaeb0..92c51301960f 100644
--- a/arch/arm/plat-aspeed/include/plat/regs-lpc.h
+++ b/arch/arm/plat-aspeed/include/plat/regs-lpc.h
@@ -186,6 +186,12 @@
#define GET_LPC_SNPD1(x) ((x >> 7) & 0xff)
#define GET_LPC_SNPD0(x) (x & 0xff)
+/* AST_LPC_HICR9 0x098 - LPC Host Interface Control Register 9 */
+#define LPC_HICR9_SOURCE_UART1 (1 << 4)
+#define LPC_HICR9_SOURCE_UART2 (1 << 5)
+#define LPC_HICR9_SOURCE_UART3 (1 << 6)
+#define LPC_HICR9_SOURCE_UART4 (1 << 7)
+
/*AST_LPC_PCCR0 0x130 - Post Code Contol Register 0 */
#define LPC_POST_DMA_INT_EN (1 << 31)
#define LPC_POST_DMA_MODE_EN (1 << 14)
diff --git a/arch/arm/plat-aspeed/include/plat/regs-pwm_fan.h b/arch/arm/plat-aspeed/include/plat/regs-pwm_fan.h
index 23d5b77ed524..f1c474c9e0bd 100644
--- a/arch/arm/plat-aspeed/include/plat/regs-pwm_fan.h
+++ b/arch/arm/plat-aspeed/include/plat/regs-pwm_fan.h
@@ -90,14 +90,14 @@
#define AST_PTCR_CTRL_FAN_NUM_EN(x) (0x1 << (16+x))
-#define AST_PTCR_CTRL_PMWD (11)
-#define AST_PTCR_CTRL_PMWD_EN (0x1 << 11)
-#define AST_PTCR_CTRL_PMWC (10)
-#define AST_PTCR_CTRL_PMWC_EN (0x1 << 10)
-#define AST_PTCR_CTRL_PMWB (9)
-#define AST_PTCR_CTRL_PMWB_EN (0x1 << 9)
-#define AST_PTCR_CTRL_PMWA (8)
-#define AST_PTCR_CTRL_PMWA_EN (0x1 << 8)
+#define AST_PTCR_CTRL_PWMD (11)
+#define AST_PTCR_CTRL_PWMD_EN (0x1 << 11)
+#define AST_PTCR_CTRL_PWMC (10)
+#define AST_PTCR_CTRL_PWMC_EN (0x1 << 10)
+#define AST_PTCR_CTRL_PWMB (9)
+#define AST_PTCR_CTRL_PWMB_EN (0x1 << 9)
+#define AST_PTCR_CTRL_PWMA (8)
+#define AST_PTCR_CTRL_PWMA_EN (0x1 << 8)
#define AST_PTCR_CTRL_CLK_MCLK 0x2 //0:24Mhz, 1:MCLK
#define AST_PTCR_CTRL_CLK_EN 0x1
@@ -209,14 +209,14 @@
#define AST_PTCR_CTRL_GET_PWME_TYPE(x) (((x&(0x1<<4))>>3) | ((x&(0x1<<12))>>12))
#define AST_PTCR_CTRL_SET_PWME_TYPE_MASK ((0x1<<4) | (0x1<<12))
-#define AST_PTCR_CTRL_PMWH (11)
-#define AST_PTCR_CTRL_PMWH_EN (0x1 << 11)
-#define AST_PTCR_CTRL_PMWG (10)
-#define AST_PTCR_CTRL_PMWG_EN (0x1 << 10)
-#define AST_PTCR_CTRL_PMWF (9)
-#define AST_PTCR_CTRL_PMWF_EN (0x1 << 9)
-#define AST_PTCR_CTRL_PMWE (8)
-#define AST_PTCR_CTRL_PMWE_EN (0x1 << 8)
+#define AST_PTCR_CTRL_PWMH (11)
+#define AST_PTCR_CTRL_PWMH_EN (0x1 << 11)
+#define AST_PTCR_CTRL_PWMG (10)
+#define AST_PTCR_CTRL_PWMG_EN (0x1 << 10)
+#define AST_PTCR_CTRL_PWMF (9)
+#define AST_PTCR_CTRL_PWMF_EN (0x1 << 9)
+#define AST_PTCR_CTRL_PWME (8)
+#define AST_PTCR_CTRL_PWME_EN (0x1 << 8)
// AST_PTCR_CLK_EXT_CTRL : 0x44 - Clock Control Extension #1
//TYPE O
diff --git a/arch/arm/plat-aspeed/timer.c b/arch/arm/plat-aspeed/timer.c
index 079d958c6e3f..6805beb24a12 100644
--- a/arch/arm/plat-aspeed/timer.c
+++ b/arch/arm/plat-aspeed/timer.c
@@ -16,19 +16,13 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <asm/io.h>
+#include <linux/clocksource.h>
+#include <linux/clockchips.h>
#include <linux/types.h>
-#include <linux/kernel.h>
#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/spinlock.h>
#include <linux/interrupt.h>
-#include <linux/sched.h>
-
#include <linux/irq.h>
-#include <asm/system.h>
-#include <asm/io.h>
-#include <mach/hardware.h>
-#include <mach/irqs.h>
#include <mach/time.h>
#include <plat/ast-scu.h>
@@ -37,72 +31,145 @@
#define ASPEED_TIMER2_VA_BASE (IO_ADDRESS(AST_TIMER_BASE)+ASPEED_TIMER2_OFFSET)
#define ASPEED_TIMERC_VA_BASE (IO_ADDRESS(AST_TIMER_BASE)+ASPEED_TIMERRC_OFFSET)
-/*
- * Returns number of ms since last clock interrupt. Note that interrupts
- * will have been disabled by do_gettimeoffset()
- */
-static unsigned long ast_gettimeoffset(void)
+#define ASPEED_TIMER_RELOAD_MAX 0xFFFFFFFF
+#define ASPEED_TIMER_RELOAD_MIN 1
+
+static struct clock_event_device clockevent_ast;
+
+static inline unsigned long ast_timer_read_count(void *base)
{
- volatile TimerStruct_t *timer0 = (TimerStruct_t *) ASPEED_TIMER0_VA_BASE;
- unsigned long ticks1, ticks2;//, status;
+ volatile TimerStruct_t *timer = (volatile TimerStruct_t *)(base);
+ return timer->TimerValue;
+}
- /*
- * Get the current number of ticks. Note that there is a race
- * condition between us reading the timer and checking for
- * an interrupt. We get around this by ensuring that the
- * counter has not reloaded between our two reads.
- */
- ticks2 = timer0->TimerValue;
- do {
- ticks1 = ticks2;
-// status = readl(AST_RAW_STS(0));// __raw_readl(IO_ADDRESS(ASPEED_VIC_BASE) + ASPEED_VIC_RAW_STATUS_OFFSET);
- ticks2 = timer0->TimerValue;
- } while (ticks2 > ticks1);
+/* change the timer count and load value (if requeseted) */
+static inline void ast_timer_set_count(void *base, unsigned long count,
+ unsigned long reload)
+{
+ volatile TimerStruct_t *timer = (volatile TimerStruct_t *)(base);
+ timer->TimerValue = count;
+ timer->TimerLoad = reload;
+}
- /*
- * Number of ticks since last interrupt.
- */
- ticks1 = TIMER_RELOAD - ticks2;
+#define AST_TIMER_DISABLE 0
+#define AST_TIMER_ENABLE 1
- /*
- * Interrupt pending? If so, we've reloaded once already.
- */
-// if (status & (1 << IRQ_TIMER0))
-// ticks1 += TIMER_RELOAD;
+static inline void ast_timer0_ctrl(int enable)
+{
+ volatile __u32 *timerc = (volatile __u32*) ASPEED_TIMERC_VA_BASE;
+ if (enable == AST_TIMER_ENABLE) {
+ *timerc |= TIMER0_ENABLE | TIMER0_RefExt;
+ } else {
+ *timerc &= ~TIMER0_ENABLE;
+ }
+}
- /*
- * Convert the ticks to usecs
- */
- return TICKS2USECS(ticks1);
+static inline void ast_timer1_ctrl(int enable)
+{
+ volatile __u32 *timerc = (volatile __u32*) ASPEED_TIMERC_VA_BASE;
+ if (enable == AST_TIMER_ENABLE) {
+ *timerc |= TIMER1_ENABLE | TIMER1_RefExt;
+ } else {
+ *timerc &= ~TIMER1_ENABLE;
+ }
}
+static inline void ast_timer_disable_all()
+{
+ volatile __u32 *timerc = (volatile __u32*) ASPEED_TIMERC_VA_BASE;
+ *timerc = 0;
+}
/*
- * IRQ handler for the timer
+ * clocksource
*/
-static irqreturn_t
-ast_timer_interrupt(int irq, void *dev_id)
+static irqreturn_t ast_clocksource_interrupt(int irq, void *dev_id)
{
+ return IRQ_HANDLED;
+}
-// write_seqlock(&xtime_lock);
+static struct irqaction ast_clocksource_irq = {
+ .name = "ast-clocksource",
+ .flags = IRQF_DISABLED | IRQF_TIMER,
+ .handler = ast_clocksource_interrupt,
+};
+
+static cycle_t read_cycles(void)
+{
+#if 1
+ return (cycles_t)(ASPEED_TIMER_RELOAD_MAX
+ - ast_timer_read_count(ASPEED_TIMER1_VA_BASE));
+#else
+ return (cycles_t) ast_timer_read_count(ASPEED_TIMER1_VA_BASE);
+#endif
+}
+
+static struct clocksource clocksource_ast = {
+ .name = "ast-clocksource",
+ .rating = 300,
+ .read = read_cycles,
+ .mask = CLOCKSOURCE_MASK(32),
+ .shift = 20,
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS,
+};
/*
- * clear the interrupt in Irq.c
+ * clockevent
*/
-// IRQ_EDGE_CLEAR(0,IRQ_TIMER0);
-
- timer_tick();
+/* IRQ handler for the timer */
+static irqreturn_t ast_clockevent_interrupt(int irq, void *dev_id)
+{
+ struct clock_event_device *evt = &clockevent_ast;
+ evt->event_handler(evt);
+ return IRQ_HANDLED;
+}
+static struct irqaction ast_clockevent_irq = {
+ .name = "ast-clockevent",
+ .flags = IRQF_DISABLED | IRQF_TIMER,
+ .handler = ast_clockevent_interrupt,
+};
-// write_sequnlock(&xtime_lock);
+static int ast_timer_set_next_event(unsigned long cycles,
+ struct clock_event_device *evt)
+{
+ /* In this case, we shall not set the load value. */
+ ast_timer_set_count(ASPEED_TIMER0_VA_BASE, cycles, 0);
+ /* turn on the timer */
+ ast_timer0_ctrl(AST_TIMER_ENABLE);
+ return 0;
+}
- return IRQ_HANDLED;
+static void ast_timer_set_mode(enum clock_event_mode mode,
+ struct clock_event_device *evt)
+{
+ /* stop timer first */
+ ast_timer0_ctrl(AST_TIMER_DISABLE);
+ switch (mode) {
+ case CLOCK_EVT_MODE_PERIODIC:
+ ast_timer_set_count(ASPEED_TIMER0_VA_BASE,
+ TIMER_RELOAD - 1, TIMER_RELOAD - 1);
+ ast_timer0_ctrl(AST_TIMER_ENABLE);
+ break;
+ case CLOCK_EVT_MODE_ONESHOT:
+ /*
+ * Leave the timer disabled, ast_timer_set_next_event() will
+ * enable it later
+ */
+ break;
+ case CLOCK_EVT_MODE_UNUSED:
+ case CLOCK_EVT_MODE_SHUTDOWN:
+ case CLOCK_EVT_MODE_RESUME:
+ break;
+ }
}
-static struct irqaction ast_timer_irq = {
- .name = "ast timer",
- .flags = IRQF_DISABLED | IRQF_TIMER,
- .handler = ast_timer_interrupt,
+static struct clock_event_device clockevent_ast = {
+ .name = "ast-clockevent",
+ .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+ .shift = 32,
+ .set_next_event = ast_timer_set_next_event,
+ .set_mode = ast_timer_set_mode,
};
/*
@@ -110,28 +177,50 @@ static struct irqaction ast_timer_irq = {
*/
static void __init ast_setup_timer(void)
{
- volatile TimerStruct_t *timer0 = (volatile TimerStruct_t *) ASPEED_TIMER0_VA_BASE;
- volatile __u32 *timerc = (volatile __u32*) ASPEED_TIMERC_VA_BASE;
-
/*
* Initialise to a known state (all timers off)
*/
- *timerc = 0;
-
- timer0->TimerLoad = TIMER_RELOAD - 1;
- timer0->TimerValue = TIMER_RELOAD - 1;
- *timerc = TIMER0_ENABLE | TIMER0_RefExt;
+ ast_timer_disable_all();
/*
- * Make irqs happen for the system timer
+ * For clock event, set the value and reload to 0, so that no interrupt even
+ * after enabling timer.
*/
+ ast_timer_set_count(ASPEED_TIMER0_VA_BASE, 0, 0);
+ /*
+ * For clock source, set the value and reload to the max
+ */
+ ast_timer_set_count(ASPEED_TIMER1_VA_BASE,
+ ASPEED_TIMER_RELOAD_MAX, ASPEED_TIMER_RELOAD_MAX);
+
+ /* Enable timer */
+ ast_timer0_ctrl(AST_TIMER_ENABLE);
+ ast_timer1_ctrl(AST_TIMER_ENABLE);
+
ast_scu_show_system_info();
- setup_irq(IRQ_TIMER0, &ast_timer_irq);
-
+ /* irqs happen for the system timer */
+ setup_irq(IRQ_TIMER0, &ast_clockevent_irq);
+ setup_irq(IRQ_TIMER1, &ast_clocksource_irq);
+
+ /* setup clocksource */
+ clocksource_ast.mult = clocksource_hz2mult(ASPEED_TIMER_CLKRATE,
+ clocksource_ast.shift);
+ if (clocksource_register(&clocksource_ast)) {
+ printk(KERN_ERR "Failed to register clock source %s", clocksource_ast.name);
+ }
+
+ /* setup clockevent */
+ clockevent_ast.mult = div_sc(ASPEED_TIMER_CLKRATE, NSEC_PER_SEC,
+ clockevent_ast.shift);
+ clockevent_ast.max_delta_ns = clockevent_delta2ns(ASPEED_TIMER_RELOAD_MAX,
+ &clockevent_ast);
+ clockevent_ast.min_delta_ns = clockevent_delta2ns(ASPEED_TIMER_RELOAD_MIN,
+ &clockevent_ast);
+ clockevent_ast.cpumask = cpumask_of_cpu(0);
+ clockevents_register_device(&clockevent_ast);
}
struct sys_timer ast_timer = {
.init = ast_setup_timer,
-// .offset = ast_gettimeoffset,
};