mirror of https://gitee.com/openkylin/linux.git
Merge AT91 branch
This commit is contained in:
commit
695a9d236a
|
@ -49,6 +49,18 @@
|
|||
cmp r7, r3
|
||||
beq 99f
|
||||
|
||||
@ Embest ATEB9200 : 923
|
||||
mov r3, #(MACH_TYPE_ATEB9200 & 0xff)
|
||||
orr r3, r3, #(MACH_TYPE_ATEB9200 & 0xff00)
|
||||
cmp r7, r3
|
||||
beq 99f
|
||||
|
||||
@ Sperry-Sun KAFA : 662
|
||||
mov r3, #(MACH_TYPE_KAFA & 0xff)
|
||||
orr r3, r3, #(MACH_TYPE_KAFA & 0xff00)
|
||||
cmp r7, r3
|
||||
beq 99f
|
||||
|
||||
@ Unknown board, use the AT91RM9200DK board
|
||||
@ mov r7, #MACH_TYPE_AT91RM9200
|
||||
mov r7, #(MACH_TYPE_AT91RM9200DK & 0xff)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,723 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc4
|
||||
# Tue Jun 14 12:05:24 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_IOMAP=y
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_SWAP=y
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_SYSCTL is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
# CONFIG_KMOD is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_L7200 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_OMAP is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
CONFIG_ARCH_AT91RM9200=y
|
||||
|
||||
#
|
||||
# AT91RM9200 Implementations
|
||||
#
|
||||
# CONFIG_ARCH_AT91RM9200DK is not set
|
||||
# CONFIG_MACH_AT91RM9200EK is not set
|
||||
# CONFIG_MACH_CSB337 is not set
|
||||
# CONFIG_MACH_CSB637 is not set
|
||||
CONFIG_MACH_CARMEVA=y
|
||||
|
||||
#
|
||||
# Processor Type
|
||||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_CACHE_V4WT=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
CONFIG_CPU_TLB_V4WBI=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
|
||||
|
||||
#
|
||||
# Bus support
|
||||
#
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_DISCONTIGMEM is not set
|
||||
# CONFIG_LEDS is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE=""
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
|
||||
#
|
||||
# At least one emulation must be selected
|
||||
#
|
||||
CONFIG_FPE_NWFPE=y
|
||||
# CONFIG_FPE_NWFPE_XP is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_ARTHUR is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL 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
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLKMTD 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_AT91_DATAFLASH=y
|
||||
# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_PACKET is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_PNP=y
|
||||
# CONFIG_IP_PNP_DHCP is not set
|
||||
# CONFIG_IP_PNP_BOOTP is not set
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_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_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE 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_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_ARM_AT91_ETHER=y
|
||||
CONFIG_ARM_AT91_ETHER_RMII=y
|
||||
# CONFIG_SMC91X is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=m
|
||||
CONFIG_SERIO_SERPORT=m
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_AT91=y
|
||||
CONFIG_SERIAL_AT91_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
CONFIG_AT91_SPI=y
|
||||
CONFIG_AT91_SPIDEV=y
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
CONFIG_MMC=m
|
||||
CONFIG_MMC_DEBUG=y
|
||||
CONFIG_MMC_BLOCK=m
|
||||
CONFIG_MMC_AT91RM9200=m
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
# CONFIG_EXT2_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT2_FS_SECURITY is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_JBD is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
CONFIG_DEVPTS_FS_SECURITY=y
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# 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_JFFS_FS=y
|
||||
CONFIG_JFFS_FS_VERBOSE=0
|
||||
CONFIG_JFFS_PROC_FS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
CONFIG_JFFS2_FS_NAND=y
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_JFFS2_CMODE_NONE is not set
|
||||
CONFIG_JFFS2_CMODE_PRIORITY=y
|
||||
# CONFIG_JFFS2_CMODE_SIZE is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
CONFIG_NFSD=y
|
||||
# CONFIG_NFSD_V3 is not set
|
||||
CONFIG_NFSD_TCP=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_EXPORTFS=y
|
||||
CONFIG_SUNRPC=y
|
||||
CONFIG_SUNRPC_GSS=y
|
||||
CONFIG_RPCSEC_GSS_KRB5=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
|
@ -0,0 +1,884 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.17-rc3
|
||||
# Sun May 7 16:54:53 2006
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_UID16=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
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 is not set
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
CONFIG_DEFAULT_DEADLINE=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="deadline"
|
||||
|
||||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_EP93XX is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_IXP23XX is not set
|
||||
# CONFIG_ARCH_L7200 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_OMAP is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_AAEC2000 is not set
|
||||
CONFIG_ARCH_AT91RM9200=y
|
||||
|
||||
#
|
||||
# AT91RM9200 Implementations
|
||||
#
|
||||
|
||||
#
|
||||
# AT91RM9200 Board Type
|
||||
#
|
||||
# CONFIG_ARCH_AT91RM9200DK is not set
|
||||
# CONFIG_MACH_AT91RM9200EK is not set
|
||||
# CONFIG_MACH_CSB337 is not set
|
||||
# CONFIG_MACH_CSB637 is not set
|
||||
# CONFIG_MACH_CARMEVA is not set
|
||||
# CONFIG_MACH_KB9200 is not set
|
||||
# CONFIG_MACH_ATEB9200 is not set
|
||||
CONFIG_MACH_KAFA=y
|
||||
|
||||
#
|
||||
# AT91 Feature Selections
|
||||
#
|
||||
# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
|
||||
|
||||
#
|
||||
# Processor Type
|
||||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_CACHE_V4WT=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
CONFIG_CPU_TLB_V4WBI=y
|
||||
|
||||
#
|
||||
# Processor Features
|
||||
#
|
||||
# CONFIG_ARM_THUMB is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
|
||||
#
|
||||
# Bus support
|
||||
#
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
CONFIG_PREEMPT=y
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
CONFIG_HZ=100
|
||||
# CONFIG_AEABI is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
CONFIG_LEDS=y
|
||||
# CONFIG_LEDS_TIMER is not set
|
||||
CONFIG_LEDS_CPU=y
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20800000,10M root=/dev/ram0 rw"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
|
||||
#
|
||||
# At least one emulation must be selected
|
||||
#
|
||||
CONFIG_FPE_NWFPE=y
|
||||
# CONFIG_FPE_NWFPE_XP is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
# CONFIG_ARTHUR is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
# CONFIG_IP_PNP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
|
||||
#
|
||||
# TIPC Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE 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_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
# CONFIG_MTD_CMDLINE_PARTS is not set
|
||||
# CONFIG_MTD_AFS_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
# CONFIG_MTD_BLOCK is not set
|
||||
CONFIG_MTD_BLOCK_RO=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL 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
|
||||
# CONFIG_MTD_OBSOLETE_CHIPS 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_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_AT91_DATAFLASH=y
|
||||
# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# OneNAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
# CONFIG_MARVELL_PHY is not set
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_ARM_AT91_ETHER=y
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_AT91=y
|
||||
CONFIG_SERIAL_AT91_CONSOLE=y
|
||||
# CONFIG_SERIAL_AT91_TTYAT is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=32
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
||||
|
||||
#
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
CONFIG_AT91_SPI=y
|
||||
CONFIG_AT91_SPIDEV=y
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
|
||||
#
|
||||
# I2C Algorithms
|
||||
#
|
||||
# CONFIG_I2C_ALGOBIT is not set
|
||||
# CONFIG_I2C_ALGOPCF is not set
|
||||
# CONFIG_I2C_ALGOPCA is not set
|
||||
|
||||
#
|
||||
# I2C Hardware Bus support
|
||||
#
|
||||
CONFIG_I2C_AT91=y
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_STUB is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_MAX6875 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
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_HCTOSYS is not set
|
||||
|
||||
#
|
||||
# RTC interfaces
|
||||
#
|
||||
CONFIG_RTC_INTF_SYSFS=y
|
||||
CONFIG_RTC_INTF_PROC=y
|
||||
CONFIG_RTC_INTF_DEV=y
|
||||
|
||||
#
|
||||
# RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_X1205 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_PCF8563 is not set
|
||||
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
CONFIG_RTC_DRV_AT91=y
|
||||
# CONFIG_RTC_DRV_TEST is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_FS_XATTR is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# 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_JFFS_FS is not set
|
||||
# CONFIG_JFFS2_FS is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=m
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_LOCKD=m
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=m
|
||||
# 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
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_UNWIND_INFO is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
|
@ -0,0 +1,780 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Sun Aug 14 19:26:59 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_SWAP is not set
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
# CONFIG_KOBJECT_UEVENT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
|
||||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_L7200 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_OMAP is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_AAEC2000 is not set
|
||||
CONFIG_ARCH_AT91RM9200=y
|
||||
|
||||
#
|
||||
# AT91RM9200 Implementations
|
||||
#
|
||||
# CONFIG_ARCH_AT91RM9200DK is not set
|
||||
# CONFIG_MACH_AT91RM9200EK is not set
|
||||
# CONFIG_MACH_CSB337 is not set
|
||||
# CONFIG_MACH_CSB637 is not set
|
||||
# CONFIG_MACH_CARMEVA is not set
|
||||
CONFIG_MACH_KB9200=y
|
||||
|
||||
#
|
||||
# Processor Type
|
||||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_CACHE_V4WT=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
CONFIG_CPU_TLB_V4WBI=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
|
||||
|
||||
#
|
||||
# Bus support
|
||||
#
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_LEDS is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x10000000
|
||||
CONFIG_ZBOOT_ROM_BSS=0x20040000
|
||||
CONFIG_ZBOOT_ROM=y
|
||||
CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933"
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
|
||||
#
|
||||
# At least one emulation must be selected
|
||||
#
|
||||
CONFIG_FPE_NWFPE=y
|
||||
# CONFIG_FPE_NWFPE_XP is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_AOUT=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
# CONFIG_ARTHUR is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_DEBUG_DRIVER=y
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# 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=4096
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
CONFIG_SCSI=y
|
||||
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
|
||||
|
||||
#
|
||||
# SCSI Transport Attributes
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
# 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 is not set
|
||||
# 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_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_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_BRIDGE 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
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_ARM_AT91_ETHER=y
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK 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 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_AT91=y
|
||||
CONFIG_SERIAL_AT91_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_AT91_SPI is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEBUG=y
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
#
|
||||
# USB Device Class drivers
|
||||
#
|
||||
# CONFIG_USB_BLUETOOTH_TTY is not set
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_STORAGE_DEBUG=y
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
# CONFIG_USB_HID is not set
|
||||
|
||||
#
|
||||
# USB HID Boot Protocol drivers
|
||||
#
|
||||
# CONFIG_USB_KBD is not set
|
||||
# CONFIG_USB_MOUSE is not set
|
||||
# CONFIG_USB_AIPTEK is not set
|
||||
# CONFIG_USB_WACOM is not set
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
# CONFIG_USB_KBTAB is not set
|
||||
# CONFIG_USB_POWERMATE is not set
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB Multimedia devices
|
||||
#
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Video4Linux support is needed for USB Multimedia device support
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
# CONFIG_USB_MON is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Serial Converter support
|
||||
#
|
||||
# CONFIG_USB_SERIAL is not set
|
||||
|
||||
#
|
||||
# USB Miscellaneous drivers
|
||||
#
|
||||
# CONFIG_USB_EMI62 is not set
|
||||
# CONFIG_USB_EMI26 is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
|
||||
#
|
||||
# USB DSL modem support
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
# CONFIG_EXT2_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT2_FS_SECURITY is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=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 is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
# CONFIG_DEVPTS_FS_SECURITY is not set
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_XATTR is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
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 is not set
|
||||
# CONFIG_NLS_CODEPAGE_950 is not set
|
||||
# CONFIG_NLS_CODEPAGE_932 is not set
|
||||
# CONFIG_NLS_CODEPAGE_949 is not set
|
||||
# CONFIG_NLS_CODEPAGE_874 is not set
|
||||
# CONFIG_NLS_ISO8859_8 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1250 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1251 is not set
|
||||
CONFIG_NLS_ASCII=y
|
||||
# CONFIG_NLS_ISO8859_1 is not set
|
||||
# CONFIG_NLS_ISO8859_2 is not set
|
||||
# CONFIG_NLS_ISO8859_3 is not set
|
||||
# CONFIG_NLS_ISO8859_4 is not set
|
||||
# CONFIG_NLS_ISO8859_5 is not set
|
||||
# CONFIG_NLS_ISO8859_6 is not set
|
||||
# CONFIG_NLS_ISO8859_7 is not set
|
||||
# CONFIG_NLS_ISO8859_9 is not set
|
||||
# CONFIG_NLS_ISO8859_13 is not set
|
||||
# CONFIG_NLS_ISO8859_14 is not set
|
||||
# CONFIG_NLS_ISO8859_15 is not set
|
||||
# CONFIG_NLS_KOI8_R is not set
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
|
@ -40,6 +40,18 @@ config MACH_KB9200
|
|||
help
|
||||
Select this if you are using KwikByte's KB920x board
|
||||
|
||||
config MACH_ATEB9200
|
||||
bool "Embest's ATEB9200"
|
||||
depends on ARCH_AT91RM9200
|
||||
help
|
||||
Select this if you are using Embest's ATEB9200 board
|
||||
|
||||
config MACH_KAFA
|
||||
bool "Sperry-Sun KAFA board"
|
||||
depends on ARCH_AT91RM9200
|
||||
help
|
||||
Select this if you are using Sperry-Sun's KAFA board
|
||||
|
||||
|
||||
comment "AT91RM9200 Feature Selections"
|
||||
|
||||
|
|
|
@ -7,22 +7,31 @@ obj-m :=
|
|||
obj-n :=
|
||||
obj- :=
|
||||
|
||||
obj-$(CONFIG_PM) += pm.o
|
||||
|
||||
# Board-specific support
|
||||
obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o
|
||||
obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o
|
||||
obj-$(CONFIG_MACH_CSB337) += board-csb337.o
|
||||
obj-$(CONFIG_MACH_CSB637) += board-csb637.o
|
||||
#obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
|
||||
#obj-$(CONFIG_MACH_KB9200) += board-kb9202.o
|
||||
obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
|
||||
obj-$(CONFIG_MACH_KB9200) += board-kb9202.o
|
||||
obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o
|
||||
obj-$(CONFIG_MACH_KAFA) += board-kafa.o
|
||||
|
||||
# LEDs support
|
||||
led-$(CONFIG_ARCH_AT91RM9200DK) += leds.o
|
||||
led-$(CONFIG_MACH_AT91RM9200EK) += leds.o
|
||||
led-$(CONFIG_MACH_CSB337) += leds.o
|
||||
led-$(CONFIG_MACH_CSB637) += leds.o
|
||||
#led-$(CONFIG_MACH_KB9200) += leds.o
|
||||
#led-$(CONFIG_MACH_KAFA) += leds.o
|
||||
led-$(CONFIG_MACH_KB9200) += leds.o
|
||||
led-$(CONFIG_MACH_KAFA) += leds.o
|
||||
obj-$(CONFIG_LEDS) += $(led-y)
|
||||
|
||||
# VGA support
|
||||
#obj-$(CONFIG_FB_S1D13XXX) += ics1523.o
|
||||
|
||||
|
||||
ifeq ($(CONFIG_PM_DEBUG),y)
|
||||
CFLAGS_pm.o += -DDEBUG
|
||||
endif
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/board-carmeva.c
|
||||
*
|
||||
* Copyright (c) 2005 Peer Georgi
|
||||
* Conitec Datasystems
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
static void __init carmeva_init_irq(void)
|
||||
{
|
||||
/* Initialize AIC controller */
|
||||
at91rm9200_init_irq(NULL);
|
||||
|
||||
/* Set up the GPIO interrupts */
|
||||
at91_gpio_irq_setup(BGA_GPIO_BANKS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial port configuration.
|
||||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
static struct at91_uart_config __initdata carmeva_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init carmeva_map_io(void)
|
||||
{
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 20.000 MHz crystal */
|
||||
at91_clock_init(20000000);
|
||||
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&carmeva_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata carmeva_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PC4,
|
||||
.is_rmii = 1,
|
||||
};
|
||||
|
||||
static struct at91_usbh_data __initdata carmeva_usbh_data = {
|
||||
.ports = 2,
|
||||
};
|
||||
|
||||
static struct at91_udc_data __initdata carmeva_udc_data = {
|
||||
.vbus_pin = AT91_PIN_PD12,
|
||||
.pullup_pin = AT91_PIN_PD9,
|
||||
};
|
||||
|
||||
/* FIXME: user dependend */
|
||||
// static struct at91_cf_data __initdata carmeva_cf_data = {
|
||||
// .det_pin = AT91_PIN_PB0,
|
||||
// .rst_pin = AT91_PIN_PC5,
|
||||
// .irq_pin = ... not connected
|
||||
// .vcc_pin = ... always powered
|
||||
// };
|
||||
|
||||
static struct at91_mmc_data __initdata carmeva_mmc_data = {
|
||||
.is_b = 0,
|
||||
.wire4 = 1,
|
||||
};
|
||||
|
||||
static void __init carmeva_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&carmeva_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&carmeva_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&carmeva_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* Compact Flash */
|
||||
// at91_add_device_cf(&carmeva_cf_data);
|
||||
/* SPI */
|
||||
// at91_add_device_spi(NULL, 0);
|
||||
/* MMC */
|
||||
at91_add_device_mmc(&carmeva_mmc_data);
|
||||
}
|
||||
|
||||
MACHINE_START(CARMEVA, "Carmeva")
|
||||
/* Maintainer: Conitec Datasystems */
|
||||
.phys_io = AT91_BASE_SYS,
|
||||
.io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
|
||||
.boot_params = AT91_SDRAM_BASE + 0x100,
|
||||
.timer = &at91rm9200_timer,
|
||||
.map_io = carmeva_map_io,
|
||||
.init_irq = carmeva_init_irq,
|
||||
.init_machine = carmeva_board_init,
|
||||
MACHINE_END
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
|
@ -35,8 +36,8 @@
|
|||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/mach/serial_at91rm9200.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
@ -54,32 +55,24 @@ static void __init csb337_init_irq(void)
|
|||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
#define CSB337_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
#define CSB337_SERIAL_CONSOLE 0 /* ttyS0 */
|
||||
static struct at91_uart_config __initdata csb337_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init csb337_map_io(void)
|
||||
{
|
||||
int serial[AT91_NR_UART] = CSB337_UART_MAP;
|
||||
int i;
|
||||
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 3.6864 MHz crystal */
|
||||
at91_clock_init(3686400);
|
||||
|
||||
/* Setup the LEDs */
|
||||
at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
|
||||
at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
|
||||
|
||||
#ifdef CONFIG_SERIAL_AT91
|
||||
at91_console_port = CSB337_SERIAL_CONSOLE;
|
||||
memcpy(at91_serial_map, serial, sizeof(serial));
|
||||
|
||||
/* Register UARTs */
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (serial[i] >= 0)
|
||||
at91_register_uart(i, serial[i]);
|
||||
}
|
||||
#endif
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&csb337_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata csb337_eth_data = {
|
||||
|
@ -118,17 +111,31 @@ static struct at91_mmc_data __initdata csb337_mmc_data = {
|
|||
.wp_pin = AT91_PIN_PD6,
|
||||
};
|
||||
|
||||
static struct spi_board_info csb337_spi_devices[] = {
|
||||
{ /* CAN controller */
|
||||
.modalias = "sak82c900",
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 6 * 1000 * 1000,
|
||||
},
|
||||
};
|
||||
|
||||
static void __init csb337_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&csb337_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&csb337_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&csb337_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* Compact Flash */
|
||||
at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */
|
||||
at91_add_device_cf(&csb337_cf_data);
|
||||
/* SPI */
|
||||
at91_add_device_spi(csb337_spi_devices, ARRAY_SIZE(csb337_spi_devices));
|
||||
/* MMC */
|
||||
at91_add_device_mmc(&csb337_mmc_data);
|
||||
}
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/mach/serial_at91rm9200.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
@ -54,14 +54,14 @@ static void __init csb637_init_irq(void)
|
|||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
#define CSB637_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
#define CSB637_SERIAL_CONSOLE 0 /* ttyS0 */
|
||||
static struct at91_uart_config __initdata csb637_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init csb637_map_io(void)
|
||||
{
|
||||
int serial[AT91_NR_UART] = CSB637_UART_MAP;
|
||||
int i;
|
||||
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 3.6864 MHz crystal */
|
||||
|
@ -70,16 +70,8 @@ static void __init csb637_map_io(void)
|
|||
/* Setup the LEDs */
|
||||
at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
|
||||
|
||||
#ifdef CONFIG_SERIAL_AT91
|
||||
at91_console_port = CSB637_SERIAL_CONSOLE;
|
||||
memcpy(at91_serial_map, serial, sizeof(serial));
|
||||
|
||||
/* Register UARTs */
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (serial[i] >= 0)
|
||||
at91_register_uart(i, serial[i]);
|
||||
}
|
||||
#endif
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&csb637_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata csb637_eth_data = {
|
||||
|
@ -98,12 +90,18 @@ static struct at91_udc_data __initdata csb637_udc_data = {
|
|||
|
||||
static void __init csb637_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&csb637_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&csb637_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&csb637_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
}
|
||||
|
||||
MACHINE_START(CSB637, "Cogent CSB637")
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
|
@ -38,8 +39,8 @@
|
|||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/mach/serial_at91rm9200.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
@ -57,14 +58,14 @@ static void __init dk_init_irq(void)
|
|||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
#define DK_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
#define DK_SERIAL_CONSOLE 0 /* ttyS0 */
|
||||
static struct at91_uart_config __initdata dk_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init dk_map_io(void)
|
||||
{
|
||||
int serial[AT91_NR_UART] = DK_UART_MAP;
|
||||
int i;
|
||||
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 18.432 MHz crystal */
|
||||
|
@ -73,16 +74,8 @@ static void __init dk_map_io(void)
|
|||
/* Setup the LEDs */
|
||||
at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
|
||||
|
||||
#ifdef CONFIG_SERIAL_AT91
|
||||
at91_console_port = DK_SERIAL_CONSOLE;
|
||||
memcpy(at91_serial_map, serial, sizeof(serial));
|
||||
|
||||
/* Register UARTs */
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (at91_serial_map[i] >= 0)
|
||||
at91_register_uart(i, at91_serial_map[i]);
|
||||
}
|
||||
#endif
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&dk_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata dk_eth_data = {
|
||||
|
@ -111,16 +104,48 @@ static struct at91_mmc_data __initdata dk_mmc_data = {
|
|||
.wire4 = 1,
|
||||
};
|
||||
|
||||
static struct spi_board_info dk_spi_devices[] = {
|
||||
{ /* DataFlash chip */
|
||||
.modalias = "mtd_dataflash",
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 15 * 1000 * 1000,
|
||||
},
|
||||
{ /* UR6HCPS2-SP40 PS2-to-SPI adapter */
|
||||
.modalias = "ur6hcps2",
|
||||
.chip_select = 1,
|
||||
.max_speed_hz = 250 * 1000,
|
||||
},
|
||||
{ /* TLV1504 ADC, 4 channels, 10 bits; one is a temp sensor */
|
||||
.modalias = "tlv1504",
|
||||
.chip_select = 2,
|
||||
.max_speed_hz = 20 * 1000 * 1000,
|
||||
},
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
{ /* DataFlash card */
|
||||
.modalias = "mtd_dataflash",
|
||||
.chip_select = 3,
|
||||
.max_speed_hz = 15 * 1000 * 1000,
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
static void __init dk_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&dk_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&dk_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&dk_udc_data);
|
||||
at91_set_multi_drive(dk_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
|
||||
/* Compact Flash */
|
||||
at91_add_device_cf(&dk_cf_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices));
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
/* DataFlash card */
|
||||
at91_set_gpio_output(AT91_PIN_PB7, 0);
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/board-eb9200.c
|
||||
*
|
||||
* Copyright (C) 2005 SAN People, adapted for ATEB9200 from Embest
|
||||
* by Andrew Patrikalakis
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
static void __init eb9200_init_irq(void)
|
||||
{
|
||||
/* Initialize AIC controller */
|
||||
at91rm9200_init_irq(NULL);
|
||||
|
||||
/* Set up the GPIO interrupts */
|
||||
at91_gpio_irq_setup(BGA_GPIO_BANKS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial port configuration.
|
||||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
static struct at91_uart_config __initdata eb9200_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init eb9200_map_io(void)
|
||||
{
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 18.432 MHz crystal */
|
||||
at91_clock_init(18432000);
|
||||
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&eb9200_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata eb9200_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PC4,
|
||||
.is_rmii = 1,
|
||||
};
|
||||
|
||||
static struct at91_usbh_data __initdata eb9200_usbh_data = {
|
||||
.ports = 2,
|
||||
};
|
||||
|
||||
static struct at91_udc_data __initdata eb9200_udc_data = {
|
||||
.vbus_pin = AT91_PIN_PD4,
|
||||
.pullup_pin = AT91_PIN_PD5,
|
||||
};
|
||||
|
||||
static struct at91_cf_data __initdata eb9200_cf_data = {
|
||||
.det_pin = AT91_PIN_PB0,
|
||||
.rst_pin = AT91_PIN_PC5,
|
||||
// .irq_pin = ... not connected
|
||||
// .vcc_pin = ... always powered
|
||||
};
|
||||
|
||||
static struct at91_mmc_data __initdata eb9200_mmc_data = {
|
||||
.is_b = 0,
|
||||
.wire4 = 1,
|
||||
};
|
||||
|
||||
static void __init eb9200_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&eb9200_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&eb9200_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&eb9200_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* Compact Flash */
|
||||
at91_add_device_cf(&eb9200_cf_data);
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
/* MMC */
|
||||
/* only supports 1 or 4 bit interface, not wired through to SPI */
|
||||
at91_add_device_mmc(&eb9200_mmc_data);
|
||||
}
|
||||
|
||||
MACHINE_START(ATEB9200, "Embest ATEB9200")
|
||||
.phys_io = AT91_BASE_SYS,
|
||||
.io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
|
||||
.boot_params = AT91_SDRAM_BASE + 0x100,
|
||||
.timer = &at91rm9200_timer,
|
||||
.map_io = eb9200_map_io,
|
||||
.init_irq = eb9200_init_irq,
|
||||
.init_machine = eb9200_board_init,
|
||||
MACHINE_END
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
|
@ -38,8 +39,8 @@
|
|||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/mach/serial_at91rm9200.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
@ -57,14 +58,14 @@ static void __init ek_init_irq(void)
|
|||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
#define EK_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
#define EK_SERIAL_CONSOLE 0 /* ttyS0 */
|
||||
static struct at91_uart_config __initdata ek_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init ek_map_io(void)
|
||||
{
|
||||
int serial[AT91_NR_UART] = EK_UART_MAP;
|
||||
int i;
|
||||
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 18.432 MHz crystal */
|
||||
|
@ -73,16 +74,8 @@ static void __init ek_map_io(void)
|
|||
/* Setup the LEDs */
|
||||
at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2);
|
||||
|
||||
#ifdef CONFIG_SERIAL_AT91
|
||||
at91_console_port = EK_SERIAL_CONSOLE;
|
||||
memcpy(at91_serial_map, serial, sizeof(serial));
|
||||
|
||||
/* Register UARTs */
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (serial[i] >= 0)
|
||||
at91_register_uart(i, serial[i]);
|
||||
}
|
||||
#endif
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&ek_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata ek_eth_data = {
|
||||
|
@ -106,14 +99,36 @@ static struct at91_mmc_data __initdata ek_mmc_data = {
|
|||
.wp_pin = AT91_PIN_PA17,
|
||||
};
|
||||
|
||||
static struct spi_board_info ek_spi_devices[] = {
|
||||
{ /* DataFlash chip */
|
||||
.modalias = "mtd_dataflash",
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 15 * 1000 * 1000,
|
||||
},
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
{ /* DataFlash card */
|
||||
.modalias = "mtd_dataflash",
|
||||
.chip_select = 3,
|
||||
.max_speed_hz = 15 * 1000 * 1000,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
static void __init ek_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&ek_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&ek_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&ek_udc_data);
|
||||
at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
/* DataFlash card */
|
||||
at91_set_gpio_output(AT91_PIN_PB22, 0);
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/board-kafa.c
|
||||
*
|
||||
* Copyright (C) 2006 Sperry-Sun
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
static void __init kafa_init_irq(void)
|
||||
{
|
||||
/* Initialize AIC controller */
|
||||
at91rm9200_init_irq(NULL);
|
||||
|
||||
/* Set up the GPIO interrupts */
|
||||
at91_gpio_irq_setup(PQFP_GPIO_BANKS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial port configuration.
|
||||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
static struct at91_uart_config __initdata kafa_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 2,
|
||||
.tty_map = { 4, 0, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init kafa_map_io(void)
|
||||
{
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 18.432 MHz crystal */
|
||||
at91_clock_init(18432000);
|
||||
|
||||
/* Set up the LEDs */
|
||||
at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4);
|
||||
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&kafa_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata kafa_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PC4,
|
||||
.is_rmii = 0,
|
||||
};
|
||||
|
||||
static struct at91_usbh_data __initdata kafa_usbh_data = {
|
||||
.ports = 1,
|
||||
};
|
||||
|
||||
static struct at91_udc_data __initdata kafa_udc_data = {
|
||||
.vbus_pin = AT91_PIN_PB6,
|
||||
.pullup_pin = AT91_PIN_PB7,
|
||||
};
|
||||
|
||||
static void __init kafa_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&kafa_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&kafa_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&kafa_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
}
|
||||
|
||||
MACHINE_START(KAFA, "Sperry-Sun KAFA")
|
||||
/* Maintainer: Sergei Sharonov */
|
||||
.phys_io = AT91_BASE_SYS,
|
||||
.io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
|
||||
.boot_params = AT91_SDRAM_BASE + 0x100,
|
||||
.timer = &at91rm9200_timer,
|
||||
.map_io = kafa_map_io,
|
||||
.init_irq = kafa_init_irq,
|
||||
.init_machine = kafa_board_init,
|
||||
MACHINE_END
|
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/board-kb9202.c
|
||||
*
|
||||
* Copyright (c) 2005 kb_admin
|
||||
* KwikByte, Inc.
|
||||
*
|
||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
static void __init kb9202_init_irq(void)
|
||||
{
|
||||
/* Initialize AIC controller */
|
||||
at91rm9200_init_irq(NULL);
|
||||
|
||||
/* Set up the GPIO interrupts */
|
||||
at91_gpio_irq_setup(PQFP_GPIO_BANKS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial port configuration.
|
||||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
static struct at91_uart_config __initdata kb9202_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 3,
|
||||
.tty_map = { 4, 0, 1, -1, -1 } /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init kb9202_map_io(void)
|
||||
{
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 10 MHz crystal */
|
||||
at91_clock_init(10000000);
|
||||
|
||||
/* Set up the LEDs */
|
||||
at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18);
|
||||
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&kb9202_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata kb9202_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PB29,
|
||||
.is_rmii = 0,
|
||||
};
|
||||
|
||||
static struct at91_usbh_data __initdata kb9202_usbh_data = {
|
||||
.ports = 1,
|
||||
};
|
||||
|
||||
static struct at91_udc_data __initdata kb9202_udc_data = {
|
||||
.vbus_pin = AT91_PIN_PB24,
|
||||
.pullup_pin = AT91_PIN_PB22,
|
||||
};
|
||||
|
||||
static struct at91_mmc_data __initdata kb9202_mmc_data = {
|
||||
.det_pin = AT91_PIN_PB2,
|
||||
.is_b = 0,
|
||||
.wire4 = 1,
|
||||
};
|
||||
|
||||
static void __init kb9202_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&kb9202_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&kb9202_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&kb9202_udc_data);
|
||||
/* MMC */
|
||||
at91_add_device_mmc(&kb9202_mmc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
}
|
||||
|
||||
MACHINE_START(KB9200, "KB920x")
|
||||
/* Maintainer: KwikByte, Inc. */
|
||||
.phys_io = AT91_BASE_SYS,
|
||||
.io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
|
||||
.boot_params = AT91_SDRAM_BASE + 0x100,
|
||||
.timer = &at91rm9200_timer,
|
||||
.map_io = kb9202_map_io,
|
||||
.init_irq = kb9202_init_irq,
|
||||
.init_machine = kb9202_board_init,
|
||||
MACHINE_END
|
|
@ -28,10 +28,10 @@
|
|||
#include <asm/mach-types.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h> /* for master clock global */
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
/*
|
||||
* There's a lot more which can be done with clocks, including cpufreq
|
||||
* integration, slow clock mode support (for system suspend), letting
|
||||
|
@ -722,9 +722,6 @@ int __init at91_clock_init(unsigned long main_clock)
|
|||
(unsigned) main_clock / 1000000,
|
||||
((unsigned) main_clock % 1000000) / 1000);
|
||||
|
||||
/* FIXME get rid of master_clock global */
|
||||
at91_master_clock = mck.rate_hz;
|
||||
|
||||
#ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS
|
||||
/* establish PCK0..PCK3 parentage */
|
||||
for (tmp = 0; tmp < ARRAY_SIZE(clock_list); tmp++) {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <asm/mach/map.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include "generic.h"
|
||||
|
||||
static struct map_desc at91rm9200_io_desc[] __initdata = {
|
||||
{
|
||||
|
@ -94,6 +95,11 @@ static struct map_desc at91rm9200_io_desc[] __initdata = {
|
|||
.pfn = __phys_to_pfn(AT91_BASE_TCB0),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_SRAM_VIRT_BASE,
|
||||
.pfn = __phys_to_pfn(AT91_SRAM_BASE),
|
||||
.length = AT91_SRAM_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -102,14 +108,3 @@ void __init at91rm9200_map_io(void)
|
|||
iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc));
|
||||
}
|
||||
|
||||
|
||||
unsigned long at91_master_clock;
|
||||
|
||||
EXPORT_SYMBOL(at91_master_clock);
|
||||
|
||||
|
||||
int at91_serial_map[AT91_NR_UART];
|
||||
int at91_console_port;
|
||||
|
||||
EXPORT_SYMBOL(at91_serial_map);
|
||||
EXPORT_SYMBOL(at91_console_port);
|
||||
|
|
|
@ -16,9 +16,15 @@
|
|||
#include <linux/config.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/pio.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
#define SZ_512 0x00000200
|
||||
#define SZ_256 0x00000100
|
||||
#define SZ_16 0x00000010
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* USB Host
|
||||
|
@ -28,7 +34,7 @@
|
|||
static u64 ohci_dmamask = 0xffffffffUL;
|
||||
static struct at91_usbh_data usbh_data;
|
||||
|
||||
static struct resource at91_usbh_resource[] = {
|
||||
static struct resource at91_usbh_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_UHP_BASE,
|
||||
.end = AT91_UHP_BASE + SZ_1M - 1,
|
||||
|
@ -42,15 +48,15 @@ static struct resource at91_usbh_resource[] = {
|
|||
};
|
||||
|
||||
static struct platform_device at91rm9200_usbh_device = {
|
||||
.name = "at91rm9200-ohci",
|
||||
.name = "at91_ohci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &ohci_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &usbh_data,
|
||||
},
|
||||
.resource = at91_usbh_resource,
|
||||
.num_resources = ARRAY_SIZE(at91_usbh_resource),
|
||||
.resource = at91_usbh_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_usbh_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data)
|
||||
|
@ -74,11 +80,16 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
|
|||
static struct at91_udc_data udc_data;
|
||||
|
||||
static struct resource at91_udc_resources[] = {
|
||||
{
|
||||
[0] = {
|
||||
.start = AT91_BASE_UDP,
|
||||
.end = AT91_BASE_UDP + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_UDP,
|
||||
.end = AT91_ID_UDP,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_udc_device = {
|
||||
|
@ -100,10 +111,8 @@ void __init at91_add_device_udc(struct at91_udc_data *data)
|
|||
at91_set_gpio_input(data->vbus_pin, 0);
|
||||
at91_set_deglitch(data->vbus_pin, 1);
|
||||
}
|
||||
if (data->pullup_pin) {
|
||||
if (data->pullup_pin)
|
||||
at91_set_gpio_output(data->pullup_pin, 0);
|
||||
at91_set_multi_drive(data->pullup_pin, 1);
|
||||
}
|
||||
|
||||
udc_data = *data;
|
||||
platform_device_register(&at91rm9200_udc_device);
|
||||
|
@ -197,7 +206,7 @@ static struct at91_cf_data cf_data;
|
|||
static struct resource at91_cf_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_CF_BASE,
|
||||
/* ties up CS4, CS5, and CS6 */
|
||||
/* ties up CS4, CS5 and CS6 */
|
||||
.end = AT91_CF_BASE + (0x30000000 - 1),
|
||||
.flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
|
||||
},
|
||||
|
@ -231,6 +240,12 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
|
|||
at91_set_gpio_output(data->vcc_pin, 0);
|
||||
at91_set_gpio_output(data->rst_pin, 0);
|
||||
|
||||
/* force poweron defaults for these pins ... */
|
||||
at91_set_A_periph(AT91_PIN_PC9, 0); /* A25/CFRNW */
|
||||
at91_set_A_periph(AT91_PIN_PC10, 0); /* NCS4/CFCS */
|
||||
at91_set_A_periph(AT91_PIN_PC11, 0); /* NCS5/CFCE1 */
|
||||
at91_set_A_periph(AT91_PIN_PC12, 0); /* NCS6/CFCE2 */
|
||||
|
||||
cf_data = *data;
|
||||
platform_device_register(&at91rm9200_cf_device);
|
||||
}
|
||||
|
@ -319,6 +334,7 @@ void __init at91_add_device_mmc(struct at91_mmc_data *data)
|
|||
void __init at91_add_device_mmc(struct at91_mmc_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* NAND / SmartMedia
|
||||
* -------------------------------------------------------------------- */
|
||||
|
@ -399,23 +415,111 @@ void __init at91_add_device_i2c(void) {}
|
|||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* SPI
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_SPI_AT91) || defined(CONFIG_SPI_AT91_MODULE) || defined(CONFIG_AT91_SPI) || defined(CONFIG_AT91_SPI_MODULE)
|
||||
static u64 spi_dmamask = 0xffffffffUL;
|
||||
|
||||
static struct resource at91_spi_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_BASE_SPI,
|
||||
.end = AT91_BASE_SPI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_SPI,
|
||||
.end = AT91_ID_SPI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_spi_device = {
|
||||
.name = "at91_spi",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = at91_spi_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_spi_resources),
|
||||
};
|
||||
|
||||
static const unsigned at91_spi_standard_cs[4] = { AT91_PIN_PA3, AT91_PIN_PA4, AT91_PIN_PA5, AT91_PIN_PA6 };
|
||||
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
||||
{
|
||||
int i;
|
||||
unsigned long cs_pin;
|
||||
|
||||
at91_set_A_periph(AT91_PIN_PA0, 0); /* MISO */
|
||||
at91_set_A_periph(AT91_PIN_PA1, 0); /* MOSI */
|
||||
at91_set_A_periph(AT91_PIN_PA2, 0); /* SPCK */
|
||||
|
||||
/* Enable SPI chip-selects */
|
||||
for (i = 0; i < nr_devices; i++) {
|
||||
if (devices[i].controller_data)
|
||||
cs_pin = (unsigned long) devices[i].controller_data;
|
||||
else
|
||||
cs_pin = at91_spi_standard_cs[devices[i].chip_select];
|
||||
|
||||
#ifdef CONFIG_SPI_AT91_MANUAL_CS
|
||||
at91_set_gpio_output(cs_pin, 1);
|
||||
#else
|
||||
at91_set_A_periph(cs_pin, 0);
|
||||
#endif
|
||||
|
||||
/* pass chip-select pin to driver */
|
||||
devices[i].controller_data = (void *) cs_pin;
|
||||
}
|
||||
|
||||
spi_register_board_info(devices, nr_devices);
|
||||
at91_clock_associate("spi0_clk", &at91rm9200_spi_device.dev, "spi");
|
||||
platform_device_register(&at91rm9200_spi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* RTC
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_AT91_RTC) || defined(CONFIG_AT91_RTC_MODULE)
|
||||
#if defined(CONFIG_RTC_DRV_AT91) || defined(CONFIG_RTC_DRV_AT91_MODULE)
|
||||
static struct platform_device at91rm9200_rtc_device = {
|
||||
.name = "at91_rtc",
|
||||
.id = -1,
|
||||
.num_resources = 0,
|
||||
};
|
||||
|
||||
void __init at91_add_device_rtc(void)
|
||||
static void __init at91_add_device_rtc(void)
|
||||
{
|
||||
platform_device_register(&at91rm9200_rtc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_rtc(void) {}
|
||||
static void __init at91_add_device_rtc(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Watchdog
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_AT91_WATCHDOG) || defined(CONFIG_AT91_WATCHDOG_MODULE)
|
||||
static struct platform_device at91rm9200_wdt_device = {
|
||||
.name = "at91_wdt",
|
||||
.id = -1,
|
||||
.num_resources = 0,
|
||||
};
|
||||
|
||||
static void __init at91_add_device_watchdog(void)
|
||||
{
|
||||
platform_device_register(&at91rm9200_wdt_device);
|
||||
}
|
||||
#else
|
||||
static void __init at91_add_device_watchdog(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -429,13 +533,281 @@ u8 at91_leds_timer;
|
|||
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
||||
{
|
||||
at91_leds_cpu = cpu_led;
|
||||
at91_leds_timer = timer_led;
|
||||
at91_leds_cpu = cpu_led;
|
||||
at91_leds_timer = timer_led;
|
||||
}
|
||||
|
||||
#else
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* UART
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_SERIAL_AT91)
|
||||
static struct resource dbgu_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_VA_BASE_SYS + AT91_DBGU,
|
||||
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_SYS,
|
||||
.end = AT91_ID_SYS,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct at91_uart_data dbgu_data = {
|
||||
.use_dma_tx = 0,
|
||||
.use_dma_rx = 0, /* DBGU not capable of receive DMA */
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_dbgu_device = {
|
||||
.name = "at91_usart",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &dbgu_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = dbgu_resources,
|
||||
.num_resources = ARRAY_SIZE(dbgu_resources),
|
||||
};
|
||||
|
||||
static inline void configure_dbgu_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PA30, 0); /* DRXD */
|
||||
at91_set_A_periph(AT91_PIN_PA31, 1); /* DTXD */
|
||||
}
|
||||
|
||||
static struct resource uart0_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_BASE_US0,
|
||||
.end = AT91_BASE_US0 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_US0,
|
||||
.end = AT91_ID_US0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct at91_uart_data uart0_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_uart0_device = {
|
||||
.name = "at91_usart",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
.platform_data = &uart0_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart0_resources,
|
||||
.num_resources = ARRAY_SIZE(uart0_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart0_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PA17, 1); /* TXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PA18, 0); /* RXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PA20, 0); /* CTS0 */
|
||||
|
||||
/*
|
||||
* AT91RM9200 Errata #39 - RTS0 is not internally connected to PA21.
|
||||
* We need to drive the pin manually. Default is off (RTS is active low).
|
||||
*/
|
||||
at91_set_gpio_output(AT91_PIN_PA21, 1);
|
||||
}
|
||||
|
||||
static struct resource uart1_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_BASE_US1,
|
||||
.end = AT91_BASE_US1 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_US1,
|
||||
.end = AT91_ID_US1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct at91_uart_data uart1_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_uart1_device = {
|
||||
.name = "at91_usart",
|
||||
.id = 2,
|
||||
.dev = {
|
||||
.platform_data = &uart1_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart1_resources,
|
||||
.num_resources = ARRAY_SIZE(uart1_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart1_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB18, 0); /* RI1 */
|
||||
at91_set_A_periph(AT91_PIN_PB19, 0); /* DTR1 */
|
||||
at91_set_A_periph(AT91_PIN_PB20, 1); /* TXD1 */
|
||||
at91_set_A_periph(AT91_PIN_PB21, 0); /* RXD1 */
|
||||
at91_set_A_periph(AT91_PIN_PB23, 0); /* DCD1 */
|
||||
at91_set_A_periph(AT91_PIN_PB24, 0); /* CTS1 */
|
||||
at91_set_A_periph(AT91_PIN_PB25, 0); /* DSR1 */
|
||||
at91_set_A_periph(AT91_PIN_PB26, 0); /* RTS1 */
|
||||
}
|
||||
|
||||
static struct resource uart2_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_BASE_US2,
|
||||
.end = AT91_BASE_US2 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_US2,
|
||||
.end = AT91_ID_US2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct at91_uart_data uart2_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_uart2_device = {
|
||||
.name = "at91_usart",
|
||||
.id = 3,
|
||||
.dev = {
|
||||
.platform_data = &uart2_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart2_resources,
|
||||
.num_resources = ARRAY_SIZE(uart2_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart2_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PA22, 0); /* RXD2 */
|
||||
at91_set_A_periph(AT91_PIN_PA23, 1); /* TXD2 */
|
||||
}
|
||||
|
||||
static struct resource uart3_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_BASE_US3,
|
||||
.end = AT91_BASE_US3 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_US3,
|
||||
.end = AT91_ID_US3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct at91_uart_data uart3_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_uart3_device = {
|
||||
.name = "at91_usart",
|
||||
.id = 4,
|
||||
.dev = {
|
||||
.platform_data = &uart3_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart3_resources,
|
||||
.num_resources = ARRAY_SIZE(uart3_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart3_pins(void)
|
||||
{
|
||||
at91_set_B_periph(AT91_PIN_PA5, 1); /* TXD3 */
|
||||
at91_set_B_periph(AT91_PIN_PA6, 0); /* RXD3 */
|
||||
}
|
||||
|
||||
struct platform_device *at91_uarts[AT91_NR_UART]; /* the UARTs to use */
|
||||
struct platform_device *at91_default_console_device; /* the serial console device */
|
||||
|
||||
void __init at91_init_serial(struct at91_uart_config *config)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Fill in list of supported UARTs */
|
||||
for (i = 0; i < config->nr_tty; i++) {
|
||||
switch (config->tty_map[i]) {
|
||||
case 0:
|
||||
configure_usart0_pins();
|
||||
at91_uarts[i] = &at91rm9200_uart0_device;
|
||||
at91_clock_associate("usart0_clk", &at91rm9200_uart0_device.dev, "usart");
|
||||
break;
|
||||
case 1:
|
||||
configure_usart1_pins();
|
||||
at91_uarts[i] = &at91rm9200_uart1_device;
|
||||
at91_clock_associate("usart1_clk", &at91rm9200_uart1_device.dev, "usart");
|
||||
break;
|
||||
case 2:
|
||||
configure_usart2_pins();
|
||||
at91_uarts[i] = &at91rm9200_uart2_device;
|
||||
at91_clock_associate("usart2_clk", &at91rm9200_uart2_device.dev, "usart");
|
||||
break;
|
||||
case 3:
|
||||
configure_usart3_pins();
|
||||
at91_uarts[i] = &at91rm9200_uart3_device;
|
||||
at91_clock_associate("usart3_clk", &at91rm9200_uart3_device.dev, "usart");
|
||||
break;
|
||||
case 4:
|
||||
configure_dbgu_pins();
|
||||
at91_uarts[i] = &at91rm9200_dbgu_device;
|
||||
at91_clock_associate("mck", &at91rm9200_dbgu_device.dev, "usart");
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
at91_uarts[i]->id = i; /* update ID number to mapped ID */
|
||||
}
|
||||
|
||||
/* Set serial console device */
|
||||
if (config->console_tty < AT91_NR_UART)
|
||||
at91_default_console_device = at91_uarts[config->console_tty];
|
||||
if (!at91_default_console_device)
|
||||
printk(KERN_INFO "AT91: No default serial console defined.\n");
|
||||
}
|
||||
|
||||
void __init at91_add_device_serial(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (at91_uarts[i])
|
||||
platform_device_register(at91_uarts[i]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void __init at91_init_serial(struct at91_uart_config *config) {}
|
||||
void __init at91_add_device_serial(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* These devices are always present and don't need any board-specific
|
||||
* setup.
|
||||
*/
|
||||
static int __init at91_add_standard_devices(void)
|
||||
{
|
||||
at91_add_device_rtc();
|
||||
at91_add_device_watchdog();
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(at91_add_standard_devices);
|
||||
|
|
|
@ -16,3 +16,10 @@ extern struct sys_timer at91rm9200_timer;
|
|||
extern void __init at91rm9200_map_io(void);
|
||||
|
||||
extern int __init at91_clock_init(unsigned long main_clock);
|
||||
struct device;
|
||||
extern void __init at91_clock_associate(const char *id, struct device *dev, const char *func);
|
||||
|
||||
/* Power Management */
|
||||
extern void at91_irq_suspend(void);
|
||||
extern void at91_irq_resume(void);
|
||||
|
||||
|
|
|
@ -213,6 +213,84 @@ EXPORT_SYMBOL(at91_get_gpio_value);
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static u32 wakeups[BGA_GPIO_BANKS];
|
||||
static u32 backups[BGA_GPIO_BANKS];
|
||||
|
||||
static int gpio_irq_set_wake(unsigned pin, unsigned state)
|
||||
{
|
||||
unsigned mask = pin_to_mask(pin);
|
||||
|
||||
pin -= PIN_BASE;
|
||||
pin /= 32;
|
||||
|
||||
if (unlikely(pin >= BGA_GPIO_BANKS))
|
||||
return -EINVAL;
|
||||
|
||||
if (state)
|
||||
wakeups[pin] |= mask;
|
||||
else
|
||||
wakeups[pin] &= ~mask;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void at91_gpio_suspend(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BGA_GPIO_BANKS; i++) {
|
||||
u32 pio = pio_controller_offset[i];
|
||||
|
||||
/*
|
||||
* Note: drivers should have disabled GPIO interrupts that
|
||||
* aren't supposed to be wakeup sources.
|
||||
* But that is not much good on ARM..... disable_irq() does
|
||||
* not update the hardware immediately, so the hardware mask
|
||||
* (IMR) has the wrong value (not current, too much is
|
||||
* permitted).
|
||||
*
|
||||
* Our workaround is to disable all non-wakeup IRQs ...
|
||||
* which is exactly what correct drivers asked for in the
|
||||
* first place!
|
||||
*/
|
||||
backups[i] = at91_sys_read(pio + PIO_IMR);
|
||||
at91_sys_write(pio_controller_offset[i] + PIO_IDR, backups[i]);
|
||||
at91_sys_write(pio_controller_offset[i] + PIO_IER, wakeups[i]);
|
||||
|
||||
if (!wakeups[i]) {
|
||||
disable_irq_wake(AT91_ID_PIOA + i);
|
||||
at91_sys_write(AT91_PMC_PCDR, 1 << (AT91_ID_PIOA + i));
|
||||
} else {
|
||||
enable_irq_wake(AT91_ID_PIOA + i);
|
||||
#ifdef CONFIG_PM_DEBUG
|
||||
printk(KERN_DEBUG "GPIO-%c may wake for %08x\n", "ABCD"[i], wakeups[i]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void at91_gpio_resume(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BGA_GPIO_BANKS; i++) {
|
||||
at91_sys_write(pio_controller_offset[i] + PIO_IDR, wakeups[i]);
|
||||
at91_sys_write(pio_controller_offset[i] + PIO_IER, backups[i]);
|
||||
}
|
||||
|
||||
at91_sys_write(AT91_PMC_PCER,
|
||||
(1 << AT91_ID_PIOA)
|
||||
| (1 << AT91_ID_PIOB)
|
||||
| (1 << AT91_ID_PIOC)
|
||||
| (1 << AT91_ID_PIOD));
|
||||
}
|
||||
|
||||
#else
|
||||
#define gpio_irq_set_wake NULL
|
||||
#endif
|
||||
|
||||
|
||||
/* Several AIC controller irqs are dispatched through this GPIO handler.
|
||||
* To use any AT91_PIN_* as an externally triggered IRQ, first call
|
||||
|
@ -252,6 +330,7 @@ static struct irqchip gpio_irqchip = {
|
|||
.mask = gpio_irq_mask,
|
||||
.unmask = gpio_irq_unmask,
|
||||
.set_type = gpio_irq_type,
|
||||
.set_wake = gpio_irq_set_wake,
|
||||
};
|
||||
|
||||
static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs *regs)
|
||||
|
@ -266,6 +345,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
|
|||
/* temporarily mask (level sensitive) parent IRQ */
|
||||
desc->chip->ack(irq);
|
||||
for (;;) {
|
||||
/* reading ISR acks the pending (edge triggered) GPIO interrupt */
|
||||
isr = __raw_readl(pio + PIO_ISR) & __raw_readl(pio + PIO_IMR);
|
||||
if (!isr)
|
||||
break;
|
||||
|
@ -315,15 +395,16 @@ void __init at91_gpio_irq_setup(unsigned banks)
|
|||
set_irq_chipdata(id, controller);
|
||||
|
||||
for (i = 0; i < 32; i++, pin++) {
|
||||
/*
|
||||
* Can use the "simple" and not "edge" handler since it's
|
||||
* shorter, and the AIC handles interupts sanely.
|
||||
*/
|
||||
set_irq_chip(pin, &gpio_irqchip);
|
||||
set_irq_handler(pin, do_simple_IRQ);
|
||||
set_irq_flags(pin, IRQF_VALID);
|
||||
}
|
||||
|
||||
set_irq_chained_handler(id, gpio_irq_handler);
|
||||
|
||||
/* enable the PIO peripheral clock */
|
||||
at91_sys_write(AT91_PMC_PCER, 1 << id);
|
||||
}
|
||||
pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, banks);
|
||||
}
|
||||
|
|
|
@ -92,10 +92,6 @@ static int at91rm9200_irq_type(unsigned irq, unsigned type)
|
|||
{
|
||||
unsigned int smr, srctype;
|
||||
|
||||
/* change triggering only for FIQ and external IRQ0..IRQ6 */
|
||||
if ((irq < AT91_ID_IRQ0) && (irq != AT91_ID_FIQ))
|
||||
return -EINVAL;
|
||||
|
||||
switch (type) {
|
||||
case IRQT_HIGH:
|
||||
srctype = AT91_AIC_SRCTYPE_HIGH;
|
||||
|
@ -104,9 +100,13 @@ static int at91rm9200_irq_type(unsigned irq, unsigned type)
|
|||
srctype = AT91_AIC_SRCTYPE_RISING;
|
||||
break;
|
||||
case IRQT_LOW:
|
||||
if ((irq > AT91_ID_FIQ) && (irq < AT91_ID_IRQ0)) /* only supported on external interrupts */
|
||||
return -EINVAL;
|
||||
srctype = AT91_AIC_SRCTYPE_LOW;
|
||||
break;
|
||||
case IRQT_FALLING:
|
||||
if ((irq > AT91_ID_FIQ) && (irq < AT91_ID_IRQ0)) /* only supported on external interrupts */
|
||||
return -EINVAL;
|
||||
srctype = AT91_AIC_SRCTYPE_FALLING;
|
||||
break;
|
||||
default:
|
||||
|
@ -118,11 +118,47 @@ static int at91rm9200_irq_type(unsigned irq, unsigned type)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static u32 wakeups;
|
||||
static u32 backups;
|
||||
|
||||
static int at91rm9200_irq_set_wake(unsigned irq, unsigned value)
|
||||
{
|
||||
if (unlikely(irq >= 32))
|
||||
return -EINVAL;
|
||||
|
||||
if (value)
|
||||
wakeups |= (1 << irq);
|
||||
else
|
||||
wakeups &= ~(1 << irq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void at91_irq_suspend(void)
|
||||
{
|
||||
backups = at91_sys_read(AT91_AIC_IMR);
|
||||
at91_sys_write(AT91_AIC_IDCR, backups);
|
||||
at91_sys_write(AT91_AIC_IECR, wakeups);
|
||||
}
|
||||
|
||||
void at91_irq_resume(void)
|
||||
{
|
||||
at91_sys_write(AT91_AIC_IDCR, wakeups);
|
||||
at91_sys_write(AT91_AIC_IECR, backups);
|
||||
}
|
||||
|
||||
#else
|
||||
#define at91rm9200_irq_set_wake NULL
|
||||
#endif
|
||||
|
||||
static struct irqchip at91rm9200_irq_chip = {
|
||||
.ack = at91rm9200_mask_irq,
|
||||
.mask = at91rm9200_mask_irq,
|
||||
.unmask = at91rm9200_unmask_irq,
|
||||
.set_type = at91rm9200_irq_type,
|
||||
.set_wake = at91rm9200_irq_set_wake,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -0,0 +1,225 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/pm.c
|
||||
* AT91 Power Management
|
||||
*
|
||||
* Copyright (C) 2005 David Brownell
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <linux/pm.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/mach/irq.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
static int at91_pm_valid_state(suspend_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
case PM_SUSPEND_ON:
|
||||
case PM_SUSPEND_STANDBY:
|
||||
case PM_SUSPEND_MEM:
|
||||
return 1;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static suspend_state_t target_state;
|
||||
|
||||
/*
|
||||
* Called after processes are frozen, but before we shutdown devices.
|
||||
*/
|
||||
static int at91_pm_prepare(suspend_state_t state)
|
||||
{
|
||||
target_state = state;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify that all the clocks are correct before entering
|
||||
* slow-clock mode.
|
||||
*/
|
||||
static int at91_pm_verify_clocks(void)
|
||||
{
|
||||
unsigned long scsr;
|
||||
int i;
|
||||
|
||||
scsr = at91_sys_read(AT91_PMC_SCSR);
|
||||
|
||||
/* USB must not be using PLLB */
|
||||
if ((scsr & (AT91_PMC_UHP | AT91_PMC_UDP)) != 0) {
|
||||
pr_debug("AT91: PM - Suspend-to-RAM with USB still active\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS
|
||||
/* PCK0..PCK3 must be disabled, or configured to use clk32k */
|
||||
for (i = 0; i < 4; i++) {
|
||||
u32 css;
|
||||
|
||||
if ((scsr & (AT91_PMC_PCK0 << i)) == 0)
|
||||
continue;
|
||||
|
||||
css = at91_sys_read(AT91_PMC_PCKR(i)) & AT91_PMC_CSS;
|
||||
if (css != AT91_PMC_CSS_SLOW) {
|
||||
pr_debug("AT91: PM - Suspend-to-RAM with PCK%d src %d\n", i, css);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Call this from platform driver suspend() to see how deeply to suspend.
|
||||
* For example, some controllers (like OHCI) need one of the PLL clocks
|
||||
* in order to act as a wakeup source, and those are not available when
|
||||
* going into slow clock mode.
|
||||
*
|
||||
* REVISIT: generalize as clk_will_be_available(clk)? Other platforms have
|
||||
* the very same problem (but not using at91 main_clk), and it'd be better
|
||||
* to add one generic API rather than lots of platform-specific ones.
|
||||
*/
|
||||
int at91_suspend_entering_slow_clock(void)
|
||||
{
|
||||
return (target_state == PM_SUSPEND_MEM);
|
||||
}
|
||||
EXPORT_SYMBOL(at91_suspend_entering_slow_clock);
|
||||
|
||||
|
||||
static void (*slow_clock)(void);
|
||||
|
||||
|
||||
|
||||
static int at91_pm_enter(suspend_state_t state)
|
||||
{
|
||||
at91_gpio_suspend();
|
||||
at91_irq_suspend();
|
||||
|
||||
pr_debug("AT91: PM - wake mask %08x, pm state %d\n",
|
||||
/* remember all the always-wake irqs */
|
||||
(at91_sys_read(AT91_PMC_PCSR)
|
||||
| (1 << AT91_ID_FIQ)
|
||||
| (1 << AT91_ID_SYS)
|
||||
| (1 << AT91_ID_IRQ0)
|
||||
| (1 << AT91_ID_IRQ1)
|
||||
| (1 << AT91_ID_IRQ2)
|
||||
| (1 << AT91_ID_IRQ3)
|
||||
| (1 << AT91_ID_IRQ4)
|
||||
| (1 << AT91_ID_IRQ5)
|
||||
| (1 << AT91_ID_IRQ6))
|
||||
& at91_sys_read(AT91_AIC_IMR),
|
||||
state);
|
||||
|
||||
switch (state) {
|
||||
/*
|
||||
* Suspend-to-RAM is like STANDBY plus slow clock mode, so
|
||||
* drivers must suspend more deeply: only the master clock
|
||||
* controller may be using the main oscillator.
|
||||
*/
|
||||
case PM_SUSPEND_MEM:
|
||||
/*
|
||||
* Ensure that clocks are in a valid state.
|
||||
*/
|
||||
if (!at91_pm_verify_clocks())
|
||||
goto error;
|
||||
|
||||
/*
|
||||
* Enter slow clock mode by switching over to clk32k and
|
||||
* turning off the main oscillator; reverse on wakeup.
|
||||
*/
|
||||
if (slow_clock) {
|
||||
slow_clock();
|
||||
break;
|
||||
} else {
|
||||
/* DEVELOPMENT ONLY */
|
||||
pr_info("AT91: PM - no slow clock mode yet ...\n");
|
||||
/* FALLTHROUGH leaving master clock alone */
|
||||
}
|
||||
|
||||
/*
|
||||
* STANDBY mode has *all* drivers suspended; ignores irqs not
|
||||
* marked as 'wakeup' event sources; and reduces DRAM power.
|
||||
* But otherwise it's identical to PM_SUSPEND_ON: cpu idle, and
|
||||
* nothing fancy done with main or cpu clocks.
|
||||
*/
|
||||
case PM_SUSPEND_STANDBY:
|
||||
/*
|
||||
* NOTE: the Wait-for-Interrupt instruction needs to be
|
||||
* in icache so the SDRAM stays in self-refresh mode until
|
||||
* the wakeup IRQ occurs.
|
||||
*/
|
||||
asm("b 1f; .align 5; 1:");
|
||||
asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */
|
||||
at91_sys_write(AT91_SDRAMC_SRR, 1); /* self-refresh mode */
|
||||
/* fall though to next state */
|
||||
|
||||
case PM_SUSPEND_ON:
|
||||
asm("mcr p15, 0, r0, c7, c0, 4"); /* wait for interrupt */
|
||||
break;
|
||||
|
||||
default:
|
||||
pr_debug("AT91: PM - bogus suspend state %d\n", state);
|
||||
goto error;
|
||||
}
|
||||
|
||||
pr_debug("AT91: PM - wakeup %08x\n",
|
||||
at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
|
||||
|
||||
error:
|
||||
target_state = PM_SUSPEND_ON;
|
||||
at91_irq_resume();
|
||||
at91_gpio_resume();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static struct pm_ops at91_pm_ops ={
|
||||
.pm_disk_mode = 0,
|
||||
.valid = at91_pm_valid_state,
|
||||
.prepare = at91_pm_prepare,
|
||||
.enter = at91_pm_enter,
|
||||
};
|
||||
|
||||
static int __init at91_pm_init(void)
|
||||
{
|
||||
printk("AT91: Power Management\n");
|
||||
|
||||
#ifdef CONFIG_AT91_PM_SLOW_CLOCK
|
||||
/* REVISIT allocations of SRAM should be dynamically managed.
|
||||
* FIQ handlers and other components will want SRAM/TCM too...
|
||||
*/
|
||||
slow_clock = (void *) (AT91_VA_BASE_SRAM + (3 * SZ_4K));
|
||||
memcpy(slow_clock, at91rm9200_slow_clock, at91rm9200_slow_clock_sz);
|
||||
#endif
|
||||
|
||||
/* Disable SDRAM low-power mode. Cannot be used with self-refresh. */
|
||||
at91_sys_write(AT91_SDRAMC_LPR, 0);
|
||||
|
||||
pm_set_ops(&at91_pm_ops);
|
||||
|
||||
return 0;
|
||||
}
|
||||
arch_initcall(at91_pm_init);
|
|
@ -31,6 +31,8 @@
|
|||
#include <asm/irq.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
static unsigned long last_crtr;
|
||||
|
||||
/*
|
||||
* The ST_CRTR is updated asynchronously to the master clock. It is therefore
|
||||
* necessary to read it twice (with the same value) to ensure accuracy.
|
||||
|
@ -56,7 +58,7 @@ static unsigned long at91rm9200_gettimeoffset(void)
|
|||
{
|
||||
unsigned long elapsed;
|
||||
|
||||
elapsed = (read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV;
|
||||
elapsed = (read_CRTR() - last_crtr) & AT91_ST_ALMV;
|
||||
|
||||
return (unsigned long)(elapsed * (tick_nsec / 1000)) / LATCH;
|
||||
}
|
||||
|
@ -66,15 +68,12 @@ static unsigned long at91rm9200_gettimeoffset(void)
|
|||
*/
|
||||
static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
{
|
||||
unsigned long rtar;
|
||||
|
||||
if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */
|
||||
write_seqlock(&xtime_lock);
|
||||
|
||||
while (((read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV) >= LATCH) {
|
||||
while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) {
|
||||
timer_tick(regs);
|
||||
rtar = (at91_sys_read(AT91_ST_RTAR) + LATCH) & AT91_ST_ALMV;
|
||||
at91_sys_write(AT91_ST_RTAR, rtar);
|
||||
last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV;
|
||||
}
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
@ -87,10 +86,24 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_r
|
|||
|
||||
static struct irqaction at91rm9200_timer_irq = {
|
||||
.name = "at91_tick",
|
||||
.flags = SA_SHIRQ | SA_INTERRUPT,
|
||||
.flags = SA_SHIRQ | SA_INTERRUPT | SA_TIMER,
|
||||
.handler = at91rm9200_timer_interrupt
|
||||
};
|
||||
|
||||
void at91rm9200_timer_reset(void)
|
||||
{
|
||||
last_crtr = 0;
|
||||
|
||||
/* Real time counter incremented every 30.51758 microseconds */
|
||||
at91_sys_write(AT91_ST_RTMR, 1);
|
||||
|
||||
/* Set Period Interval timer */
|
||||
at91_sys_write(AT91_ST_PIMR, LATCH);
|
||||
|
||||
/* Enable Period Interval Timer interrupt */
|
||||
at91_sys_write(AT91_ST_IER, AT91_ST_PITS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set up timer interrupt.
|
||||
*/
|
||||
|
@ -100,28 +113,30 @@ void __init at91rm9200_timer_init(void)
|
|||
at91_sys_write(AT91_ST_IDR, AT91_ST_PITS | AT91_ST_WDOVF | AT91_ST_RTTINC | AT91_ST_ALMS);
|
||||
(void) at91_sys_read(AT91_ST_SR); /* Clear any pending interrupts */
|
||||
|
||||
/*
|
||||
* Make IRQs happen for the system timer.
|
||||
*/
|
||||
/* Make IRQs happen for the system timer */
|
||||
setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq);
|
||||
|
||||
/* Set initial alarm to 0 */
|
||||
at91_sys_write(AT91_ST_RTAR, 0);
|
||||
|
||||
/* Real time counter incremented every 30.51758 microseconds */
|
||||
at91_sys_write(AT91_ST_RTMR, 1);
|
||||
|
||||
/* Set Period Interval timer */
|
||||
at91_sys_write(AT91_ST_PIMR, LATCH);
|
||||
|
||||
/* Change the kernel's 'tick' value to 10009 usec. (the default is 10000) */
|
||||
tick_usec = (LATCH * 1000000) / CLOCK_TICK_RATE;
|
||||
|
||||
/* Enable Period Interval Timer interrupt */
|
||||
at91_sys_write(AT91_ST_IER, AT91_ST_PITS);
|
||||
/* Initialize and enable the timer interrupt */
|
||||
at91rm9200_timer_reset();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void at91rm9200_timer_suspend(void)
|
||||
{
|
||||
/* disable Period Interval Timer interrupt */
|
||||
at91_sys_write(AT91_ST_IDR, AT91_ST_PITS);
|
||||
}
|
||||
#else
|
||||
#define at91rm9200_timer_suspend NULL
|
||||
#endif
|
||||
|
||||
struct sys_timer at91rm9200_timer = {
|
||||
.init = at91rm9200_timer_init,
|
||||
.offset = at91rm9200_gettimeoffset,
|
||||
.suspend = at91rm9200_timer_suspend,
|
||||
.resume = at91rm9200_timer_reset,
|
||||
};
|
||||
|
||||
|
|
|
@ -300,21 +300,22 @@ config SERIAL_AMBA_PL011_CONSOLE
|
|||
kernel at boot time.)
|
||||
|
||||
config SERIAL_AT91
|
||||
bool "AT91RM9200 serial port support"
|
||||
depends on ARM && ARCH_AT91RM9200
|
||||
bool "AT91RM9200 / AT91SAM9261 serial port support"
|
||||
depends on ARM && (ARCH_AT91RM9200 || ARCH_AT91SAM9261)
|
||||
select SERIAL_CORE
|
||||
help
|
||||
This enables the driver for the on-chip UARTs of the AT91RM9200
|
||||
processor.
|
||||
This enables the driver for the on-chip UARTs of the Atmel
|
||||
AT91RM9200 and AT91SAM926 processor.
|
||||
|
||||
config SERIAL_AT91_CONSOLE
|
||||
bool "Support for console on AT91RM9200 serial port"
|
||||
bool "Support for console on AT91RM9200 / AT91SAM9261 serial port"
|
||||
depends on SERIAL_AT91=y
|
||||
select SERIAL_CORE_CONSOLE
|
||||
help
|
||||
Say Y here if you wish to use a UART on the AT91RM9200 as the system
|
||||
console (the system console is the device which receives all kernel
|
||||
messages and warnings and which allows logins in single user mode).
|
||||
Say Y here if you wish to use a UART on the Atmel AT91RM9200 or
|
||||
AT91SAM9261 as the system console (the system console is the device
|
||||
which receives all kernel messages and warnings and which allows
|
||||
logins in single user mode).
|
||||
|
||||
config SERIAL_AT91_TTYAT
|
||||
bool "Install as device ttyAT0-4 instead of ttyS0-4"
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
* linux/drivers/char/at91_serial.c
|
||||
*
|
||||
* Driver for Atmel AT91RM9200 Serial ports
|
||||
*
|
||||
* Copyright (C) 2003 Rick Bronson
|
||||
*
|
||||
* Based on drivers/char/serial_sa1100.c, by Deep Blue Solutions Ltd.
|
||||
|
@ -30,17 +29,19 @@
|
|||
#include <linux/slab.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/serial.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/sysrq.h>
|
||||
#include <linux/tty_flip.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
|
||||
#include <asm/arch/at91rm9200_usart.h>
|
||||
#include <asm/mach/serial_at91rm9200.h>
|
||||
#include <asm/arch/at91rm9200_pdc.h>
|
||||
#include <asm/mach/serial_at91.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/pio.h>
|
||||
|
||||
#include <asm/arch/system.h>
|
||||
|
||||
#if defined(CONFIG_SERIAL_AT91_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
|
||||
#define SUPPORT_SYSRQ
|
||||
|
@ -67,7 +68,6 @@
|
|||
|
||||
#endif
|
||||
|
||||
#define AT91_VA_BASE_DBGU ((unsigned long) AT91_VA_BASE_SYS + AT91_DBGU)
|
||||
#define AT91_ISR_PASS_LIMIT 256
|
||||
|
||||
#define UART_PUT_CR(port,v) writel(v, (port)->membase + AT91_US_CR)
|
||||
|
@ -87,16 +87,33 @@
|
|||
|
||||
/* PDC registers */
|
||||
#define UART_PUT_PTCR(port,v) writel(v, (port)->membase + AT91_PDC_PTCR)
|
||||
#define UART_GET_PTSR(port) readl((port)->membase + AT91_PDC_PTSR)
|
||||
|
||||
#define UART_PUT_RPR(port,v) writel(v, (port)->membase + AT91_PDC_RPR)
|
||||
#define UART_GET_RPR(port) readl((port)->membase + AT91_PDC_RPR)
|
||||
#define UART_PUT_RCR(port,v) writel(v, (port)->membase + AT91_PDC_RCR)
|
||||
#define UART_GET_RCR(port) readl((port)->membase + AT91_PDC_RCR)
|
||||
#define UART_PUT_RNPR(port,v) writel(v, (port)->membase + AT91_PDC_RNPR)
|
||||
#define UART_PUT_RNCR(port,v) writel(v, (port)->membase + AT91_PDC_RNCR)
|
||||
|
||||
#define UART_PUT_TPR(port,v) writel(v, (port)->membase + AT91_PDC_TPR)
|
||||
#define UART_PUT_TCR(port,v) writel(v, (port)->membase + AT91_PDC_TCR)
|
||||
//#define UART_PUT_TNPR(port,v) writel(v, (port)->membase + AT91_PDC_TNPR)
|
||||
//#define UART_PUT_TNCR(port,v) writel(v, (port)->membase + AT91_PDC_TNCR)
|
||||
|
||||
static int (*at91_open)(struct uart_port *);
|
||||
static void (*at91_close)(struct uart_port *);
|
||||
|
||||
/*
|
||||
* We wrap our port structure around the generic uart_port.
|
||||
*/
|
||||
struct at91_uart_port {
|
||||
struct uart_port uart; /* uart */
|
||||
struct clk *clk; /* uart clock */
|
||||
unsigned short suspended; /* is port suspended? */
|
||||
};
|
||||
|
||||
static struct at91_uart_port at91_ports[AT91_NR_UART];
|
||||
|
||||
#ifdef SUPPORT_SYSRQ
|
||||
static struct console at91_console;
|
||||
#endif
|
||||
|
@ -115,16 +132,19 @@ static u_int at91_tx_empty(struct uart_port *port)
|
|||
static void at91_set_mctrl(struct uart_port *port, u_int mctrl)
|
||||
{
|
||||
unsigned int control = 0;
|
||||
unsigned int mode;
|
||||
|
||||
/*
|
||||
* Errata #39: RTS0 is not internally connected to PA21. We need to drive
|
||||
* the pin manually.
|
||||
*/
|
||||
if (port->mapbase == AT91_VA_BASE_US0) {
|
||||
if (mctrl & TIOCM_RTS)
|
||||
at91_sys_write(AT91_PIOA + PIO_CODR, AT91_PA21_RTS0);
|
||||
else
|
||||
at91_sys_write(AT91_PIOA + PIO_SODR, AT91_PA21_RTS0);
|
||||
if (arch_identify() == ARCH_ID_AT91RM9200) {
|
||||
/*
|
||||
* AT91RM9200 Errata #39: RTS0 is not internally connected to PA21.
|
||||
* We need to drive the pin manually.
|
||||
*/
|
||||
if (port->mapbase == AT91_BASE_US0) {
|
||||
if (mctrl & TIOCM_RTS)
|
||||
at91_sys_write(AT91_PIOA + PIO_CODR, AT91_PA21_RTS0);
|
||||
else
|
||||
at91_sys_write(AT91_PIOA + PIO_SODR, AT91_PA21_RTS0);
|
||||
}
|
||||
}
|
||||
|
||||
if (mctrl & TIOCM_RTS)
|
||||
|
@ -137,7 +157,15 @@ static void at91_set_mctrl(struct uart_port *port, u_int mctrl)
|
|||
else
|
||||
control |= AT91_US_DTRDIS;
|
||||
|
||||
UART_PUT_CR(port,control);
|
||||
UART_PUT_CR(port, control);
|
||||
|
||||
/* Local loopback mode? */
|
||||
mode = UART_GET_MR(port) & ~AT91_US_CHMODE;
|
||||
if (mctrl & TIOCM_LOOP)
|
||||
mode |= AT91_US_CHMODE_LOC_LOOP;
|
||||
else
|
||||
mode |= AT91_US_CHMODE_NORMAL;
|
||||
UART_PUT_MR(port, mode);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -169,8 +197,9 @@ static u_int at91_get_mctrl(struct uart_port *port)
|
|||
*/
|
||||
static void at91_stop_tx(struct uart_port *port)
|
||||
{
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
UART_PUT_IDR(port, AT91_US_TXRDY);
|
||||
port->read_status_mask &= ~AT91_US_TXRDY;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -178,7 +207,8 @@ static void at91_stop_tx(struct uart_port *port)
|
|||
*/
|
||||
static void at91_start_tx(struct uart_port *port)
|
||||
{
|
||||
port->read_status_mask |= AT91_US_TXRDY;
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
UART_PUT_IER(port, AT91_US_TXRDY);
|
||||
}
|
||||
|
||||
|
@ -187,6 +217,8 @@ static void at91_start_tx(struct uart_port *port)
|
|||
*/
|
||||
static void at91_stop_rx(struct uart_port *port)
|
||||
{
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
UART_PUT_IDR(port, AT91_US_RXRDY);
|
||||
}
|
||||
|
||||
|
@ -195,7 +227,6 @@ static void at91_stop_rx(struct uart_port *port)
|
|||
*/
|
||||
static void at91_enable_ms(struct uart_port *port)
|
||||
{
|
||||
port->read_status_mask |= (AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC);
|
||||
UART_PUT_IER(port, AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC);
|
||||
}
|
||||
|
||||
|
@ -218,8 +249,8 @@ static void at91_rx_chars(struct uart_port *port, struct pt_regs *regs)
|
|||
struct tty_struct *tty = port->info->tty;
|
||||
unsigned int status, ch, flg;
|
||||
|
||||
status = UART_GET_CSR(port) & port->read_status_mask;
|
||||
while (status & (AT91_US_RXRDY)) {
|
||||
status = UART_GET_CSR(port);
|
||||
while (status & AT91_US_RXRDY) {
|
||||
ch = UART_GET_CHAR(port);
|
||||
|
||||
port->icount.rx++;
|
||||
|
@ -230,40 +261,38 @@ static void at91_rx_chars(struct uart_port *port, struct pt_regs *regs)
|
|||
* note that the error handling code is
|
||||
* out of the main execution path
|
||||
*/
|
||||
if (unlikely(status & (AT91_US_PARE | AT91_US_FRAME | AT91_US_OVRE))) {
|
||||
if (unlikely(status & (AT91_US_PARE | AT91_US_FRAME | AT91_US_OVRE | AT91_US_RXBRK))) {
|
||||
UART_PUT_CR(port, AT91_US_RSTSTA); /* clear error */
|
||||
if (status & (AT91_US_PARE))
|
||||
if (status & AT91_US_RXBRK) {
|
||||
status &= ~(AT91_US_PARE | AT91_US_FRAME); /* ignore side-effect */
|
||||
port->icount.brk++;
|
||||
if (uart_handle_break(port))
|
||||
goto ignore_char;
|
||||
}
|
||||
if (status & AT91_US_PARE)
|
||||
port->icount.parity++;
|
||||
if (status & (AT91_US_FRAME))
|
||||
if (status & AT91_US_FRAME)
|
||||
port->icount.frame++;
|
||||
if (status & (AT91_US_OVRE))
|
||||
if (status & AT91_US_OVRE)
|
||||
port->icount.overrun++;
|
||||
|
||||
if (status & AT91_US_PARE)
|
||||
status &= port->read_status_mask;
|
||||
|
||||
if (status & AT91_US_RXBRK)
|
||||
flg = TTY_BREAK;
|
||||
else if (status & AT91_US_PARE)
|
||||
flg = TTY_PARITY;
|
||||
else if (status & AT91_US_FRAME)
|
||||
flg = TTY_FRAME;
|
||||
if (status & AT91_US_OVRE) {
|
||||
/*
|
||||
* overrun does *not* affect the character
|
||||
* we read from the FIFO
|
||||
*/
|
||||
tty_insert_flip_char(tty, ch, flg);
|
||||
ch = 0;
|
||||
flg = TTY_OVERRUN;
|
||||
}
|
||||
#ifdef SUPPORT_SYSRQ
|
||||
port->sysrq = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (uart_handle_sysrq_char(port, ch, regs))
|
||||
goto ignore_char;
|
||||
|
||||
tty_insert_flip_char(tty, ch, flg);
|
||||
uart_insert_char(port, status, AT91_US_OVRE, ch, flg);
|
||||
|
||||
ignore_char:
|
||||
status = UART_GET_CSR(port) & port->read_status_mask;
|
||||
status = UART_GET_CSR(port);
|
||||
}
|
||||
|
||||
tty_flip_buffer_push(tty);
|
||||
|
@ -308,40 +337,35 @@ static void at91_tx_chars(struct uart_port *port)
|
|||
static irqreturn_t at91_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
{
|
||||
struct uart_port *port = dev_id;
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
unsigned int status, pending, pass_counter = 0;
|
||||
|
||||
status = UART_GET_CSR(port);
|
||||
pending = status & port->read_status_mask;
|
||||
if (pending) {
|
||||
do {
|
||||
if (pending & AT91_US_RXRDY)
|
||||
at91_rx_chars(port, regs);
|
||||
pending = status & UART_GET_IMR(port);
|
||||
while (pending) {
|
||||
/* Interrupt receive */
|
||||
if (pending & AT91_US_RXRDY)
|
||||
at91_rx_chars(port, regs);
|
||||
|
||||
/* Clear the relevent break bits */
|
||||
if (pending & AT91_US_RXBRK) {
|
||||
UART_PUT_CR(port, AT91_US_RSTSTA);
|
||||
port->icount.brk++;
|
||||
uart_handle_break(port);
|
||||
}
|
||||
// TODO: All reads to CSR will clear these interrupts!
|
||||
if (pending & AT91_US_RIIC) port->icount.rng++;
|
||||
if (pending & AT91_US_DSRIC) port->icount.dsr++;
|
||||
if (pending & AT91_US_DCDIC)
|
||||
uart_handle_dcd_change(port, !(status & AT91_US_DCD));
|
||||
if (pending & AT91_US_CTSIC)
|
||||
uart_handle_cts_change(port, !(status & AT91_US_CTS));
|
||||
if (pending & (AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC))
|
||||
wake_up_interruptible(&port->info->delta_msr_wait);
|
||||
|
||||
// TODO: All reads to CSR will clear these interrupts!
|
||||
if (pending & AT91_US_RIIC) port->icount.rng++;
|
||||
if (pending & AT91_US_DSRIC) port->icount.dsr++;
|
||||
if (pending & AT91_US_DCDIC)
|
||||
uart_handle_dcd_change(port, !(status & AT91_US_DCD));
|
||||
if (pending & AT91_US_CTSIC)
|
||||
uart_handle_cts_change(port, !(status & AT91_US_CTS));
|
||||
if (pending & (AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC))
|
||||
wake_up_interruptible(&port->info->delta_msr_wait);
|
||||
/* Interrupt transmit */
|
||||
if (pending & AT91_US_TXRDY)
|
||||
at91_tx_chars(port);
|
||||
|
||||
if (pending & AT91_US_TXRDY)
|
||||
at91_tx_chars(port);
|
||||
if (pass_counter++ > AT91_ISR_PASS_LIMIT)
|
||||
break;
|
||||
if (pass_counter++ > AT91_ISR_PASS_LIMIT)
|
||||
break;
|
||||
|
||||
status = UART_GET_CSR(port);
|
||||
pending = status & port->read_status_mask;
|
||||
} while (pending);
|
||||
status = UART_GET_CSR(port);
|
||||
pending = status & UART_GET_IMR(port);
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
@ -351,6 +375,7 @@ static irqreturn_t at91_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
|||
*/
|
||||
static int at91_startup(struct uart_port *port)
|
||||
{
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
int retval;
|
||||
|
||||
/*
|
||||
|
@ -381,14 +406,14 @@ static int at91_startup(struct uart_port *port)
|
|||
}
|
||||
}
|
||||
|
||||
port->read_status_mask = AT91_US_RXRDY | AT91_US_TXRDY | AT91_US_OVRE
|
||||
| AT91_US_FRAME | AT91_US_PARE | AT91_US_RXBRK;
|
||||
/*
|
||||
* Finally, enable the serial port
|
||||
*/
|
||||
UART_PUT_CR(port, AT91_US_RSTSTA | AT91_US_RSTRX);
|
||||
UART_PUT_CR(port, AT91_US_TXEN | AT91_US_RXEN); /* enable xmit & rcvr */
|
||||
UART_PUT_IER(port, AT91_US_RXRDY); /* do receive only */
|
||||
|
||||
UART_PUT_IER(port, AT91_US_RXRDY); /* enable receive only */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -397,6 +422,8 @@ static int at91_startup(struct uart_port *port)
|
|||
*/
|
||||
static void at91_shutdown(struct uart_port *port)
|
||||
{
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
/*
|
||||
* Disable all interrupts, port and break condition.
|
||||
*/
|
||||
|
@ -421,21 +448,22 @@ static void at91_shutdown(struct uart_port *port)
|
|||
*/
|
||||
static void at91_serial_pm(struct uart_port *port, unsigned int state, unsigned int oldstate)
|
||||
{
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
/*
|
||||
* Enable the peripheral clock for this serial port.
|
||||
* This is called on uart_open() or a resume event.
|
||||
*/
|
||||
at91_sys_write(AT91_PMC_PCER, 1 << port->irq);
|
||||
clk_enable(at91_port->clk);
|
||||
break;
|
||||
case 3:
|
||||
/*
|
||||
* Disable the peripheral clock for this serial port.
|
||||
* This is called on uart_close() or a suspend event.
|
||||
*/
|
||||
if (port->irq != AT91_ID_SYS) /* is this a shared clock? */
|
||||
at91_sys_write(AT91_PMC_PCDR, 1 << port->irq);
|
||||
clk_disable(at91_port->clk);
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "at91_serial: unknown pm %d\n", state);
|
||||
|
@ -494,9 +522,9 @@ static void at91_set_termios(struct uart_port *port, struct termios * termios, s
|
|||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
|
||||
port->read_status_mask |= AT91_US_OVRE;
|
||||
port->read_status_mask = AT91_US_OVRE;
|
||||
if (termios->c_iflag & INPCK)
|
||||
port->read_status_mask |= AT91_US_FRAME | AT91_US_PARE;
|
||||
port->read_status_mask |= (AT91_US_FRAME | AT91_US_PARE);
|
||||
if (termios->c_iflag & (BRKINT | PARMRK))
|
||||
port->read_status_mask |= AT91_US_RXBRK;
|
||||
|
||||
|
@ -552,7 +580,7 @@ static void at91_set_termios(struct uart_port *port, struct termios * termios, s
|
|||
*/
|
||||
static const char *at91_type(struct uart_port *port)
|
||||
{
|
||||
return (port->type == PORT_AT91RM9200) ? "AT91_SERIAL" : NULL;
|
||||
return (port->type == PORT_AT91) ? "AT91_SERIAL" : NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -560,8 +588,15 @@ static const char *at91_type(struct uart_port *port)
|
|||
*/
|
||||
static void at91_release_port(struct uart_port *port)
|
||||
{
|
||||
release_mem_region(port->mapbase,
|
||||
(port->mapbase == AT91_VA_BASE_DBGU) ? 512 : SZ_16K);
|
||||
struct platform_device *pdev = to_platform_device(port->dev);
|
||||
int size = pdev->resource[0].end - pdev->resource[0].start + 1;
|
||||
|
||||
release_mem_region(port->mapbase, size);
|
||||
|
||||
if (port->flags & UPF_IOREMAP) {
|
||||
iounmap(port->membase);
|
||||
port->membase = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -569,10 +604,21 @@ static void at91_release_port(struct uart_port *port)
|
|||
*/
|
||||
static int at91_request_port(struct uart_port *port)
|
||||
{
|
||||
return request_mem_region(port->mapbase,
|
||||
(port->mapbase == AT91_VA_BASE_DBGU) ? 512 : SZ_16K,
|
||||
"at91_serial") != NULL ? 0 : -EBUSY;
|
||||
struct platform_device *pdev = to_platform_device(port->dev);
|
||||
int size = pdev->resource[0].end - pdev->resource[0].start + 1;
|
||||
|
||||
if (!request_mem_region(port->mapbase, size, "at91_serial"))
|
||||
return -EBUSY;
|
||||
|
||||
if (port->flags & UPF_IOREMAP) {
|
||||
port->membase = ioremap(port->mapbase, size);
|
||||
if (port->membase == NULL) {
|
||||
release_mem_region(port->mapbase, size);
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -581,7 +627,7 @@ static int at91_request_port(struct uart_port *port)
|
|||
static void at91_config_port(struct uart_port *port, int flags)
|
||||
{
|
||||
if (flags & UART_CONFIG_TYPE) {
|
||||
port->type = PORT_AT91RM9200;
|
||||
port->type = PORT_AT91;
|
||||
at91_request_port(port);
|
||||
}
|
||||
}
|
||||
|
@ -592,7 +638,7 @@ static void at91_config_port(struct uart_port *port, int flags)
|
|||
static int at91_verify_port(struct uart_port *port, struct serial_struct *ser)
|
||||
{
|
||||
int ret = 0;
|
||||
if (ser->type != PORT_UNKNOWN && ser->type != PORT_AT91RM9200)
|
||||
if (ser->type != PORT_UNKNOWN && ser->type != PORT_AT91)
|
||||
ret = -EINVAL;
|
||||
if (port->irq != ser->irq)
|
||||
ret = -EINVAL;
|
||||
|
@ -624,33 +670,47 @@ static struct uart_ops at91_pops = {
|
|||
.type = at91_type,
|
||||
.release_port = at91_release_port,
|
||||
.request_port = at91_request_port,
|
||||
.config_port = at91_config_port,
|
||||
.verify_port = at91_verify_port,
|
||||
.config_port = at91_config_port,
|
||||
.verify_port = at91_verify_port,
|
||||
.pm = at91_serial_pm,
|
||||
};
|
||||
|
||||
static struct uart_port at91_ports[AT91_NR_UART];
|
||||
|
||||
void __init at91_init_ports(void)
|
||||
/*
|
||||
* Configure the port from the platform device resource info.
|
||||
*/
|
||||
static void __devinit at91_init_port(struct at91_uart_port *at91_port, struct platform_device *pdev)
|
||||
{
|
||||
static int first = 1;
|
||||
int i;
|
||||
struct uart_port *port = &at91_port->uart;
|
||||
struct at91_uart_data *data = pdev->dev.platform_data;
|
||||
|
||||
if (!first)
|
||||
return;
|
||||
first = 0;
|
||||
port->iotype = UPIO_MEM;
|
||||
port->flags = UPF_BOOT_AUTOCONF;
|
||||
port->ops = &at91_pops;
|
||||
port->fifosize = 1;
|
||||
port->line = pdev->id;
|
||||
port->dev = &pdev->dev;
|
||||
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
at91_ports[i].iotype = UPIO_MEM;
|
||||
at91_ports[i].flags = UPF_BOOT_AUTOCONF;
|
||||
at91_ports[i].uartclk = at91_master_clock;
|
||||
at91_ports[i].ops = &at91_pops;
|
||||
at91_ports[i].fifosize = 1;
|
||||
at91_ports[i].line = i;
|
||||
}
|
||||
port->mapbase = pdev->resource[0].start;
|
||||
port->irq = pdev->resource[1].start;
|
||||
|
||||
if (port->mapbase == AT91_VA_BASE_SYS + AT91_DBGU) /* Part of system perpherals - already mapped */
|
||||
port->membase = (void __iomem *) port->mapbase;
|
||||
else {
|
||||
port->flags |= UPF_IOREMAP;
|
||||
port->membase = NULL;
|
||||
}
|
||||
|
||||
if (!at91_port->clk) { /* for console, the clock could already be configured */
|
||||
at91_port->clk = clk_get(&pdev->dev, "usart");
|
||||
clk_enable(at91_port->clk);
|
||||
port->uartclk = clk_get_rate(at91_port->clk);
|
||||
}
|
||||
}
|
||||
|
||||
void __init at91_register_uart_fns(struct at91rm9200_port_fns *fns)
|
||||
/*
|
||||
* Register board-specific modem-control line handlers.
|
||||
*/
|
||||
void __init at91_register_uart_fns(struct at91_port_fns *fns)
|
||||
{
|
||||
if (fns->enable_ms)
|
||||
at91_pops.enable_ms = fns->enable_ms;
|
||||
|
@ -664,51 +724,6 @@ void __init at91_register_uart_fns(struct at91rm9200_port_fns *fns)
|
|||
at91_pops.set_wake = fns->set_wake;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup ports.
|
||||
*/
|
||||
void __init at91_register_uart(int idx, int port)
|
||||
{
|
||||
if ((idx < 0) || (idx >= AT91_NR_UART)) {
|
||||
printk(KERN_ERR "%s: bad index number %d\n", __FUNCTION__, idx);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (port) {
|
||||
case 0:
|
||||
at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US0;
|
||||
at91_ports[idx].mapbase = AT91_VA_BASE_US0;
|
||||
at91_ports[idx].irq = AT91_ID_US0;
|
||||
AT91_CfgPIO_USART0();
|
||||
break;
|
||||
case 1:
|
||||
at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US1;
|
||||
at91_ports[idx].mapbase = AT91_VA_BASE_US1;
|
||||
at91_ports[idx].irq = AT91_ID_US1;
|
||||
AT91_CfgPIO_USART1();
|
||||
break;
|
||||
case 2:
|
||||
at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US2;
|
||||
at91_ports[idx].mapbase = AT91_VA_BASE_US2;
|
||||
at91_ports[idx].irq = AT91_ID_US2;
|
||||
AT91_CfgPIO_USART2();
|
||||
break;
|
||||
case 3:
|
||||
at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US3;
|
||||
at91_ports[idx].mapbase = AT91_VA_BASE_US3;
|
||||
at91_ports[idx].irq = AT91_ID_US3;
|
||||
AT91_CfgPIO_USART3();
|
||||
break;
|
||||
case 4:
|
||||
at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_DBGU;
|
||||
at91_ports[idx].mapbase = AT91_VA_BASE_DBGU;
|
||||
at91_ports[idx].irq = AT91_ID_SYS;
|
||||
AT91_CfgPIO_DBGU();
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "%s : bad port number %d\n", __FUNCTION__, port);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_AT91_CONSOLE
|
||||
static void at91_console_putchar(struct uart_port *port, int ch)
|
||||
|
@ -723,7 +738,7 @@ static void at91_console_putchar(struct uart_port *port, int ch)
|
|||
*/
|
||||
static void at91_console_write(struct console *co, const char *s, u_int count)
|
||||
{
|
||||
struct uart_port *port = at91_ports + co->index;
|
||||
struct uart_port *port = &at91_ports[co->index].uart;
|
||||
unsigned int status, imr;
|
||||
|
||||
/*
|
||||
|
@ -778,23 +793,15 @@ static void __init at91_console_get_options(struct uart_port *port, int *baud, i
|
|||
|
||||
static int __init at91_console_setup(struct console *co, char *options)
|
||||
{
|
||||
struct uart_port *port;
|
||||
struct uart_port *port = &at91_ports[co->index].uart;
|
||||
int baud = 115200;
|
||||
int bits = 8;
|
||||
int parity = 'n';
|
||||
int flow = 'n';
|
||||
|
||||
/*
|
||||
* Check whether an invalid uart number has been specified, and
|
||||
* if so, search for the first available port that does have
|
||||
* console support.
|
||||
*/
|
||||
port = uart_get_console(at91_ports, AT91_NR_UART, co);
|
||||
if (port->membase == 0) /* Port not initialized yet - delay setup */
|
||||
return -ENODEV;
|
||||
|
||||
/*
|
||||
* Enable the serial console, in-case bootloader did not do it.
|
||||
*/
|
||||
at91_sys_write(AT91_PMC_PCER, 1 << port->irq); /* enable clock */
|
||||
UART_PUT_IDR(port, -1); /* disable interrupts */
|
||||
UART_PUT_CR(port, AT91_US_RSTSTA | AT91_US_RSTRX);
|
||||
UART_PUT_CR(port, AT91_US_TXEN | AT91_US_RXEN);
|
||||
|
@ -821,23 +828,40 @@ static struct console at91_console = {
|
|||
|
||||
#define AT91_CONSOLE_DEVICE &at91_console
|
||||
|
||||
static int __init at91_console_init(void)
|
||||
/*
|
||||
* Early console initialization (before VM subsystem initialized).
|
||||
*/
|
||||
static int __init at91_console_init(void)
|
||||
{
|
||||
at91_init_ports();
|
||||
if (at91_default_console_device) {
|
||||
add_preferred_console(AT91_DEVICENAME, at91_default_console_device->id, NULL);
|
||||
at91_init_port(&(at91_ports[at91_default_console_device->id]), at91_default_console_device);
|
||||
register_console(&at91_console);
|
||||
}
|
||||
|
||||
at91_console.index = at91_console_port;
|
||||
register_console(&at91_console);
|
||||
return 0;
|
||||
}
|
||||
console_initcall(at91_console_init);
|
||||
|
||||
/*
|
||||
* Late console initialization.
|
||||
*/
|
||||
static int __init at91_late_console_init(void)
|
||||
{
|
||||
if (at91_default_console_device && !(at91_console.flags & CON_ENABLED))
|
||||
register_console(&at91_console);
|
||||
|
||||
return 0;
|
||||
}
|
||||
core_initcall(at91_late_console_init);
|
||||
|
||||
#else
|
||||
#define AT91_CONSOLE_DEVICE NULL
|
||||
#endif
|
||||
|
||||
static struct uart_driver at91_uart = {
|
||||
.owner = THIS_MODULE,
|
||||
.driver_name = AT91_DEVICENAME,
|
||||
.driver_name = "at91_serial",
|
||||
.dev_name = AT91_DEVICENAME,
|
||||
.devfs_name = AT91_DEVICENAME,
|
||||
.major = SERIAL_AT91_MAJOR,
|
||||
|
@ -846,33 +870,106 @@ static struct uart_driver at91_uart = {
|
|||
.cons = AT91_CONSOLE_DEVICE,
|
||||
};
|
||||
|
||||
static int __init at91_serial_init(void)
|
||||
#ifdef CONFIG_PM
|
||||
static int at91_serial_suspend(struct platform_device *pdev, pm_message_t state)
|
||||
{
|
||||
int ret, i;
|
||||
struct uart_port *port = platform_get_drvdata(pdev);
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
at91_init_ports();
|
||||
|
||||
ret = uart_register_driver(&at91_uart);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (at91_serial_map[i] >= 0)
|
||||
uart_add_one_port(&at91_uart, &at91_ports[i]);
|
||||
if (device_may_wakeup(&pdev->dev) && !at91_suspend_entering_slow_clock())
|
||||
enable_irq_wake(port->irq);
|
||||
else {
|
||||
disable_irq_wake(port->irq);
|
||||
uart_suspend_port(&at91_uart, port);
|
||||
at91_port->suspended = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int at91_serial_resume(struct platform_device *pdev)
|
||||
{
|
||||
struct uart_port *port = platform_get_drvdata(pdev);
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
|
||||
if (at91_port->suspended) {
|
||||
uart_resume_port(&at91_uart, port);
|
||||
at91_port->suspended = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#define at91_serial_suspend NULL
|
||||
#define at91_serial_resume NULL
|
||||
#endif
|
||||
|
||||
static int __devinit at91_serial_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct at91_uart_port *port;
|
||||
int ret;
|
||||
|
||||
port = &at91_ports[pdev->id];
|
||||
at91_init_port(port, pdev);
|
||||
|
||||
ret = uart_add_one_port(&at91_uart, &port->uart);
|
||||
if (!ret) {
|
||||
device_init_wakeup(&pdev->dev, 1);
|
||||
platform_set_drvdata(pdev, port);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit at91_serial_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct uart_port *port = platform_get_drvdata(pdev);
|
||||
struct at91_uart_port *at91_port = (struct at91_uart_port *) port;
|
||||
int ret = 0;
|
||||
|
||||
clk_disable(at91_port->clk);
|
||||
clk_put(at91_port->clk);
|
||||
|
||||
device_init_wakeup(&pdev->dev, 0);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
||||
if (port) {
|
||||
ret = uart_remove_one_port(&at91_uart, port);
|
||||
kfree(port);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct platform_driver at91_serial_driver = {
|
||||
.probe = at91_serial_probe,
|
||||
.remove = __devexit_p(at91_serial_remove),
|
||||
.suspend = at91_serial_suspend,
|
||||
.resume = at91_serial_resume,
|
||||
.driver = {
|
||||
.name = "at91_usart",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init at91_serial_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = uart_register_driver(&at91_uart);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = platform_driver_register(&at91_serial_driver);
|
||||
if (ret)
|
||||
uart_unregister_driver(&at91_uart);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit at91_serial_exit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < AT91_NR_UART; i++) {
|
||||
if (at91_serial_map[i] >= 0)
|
||||
uart_remove_one_port(&at91_uart, &at91_ports[i]);
|
||||
}
|
||||
|
||||
platform_driver_unregister(&at91_serial_driver);
|
||||
uart_unregister_driver(&at91_uart);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* include/asm-arm/arch-at91rm9200/at91rm9200_spi.h
|
||||
*
|
||||
* Copyright (C) 2005 Ivan Kokshaysky
|
||||
* Copyright (C) SAN People
|
||||
*
|
||||
* Serial Peripheral Interface (SPI) registers.
|
||||
* Based on AT91RM9200 datasheet revision E.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef AT91RM9200_SPI_H
|
||||
#define AT91RM9200_SPI_H
|
||||
|
||||
#define AT91_SPI_CR 0x00 /* Control Register */
|
||||
#define AT91_SPI_SPIEN (1 << 0) /* SPI Enable */
|
||||
#define AT91_SPI_SPIDIS (1 << 1) /* SPI Disable */
|
||||
#define AT91_SPI_SWRST (1 << 7) /* SPI Software Reset */
|
||||
#define AT91_SPI_LASTXFER (1 << 24) /* Last Transfer [SAM9261 only] */
|
||||
|
||||
#define AT91_SPI_MR 0x04 /* Mode Register */
|
||||
#define AT91_SPI_MSTR (1 << 0) /* Master/Slave Mode */
|
||||
#define AT91_SPI_PS (1 << 1) /* Peripheral Select */
|
||||
#define AT91_SPI_PS_FIXED (0 << 1)
|
||||
#define AT91_SPI_PS_VARIABLE (1 << 1)
|
||||
#define AT91_SPI_PCSDEC (1 << 2) /* Chip Select Decode */
|
||||
#define AT91_SPI_DIV32 (1 << 3) /* Clock Selection */
|
||||
#define AT91_SPI_MODFDIS (1 << 4) /* Mode Fault Detection */
|
||||
#define AT91_SPI_LLB (1 << 7) /* Local Loopback Enable */
|
||||
#define AT91_SPI_PCS (0xf << 16) /* Peripheral Chip Select */
|
||||
#define AT91_SPI_DLYBCS (0xff << 24) /* Delay Between Chip Selects */
|
||||
|
||||
#define AT91_SPI_RDR 0x08 /* Receive Data Register */
|
||||
#define AT91_SPI_RD (0xffff << 0) /* Receive Data */
|
||||
#define AT91_SPI_PCS (0xf << 16) /* Peripheral Chip Select */
|
||||
|
||||
#define AT91_SPI_TDR 0x0c /* Transmit Data Register */
|
||||
#define AT91_SPI_TD (0xffff << 0) /* Transmit Data */
|
||||
#define AT91_SPI_PCS (0xf << 16) /* Peripheral Chip Select */
|
||||
#define AT91_SPI_LASTXFER (1 << 24) /* Last Transfer [SAM9261 only] */
|
||||
|
||||
#define AT91_SPI_SR 0x10 /* Status Register */
|
||||
#define AT91_SPI_RDRF (1 << 0) /* Receive Data Register Full */
|
||||
#define AT91_SPI_TDRE (1 << 1) /* Transmit Data Register Full */
|
||||
#define AT91_SPI_MODF (1 << 2) /* Mode Fault Error */
|
||||
#define AT91_SPI_OVRES (1 << 3) /* Overrun Error Status */
|
||||
#define AT91_SPI_ENDRX (1 << 4) /* End of RX buffer */
|
||||
#define AT91_SPI_ENDTX (1 << 5) /* End of TX buffer */
|
||||
#define AT91_SPI_RXBUFF (1 << 6) /* RX Buffer Full */
|
||||
#define AT91_SPI_TXBUFE (1 << 7) /* TX Buffer Empty */
|
||||
#define AT91_SPI_NSSR (1 << 8) /* NSS Rising [SAM9261 only] */
|
||||
#define AT91_SPI_TXEMPTY (1 << 9) /* Transmission Register Empty [SAM9261 only] */
|
||||
#define AT91_SPI_SPIENS (1 << 16) /* SPI Enable Status */
|
||||
|
||||
#define AT91_SPI_IER 0x14 /* Interrupt Enable Register */
|
||||
#define AT91_SPI_IDR 0x18 /* Interrupt Disable Register */
|
||||
#define AT91_SPI_IMR 0x1c /* Interrupt Mask Register */
|
||||
|
||||
#define AT91_SPI_CSR(n) (0x30 + ((n) * 4)) /* Chip Select Registers 0-3 */
|
||||
#define AT91_SPI_CPOL (1 << 0) /* Clock Polarity */
|
||||
#define AT91_SPI_NCPHA (1 << 1) /* Clock Phase */
|
||||
#define AT91_SPI_CSAAT (1 << 3) /* Chip Select Active After Transfer [SAM9261 only] */
|
||||
#define AT91_SPI_BITS (0xf << 4) /* Bits Per Transfer */
|
||||
#define AT91_SPI_BITS_8 (0 << 4)
|
||||
#define AT91_SPI_BITS_9 (1 << 4)
|
||||
#define AT91_SPI_BITS_10 (2 << 4)
|
||||
#define AT91_SPI_BITS_11 (3 << 4)
|
||||
#define AT91_SPI_BITS_12 (4 << 4)
|
||||
#define AT91_SPI_BITS_13 (5 << 4)
|
||||
#define AT91_SPI_BITS_14 (6 << 4)
|
||||
#define AT91_SPI_BITS_15 (7 << 4)
|
||||
#define AT91_SPI_BITS_16 (8 << 4)
|
||||
#define AT91_SPI_SCBR (0xff << 8) /* Serial Clock Baud Rate */
|
||||
#define AT91_SPI_DLYBS (0xff << 16) /* Delay before SPCK */
|
||||
#define AT91_SPI_DLYBCT (0xff << 24) /* Delay between Consecutive Transfers */
|
||||
|
||||
#endif
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* include/asm-arm/arch-at91rm9200/at91rm9200_ssc.h
|
||||
*
|
||||
* Copyright (C) SAN People
|
||||
*
|
||||
* Serial Synchronous Controller (SSC) registers.
|
||||
* Based on AT91RM9200 datasheet revision E.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef AT91RM9200_SSC_H
|
||||
#define AT91RM9200_SSC_H
|
||||
|
||||
#define AT91_SSC_CR 0x00 /* Control Register */
|
||||
#define AT91_SSC_RXEN (1 << 0) /* Receive Enable */
|
||||
#define AT91_SSC_RXDIS (1 << 1) /* Receive Disable */
|
||||
#define AT91_SSC_TXEN (1 << 8) /* Transmit Enable */
|
||||
#define AT91_SSC_TXDIS (1 << 9) /* Transmit Disable */
|
||||
#define AT91_SSC_SWRST (1 << 15) /* Software Reset */
|
||||
|
||||
#define AT91_SSC_CMR 0x04 /* Clock Mode Register */
|
||||
#define AT91_SSC_CMR_DIV (0xfff << 0) /* Clock Divider */
|
||||
|
||||
#define AT91_SSC_RCMR 0x10 /* Receive Clock Mode Register */
|
||||
#define AT91_SSC_CKS (3 << 0) /* Clock Selection */
|
||||
#define AT91_SSC_CKS_DIV (0 << 0)
|
||||
#define AT91_SSC_CKS_CLOCK (1 << 0)
|
||||
#define AT91_SSC_CKS_PIN (2 << 0)
|
||||
#define AT91_SSC_CKO (7 << 2) /* Clock Output Mode Selection */
|
||||
#define AT91_SSC_CKO_NONE (0 << 2)
|
||||
#define AT91_SSC_CKO_CONTINUOUS (1 << 2)
|
||||
#define AT91_SSC_CKI (1 << 5) /* Clock Inversion */
|
||||
#define AT91_SSC_CKI_FALLING (0 << 5)
|
||||
#define AT91_SSC_CK_RISING (1 << 5)
|
||||
#define AT91_SSC_START (0xf << 8) /* Start Selection */
|
||||
#define AT91_SSC_START_CONTINUOUS (0 << 8)
|
||||
#define AT91_SSC_START_TX_RX (1 << 8)
|
||||
#define AT91_SSC_START_LOW_RF (2 << 8)
|
||||
#define AT91_SSC_START_HIGH_RF (3 << 8)
|
||||
#define AT91_SSC_START_FALLING_RF (4 << 8)
|
||||
#define AT91_SSC_START_RISING_RF (5 << 8)
|
||||
#define AT91_SSC_START_LEVEL_RF (6 << 8)
|
||||
#define AT91_SSC_START_EDGE_RF (7 << 8)
|
||||
#define AT91_SSC_STTDLY (0xff << 16) /* Start Delay */
|
||||
#define AT91_SSC_PERIOD (0xff << 24) /* Period Divider Selection */
|
||||
|
||||
#define AT91_SSC_RFMR 0x14 /* Receive Frame Mode Register */
|
||||
#define AT91_SSC_DATALEN (0x1f << 0) /* Data Length */
|
||||
#define AT91_SSC_LOOP (1 << 5) /* Loop Mode */
|
||||
#define AT91_SSC_MSBF (1 << 7) /* Most Significant Bit First */
|
||||
#define AT91_SSC_DATNB (0xf << 8) /* Data Number per Frame */
|
||||
#define AT91_SSC_FSLEN (0xf << 16) /* Frame Sync Length */
|
||||
#define AT91_SSC_FSOS (7 << 20) /* Frame Sync Output Selection */
|
||||
#define AT91_SSC_FSOS_NONE (0 << 20)
|
||||
#define AT91_SSC_FSOS_NEGATIVE (1 << 20)
|
||||
#define AT91_SSC_FSOS_POSITIVE (2 << 20)
|
||||
#define AT91_SSC_FSOS_LOW (3 << 20)
|
||||
#define AT91_SSC_FSOS_HIGH (4 << 20)
|
||||
#define AT91_SSC_FSOS_TOGGLE (5 << 20)
|
||||
#define AT91_SSC_FSEDGE (1 << 24) /* Frame Sync Edge Detection */
|
||||
#define AT91_SSC_FSEDGE_POSITIVE (0 << 24)
|
||||
#define AT91_SSC_FSEDGE_NEGATIVE (1 << 24)
|
||||
|
||||
#define AT91_SSC_TCMR 0x18 /* Transmit Clock Mode Register */
|
||||
#define AT91_SSC_TFMR 0x1c /* Transmit Fram Mode Register */
|
||||
#define AT91_SSC_DATDEF (1 << 5) /* Data Default Value */
|
||||
#define AT91_SSC_FSDEN (1 << 23) /* Frame Sync Data Enable */
|
||||
|
||||
#define AT91_SSC_RHR 0x20 /* Receive Holding Register */
|
||||
#define AT91_SSC_THR 0x24 /* Transmit Holding Register */
|
||||
#define AT91_SSC_RSHR 0x30 /* Receive Sync Holding Register */
|
||||
#define AT91_SSC_TSHR 0x34 /* Transmit Sync Holding Register */
|
||||
|
||||
#define AT91_SSC_SR 0x40 /* Status Register */
|
||||
#define AT91_SSC_TXRDY (1 << 0) /* Transmit Ready */
|
||||
#define AT91_SSC_TXEMPTY (1 << 1) /* Transmit Empty */
|
||||
#define AT91_SSC_ENDTX (1 << 2) /* End of Transmission */
|
||||
#define AT91_SSC_TXBUFE (1 << 3) /* Transmit Buffer Empty */
|
||||
#define AT91_SSC_RXRDY (1 << 4) /* Receive Ready */
|
||||
#define AT91_SSC_OVRUN (1 << 5) /* Receive Overrun */
|
||||
#define AT91_SSC_ENDRX (1 << 6) /* End of Reception */
|
||||
#define AT91_SSC_RXBUFF (1 << 7) /* Receive Buffer Full */
|
||||
#define AT91_SSC_TXSYN (1 << 10) /* Transmit Sync */
|
||||
#define AT91_SSC_RXSYN (1 << 11) /* Receive Sync */
|
||||
#define AT91_SSC_TXENA (1 << 16) /* Transmit Enable */
|
||||
#define AT91_SSC_RXENA (1 << 17) /* Receive Enable */
|
||||
|
||||
#define AT91_SSC_IER 0x44 /* Interrupt Enable Register */
|
||||
#define AT91_SSC_IDR 0x48 /* Interrupt Disable Register */
|
||||
#define AT91_SSC_IMR 0x4c /* Interrupt Mask Register */
|
||||
|
||||
#endif
|
|
@ -68,8 +68,17 @@
|
|||
#define AT91_DBGU_RHR (AT91_DBGU + 0x18) /* Receiver Holding Register */
|
||||
#define AT91_DBGU_THR (AT91_DBGU + 0x1c) /* Transmitter Holding Register */
|
||||
#define AT91_DBGU_BRGR (AT91_DBGU + 0x20) /* Baud Rate Generator Register */
|
||||
|
||||
#define AT91_DBGU_CIDR (AT91_DBGU + 0x40) /* Chip ID Register */
|
||||
#define AT91_DBGU_EXID (AT91_DBGU + 0x44) /* Chip ID Extension Register */
|
||||
#define AT91_CIDR_VERSION (0x1f << 0) /* Version of the Device */
|
||||
#define AT91_CIDR_EPROC (7 << 5) /* Embedded Processor */
|
||||
#define AT91_CIDR_NVPSIZ (0xf << 8) /* Nonvolatile Program Memory Size */
|
||||
#define AT91_CIDR_NVPSIZ2 (0xf << 12) /* Second Nonvolatile Program Memory Size */
|
||||
#define AT91_CIDR_SRAMSIZ (0xf << 16) /* Internal SRAM Size */
|
||||
#define AT91_CIDR_ARCH (0xff << 20) /* Architecture Identifier */
|
||||
#define AT91_CIDR_NVPTYP (7 << 28) /* Nonvolatile Program Memory Type */
|
||||
#define AT91_CIDR_EXT (1 << 31) /* Extension Flag */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -241,7 +250,7 @@
|
|||
#define AT91_RTC_SEC (0x7f << 0) /* Current Second */
|
||||
#define AT91_RTC_MIN (0x7f << 8) /* Current Minute */
|
||||
#define AT91_RTC_HOUR (0x3f << 16) /* Current Hour */
|
||||
#define At91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */
|
||||
#define AT91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */
|
||||
|
||||
#define AT91_RTC_CALR (AT91_RTC + 0x0c) /* Calendar Register */
|
||||
#define AT91_RTC_CENT (0x7f << 0) /* Current Century */
|
||||
|
|
|
@ -0,0 +1,146 @@
|
|||
/*
|
||||
* include/asm-arm/arch-at91rm9200/at91rm9200_tc.h
|
||||
*
|
||||
* Copyright (C) SAN People
|
||||
*
|
||||
* Timer/Counter Unit (TC) registers.
|
||||
* Based on AT91RM9200 datasheet revision E.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef AT91RM9200_TC_H
|
||||
#define AT91RM9200_TC_H
|
||||
|
||||
#define AT91_TC_BCR 0xc0 /* TC Block Control Register */
|
||||
#define AT91_TC_SYNC (1 << 0) /* Synchro Command */
|
||||
|
||||
#define AT91_TC_BMR 0xc4 /* TC Block Mode Register */
|
||||
#define AT91_TC_TC0XC0S (3 << 0) /* External Clock Signal 0 Selection */
|
||||
#define AT91_TC_TC0XC0S_TCLK0 (0 << 0)
|
||||
#define AT91_TC_TC0XC0S_NONE (1 << 0)
|
||||
#define AT91_TC_TC0XC0S_TIOA1 (2 << 0)
|
||||
#define AT91_TC_TC0XC0S_TIOA2 (3 << 0)
|
||||
#define AT91_TC_TC1XC1S (3 << 2) /* External Clock Signal 1 Selection */
|
||||
#define AT91_TC_TC1XC1S_TCLK1 (0 << 2)
|
||||
#define AT91_TC_TC1XC1S_NONE (1 << 2)
|
||||
#define AT91_TC_TC1XC1S_TIOA0 (2 << 2)
|
||||
#define AT91_TC_TC1XC1S_TIOA2 (3 << 2)
|
||||
#define AT91_TC_TC2XC2S (3 << 4) /* External Clock Signal 2 Selection */
|
||||
#define AT91_TC_TC2XC2S_TCLK2 (0 << 4)
|
||||
#define AT91_TC_TC2XC2S_NONE (1 << 4)
|
||||
#define AT91_TC_TC2XC2S_TIOA0 (2 << 4)
|
||||
#define AT91_TC_TC2XC2S_TIOA1 (3 << 4)
|
||||
|
||||
|
||||
#define AT91_TC_CCR 0x00 /* Channel Control Register */
|
||||
#define AT91_TC_CLKEN (1 << 0) /* Counter Clock Enable Command */
|
||||
#define AT91_TC_CLKDIS (1 << 1) /* Counter CLock Disable Command */
|
||||
#define AT91_TC_SWTRG (1 << 2) /* Software Trigger Command */
|
||||
|
||||
#define AT91_TC_CMR 0x04 /* Channel Mode Register */
|
||||
#define AT91_TC_TCCLKS (7 << 0) /* Capture/Waveform Mode: Clock Selection */
|
||||
#define AT91_TC_TIMER_CLOCK1 (0 << 0)
|
||||
#define AT91_TC_TIMER_CLOCK2 (1 << 0)
|
||||
#define AT91_TC_TIMER_CLOCK3 (2 << 0)
|
||||
#define AT91_TC_TIMER_CLOCK4 (3 << 0)
|
||||
#define AT91_TC_TIMER_CLOCK5 (4 << 0)
|
||||
#define AT91_TC_XC0 (5 << 0)
|
||||
#define AT91_TC_XC1 (6 << 0)
|
||||
#define AT91_TC_XC2 (7 << 0)
|
||||
#define AT91_TC_CLKI (1 << 3) /* Capture/Waveform Mode: Clock Invert */
|
||||
#define AT91_TC_BURST (3 << 4) /* Capture/Waveform Mode: Burst Signal Selection */
|
||||
#define AT91_TC_LDBSTOP (1 << 6) /* Capture Mode: Counter Clock Stopped with TB Loading */
|
||||
#define AT91_TC_LDBDIS (1 << 7) /* Capture Mode: Counter Clock Disable with RB Loading */
|
||||
#define AT91_TC_ETRGEDG (3 << 8) /* Capture Mode: External Trigger Edge Selection */
|
||||
#define AT91_TC_ABETRG (1 << 10) /* Capture Mode: TIOA or TIOB External Trigger Selection */
|
||||
#define AT91_TC_CPCTRG (1 << 14) /* Capture Mode: RC Compare Trigger Enable */
|
||||
#define AT91_TC_WAVE (1 << 15) /* Capture/Waveform mode */
|
||||
#define AT91_TC_LDRA (3 << 16) /* Capture Mode: RA Loading Selection */
|
||||
#define AT91_TC_LDRB (3 << 18) /* Capture Mode: RB Loading Selection */
|
||||
|
||||
#define AT91_TC_CPCSTOP (1 << 6) /* Waveform Mode: Counter Clock Stopped with RC Compare */
|
||||
#define AT91_TC_CPCDIS (1 << 7) /* Waveform Mode: Counter Clock Disable with RC Compare */
|
||||
#define AT91_TC_EEVTEDG (3 << 8) /* Waveform Mode: External Event Edge Selection */
|
||||
#define AT91_TC_EEVTEDG_NONE (0 << 8)
|
||||
#define AT91_TC_EEVTEDG_RISING (1 << 8)
|
||||
#define AT91_TC_EEVTEDG_FALLING (2 << 8)
|
||||
#define AT91_TC_EEVTEDG_BOTH (3 << 8)
|
||||
#define AT91_TC_EEVT (3 << 10) /* Waveform Mode: External Event Selection */
|
||||
#define AT91_TC_EEVT_TIOB (0 << 10)
|
||||
#define AT91_TC_EEVT_XC0 (1 << 10)
|
||||
#define AT91_TC_EEVT_XC1 (2 << 10)
|
||||
#define AT91_TC_EEVT_XC2 (3 << 10)
|
||||
#define AT91_TC_ENETRG (1 << 12) /* Waveform Mode: External Event Trigger Enable */
|
||||
#define AT91_TC_WAVESEL (3 << 13) /* Waveform Mode: Waveform Selection */
|
||||
#define AT91_TC_WAVESEL_UP (0 << 13)
|
||||
#define AT91_TC_WAVESEL_UP_AUTO (2 << 13)
|
||||
#define AT91_TC_WAVESEL_UPDOWN (1 << 13)
|
||||
#define AT91_TC_WAVESEL_UPDOWN_AUTO (3 << 13)
|
||||
#define AT91_TC_ACPA (3 << 16) /* Waveform Mode: RA Compare Effect on TIOA */
|
||||
#define AT91_TC_ACPA_NONE (0 << 16)
|
||||
#define AT91_TC_ACPA_SET (1 << 16)
|
||||
#define AT91_TC_ACPA_CLEAR (2 << 16)
|
||||
#define AT91_TC_ACPA_TOGGLE (3 << 16)
|
||||
#define AT91_TC_ACPC (3 << 18) /* Waveform Mode: RC Compre Effect on TIOA */
|
||||
#define AT91_TC_ACPC_NONE (0 << 18)
|
||||
#define AT91_TC_ACPC_SET (1 << 18)
|
||||
#define AT91_TC_ACPC_CLEAR (2 << 18)
|
||||
#define AT91_TC_ACPC_TOGGLE (3 << 18)
|
||||
#define AT91_TC_AEEVT (3 << 20) /* Waveform Mode: External Event Effect on TIOA */
|
||||
#define AT91_TC_AEEVT_NONE (0 << 20)
|
||||
#define AT91_TC_AEEVT_SET (1 << 20)
|
||||
#define AT91_TC_AEEVT_CLEAR (2 << 20)
|
||||
#define AT91_TC_AEEVT_TOGGLE (3 << 20)
|
||||
#define AT91_TC_ASWTRG (3 << 22) /* Waveform Mode: Software Trigger Effect on TIOA */
|
||||
#define AT91_TC_ASWTRG_NONE (0 << 22)
|
||||
#define AT91_TC_ASWTRG_SET (1 << 22)
|
||||
#define AT91_TC_ASWTRG_CLEAR (2 << 22)
|
||||
#define AT91_TC_ASWTRG_TOGGLE (3 << 22)
|
||||
#define AT91_TC_BCPB (3 << 24) /* Waveform Mode: RB Compare Effect on TIOB */
|
||||
#define AT91_TC_BCPB_NONE (0 << 24)
|
||||
#define AT91_TC_BCPB_SET (1 << 24)
|
||||
#define AT91_TC_BCPB_CLEAR (2 << 24)
|
||||
#define AT91_TC_BCPB_TOGGLE (3 << 24)
|
||||
#define AT91_TC_BCPC (3 << 26) /* Waveform Mode: RC Compare Effect on TIOB */
|
||||
#define AT91_TC_BCPC_NONE (0 << 26)
|
||||
#define AT91_TC_BCPC_SET (1 << 26)
|
||||
#define AT91_TC_BCPC_CLEAR (2 << 26)
|
||||
#define AT91_TC_BCPC_TOGGLE (3 << 26)
|
||||
#define AT91_TC_BEEVT (3 << 28) /* Waveform Mode: External Event Effect on TIOB */
|
||||
#define AT91_TC_BEEVT_NONE (0 << 28)
|
||||
#define AT91_TC_BEEVT_SET (1 << 28)
|
||||
#define AT91_TC_BEEVT_CLEAR (2 << 28)
|
||||
#define AT91_TC_BEEVT_TOGGLE (3 << 28)
|
||||
#define AT91_TC_BSWTRG (3 << 30) /* Waveform Mode: Software Trigger Effect on TIOB */
|
||||
#define AT91_TC_BSWTRG_NONE (0 << 30)
|
||||
#define AT91_TC_BSWTRG_SET (1 << 30)
|
||||
#define AT91_TC_BSWTRG_CLEAR (2 << 30)
|
||||
#define AT91_TC_BSWTRG_TOGGLE (3 << 30)
|
||||
|
||||
#define AT91_TC_CV 0x10 /* Counter Value */
|
||||
#define AT91_TC_RA 0x14 /* Register A */
|
||||
#define AT91_TC_RB 0x18 /* Register B */
|
||||
#define AT91_TC_RC 0x1c /* Register C */
|
||||
|
||||
#define AT91_TC_SR 0x20 /* Status Register */
|
||||
#define AT91_TC_COVFS (1 << 0) /* Counter Overflow Status */
|
||||
#define AT91_TC_LOVRS (1 << 1) /* Load Overrun Status */
|
||||
#define AT91_TC_CPAS (1 << 2) /* RA Compare Status */
|
||||
#define AT91_TC_CPBS (1 << 3) /* RB Compare Status */
|
||||
#define AT91_TC_CPCS (1 << 4) /* RC Compare Status */
|
||||
#define AT91_TC_LDRAS (1 << 5) /* RA Loading Status */
|
||||
#define AT91_TC_LDRBS (1 << 6) /* RB Loading Status */
|
||||
#define AT91_TC_ETRGS (1 << 7) /* External Trigger Status */
|
||||
#define AT91_TC_CLKSTA (1 << 16) /* Clock Enabling Status */
|
||||
#define AT91_TC_MTIOA (1 << 17) /* TIOA Mirror */
|
||||
#define AT91_TC_MTIOB (1 << 18) /* TIOB Mirror */
|
||||
|
||||
#define AT91_TC_IER 0x24 /* Interrupt Enable Register */
|
||||
#define AT91_TC_IDR 0x28 /* Interrupt Disable Register */
|
||||
#define AT91_TC_IMR 0x2c /* Interrupt Mask Register */
|
||||
|
||||
#endif
|
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* include/asm-arm/arch-at91rm9200/at91rm9200_udp.h
|
||||
*
|
||||
* Copyright (C) 2005 Ivan Kokshaysky
|
||||
* Copyright (C) SAN People
|
||||
*
|
||||
* USB Device Port (UDP) registers.
|
||||
* Based on AT91RM9200 datasheet revision E.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef AT91RM9200_UDP_H
|
||||
#define AT91RM9200_UDP_H
|
||||
|
||||
#define AT91_UDP_FRM_NUM 0x00 /* Frame Number Register */
|
||||
#define AT91_UDP_NUM (0x7ff << 0) /* Frame Number */
|
||||
#define AT91_UDP_FRM_ERR (1 << 16) /* Frame Error */
|
||||
#define AT91_UDP_FRM_OK (1 << 17) /* Frame OK */
|
||||
|
||||
#define AT91_UDP_GLB_STAT 0x04 /* Global State Register */
|
||||
#define AT91_UDP_FADDEN (1 << 0) /* Function Address Enable */
|
||||
#define AT91_UDP_CONFG (1 << 1) /* Configured */
|
||||
#define AT91_UDP_ESR (1 << 2) /* Enable Send Resume */
|
||||
#define AT91_UDP_RSMINPR (1 << 3) /* Resume has been sent */
|
||||
#define AT91_UDP_RMWUPE (1 << 4) /* Remote Wake Up Enable */
|
||||
|
||||
#define AT91_UDP_FADDR 0x08 /* Function Address Register */
|
||||
#define AT91_UDP_FADD (0x7f << 0) /* Function Address Value */
|
||||
#define AT91_UDP_FEN (1 << 8) /* Function Enable */
|
||||
|
||||
#define AT91_UDP_IER 0x10 /* Interrupt Enable Register */
|
||||
#define AT91_UDP_IDR 0x14 /* Interrupt Disable Register */
|
||||
#define AT91_UDP_IMR 0x18 /* Interrupt Mask Register */
|
||||
|
||||
#define AT91_UDP_ISR 0x1c /* Interrupt Status Register */
|
||||
#define AT91_UDP_EP(n) (1 << (n)) /* Endpoint Interrupt Status */
|
||||
#define AT91_UDP_RXSUSP (1 << 8) /* USB Suspend Interrupt Status */
|
||||
#define AT91_UDP_RXRSM (1 << 9) /* USB Resume Interrupt Status */
|
||||
#define AT91_UDP_EXTRSM (1 << 10) /* External Resume Interrupt Status */
|
||||
#define AT91_UDP_SOFINT (1 << 11) /* Start of Frame Interrupt Status */
|
||||
#define AT91_UDP_ENDBUSRES (1 << 12) /* End of Bus Reset Interrpt Status */
|
||||
#define AT91_UDP_WAKEUP (1 << 13) /* USB Wakeup Interrupt Status */
|
||||
|
||||
#define AT91_UDP_ICR 0x20 /* Interrupt Clear Register */
|
||||
#define AT91_UDP_RST_EP 0x28 /* Reset Endpoint Register */
|
||||
|
||||
#define AT91_UDP_CSR(n) (0x30 + ((n) * 4)) /* Endpoint Control/Status Registers 0-7 */
|
||||
#define AT91_UDP_TXCOMP (1 << 0) /* Generates IN packet with data previously written in DPR */
|
||||
#define AT91_UDP_RX_DATA_BK0 (1 << 1) /* Receive Data Bank 0 */
|
||||
#define AT91_UDP_RXSETUP (1 << 2) /* Send STALL to the host */
|
||||
#define AT91_UDP_STALLSENT (1 << 3) /* Stall Sent / Isochronous error (Isochronous endpoints) */
|
||||
#define AT91_UDP_TXPKTRDY (1 << 4) /* Transmit Packet Ready */
|
||||
#define AT91_UDP_FORCESTALL (1 << 5) /* Force Stall */
|
||||
#define AT91_UDP_RX_DATA_BK1 (1 << 6) /* Receive Data Bank 1 */
|
||||
#define AT91_UDP_DIR (1 << 7) /* Transfer Direction */
|
||||
#define AT91_UDP_EPTYPE (7 << 8) /* Endpoint Type */
|
||||
#define AT91_UDP_EPTYPE_CTRL (0 << 8)
|
||||
#define AT91_UDP_EPTYPE_ISO_OUT (1 << 8)
|
||||
#define AT91_UDP_EPTYPE_BULK_OUT (2 << 8)
|
||||
#define AT91_UDP_EPTYPE_INT_OUT (3 << 8)
|
||||
#define AT91_UDP_EPTYPE_ISO_IN (5 << 8)
|
||||
#define AT91_UDP_EPTYPE_BULK_IN (6 << 8)
|
||||
#define AT91_UDP_EPTYPE_INT_IN (7 << 8)
|
||||
#define AT91_UDP_DTGLE (1 << 11) /* Data Toggle */
|
||||
#define AT91_UDP_EPEDS (1 << 15) /* Endpoint Enable/Disable */
|
||||
#define AT91_UDP_RXBYTECNT (0x7ff << 16) /* Number of bytes in FIFO */
|
||||
|
||||
#define AT91_UDP_FDR(n) (0x50 + ((n) * 4)) /* Endpoint FIFO Data Registers 0-7 */
|
||||
|
||||
#define AT91_UDP_TXVC 0x74 /* Transceiver Control Register */
|
||||
#define AT91_UDP_TXVC_TXVDIS (1 << 8) /* Transceiver Disable */
|
||||
|
||||
#endif
|
|
@ -31,14 +31,9 @@
|
|||
#ifndef __ASM_ARCH_BOARD_H
|
||||
#define __ASM_ARCH_BOARD_H
|
||||
|
||||
/* Clocks */
|
||||
extern unsigned long at91_master_clock;
|
||||
|
||||
/* Serial Port */
|
||||
extern int at91_serial_map[AT91_NR_UART];
|
||||
extern int at91_console_port;
|
||||
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
/* USB Device */
|
||||
struct at91_udc_data {
|
||||
|
@ -91,10 +86,25 @@ struct at91_nand_data {
|
|||
extern void __init at91_add_device_nand(struct at91_nand_data *data);
|
||||
|
||||
/* I2C*/
|
||||
void __init at91_add_device_i2c(void);
|
||||
extern void __init at91_add_device_i2c(void);
|
||||
|
||||
/* RTC */
|
||||
void __init at91_add_device_rtc(void);
|
||||
/* SPI */
|
||||
extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
|
||||
|
||||
/* Serial */
|
||||
struct at91_uart_config {
|
||||
unsigned short console_tty; /* tty number of serial console */
|
||||
unsigned short nr_tty; /* number of serial tty's */
|
||||
short tty_map[]; /* map UART to tty number */
|
||||
};
|
||||
extern struct platform_device *at91_default_console_device;
|
||||
extern void __init at91_init_serial(struct at91_uart_config *config);
|
||||
|
||||
struct at91_uart_data {
|
||||
short use_dma_tx; /* use transmit DMA? */
|
||||
short use_dma_rx; /* use receive DMA? */
|
||||
};
|
||||
extern void __init at91_add_device_serial(void);
|
||||
|
||||
/* LEDs */
|
||||
extern u8 at91_leds_cpu;
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
#ifndef __ASM_ARCH_AT91RM9200_GPIO_H
|
||||
#define __ASM_ARCH_AT91RM9200_GPIO_H
|
||||
|
||||
#include <asm/irq.h>
|
||||
|
||||
#define PIN_BASE NR_AIC_IRQS
|
||||
|
||||
#define PQFP_GPIO_BANKS 3 /* PQFP package has 3 banks */
|
||||
|
@ -188,6 +190,9 @@ extern int at91_set_multi_drive(unsigned pin, int is_on);
|
|||
/* callable at any time */
|
||||
extern int at91_set_gpio_value(unsigned pin, int value);
|
||||
extern int at91_get_gpio_value(unsigned pin);
|
||||
|
||||
extern void at91_gpio_suspend(void);
|
||||
extern void at91_gpio_resume(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -50,9 +50,12 @@
|
|||
#define AT91_VA_BASE_TCB0 AT91_IO_P2V(AT91_BASE_TCB0)
|
||||
|
||||
/* Internal SRAM */
|
||||
#define AT91_BASE_SRAM 0x00200000 /* Internal SRAM base address */
|
||||
#define AT91_SRAM_BASE 0x00200000 /* Internal SRAM base address */
|
||||
#define AT91_SRAM_SIZE 0x00004000 /* Internal SRAM SIZE (16Kb) */
|
||||
|
||||
/* Internal SRAM is mapped below the IO devices */
|
||||
#define AT91_SRAM_VIRT_BASE (AT91_IO_VIRT_BASE - AT91_SRAM_SIZE)
|
||||
|
||||
/* Serial ports */
|
||||
#define AT91_NR_UART 5 /* 4 USART3's and one DBGU port */
|
||||
|
||||
|
@ -81,14 +84,14 @@ static inline unsigned int at91_sys_read(unsigned int reg_offset)
|
|||
{
|
||||
void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS;
|
||||
|
||||
return readl(addr + reg_offset);
|
||||
return __raw_readl(addr + reg_offset);
|
||||
}
|
||||
|
||||
static inline void at91_sys_write(unsigned int reg_offset, unsigned long value)
|
||||
{
|
||||
void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS;
|
||||
|
||||
writel(value, addr + reg_offset);
|
||||
__raw_writel(value, addr + reg_offset);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#ifndef __ASM_ARCH_IO_H
|
||||
#define __ASM_ARCH_IO_H
|
||||
|
||||
#include <asm/arch/at91rm9200.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define IO_SPACE_LIMIT 0xFFFFFFFF
|
||||
|
|
|
@ -37,8 +37,6 @@
|
|||
* symbols in gpio.h for ones handled indirectly as GPIOs.
|
||||
* We make provision for 4 banks of GPIO.
|
||||
*/
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#define NR_IRQS (NR_AIC_IRQS + (4 * 32))
|
||||
|
||||
|
||||
|
|
|
@ -1,115 +0,0 @@
|
|||
/*
|
||||
* include/asm-arm/arch-at91rm9200/pio.h
|
||||
*
|
||||
* Copyright (C) 2003 SAN People
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_PIO_H
|
||||
#define __ASM_ARCH_PIO_H
|
||||
|
||||
#include <asm/arch/hardware.h>
|
||||
|
||||
static inline void AT91_CfgPIO_USART0(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA17_TXD0 | AT91_PA18_RXD0 | AT91_PA20_CTS0);
|
||||
|
||||
/*
|
||||
* Errata #39 - RTS0 is not internally connected to PA21. We need to drive
|
||||
* the pin manually. Default is off (RTS is active low).
|
||||
*/
|
||||
at91_sys_write(AT91_PIOA + PIO_PER, AT91_PA21_RTS0);
|
||||
at91_sys_write(AT91_PIOA + PIO_OER, AT91_PA21_RTS0);
|
||||
at91_sys_write(AT91_PIOA + PIO_SODR, AT91_PA21_RTS0);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_USART1(void) {
|
||||
at91_sys_write(AT91_PIOB + PIO_PDR, AT91_PB18_RI1 | AT91_PB19_DTR1
|
||||
| AT91_PB20_TXD1 | AT91_PB21_RXD1 | AT91_PB23_DCD1
|
||||
| AT91_PB24_CTS1 | AT91_PB25_DSR1 | AT91_PB26_RTS1);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_USART2(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA22_RXD2 | AT91_PA23_TXD2);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_USART3(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA5_TXD3 | AT91_PA6_RXD3);
|
||||
at91_sys_write(AT91_PIOA + PIO_BSR, AT91_PA5_TXD3 | AT91_PA6_RXD3);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_DBGU(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA31_DTXD | AT91_PA30_DRXD);
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable the Two-Wire interface.
|
||||
*/
|
||||
static inline void AT91_CfgPIO_TWI(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA25_TWD | AT91_PA26_TWCK);
|
||||
at91_sys_write(AT91_PIOA + PIO_ASR, AT91_PA25_TWD | AT91_PA26_TWCK);
|
||||
at91_sys_write(AT91_PIOA + PIO_MDER, AT91_PA25_TWD | AT91_PA26_TWCK); /* open drain */
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable the Serial Peripheral Interface.
|
||||
*/
|
||||
static inline void AT91_CfgPIO_SPI(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA0_MISO | AT91_PA1_MOSI | AT91_PA2_SPCK);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_SPI_CS0(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA3_NPCS0);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_SPI_CS1(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA4_NPCS1);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_SPI_CS2(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA5_NPCS2);
|
||||
}
|
||||
|
||||
static inline void AT91_CfgPIO_SPI_CS3(void) {
|
||||
at91_sys_write(AT91_PIOA + PIO_PDR, AT91_PA6_NPCS3);
|
||||
}
|
||||
|
||||
/*
|
||||
* Select the DataFlash card.
|
||||
*/
|
||||
static inline void AT91_CfgPIO_DataFlashCard(void) {
|
||||
at91_sys_write(AT91_PIOB + PIO_PER, AT91_PIO_P(7));
|
||||
at91_sys_write(AT91_PIOB + PIO_OER, AT91_PIO_P(7));
|
||||
at91_sys_write(AT91_PIOB + PIO_CODR, AT91_PIO_P(7));
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable NAND Flash (SmartMedia) interface.
|
||||
*/
|
||||
static inline void AT91_CfgPIO_SmartMedia(void) {
|
||||
/* enable PC0=SMCE, PC1=SMOE, PC3=SMWE, A21=CLE, A22=ALE */
|
||||
at91_sys_write(AT91_PIOC + PIO_ASR, AT91_PC0_BFCK | AT91_PC1_BFRDY_SMOE | AT91_PC3_BFBAA_SMWE);
|
||||
at91_sys_write(AT91_PIOC + PIO_PDR, AT91_PC0_BFCK | AT91_PC1_BFRDY_SMOE | AT91_PC3_BFBAA_SMWE);
|
||||
|
||||
/* Configure PC2 as input (signal READY of the SmartMedia) */
|
||||
at91_sys_write(AT91_PIOC + PIO_PER, AT91_PC2_BFAVD); /* enable direct output enable */
|
||||
at91_sys_write(AT91_PIOC + PIO_ODR, AT91_PC2_BFAVD); /* disable output */
|
||||
|
||||
/* Configure PB1 as input (signal Card Detect of the SmartMedia) */
|
||||
at91_sys_write(AT91_PIOB + PIO_PER, AT91_PIO_P(1)); /* enable direct output enable */
|
||||
at91_sys_write(AT91_PIOB + PIO_ODR, AT91_PIO_P(1)); /* disable output */
|
||||
}
|
||||
|
||||
static inline int AT91_PIO_SmartMedia_RDY(void) {
|
||||
return (at91_sys_read(AT91_PIOC + PIO_PDSR) & AT91_PIO_P(2)) ? 1 : 0;
|
||||
}
|
||||
|
||||
static inline int AT91_PIO_SmartMedia_CardDetect(void) {
|
||||
return (at91_sys_read(AT91_PIOB + PIO_PDSR) & AT91_PIO_P(1)) ? 1 : 0;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -48,4 +48,12 @@ static inline void arch_reset(char mode)
|
|||
at91_sys_write(AT91_ST_CR, AT91_ST_WDRST);
|
||||
}
|
||||
|
||||
#define ARCH_ID_AT91RM9200 0x09200080
|
||||
#define ARCH_ID_AT91SAM9261 0x019000a0
|
||||
|
||||
static inline unsigned long arch_identify(void)
|
||||
{
|
||||
return at91_sys_read(AT91_DBGU_CIDR) & (AT91_CIDR_EPROC | AT91_CIDR_ARCH);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -21,6 +21,6 @@
|
|||
#ifndef __ASM_ARCH_VMALLOC_H
|
||||
#define __ASM_ARCH_VMALLOC_H
|
||||
|
||||
#define VMALLOC_END (AT91_IO_VIRT_BASE & PGDIR_MASK)
|
||||
#define VMALLOC_END (AT91_SRAM_VIRT_BASE & PGDIR_MASK)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* linux/include/asm-arm/mach/serial_at91rm9200.h
|
||||
* linux/include/asm-arm/mach/serial_at91.h
|
||||
*
|
||||
* Based on serial_sa1100.h by Nicolas Pitre
|
||||
*
|
||||
|
@ -15,7 +15,7 @@ struct uart_port;
|
|||
* This is a temporary structure for registering these
|
||||
* functions; it is intended to be discarded after boot.
|
||||
*/
|
||||
struct at91rm9200_port_fns {
|
||||
struct at91_port_fns {
|
||||
void (*set_mctrl)(struct uart_port *, u_int);
|
||||
u_int (*get_mctrl)(struct uart_port *);
|
||||
void (*enable_ms)(struct uart_port *);
|
||||
|
@ -26,11 +26,9 @@ struct at91rm9200_port_fns {
|
|||
};
|
||||
|
||||
#if defined(CONFIG_SERIAL_AT91)
|
||||
void at91_register_uart_fns(struct at91rm9200_port_fns *fns);
|
||||
void at91_register_uart(int idx, int port);
|
||||
void at91_register_uart_fns(struct at91_port_fns *fns);
|
||||
#else
|
||||
#define at91_register_uart_fns(fns) do { } while (0)
|
||||
#define at91_register_uart(idx,port) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
|
@ -67,8 +67,8 @@
|
|||
/* Parisc type numbers. */
|
||||
#define PORT_MUX 48
|
||||
|
||||
/* Atmel AT91RM9200 SoC */
|
||||
#define PORT_AT91RM9200 49
|
||||
/* Atmel AT91xxx SoC */
|
||||
#define PORT_AT91 49
|
||||
|
||||
/* Macintosh Zilog type numbers */
|
||||
#define PORT_MAC_ZILOG 50 /* m68k : not yet implemented */
|
||||
|
|
Loading…
Reference in New Issue