···324325 <http://www.digi.com/products/microprocessors/index.jsp>326327+config ARCH_MXC328+ bool "Freescale MXC/iMX-based"329+ select ARCH_MTD_XIP330+ help331+ Support for Freescale MXC/iMX-based family of processors332+333config ARCH_PNX4008334 bool "Philips Nexperia PNX4008 Mobile"335 help···432source "arch/arm/mach-omap2/Kconfig"433434source "arch/arm/plat-s3c24xx/Kconfig"435+source "arch/arm/plat-s3c/Kconfig"436437if ARCH_S3C2410438source "arch/arm/mach-s3c2400/Kconfig"···455source "arch/arm/mach-realview/Kconfig"456457source "arch/arm/mach-at91/Kconfig"458+459+source "arch/arm/plat-mxc/Kconfig"460461source "arch/arm/mach-netx/Kconfig"462
+9-9
arch/arm/Kconfig.debug
···82 output to the second serial port on these devices. Saying N will83 cause the debug messages to appear on the first serial port.8485-config DEBUG_S3C2410_PORT86- depends on DEBUG_LL && ARCH_S3C241087- bool "Kernel low-level debugging messages via S3C2410 UART"88 help89 Say Y here if you want debug print routines to go to one of the90- S3C2410 internal UARTs. The chosen UART must have been configured91 before it is used.9293-config DEBUG_S3C2410_UART94- depends on ARCH_S3C241095- int "S3C2410 UART to use for low-level debug"96 default "0"97 help98- Choice for UART for kernel low-level using S3C2410 UARTS,99 should be between zero and two. The port must have been100 initialised by the boot-loader before use.101102 The uncompressor code port configuration is now handled103- by CONFIG_S3C2410_LOWLEVEL_UART_PORT.104105endmenu
···82 output to the second serial port on these devices. Saying N will83 cause the debug messages to appear on the first serial port.8485+config DEBUG_S3C_PORT86+ depends on DEBUG_LL && PLAT_S3C87+ bool "Kernel low-level debugging messages via S3C UART"88 help89 Say Y here if you want debug print routines to go to one of the90+ S3C internal UARTs. The chosen UART must have been configured91 before it is used.9293+config DEBUG_S3C_UART94+ depends on PLAT_S3C95+ int "S3C UART to use for low-level debug"96 default "0"97 help98+ Choice for UART for kernel low-level using S3C UARTS,99 should be between zero and two. The port must have been100 initialised by the boot-loader before use.101102 The uncompressor code port configuration is now handled103+ by CONFIG_S3C_LOWLEVEL_UART_PORT.104105endmenu
+3
arch/arm/Makefile
···137 textofs-$(CONFIG_ARCH_NS9XXX) := 0x00108000138 machine-$(CONFIG_ARCH_DAVINCI) := davinci139 machine-$(CONFIG_ARCH_KS8695) := ks869500140141ifeq ($(CONFIG_ARCH_EBSA110),y)142# This is what happens if you forget the IOCS16 line.···185core-$(CONFIG_PLAT_IOP) += arch/arm/plat-iop/186core-$(CONFIG_ARCH_OMAP) += arch/arm/plat-omap/187core-$(CONFIG_PLAT_S3C24XX) += arch/arm/plat-s3c24xx/0188189drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/190drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/
···137 textofs-$(CONFIG_ARCH_NS9XXX) := 0x00108000138 machine-$(CONFIG_ARCH_DAVINCI) := davinci139 machine-$(CONFIG_ARCH_KS8695) := ks8695140+ incdir-$(CONFIG_ARCH_MXC) := mxc141+ machine-$(CONFIG_ARCH_MX3) := mx3142143ifeq ($(CONFIG_ARCH_EBSA110),y)144# This is what happens if you forget the IOCS16 line.···183core-$(CONFIG_PLAT_IOP) += arch/arm/plat-iop/184core-$(CONFIG_ARCH_OMAP) += arch/arm/plat-omap/185core-$(CONFIG_PLAT_S3C24XX) += arch/arm/plat-s3c24xx/186+core-$(CONFIG_ARCH_MXC) += arch/arm/plat-mxc/187188drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/189drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/
···1+#2+# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.224+# Mon Jul 9 15:18:20 20075+#6+CONFIG_ARM=y7+CONFIG_SYS_SUPPORTS_APM_EMULATION=y8+CONFIG_GENERIC_GPIO=y9+CONFIG_GENERIC_TIME=y10+# CONFIG_GENERIC_CLOCKEVENTS is not set11+CONFIG_MMU=y12+# CONFIG_NO_IOPORT is not set13+CONFIG_GENERIC_HARDIRQS=y14+CONFIG_STACKTRACE_SUPPORT=y15+CONFIG_LOCKDEP_SUPPORT=y16+CONFIG_TRACE_IRQFLAGS_SUPPORT=y17+CONFIG_HARDIRQS_SW_RESEND=y18+CONFIG_GENERIC_IRQ_PROBE=y19+CONFIG_RWSEM_GENERIC_SPINLOCK=y20+# CONFIG_ARCH_HAS_ILOG2_U32 is not set21+# CONFIG_ARCH_HAS_ILOG2_U64 is not set22+CONFIG_GENERIC_HWEIGHT=y23+CONFIG_GENERIC_CALIBRATE_DELAY=y24+CONFIG_ZONE_DMA=y25+CONFIG_ARCH_MTD_XIP=y26+CONFIG_VECTORS_BASE=0xffff000027+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"28+29+#30+# Code maturity level options31+#32+CONFIG_EXPERIMENTAL=y33+CONFIG_BROKEN_ON_SMP=y34+CONFIG_INIT_ENV_ARG_LIMIT=3235+36+#37+# General setup38+#39+CONFIG_LOCALVERSION="-em-x270"40+# CONFIG_LOCALVERSION_AUTO is not set41+CONFIG_SWAP=y42+CONFIG_SYSVIPC=y43+# CONFIG_IPC_NS is not set44+CONFIG_SYSVIPC_SYSCTL=y45+# CONFIG_POSIX_MQUEUE is not set46+# CONFIG_BSD_PROCESS_ACCT is not set47+# CONFIG_TASKSTATS is not set48+# CONFIG_UTS_NS is not set49+# CONFIG_AUDIT is not set50+CONFIG_IKCONFIG=y51+CONFIG_IKCONFIG_PROC=y52+CONFIG_LOG_BUF_SHIFT=1753+CONFIG_SYSFS_DEPRECATED=y54+# CONFIG_RELAY is not set55+CONFIG_BLK_DEV_INITRD=y56+CONFIG_INITRAMFS_SOURCE=""57+CONFIG_CC_OPTIMIZE_FOR_SIZE=y58+CONFIG_SYSCTL=y59+CONFIG_EMBEDDED=y60+CONFIG_UID16=y61+CONFIG_SYSCTL_SYSCALL=y62+CONFIG_KALLSYMS=y63+# CONFIG_KALLSYMS_ALL is not set64+# CONFIG_KALLSYMS_EXTRA_PASS is not set65+CONFIG_HOTPLUG=y66+CONFIG_PRINTK=y67+CONFIG_BUG=y68+CONFIG_ELF_CORE=y69+CONFIG_BASE_FULL=y70+CONFIG_FUTEX=y71+CONFIG_ANON_INODES=y72+CONFIG_EPOLL=y73+CONFIG_SIGNALFD=y74+CONFIG_TIMERFD=y75+CONFIG_EVENTFD=y76+CONFIG_SHMEM=y77+CONFIG_VM_EVENT_COUNTERS=y78+CONFIG_SLAB=y79+# CONFIG_SLUB is not set80+# CONFIG_SLOB is not set81+CONFIG_RT_MUTEXES=y82+# CONFIG_TINY_SHMEM is not set83+CONFIG_BASE_SMALL=084+85+#86+# Loadable module support87+#88+CONFIG_MODULES=y89+CONFIG_MODULE_UNLOAD=y90+CONFIG_MODULE_FORCE_UNLOAD=y91+# CONFIG_MODVERSIONS is not set92+# CONFIG_MODULE_SRCVERSION_ALL is not set93+CONFIG_KMOD=y94+95+#96+# Block layer97+#98+CONFIG_BLOCK=y99+# CONFIG_LBD is not set100+# CONFIG_BLK_DEV_IO_TRACE is not set101+# CONFIG_LSF is not set102+103+#104+# IO Schedulers105+#106+CONFIG_IOSCHED_NOOP=y107+CONFIG_IOSCHED_AS=y108+CONFIG_IOSCHED_DEADLINE=y109+CONFIG_IOSCHED_CFQ=y110+CONFIG_DEFAULT_AS=y111+# CONFIG_DEFAULT_DEADLINE is not set112+# CONFIG_DEFAULT_CFQ is not set113+# CONFIG_DEFAULT_NOOP is not set114+CONFIG_DEFAULT_IOSCHED="anticipatory"115+116+#117+# System Type118+#119+# CONFIG_ARCH_AAEC2000 is not set120+# CONFIG_ARCH_INTEGRATOR is not set121+# CONFIG_ARCH_REALVIEW is not set122+# CONFIG_ARCH_VERSATILE is not set123+# CONFIG_ARCH_AT91 is not set124+# CONFIG_ARCH_CLPS7500 is not set125+# CONFIG_ARCH_CLPS711X is not set126+# CONFIG_ARCH_CO285 is not set127+# CONFIG_ARCH_EBSA110 is not set128+# CONFIG_ARCH_EP93XX is not set129+# CONFIG_ARCH_FOOTBRIDGE is not set130+# CONFIG_ARCH_NETX is not set131+# CONFIG_ARCH_H720X is not set132+# CONFIG_ARCH_IMX is not set133+# CONFIG_ARCH_IOP13XX is not set134+# CONFIG_ARCH_IOP32X is not set135+# CONFIG_ARCH_IOP33X is not set136+# CONFIG_ARCH_IXP23XX is not set137+# CONFIG_ARCH_IXP2000 is not set138+# CONFIG_ARCH_IXP4XX is not set139+# CONFIG_ARCH_L7200 is not set140+# CONFIG_ARCH_KS8695 is not set141+# CONFIG_ARCH_NS9XXX is not set142+# CONFIG_ARCH_PNX4008 is not set143+CONFIG_ARCH_PXA=y144+# CONFIG_ARCH_RPC is not set145+# CONFIG_ARCH_SA1100 is not set146+# CONFIG_ARCH_S3C2410 is not set147+# CONFIG_ARCH_SHARK is not set148+# CONFIG_ARCH_LH7A40X is not set149+# CONFIG_ARCH_DAVINCI is not set150+# CONFIG_ARCH_OMAP is not set151+152+#153+# Intel PXA2xx Implementations154+#155+# CONFIG_ARCH_LUBBOCK is not set156+# CONFIG_MACH_LOGICPD_PXA270 is not set157+# CONFIG_MACH_MAINSTONE is not set158+# CONFIG_ARCH_PXA_IDP is not set159+# CONFIG_PXA_SHARPSL is not set160+# CONFIG_MACH_TRIZEPS4 is not set161+CONFIG_MACH_EM_X270=y162+CONFIG_PXA27x=y163+164+#165+# Processor Type166+#167+CONFIG_CPU_32=y168+CONFIG_CPU_XSCALE=y169+CONFIG_CPU_32v5=y170+CONFIG_CPU_ABRT_EV5T=y171+CONFIG_CPU_CACHE_VIVT=y172+CONFIG_CPU_TLB_V4WBI=y173+CONFIG_CPU_CP15=y174+CONFIG_CPU_CP15_MMU=y175+176+#177+# Processor Features178+#179+CONFIG_ARM_THUMB=y180+# CONFIG_CPU_DCACHE_DISABLE is not set181+# CONFIG_OUTER_CACHE is not set182+CONFIG_IWMMXT=y183+CONFIG_XSCALE_PMU=y184+185+#186+# Bus support187+#188+# CONFIG_ARCH_SUPPORTS_MSI is not set189+190+#191+# PCCARD (PCMCIA/CardBus) support192+#193+# CONFIG_PCCARD is not set194+195+#196+# Kernel Features197+#198+# CONFIG_TICK_ONESHOT is not set199+# CONFIG_PREEMPT is not set200+# CONFIG_NO_IDLE_HZ is not set201+CONFIG_HZ=100202+CONFIG_AEABI=y203+CONFIG_OABI_COMPAT=y204+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set205+CONFIG_SELECT_MEMORY_MODEL=y206+CONFIG_FLATMEM_MANUAL=y207+# CONFIG_DISCONTIGMEM_MANUAL is not set208+# CONFIG_SPARSEMEM_MANUAL is not set209+CONFIG_FLATMEM=y210+CONFIG_FLAT_NODE_MEM_MAP=y211+# CONFIG_SPARSEMEM_STATIC is not set212+CONFIG_SPLIT_PTLOCK_CPUS=4096213+# CONFIG_RESOURCES_64BIT is not set214+CONFIG_ZONE_DMA_FLAG=1215+CONFIG_ALIGNMENT_TRAP=y216+217+#218+# Boot options219+#220+CONFIG_ZBOOT_ROM_TEXT=0x0221+CONFIG_ZBOOT_ROM_BSS=0x0222+CONFIG_CMDLINE=""223+# CONFIG_XIP_KERNEL is not set224+# CONFIG_KEXEC is not set225+226+#227+# Floating point emulation228+#229+230+#231+# At least one emulation must be selected232+#233+CONFIG_FPE_NWFPE=y234+# CONFIG_FPE_NWFPE_XP is not set235+# CONFIG_FPE_FASTFPE is not set236+237+#238+# Userspace binary formats239+#240+CONFIG_BINFMT_ELF=y241+# CONFIG_BINFMT_AOUT is not set242+# CONFIG_BINFMT_MISC is not set243+244+#245+# Power management options246+#247+CONFIG_PM=y248+CONFIG_PM_LEGACY=y249+# CONFIG_PM_DEBUG is not set250+# CONFIG_PM_SYSFS_DEPRECATED is not set251+CONFIG_APM_EMULATION=m252+253+#254+# Networking255+#256+CONFIG_NET=y257+258+#259+# Networking options260+#261+CONFIG_PACKET=y262+# CONFIG_PACKET_MMAP is not set263+CONFIG_UNIX=y264+CONFIG_XFRM=y265+# CONFIG_XFRM_USER is not set266+# CONFIG_XFRM_SUB_POLICY is not set267+# CONFIG_XFRM_MIGRATE is not set268+# CONFIG_NET_KEY is not set269+CONFIG_INET=y270+# CONFIG_IP_MULTICAST is not set271+# CONFIG_IP_ADVANCED_ROUTER is not set272+CONFIG_IP_FIB_HASH=y273+CONFIG_IP_PNP=y274+CONFIG_IP_PNP_DHCP=y275+CONFIG_IP_PNP_BOOTP=y276+# CONFIG_IP_PNP_RARP is not set277+# CONFIG_NET_IPIP is not set278+# CONFIG_NET_IPGRE is not set279+# CONFIG_ARPD is not set280+# CONFIG_SYN_COOKIES is not set281+# CONFIG_INET_AH is not set282+# CONFIG_INET_ESP is not set283+# CONFIG_INET_IPCOMP is not set284+# CONFIG_INET_XFRM_TUNNEL is not set285+# CONFIG_INET_TUNNEL is not set286+CONFIG_INET_XFRM_MODE_TRANSPORT=y287+CONFIG_INET_XFRM_MODE_TUNNEL=y288+CONFIG_INET_XFRM_MODE_BEET=y289+CONFIG_INET_DIAG=y290+CONFIG_INET_TCP_DIAG=y291+# CONFIG_TCP_CONG_ADVANCED is not set292+CONFIG_TCP_CONG_CUBIC=y293+CONFIG_DEFAULT_TCP_CONG="cubic"294+# CONFIG_TCP_MD5SIG is not set295+# CONFIG_IPV6 is not set296+# CONFIG_INET6_XFRM_TUNNEL is not set297+# CONFIG_INET6_TUNNEL is not set298+# CONFIG_NETWORK_SECMARK is not set299+# CONFIG_NETFILTER is not set300+# CONFIG_IP_DCCP is not set301+# CONFIG_IP_SCTP is not set302+# CONFIG_TIPC is not set303+# CONFIG_ATM is not set304+# CONFIG_BRIDGE is not set305+# CONFIG_VLAN_8021Q is not set306+# CONFIG_DECNET is not set307+# CONFIG_LLC2 is not set308+# CONFIG_IPX is not set309+# CONFIG_ATALK is not set310+# CONFIG_X25 is not set311+# CONFIG_LAPB is not set312+# CONFIG_ECONET is not set313+# CONFIG_WAN_ROUTER is not set314+315+#316+# QoS and/or fair queueing317+#318+# CONFIG_NET_SCHED is not set319+320+#321+# Network testing322+#323+# CONFIG_NET_PKTGEN is not set324+# CONFIG_HAMRADIO is not set325+# CONFIG_IRDA is not set326+CONFIG_BT=m327+CONFIG_BT_L2CAP=m328+CONFIG_BT_SCO=m329+CONFIG_BT_RFCOMM=m330+# CONFIG_BT_RFCOMM_TTY is not set331+CONFIG_BT_BNEP=m332+# CONFIG_BT_BNEP_MC_FILTER is not set333+# CONFIG_BT_BNEP_PROTO_FILTER is not set334+CONFIG_BT_HIDP=m335+336+#337+# Bluetooth device drivers338+#339+CONFIG_BT_HCIUSB=m340+# CONFIG_BT_HCIUSB_SCO is not set341+CONFIG_BT_HCIUART=m342+# CONFIG_BT_HCIUART_H4 is not set343+# CONFIG_BT_HCIUART_BCSP is not set344+CONFIG_BT_HCIBCM203X=m345+CONFIG_BT_HCIBPA10X=m346+CONFIG_BT_HCIBFUSB=m347+# CONFIG_BT_HCIVHCI is not set348+# CONFIG_AF_RXRPC is not set349+350+#351+# Wireless352+#353+# CONFIG_CFG80211 is not set354+# CONFIG_WIRELESS_EXT is not set355+# CONFIG_MAC80211 is not set356+CONFIG_IEEE80211=m357+# CONFIG_IEEE80211_DEBUG is not set358+CONFIG_IEEE80211_CRYPT_WEP=m359+CONFIG_IEEE80211_CRYPT_CCMP=m360+# CONFIG_IEEE80211_CRYPT_TKIP is not set361+# CONFIG_IEEE80211_SOFTMAC is not set362+# CONFIG_RFKILL is not set363+364+#365+# Device Drivers366+#367+368+#369+# Generic Driver Options370+#371+CONFIG_STANDALONE=y372+CONFIG_PREVENT_FIRMWARE_BUILD=y373+CONFIG_FW_LOADER=y374+# CONFIG_DEBUG_DRIVER is not set375+# CONFIG_DEBUG_DEVRES is not set376+# CONFIG_SYS_HYPERVISOR is not set377+378+#379+# Connector - unified userspace <-> kernelspace linker380+#381+# CONFIG_CONNECTOR is not set382+CONFIG_MTD=y383+# CONFIG_MTD_DEBUG is not set384+CONFIG_MTD_CONCAT=y385+CONFIG_MTD_PARTITIONS=y386+# CONFIG_MTD_REDBOOT_PARTS is not set387+# CONFIG_MTD_CMDLINE_PARTS is not set388+# CONFIG_MTD_AFS_PARTS is not set389+390+#391+# User Modules And Translation Layers392+#393+CONFIG_MTD_CHAR=y394+CONFIG_MTD_BLKDEVS=y395+CONFIG_MTD_BLOCK=y396+# CONFIG_FTL is not set397+# CONFIG_NFTL is not set398+# CONFIG_INFTL is not set399+# CONFIG_RFD_FTL is not set400+# CONFIG_SSFDC is not set401+402+#403+# RAM/ROM/Flash chip drivers404+#405+# CONFIG_MTD_CFI is not set406+# CONFIG_MTD_JEDECPROBE is not set407+# CONFIG_MTD_CFI_NOSWAP is not set408+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set409+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set410+CONFIG_MTD_MAP_BANK_WIDTH_1=y411+CONFIG_MTD_MAP_BANK_WIDTH_2=y412+CONFIG_MTD_MAP_BANK_WIDTH_4=y413+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set414+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set415+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set416+CONFIG_MTD_CFI_I1=y417+CONFIG_MTD_CFI_I2=y418+# CONFIG_MTD_CFI_I4 is not set419+# CONFIG_MTD_CFI_I8 is not set420+# CONFIG_MTD_RAM is not set421+# CONFIG_MTD_ROM is not set422+# CONFIG_MTD_ABSENT is not set423+424+#425+# Mapping drivers for chip access426+#427+# CONFIG_MTD_COMPLEX_MAPPINGS is not set428+# CONFIG_MTD_SHARP_SL is not set429+# CONFIG_MTD_PLATRAM is not set430+431+#432+# Self-contained MTD device drivers433+#434+# CONFIG_MTD_SLRAM is not set435+# CONFIG_MTD_PHRAM is not set436+# CONFIG_MTD_MTDRAM is not set437+# CONFIG_MTD_BLOCK2MTD is not set438+439+#440+# Disk-On-Chip Device Drivers441+#442+# CONFIG_MTD_DOC2000 is not set443+# CONFIG_MTD_DOC2001 is not set444+# CONFIG_MTD_DOC2001PLUS is not set445+CONFIG_MTD_NAND=y446+# CONFIG_MTD_NAND_VERIFY_WRITE is not set447+# CONFIG_MTD_NAND_ECC_SMC is not set448+# CONFIG_MTD_NAND_MUSEUM_IDS is not set449+# CONFIG_MTD_NAND_H1900 is not set450+CONFIG_MTD_NAND_IDS=y451+# CONFIG_MTD_NAND_DISKONCHIP is not set452+# CONFIG_MTD_NAND_SHARPSL is not set453+# CONFIG_MTD_NAND_NANDSIM is not set454+CONFIG_MTD_NAND_PLATFORM=y455+# CONFIG_MTD_ONENAND is not set456+457+#458+# UBI - Unsorted block images459+#460+# CONFIG_MTD_UBI is not set461+462+#463+# Parallel port support464+#465+# CONFIG_PARPORT is not set466+467+#468+# Plug and Play support469+#470+# CONFIG_PNPACPI is not set471+472+#473+# Block devices474+#475+# CONFIG_BLK_DEV_COW_COMMON is not set476+CONFIG_BLK_DEV_LOOP=y477+# CONFIG_BLK_DEV_CRYPTOLOOP is not set478+# CONFIG_BLK_DEV_NBD is not set479+# CONFIG_BLK_DEV_UB is not set480+CONFIG_BLK_DEV_RAM=y481+CONFIG_BLK_DEV_RAM_COUNT=16482+CONFIG_BLK_DEV_RAM_SIZE=12000483+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024484+# CONFIG_CDROM_PKTCDVD is not set485+# CONFIG_ATA_OVER_ETH is not set486+# CONFIG_IDE is not set487+488+#489+# SCSI device support490+#491+# CONFIG_RAID_ATTRS is not set492+CONFIG_SCSI=y493+# CONFIG_SCSI_TGT is not set494+# CONFIG_SCSI_NETLINK is not set495+# CONFIG_SCSI_PROC_FS is not set496+497+#498+# SCSI support type (disk, tape, CD-ROM)499+#500+CONFIG_BLK_DEV_SD=y501+# CONFIG_CHR_DEV_ST is not set502+# CONFIG_CHR_DEV_OSST is not set503+# CONFIG_BLK_DEV_SR is not set504+# CONFIG_CHR_DEV_SG is not set505+# CONFIG_CHR_DEV_SCH is not set506+507+#508+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs509+#510+# CONFIG_SCSI_MULTI_LUN is not set511+# CONFIG_SCSI_CONSTANTS is not set512+# CONFIG_SCSI_LOGGING is not set513+# CONFIG_SCSI_SCAN_ASYNC is not set514+CONFIG_SCSI_WAIT_SCAN=m515+516+#517+# SCSI Transports518+#519+# CONFIG_SCSI_SPI_ATTRS is not set520+# CONFIG_SCSI_FC_ATTRS is not set521+# CONFIG_SCSI_ISCSI_ATTRS is not set522+# CONFIG_SCSI_SAS_ATTRS is not set523+# CONFIG_SCSI_SAS_LIBSAS is not set524+525+#526+# SCSI low-level drivers527+#528+# CONFIG_ISCSI_TCP is not set529+# CONFIG_SCSI_DEBUG is not set530+# CONFIG_ATA is not set531+532+#533+# Multi-device support (RAID and LVM)534+#535+# CONFIG_MD is not set536+537+#538+# Network device support539+#540+CONFIG_NETDEVICES=y541+# CONFIG_DUMMY is not set542+# CONFIG_BONDING is not set543+# CONFIG_EQUALIZER is not set544+# CONFIG_TUN is not set545+# CONFIG_PHYLIB is not set546+547+#548+# Ethernet (10 or 100Mbit)549+#550+CONFIG_NET_ETHERNET=y551+CONFIG_MII=y552+# CONFIG_SMC91X is not set553+CONFIG_DM9000=y554+# CONFIG_SMC911X is not set555+# CONFIG_NETDEV_1000 is not set556+# CONFIG_NETDEV_10000 is not set557+558+#559+# Wireless LAN560+#561+# CONFIG_WLAN_PRE80211 is not set562+# CONFIG_WLAN_80211 is not set563+564+#565+# USB Network Adapters566+#567+# CONFIG_USB_CATC is not set568+# CONFIG_USB_KAWETH is not set569+# CONFIG_USB_PEGASUS is not set570+# CONFIG_USB_RTL8150 is not set571+# CONFIG_USB_USBNET_MII is not set572+# CONFIG_USB_USBNET is not set573+# CONFIG_WAN is not set574+# CONFIG_PPP is not set575+# CONFIG_SLIP is not set576+# CONFIG_SHAPER is not set577+# CONFIG_NETCONSOLE is not set578+# CONFIG_NETPOLL is not set579+# CONFIG_NET_POLL_CONTROLLER is not set580+581+#582+# ISDN subsystem583+#584+# CONFIG_ISDN is not set585+586+#587+# Input device support588+#589+CONFIG_INPUT=y590+# CONFIG_INPUT_FF_MEMLESS is not set591+# CONFIG_INPUT_POLLDEV is not set592+593+#594+# Userland interfaces595+#596+CONFIG_INPUT_MOUSEDEV=y597+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set598+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024599+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768600+# CONFIG_INPUT_JOYDEV is not set601+# CONFIG_INPUT_TSDEV is not set602+CONFIG_INPUT_EVDEV=y603+# CONFIG_INPUT_EVBUG is not set604+605+#606+# Input Device Drivers607+#608+CONFIG_INPUT_KEYBOARD=y609+# CONFIG_KEYBOARD_ATKBD is not set610+# CONFIG_KEYBOARD_SUNKBD is not set611+# CONFIG_KEYBOARD_LKKBD is not set612+# CONFIG_KEYBOARD_XTKBD is not set613+# CONFIG_KEYBOARD_NEWTON is not set614+# CONFIG_KEYBOARD_STOWAWAY is not set615+CONFIG_KEYBOARD_PXA27x=m616+# CONFIG_KEYBOARD_GPIO is not set617+# CONFIG_INPUT_MOUSE is not set618+# CONFIG_INPUT_JOYSTICK is not set619+# CONFIG_INPUT_TABLET is not set620+CONFIG_INPUT_TOUCHSCREEN=y621+# CONFIG_TOUCHSCREEN_GUNZE is not set622+# CONFIG_TOUCHSCREEN_ELO is not set623+# CONFIG_TOUCHSCREEN_MTOUCH is not set624+# CONFIG_TOUCHSCREEN_MK712 is not set625+# CONFIG_TOUCHSCREEN_PENMOUNT is not set626+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set627+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set628+# CONFIG_TOUCHSCREEN_UCB1400 is not set629+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set630+# CONFIG_INPUT_MISC is not set631+632+#633+# Hardware I/O ports634+#635+CONFIG_SERIO=y636+# CONFIG_SERIO_SERPORT is not set637+CONFIG_SERIO_LIBPS2=y638+# CONFIG_SERIO_RAW is not set639+# CONFIG_GAMEPORT is not set640+641+#642+# Character devices643+#644+CONFIG_VT=y645+CONFIG_VT_CONSOLE=y646+CONFIG_HW_CONSOLE=y647+# CONFIG_VT_HW_CONSOLE_BINDING is not set648+# CONFIG_SERIAL_NONSTANDARD is not set649+650+#651+# Serial drivers652+#653+# CONFIG_SERIAL_8250 is not set654+655+#656+# Non-8250 serial port support657+#658+CONFIG_SERIAL_PXA=y659+CONFIG_SERIAL_PXA_CONSOLE=y660+CONFIG_SERIAL_CORE=y661+CONFIG_SERIAL_CORE_CONSOLE=y662+CONFIG_UNIX98_PTYS=y663+CONFIG_LEGACY_PTYS=y664+CONFIG_LEGACY_PTY_COUNT=256665+666+#667+# IPMI668+#669+# CONFIG_IPMI_HANDLER is not set670+# CONFIG_WATCHDOG is not set671+CONFIG_HW_RANDOM=m672+# CONFIG_NVRAM is not set673+# CONFIG_R3964 is not set674+# CONFIG_RAW_DRIVER is not set675+676+#677+# TPM devices678+#679+# CONFIG_TCG_TPM is not set680+# CONFIG_I2C is not set681+682+#683+# SPI support684+#685+# CONFIG_SPI is not set686+# CONFIG_SPI_MASTER is not set687+688+#689+# Dallas's 1-wire bus690+#691+# CONFIG_W1 is not set692+# CONFIG_HWMON is not set693+694+#695+# Misc devices696+#697+698+#699+# Multifunction device drivers700+#701+# CONFIG_MFD_SM501 is not set702+703+#704+# LED devices705+#706+# CONFIG_NEW_LEDS is not set707+708+#709+# LED drivers710+#711+712+#713+# LED Triggers714+#715+716+#717+# Multimedia devices718+#719+# CONFIG_VIDEO_DEV is not set720+# CONFIG_DVB_CORE is not set721+# CONFIG_DAB is not set722+723+#724+# Graphics support725+#726+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set727+728+#729+# Display device support730+#731+# CONFIG_DISPLAY_SUPPORT is not set732+# CONFIG_VGASTATE is not set733+CONFIG_FB=y734+# CONFIG_FIRMWARE_EDID is not set735+# CONFIG_FB_DDC is not set736+CONFIG_FB_CFB_FILLRECT=y737+CONFIG_FB_CFB_COPYAREA=y738+CONFIG_FB_CFB_IMAGEBLIT=y739+# CONFIG_FB_SYS_FILLRECT is not set740+# CONFIG_FB_SYS_COPYAREA is not set741+# CONFIG_FB_SYS_IMAGEBLIT is not set742+# CONFIG_FB_SYS_FOPS is not set743+CONFIG_FB_DEFERRED_IO=y744+# CONFIG_FB_SVGALIB is not set745+# CONFIG_FB_MACMODES is not set746+# CONFIG_FB_BACKLIGHT is not set747+# CONFIG_FB_MODE_HELPERS is not set748+# CONFIG_FB_TILEBLITTING is not set749+750+#751+# Frame buffer hardware drivers752+#753+# CONFIG_FB_S1D13XXX is not set754+CONFIG_FB_PXA=y755+# CONFIG_FB_PXA_PARAMETERS is not set756+# CONFIG_FB_MBX is not set757+# CONFIG_FB_VIRTUAL is not set758+759+#760+# Console display driver support761+#762+# CONFIG_VGA_CONSOLE is not set763+CONFIG_DUMMY_CONSOLE=y764+CONFIG_FRAMEBUFFER_CONSOLE=y765+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set766+# CONFIG_FONTS is not set767+CONFIG_FONT_8x8=y768+CONFIG_FONT_8x16=y769+CONFIG_LOGO=y770+CONFIG_LOGO_LINUX_MONO=y771+CONFIG_LOGO_LINUX_VGA16=y772+CONFIG_LOGO_LINUX_CLUT224=y773+774+#775+# Sound776+#777+CONFIG_SOUND=m778+779+#780+# Advanced Linux Sound Architecture781+#782+CONFIG_SND=m783+CONFIG_SND_TIMER=m784+CONFIG_SND_PCM=m785+# CONFIG_SND_SEQUENCER is not set786+CONFIG_SND_OSSEMUL=y787+CONFIG_SND_MIXER_OSS=m788+CONFIG_SND_PCM_OSS=m789+CONFIG_SND_PCM_OSS_PLUGINS=y790+# CONFIG_SND_DYNAMIC_MINORS is not set791+CONFIG_SND_SUPPORT_OLD_API=y792+CONFIG_SND_VERBOSE_PROCFS=y793+# CONFIG_SND_VERBOSE_PRINTK is not set794+# CONFIG_SND_DEBUG is not set795+796+#797+# Generic devices798+#799+CONFIG_SND_AC97_CODEC=m800+# CONFIG_SND_DUMMY is not set801+# CONFIG_SND_MTPAV is not set802+# CONFIG_SND_SERIAL_U16550 is not set803+# CONFIG_SND_MPU401 is not set804+805+#806+# ALSA ARM devices807+#808+CONFIG_SND_PXA2XX_PCM=m809+CONFIG_SND_PXA2XX_AC97=m810+811+#812+# USB devices813+#814+# CONFIG_SND_USB_AUDIO is not set815+# CONFIG_SND_USB_CAIAQ is not set816+817+#818+# System on Chip audio support819+#820+# CONFIG_SND_SOC is not set821+822+#823+# Open Sound System824+#825+# CONFIG_SOUND_PRIME is not set826+CONFIG_AC97_BUS=m827+828+#829+# HID Devices830+#831+CONFIG_HID=y832+# CONFIG_HID_DEBUG is not set833+834+#835+# USB Input Devices836+#837+CONFIG_USB_HID=y838+# CONFIG_USB_HIDINPUT_POWERBOOK is not set839+# CONFIG_HID_FF is not set840+# CONFIG_USB_HIDDEV is not set841+842+#843+# USB support844+#845+CONFIG_USB_ARCH_HAS_HCD=y846+CONFIG_USB_ARCH_HAS_OHCI=y847+# CONFIG_USB_ARCH_HAS_EHCI is not set848+CONFIG_USB=y849+# CONFIG_USB_DEBUG is not set850+851+#852+# Miscellaneous USB options853+#854+CONFIG_USB_DEVICEFS=y855+# CONFIG_USB_DEVICE_CLASS is not set856+# CONFIG_USB_DYNAMIC_MINORS is not set857+# CONFIG_USB_SUSPEND is not set858+# CONFIG_USB_OTG is not set859+860+#861+# USB Host Controller Drivers862+#863+# CONFIG_USB_ISP116X_HCD is not set864+CONFIG_USB_OHCI_HCD=y865+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set866+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set867+CONFIG_USB_OHCI_LITTLE_ENDIAN=y868+# CONFIG_USB_SL811_HCD is not set869+870+#871+# USB Device Class drivers872+#873+# CONFIG_USB_ACM is not set874+# CONFIG_USB_PRINTER is not set875+876+#877+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'878+#879+880+#881+# may also be needed; see USB_STORAGE Help for more information882+#883+CONFIG_USB_STORAGE=y884+# CONFIG_USB_STORAGE_DEBUG is not set885+# CONFIG_USB_STORAGE_DATAFAB is not set886+# CONFIG_USB_STORAGE_FREECOM is not set887+# CONFIG_USB_STORAGE_DPCM is not set888+# CONFIG_USB_STORAGE_USBAT is not set889+# CONFIG_USB_STORAGE_SDDR09 is not set890+# CONFIG_USB_STORAGE_SDDR55 is not set891+# CONFIG_USB_STORAGE_JUMPSHOT is not set892+# CONFIG_USB_STORAGE_ALAUDA is not set893+# CONFIG_USB_STORAGE_KARMA is not set894+# CONFIG_USB_LIBUSUAL is not set895+896+#897+# USB Imaging devices898+#899+# CONFIG_USB_MDC800 is not set900+# CONFIG_USB_MICROTEK is not set901+# CONFIG_USB_MON is not set902+903+#904+# USB port drivers905+#906+907+#908+# USB Serial Converter support909+#910+# CONFIG_USB_SERIAL is not set911+912+#913+# USB Miscellaneous drivers914+#915+# CONFIG_USB_EMI62 is not set916+# CONFIG_USB_EMI26 is not set917+# CONFIG_USB_ADUTUX is not set918+# CONFIG_USB_AUERSWALD is not set919+# CONFIG_USB_RIO500 is not set920+# CONFIG_USB_LEGOTOWER is not set921+# CONFIG_USB_LCD is not set922+# CONFIG_USB_BERRY_CHARGE is not set923+# CONFIG_USB_LED is not set924+# CONFIG_USB_CYPRESS_CY7C63 is not set925+# CONFIG_USB_CYTHERM is not set926+# CONFIG_USB_PHIDGET is not set927+# CONFIG_USB_IDMOUSE is not set928+# CONFIG_USB_FTDI_ELAN is not set929+# CONFIG_USB_APPLEDISPLAY is not set930+# CONFIG_USB_LD is not set931+# CONFIG_USB_TRANCEVIBRATOR is not set932+# CONFIG_USB_IOWARRIOR is not set933+# CONFIG_USB_TEST is not set934+935+#936+# USB DSL modem support937+#938+939+#940+# USB Gadget Support941+#942+# CONFIG_USB_GADGET is not set943+CONFIG_MMC=m944+# CONFIG_MMC_DEBUG is not set945+# CONFIG_MMC_UNSAFE_RESUME is not set946+947+#948+# MMC/SD Card Drivers949+#950+CONFIG_MMC_BLOCK=m951+952+#953+# MMC/SD Host Controller Drivers954+#955+CONFIG_MMC_PXA=m956+957+#958+# Real Time Clock959+#960+CONFIG_RTC_LIB=y961+CONFIG_RTC_CLASS=m962+963+#964+# RTC interfaces965+#966+CONFIG_RTC_INTF_SYSFS=y967+CONFIG_RTC_INTF_PROC=y968+CONFIG_RTC_INTF_DEV=y969+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set970+# CONFIG_RTC_DRV_TEST is not set971+972+#973+# I2C RTC drivers974+#975+976+#977+# SPI RTC drivers978+#979+980+#981+# Platform RTC drivers982+#983+# CONFIG_RTC_DRV_CMOS is not set984+# CONFIG_RTC_DRV_DS1553 is not set985+# CONFIG_RTC_DRV_DS1742 is not set986+# CONFIG_RTC_DRV_M48T86 is not set987+CONFIG_RTC_DRV_V3020=m988+989+#990+# on-CPU RTC drivers991+#992+CONFIG_RTC_DRV_SA1100=m993+994+#995+# File systems996+#997+CONFIG_EXT2_FS=y998+# CONFIG_EXT2_FS_XATTR is not set999+# CONFIG_EXT2_FS_XIP is not set1000+CONFIG_EXT3_FS=y1001+CONFIG_EXT3_FS_XATTR=y1002+# CONFIG_EXT3_FS_POSIX_ACL is not set1003+# CONFIG_EXT3_FS_SECURITY is not set1004+# CONFIG_EXT4DEV_FS is not set1005+CONFIG_JBD=y1006+# CONFIG_JBD_DEBUG is not set1007+CONFIG_FS_MBCACHE=y1008+# CONFIG_REISERFS_FS is not set1009+# CONFIG_JFS_FS is not set1010+# CONFIG_FS_POSIX_ACL is not set1011+# CONFIG_XFS_FS is not set1012+# CONFIG_GFS2_FS is not set1013+# CONFIG_OCFS2_FS is not set1014+# CONFIG_MINIX_FS is not set1015+# CONFIG_ROMFS_FS is not set1016+CONFIG_INOTIFY=y1017+CONFIG_INOTIFY_USER=y1018+# CONFIG_QUOTA is not set1019+CONFIG_DNOTIFY=y1020+# CONFIG_AUTOFS_FS is not set1021+# CONFIG_AUTOFS4_FS is not set1022+# CONFIG_FUSE_FS is not set1023+1024+#1025+# CD-ROM/DVD Filesystems1026+#1027+# CONFIG_ISO9660_FS is not set1028+# CONFIG_UDF_FS is not set1029+1030+#1031+# DOS/FAT/NT Filesystems1032+#1033+CONFIG_FAT_FS=y1034+CONFIG_MSDOS_FS=y1035+CONFIG_VFAT_FS=y1036+CONFIG_FAT_DEFAULT_CODEPAGE=4371037+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"1038+# CONFIG_NTFS_FS is not set1039+1040+#1041+# Pseudo filesystems1042+#1043+CONFIG_PROC_FS=y1044+CONFIG_PROC_SYSCTL=y1045+CONFIG_SYSFS=y1046+CONFIG_TMPFS=y1047+# CONFIG_TMPFS_POSIX_ACL is not set1048+# CONFIG_HUGETLB_PAGE is not set1049+CONFIG_RAMFS=y1050+# CONFIG_CONFIGFS_FS is not set1051+1052+#1053+# Miscellaneous filesystems1054+#1055+# CONFIG_ADFS_FS is not set1056+# CONFIG_AFFS_FS is not set1057+# CONFIG_HFS_FS is not set1058+# CONFIG_HFSPLUS_FS is not set1059+# CONFIG_BEFS_FS is not set1060+# CONFIG_BFS_FS is not set1061+# CONFIG_EFS_FS is not set1062+CONFIG_JFFS2_FS=y1063+CONFIG_JFFS2_FS_DEBUG=01064+CONFIG_JFFS2_FS_WRITEBUFFER=y1065+CONFIG_JFFS2_SUMMARY=y1066+# CONFIG_JFFS2_FS_XATTR is not set1067+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set1068+CONFIG_JFFS2_ZLIB=y1069+CONFIG_JFFS2_RTIME=y1070+# CONFIG_JFFS2_RUBIN is not set1071+# CONFIG_CRAMFS is not set1072+# CONFIG_VXFS_FS is not set1073+# CONFIG_HPFS_FS is not set1074+# CONFIG_QNX4FS_FS is not set1075+# CONFIG_SYSV_FS is not set1076+# CONFIG_UFS_FS is not set1077+1078+#1079+# Network File Systems1080+#1081+CONFIG_NFS_FS=y1082+CONFIG_NFS_V3=y1083+# CONFIG_NFS_V3_ACL is not set1084+# CONFIG_NFS_V4 is not set1085+# CONFIG_NFS_DIRECTIO is not set1086+# CONFIG_NFSD is not set1087+CONFIG_ROOT_NFS=y1088+CONFIG_LOCKD=y1089+CONFIG_LOCKD_V4=y1090+CONFIG_NFS_COMMON=y1091+CONFIG_SUNRPC=y1092+# CONFIG_SUNRPC_BIND34 is not set1093+# CONFIG_RPCSEC_GSS_KRB5 is not set1094+# CONFIG_RPCSEC_GSS_SPKM3 is not set1095+CONFIG_SMB_FS=y1096+# CONFIG_SMB_NLS_DEFAULT is not set1097+# CONFIG_CIFS is not set1098+# CONFIG_NCP_FS is not set1099+# CONFIG_CODA_FS is not set1100+# CONFIG_AFS_FS is not set1101+# CONFIG_9P_FS is not set1102+1103+#1104+# Partition Types1105+#1106+# CONFIG_PARTITION_ADVANCED is not set1107+CONFIG_MSDOS_PARTITION=y1108+1109+#1110+# Native Language Support1111+#1112+CONFIG_NLS=y1113+CONFIG_NLS_DEFAULT="iso8859-1"1114+CONFIG_NLS_CODEPAGE_437=y1115+# CONFIG_NLS_CODEPAGE_737 is not set1116+# CONFIG_NLS_CODEPAGE_775 is not set1117+# CONFIG_NLS_CODEPAGE_850 is not set1118+# CONFIG_NLS_CODEPAGE_852 is not set1119+# CONFIG_NLS_CODEPAGE_855 is not set1120+# CONFIG_NLS_CODEPAGE_857 is not set1121+# CONFIG_NLS_CODEPAGE_860 is not set1122+# CONFIG_NLS_CODEPAGE_861 is not set1123+# CONFIG_NLS_CODEPAGE_862 is not set1124+# CONFIG_NLS_CODEPAGE_863 is not set1125+# CONFIG_NLS_CODEPAGE_864 is not set1126+# CONFIG_NLS_CODEPAGE_865 is not set1127+# CONFIG_NLS_CODEPAGE_866 is not set1128+# CONFIG_NLS_CODEPAGE_869 is not set1129+# CONFIG_NLS_CODEPAGE_936 is not set1130+# CONFIG_NLS_CODEPAGE_950 is not set1131+# CONFIG_NLS_CODEPAGE_932 is not set1132+# CONFIG_NLS_CODEPAGE_949 is not set1133+# CONFIG_NLS_CODEPAGE_874 is not set1134+# CONFIG_NLS_ISO8859_8 is not set1135+# CONFIG_NLS_CODEPAGE_1250 is not set1136+# CONFIG_NLS_CODEPAGE_1251 is not set1137+# CONFIG_NLS_ASCII is not set1138+CONFIG_NLS_ISO8859_1=y1139+# CONFIG_NLS_ISO8859_2 is not set1140+# CONFIG_NLS_ISO8859_3 is not set1141+# CONFIG_NLS_ISO8859_4 is not set1142+# CONFIG_NLS_ISO8859_5 is not set1143+# CONFIG_NLS_ISO8859_6 is not set1144+# CONFIG_NLS_ISO8859_7 is not set1145+# CONFIG_NLS_ISO8859_9 is not set1146+# CONFIG_NLS_ISO8859_13 is not set1147+# CONFIG_NLS_ISO8859_14 is not set1148+# CONFIG_NLS_ISO8859_15 is not set1149+# CONFIG_NLS_KOI8_R is not set1150+# CONFIG_NLS_KOI8_U is not set1151+CONFIG_NLS_UTF8=y1152+1153+#1154+# Distributed Lock Manager1155+#1156+# CONFIG_DLM is not set1157+1158+#1159+# Profiling support1160+#1161+# CONFIG_PROFILING is not set1162+1163+#1164+# Kernel hacking1165+#1166+# CONFIG_PRINTK_TIME is not set1167+CONFIG_ENABLE_MUST_CHECK=y1168+CONFIG_MAGIC_SYSRQ=y1169+# CONFIG_UNUSED_SYMBOLS is not set1170+# CONFIG_DEBUG_FS is not set1171+# CONFIG_HEADERS_CHECK is not set1172+CONFIG_DEBUG_KERNEL=y1173+# CONFIG_DEBUG_SHIRQ is not set1174+# CONFIG_DETECT_SOFTLOCKUP is not set1175+# CONFIG_SCHEDSTATS is not set1176+# CONFIG_TIMER_STATS is not set1177+# CONFIG_DEBUG_SLAB is not set1178+# CONFIG_DEBUG_RT_MUTEXES is not set1179+# CONFIG_RT_MUTEX_TESTER is not set1180+# CONFIG_DEBUG_SPINLOCK is not set1181+# CONFIG_DEBUG_MUTEXES is not set1182+# CONFIG_DEBUG_LOCK_ALLOC is not set1183+# CONFIG_PROVE_LOCKING is not set1184+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set1185+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set1186+# CONFIG_DEBUG_KOBJECT is not set1187+# CONFIG_DEBUG_BUGVERBOSE is not set1188+CONFIG_DEBUG_INFO=y1189+# CONFIG_DEBUG_VM is not set1190+# CONFIG_DEBUG_LIST is not set1191+CONFIG_FRAME_POINTER=y1192+CONFIG_FORCED_INLINING=y1193+# CONFIG_RCU_TORTURE_TEST is not set1194+# CONFIG_FAULT_INJECTION is not set1195+CONFIG_DEBUG_USER=y1196+CONFIG_DEBUG_ERRORS=y1197+CONFIG_DEBUG_LL=y1198+# CONFIG_DEBUG_ICEDCC is not set1199+1200+#1201+# Security options1202+#1203+# CONFIG_KEYS is not set1204+# CONFIG_SECURITY is not set1205+1206+#1207+# Cryptographic options1208+#1209+CONFIG_CRYPTO=y1210+CONFIG_CRYPTO_ALGAPI=m1211+CONFIG_CRYPTO_BLKCIPHER=m1212+CONFIG_CRYPTO_MANAGER=m1213+# CONFIG_CRYPTO_HMAC is not set1214+# CONFIG_CRYPTO_XCBC is not set1215+# CONFIG_CRYPTO_NULL is not set1216+# CONFIG_CRYPTO_MD4 is not set1217+# CONFIG_CRYPTO_MD5 is not set1218+# CONFIG_CRYPTO_SHA1 is not set1219+# CONFIG_CRYPTO_SHA256 is not set1220+# CONFIG_CRYPTO_SHA512 is not set1221+# CONFIG_CRYPTO_WP512 is not set1222+# CONFIG_CRYPTO_TGR192 is not set1223+# CONFIG_CRYPTO_GF128MUL is not set1224+CONFIG_CRYPTO_ECB=m1225+CONFIG_CRYPTO_CBC=m1226+CONFIG_CRYPTO_PCBC=m1227+# CONFIG_CRYPTO_LRW is not set1228+# CONFIG_CRYPTO_CRYPTD is not set1229+# CONFIG_CRYPTO_DES is not set1230+# CONFIG_CRYPTO_FCRYPT is not set1231+# CONFIG_CRYPTO_BLOWFISH is not set1232+# CONFIG_CRYPTO_TWOFISH is not set1233+# CONFIG_CRYPTO_SERPENT is not set1234+CONFIG_CRYPTO_AES=m1235+# CONFIG_CRYPTO_CAST5 is not set1236+# CONFIG_CRYPTO_CAST6 is not set1237+# CONFIG_CRYPTO_TEA is not set1238+CONFIG_CRYPTO_ARC4=m1239+# CONFIG_CRYPTO_KHAZAD is not set1240+# CONFIG_CRYPTO_ANUBIS is not set1241+# CONFIG_CRYPTO_DEFLATE is not set1242+# CONFIG_CRYPTO_MICHAEL_MIC is not set1243+# CONFIG_CRYPTO_CRC32C is not set1244+# CONFIG_CRYPTO_CAMELLIA is not set1245+# CONFIG_CRYPTO_TEST is not set1246+1247+#1248+# Hardware crypto devices1249+#1250+1251+#1252+# Library routines1253+#1254+CONFIG_BITREVERSE=y1255+# CONFIG_CRC_CCITT is not set1256+# CONFIG_CRC16 is not set1257+# CONFIG_CRC_ITU_T is not set1258+CONFIG_CRC32=y1259+# CONFIG_LIBCRC32C is not set1260+CONFIG_ZLIB_INFLATE=y1261+CONFIG_ZLIB_DEFLATE=y1262+CONFIG_PLIST=y1263+CONFIG_HAS_IOMEM=y1264+CONFIG_HAS_IOPORT=y1265+CONFIG_HAS_DMA=y
+5-5
arch/arm/configs/s3c2410_defconfig
···138CONFIG_PLAT_S3C24XX=y139CONFIG_CPU_S3C244X=y140CONFIG_PM_SIMTEC=y141-# CONFIG_S3C2410_BOOT_WATCHDOG is not set142-# CONFIG_S3C2410_BOOT_ERROR_RESET is not set143# CONFIG_S3C2410_PM_DEBUG is not set144# CONFIG_S3C2410_PM_CHECK is not set145-CONFIG_S3C2410_LOWLEVEL_UART_PORT=0146CONFIG_S3C2410_DMA=y147# CONFIG_S3C2410_DMA_DEBUG is not set148CONFIG_MACH_SMDK=y···1392# CONFIG_DEBUG_ERRORS is not set1393CONFIG_DEBUG_LL=y1394# CONFIG_DEBUG_ICEDCC is not set1395-CONFIG_DEBUG_S3C2410_PORT=y1396-CONFIG_DEBUG_S3C2410_UART=013971398#1399# Security options
···138CONFIG_PLAT_S3C24XX=y139CONFIG_CPU_S3C244X=y140CONFIG_PM_SIMTEC=y141+# CONFIG_S3C_BOOT_WATCHDOG is not set142+# CONFIG_S3C_BOOT_ERROR_RESET is not set143# CONFIG_S3C2410_PM_DEBUG is not set144# CONFIG_S3C2410_PM_CHECK is not set145+CONFIG_S3C_LOWLEVEL_UART_PORT=0146CONFIG_S3C2410_DMA=y147# CONFIG_S3C2410_DMA_DEBUG is not set148CONFIG_MACH_SMDK=y···1392# CONFIG_DEBUG_ERRORS is not set1393CONFIG_DEBUG_LL=y1394# CONFIG_DEBUG_ICEDCC is not set1395+CONFIG_DEBUG_S3C_PORT=y1396+CONFIG_DEBUG_S3C_UART=013971398#1399# Security options
+7
arch/arm/mach-iop32x/Kconfig
···42 Say N if the IOP is an add in card, the host system owns the PCI43 bus in this case.44000000045endmenu4647endif
···42 Say N if the IOP is an add in card, the host system owns the PCI43 bus in this case.4445+config MACH_EM721046+ bool "Enable support for the Lanner EM7210"47+ help48+ Say Y here if you want to run your kernel on the Lanner EM721049+ board. Say also Y here if you have a SS4000e Baxter Creek NAS50+ appliance."51+52endmenu5354endif
···63 if (machine_is_glantank() ||64 machine_is_iq80321() ||65 machine_is_iq31244() ||66- machine_is_n2100())067 *IOP3XX_PCIIRSR = 0x0f;6869 for (i = 0; i < NR_IRQS; i++) {
···63 if (machine_is_glantank() ||64 machine_is_iq80321() ||65 machine_is_iq31244() ||66+ machine_is_n2100() ||67+ machine_is_em7210())68 *IOP3XX_PCIIRSR = 0x0f;6970 for (i = 0; i < NR_IRQS; i++) {
+1-1
arch/arm/mach-ixp4xx/common.c
···188 *int_reg |= (int_style << (line * IXP4XX_GPIO_STYLE_SIZE));189190 /* Configure the line as an input */191- gpio_line_config(line, IXP4XX_GPIO_IN);192193 return 0;194}
···188 *int_reg |= (int_style << (line * IXP4XX_GPIO_STYLE_SIZE));189190 /* Configure the line as an input */191+ gpio_line_config(irq2gpio[irq], IXP4XX_GPIO_IN);192193 return 0;194}
···1+menu "MX3 Options"2+ depends on ARCH_MX33+4+config MACH_MX31ADS5+ bool "Support MX31ADS platforms"6+ default y7+ help8+ Include support for MX31ADS platform. This includes specific9+ configurations for the board and its peripherals.10+11+endmenu12+
+8
arch/arm/mach-mx3/Makefile
···00000000
···1+#2+# Makefile for the linux kernel.3+#4+5+# Object file lists.6+7+obj-y := mm.o time.o8+obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
···1+/*2+ * Copyright (C) 1999,2000 Arm Limited3+ * Copyright (C) 2000 Deep Blue Solutions Ltd4+ * Copyright (C) 2002 Shane Nay (shane@minirl.com)5+ * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.6+ * - add MX31 specific definitions7+ *8+ * This program is free software; you can redistribute it and/or modify9+ * it under the terms of the GNU General Public License as published by10+ * the Free Software Foundation; either version 2 of the License, or11+ * (at your option) any later version.12+ *13+ * This program is distributed in the hope that it will be useful,14+ * but WITHOUT ANY WARRANTY; without even the implied warranty of15+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the16+ * GNU General Public License for more details.17+ *18+ * You should have received a copy of the GNU General Public License19+ * along with this program; if not, write to the Free Software20+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA21+ */22+23+#include <linux/mm.h>24+#include <linux/init.h>25+#include <asm/hardware.h>26+#include <asm/pgtable.h>27+#include <asm/mach/map.h>28+#include <asm/arch/common.h>29+30+/*!31+ * @file mm.c32+ *33+ * @brief This file creates static virtual to physical mappings, common to all MX3 boards.34+ *35+ * @ingroup Memory36+ */37+38+/*!39+ * This table defines static virtual address mappings for I/O regions.40+ * These are the mappings common across all MX3 boards.41+ */42+static struct map_desc mxc_io_desc[] __initdata = {43+ {44+ .virtual = X_MEMC_BASE_ADDR_VIRT,45+ .pfn = __phys_to_pfn(X_MEMC_BASE_ADDR),46+ .length = X_MEMC_SIZE,47+ .type = MT_DEVICE48+ }, {49+ .virtual = AVIC_BASE_ADDR_VIRT,50+ .pfn = __phys_to_pfn(AVIC_BASE_ADDR),51+ .length = AVIC_SIZE,52+ .type = MT_NONSHARED_DEVICE53+ },54+};55+56+/*!57+ * This function initializes the memory map. It is called during the58+ * system startup to create static physical to virtual memory mappings59+ * for the IO modules.60+ */61+void __init mxc_map_io(void)62+{63+ iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc));64+}
···1+/*2+ * Copyright (C) 2000 Deep Blue Solutions Ltd3+ * Copyright (C) 2002 Shane Nay (shane@minirl.com)4+ * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.5+ *6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License as published by8+ * the Free Software Foundation; either version 2 of the License, or9+ * (at your option) any later version.10+ *11+ * This program is distributed in the hope that it will be useful,12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14+ * GNU General Public License for more details.15+ *16+ * You should have received a copy of the GNU General Public License17+ * along with this program; if not, write to the Free Software18+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA19+ */20+21+#include <linux/types.h>22+#include <linux/init.h>23+#include <linux/clk.h>24+#include <linux/serial_8250.h>25+26+#include <asm/hardware.h>27+#include <asm/mach-types.h>28+#include <asm/mach/arch.h>29+#include <asm/memory.h>30+#include <asm/mach/map.h>31+#include <asm/arch/common.h>32+33+/*!34+ * @file mx31ads.c35+ *36+ * @brief This file contains the board-specific initialization routines.37+ *38+ * @ingroup System39+ */40+41+#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)42+/*!43+ * The serial port definition structure.44+ */45+static struct plat_serial8250_port serial_platform_data[] = {46+ {47+ .membase = (void *)(PBC_BASE_ADDRESS + PBC_SC16C652_UARTA),48+ .mapbase = (unsigned long)(CS4_BASE_ADDR + PBC_SC16C652_UARTA),49+ .irq = EXPIO_INT_XUART_INTA,50+ .uartclk = 14745600,51+ .regshift = 0,52+ .iotype = UPIO_MEM,53+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ,54+ }, {55+ .membase = (void *)(PBC_BASE_ADDRESS + PBC_SC16C652_UARTB),56+ .mapbase = (unsigned long)(CS4_BASE_ADDR + PBC_SC16C652_UARTB),57+ .irq = EXPIO_INT_XUART_INTB,58+ .uartclk = 14745600,59+ .regshift = 0,60+ .iotype = UPIO_MEM,61+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ,62+ },63+ {},64+};65+66+static struct platform_device serial_device = {67+ .name = "serial8250",68+ .id = 0,69+ .dev = {70+ .platform_data = serial_platform_data,71+ },72+};73+74+static int __init mxc_init_extuart(void)75+{76+ return platform_device_register(&serial_device);77+}78+#else79+static inline int mxc_init_extuart(void)80+{81+ return 0;82+}83+#endif84+85+/*!86+ * This structure defines static mappings for the i.MX31ADS board.87+ */88+static struct map_desc mx31ads_io_desc[] __initdata = {89+ {90+ .virtual = AIPS1_BASE_ADDR_VIRT,91+ .pfn = __phys_to_pfn(AIPS1_BASE_ADDR),92+ .length = AIPS1_SIZE,93+ .type = MT_NONSHARED_DEVICE94+ }, {95+ .virtual = SPBA0_BASE_ADDR_VIRT,96+ .pfn = __phys_to_pfn(SPBA0_BASE_ADDR),97+ .length = SPBA0_SIZE,98+ .type = MT_NONSHARED_DEVICE99+ }, {100+ .virtual = AIPS2_BASE_ADDR_VIRT,101+ .pfn = __phys_to_pfn(AIPS2_BASE_ADDR),102+ .length = AIPS2_SIZE,103+ .type = MT_NONSHARED_DEVICE104+ }, {105+ .virtual = CS4_BASE_ADDR_VIRT,106+ .pfn = __phys_to_pfn(CS4_BASE_ADDR),107+ .length = CS4_SIZE / 2,108+ .type = MT_DEVICE109+ },110+};111+112+/*!113+ * Set up static virtual mappings.114+ */115+void __init mx31ads_map_io(void)116+{117+ mxc_map_io();118+ iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc));119+}120+121+/*!122+ * Board specific initialization.123+ */124+static void __init mxc_board_init(void)125+{126+ mxc_init_extuart();127+}128+129+/*130+ * The following uses standard kernel macros defined in arch.h in order to131+ * initialize __mach_desc_MX31ADS data structure.132+ */133+MACHINE_START(MX31ADS, "Freescale MX31ADS")134+ /* Maintainer: Freescale Semiconductor, Inc. */135+ .phys_io = AIPS1_BASE_ADDR,136+ .io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,137+ .boot_params = PHYS_OFFSET + 0x100,138+ .map_io = mx31ads_map_io,139+ .init_irq = mxc_init_irq,140+ .init_machine = mxc_board_init,141+ .timer = &mxc_timer,142+MACHINE_END
···1+/*2+ * System Timer Interrupt reconfigured to run in free-run mode.3+ * Author: Vitaly Wool4+ * Copyright 2004 MontaVista Software Inc.5+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.6+ */7+8+/*9+ * This program is free software; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License version 2 as11+ * published by the Free Software Foundation.12+ */13+14+/*!15+ * @file time.c16+ * @brief This file contains OS tick and wdog timer implementations.17+ *18+ * This file contains OS tick and wdog timer implementations.19+ *20+ * @ingroup Timers21+ */22+23+#include <linux/module.h>24+#include <linux/init.h>25+#include <linux/interrupt.h>26+#include <linux/irq.h>27+#include <asm/hardware.h>28+#include <asm/mach/time.h>29+#include <asm/io.h>30+#include <asm/arch/common.h>31+32+/*!33+ * This is the timer interrupt service routine to do required tasks.34+ * It also services the WDOG timer at the frequency of twice per WDOG35+ * timeout value. For example, if the WDOG's timeout value is 4 (236+ * seconds since the WDOG runs at 0.5Hz), it will be serviced once37+ * every 2/2=1 second.38+ *39+ * @param irq GPT interrupt source number (not used)40+ * @param dev_id this parameter is not used41+ * @return always returns \b IRQ_HANDLED as defined in42+ * include/linux/interrupt.h.43+ */44+static irqreturn_t mxc_timer_interrupt(int irq, void *dev_id)45+{46+ unsigned int next_match;47+48+ write_seqlock(&xtime_lock);49+50+ if (__raw_readl(MXC_GPT_GPTSR) & GPTSR_OF1) {51+ do {52+ timer_tick();53+ next_match = __raw_readl(MXC_GPT_GPTOCR1) + LATCH;54+ __raw_writel(GPTSR_OF1, MXC_GPT_GPTSR);55+ __raw_writel(next_match, MXC_GPT_GPTOCR1);56+ } while ((signed long)(next_match -57+ __raw_readl(MXC_GPT_GPTCNT)) <= 0);58+ }59+60+ write_sequnlock(&xtime_lock);61+62+ return IRQ_HANDLED;63+}64+65+/*!66+ * This function is used to obtain the number of microseconds since the last67+ * timer interrupt. Note that interrupts is disabled by do_gettimeofday().68+ *69+ * @return the number of microseconds since the last timer interrupt.70+ */71+static unsigned long mxc_gettimeoffset(void)72+{73+ unsigned long ticks_to_match, elapsed, usec, tick_usec, i;74+75+ /* Get ticks before next timer match */76+ ticks_to_match =77+ __raw_readl(MXC_GPT_GPTOCR1) - __raw_readl(MXC_GPT_GPTCNT);78+79+ /* We need elapsed ticks since last match */80+ elapsed = LATCH - ticks_to_match;81+82+ /* Now convert them to usec */83+ /* Insure no overflow when calculating the usec below */84+ for (i = 1, tick_usec = tick_nsec / 1000;; i *= 2) {85+ tick_usec /= i;86+ if ((0xFFFFFFFF / tick_usec) > elapsed)87+ break;88+ }89+ usec = (unsigned long)(elapsed * tick_usec) / (LATCH / i);90+91+ return usec;92+}93+94+/*!95+ * The OS tick timer interrupt structure.96+ */97+static struct irqaction timer_irq = {98+ .name = "MXC Timer Tick",99+ .flags = IRQF_DISABLED | IRQF_TIMER,100+ .handler = mxc_timer_interrupt101+};102+103+/*!104+ * This function is used to initialize the GPT to produce an interrupt105+ * based on HZ. It is called by start_kernel() during system startup.106+ */107+void __init mxc_init_time(void)108+{109+ u32 reg, v;110+ reg = __raw_readl(MXC_GPT_GPTCR);111+ reg &= ~GPTCR_ENABLE;112+ __raw_writel(reg, MXC_GPT_GPTCR);113+ reg |= GPTCR_SWR;114+ __raw_writel(reg, MXC_GPT_GPTCR);115+116+ while ((__raw_readl(MXC_GPT_GPTCR) & GPTCR_SWR) != 0)117+ cpu_relax();118+119+ reg = GPTCR_FRR | GPTCR_CLKSRC_HIGHFREQ;120+ __raw_writel(reg, MXC_GPT_GPTCR);121+122+ /* TODO: get timer rate from clk driver */123+ v = 66500000;124+125+ __raw_writel((v / CLOCK_TICK_RATE) - 1, MXC_GPT_GPTPR);126+127+ if ((v % CLOCK_TICK_RATE) != 0) {128+ pr_info("\nWARNING: Can't generate CLOCK_TICK_RATE at %d Hz\n",129+ CLOCK_TICK_RATE);130+ }131+ pr_info("Actual CLOCK_TICK_RATE is %d Hz\n",132+ v / ((__raw_readl(MXC_GPT_GPTPR) & 0xFFF) + 1));133+134+ reg = __raw_readl(MXC_GPT_GPTCNT);135+ reg += LATCH;136+ __raw_writel(reg, MXC_GPT_GPTOCR1);137+138+ setup_irq(MXC_INT_GPT, &timer_irq);139+140+ reg = __raw_readl(MXC_GPT_GPTCR);141+ reg =142+ GPTCR_FRR | GPTCR_CLKSRC_HIGHFREQ | GPTCR_STOPEN | GPTCR_DOZEN |143+ GPTCR_WAITEN | GPTCR_ENMOD | GPTCR_ENABLE;144+ __raw_writel(reg, MXC_GPT_GPTCR);145+146+ __raw_writel(GPTIR_OF1IE, MXC_GPT_GPTIR);147+}148+149+struct sys_timer mxc_timer = {150+ .init = mxc_init_time,151+ .offset = mxc_gettimeoffset,152+};
···24#include <asm/arch/lubbock.h>25#include <asm/mach/time.h>2627-28-/*29- * Debug macros30- */31-#undef DEBUG32-33-#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x34-#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x]35-36-#define RESTORE_GPLEVEL(n) do { \37- GPSR##n = sleep_save[SLEEP_SAVE_GPLR##n]; \38- GPCR##n = ~sleep_save[SLEEP_SAVE_GPLR##n]; \39-} while (0)40-41-/*42- * List of global PXA peripheral registers to preserve.43- * More ones like CP and general purpose register values are preserved44- * with the stack pointer in sleep.S.45- */46-enum { SLEEP_SAVE_START = 0,47-48- SLEEP_SAVE_GPLR0, SLEEP_SAVE_GPLR1, SLEEP_SAVE_GPLR2, SLEEP_SAVE_GPLR3,49- SLEEP_SAVE_GPDR0, SLEEP_SAVE_GPDR1, SLEEP_SAVE_GPDR2, SLEEP_SAVE_GPDR3,50- SLEEP_SAVE_GRER0, SLEEP_SAVE_GRER1, SLEEP_SAVE_GRER2, SLEEP_SAVE_GRER3,51- SLEEP_SAVE_GFER0, SLEEP_SAVE_GFER1, SLEEP_SAVE_GFER2, SLEEP_SAVE_GFER3,52- SLEEP_SAVE_PGSR0, SLEEP_SAVE_PGSR1, SLEEP_SAVE_PGSR2, SLEEP_SAVE_PGSR3,53-54- SLEEP_SAVE_GAFR0_L, SLEEP_SAVE_GAFR0_U,55- SLEEP_SAVE_GAFR1_L, SLEEP_SAVE_GAFR1_U,56- SLEEP_SAVE_GAFR2_L, SLEEP_SAVE_GAFR2_U,57- SLEEP_SAVE_GAFR3_L, SLEEP_SAVE_GAFR3_U,58-59- SLEEP_SAVE_PSTR,60-61- SLEEP_SAVE_ICMR,62- SLEEP_SAVE_CKEN,63-64-#ifdef CONFIG_PXA27x65- SLEEP_SAVE_MDREFR,66- SLEEP_SAVE_PWER, SLEEP_SAVE_PCFR, SLEEP_SAVE_PRER,67- SLEEP_SAVE_PFER, SLEEP_SAVE_PKWR,68-#endif69-70- SLEEP_SAVE_CKSUM,71-72- SLEEP_SAVE_SIZE73-};74-7576int pxa_pm_enter(suspend_state_t state)77{78- unsigned long sleep_save[SLEEP_SAVE_SIZE];79- unsigned long checksum = 0;80 int i;81- extern void pxa_cpu_pm_enter(suspend_state_t state);8283#ifdef CONFIG_IWMMXT84 /* force any iWMMXt context to ram **/···38 iwmmxt_task_disable(NULL);39#endif4041- SAVE(GPLR0); SAVE(GPLR1); SAVE(GPLR2);42- SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2);43- SAVE(GRER0); SAVE(GRER1); SAVE(GRER2);44- SAVE(GFER0); SAVE(GFER1); SAVE(GFER2);45- SAVE(PGSR0); SAVE(PGSR1); SAVE(PGSR2);46-47- SAVE(GAFR0_L); SAVE(GAFR0_U);48- SAVE(GAFR1_L); SAVE(GAFR1_U);49- SAVE(GAFR2_L); SAVE(GAFR2_U);50-51-#ifdef CONFIG_PXA27x52- SAVE(MDREFR);53- SAVE(GPLR3); SAVE(GPDR3); SAVE(GRER3); SAVE(GFER3); SAVE(PGSR3);54- SAVE(GAFR3_L); SAVE(GAFR3_U);55- SAVE(PWER); SAVE(PCFR); SAVE(PRER);56- SAVE(PFER); SAVE(PKWR);57-#endif58-59- SAVE(ICMR);60- ICMR = 0;61-62- SAVE(CKEN);63- SAVE(PSTR);64-65- /* Note: wake up source are set up in each machine specific files */66-67- /* clear GPIO transition detect bits */68- GEDR0 = GEDR0; GEDR1 = GEDR1; GEDR2 = GEDR2;69-#ifdef CONFIG_PXA27x70- GEDR3 = GEDR3;71-#endif7273 /* Clear sleep reset status */74 RCSR = RCSR_SMR;7576 /* before sleeping, calculate and save a checksum */77- for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++)78- checksum += sleep_save[i];79- sleep_save[SLEEP_SAVE_CKSUM] = checksum;8081 /* *** go zzz *** */82- pxa_cpu_pm_enter(state);83-84 cpu_init();8586 /* after sleeping, validate the checksum */87- checksum = 0;88- for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++)89 checksum += sleep_save[i];9091 /* if invalid, display message and wait for a hardware reset */92- if (checksum != sleep_save[SLEEP_SAVE_CKSUM]) {93#ifdef CONFIG_ARCH_LUBBOCK94 LUB_HEXLED = 0xbadbadc5;95#endif96 while (1)97- pxa_cpu_pm_enter(state);98 }99100- /* ensure not to come back here if it wasn't intended */101- PSPR = 0;102103- /* restore registers */104- RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);105- RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);106- RESTORE(GAFR0_L); RESTORE(GAFR0_U);107- RESTORE(GAFR1_L); RESTORE(GAFR1_U);108- RESTORE(GAFR2_L); RESTORE(GAFR2_U);109- RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2);110- RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2);111- RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2);112-113-#ifdef CONFIG_PXA27x114- RESTORE(MDREFR);115- RESTORE_GPLEVEL(3); RESTORE(GPDR3);116- RESTORE(GAFR3_L); RESTORE(GAFR3_U);117- RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3);118- RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER);119- RESTORE(PFER); RESTORE(PKWR);120-#endif121-122- PSSR = PSSR_RDH | PSSR_PH;123-124- RESTORE(CKEN);125-126- ICLR = 0;127- ICCR = 1;128- RESTORE(ICMR);129-130- RESTORE(PSTR);131-132-#ifdef DEBUG133- printk(KERN_DEBUG "*** made it back from resume\n");134-#endif135136 return 0;137}···77{78 return virt_to_phys(sp);79}00000000000000000000000000000000
···24#include <asm/arch/lubbock.h>25#include <asm/mach/time.h>2627+struct pxa_cpu_pm_fns *pxa_cpu_pm_fns;28+static unsigned long *sleep_save;00000000000000000000000000000000000000000000002930int pxa_pm_enter(suspend_state_t state)31{32+ unsigned long sleep_save_checksum = 0, checksum = 0;033 int i;03435#ifdef CONFIG_IWMMXT36 /* force any iWMMXt context to ram **/···86 iwmmxt_task_disable(NULL);87#endif8889+ pxa_cpu_pm_fns->save(sleep_save);0000000000000000000000000000009091 /* Clear sleep reset status */92 RCSR = RCSR_SMR;9394 /* before sleeping, calculate and save a checksum */95+ for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)96+ sleep_save_checksum += sleep_save[i];09798 /* *** go zzz *** */99+ pxa_cpu_pm_fns->enter(state);0100 cpu_init();101102 /* after sleeping, validate the checksum */103+ for (i = 0; i < pxa_cpu_pm_fns->save_size - 1; i++)0104 checksum += sleep_save[i];105106 /* if invalid, display message and wait for a hardware reset */107+ if (checksum != sleep_save_checksum) {108#ifdef CONFIG_ARCH_LUBBOCK109 LUB_HEXLED = 0xbadbadc5;110#endif111 while (1)112+ pxa_cpu_pm_fns->enter(state);113 }114115+ pxa_cpu_pm_fns->restore(sleep_save);0116117+ pr_debug("*** made it back from resume\n");0000000000000000000000000000000118119 return 0;120}···190{191 return virt_to_phys(sp);192}193+194+static int pxa_pm_valid(suspend_state_t state)195+{196+ if (pxa_cpu_pm_fns)197+ return pxa_cpu_pm_fns->valid(state);198+199+ return -EINVAL;200+}201+202+static struct pm_ops pxa_pm_ops = {203+ .valid = pxa_pm_valid,204+ .enter = pxa_pm_enter,205+};206+207+static int __init pxa_pm_init(void)208+{209+ if (!pxa_cpu_pm_fns) {210+ printk(KERN_ERR "no valid pxa_cpu_pm_fns defined\n");211+ return -EINVAL;212+ }213+214+ sleep_save = kmalloc(pxa_cpu_pm_fns->save_size, GFP_KERNEL);215+ if (!sleep_save) {216+ printk(KERN_ERR "failed to alloc memory for pm save\n");217+ return -ENOMEM;218+ }219+220+ pm_set_ops(&pxa_pm_ops);221+ return 0;222+}223+224+device_initcall(pxa_pm_init);
+92-19
arch/arm/mach-pxa/pxa25x.c
···110111#ifdef CONFIG_PM112113-void pxa_cpu_pm_enter(suspend_state_t state)114-{115- extern void pxa_cpu_suspend(unsigned int);116- extern void pxa_cpu_resume(void);1170000000000000000000000000000000000000000000000000000000000000000000118 CKEN = 0;119120 switch (state) {121 case PM_SUSPEND_MEM:122 /* set resume return address */123 PSPR = virt_to_phys(pxa_cpu_resume);124- pxa_cpu_suspend(PWRMODE_SLEEP);125 break;126 }127}128129-static struct pm_ops pxa25x_pm_ops = {130- .enter = pxa_pm_enter,131 .valid = pm_valid_only_mem,000132};00000133#endif134135void __init pxa25x_init_irq(void)···212}213214static struct platform_device *pxa25x_devices[] __initdata = {215- &pxamci_device,216- &pxaudc_device,217- &pxafb_device,218- &ffuart_device,219- &btuart_device,220- &stuart_device,221- &pxai2c_device,222- &pxai2s_device,223- &pxaficp_device,224- &pxartc_device,225};226227static int __init pxa25x_init(void)···232 if ((ret = pxa_init_dma(16)))233 return ret;234#ifdef CONFIG_PM235- pm_set_ops(&pxa25x_pm_ops);236#endif237 ret = platform_add_devices(pxa25x_devices,238 ARRAY_SIZE(pxa25x_devices));239 }240 /* Only add HWUART for PXA255/26x; PXA210/250/27x do not have it. */241 if (cpu_is_pxa25x())242- ret = platform_device_register(&hwuart_device);243244 return ret;245}
···110111#ifdef CONFIG_PM112113+#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x114+#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x]00115116+#define RESTORE_GPLEVEL(n) do { \117+ GPSR##n = sleep_save[SLEEP_SAVE_GPLR##n]; \118+ GPCR##n = ~sleep_save[SLEEP_SAVE_GPLR##n]; \119+} while (0)120+121+/*122+ * List of global PXA peripheral registers to preserve.123+ * More ones like CP and general purpose register values are preserved124+ * with the stack pointer in sleep.S.125+ */126+enum { SLEEP_SAVE_START = 0,127+128+ SLEEP_SAVE_GPLR0, SLEEP_SAVE_GPLR1, SLEEP_SAVE_GPLR2,129+ SLEEP_SAVE_GPDR0, SLEEP_SAVE_GPDR1, SLEEP_SAVE_GPDR2,130+ SLEEP_SAVE_GRER0, SLEEP_SAVE_GRER1, SLEEP_SAVE_GRER2,131+ SLEEP_SAVE_GFER0, SLEEP_SAVE_GFER1, SLEEP_SAVE_GFER2,132+ SLEEP_SAVE_PGSR0, SLEEP_SAVE_PGSR1, SLEEP_SAVE_PGSR2,133+134+ SLEEP_SAVE_GAFR0_L, SLEEP_SAVE_GAFR0_U,135+ SLEEP_SAVE_GAFR1_L, SLEEP_SAVE_GAFR1_U,136+ SLEEP_SAVE_GAFR2_L, SLEEP_SAVE_GAFR2_U,137+138+ SLEEP_SAVE_PSTR,139+140+ SLEEP_SAVE_ICMR,141+ SLEEP_SAVE_CKEN,142+143+ SLEEP_SAVE_SIZE144+};145+146+147+static void pxa25x_cpu_pm_save(unsigned long *sleep_save)148+{149+ SAVE(GPLR0); SAVE(GPLR1); SAVE(GPLR2);150+ SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2);151+ SAVE(GRER0); SAVE(GRER1); SAVE(GRER2);152+ SAVE(GFER0); SAVE(GFER1); SAVE(GFER2);153+ SAVE(PGSR0); SAVE(PGSR1); SAVE(PGSR2);154+155+ SAVE(GAFR0_L); SAVE(GAFR0_U);156+ SAVE(GAFR1_L); SAVE(GAFR1_U);157+ SAVE(GAFR2_L); SAVE(GAFR2_U);158+159+ SAVE(ICMR);160+ SAVE(CKEN);161+ SAVE(PSTR);162+}163+164+static void pxa25x_cpu_pm_restore(unsigned long *sleep_save)165+{166+ /* restore registers */167+ RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);168+ RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);169+ RESTORE(GAFR0_L); RESTORE(GAFR0_U);170+ RESTORE(GAFR1_L); RESTORE(GAFR1_U);171+ RESTORE(GAFR2_L); RESTORE(GAFR2_U);172+ RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2);173+ RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2);174+ RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2);175+176+ RESTORE(CKEN);177+ RESTORE(ICMR);178+ RESTORE(PSTR);179+}180+181+static void pxa25x_cpu_pm_enter(suspend_state_t state)182+{183 CKEN = 0;184185 switch (state) {186 case PM_SUSPEND_MEM:187 /* set resume return address */188 PSPR = virt_to_phys(pxa_cpu_resume);189+ pxa25x_cpu_suspend(PWRMODE_SLEEP);190 break;191 }192}193194+static struct pxa_cpu_pm_fns pxa25x_cpu_pm_fns = {195+ .save_size = SLEEP_SAVE_SIZE,196 .valid = pm_valid_only_mem,197+ .save = pxa25x_cpu_pm_save,198+ .restore = pxa25x_cpu_pm_restore,199+ .enter = pxa25x_cpu_pm_enter,200};201+202+static void __init pxa25x_init_pm(void)203+{204+ pxa_cpu_pm_fns = &pxa25x_cpu_pm_fns;205+}206#endif207208void __init pxa25x_init_irq(void)···139}140141static struct platform_device *pxa25x_devices[] __initdata = {142+ &pxa_device_mci,143+ &pxa_device_udc,144+ &pxa_device_fb,145+ &pxa_device_ffuart,146+ &pxa_device_btuart,147+ &pxa_device_stuart,148+ &pxa_device_i2c,149+ &pxa_device_i2s,150+ &pxa_device_ficp,151+ &pxa_device_rtc,152};153154static int __init pxa25x_init(void)···159 if ((ret = pxa_init_dma(16)))160 return ret;161#ifdef CONFIG_PM162+ pxa25x_init_pm();163#endif164 ret = platform_add_devices(pxa25x_devices,165 ARRAY_SIZE(pxa25x_devices));166 }167 /* Only add HWUART for PXA255/26x; PXA210/250/27x do not have it. */168 if (cpu_is_pxa25x())169+ ret = platform_device_register(&pxa_device_hwuart);170171 return ret;172}
···1718#include <asm/arch/pxa-regs.h>1920-#ifdef CONFIG_PXA27x // workaround for Errata 5021#define MDREFR_KDIV 0x200a4000 // all banks22#define CCCR_SLEEP 0x00000107 // L=7 2N=2 A=0 PPDIS=0 CPDIS=023-#endif2425 .text2627-/*28- * pxa_cpu_suspend()29- *30- * Forces CPU into sleep state.31- *32- * r0 = value for PWRMODE M field for desired sleep state33- */34-35-ENTRY(pxa_cpu_suspend)36-37-#ifndef CONFIG_IWMMXT38- mra r2, r3, acc039-#endif40- stmfd sp!, {r2 - r12, lr} @ save registers on stack41-42 @ get coprocessor registers43 mrc p14, 0, r3, c6, c0, 0 @ clock configuration, for turbo mode44 mrc p15, 0, r4, c15, c1, 0 @ CP access reg···38 mov r10, sp39 stmfd sp!, {r3 - r10}4041- mov r5, r0 @ save sleep mode0042 @ preserve phys address of stack43 mov r0, sp044 bl sleep_phys_sp45 ldr r1, =sleep_save_sp46 str r0, [r1]0000000000000000000004748 @ clean data cache49 bl xscale_flush_kern_cache_all···88 @ enable SDRAM self-refresh mode89 orr r5, r5, #MDREFR_SLFRSH9091-#ifdef CONFIG_PXA27x92 @ set SDCLKx divide-by-2 bits (this is part of a workaround for Errata 50)93 ldr r6, =MDREFR_KDIV94 orr r5, r5, r695-#endif9697-#ifdef CONFIG_PXA25x0000000000000000000000000000000000000000000098 @ Intel PXA255 Specification Update notes problems99 @ about suspending with PXBus operating above 133MHz100 @ (see Errata 31, GPIO output signals, ... unpredictable in sleep···168 mov r0, #0169 mcr p14, 0, r0, c6, c0, 0170 orr r0, r0, #2 @ initiate change bit171-#endif172-#ifdef CONFIG_PXA27x173- @ Intel PXA270 Specification Update notes problems sleeping174- @ with core operating above 91 MHz175- @ (see Errata 50, ...processor does not exit from sleep...)176-177- ldr r6, =CCCR178- ldr r8, [r6] @ keep original value for resume179-180- ldr r7, =CCCR_SLEEP @ prepare CCCR sleep value181- mov r0, #0x2 @ prepare value for CLKCFG182-#endif183-184- @ align execution to a cache line185- b 1f186187 .ltorg188 .align 5189-1:190191 @ All needed values are now in registers.192 @ These last instructions should be in cache193194-#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)195 @ initiate the frequency change...196 str r7, [r6]197 mcr p14, 0, r0, c6, c0, 0···190 mov r0, #4219110: subs r0, r0, #1192 bne 10b193-#endif194195 @ Do not reorder...196 @ Intel PXA270 Specification Update notes problems performing
···1718#include <asm/arch/pxa-regs.h>19020#define MDREFR_KDIV 0x200a4000 // all banks21#define CCCR_SLEEP 0x00000107 // L=7 2N=2 A=0 PPDIS=0 CPDIS=002223 .text2425+pxa_cpu_save_cp:0000000000000026 @ get coprocessor registers27 mrc p14, 0, r3, c6, c0, 0 @ clock configuration, for turbo mode28 mrc p15, 0, r4, c15, c1, 0 @ CP access reg···54 mov r10, sp55 stmfd sp!, {r3 - r10}5657+ mov pc, lr58+59+pxa_cpu_save_sp:60 @ preserve phys address of stack61 mov r0, sp62+ mov r2, lr63 bl sleep_phys_sp64 ldr r1, =sleep_save_sp65 str r0, [r1]66+ mov pc, r267+68+/*69+ * pxa27x_cpu_suspend()70+ *71+ * Forces CPU into sleep state.72+ *73+ * r0 = value for PWRMODE M field for desired sleep state74+ */75+76+ENTRY(pxa27x_cpu_suspend)77+78+#ifndef CONFIG_IWMMXT79+ mra r2, r3, acc080+#endif81+ stmfd sp!, {r2 - r12, lr} @ save registers on stack82+83+ bl pxa_cpu_save_cp84+85+ mov r5, r0 @ save sleep mode86+ bl pxa_cpu_save_sp8788 @ clean data cache89 bl xscale_flush_kern_cache_all···80 @ enable SDRAM self-refresh mode81 orr r5, r5, #MDREFR_SLFRSH82083 @ set SDCLKx divide-by-2 bits (this is part of a workaround for Errata 50)84 ldr r6, =MDREFR_KDIV85 orr r5, r5, r608687+ @ Intel PXA270 Specification Update notes problems sleeping88+ @ with core operating above 91 MHz89+ @ (see Errata 50, ...processor does not exit from sleep...)90+91+ ldr r6, =CCCR92+ ldr r8, [r6] @ keep original value for resume93+94+ ldr r7, =CCCR_SLEEP @ prepare CCCR sleep value95+ mov r0, #0x2 @ prepare value for CLKCFG96+97+ @ align execution to a cache line98+ b pxa_cpu_do_suspend99+100+/*101+ * pxa27x_cpu_suspend()102+ *103+ * Forces CPU into sleep state.104+ *105+ * r0 = value for PWRMODE M field for desired sleep state106+ */107+108+ENTRY(pxa25x_cpu_suspend)109+ stmfd sp!, {r2 - r12, lr} @ save registers on stack110+111+ bl pxa_cpu_save_cp112+113+ mov r5, r0 @ save sleep mode114+ bl pxa_cpu_save_sp115+116+ @ clean data cache117+ bl xscale_flush_kern_cache_all118+119+ @ prepare value for sleep mode120+ mov r1, r5 @ sleep mode121+122+ @ prepare pointer to physical address 0 (virtual mapping in generic.c)123+ mov r2, #UNCACHED_PHYS_0124+125+ @ prepare SDRAM refresh settings126+ ldr r4, =MDREFR127+ ldr r5, [r4]128+129+ @ enable SDRAM self-refresh mode130+ orr r5, r5, #MDREFR_SLFRSH131+132 @ Intel PXA255 Specification Update notes problems133 @ about suspending with PXBus operating above 133MHz134 @ (see Errata 31, GPIO output signals, ... unpredictable in sleep···118 mov r0, #0119 mcr p14, 0, r0, c6, c0, 0120 orr r0, r0, #2 @ initiate change bit121+ b pxa_cpu_do_suspend00000000000000122123 .ltorg124 .align 5125+pxa_cpu_do_suspend:126127 @ All needed values are now in registers.128 @ These last instructions should be in cache1290130 @ initiate the frequency change...131 str r7, [r6]132 mcr p14, 0, r0, c6, c0, 0···155 mov r0, #4215610: subs r0, r0, #1157 bne 10b0158159 @ Do not reorder...160 @ Intel PXA270 Specification Update notes problems performing
+127-129
arch/arm/mach-pxa/time.c
···1/*2 * arch/arm/mach-pxa/time.c3 *4- * Author: Nicolas Pitre5- * Created: Jun 15, 20016- * Copyright: MontaVista Software Inc.007 *8 * This program is free software; you can redistribute it and/or modify9 * it under the terms of the GNU General Public License version 2 as···1415#include <linux/kernel.h>16#include <linux/init.h>17-#include <linux/delay.h>18#include <linux/interrupt.h>19-#include <linux/time.h>20-#include <linux/signal.h>21-#include <linux/errno.h>22-#include <linux/sched.h>23-#include <linux/clocksource.h>2425-#include <asm/system.h>26-#include <asm/hardware.h>27-#include <asm/io.h>28-#include <asm/leds.h>29-#include <asm/irq.h>30#include <asm/mach/irq.h>31#include <asm/mach/time.h>32#include <asm/arch/pxa-regs.h>3334-35-static int pxa_set_rtc(void)36-{37- unsigned long current_time = xtime.tv_sec;38-39- if (RTSR & RTSR_ALE) {40- /* make sure not to forward the clock over an alarm */41- unsigned long alarm = RTAR;42- if (current_time >= alarm && alarm >= RCNR)43- return -ERESTARTSYS;44- }45- RCNR = current_time;46- return 0;47-}48-49-#ifdef CONFIG_NO_IDLE_HZ50-static unsigned long initial_match;51-static int match_posponed;52-#endif53-54static irqreturn_t55-pxa_timer_interrupt(int irq, void *dev_id)56{57 int next_match;05859- write_seqlock(&xtime_lock);60-61-#ifdef CONFIG_NO_IDLE_HZ62- if (match_posponed) {63- match_posponed = 0;64- OSMR0 = initial_match;65- }66-#endif67-68- /* Loop until we get ahead of the free running timer.69- * This ensures an exact clock tick count and time accuracy.70- * Since IRQs are disabled at this point, coherence between71- * lost_ticks(updated in do_timer()) and the match reg value is72- * ensured, hence we can use do_gettimeofday() from interrupt73- * handlers.74- *75- * HACK ALERT: it seems that the PXA timer regs aren't updated right76- * away in all cases when a write occurs. We therefore compare with77- * 8 instead of 0 in the while() condition below to avoid missing a78- * match if OSCR has already reached the next OSMR value.79- * Experience has shown that up to 6 ticks are needed to work around80- * this problem, but let's use 8 to be conservative. Note that this81- * affect things only when the timer IRQ has been delayed by nearly82- * exactly one tick period which should be a pretty rare event.00000000083 */084 do {85- timer_tick();86- OSSR = OSSR_M0; /* Clear match on timer 0 */87 next_match = (OSMR0 += LATCH);88- } while( (signed long)(next_match - OSCR) <= 8 );89-90- write_sequnlock(&xtime_lock);09192 return IRQ_HANDLED;93}9495-static struct irqaction pxa_timer_irq = {96- .name = "PXA Timer Tick",97- .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,98- .handler = pxa_timer_interrupt,0000000000000000000000000000000000000000000000099};100101-static cycle_t pxa_get_cycles(void)102{103 return OSCR;104}105106-static struct clocksource clocksource_pxa = {107- .name = "pxa_timer",108 .rating = 200,109- .read = pxa_get_cycles,110 .mask = CLOCKSOURCE_MASK(32),111 .shift = 20,112 .flags = CLOCK_SOURCE_IS_CONTINUOUS,113};1140000000115static void __init pxa_timer_init(void)116{117- struct timespec tv;118- unsigned long flags;119120- set_rtc = pxa_set_rtc;00000121122- OIER = 0; /* disable any timer interrupts */123- OSSR = 0xf; /* clear status on all timers */124- setup_irq(IRQ_OST0, &pxa_timer_irq);125- local_irq_save(flags);126- OIER = OIER_E0; /* enable match on timer 0 to cause interrupts */127- OSMR0 = OSCR + LATCH; /* set initial match */128- local_irq_restore(flags);129130- /*131- * OSCR runs continuously on PXA and is not written to,132- * so we can use it as clock source directly.133- */134- clocksource_pxa.mult =135- clocksource_hz2mult(CLOCK_TICK_RATE, clocksource_pxa.shift);136- clocksource_register(&clocksource_pxa);137}138-139-#ifdef CONFIG_NO_IDLE_HZ140-static int pxa_dyn_tick_enable_disable(void)141-{142- /* nothing to do */143- return 0;144-}145-146-static void pxa_dyn_tick_reprogram(unsigned long ticks)147-{148- if (ticks > 1) {149- initial_match = OSMR0;150- OSMR0 = initial_match + ticks * LATCH;151- match_posponed = 1;152- }153-}154-155-static irqreturn_t156-pxa_dyn_tick_handler(int irq, void *dev_id)157-{158- if (match_posponed) {159- match_posponed = 0;160- OSMR0 = initial_match;161- if ( (signed long)(initial_match - OSCR) <= 8 )162- return pxa_timer_interrupt(irq, dev_id);163- }164- return IRQ_NONE;165-}166-167-static struct dyn_tick_timer pxa_dyn_tick = {168- .enable = pxa_dyn_tick_enable_disable,169- .disable = pxa_dyn_tick_enable_disable,170- .reprogram = pxa_dyn_tick_reprogram,171- .handler = pxa_dyn_tick_handler,172-};173-#endif174175#ifdef CONFIG_PM176static unsigned long osmr[4], oier;···189 OIER = oier;190191 /*192- * OSMR0 is the system timer: make sure OSCR is sufficiently behind000193 */194 OSCR = OSMR0 - LATCH;195}···205 .init = pxa_timer_init,206 .suspend = pxa_timer_suspend,207 .resume = pxa_timer_resume,208-#ifdef CONFIG_NO_IDLE_HZ209- .dyn_tick = &pxa_dyn_tick,210-#endif211};
···1/*2 * arch/arm/mach-pxa/time.c3 *4+ * PXA clocksource, clockevents, and OST interrupt handlers.5+ * Copyright (c) 2007 by Bill Gatliff <bgat@billgatliff.com>.6+ *7+ * Derived from Nicolas Pitre's PXA timer handler Copyright (c) 20018+ * by MontaVista Software, Inc. (Nico, your code rocks!)9 *10 * This program is free software; you can redistribute it and/or modify11 * it under the terms of the GNU General Public License version 2 as···1213#include <linux/kernel.h>14#include <linux/init.h>015#include <linux/interrupt.h>16+#include <linux/clockchips.h>0000170000018#include <asm/mach/irq.h>19#include <asm/mach/time.h>20#include <asm/arch/pxa-regs.h>210000000000000000000022static irqreturn_t23+pxa_ost0_interrupt(int irq, void *dev_id)24{25 int next_match;26+ struct clock_event_device *c = dev_id;2728+ if (c->mode == CLOCK_EVT_MODE_ONESHOT) {29+ /* Disarm the compare/match, signal the event. */30+ OIER &= ~OIER_E0;31+ c->event_handler(c);32+ } else if (c->mode == CLOCK_EVT_MODE_PERIODIC) {33+ /* Call the event handler as many times as necessary34+ * to recover missed events, if any (if we update35+ * OSMR0 and OSCR0 is still ahead of us, we've missed36+ * the event). As we're dealing with that, re-arm the37+ * compare/match for the next event.38+ *39+ * HACK ALERT:40+ *41+ * There's a latency between the instruction that42+ * writes to OSMR0 and the actual commit to the43+ * physical hardware, because the CPU doesn't (have44+ * to) run at bus speed, there's a write buffer45+ * between the CPU and the bus, etc. etc. So if the46+ * target OSCR0 is "very close", to the OSMR0 load47+ * value, the update to OSMR0 might not get to the48+ * hardware in time and we'll miss that interrupt.49+ *50+ * To be safe, if the new OSMR0 is "very close" to the51+ * target OSCR0 value, we call the event_handler as52+ * though the event actually happened. According to53+ * Nico's comment in the previous version of this54+ * code, experience has shown that 6 OSCR ticks is55+ * "very close" but he went with 8. We will use 16,56+ * based on the results of testing on PXA270.57+ *58+ * To be doubly sure, we also tell clkevt via59+ * clockevents_register_device() not to ask for60+ * anything that might put us "very close".61 */62+#define MIN_OSCR_DELTA 1663 do {64+ OSSR = OSSR_M0;065 next_match = (OSMR0 += LATCH);66+ c->event_handler(c);67+ } while (((signed long)(next_match - OSCR) <= MIN_OSCR_DELTA)68+ && (c->mode == CLOCK_EVT_MODE_PERIODIC));69+ }7071 return IRQ_HANDLED;72}7374+static int75+pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)76+{77+ unsigned long irqflags;78+79+ raw_local_irq_save(irqflags);80+ OSMR0 = OSCR + delta;81+ OSSR = OSSR_M0;82+ OIER |= OIER_E0;83+ raw_local_irq_restore(irqflags);84+ return 0;85+}86+87+static void88+pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)89+{90+ unsigned long irqflags;91+92+ switch (mode) {93+ case CLOCK_EVT_MODE_PERIODIC:94+ raw_local_irq_save(irqflags);95+ OSMR0 = OSCR + LATCH;96+ OSSR = OSSR_M0;97+ OIER |= OIER_E0;98+ raw_local_irq_restore(irqflags);99+ break;100+101+ case CLOCK_EVT_MODE_ONESHOT:102+ raw_local_irq_save(irqflags);103+ OIER &= ~OIER_E0;104+ raw_local_irq_restore(irqflags);105+ break;106+107+ case CLOCK_EVT_MODE_UNUSED:108+ case CLOCK_EVT_MODE_SHUTDOWN:109+ /* initializing, released, or preparing for suspend */110+ raw_local_irq_save(irqflags);111+ OIER &= ~OIER_E0;112+ raw_local_irq_restore(irqflags);113+ break;114+ }115+}116+117+static struct clock_event_device ckevt_pxa_osmr0 = {118+ .name = "osmr0",119+ .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,120+ .shift = 32,121+ .rating = 200,122+ .cpumask = CPU_MASK_CPU0,123+ .set_next_event = pxa_osmr0_set_next_event,124+ .set_mode = pxa_osmr0_set_mode,125};126127+static cycle_t pxa_read_oscr(void)128{129 return OSCR;130}131132+static struct clocksource cksrc_pxa_oscr0 = {133+ .name = "oscr0",134 .rating = 200,135+ .read = pxa_read_oscr,136 .mask = CLOCKSOURCE_MASK(32),137 .shift = 20,138 .flags = CLOCK_SOURCE_IS_CONTINUOUS,139};140141+static struct irqaction pxa_ost0_irq = {142+ .name = "ost0",143+ .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,144+ .handler = pxa_ost0_interrupt,145+ .dev_id = &ckevt_pxa_osmr0,146+};147+148static void __init pxa_timer_init(void)149{150+ OIER = 0;151+ OSSR = OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3;152153+ ckevt_pxa_osmr0.mult =154+ div_sc(CLOCK_TICK_RATE, NSEC_PER_SEC, ckevt_pxa_osmr0.shift);155+ ckevt_pxa_osmr0.max_delta_ns =156+ clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);157+ ckevt_pxa_osmr0.min_delta_ns =158+ clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1;159160+ cksrc_pxa_oscr0.mult =161+ clocksource_hz2mult(CLOCK_TICK_RATE, cksrc_pxa_oscr0.shift);00000162163+ setup_irq(IRQ_OST0, &pxa_ost0_irq);164+165+ clocksource_register(&cksrc_pxa_oscr0);166+ clockevents_register_device(&ckevt_pxa_osmr0);000167}000000000000000000000000000000000000168169#ifdef CONFIG_PM170static unsigned long osmr[4], oier;···191 OIER = oier;192193 /*194+ * OSCR0 is the system timer, which has to increase195+ * monotonically until it rolls over in hardware. The value196+ * (OSMR0 - LATCH) is OSCR0 at the most recent system tick,197+ * which is a handy value to restore to OSCR0.198 */199 OSCR = OSMR0 - LATCH;200}···204 .init = pxa_timer_init,205 .suspend = pxa_timer_suspend,206 .resume = pxa_timer_resume,000207};
+1-1
arch/arm/mach-rpc/riscpc.c
···87 /*88 * Turn off floppy.89 */90- outb(0xc, 0x3f2);9192 /*93 * RiscPC can't handle half-word loads and stores
···9 depends on ARCH_S3C241010 select S3C2410_CLOCK11 select S3C2410_GPIO012 select S3C2410_PM if PM13 help14 Support for S3C2410 and S3C2410A family from the S3C24XX line
···9 depends on ARCH_S3C241010 select S3C2410_CLOCK11 select S3C2410_GPIO12+ select CPU_LLSERIAL_S3C241013 select S3C2410_PM if PM14 help15 Support for S3C2410 and S3C2410A family from the S3C24XX line
···7config CPU_S3C24128 bool9 depends on ARCH_S3C2410010 select S3C2412_PM if PM11 select S3C2412_DMA if S3C2410_DMA12 help
···7config CPU_S3C24128 bool9 depends on ARCH_S3C241010+ select CPU_LLSERIAL_S3C244011 select S3C2412_PM if PM12 select S3C2412_DMA if S3C2410_DMA13 help
···12 select S3C2410_GPIO13 select S3C2440_DMA if S3C2410_DMA14 select CPU_S3C244X015 help16 Support for S3C2440 Samsung Mobile CPU based systems.17
···12 select S3C2410_GPIO13 select S3C2440_DMA if S3C2410_DMA14 select CPU_S3C244X15+ select CPU_LLSERIAL_S3C244016 help17 Support for S3C2440 Samsung Mobile CPU based systems.18
···11 select S3C2410_GPIO12 select S3C2410_PM if PM13 select CPU_S3C244X014 help15 Support for S3C2442 Samsung Mobile CPU based systems.16
···11 select S3C2410_GPIO12 select S3C2410_PM if PM13 select CPU_S3C244X14+ select CPU_LLSERIAL_S3C244015 help16 Support for S3C2442 Samsung Mobile CPU based systems.17
+1
arch/arm/mach-s3c2443/Kconfig
···8 bool9 depends on ARCH_S3C241010 select S3C2443_DMA if S3C2410_DMA011 help12 Support for the S3C2443 SoC from the S3C24XX line13
···8 bool9 depends on ARCH_S3C241010 select S3C2443_DMA if S3C2410_DMA11+ select CPU_LLSERIAL_S3C244012 help13 Support for the S3C2443 SoC from the S3C24XX line14
···101 handheld computer. See <http://www.hp.com/jornada/products/720>102 for details.1030000000000104config SA1100_HACKKIT105 bool "HackKit Core CPU Board"106 help···155 help156 Say Y here to enable support for the generic PIO SSP driver.157 This isn't for audio support, but for attached sensors and158- other devices, eg for BadgePAD 4 sensor support, or Jornada159- 720 touchscreen support.160161config H3600_SLEEVE162 tristate "Compaq iPAQ Handheld sleeve support"
···101 handheld computer. See <http://www.hp.com/jornada/products/720>102 for details.103104+config SA1100_JORNADA720_SSP105+ bool "HP Jornada 720 Extended SSP driver"106+ select SA1100_SSP107+ depends on SA1100_JORNADA720108+ help109+ Say Y here if you have a HP Jornada 7xx handheld computer and you110+ want to access devices connected to the MCU. Those include the111+ keyboard, touchscreen, backlight and battery. This driver also activates112+ the generic SSP which it extends.113+114config SA1100_HACKKIT115 bool "HackKit Core CPU Board"116 help···145 help146 Say Y here to enable support for the generic PIO SSP driver.147 This isn't for audio support, but for attached sensors and148+ other devices, eg for BadgePAD 4 sensor support.0149150config H3600_SLEEVE151 tristate "Compaq iPAQ Handheld sleeve support"
···1+/**2+ * arch/arm/mac-sa1100/jornada720_ssp.c3+ *4+ * Copyright (C) 2006/2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>5+ * Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>6+ *7+ * This program is free software; you can redistribute it and/or modify8+ * it under the terms of the GNU General Public License version 2 as9+ * published by the Free Software Foundation.10+ *11+ * SSP driver for the HP Jornada 710/720/72812+ */13+14+#include <linux/delay.h>15+#include <linux/errno.h>16+#include <linux/init.h>17+#include <linux/kernel.h>18+#include <linux/module.h>19+#include <linux/platform_device.h>20+#include <linux/sched.h>21+#include <linux/slab.h>22+23+#include <asm/hardware.h>24+#include <asm/hardware/ssp.h>25+#include <asm/arch/jornada720.h>26+27+static DEFINE_SPINLOCK(jornada_ssp_lock);28+static unsigned long jornada_ssp_flags;29+30+/**31+ * jornada_ssp_reverse - reverses input byte32+ *33+ * we need to reverse all data we recieve from the mcu due to its physical location34+ * returns : 01110111 -> 1110111035+ */36+u8 inline jornada_ssp_reverse(u8 byte)37+{38+ return39+ ((0x80 & byte) >> 7) |40+ ((0x40 & byte) >> 5) |41+ ((0x20 & byte) >> 3) |42+ ((0x10 & byte) >> 1) |43+ ((0x08 & byte) << 1) |44+ ((0x04 & byte) << 3) |45+ ((0x02 & byte) << 5) |46+ ((0x01 & byte) << 7);47+};48+EXPORT_SYMBOL(jornada_ssp_reverse);49+50+/**51+ * jornada_ssp_byte - waits for ready ssp bus and sends byte52+ *53+ * waits for fifo buffer to clear and then transmits, if it doesn't then we will54+ * timeout after <timeout> rounds. Needs mcu running before its called.55+ *56+ * returns : %mcu output on success57+ * : %-ETIMEOUT on timeout58+ */59+int jornada_ssp_byte(u8 byte)60+{61+ int timeout = 400000;62+ u16 ret;63+64+ while ((GPLR & GPIO_GPIO10)) {65+ if (!--timeout) {66+ printk(KERN_WARNING "SSP: timeout while waiting for transmit\n");67+ return -ETIMEDOUT;68+ }69+ cpu_relax();70+ }71+72+ ret = jornada_ssp_reverse(byte) << 8;73+74+ ssp_write_word(ret);75+ ssp_read_word(&ret);76+77+ return jornada_ssp_reverse(ret);78+};79+EXPORT_SYMBOL(jornada_ssp_byte);80+81+/**82+ * jornada_ssp_inout - decide if input is command or trading byte83+ *84+ * returns : (jornada_ssp_byte(byte)) on success85+ * : %-ETIMEOUT on timeout failure86+ */87+int jornada_ssp_inout(u8 byte)88+{89+ int ret, i;90+91+ /* true means command byte */92+ if (byte != TXDUMMY) {93+ ret = jornada_ssp_byte(byte);94+ /* Proper return to commands is TxDummy */95+ if (ret != TXDUMMY) {96+ for (i = 0; i < 256; i++)/* flushing bus */97+ if (jornada_ssp_byte(TXDUMMY) == -1)98+ break;99+ return -ETIMEDOUT;100+ }101+ } else /* Exchange TxDummy for data */102+ ret = jornada_ssp_byte(TXDUMMY);103+104+ return ret;105+};106+EXPORT_SYMBOL(jornada_ssp_inout);107+108+/**109+ * jornada_ssp_start - enable mcu110+ *111+ */112+int jornada_ssp_start()113+{114+ spin_lock_irqsave(&jornada_ssp_lock, jornada_ssp_flags);115+ GPCR = GPIO_GPIO25;116+ udelay(50);117+ return 0;118+};119+EXPORT_SYMBOL(jornada_ssp_start);120+121+/**122+ * jornada_ssp_end - disable mcu and turn off lock123+ *124+ */125+int jornada_ssp_end()126+{127+ GPSR = GPIO_GPIO25;128+ spin_unlock_irqrestore(&jornada_ssp_lock, jornada_ssp_flags);129+ return 0;130+};131+EXPORT_SYMBOL(jornada_ssp_end);132+133+static int __init jornada_ssp_probe(struct platform_device *dev)134+{135+ int ret;136+137+ GPSR = GPIO_GPIO25;138+139+ ret = ssp_init();140+141+ /* worked fine, lets not bother with anything else */142+ if (!ret) {143+ printk(KERN_INFO "SSP: device initialized with irq\n");144+ return ret;145+ }146+147+ printk(KERN_WARNING "SSP: initialization failed, trying non-irq solution \n");148+149+ /* init of Serial 4 port */150+ Ser4MCCR0 = 0;151+ Ser4SSCR0 = 0x0387;152+ Ser4SSCR1 = 0x18;153+154+ /* clear out any left over data */155+ ssp_flush();156+157+ /* enable MCU */158+ jornada_ssp_start();159+160+ /* see if return value makes sense */161+ ret = jornada_ssp_inout(GETBRIGHTNESS);162+163+ /* seems like it worked, just feed it with TxDummy to get rid of data */164+ if (ret == TxDummy)165+ jornada_ssp_inout(TXDUMMY);166+167+ jornada_ssp_end();168+169+ /* failed, lets just kill everything */170+ if (ret == -ETIMEDOUT) {171+ printk(KERN_WARNING "SSP: attempts failed, bailing\n");172+ ssp_exit();173+ return -ENODEV;174+ }175+176+ /* all fine */177+ printk(KERN_INFO "SSP: device initialized\n");178+ return 0;179+};180+181+static int jornada_ssp_remove(struct platform_device *dev)182+{183+ /* Note that this doesnt actually remove the driver, since theres nothing to remove184+ * It just makes sure everything is turned off */185+ GPSR = GPIO_GPIO25;186+ ssp_exit();187+ return 0;188+};189+190+struct platform_driver jornadassp_driver = {191+ .probe = jornada_ssp_probe,192+ .remove = jornada_ssp_remove,193+ .driver = {194+ .name = "jornada_ssp",195+ },196+};197+198+static int __init jornada_ssp_init(void)199+{200+ return platform_driver_register(&jornadassp_driver);201+}
+2
arch/arm/mach-sa1100/neponset.c
···292 &smc91x_device,293};29400295static int __init neponset_init(void)296{297 platform_driver_register(&neponset_device_driver);
···292 &smc91x_device,293};294295+extern void sa1110_mb_disable(void);296+297static int __init neponset_init(void)298{299 platform_driver_register(&neponset_device_driver);
+7-11
arch/arm/mm/Kconfig
···345# ARMv6346config CPU_V6347 bool "Support ARM V6 processor"348- depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP20349 select CPU_32v6350 select CPU_ABRT_EV6351 select CPU_CACHE_V6352 select CPU_CACHE_VIPT353 select CPU_CP15_MMU354- select CPU_HAS_ASID355 select CPU_COPY_V6 if MMU356 select CPU_TLB_V6 if MMU357···360config CPU_32v6K361 bool "Support ARM V6K processor extensions" if !SMP362 depends on CPU_V6363- default y if SMP364 help365 Say Y here if your ARMv6 processor supports the 'K' extension.366 This enables the kernel to use some instructions not present···378 select CPU_CACHE_V7379 select CPU_CACHE_VIPT380 select CPU_CP15_MMU381- select CPU_HAS_ASID382 select CPU_COPY_V6 if MMU383 select CPU_TLB_V7 if MMU384···406407config CPU_32v6408 bool0409410config CPU_32v7411 bool···600601config CPU_DCACHE_WRITETHROUGH602 bool "Force write through D-cache"603- depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_V6) && !CPU_DCACHE_DISABLE604 default y if CPU_ARM925T605 help606 Say Y here to use the data cache in writethrough mode. Unless you···612 help613 Say Y here to use the predictable round-robin cache replacement614 policy. Unless you specifically require this or are unsure, say N.615-616-config CPU_L2CACHE_DISABLE617- bool "Disable level 2 cache"618- depends on CPU_V7619- help620- Say Y here to disable the level 2 cache. If unsure, say N.621622config CPU_BPREDICT_DISABLE623 bool "Disable branch prediction"
···345# ARMv6346config CPU_V6347 bool "Support ARM V6 processor"348+ depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3349+ default y if ARCH_MX3350 select CPU_32v6351 select CPU_ABRT_EV6352 select CPU_CACHE_V6353 select CPU_CACHE_VIPT354 select CPU_CP15_MMU355+ select CPU_HAS_ASID if MMU356 select CPU_COPY_V6 if MMU357 select CPU_TLB_V6 if MMU358···359config CPU_32v6K360 bool "Support ARM V6K processor extensions" if !SMP361 depends on CPU_V6362+ default y if SMP && !ARCH_MX3363 help364 Say Y here if your ARMv6 processor supports the 'K' extension.365 This enables the kernel to use some instructions not present···377 select CPU_CACHE_V7378 select CPU_CACHE_VIPT379 select CPU_CP15_MMU380+ select CPU_HAS_ASID if MMU381 select CPU_COPY_V6 if MMU382 select CPU_TLB_V7 if MMU383···405406config CPU_32v6407 bool408+ select TLS_REG_EMUL if !CPU_32v6K && !MMU409410config CPU_32v7411 bool···598599config CPU_DCACHE_WRITETHROUGH600 bool "Force write through D-cache"601+ depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020) && !CPU_DCACHE_DISABLE602 default y if CPU_ARM925T603 help604 Say Y here to use the data cache in writethrough mode. Unless you···610 help611 Say Y here to use the predictable round-robin cache replacement612 policy. Unless you specifically require this or are unsure, say N.000000613614config CPU_BPREDICT_DISABLE615 bool "Disable branch prediction"
+6
arch/arm/mm/cache-l2x0.c
···17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA18 */19#include <linux/init.h>02021#include <asm/cacheflush.h>22#include <asm/io.h>···26#define CACHE_LINE_SIZE 322728static void __iomem *l2x0_base;02930static inline void sync_writel(unsigned long val, unsigned long reg,31 unsigned long complete_mask)32{00033 writel(val, l2x0_base + reg);34 /* wait for the operation to complete */35 while (readl(l2x0_base + reg) & complete_mask)36 ;037}3839static inline void cache_sync(void)
···17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA18 */19#include <linux/init.h>20+#include <linux/spinlock.h>2122#include <asm/cacheflush.h>23#include <asm/io.h>···25#define CACHE_LINE_SIZE 322627static void __iomem *l2x0_base;28+static DEFINE_SPINLOCK(l2x0_lock);2930static inline void sync_writel(unsigned long val, unsigned long reg,31 unsigned long complete_mask)32{33+ unsigned long flags;34+35+ spin_lock_irqsave(&l2x0_lock, flags);36 writel(val, l2x0_base + reg);37 /* wait for the operation to complete */38 while (readl(l2x0_base + reg) & complete_mask)39 ;40+ spin_unlock_irqrestore(&l2x0_lock, flags);41}4243static inline void cache_sync(void)
+10-4
arch/arm/mm/mmu.c
···114 }115 if (i == ARRAY_SIZE(cache_policies))116 printk(KERN_ERR "ERROR: unknown or unsupported cache policy\n");0000117 flush_cache_all();118 set_cr(cr_alignment);119}···256 int cpu_arch = cpu_architecture();257 int i;2580259#if defined(CONFIG_CPU_DCACHE_DISABLE)260- if (cachepolicy > CPOLICY_BUFFERED)261- cachepolicy = CPOLICY_BUFFERED;262#elif defined(CONFIG_CPU_DCACHE_WRITETHROUGH)263- if (cachepolicy > CPOLICY_WRITETHROUGH)264- cachepolicy = CPOLICY_WRITETHROUGH;265#endif0266 if (cpu_arch < CPU_ARCH_ARMv5) {267 if (cachepolicy >= CPOLICY_WRITEALLOC)268 cachepolicy = CPOLICY_WRITEBACK;
···114 }115 if (i == ARRAY_SIZE(cache_policies))116 printk(KERN_ERR "ERROR: unknown or unsupported cache policy\n");117+ if (cpu_architecture() >= CPU_ARCH_ARMv6) {118+ printk(KERN_WARNING "Only cachepolicy=writeback supported on ARMv6 and later\n");119+ cachepolicy = CPOLICY_WRITEBACK;120+ }121 flush_cache_all();122 set_cr(cr_alignment);123}···252 int cpu_arch = cpu_architecture();253 int i;254255+ if (cpu_arch < CPU_ARCH_ARMv6) {256#if defined(CONFIG_CPU_DCACHE_DISABLE)257+ if (cachepolicy > CPOLICY_BUFFERED)258+ cachepolicy = CPOLICY_BUFFERED;259#elif defined(CONFIG_CPU_DCACHE_WRITETHROUGH)260+ if (cachepolicy > CPOLICY_WRITETHROUGH)261+ cachepolicy = CPOLICY_WRITETHROUGH;262#endif263+ }264 if (cpu_arch < CPU_ARCH_ARMv5) {265 if (cachepolicy >= CPOLICY_WRITEALLOC)266 cachepolicy = CPOLICY_WRITEBACK;
···1+if ARCH_MXC2+3+menu "Freescale MXC Implementations"4+5+choice6+ prompt "MXC/iMX System Type"7+ default 08+9+config ARCH_MX310+ bool "MX3-based"11+ help12+ This enables support for systems based on the Freescale i.MX3 family13+14+endchoice15+16+source "arch/arm/mach-mx3/Kconfig"17+18+endmenu19+20+endif
+10
arch/arm/plat-mxc/Makefile
···0000000000
···1+#2+# Makefile for the linux kernel.3+#4+5+# Common support6+obj-y := irq.o7+8+obj-m :=9+obj-n :=10+obj- :=
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#include <linux/module.h>12+#include <linux/moduleparam.h>13+#include <linux/init.h>14+#include <linux/device.h>15+#include <linux/errno.h>16+#include <asm/hardware.h>17+#include <asm/io.h>18+#include <asm/irq.h>19+#include <asm/mach/irq.h>20+#include <asm/arch/common.h>21+22+/*!23+ * Disable interrupt number "irq" in the AVIC24+ *25+ * @param irq interrupt source number26+ */27+static void mxc_mask_irq(unsigned int irq)28+{29+ __raw_writel(irq, AVIC_INTDISNUM);30+}31+32+/*!33+ * Enable interrupt number "irq" in the AVIC34+ *35+ * @param irq interrupt source number36+ */37+static void mxc_unmask_irq(unsigned int irq)38+{39+ __raw_writel(irq, AVIC_INTENNUM);40+}41+42+static struct irq_chip mxc_avic_chip = {43+ .mask_ack = mxc_mask_irq,44+ .mask = mxc_mask_irq,45+ .unmask = mxc_unmask_irq,46+};47+48+/*!49+ * This function initializes the AVIC hardware and disables all the50+ * interrupts. It registers the interrupt enable and disable functions51+ * to the kernel for each interrupt source.52+ */53+void __init mxc_init_irq(void)54+{55+ int i;56+ u32 reg;57+58+ /* put the AVIC into the reset value with59+ * all interrupts disabled60+ */61+ __raw_writel(0, AVIC_INTCNTL);62+ __raw_writel(0x1f, AVIC_NIMASK);63+64+ /* disable all interrupts */65+ __raw_writel(0, AVIC_INTENABLEH);66+ __raw_writel(0, AVIC_INTENABLEL);67+68+ /* all IRQ no FIQ */69+ __raw_writel(0, AVIC_INTTYPEH);70+ __raw_writel(0, AVIC_INTTYPEL);71+ for (i = 0; i < MXC_MAX_INT_LINES; i++) {72+ set_irq_chip(i, &mxc_avic_chip);73+ set_irq_handler(i, handle_level_irq);74+ set_irq_flags(i, IRQF_VALID);75+ }76+77+ /* Set WDOG2's interrupt the highest priority level (bit 28-31) */78+ reg = __raw_readl(AVIC_NIPRIORITY6);79+ reg |= (0xF << 28);80+ __raw_writel(reg, AVIC_NIPRIORITY6);81+82+ printk(KERN_INFO "MXC IRQ initialized\n");83+}
···1+# arch/arm/plat-s3c/Kconfig2+#3+# Copyright 2007 Simtec Electronics4+#5+# Licensed under GPLv26+7+config PLAT_S3C8+ bool9+ depends on ARCH_S3C241010+ default y if ARCH_S3C241011+ select NO_IOPORT12+ help13+ Base platform code for any Samsung S3C device14+15+# low-level serial option nodes16+17+config CPU_LLSERIAL_S3C2410_ONLY18+ bool19+ depends on ARCH_S3C241020+ default y if CPU_LLSERIAL_S3C2410 && !CPU_LLSERIAL_S3C244021+22+config CPU_LLSERIAL_S3C2440_ONLY23+ bool24+ depends on ARCH_S3C241025+ default y if CPU_LLSERIAL_S3C2440 && !CPU_LLSERIAL_S3C241026+27+config CPU_LLSERIAL_S3C241028+ bool29+ depends on ARCH_S3C241030+ help31+ Selected if there is an S3C2410 (or register compatible) serial32+ low-level implementation needed33+34+config CPU_LLSERIAL_S3C244035+ bool36+ depends on ARCH_S3C241037+ help38+ Selected if there is an S3C2440 (or register compatible) serial39+ low-level implementation needed40+41+# boot configurations42+43+comment "Boot options"44+45+config S3C_BOOT_WATCHDOG46+ bool "S3C Initialisation watchdog"47+ depends on PLAT_S3C && S3C2410_WATCHDOG48+ help49+ Say y to enable the watchdog during the kernel decompression50+ stage. If the kernel fails to uncompress, then the watchdog51+ will trigger a reset and the system should restart.52+53+config S3C_BOOT_ERROR_RESET54+ bool "S3C Reboot on decompression error"55+ depends on PLAT_S3C56+ help57+ Say y here to use the watchdog to reset the system if the58+ kernel decompressor detects an error during decompression.59+60+comment "Power management"61+62+config S3C2410_PM_DEBUG63+ bool "S3C2410 PM Suspend debug"64+ depends on PLAT_S3C && PM65+ help66+ Say Y here if you want verbose debugging from the PM Suspend and67+ Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>68+ for more information.69+70+config S3C2410_PM_CHECK71+ bool "S3C2410 PM Suspend Memory CRC"72+ depends on PLAT_S3C && PM && CRC3273+ help74+ Enable the PM code's memory area checksum over sleep. This option75+ will generate CRCs of all blocks of memory, and store them before76+ going to sleep. The blocks are then checked on resume for any77+ errors.78+79+ Note, this can take several seconds depending on memory size80+ and CPU speed.81+82+ See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>83+84+config S3C2410_PM_CHECK_CHUNKSIZE85+ int "S3C2410 PM Suspend CRC Chunksize (KiB)"86+ depends on PLAT_S3C && PM && S3C2410_PM_CHECK87+ default 6488+ help89+ Set the chunksize in Kilobytes of the CRC for checking memory90+ corruption over suspend and resume. A smaller value will mean that91+ the CRC data block will take more memory, but wil identify any92+ faults with better precision.93+94+ See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>95+96+config S3C_LOWLEVEL_UART_PORT97+ int "S3C UART to use for low-level messages"98+ depends on PLAT_S3C99+ default 0100+ help101+ Choice of which UART port to use for the low-level messages,102+ such as the `Uncompressing...` at start time. The value of103+ this configuration should be between zero and two. The port104+ must have been initialised by the boot-loader before use.
+1-59
arch/arm/plat-s3c24xx/Kconfig
···10 default y if ARCH_S3C241011 select NO_IOPORT12 help13- Base platform code for any Samsung S3C device1415if PLAT_S3C24XX16···25 help26 Common power management code for systems that are27 compatible with the Simtec style of power management28-29-config S3C2410_BOOT_WATCHDOG30- bool "S3C2410 Initialisation watchdog"31- depends on ARCH_S3C2410 && S3C2410_WATCHDOG32- help33- Say y to enable the watchdog during the kernel decompression34- stage. If the kernel fails to uncompress, then the watchdog35- will trigger a reset and the system should restart.36-37-config S3C2410_BOOT_ERROR_RESET38- bool "S3C2410 Reboot on decompression error"39- depends on ARCH_S3C241040- help41- Say y here to use the watchdog to reset the system if the42- kernel decompressor detects an error during decompression.43-44-config S3C2410_PM_DEBUG45- bool "S3C2410 PM Suspend debug"46- depends on ARCH_S3C2410 && PM47- help48- Say Y here if you want verbose debugging from the PM Suspend and49- Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>50- for more information.51-52-config S3C2410_PM_CHECK53- bool "S3C2410 PM Suspend Memory CRC"54- depends on ARCH_S3C2410 && PM && CRC3255- help56- Enable the PM code's memory area checksum over sleep. This option57- will generate CRCs of all blocks of memory, and store them before58- going to sleep. The blocks are then checked on resume for any59- errors.60-61- Note, this can take several seconds depending on memory size62- and CPU speed.63-64- See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>65-66-config S3C2410_PM_CHECK_CHUNKSIZE67- int "S3C2410 PM Suspend CRC Chunksize (KiB)"68- depends on ARCH_S3C2410 && PM && S3C2410_PM_CHECK69- default 6470- help71- Set the chunksize in Kilobytes of the CRC for checking memory72- corruption over suspend and resume. A smaller value will mean that73- the CRC data block will take more memory, but wil identify any74- faults with better precision.75-76- See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>77-78-config S3C2410_LOWLEVEL_UART_PORT79- int "S3C2410 UART to use for low-level messages"80- default 081- help82- Choice of which UART port to use for the low-level messages,83- such as the `Uncompressing...` at start time. The value of84- this configuration should be between zero and two. The port85- must have been initialised by the boot-loader before use.8687config S3C2410_DMA88 bool "S3C2410 DMA support"
···10 default y if ARCH_S3C241011 select NO_IOPORT12 help13+ Base platform code for any Samsung S3C24XX device1415if PLAT_S3C24XX16···25 help26 Common power management code for systems that are27 compatible with the Simtec style of power management00000000000000000000000000000000000000000000000000000000002829config S3C2410_DMA30 bool "S3C2410 DMA support"
···32#include <asm/arch/regs-gpio.h>33#include <asm/arch/regs-clock.h>34#include <asm/arch/regs-mem.h>35-#include <asm/arch/regs-serial.h>3637/* CONFIG_DEBUG_RESUME is dangerous if your bootloader does not38 * reset the UART configuration, only enable if you really need this!
···32#include <asm/arch/regs-gpio.h>33#include <asm/arch/regs-clock.h>34#include <asm/arch/regs-mem.h>35+#include <asm/plat-s3c/regs-serial.h>3637/* CONFIG_DEBUG_RESUME is dangerous if your bootloader does not38 * reset the UART configuration, only enable if you really need this!
···7475 VFPFMRX r1, FPEXC @ Is the VFP enabled?76 DBGSTR1 "fpexc %08x", r177- tst r1, #FPEXC_ENABLE78 bne look_for_VFP_exceptions @ VFP is already enabled7980 DBGSTR1 "enable %x", r1081 ldr r3, last_VFP_context_address82- orr r1, r1, #FPEXC_ENABLE @ user FPEXC has the enable bit set83 ldr r4, [r3, r11, lsl #2] @ last_VFP_context pointer84- bic r5, r1, #FPEXC_EXCEPTION @ make sure exceptions are disabled85 cmp r4, r1086 beq check_for_exception @ we are returning to the same87 @ process, so the registers are···124 VFPFMXR FPSCR, r5 @ restore status125126check_for_exception:127- tst r1, #FPEXC_EXCEPTION128 bne process_exception @ might as well handle the pending129 @ exception before retrying branch130 @ out before setting an FPEXC that···136137138look_for_VFP_exceptions:139- tst r1, #FPEXC_EXCEPTION140 bne process_exception141 VFPFMRX r5, FPSCR142- tst r5, #FPSCR_IXE @ IXE doesn't set FPEXC_EXCEPTION !143 bne process_exception144145 @ Fall into hand on to next handler - appropriate coproc instr
···7475 VFPFMRX r1, FPEXC @ Is the VFP enabled?76 DBGSTR1 "fpexc %08x", r177+ tst r1, #FPEXC_EN78 bne look_for_VFP_exceptions @ VFP is already enabled7980 DBGSTR1 "enable %x", r1081 ldr r3, last_VFP_context_address82+ orr r1, r1, #FPEXC_EN @ user FPEXC has the enable bit set83 ldr r4, [r3, r11, lsl #2] @ last_VFP_context pointer84+ bic r5, r1, #FPEXC_EX @ make sure exceptions are disabled85 cmp r4, r1086 beq check_for_exception @ we are returning to the same87 @ process, so the registers are···124 VFPFMXR FPSCR, r5 @ restore status125126check_for_exception:127+ tst r1, #FPEXC_EX128 bne process_exception @ might as well handle the pending129 @ exception before retrying branch130 @ out before setting an FPEXC that···136137138look_for_VFP_exceptions:139+ tst r1, #FPEXC_EX140 bne process_exception141 VFPFMRX r5, FPSCR142+ tst r5, #FPSCR_IXE @ IXE doesn't set FPEXC_EX !143 bne process_exception144145 @ Fall into hand on to next handler - appropriate coproc instr
+6-6
arch/arm/vfp/vfpmodule.c
···53 * case the thread migrates to a different CPU. The54 * restoring is done lazily.55 */56- if ((fpexc & FPEXC_ENABLE) && last_VFP_context[cpu]) {57 vfp_save_state(last_VFP_context[cpu], fpexc);58 last_VFP_context[cpu]->hard.cpu = cpu;59 }···70 * Always disable VFP so we can lazily save/restore the71 * old state.72 */73- fmxr(FPEXC, fpexc & ~FPEXC_ENABLE);74 return NOTIFY_DONE;75 }76···81 */82 memset(vfp, 0, sizeof(union vfp_state));8384- vfp->hard.fpexc = FPEXC_ENABLE;85 vfp->hard.fpscr = FPSCR_ROUND_NEAREST;8687 /*88 * Disable VFP to ensure we initialise it first.89 */90- fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_ENABLE);91 }9293 /* flush and release case: Per-thread VFP cleanup. */···229 /*230 * Enable access to the VFP so we can handle the bounce.231 */232- fmxr(FPEXC, fpexc & ~(FPEXC_EXCEPTION|FPEXC_INV|FPEXC_UFC|FPEXC_IOC));233234 orig_fpscr = fpscr = fmrx(FPSCR);235···248 /*249 * Modify fpscr to indicate the number of iterations remaining250 */251- if (fpexc & FPEXC_EXCEPTION) {252 u32 len;253254 len = fpexc + (1 << FPEXC_LENGTH_BIT);
···53 * case the thread migrates to a different CPU. The54 * restoring is done lazily.55 */56+ if ((fpexc & FPEXC_EN) && last_VFP_context[cpu]) {57 vfp_save_state(last_VFP_context[cpu], fpexc);58 last_VFP_context[cpu]->hard.cpu = cpu;59 }···70 * Always disable VFP so we can lazily save/restore the71 * old state.72 */73+ fmxr(FPEXC, fpexc & ~FPEXC_EN);74 return NOTIFY_DONE;75 }76···81 */82 memset(vfp, 0, sizeof(union vfp_state));8384+ vfp->hard.fpexc = FPEXC_EN;85 vfp->hard.fpscr = FPSCR_ROUND_NEAREST;8687 /*88 * Disable VFP to ensure we initialise it first.89 */90+ fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);91 }9293 /* flush and release case: Per-thread VFP cleanup. */···229 /*230 * Enable access to the VFP so we can handle the bounce.231 */232+ fmxr(FPEXC, fpexc & ~(FPEXC_EX|FPEXC_INV|FPEXC_UFC|FPEXC_IOC));233234 orig_fpscr = fpscr = fmrx(FPSCR);235···248 /*249 * Modify fpscr to indicate the number of iterations remaining250 */251+ if (fpexc & FPEXC_EX) {252 u32 len;253254 len = fpexc + (1 << FPEXC_LENGTH_BIT);
+16
drivers/char/watchdog/Kconfig
···187188 Say N if you are unsure.1890000000000000000190# AVR32 Architecture191192config AT32AP700X_WDT
···187188 Say N if you are unsure.189190+config IOP_WATCHDOG191+ tristate "IOP Watchdog"192+ depends on WATCHDOG && PLAT_IOP193+ select WATCHDOG_NOWAYOUT if (ARCH_IOP32X || ARCH_IOP33X)194+ help195+ Say Y here if to include support for the watchdog timer196+ in the Intel IOP3XX & IOP13XX I/O Processors. This driver can197+ be built as a module by choosing M. The module will198+ be called iop_wdt.199+200+ Note: The IOP13XX watchdog does an Internal Bus Reset which will201+ affect both cores and the peripherals of the IOP. The ATU-X202+ and/or ATUe configuration registers will remain intact, but if203+ operating as an Root Complex and/or Central Resource, the PCI-X204+ and/or PCIe busses will also be reset. THIS IS A VERY BIG HAMMER.205+206# AVR32 Architecture207208config AT32AP700X_WDT
···1+/*2+ * drivers/char/watchdog/iop_wdt.c3+ *4+ * WDT driver for Intel I/O Processors5+ * Copyright (C) 2005, Intel Corporation.6+ *7+ * Based on ixp4xx driver, Copyright 2004 (c) MontaVista, Software, Inc.8+ *9+ * This program is free software; you can redistribute it and/or modify it10+ * under the terms and conditions of the GNU General Public License,11+ * version 2, as published by the Free Software Foundation.12+ *13+ * This program is distributed in the hope it will be useful, but WITHOUT14+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or15+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for16+ * more details.17+ *18+ * You should have received a copy of the GNU General Public License along with19+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple20+ * Place - Suite 330, Boston, MA 02111-1307 USA.21+ *22+ * Curt E Bruns <curt.e.bruns@intel.com>23+ * Peter Milne <peter.milne@d-tacq.com>24+ * Dan Williams <dan.j.williams@intel.com>25+ */26+27+#include <linux/module.h>28+#include <linux/kernel.h>29+#include <linux/fs.h>30+#include <linux/init.h>31+#include <linux/device.h>32+#include <linux/miscdevice.h>33+#include <linux/watchdog.h>34+#include <linux/uaccess.h>35+#include <asm/hardware.h>36+37+static int nowayout = WATCHDOG_NOWAYOUT;38+static unsigned long wdt_status;39+static unsigned long boot_status;40+41+#define WDT_IN_USE 042+#define WDT_OK_TO_CLOSE 143+#define WDT_ENABLED 244+45+static unsigned long iop_watchdog_timeout(void)46+{47+ return (0xffffffffUL / get_iop_tick_rate());48+}49+50+/**51+ * wdt_supports_disable - determine if we are accessing a iop13xx watchdog52+ * or iop3xx by whether it has a disable command53+ */54+static int wdt_supports_disable(void)55+{56+ int can_disable;57+58+ if (IOP_WDTCR_EN_ARM != IOP_WDTCR_DIS_ARM)59+ can_disable = 1;60+ else61+ can_disable = 0;62+63+ return can_disable;64+}65+66+static void wdt_enable(void)67+{68+ /* Arm and enable the Timer to starting counting down from 0xFFFF.FFFF69+ * Takes approx. 10.7s to timeout70+ */71+ write_wdtcr(IOP_WDTCR_EN_ARM);72+ write_wdtcr(IOP_WDTCR_EN);73+}74+75+/* returns 0 if the timer was successfully disabled */76+static int wdt_disable(void)77+{78+ /* Stop Counting */79+ if (wdt_supports_disable()) {80+ write_wdtcr(IOP_WDTCR_DIS_ARM);81+ write_wdtcr(IOP_WDTCR_DIS);82+ clear_bit(WDT_ENABLED, &wdt_status);83+ printk(KERN_INFO "WATCHDOG: Disabled\n");84+ return 0;85+ } else86+ return 1;87+}88+89+static int iop_wdt_open(struct inode *inode, struct file *file)90+{91+ if (test_and_set_bit(WDT_IN_USE, &wdt_status))92+ return -EBUSY;93+94+ clear_bit(WDT_OK_TO_CLOSE, &wdt_status);95+96+ wdt_enable();97+98+ set_bit(WDT_ENABLED, &wdt_status);99+100+ return nonseekable_open(inode, file);101+}102+103+static ssize_t104+iop_wdt_write(struct file *file, const char *data, size_t len,105+ loff_t *ppos)106+{107+ if (len) {108+ if (!nowayout) {109+ size_t i;110+111+ clear_bit(WDT_OK_TO_CLOSE, &wdt_status);112+113+ for (i = 0; i != len; i++) {114+ char c;115+116+ if (get_user(c, data + i))117+ return -EFAULT;118+ if (c == 'V')119+ set_bit(WDT_OK_TO_CLOSE, &wdt_status);120+ }121+ }122+ wdt_enable();123+ }124+125+ return len;126+}127+128+static struct watchdog_info ident = {129+ .options = WDIOF_CARDRESET | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,130+ .identity = "iop watchdog",131+};132+133+static int134+iop_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,135+ unsigned long arg)136+{137+ int options;138+ int ret = -ENOTTY;139+140+ switch (cmd) {141+ case WDIOC_GETSUPPORT:142+ if (copy_to_user143+ ((struct watchdog_info *)arg, &ident, sizeof ident))144+ ret = -EFAULT;145+ else146+ ret = 0;147+ break;148+149+ case WDIOC_GETSTATUS:150+ ret = put_user(0, (int *)arg);151+ break;152+153+ case WDIOC_GETBOOTSTATUS:154+ ret = put_user(boot_status, (int *)arg);155+ break;156+157+ case WDIOC_GETTIMEOUT:158+ ret = put_user(iop_watchdog_timeout(), (int *)arg);159+ break;160+161+ case WDIOC_KEEPALIVE:162+ wdt_enable();163+ ret = 0;164+ break;165+166+ case WDIOC_SETOPTIONS:167+ if (get_user(options, (int *)arg))168+ return -EFAULT;169+170+ if (options & WDIOS_DISABLECARD) {171+ if (!nowayout) {172+ if (wdt_disable() == 0) {173+ set_bit(WDT_OK_TO_CLOSE, &wdt_status);174+ ret = 0;175+ } else176+ ret = -ENXIO;177+ } else178+ ret = 0;179+ }180+181+ if (options & WDIOS_ENABLECARD) {182+ wdt_enable();183+ ret = 0;184+ }185+ break;186+ }187+188+ return ret;189+}190+191+static int iop_wdt_release(struct inode *inode, struct file *file)192+{193+ int state = 1;194+ if (test_bit(WDT_OK_TO_CLOSE, &wdt_status))195+ if (test_bit(WDT_ENABLED, &wdt_status))196+ state = wdt_disable();197+198+ /* if the timer is not disbaled reload and notify that we are still199+ * going down200+ */201+ if (state != 0) {202+ wdt_enable();203+ printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - "204+ "reset in %lu seconds\n", iop_watchdog_timeout());205+ }206+207+ clear_bit(WDT_IN_USE, &wdt_status);208+ clear_bit(WDT_OK_TO_CLOSE, &wdt_status);209+210+ return 0;211+}212+213+static const struct file_operations iop_wdt_fops = {214+ .owner = THIS_MODULE,215+ .llseek = no_llseek,216+ .write = iop_wdt_write,217+ .ioctl = iop_wdt_ioctl,218+ .open = iop_wdt_open,219+ .release = iop_wdt_release,220+};221+222+static struct miscdevice iop_wdt_miscdev = {223+ .minor = WATCHDOG_MINOR,224+ .name = "watchdog",225+ .fops = &iop_wdt_fops,226+};227+228+static int __init iop_wdt_init(void)229+{230+ int ret;231+232+ ret = misc_register(&iop_wdt_miscdev);233+ if (ret == 0)234+ printk("iop watchdog timer: timeout %lu sec\n",235+ iop_watchdog_timeout());236+237+ /* check if the reset was caused by the watchdog timer */238+ boot_status = (read_rcsr() & IOP_RCSR_WDT) ? WDIOF_CARDRESET : 0;239+240+ /* Configure Watchdog Timeout to cause an Internal Bus (IB) Reset241+ * NOTE: An IB Reset will Reset both cores in the IOP342242+ */243+ write_wdtsr(IOP13XX_WDTCR_IB_RESET);244+245+ return ret;246+}247+248+static void __exit iop_wdt_exit(void)249+{250+ misc_deregister(&iop_wdt_miscdev);251+}252+253+module_init(iop_wdt_init);254+module_exit(iop_wdt_exit);255+256+module_param(nowayout, int, 0);257+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started");258+259+MODULE_AUTHOR("Curt E Bruns <curt.e.bruns@intel.com>");260+MODULE_DESCRIPTION("iop watchdog timer driver");261+MODULE_LICENSE("GPL");262+MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
···1+/*2+ * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#ifndef __ASM_ARCH_MXC_BOARD_MX31ADS_H__12+#define __ASM_ARCH_MXC_BOARD_MX31ADS_H__13+14+/*!15+ * @name PBC Controller parameters16+ */17+/*! @{ */18+/*!19+ * Base address of PBC controller20+ */21+#define PBC_BASE_ADDRESS IO_ADDRESS(CS4_BASE_ADDR)22+/* Offsets for the PBC Controller register */23+/*!24+ * PBC Board status register offset25+ */26+#define PBC_BSTAT 0x00000227+/*!28+ * PBC Board control register 1 set address.29+ */30+#define PBC_BCTRL1_SET 0x00000431+/*!32+ * PBC Board control register 1 clear address.33+ */34+#define PBC_BCTRL1_CLEAR 0x00000635+/*!36+ * PBC Board control register 2 set address.37+ */38+#define PBC_BCTRL2_SET 0x00000839+/*!40+ * PBC Board control register 2 clear address.41+ */42+#define PBC_BCTRL2_CLEAR 0x00000A43+/*!44+ * PBC Board control register 3 set address.45+ */46+#define PBC_BCTRL3_SET 0x00000C47+/*!48+ * PBC Board control register 3 clear address.49+ */50+#define PBC_BCTRL3_CLEAR 0x00000E51+/*!52+ * PBC Board control register 4 set address.53+ */54+#define PBC_BCTRL4_SET 0x00001055+/*!56+ * PBC Board control register 4 clear address.57+ */58+#define PBC_BCTRL4_CLEAR 0x00001259+/*!60+ * PBC Board status register 1.61+ */62+#define PBC_BSTAT1 0x00001463+/*!64+ * PBC Board interrupt status register.65+ */66+#define PBC_INTSTATUS 0x00001667+/*!68+ * PBC Board interrupt current status register.69+ */70+#define PBC_INTCURR_STATUS 0x00001871+/*!72+ * PBC Interrupt mask register set address.73+ */74+#define PBC_INTMASK_SET 0x00001A75+/*!76+ * PBC Interrupt mask register clear address.77+ */78+#define PBC_INTMASK_CLEAR 0x00001C79+80+/*!81+ * External UART A.82+ */83+#define PBC_SC16C652_UARTA 0x01000084+/*!85+ * External UART B.86+ */87+#define PBC_SC16C652_UARTB 0x01001088+/*!89+ * Ethernet Controller IO base address.90+ */91+#define PBC_CS8900A_IOBASE 0x02000092+/*!93+ * Ethernet Controller Memory base address.94+ */95+#define PBC_CS8900A_MEMBASE 0x02100096+/*!97+ * Ethernet Controller DMA base address.98+ */99+#define PBC_CS8900A_DMABASE 0x022000100+/*!101+ * External chip select 0.102+ */103+#define PBC_XCS0 0x040000104+/*!105+ * LCD Display enable.106+ */107+#define PBC_LCD_EN_B 0x060000108+/*!109+ * Code test debug enable.110+ */111+#define PBC_CODE_B 0x070000112+/*!113+ * PSRAM memory select.114+ */115+#define PBC_PSRAM_B 0x5000000116+117+#define PBC_INTSTATUS_REG (PBC_INTSTATUS + PBC_BASE_ADDRESS)118+#define PBC_INTCURR_STATUS_REG (PBC_INTCURR_STATUS + PBC_BASE_ADDRESS)119+#define PBC_INTMASK_SET_REG (PBC_INTMASK_SET + PBC_BASE_ADDRESS)120+#define PBC_INTMASK_CLEAR_REG (PBC_INTMASK_CLEAR + PBC_BASE_ADDRESS)121+#define EXPIO_PARENT_INT IOMUX_TO_IRQ(MX31_PIN_GPIO1_4)122+123+#define EXPIO_INT_LOW_BAT (MXC_EXP_IO_BASE + 0)124+#define EXPIO_INT_PB_IRQ (MXC_EXP_IO_BASE + 1)125+#define EXPIO_INT_OTG_FS_OVR (MXC_EXP_IO_BASE + 2)126+#define EXPIO_INT_FSH_OVR (MXC_EXP_IO_BASE + 3)127+#define EXPIO_INT_RES4 (MXC_EXP_IO_BASE + 4)128+#define EXPIO_INT_RES5 (MXC_EXP_IO_BASE + 5)129+#define EXPIO_INT_RES6 (MXC_EXP_IO_BASE + 6)130+#define EXPIO_INT_RES7 (MXC_EXP_IO_BASE + 7)131+#define EXPIO_INT_ENET_INT (MXC_EXP_IO_BASE + 8)132+#define EXPIO_INT_OTG_FS_INT (MXC_EXP_IO_BASE + 9)133+#define EXPIO_INT_XUART_INTA (MXC_EXP_IO_BASE + 10)134+#define EXPIO_INT_XUART_INTB (MXC_EXP_IO_BASE + 11)135+#define EXPIO_INT_SYNTH_IRQ (MXC_EXP_IO_BASE + 12)136+#define EXPIO_INT_CE_INT1 (MXC_EXP_IO_BASE + 13)137+#define EXPIO_INT_CE_INT2 (MXC_EXP_IO_BASE + 14)138+#define EXPIO_INT_RES15 (MXC_EXP_IO_BASE + 15)139+140+#define MXC_MAX_EXP_IO_LINES 16141+142+#endif /* __ASM_ARCH_MXC_BOARD_MX31ADS_H__ */
+20
include/asm-arm/arch-mxc/common.h
···00000000000000000000
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#ifndef __ASM_ARCH_MXC_COMMON_H__12+#define __ASM_ARCH_MXC_COMMON_H__13+14+struct sys_timer;15+16+extern void mxc_map_io(void);17+extern void mxc_init_irq(void);18+extern struct sys_timer mxc_timer;19+20+#endif
+21
include/asm-arm/arch-mxc/dma.h
···000000000000000000000
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#ifndef __ASM_ARCH_MXC_DMA_H__12+#define __ASM_ARCH_MXC_DMA_H__13+14+/*!15+ * @file dma.h16+ * @brief This file contains Unified DMA API for all MXC platforms.17+ * The API is platform independent.18+ *19+ * @ingroup SDMA20+ */21+#endif
+39
include/asm-arm/arch-mxc/entry-macro.S
···000000000000000000000000000000000000000
···1+/*2+ * Copyright (C) 2007 Lennert Buytenhek <buytenh@wantstofly.org>3+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.4+ */5+6+/*7+ * This program is free software; you can redistribute it and/or modify8+ * it under the terms of the GNU General Public License version 2 as9+ * published by the Free Software Foundation.10+ */11+12+ @ this macro disables fast irq (not implemented)13+ .macro disable_fiq14+ .endm15+16+ .macro get_irqnr_preamble, base, tmp17+ .endm18+19+ .macro arch_ret_to_user, tmp1, tmp220+ .endm21+22+ @ this macro checks which interrupt occured23+ @ and returns its number in irqnr24+ @ and returns if an interrupt occured in irqstat25+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp26+ ldr \base, =AVIC_IO_ADDRESS(AVIC_BASE_ADDR)27+ @ Load offset & priority of the highest priority28+ @ interrupt pending from AVIC_NIVECSR29+ ldr \irqstat, [\base, #0x40]30+ @ Shift to get the decoded IRQ number, using ASR so31+ @ 'no interrupt pending' becomes 0xffffffff32+ mov \irqnr, \irqstat, asr #1633+ @ set zero flag if IRQ + 1 == 034+ adds \tmp, \irqnr, #135+ .endm36+37+ @ irq priority table (not used)38+ .macro irq_prio_table39+ .endm
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+/*!12+ * @file hardware.h13+ * @brief This file contains the hardware definitions of the board.14+ *15+ * @ingroup System16+ */17+#ifndef __ASM_ARCH_MXC_HARDWARE_H__18+#define __ASM_ARCH_MXC_HARDWARE_H__19+20+#include <asm/sizes.h>21+22+#include <asm/arch/mx31.h>23+24+#include <asm/arch/mxc.h>25+26+#define MXC_MAX_GPIO_LINES (GPIO_NUM_PIN * GPIO_PORT_NUM)27+28+/*29+ * ---------------------------------------------------------------------------30+ * Board specific defines31+ * ---------------------------------------------------------------------------32+ */33+#define MXC_EXP_IO_BASE (MXC_GPIO_INT_BASE + MXC_MAX_GPIO_LINES)34+35+#include <asm/arch/board-mx31ads.h>36+37+#ifndef MXC_MAX_EXP_IO_LINES38+#define MXC_MAX_EXP_IO_LINES 039+#endif40+41+#define MXC_MAX_VIRTUAL_INTS 1642+#define MXC_VIRTUAL_INTS_BASE (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES)43+#define MXC_SDIO1_CARD_IRQ MXC_VIRTUAL_INTS_BASE44+#define MXC_SDIO2_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 1)45+#define MXC_SDIO3_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 2)46+47+#define MXC_MAX_INTS (MXC_MAX_INT_LINES + \48+ MXC_MAX_GPIO_LINES + \49+ MXC_MAX_EXP_IO_LINES + \50+ MXC_MAX_VIRTUAL_INTS)51+52+#endif /* __ASM_ARCH_MXC_HARDWARE_H__ */
+33
include/asm-arm/arch-mxc/io.h
···000000000000000000000000000000000
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+/*!12+ * @file io.h13+ * @brief This file contains some memory mapping macros.14+ * @note There is no real ISA or PCI buses. But have to define these macros15+ * for some drivers to compile.16+ *17+ * @ingroup System18+ */19+20+#ifndef __ASM_ARCH_MXC_IO_H__21+#define __ASM_ARCH_MXC_IO_H__22+23+/*! Allow IO space to be anywhere in the memory */24+#define IO_SPACE_LIMIT 0xffffffff25+26+/*!27+ * io address mapping macro28+ */29+#define __io(a) ((void __iomem *)(a))30+31+#define __mem_pci(a) (a)32+33+#endif
+38
include/asm-arm/arch-mxc/irqs.h
···00000000000000000000000000000000000000
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#ifndef __ASM_ARCH_MXC_IRQS_H__12+#define __ASM_ARCH_MXC_IRQS_H__13+14+#include <asm/hardware.h>15+16+/*!17+ * @file irqs.h18+ * @brief This file defines the number of normal interrupts and fast interrupts19+ *20+ * @ingroup Interrupt21+ */22+23+#define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_EXP_IO_BASE)24+25+#define MXC_IRQ_TO_GPIO(irq) ((irq) - MXC_GPIO_INT_BASE)26+#define MXC_GPIO_TO_IRQ(x) (MXC_GPIO_INT_BASE + x)27+28+/*!29+ * Number of normal interrupts30+ */31+#define NR_IRQS MXC_MAX_INTS32+33+/*!34+ * Number of fast interrupts35+ */36+#define NR_FIQS MXC_MAX_INTS37+38+#endif /* __ASM_ARCH_MXC_IRQS_H__ */
+36
include/asm-arm/arch-mxc/memory.h
···000000000000000000000000000000000000
···1+/*2+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.3+ */4+5+/*6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+11+#ifndef __ASM_ARCH_MXC_MEMORY_H__12+#define __ASM_ARCH_MXC_MEMORY_H__13+14+#include <asm/hardware.h>15+16+/*!17+ * @file memory.h18+ * @brief This file contains macros needed by the Linux kernel and drivers.19+ *20+ * @ingroup Memory21+ */22+23+/*!24+ * Virtual view <-> DMA view memory address translations25+ * This macro is used to translate the virtual address to an address26+ * suitable to be passed to set_dma_addr()27+ */28+#define __virt_to_bus(a) __virt_to_phys(a)29+30+/*!31+ * Used to convert an address for DMA operations to an address that the32+ * kernel can use.33+ */34+#define __bus_to_virt(a) __phys_to_virt(a)35+36+#endif /* __ASM_ARCH_MXC_MEMORY_H__ */
···1+/*2+ * Copyright (C) 1999 ARM Limited3+ * Copyright (C) 2000 Deep Blue Solutions Ltd4+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.5+ *6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License as published by8+ * the Free Software Foundation; either version 2 of the License, or9+ * (at your option) any later version.10+ *11+ * This program is distributed in the hope that it will be useful,12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14+ * GNU General Public License for more details.15+ *16+ * You should have received a copy of the GNU General Public License17+ * along with this program; if not, write to the Free Software18+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA19+ */20+21+#ifndef __ASM_ARCH_MXC_SYSTEM_H__22+#define __ASM_ARCH_MXC_SYSTEM_H__23+24+/*!25+ * @file system.h26+ * @brief This file contains idle and reset functions.27+ *28+ * @ingroup System29+ */30+31+/*!32+ * This function puts the CPU into idle mode. It is called by default_idle()33+ * in process.c file.34+ */35+static inline void arch_idle(void)36+{37+ cpu_do_idle();38+}39+40+/*41+ * This function resets the system. It is called by machine_restart().42+ *43+ * @param mode indicates different kinds of resets44+ */45+static inline void arch_reset(char mode)46+{47+ cpu_reset(0);48+}49+50+#endif /* __ASM_ARCH_MXC_SYSTEM_H__ */
+25
include/asm-arm/arch-mxc/timex.h
···0000000000000000000000000
···1+/*2+ * Copyright (C) 1999 ARM Limited3+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.4+ *5+ * This program is free software; you can redistribute it and/or modify6+ * it under the terms of the GNU General Public License as published by7+ * the Free Software Foundation; either version 2 of the License, or8+ * (at your option) any later version.9+ *10+ * This program is distributed in the hope that it will be useful,11+ * but WITHOUT ANY WARRANTY; without even the implied warranty of12+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13+ * GNU General Public License for more details.14+ *15+ * You should have received a copy of the GNU General Public License16+ * along with this program; if not, write to the Free Software17+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA18+ */19+20+#ifndef __ASM_ARCH_MXC_TIMEX_H__21+#define __ASM_ARCH_MXC_TIMEX_H__22+23+#include <asm/hardware.h> /* for CLOCK_TICK_RATE */24+25+#endif /* __ASM_ARCH_MXC_TIMEX_H__ */
···1+/*2+ * include/asm-arm/arch-mxc/uncompress.h3+ *4+ *5+ *6+ * Copyright (C) 1999 ARM Limited7+ * Copyright (C) Shane Nay (shane@minirl.com)8+ *9+ * This program is free software; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License as published by11+ * the Free Software Foundation; either version 2 of the License, or12+ * (at your option) any later version.13+ *14+ * This program is distributed in the hope that it will be useful,15+ * but WITHOUT ANY WARRANTY; without even the implied warranty of16+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the17+ * GNU General Public License for more details.18+ *19+ * You should have received a copy of the GNU General Public License20+ * along with this program; if not, write to the Free Software21+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA22+ */23+#ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__24+#define __ASM_ARCH_MXC_UNCOMPRESS_H__25+26+#define __MXC_BOOT_UNCOMPRESS27+28+#include <asm/hardware.h>29+#include <asm/processor.h>30+31+#define UART(x) (*(volatile unsigned long *)(serial_port + (x)))32+33+#define USR2 0x9834+#define USR2_TXFE (1<<14)35+#define TXR 0x4036+#define UCR1 0x8037+#define UCR1_UARTEN 138+39+/*40+ * The following code assumes the serial port has already been41+ * initialized by the bootloader. We search for the first enabled42+ * port in the most probable order. If you didn't setup a port in43+ * your bootloader then nothing will appear (which might be desired).44+ *45+ * This does not append a newline46+ */47+48+static void putc(int ch)49+{50+ static unsigned long serial_port = 0;51+52+ if (unlikely(serial_port == 0)) {53+ do {54+ serial_port = UART1_BASE_ADDR;55+ if (UART(UCR1) & UCR1_UARTEN)56+ break;57+ serial_port = UART2_BASE_ADDR;58+ if (UART(UCR1) & UCR1_UARTEN)59+ break;60+ return;61+ } while (0);62+ }63+64+ while (!(UART(USR2) & USR2_TXFE))65+ cpu_relax();66+67+ UART(TXR) = ch;68+}69+70+#define flush() do { } while (0)71+72+/*73+ * nothing to do74+ */75+#define arch_decomp_setup()76+77+#define arch_decomp_wdog()78+79+#endif /* __ASM_ARCH_MXC_UNCOMPRESS_H__ */
+36
include/asm-arm/arch-mxc/vmalloc.h
···000000000000000000000000000000000000
···1+/*2+ * Copyright (C) 2000 Russell King.3+ * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.4+ *5+ * This program is free software; you can redistribute it and/or modify6+ * it under the terms of the GNU General Public License as published by7+ * the Free Software Foundation; either version 2 of the License, or8+ * (at your option) any later version.9+ *10+ * This program is distributed in the hope that it will be useful,11+ * but WITHOUT ANY WARRANTY; without even the implied warranty of12+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13+ * GNU General Public License for more details.14+ *15+ * You should have received a copy of the GNU General Public License16+ * along with this program; if not, write to the Free Software17+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA18+ */19+20+#ifndef __ASM_ARCH_MXC_VMALLOC_H__21+#define __ASM_ARCH_MXC_VMALLOC_H__22+23+/*!24+ * @file vmalloc.h25+ *26+ * @brief This file contains platform specific macros for vmalloc.27+ *28+ * @ingroup System29+ */30+31+/*!32+ * vmalloc ending address33+ */34+#define VMALLOC_END 0xF400000035+36+#endif /* __ASM_ARCH_MXC_VMALLOC_H__ */
···6465/* Timer x Control register: Timer enable */66#define SYS_TCx_TEN __REGBIT(15)67-#define SYS_TCx_TEN_DIS __REGVAL(SYS_TCx_TEN, 1)68#define SYS_TCx_TEN_EN __REGVAL(SYS_TCx_TEN, 1)6970/* Timer x Control register: CPU debug mode */
···6465/* Timer x Control register: Timer enable */66#define SYS_TCx_TEN __REGBIT(15)67+#define SYS_TCx_TEN_DIS __REGVAL(SYS_TCx_TEN, 0)68#define SYS_TCx_TEN_EN __REGVAL(SYS_TCx_TEN, 1)6970/* Timer x Control register: CPU debug mode */
+15-1
include/asm-arm/arch-pxa/pm.h
···7 *8 */910-extern int pxa_pm_prepare(suspend_state_t state);0000000000000011extern int pxa_pm_enter(suspend_state_t state);
···7 *8 */910+struct pxa_cpu_pm_fns {11+ int save_size;12+ void (*save)(unsigned long *);13+ void (*restore)(unsigned long *);14+ int (*valid)(suspend_state_t state);15+ void (*enter)(suspend_state_t state);16+};17+18+extern struct pxa_cpu_pm_fns *pxa_cpu_pm_fns;19+20+/* sleep.S */21+extern void pxa25x_cpu_suspend(unsigned int);22+extern void pxa27x_cpu_suspend(unsigned int);23+extern void pxa_cpu_resume(void);24+25extern int pxa_pm_enter(suspend_state_t state);
···1+/* linux/include/asm-arm/arch-s3c2400/map.h2+ *3+ * Copyright 2003,2007 Simtec Electronics4+ * http://armlinux.simtec.co.uk/5+ * Ben Dooks <ben@simtec.co.uk>6+ *7+ * Copyright 2003, Lucas Correia Villa Real8+ *9+ * S3C2400 - Memory map definitions10+ *11+ * This program is free software; you can redistribute it and/or modify12+ * it under the terms of the GNU General Public License version 2 as13+ * published by the Free Software Foundation.14+*/15+16+#define S3C2400_PA_MEMCTRL (0x14000000)17+#define S3C2400_PA_USBHOST (0x14200000)18+#define S3C2400_PA_IRQ (0x14400000)19+#define S3C2400_PA_DMA (0x14600000)20+#define S3C2400_PA_CLKPWR (0x14800000)21+#define S3C2400_PA_LCD (0x14A00000)22+#define S3C2400_PA_UART (0x15000000)23+#define S3C2400_PA_TIMER (0x15100000)24+#define S3C2400_PA_USBDEV (0x15200140)25+#define S3C2400_PA_WATCHDOG (0x15300000)26+#define S3C2400_PA_IIC (0x15400000)27+#define S3C2400_PA_IIS (0x15508000)28+#define S3C2400_PA_GPIO (0x15600000)29+#define S3C2400_PA_RTC (0x15700040)30+#define S3C2400_PA_ADC (0x15800000)31+#define S3C2400_PA_SPI (0x15900000)32+33+#define S3C2400_PA_MMC (0x15A00000)34+#define S3C2400_SZ_MMC SZ_1M35+36+/* physical addresses of all the chip-select areas */37+38+#define S3C2400_CS0 (0x00000000)39+#define S3C2400_CS1 (0x02000000)40+#define S3C2400_CS2 (0x04000000)41+#define S3C2400_CS3 (0x06000000)42+#define S3C2400_CS4 (0x08000000)43+#define S3C2400_CS5 (0x0A000000)44+#define S3C2400_CS6 (0x0C000000)45+#define S3C2400_CS7 (0x0E000000)46+47+#define S3C2400_SDRAM_PA (S3C2400_CS6)48+49+/* Use a single interface for common resources between S3C24XX cpus */50+51+#define S3C24XX_PA_IRQ S3C2400_PA_IRQ52+#define S3C24XX_PA_MEMCTRL S3C2400_PA_MEMCTRL53+#define S3C24XX_PA_USBHOST S3C2400_PA_USBHOST54+#define S3C24XX_PA_DMA S3C2400_PA_DMA55+#define S3C24XX_PA_CLKPWR S3C2400_PA_CLKPWR56+#define S3C24XX_PA_LCD S3C2400_PA_LCD57+#define S3C24XX_PA_UART S3C2400_PA_UART58+#define S3C24XX_PA_TIMER S3C2400_PA_TIMER59+#define S3C24XX_PA_USBDEV S3C2400_PA_USBDEV60+#define S3C24XX_PA_WATCHDOG S3C2400_PA_WATCHDOG61+#define S3C24XX_PA_IIC S3C2400_PA_IIC62+#define S3C24XX_PA_IIS S3C2400_PA_IIS63+#define S3C24XX_PA_GPIO S3C2400_PA_GPIO64+#define S3C24XX_PA_RTC S3C2400_PA_RTC65+#define S3C24XX_PA_ADC S3C2400_PA_ADC66+#define S3C24XX_PA_SPI S3C2400_PA_SPI
+23
include/asm-arm/arch-s3c2400/memory.h
···00000000000000000000000
···1+/* linux/include/asm-arm/arch-s3c2400/memory.h2+ * from linux/include/asm-arm/arch-rpc/memory.h3+ *4+ * Copyright 2007 Simtec Electronics5+ * http://armlinux.simtec.co.uk/6+ * Ben Dooks <ben@simtec.co.uk>7+ *8+ * Copyright (C) 1996,1997,1998 Russell King.9+ *10+ * This program is free software; you can redistribute it and/or modify11+ * it under the terms of the GNU General Public License version 2 as12+ * published by the Free Software Foundation.13+*/14+15+#ifndef __ASM_ARCH_MEMORY_H16+#define __ASM_ARCH_MEMORY_H17+18+#define PHYS_OFFSET UL(0x0C000000)19+20+#define __virt_to_bus(x) __virt_to_phys(x)21+#define __bus_to_virt(x) __phys_to_virt(x)22+23+#endif
···13#ifndef __ASM_ARCH_MAP_H14#define __ASM_ARCH_MAP_H1516-/* we have a bit of a tight squeeze to fit all our registers from17- * 0xF00000000 upwards, since we use all of the nGCS space in some18- * capacity, and also need to fit the S3C2410 registers in as well...19- *20- * we try to ensure stuff like the IRQ registers are available for21- * an single MOVS instruction (ie, only 8 bits of set data)22- *23- * Note, we are trying to remove some of these from the implementation24- * as they are only useful to certain drivers...25- */2627-#ifndef __ASSEMBLY__28-#define S3C2410_ADDR(x) ((void __iomem __force *)0xF0000000 + (x))29-#else30-#define S3C2410_ADDR(x) (0xF0000000 + (x))31-#endif32-33-#define S3C2400_ADDR(x) S3C2410_ADDR(x)3435/* interrupt controller is the first thing we put in, to make36 * the assembly code for the irq detection easier37 */38-#define S3C24XX_VA_IRQ S3C2410_ADDR(0x00000000)39-#define S3C2400_PA_IRQ (0x14400000)40#define S3C2410_PA_IRQ (0x4A000000)41#define S3C24XX_SZ_IRQ SZ_1M4243/* memory controller registers */44-#define S3C24XX_VA_MEMCTRL S3C2410_ADDR(0x00100000)45-#define S3C2400_PA_MEMCTRL (0x14000000)46#define S3C2410_PA_MEMCTRL (0x48000000)47#define S3C24XX_SZ_MEMCTRL SZ_1M4849/* USB host controller */50-#define S3C2400_PA_USBHOST (0x14200000)51#define S3C2410_PA_USBHOST (0x49000000)52#define S3C24XX_SZ_USBHOST SZ_1M5354/* DMA controller */55-#define S3C2400_PA_DMA (0x14600000)56#define S3C2410_PA_DMA (0x4B000000)57#define S3C24XX_SZ_DMA SZ_1M5859/* Clock and Power management */60-#define S3C24XX_VA_CLKPWR S3C2410_ADDR(0x00200000)61-#define S3C2400_PA_CLKPWR (0x14800000)62#define S3C2410_PA_CLKPWR (0x4C000000)63#define S3C24XX_SZ_CLKPWR SZ_1M6465/* LCD controller */66-#define S3C24XX_VA_LCD S3C2410_ADDR(0x00300000)67-#define S3C2400_PA_LCD (0x14A00000)68#define S3C2410_PA_LCD (0x4D000000)69#define S3C24XX_SZ_LCD SZ_1M70···50#define S3C2410_PA_NAND (0x4E000000)51#define S3C24XX_SZ_NAND SZ_1M5253-/* MMC controller - available on the S3C2400 */54-#define S3C2400_PA_MMC (0x15A00000)55-#define S3C2400_SZ_MMC SZ_1M56-57/* UARTs */58-#define S3C24XX_VA_UART S3C2410_ADDR(0x00400000)59-#define S3C2400_PA_UART (0x15000000)60#define S3C2410_PA_UART (0x50000000)61#define S3C24XX_SZ_UART SZ_1M6263/* Timers */64-#define S3C24XX_VA_TIMER S3C2410_ADDR(0x00500000)65-#define S3C2400_PA_TIMER (0x15100000)66#define S3C2410_PA_TIMER (0x51000000)67#define S3C24XX_SZ_TIMER SZ_1M6869/* USB Device port */70-#define S3C24XX_VA_USBDEV S3C2410_ADDR(0x00600000)71-#define S3C2400_PA_USBDEV (0x15200140)72#define S3C2410_PA_USBDEV (0x52000000)73#define S3C24XX_SZ_USBDEV SZ_1M7475/* Watchdog */76-#define S3C24XX_VA_WATCHDOG S3C2410_ADDR(0x00700000)77-#define S3C2400_PA_WATCHDOG (0x15300000)78#define S3C2410_PA_WATCHDOG (0x53000000)79#define S3C24XX_SZ_WATCHDOG SZ_1M8081/* IIC hardware controller */82-#define S3C2400_PA_IIC (0x15400000)83#define S3C2410_PA_IIC (0x54000000)84#define S3C24XX_SZ_IIC SZ_1M8586/* IIS controller */87-#define S3C2400_PA_IIS (0x15508000)88#define S3C2410_PA_IIS (0x55000000)89#define S3C24XX_SZ_IIS SZ_1M90···83 * it is the same distance apart from the UART in the84 * phsyical address space, as the initial mapping for the IO85 * is done as a 1:1 maping. This puts it (currently) at86- * 0xF6800000, which is not in the way of any current mapping87 * by the base system.88*/8990-#define S3C2400_PA_GPIO (0x15600000)91#define S3C2410_PA_GPIO (0x56000000)92#define S3C24XX_VA_GPIO ((S3C2410_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)93#define S3C24XX_SZ_GPIO SZ_1M9495/* RTC */96-#define S3C2400_PA_RTC (0x15700040)97#define S3C2410_PA_RTC (0x57000000)98#define S3C24XX_SZ_RTC SZ_1M99100/* ADC */101-#define S3C2400_PA_ADC (0x15800000)102#define S3C2410_PA_ADC (0x58000000)103#define S3C24XX_SZ_ADC SZ_1M104105/* SPI */106-#define S3C2400_PA_SPI (0x15900000)107#define S3C2410_PA_SPI (0x59000000)108#define S3C24XX_SZ_SPI SZ_1M109···140141#define S3C2410_SDRAM_PA (S3C2410_CS6)142143-#define S3C2400_CS0 (0x00000000)144-#define S3C2400_CS1 (0x02000000)145-#define S3C2400_CS2 (0x04000000)146-#define S3C2400_CS3 (0x06000000)147-#define S3C2400_CS4 (0x08000000)148-#define S3C2400_CS5 (0x0A000000)149-#define S3C2400_CS6 (0x0C000000)150-#define S3C2400_CS7 (0x0E000000)151-152-#define S3C2400_SDRAM_PA (S3C2400_CS6)153-154/* Use a single interface for common resources between S3C24XX cpus */155156-#ifdef CONFIG_CPU_S3C2400157-#define S3C24XX_PA_IRQ S3C2400_PA_IRQ158-#define S3C24XX_PA_MEMCTRL S3C2400_PA_MEMCTRL159-#define S3C24XX_PA_USBHOST S3C2400_PA_USBHOST160-#define S3C24XX_PA_DMA S3C2400_PA_DMA161-#define S3C24XX_PA_CLKPWR S3C2400_PA_CLKPWR162-#define S3C24XX_PA_LCD S3C2400_PA_LCD163-#define S3C24XX_PA_UART S3C2400_PA_UART164-#define S3C24XX_PA_TIMER S3C2400_PA_TIMER165-#define S3C24XX_PA_USBDEV S3C2400_PA_USBDEV166-#define S3C24XX_PA_WATCHDOG S3C2400_PA_WATCHDOG167-#define S3C24XX_PA_IIC S3C2400_PA_IIC168-#define S3C24XX_PA_IIS S3C2400_PA_IIS169-#define S3C24XX_PA_GPIO S3C2400_PA_GPIO170-#define S3C24XX_PA_RTC S3C2400_PA_RTC171-#define S3C24XX_PA_ADC S3C2400_PA_ADC172-#define S3C24XX_PA_SPI S3C2400_PA_SPI173-#else174#define S3C24XX_PA_IRQ S3C2410_PA_IRQ175#define S3C24XX_PA_MEMCTRL S3C2410_PA_MEMCTRL176#define S3C24XX_PA_USBHOST S3C2410_PA_USBHOST···158#define S3C24XX_PA_RTC S3C2410_PA_RTC159#define S3C24XX_PA_ADC S3C2410_PA_ADC160#define S3C24XX_PA_SPI S3C2410_PA_SPI161-#endif162163/* deal with the registers that move under the 2412/2413 */164
···13#ifndef __ASM_ARCH_MAP_H14#define __ASM_ARCH_MAP_H1516+#include <asm/plat-s3c/map.h>0000000001718+#define S3C2410_ADDR(x) S3C_ADDR(x)0000001920/* interrupt controller is the first thing we put in, to make21 * the assembly code for the irq detection easier22 */23+#define S3C24XX_VA_IRQ S3C_VA_IRQ024#define S3C2410_PA_IRQ (0x4A000000)25#define S3C24XX_SZ_IRQ SZ_1M2627/* memory controller registers */28+#define S3C24XX_VA_MEMCTRL S3C_VA_MEM029#define S3C2410_PA_MEMCTRL (0x48000000)30#define S3C24XX_SZ_MEMCTRL SZ_1M3132/* USB host controller */033#define S3C2410_PA_USBHOST (0x49000000)34#define S3C24XX_SZ_USBHOST SZ_1M3536/* DMA controller */037#define S3C2410_PA_DMA (0x4B000000)38#define S3C24XX_SZ_DMA SZ_1M3940/* Clock and Power management */41+#define S3C24XX_VA_CLKPWR S3C_VA_SYS042#define S3C2410_PA_CLKPWR (0x4C000000)43#define S3C24XX_SZ_CLKPWR SZ_1M4445/* LCD controller */0046#define S3C2410_PA_LCD (0x4D000000)47#define S3C24XX_SZ_LCD SZ_1M48···72#define S3C2410_PA_NAND (0x4E000000)73#define S3C24XX_SZ_NAND SZ_1M74000075/* UARTs */76+#define S3C24XX_VA_UART S3C_VA_UART077#define S3C2410_PA_UART (0x50000000)78#define S3C24XX_SZ_UART SZ_1M7980/* Timers */81+#define S3C24XX_VA_TIMER S3C_VA_TIMER082#define S3C2410_PA_TIMER (0x51000000)83#define S3C24XX_SZ_TIMER SZ_1M8485/* USB Device port */0086#define S3C2410_PA_USBDEV (0x52000000)87#define S3C24XX_SZ_USBDEV SZ_1M8889/* Watchdog */90+#define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG091#define S3C2410_PA_WATCHDOG (0x53000000)92#define S3C24XX_SZ_WATCHDOG SZ_1M9394/* IIC hardware controller */095#define S3C2410_PA_IIC (0x54000000)96#define S3C24XX_SZ_IIC SZ_1M9798/* IIS controller */099#define S3C2410_PA_IIS (0x55000000)100#define S3C24XX_SZ_IIS SZ_1M101···116 * it is the same distance apart from the UART in the117 * phsyical address space, as the initial mapping for the IO118 * is done as a 1:1 maping. This puts it (currently) at119+ * 0xFA800000, which is not in the way of any current mapping120 * by the base system.121*/1220123#define S3C2410_PA_GPIO (0x56000000)124#define S3C24XX_VA_GPIO ((S3C2410_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)125#define S3C24XX_SZ_GPIO SZ_1M126127/* RTC */0128#define S3C2410_PA_RTC (0x57000000)129#define S3C24XX_SZ_RTC SZ_1M130131/* ADC */0132#define S3C2410_PA_ADC (0x58000000)133#define S3C24XX_SZ_ADC SZ_1M134135/* SPI */0136#define S3C2410_PA_SPI (0x59000000)137#define S3C24XX_SZ_SPI SZ_1M138···177178#define S3C2410_SDRAM_PA (S3C2410_CS6)17900000000000180/* Use a single interface for common resources between S3C24XX cpus */181000000000000000000182#define S3C24XX_PA_IRQ S3C2410_PA_IRQ183#define S3C24XX_PA_MEMCTRL S3C2410_PA_MEMCTRL184#define S3C24XX_PA_USBHOST S3C2410_PA_USBHOST···224#define S3C24XX_PA_RTC S3C2410_PA_RTC225#define S3C24XX_PA_ADC S3C2410_PA_ADC226#define S3C24XX_PA_SPI S3C2410_PA_SPI0227228/* deal with the registers that move under the 2412/2413 */229
-13
include/asm-arm/arch-s3c2410/memory.h
···11#ifndef __ASM_ARCH_MEMORY_H12#define __ASM_ARCH_MEMORY_H1314-/*15- * DRAM starts at 0x30000000 for S3C2410/S3C244016- * and at 0x0C000000 for S3C240017- */18-#ifdef CONFIG_CPU_S3C240019-#define PHYS_OFFSET UL(0x0C000000)20-#else21#define PHYS_OFFSET UL(0x30000000)22-#endif23-24-/*25- * These are exactly the same on the S3C2410 as the26- * physical memory view.27-*/2829#define __virt_to_bus(x) __virt_to_phys(x)30#define __bus_to_virt(x) __phys_to_virt(x)
···1/* linux/include/asm-arm/arch-s3c2410/uncompress.h2 *3- * Copyright (c) 2003 Simtec Electronics04 * Ben Dooks <ben@simtec.co.uk>5 *6 * S3C2410 - uncompress code···14#ifndef __ASM_ARCH_UNCOMPRESS_H15#define __ASM_ARCH_UNCOMPRESS_H1617-typedef unsigned int upf_t; /* cannot include linux/serial_core.h */18-19-/* defines for UART registers */20-#include "asm/arch/regs-serial.h"21-#include "asm/arch/regs-gpio.h"22-#include "asm/arch/regs-watchdog.h"23-24#include <asm/arch/map.h>2526/* working in physical space... */27#undef S3C2410_GPIOREG28-#undef S3C2410_WDOGREG29-30#define S3C2410_GPIOREG(x) ((S3C24XX_PA_GPIO + (x)))31-#define S3C2410_WDOGREG(x) ((S3C24XX_PA_WATCHDOG + (x)))3233-/* how many bytes we allow into the FIFO at a time in FIFO mode */34-#define FIFO_MAX (14)3536-#define uart_base S3C24XX_PA_UART + (0x4000*CONFIG_S3C2410_LOWLEVEL_UART_PORT)37-38-static __inline__ void39-uart_wr(unsigned int reg, unsigned int val)40{41- volatile unsigned int *ptr;4243- ptr = (volatile unsigned int *)(reg + uart_base);44- *ptr = val;045}4647-static __inline__ unsigned int48-uart_rd(unsigned int reg)49{50- volatile unsigned int *ptr;5152- ptr = (volatile unsigned int *)(reg + uart_base);53- return *ptr;54-}55-56-57-/* we can deal with the case the UARTs are being run58- * in FIFO mode, so that we don't hold up our execution59- * waiting for tx to happen...60-*/61-62-static void putc(int ch)63-{64- int cpuid = S3C2410_GSTATUS1_2410;65-66-#ifndef CONFIG_CPU_S3C240067 cpuid = *((volatile unsigned int *)S3C2410_GSTATUS1);68 cpuid &= S3C2410_GSTATUS1_IDMASK;69-#endif7071- if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) {72- int level;73-74- while (1) {75- level = uart_rd(S3C2410_UFSTAT);76-77- if (cpuid == S3C2410_GSTATUS1_2440 ||78- cpuid == S3C2410_GSTATUS1_2442) {79- level &= S3C2440_UFSTAT_TXMASK;80- level >>= S3C2440_UFSTAT_TXSHIFT;81- } else {82- level &= S3C2410_UFSTAT_TXMASK;83- level >>= S3C2410_UFSTAT_TXSHIFT;84- }85-86- if (level < FIFO_MAX)87- break;88- }89-90 } else {91- /* not using fifos */92-93- while ((uart_rd(S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE) != S3C2410_UTRSTAT_TXE)94- barrier();95 }96-97- /* write byte to transmission register */98- uart_wr(S3C2410_UTXH, ch);99}100-101-static inline void flush(void)102-{103-}104-105-#define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0)106-107-/* CONFIG_S3C2410_BOOT_WATCHDOG108- *109- * Simple boot-time watchdog setup, to reboot the system if there is110- * any problem with the boot process111-*/112-113-#ifdef CONFIG_S3C2410_BOOT_WATCHDOG114-115-#define WDOG_COUNT (0xff00)116-117-static inline void arch_decomp_wdog(void)118-{119- __raw_writel(WDOG_COUNT, S3C2410_WTCNT);120-}121-122-static void arch_decomp_wdog_start(void)123-{124- __raw_writel(WDOG_COUNT, S3C2410_WTDAT);125- __raw_writel(WDOG_COUNT, S3C2410_WTCNT);126- __raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128 | S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x80), S3C2410_WTCON);127-}128-129-#else130-#define arch_decomp_wdog_start()131-#define arch_decomp_wdog()132-#endif133-134-#ifdef CONFIG_S3C2410_BOOT_ERROR_RESET135-136-static void arch_decomp_error(const char *x)137-{138- putstr("\n\n");139- putstr(x);140- putstr("\n\n -- System resetting\n");141-142- __raw_writel(0x4000, S3C2410_WTDAT);143- __raw_writel(0x4000, S3C2410_WTCNT);144- __raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128 | S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x40), S3C2410_WTCON);145-146- while(1);147-}148-149-#define arch_error arch_decomp_error150-#endif151-152-static void error(char *err);153-154-static void155-arch_decomp_setup(void)156-{157- /* we may need to setup the uart(s) here if we are not running158- * on an BAST... the BAST will have left the uarts configured159- * after calling linux.160- */161-162- arch_decomp_wdog_start();163-}164-165166#endif /* __ASM_ARCH_UNCOMPRESS_H */
···1+/*2+ * include/asm-arm/arch-sa1100/jornada720.h3+ *4+ * This file contains SSP/MCU communication definitions for HP Jornada 710/720/7285+ *6+ * Copyright (C) 2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>7+ * Copyright (C) 2000 John Ankcorn <jca@lcs.mit.edu>8+ *9+ * This program is free software; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License version 2 as11+ * published by the Free Software Foundation.12+ *13+ */14+15+ /* HP Jornada 7xx microprocessor commands */16+#define GETBATTERYDATA 0xc017+#define GETSCANKEYCODE 0x9018+#define GETTOUCHSAMPLES 0xa019+#define GETCONTRAST 0xD020+#define SETCONTRAST 0xD121+#define GETBRIGHTNESS 0xD222+#define SETBRIGHTNESS 0xD323+#define CONTRASTOFF 0xD824+#define BRIGHTNESSOFF 0xD925+#define PWMOFF 0xDF26+#define TXDUMMY 0x1127+#define ERRORCODE 0x00
+2-1
include/asm-arm/elf.h
···1#ifndef __ASMARM_ELF_H2#define __ASMARM_ELF_H3004#ifndef __ASSEMBLY__5/*6 * ELF register definitions..7 */8#include <asm/ptrace.h>9#include <asm/user.h>10-#include <asm/hwcap.h>1112typedef unsigned long elf_greg_t;13typedef unsigned long elf_freg_t[3];
···1#ifndef __ASMARM_ELF_H2#define __ASMARM_ELF_H34+#include <asm/hwcap.h>5+6#ifndef __ASSEMBLY__7/*8 * ELF register definitions..9 */10#include <asm/ptrace.h>11#include <asm/user.h>01213typedef unsigned long elf_greg_t;14typedef unsigned long elf_freg_t[3];
···1+/* linux/include/asm-arm/plat-s3c/debug-macro.S2+ *3+ * Copyright 2005, 2007 Simtec Electronics4+ * http://armlinux.simtec.co.uk/5+ * Ben Dooks <ben@simtec.co.uk>6+ *7+ * This program is free software; you can redistribute it and/or modify8+ * it under the terms of the GNU General Public License version 2 as9+ * published by the Free Software Foundation.10+*/11+12+#include <asm/plat-s3c/regs-serial.h>13+14+/* The S3C2440 implementations are used by default as they are the15+ * most widely re-used */16+17+ .macro fifo_level_s3c2440 rd, rx18+ ldr \rd, [ \rx, # S3C2410_UFSTAT ]19+ and \rd, \rd, #S3C2440_UFSTAT_TXMASK20+ .endm21+22+#ifndef fifo_level23+#define fifo_level fifo_level_s3c241024+#endif25+26+ .macro fifo_full_s3c2440 rd, rx27+ ldr \rd, [ \rx, # S3C2410_UFSTAT ]28+ tst \rd, #S3C2440_UFSTAT_TXFULL29+ .endm30+31+#ifndef fifo_full32+#define fifo_full fifo_full_s3c244033+#endif34+35+ .macro senduart,rd,rx36+ strb \rd, [\rx, # S3C2410_UTXH ]37+ .endm38+39+ .macro busyuart, rd, rx40+ ldr \rd, [ \rx, # S3C2410_UFCON ]41+ tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?42+ beq 1001f @43+ @ FIFO enabled...44+1003:45+ fifo_full \rd, \rx46+ bne 1003b47+ b 1002f48+49+1001:50+ @ busy waiting for non fifo51+ ldr \rd, [ \rx, # S3C2410_UTRSTAT ]52+ tst \rd, #S3C2410_UTRSTAT_TXFE53+ beq 1001b54+55+1002: @ exit busyuart56+ .endm57+58+ .macro waituart,rd,rx59+ ldr \rd, [ \rx, # S3C2410_UFCON ]60+ tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?61+ beq 1001f @62+ @ FIFO enabled...63+1003:64+ fifo_level \rd, \rx65+ teq \rd, #066+ bne 1003b67+ b 1002f68+1001:69+ @ idle waiting for non fifo70+ ldr \rd, [ \rx, # S3C2410_UTRSTAT ]71+ tst \rd, #S3C2410_UTRSTAT_TXFE72+ beq 1001b73+74+1002: @ exit busyuart75+ .endm
+40
include/asm-arm/plat-s3c/map.h
···0000000000000000000000000000000000000000
···1+/* linux/include/asm-arm/plat-s3c/map.h2+ *3+ * Copyright 2003, 2007 Simtec Electronics4+ * http://armlinux.simtec.co.uk/5+ * Ben Dooks <ben@simtec.co.uk>6+ *7+ * S3C - Memory map definitions (virtual addresses)8+ *9+ * This program is free software; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License version 2 as11+ * published by the Free Software Foundation.12+*/13+14+#ifndef __ASM_PLAT_MAP_H15+#define __ASM_PLAT_MAP_H __FILE__16+17+/* Fit all our registers in at 0xF4000000 upwards, trying to use as18+ * little of the VA space as possible so vmalloc and friends have a19+ * better chance of getting memory.20+ *21+ * we try to ensure stuff like the IRQ registers are available for22+ * an single MOVS instruction (ie, only 8 bits of set data)23+ */24+25+#define S3C_ADDR_BASE (0xF4000000)26+27+#ifndef __ASSEMBLY__28+#define S3C_ADDR(x) ((void __iomem __force *)S3C_ADDR_BASE + (x))29+#else30+#define S3C_ADDR(x) (S3C_ADDR_BASE + (x))31+#endif32+33+#define S3C_VA_IRQ S3C_ADDR(0x000000000) /* irq controller(s) */34+#define S3C_VA_SYS S3C_ADDR(0x001000000) /* system control */35+#define S3C_VA_MEM S3C_ADDR(0x002000000) /* system control */36+#define S3C_VA_TIMER S3C_ADDR(0x003000000) /* timer block */37+#define S3C_VA_WATCHDOG S3C_ADDR(0x004000000) /* watchdog */38+#define S3C_VA_UART S3C_ADDR(0x010000000) /* UART */39+40+#endif /* __ASM_PLAT_MAP_H */
···1+/* linux/include/asm-arm/plat-s3c/uncompress.h2+ *3+ * Copyright 2003, 2007 Simtec Electronics4+ * http://armlinux.simtec.co.uk/5+ * Ben Dooks <ben@simtec.co.uk>6+ *7+ * S3C - uncompress code8+ *9+ * This program is free software; you can redistribute it and/or modify10+ * it under the terms of the GNU General Public License version 2 as11+ * published by the Free Software Foundation.12+*/13+14+#ifndef __ASM_PLAT_UNCOMPRESS_H15+#define __ASM_PLAT_UNCOMPRESS_H16+17+typedef unsigned int upf_t; /* cannot include linux/serial_core.h */18+19+/* uart setup */20+21+static unsigned int fifo_mask;22+static unsigned int fifo_max;23+24+/* forward declerations */25+26+static void arch_detect_cpu(void);27+28+/* defines for UART registers */29+30+#include "asm/plat-s3c/regs-serial.h"31+#include "asm/plat-s3c/regs-watchdog.h"32+33+/* working in physical space... */34+#undef S3C2410_WDOGREG35+#define S3C2410_WDOGREG(x) ((S3C24XX_PA_WATCHDOG + (x)))36+37+/* how many bytes we allow into the FIFO at a time in FIFO mode */38+#define FIFO_MAX (14)39+40+#define uart_base S3C24XX_PA_UART + (0x4000*CONFIG_S3C_LOWLEVEL_UART_PORT)41+42+static __inline__ void43+uart_wr(unsigned int reg, unsigned int val)44+{45+ volatile unsigned int *ptr;46+47+ ptr = (volatile unsigned int *)(reg + uart_base);48+ *ptr = val;49+}50+51+static __inline__ unsigned int52+uart_rd(unsigned int reg)53+{54+ volatile unsigned int *ptr;55+56+ ptr = (volatile unsigned int *)(reg + uart_base);57+ return *ptr;58+}59+60+/* we can deal with the case the UARTs are being run61+ * in FIFO mode, so that we don't hold up our execution62+ * waiting for tx to happen...63+*/64+65+static void putc(int ch)66+{67+ if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) {68+ int level;69+70+ while (1) {71+ level = uart_rd(S3C2410_UFSTAT);72+ level &= fifo_mask;73+74+ if (level < fifo_max)75+ break;76+ }77+78+ } else {79+ /* not using fifos */80+81+ while ((uart_rd(S3C2410_UTRSTAT) & S3C2410_UTRSTAT_TXE) != S3C2410_UTRSTAT_TXE)82+ barrier();83+ }84+85+ /* write byte to transmission register */86+ uart_wr(S3C2410_UTXH, ch);87+}88+89+static inline void flush(void)90+{91+}92+93+#define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0)94+95+/* CONFIG_S3C_BOOT_WATCHDOG96+ *97+ * Simple boot-time watchdog setup, to reboot the system if there is98+ * any problem with the boot process99+*/100+101+#ifdef CONFIG_S3C_BOOT_WATCHDOG102+103+#define WDOG_COUNT (0xff00)104+105+static inline void arch_decomp_wdog(void)106+{107+ __raw_writel(WDOG_COUNT, S3C2410_WTCNT);108+}109+110+static void arch_decomp_wdog_start(void)111+{112+ __raw_writel(WDOG_COUNT, S3C2410_WTDAT);113+ __raw_writel(WDOG_COUNT, S3C2410_WTCNT);114+ __raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128 | S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x80), S3C2410_WTCON);115+}116+117+#else118+#define arch_decomp_wdog_start()119+#define arch_decomp_wdog()120+#endif121+122+#ifdef CONFIG_S3C_BOOT_ERROR_RESET123+124+static void arch_decomp_error(const char *x)125+{126+ putstr("\n\n");127+ putstr(x);128+ putstr("\n\n -- System resetting\n");129+130+ __raw_writel(0x4000, S3C2410_WTDAT);131+ __raw_writel(0x4000, S3C2410_WTCNT);132+ __raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128 | S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x40), S3C2410_WTCON);133+134+ while(1);135+}136+137+#define arch_error arch_decomp_error138+#endif139+140+static void error(char *err);141+142+static void143+arch_decomp_setup(void)144+{145+ /* we may need to setup the uart(s) here if we are not running146+ * on an BAST... the BAST will have left the uarts configured147+ * after calling linux.148+ */149+150+ arch_detect_cpu();151+ arch_decomp_wdog_start();152+}153+154+155+#endif /* __ASM_PLAT_UNCOMPRESS_H */