Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 3657/1: S3C24XX: Documentation update of Overview.txt [ARM] Update mach-types [ARM] 3656/1: S3C2412: Add S3C2412 and S3C2413 documenation [ARM] 3654/1: add ajeco 1arm sbc support [ARM] fix drivers/mfd/ucb1x00-core.c IRQ probing bug [ARM] 3651/1: S3C24XX: Make arch list more detailed [ARM] 3650/1: S3C2412: Update s3c2410_defconfig [ARM] 3649/1: S3C24XX: Fix capitalisation of CPU on SMDK2440 [ARM] 3612/1: make pci bus optional for ixp4xx platform [ARM] Remove MODE_(SVC|IRQ|FIQ|USR) and DEFAULT_FIQ [ARM] Remove save_lr/restore_pc macros [ARM] Remove partial non-v6 binutils compatibility [ARM] Remove LOADREGS macro [ARM] Remove RETINSTR macro
This commit is contained in:
commit
f6e6e88373
45 changed files with 1515 additions and 192 deletions
|
@ -7,11 +7,13 @@ Introduction
|
|||
------------
|
||||
|
||||
The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported
|
||||
by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and
|
||||
the S3C2440 are supported CPUs.
|
||||
by the 's3c2410' architecture of ARM Linux. Currently the S3C2410,
|
||||
S3C2440 and S3C2442 devices are supported.
|
||||
|
||||
Support for the S3C2400 series is in progress.
|
||||
|
||||
Support for the S3C2412 and S3C2413 CPUs is being merged.
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
@ -43,9 +45,18 @@ Machines
|
|||
|
||||
Samsung's own development board, geared for PDA work.
|
||||
|
||||
Samsung/Aiji SMDK2412
|
||||
|
||||
The S3C2412 version of the SMDK2440.
|
||||
|
||||
Samsung/Aiji SMDK2413
|
||||
|
||||
The S3C2412 version of the SMDK2440.
|
||||
|
||||
Samsung/Meritech SMDK2440
|
||||
|
||||
The S3C2440 compatible version of the SMDK2440
|
||||
The S3C2440 compatible version of the SMDK2440, which has the
|
||||
option of an S3C2440 or S3C2442 CPU module.
|
||||
|
||||
Thorcom VR1000
|
||||
|
||||
|
@ -211,24 +222,6 @@ Port Contributors
|
|||
Lucas Correia Villa Real (S3C2400 port)
|
||||
|
||||
|
||||
Document Changes
|
||||
----------------
|
||||
|
||||
05 Sep 2004 - BJD - Added Document Changes section
|
||||
05 Sep 2004 - BJD - Added Klaus Fetscher to list of contributors
|
||||
25 Oct 2004 - BJD - Added Dimitry Andric to list of contributors
|
||||
25 Oct 2004 - BJD - Updated the MTD from the 2.6.9 merge
|
||||
21 Jan 2005 - BJD - Added rx3715, added Shannon to contributors
|
||||
10 Feb 2005 - BJD - Added Guillaume Gourat to contributors
|
||||
02 Mar 2005 - BJD - Added SMDK2440 to list of machines
|
||||
06 Mar 2005 - BJD - Added Christer Weinigel
|
||||
08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction
|
||||
08 Mar 2005 - BJD - Added section on adding machines
|
||||
09 Sep 2005 - BJD - Added section on platform data
|
||||
11 Feb 2006 - BJD - Added I2C, RTC and Watchdog sections
|
||||
11 Feb 2006 - BJD - Added Osiris machine, and S3C2400 information
|
||||
|
||||
|
||||
Document Author
|
||||
---------------
|
||||
|
||||
|
|
120
Documentation/arm/Samsung-S3C24XX/S3C2412.txt
Normal file
120
Documentation/arm/Samsung-S3C24XX/S3C2412.txt
Normal file
|
@ -0,0 +1,120 @@
|
|||
S3C2412 ARM Linux Overview
|
||||
==========================
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
The S3C2412 is part of the S3C24XX range of ARM9 System-on-Chip CPUs
|
||||
from Samsung. This part has an ARM926-EJS core, capable of running up
|
||||
to 266MHz (see data-sheet for more information)
|
||||
|
||||
|
||||
Clock
|
||||
-----
|
||||
|
||||
The core clock code provides a set of clocks to the drivers, and allows
|
||||
for source selection and a number of other features.
|
||||
|
||||
|
||||
Power
|
||||
-----
|
||||
|
||||
No support for suspend/resume to RAM in the current system.
|
||||
|
||||
|
||||
DMA
|
||||
---
|
||||
|
||||
No current support for DMA.
|
||||
|
||||
|
||||
GPIO
|
||||
----
|
||||
|
||||
There is support for setting the GPIO to input/output/special function
|
||||
and reading or writing to them.
|
||||
|
||||
|
||||
UART
|
||||
----
|
||||
|
||||
The UART hardware is similar to the S3C2440, and is supported by the
|
||||
s3c2410 driver in the drivers/serial directory.
|
||||
|
||||
|
||||
NAND
|
||||
----
|
||||
|
||||
The NAND hardware is similar to the S3C2440, and is supported by the
|
||||
s3c2410 driver in the drivers/mtd/nand directory.
|
||||
|
||||
|
||||
USB Host
|
||||
--------
|
||||
|
||||
The USB hardware is similar to the S3C2410, with extended clock source
|
||||
control. The OHCI portion is supported by the ohci-s3c2410 driver, and
|
||||
the clock control selection is supported by the core clock code.
|
||||
|
||||
|
||||
USB Device
|
||||
----------
|
||||
|
||||
No current support in the kernel
|
||||
|
||||
|
||||
IRQs
|
||||
----
|
||||
|
||||
All the standard, and external interrupt sources are supported. The
|
||||
extra sub-sources are not yet supported.
|
||||
|
||||
|
||||
RTC
|
||||
---
|
||||
|
||||
The RTC hardware is similar to the S3C2410, and is supported by the
|
||||
s3c2410-rtc driver.
|
||||
|
||||
|
||||
Watchdog
|
||||
--------
|
||||
|
||||
The watchdog harware is the same as the S3C2410, and is supported by
|
||||
the s3c2410_wdt driver.
|
||||
|
||||
|
||||
MMC/SD/SDIO
|
||||
-----------
|
||||
|
||||
No current support for the MMC/SD/SDIO block.
|
||||
|
||||
IIC
|
||||
---
|
||||
|
||||
The IIC hardware is the same as the S3C2410, and is supported by the
|
||||
i2c-s3c24xx driver.
|
||||
|
||||
|
||||
IIS
|
||||
---
|
||||
|
||||
No current support for the IIS interface.
|
||||
|
||||
|
||||
SPI
|
||||
---
|
||||
|
||||
No current support for the SPI interfaces.
|
||||
|
||||
|
||||
ATA
|
||||
---
|
||||
|
||||
No current support for the on-board ATA block.
|
||||
|
||||
|
||||
Document Author
|
||||
---------------
|
||||
|
||||
Ben Dooks, (c) 2006 Simtec Electronics
|
21
Documentation/arm/Samsung-S3C24XX/S3C2413.txt
Normal file
21
Documentation/arm/Samsung-S3C24XX/S3C2413.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
S3C2413 ARM Linux Overview
|
||||
==========================
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
The S3C2413 is an extended version of the S3C2412, with an camera
|
||||
interface and mobile DDR memory support. See the S3C2412 support
|
||||
documentation for more information.
|
||||
|
||||
|
||||
Camera Interface
|
||||
---------------
|
||||
|
||||
This block is currently not supported.
|
||||
|
||||
|
||||
Document Author
|
||||
---------------
|
||||
|
||||
Ben Dooks, (c) 2006 Simtec Electronics
|
|
@ -253,7 +253,7 @@ config ARCH_SA1100
|
|||
Support for StrongARM 11x0 based boards.
|
||||
|
||||
config ARCH_S3C2410
|
||||
bool "Samsung S3C2410"
|
||||
bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442"
|
||||
help
|
||||
Samsung S3C2410X CPU based systems, such as the Simtec Electronics
|
||||
BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or
|
||||
|
@ -372,7 +372,7 @@ config ISA_DMA_API
|
|||
bool
|
||||
|
||||
config PCI
|
||||
bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB
|
||||
bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX
|
||||
help
|
||||
Find out whether you have a PCI motherboard. PCI is the name of a
|
||||
bus system, i.e. the way the CPU talks to the other stuff inside
|
||||
|
|
|
@ -61,6 +61,12 @@
|
|||
cmp r7, r3
|
||||
beq 99f
|
||||
|
||||
@ Ajeco 1ARM : 1075
|
||||
mov r3, #(MACH_TYPE_ONEARM & 0xff)
|
||||
orr r3, r3, #(MACH_TYPE_ONEARM & 0xff00)
|
||||
cmp r7, r3
|
||||
beq 99f
|
||||
|
||||
@ Unknown board, use the AT91RM9200DK board
|
||||
@ mov r7, #MACH_TYPE_AT91RM9200
|
||||
mov r7, #(MACH_TYPE_AT91RM9200DK & 0xff)
|
||||
|
|
|
@ -77,7 +77,7 @@ Lrow4bpplp:
|
|||
subne r1, r1, #1
|
||||
ldrneb r7, [r6, r1]
|
||||
bne Lrow4bpplp
|
||||
LOADREGS(fd, sp!, {r4 - r7, pc})
|
||||
ldmfd sp!, {r4 - r7, pc}
|
||||
|
||||
@
|
||||
@ Smashable regs: {r0 - r3}, [r4], {r5 - r7}, (r8 - fp), [ip], (sp), {lr}, (pc)
|
||||
|
@ -105,7 +105,7 @@ Lrow8bpplp:
|
|||
subne r1, r1, #1
|
||||
ldrneb r7, [r6, r1]
|
||||
bne Lrow8bpplp
|
||||
LOADREGS(fd, sp!, {r4 - r7, pc})
|
||||
ldmfd sp!, {r4 - r7, pc}
|
||||
|
||||
@
|
||||
@ Smashable regs: {r0 - r3}, [r4], {r5, r6}, [r7], (r8 - fp), [ip], (sp), [lr], (pc)
|
||||
|
@ -127,7 +127,7 @@ Lrow1bpp:
|
|||
strb r7, [r0], r5
|
||||
mov r7, r7, lsr #8
|
||||
strb r7, [r0], r5
|
||||
LOADREGS(fd, sp!, {r4 - r7, pc})
|
||||
ldmfd sp!, {r4 - r7, pc}
|
||||
|
||||
.bss
|
||||
ENTRY(con_charconvtable)
|
||||
|
|
1053
arch/arm/configs/onearm_defconfig
Normal file
1053
arch/arm/configs/onearm_defconfig
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.17
|
||||
# Tue Jun 20 18:57:01 2006
|
||||
# Linux kernel version: 2.6.17-git9
|
||||
# Sun Jun 25 23:56:32 2006
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -49,7 +49,6 @@ CONFIG_SLAB=y
|
|||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_OBSOLETE_INTERMODULE=y
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -81,18 +80,26 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
|||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_AAEC2000 is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_AT91RM9200 is not set
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_EP93XX is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_IXP23XX is not set
|
||||
# CONFIG_ARCH_L7200 is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
# CONFIG_ARCH_SA1100 is not set
|
||||
|
@ -100,14 +107,6 @@ CONFIG_ARCH_S3C2410=y
|
|||
# CONFIG_ARCH_SHARK is not set
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_OMAP is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_AAEC2000 is not set
|
||||
# CONFIG_ARCH_AT91RM9200 is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
|
||||
#
|
||||
# S3C24XX Implementations
|
||||
|
@ -123,11 +122,14 @@ CONFIG_ARCH_SMDK2410=y
|
|||
CONFIG_ARCH_S3C2440=y
|
||||
CONFIG_SMDK2440_CPU2440=y
|
||||
CONFIG_SMDK2440_CPU2442=y
|
||||
CONFIG_MACH_SMDK2413=y
|
||||
CONFIG_MACH_VR1000=y
|
||||
CONFIG_MACH_RX3715=y
|
||||
CONFIG_MACH_OTOM=y
|
||||
CONFIG_MACH_NEXCODER_2440=y
|
||||
CONFIG_S3C2410_CLOCK=y
|
||||
CONFIG_CPU_S3C2410=y
|
||||
CONFIG_CPU_S3C2412=y
|
||||
CONFIG_CPU_S3C244X=y
|
||||
CONFIG_CPU_S3C2440=y
|
||||
CONFIG_CPU_S3C2442=y
|
||||
|
@ -153,8 +155,11 @@ CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
|
|||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_ARM926T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_32v5=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_ABRT_EV5TJ=y
|
||||
CONFIG_CPU_CACHE_V4WT=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
|
@ -167,6 +172,7 @@ CONFIG_CPU_TLB_V4WBI=y
|
|||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
|
||||
|
||||
#
|
||||
# Bus support
|
||||
|
@ -214,6 +220,7 @@ CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0"
|
|||
CONFIG_FPE_NWFPE=y
|
||||
# CONFIG_FPE_NWFPE_XP is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
# CONFIG_VFP is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
|
@ -242,6 +249,8 @@ CONFIG_NET=y
|
|||
# CONFIG_NETDEBUG is not set
|
||||
# CONFIG_PACKET is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
|
@ -260,6 +269,8 @@ CONFIG_IP_PNP_BOOTP=y
|
|||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
|
@ -267,6 +278,7 @@ CONFIG_TCP_CONG_BIC=y
|
|||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
|
@ -321,6 +333,7 @@ CONFIG_STANDALONE=y
|
|||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
|
@ -408,10 +421,12 @@ CONFIG_MTD_BAST_MAXSIZE=4
|
|||
#
|
||||
CONFIG_MTD_NAND=y
|
||||
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
|
||||
# CONFIG_MTD_NAND_ECC_SMC is not set
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
CONFIG_MTD_NAND_S3C2410=y
|
||||
# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
|
||||
# CONFIG_MTD_NAND_S3C2410_HWECC is not set
|
||||
# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
|
||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||
|
||||
|
@ -425,8 +440,8 @@ CONFIG_MTD_NAND_S3C2410=y
|
|||
#
|
||||
CONFIG_PARPORT=y
|
||||
# CONFIG_PARPORT_PC is not set
|
||||
# CONFIG_PARPORT_ARC is not set
|
||||
# CONFIG_PARPORT_GSC is not set
|
||||
# CONFIG_PARPORT_AX88796 is not set
|
||||
CONFIG_PARPORT_1284=y
|
||||
|
||||
#
|
||||
|
@ -735,6 +750,7 @@ CONFIG_I2C_ALGOBIT=m
|
|||
#
|
||||
# CONFIG_I2C_ELEKTOR is not set
|
||||
CONFIG_I2C_ISA=m
|
||||
# CONFIG_I2C_OCORES is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
CONFIG_I2C_S3C2410=y
|
||||
|
@ -765,13 +781,13 @@ CONFIG_SENSORS_EEPROM=m
|
|||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HWMON_VID=m
|
||||
# CONFIG_SENSORS_ABITUGURU is not set
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
|
@ -799,8 +815,10 @@ CONFIG_SENSORS_LM85=m
|
|||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83791D is not set
|
||||
# CONFIG_SENSORS_W83792D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
|
@ -845,6 +863,7 @@ CONFIG_FB_CFB_COPYAREA=y
|
|||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
CONFIG_FB_FIRMWARE_EDID=y
|
||||
# CONFIG_FB_BACKLIGHT is not set
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
|
@ -976,10 +995,12 @@ CONFIG_USB_MON=y
|
|||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_APPLEDISPLAY is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
|
@ -1024,6 +1045,7 @@ CONFIG_FS_MBCACHE=y
|
|||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
|
|
|
@ -340,7 +340,7 @@ sys_mmap2:
|
|||
streq r5, [sp, #4]
|
||||
beq do_mmap2
|
||||
mov r0, #-EINVAL
|
||||
RETINSTR(mov,pc, lr)
|
||||
mov pc, lr
|
||||
#else
|
||||
str r5, [sp, #4]
|
||||
b do_mmap2
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
__INIT
|
||||
.type stext, %function
|
||||
ENTRY(stext)
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
|
||||
@ and irqs disabled
|
||||
mrc p15, 0, r9, c0, c0 @ get processor id
|
||||
bl __lookup_processor_type @ r5=procinfo r9=cpuid
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
__INIT
|
||||
.type stext, %function
|
||||
ENTRY(stext)
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
|
||||
@ and irqs disabled
|
||||
mrc p15, 0, r9, c0, c0 @ get processor id
|
||||
bl __lookup_processor_type @ r5=procinfo r9=cpuid
|
||||
|
@ -104,7 +104,7 @@ ENTRY(secondary_startup)
|
|||
* the processor type - there is no need to check the machine type
|
||||
* as it has already been validated by the primary processor.
|
||||
*/
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC
|
||||
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
|
||||
mrc p15, 0, r9, c0, c0 @ get processor id
|
||||
bl __lookup_processor_type
|
||||
movs r10, r5 @ invalid processor?
|
||||
|
|
|
@ -41,7 +41,7 @@ ENTRY(c_backtrace)
|
|||
movne r0, #0
|
||||
movs frame, r0
|
||||
1: moveq r0, #-2
|
||||
LOADREGS(eqfd, sp!, {r4 - r8, pc})
|
||||
ldmeqfd sp!, {r4 - r8, pc}
|
||||
|
||||
2: stmfd sp!, {pc} @ calculate offset of PC in STMIA instruction
|
||||
ldr r0, [sp], #4
|
||||
|
@ -85,7 +85,7 @@ ENTRY(c_backtrace)
|
|||
* A zero next framepointer means we're done.
|
||||
*/
|
||||
teq next, #0
|
||||
LOADREGS(eqfd, sp!, {r4 - r8, pc})
|
||||
ldmeqfd sp!, {r4 - r8, pc}
|
||||
|
||||
/*
|
||||
* The next framepointer must be above the
|
||||
|
@ -104,7 +104,7 @@ ENTRY(c_backtrace)
|
|||
1007: ldr r0, =.Lbad
|
||||
mov r1, frame
|
||||
bl printk
|
||||
LOADREGS(fd, sp!, {r4 - r8, pc})
|
||||
ldmfd sp!, {r4 - r8, pc}
|
||||
.ltorg
|
||||
.previous
|
||||
|
||||
|
@ -145,7 +145,7 @@ ENTRY(c_backtrace)
|
|||
adrne r0, .Lcr
|
||||
blne printk
|
||||
mov r0, stack
|
||||
LOADREGS(fd, sp!, {instr, reg, stack, r7, r8, pc})
|
||||
ldmfd sp!, {instr, reg, stack, r7, r8, pc}
|
||||
|
||||
.Lfp: .asciz " r%d = %08X%c"
|
||||
.Lcr: .asciz "\n"
|
||||
|
|
|
@ -43,10 +43,10 @@ USER( strnebt r2, [r0], #1)
|
|||
tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1
|
||||
USER( strnebt r2, [r0], #1)
|
||||
mov r0, #0
|
||||
LOADREGS(fd,sp!, {r1, pc})
|
||||
ldmfd sp!, {r1, pc}
|
||||
|
||||
.section .fixup,"ax"
|
||||
.align 0
|
||||
9001: LOADREGS(fd,sp!, {r0, pc})
|
||||
9001: ldmfd sp!, {r0, pc}
|
||||
.previous
|
||||
|
||||
|
|
|
@ -43,4 +43,4 @@ ENTRY(copy_page)
|
|||
bgt 1b @ 1
|
||||
PLD( ldmeqia r1!, {r3, r4, ip, lr} )
|
||||
PLD( beq 2b )
|
||||
LOADREGS(fd, sp!, {r4, pc}) @ 3
|
||||
ldmfd sp!, {r4, pc} @ 3
|
||||
|
|
|
@ -28,5 +28,5 @@ ENTRY(__csum_ipv6_magic)
|
|||
adcs r0, r0, r3
|
||||
adcs r0, r0, r2
|
||||
adcs r0, r0, #0
|
||||
LOADREGS(fd, sp!, {pc})
|
||||
ldmfd sp!, {pc}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06
|
|||
mov r2, r2, lsr #10 @ max = 0x00007fff
|
||||
mul r0, r2, r0 @ max = 2^32-1
|
||||
movs r0, r0, lsr #6
|
||||
RETINSTR(moveq,pc,lr)
|
||||
moveq pc, lr
|
||||
|
||||
/*
|
||||
* loops = r0 * HZ * loops_per_jiffy / 1000000
|
||||
|
@ -43,20 +43,20 @@ ENTRY(__const_udelay) @ 0 <= r0 <= 0x7fffff06
|
|||
ENTRY(__delay)
|
||||
subs r0, r0, #1
|
||||
#if 0
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
RETINSTR(movls,pc,lr)
|
||||
movls pc, lr
|
||||
subs r0, r0, #1
|
||||
#endif
|
||||
bhi __delay
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
|
|
@ -29,7 +29,7 @@ ENTRY(ecard_loader_read)
|
|||
CPSR2SPSR(r0)
|
||||
mov lr, pc
|
||||
mov pc, r2
|
||||
LOADREGS(fd, sp!, {r4 - r12, pc})
|
||||
ldmfd sp!, {r4 - r12, pc}
|
||||
|
||||
@ Purpose: call an expansion card loader to reset the card
|
||||
@ Proto : void read_loader(int card_base, char *loader);
|
||||
|
@ -41,5 +41,5 @@ ENTRY(ecard_loader_reset)
|
|||
CPSR2SPSR(r0)
|
||||
mov lr, pc
|
||||
add pc, r1, #8
|
||||
LOADREGS(fd, sp!, {r4 - r12, pc})
|
||||
ldmfd sp!, {r4 - r12, pc}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ ENTRY(_find_first_zero_bit_le)
|
|||
2: cmp r2, r1 @ any more?
|
||||
blo 1b
|
||||
3: mov r0, r1 @ no free bits
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
||||
/*
|
||||
* Purpose : Find next 'zero' bit
|
||||
|
@ -66,7 +66,7 @@ ENTRY(_find_first_bit_le)
|
|||
2: cmp r2, r1 @ any more?
|
||||
blo 1b
|
||||
3: mov r0, r1 @ no free bits
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
||||
/*
|
||||
* Purpose : Find next 'one' bit
|
||||
|
@ -98,7 +98,7 @@ ENTRY(_find_first_zero_bit_be)
|
|||
2: cmp r2, r1 @ any more?
|
||||
blo 1b
|
||||
3: mov r0, r1 @ no free bits
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
||||
ENTRY(_find_next_zero_bit_be)
|
||||
teq r1, #0
|
||||
|
@ -126,7 +126,7 @@ ENTRY(_find_first_bit_be)
|
|||
2: cmp r2, r1 @ any more?
|
||||
blo 1b
|
||||
3: mov r0, r1 @ no free bits
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
||||
ENTRY(_find_next_bit_be)
|
||||
teq r1, #0
|
||||
|
@ -164,5 +164,5 @@ ENTRY(_find_next_bit_be)
|
|||
addeq r2, r2, #1
|
||||
mov r0, r2
|
||||
#endif
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ ENTRY(__raw_readsb)
|
|||
bpl .Linsb_16_lp
|
||||
|
||||
tst r2, #15
|
||||
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
||||
ldmeqfd sp!, {r4 - r6, pc}
|
||||
|
||||
.Linsb_no_16: tst r2, #8
|
||||
beq .Linsb_no_8
|
||||
|
@ -109,7 +109,7 @@ ENTRY(__raw_readsb)
|
|||
str r3, [r1], #4
|
||||
|
||||
.Linsb_no_4: ands r2, r2, #3
|
||||
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
||||
ldmeqfd sp!, {r4 - r6, pc}
|
||||
|
||||
cmp r2, #2
|
||||
ldrb r3, [r0]
|
||||
|
@ -119,4 +119,4 @@ ENTRY(__raw_readsb)
|
|||
ldrgtb r3, [r0]
|
||||
strgtb r3, [r1]
|
||||
|
||||
LOADREGS(fd, sp!, {r4 - r6, pc})
|
||||
ldmfd sp!, {r4 - r6, pc}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
strb r3, [r1], #1
|
||||
|
||||
subs r2, r2, #1
|
||||
RETINSTR(moveq, pc, lr)
|
||||
moveq pc, lr
|
||||
|
||||
ENTRY(__raw_readsw)
|
||||
teq r2, #0 @ do we have to check for the zero len?
|
||||
|
@ -69,7 +69,7 @@ ENTRY(__raw_readsw)
|
|||
bpl .Linsw_8_lp
|
||||
|
||||
tst r2, #7
|
||||
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
||||
ldmeqfd sp!, {r4, r5, r6, pc}
|
||||
|
||||
.Lno_insw_8: tst r2, #4
|
||||
beq .Lno_insw_4
|
||||
|
@ -102,6 +102,6 @@ ENTRY(__raw_readsw)
|
|||
movne r3, r3, lsr #8
|
||||
strneb r3, [r1]
|
||||
|
||||
LOADREGS(fd, sp!, {r4, r5, r6, pc})
|
||||
ldmfd sp!, {r4, r5, r6, pc}
|
||||
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ ENTRY(__raw_writesb)
|
|||
bpl .Loutsb_16_lp
|
||||
|
||||
tst r2, #15
|
||||
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
||||
ldmeqfd sp!, {r4, r5, pc}
|
||||
|
||||
.Loutsb_no_16: tst r2, #8
|
||||
beq .Loutsb_no_8
|
||||
|
@ -80,7 +80,7 @@ ENTRY(__raw_writesb)
|
|||
outword r3
|
||||
|
||||
.Loutsb_no_4: ands r2, r2, #3
|
||||
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
||||
ldmeqfd sp!, {r4, r5, pc}
|
||||
|
||||
cmp r2, #2
|
||||
ldrb r3, [r1], #1
|
||||
|
@ -90,4 +90,4 @@ ENTRY(__raw_writesb)
|
|||
ldrgtb r3, [r1]
|
||||
strgtb r3, [r0]
|
||||
|
||||
LOADREGS(fd, sp!, {r4, r5, pc})
|
||||
ldmfd sp!, {r4, r5, pc}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
orr r3, r3, r3, lsl #16
|
||||
str r3, [r0]
|
||||
subs r2, r2, #1
|
||||
RETINSTR(moveq, pc, lr)
|
||||
moveq pc, lr
|
||||
|
||||
ENTRY(__raw_writesw)
|
||||
teq r2, #0 @ do we have to check for the zero len?
|
||||
|
@ -80,7 +80,7 @@ ENTRY(__raw_writesw)
|
|||
bpl .Loutsw_8_lp
|
||||
|
||||
tst r2, #7
|
||||
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
||||
ldmeqfd sp!, {r4, r5, r6, pc}
|
||||
|
||||
.Lno_outsw_8: tst r2, #4
|
||||
beq .Lno_outsw_4
|
||||
|
@ -124,4 +124,4 @@ ENTRY(__raw_writesw)
|
|||
orrne ip, ip, ip, lsr #16
|
||||
strne ip, [r0]
|
||||
|
||||
LOADREGS(fd, sp!, {r4, r5, r6, pc})
|
||||
ldmfd sp!, {r4, r5, r6, pc}
|
||||
|
|
|
@ -22,4 +22,4 @@ ENTRY(memchr)
|
|||
bne 1b
|
||||
sub r0, r0, #1
|
||||
2: movne r0, #0
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
|
|
@ -53,7 +53,7 @@ ENTRY(memset)
|
|||
stmgeia r0!, {r1, r3, ip, lr}
|
||||
stmgeia r0!, {r1, r3, ip, lr}
|
||||
bgt 2b
|
||||
LOADREGS(eqfd, sp!, {pc}) @ Now <64 bytes to go.
|
||||
ldmeqfd sp!, {pc} @ Now <64 bytes to go.
|
||||
/*
|
||||
* No need to correct the count; we're only testing bits from now on
|
||||
*/
|
||||
|
@ -77,4 +77,4 @@ ENTRY(memset)
|
|||
strneb r1, [r0], #1
|
||||
tst r2, #1
|
||||
strneb r1, [r0], #1
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
|
|
@ -53,7 +53,7 @@ ENTRY(__memzero)
|
|||
stmgeia r0!, {r2, r3, ip, lr} @ 4
|
||||
stmgeia r0!, {r2, r3, ip, lr} @ 4
|
||||
bgt 3b @ 1
|
||||
LOADREGS(eqfd, sp!, {pc}) @ 1/2 quick exit
|
||||
ldmeqfd sp!, {pc} @ 1/2 quick exit
|
||||
/*
|
||||
* No need to correct the count; we're only testing bits from now on
|
||||
*/
|
||||
|
@ -77,4 +77,4 @@ ENTRY(__memzero)
|
|||
strneb r2, [r0], #1 @ 1
|
||||
tst r1, #1 @ 1 a byte left over
|
||||
strneb r2, [r0], #1 @ 1
|
||||
RETINSTR(mov,pc,lr) @ 1
|
||||
mov pc, lr @ 1
|
||||
|
|
|
@ -23,4 +23,4 @@ ENTRY(strchr)
|
|||
teq r2, r1
|
||||
movne r0, #0
|
||||
subeq r0, r0, #1
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
* -EFAULT on exception, or "len" if we fill the whole buffer
|
||||
*/
|
||||
ENTRY(__arch_strncpy_from_user)
|
||||
save_lr
|
||||
mov ip, r1
|
||||
1: subs r2, r2, #1
|
||||
USER( ldrplbt r3, [r1], #1)
|
||||
|
@ -31,13 +30,13 @@ USER( ldrplbt r3, [r1], #1)
|
|||
bne 1b
|
||||
sub r1, r1, #1 @ take NUL character out of count
|
||||
2: sub r0, r1, ip
|
||||
restore_pc
|
||||
mov pc, lr
|
||||
|
||||
.section .fixup,"ax"
|
||||
.align 0
|
||||
9001: mov r3, #0
|
||||
strb r3, [r0, #0] @ null terminate
|
||||
mov r0, #-EFAULT
|
||||
restore_pc
|
||||
mov pc, lr
|
||||
.previous
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
* or zero on exception, or n + 1 if too long
|
||||
*/
|
||||
ENTRY(__arch_strnlen_user)
|
||||
save_lr
|
||||
mov r2, r0
|
||||
1:
|
||||
USER( ldrbt r3, [r0], #1)
|
||||
|
@ -31,10 +30,10 @@ USER( ldrbt r3, [r0], #1)
|
|||
bne 1b
|
||||
add r0, r0, #1
|
||||
2: sub r0, r0, r2
|
||||
restore_pc
|
||||
mov pc, lr
|
||||
|
||||
.section .fixup,"ax"
|
||||
.align 0
|
||||
9001: mov r0, #0
|
||||
restore_pc
|
||||
mov pc, lr
|
||||
.previous
|
||||
|
|
|
@ -22,4 +22,4 @@ ENTRY(strrchr)
|
|||
teq r2, #0
|
||||
bne 1b
|
||||
mov r0, r3
|
||||
RETINSTR(mov,pc,lr)
|
||||
mov pc, lr
|
||||
|
|
|
@ -105,7 +105,7 @@ USER( strgtbt r3, [r0], #1) @ May fault
|
|||
movs ip, r2
|
||||
bne .Lc2u_nowords
|
||||
.Lc2u_finished: mov r0, #0
|
||||
LOADREGS(fd,sp!,{r2, r4 - r7, pc})
|
||||
ldmfd sp!, {r2, r4 - r7, pc}
|
||||
|
||||
.Lc2u_src_not_aligned:
|
||||
bic r1, r1, #3
|
||||
|
@ -280,7 +280,7 @@ USER( strgtbt r3, [r0], #1) @ May fault
|
|||
|
||||
.section .fixup,"ax"
|
||||
.align 0
|
||||
9001: LOADREGS(fd,sp!, {r0, r4 - r7, pc})
|
||||
9001: ldmfd sp!, {r0, r4 - r7, pc}
|
||||
.previous
|
||||
|
||||
/* Prototype: unsigned long __arch_copy_from_user(void *to,const void *from,unsigned long n);
|
||||
|
@ -369,7 +369,7 @@ USER( ldrgtbt r3, [r1], #1) @ May fault
|
|||
bne .Lcfu_nowords
|
||||
.Lcfu_finished: mov r0, #0
|
||||
add sp, sp, #8
|
||||
LOADREGS(fd,sp!,{r4 - r7, pc})
|
||||
ldmfd sp!, {r4 - r7, pc}
|
||||
|
||||
.Lcfu_src_not_aligned:
|
||||
bic r1, r1, #3
|
||||
|
@ -556,6 +556,6 @@ USER( ldrgtbt r3, [r1], #1) @ May fault
|
|||
movne r1, r4
|
||||
blne __memzero
|
||||
mov r0, r4
|
||||
LOADREGS(fd,sp!, {r4 - r7, pc})
|
||||
ldmfd sp!, {r4 - r7, pc}
|
||||
.previous
|
||||
|
||||
|
|
|
@ -4,6 +4,12 @@ menu "AT91RM9200 Implementations"
|
|||
|
||||
comment "AT91RM9200 Board Type"
|
||||
|
||||
config MACH_ONEARM
|
||||
bool "Ajeco 1ARM Single Board Computer"
|
||||
depends on ARCH_AT91RM9200
|
||||
help
|
||||
Select this if you are using Ajeco's 1ARM Single Board Computer
|
||||
|
||||
config ARCH_AT91RM9200DK
|
||||
bool "Atmel AT91RM9200-DK Development board"
|
||||
depends on ARCH_AT91RM9200
|
||||
|
|
|
@ -10,6 +10,7 @@ obj- :=
|
|||
obj-$(CONFIG_PM) += pm.o
|
||||
|
||||
# Board-specific support
|
||||
obj-$(CONFIG_MACH_ONEARM) += board-1arm.o
|
||||
obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o
|
||||
obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o
|
||||
obj-$(CONFIG_MACH_CSB337) += board-csb337.o
|
||||
|
|
109
arch/arm/mach-at91rm9200/board-1arm.c
Normal file
109
arch/arm/mach-at91rm9200/board-1arm.c
Normal file
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/board-1arm.c
|
||||
*
|
||||
* Copyright (C) 2005 SAN People
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
static void __init onearm_init_irq(void)
|
||||
{
|
||||
/* Initialize AIC controller */
|
||||
at91rm9200_init_irq(NULL);
|
||||
|
||||
/* Set up the GPIO interrupts */
|
||||
at91_gpio_irq_setup(PQFP_GPIO_BANKS);
|
||||
}
|
||||
|
||||
/*
|
||||
* Serial port configuration.
|
||||
* 0 .. 3 = USART0 .. USART3
|
||||
* 4 = DBGU
|
||||
*/
|
||||
static struct at91_uart_config __initdata onearm_uart_config = {
|
||||
.console_tty = 0, /* ttyS0 */
|
||||
.nr_tty = 3,
|
||||
.tty_map = { 4, 0, 1, -1, -1 }, /* ttyS0, ..., ttyS4 */
|
||||
};
|
||||
|
||||
static void __init onearm_map_io(void)
|
||||
{
|
||||
at91rm9200_map_io();
|
||||
|
||||
/* Initialize clocks: 18.432 MHz crystal */
|
||||
at91_clock_init(18432000);
|
||||
|
||||
/* Setup the serial ports and console */
|
||||
at91_init_serial(&onearm_uart_config);
|
||||
}
|
||||
|
||||
static struct at91_eth_data __initdata onearm_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PC4,
|
||||
.is_rmii = 1,
|
||||
};
|
||||
|
||||
static struct at91_usbh_data __initdata onearm_usbh_data = {
|
||||
.ports = 1,
|
||||
};
|
||||
|
||||
static struct at91_udc_data __initdata onearm_udc_data = {
|
||||
.vbus_pin = AT91_PIN_PC2,
|
||||
.pullup_pin = AT91_PIN_PC3,
|
||||
};
|
||||
|
||||
static void __init onearm_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* Ethernet */
|
||||
at91_add_device_eth(&onearm_eth_data);
|
||||
/* USB Host */
|
||||
at91_add_device_usbh(&onearm_usbh_data);
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&onearm_udc_data);
|
||||
}
|
||||
|
||||
MACHINE_START(ONEARM, "Ajeco 1ARM single board computer")
|
||||
/* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
|
||||
.phys_io = AT91_BASE_SYS,
|
||||
.io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
|
||||
.boot_params = AT91_SDRAM_BASE + 0x100,
|
||||
.timer = &at91rm9200_timer,
|
||||
.map_io = onearm_map_io,
|
||||
.init_irq = onearm_init_irq,
|
||||
.init_machine = onearm_board_init,
|
||||
MACHINE_END
|
|
@ -35,7 +35,6 @@ config ARCH_ADI_COYOTE
|
|||
|
||||
config ARCH_IXDP425
|
||||
bool "IXDP425"
|
||||
select PCI
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support Intel's
|
||||
IXDP425 Development Platform (Also known as Richfield).
|
||||
|
@ -43,7 +42,6 @@ config ARCH_IXDP425
|
|||
|
||||
config MACH_IXDPG425
|
||||
bool "IXDPG425"
|
||||
select PCI
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support Intel's
|
||||
IXDPG425 Development Platform (Also known as Montajade).
|
||||
|
@ -51,7 +49,6 @@ config MACH_IXDPG425
|
|||
|
||||
config MACH_IXDP465
|
||||
bool "IXDP465"
|
||||
select PCI
|
||||
help
|
||||
Say 'Y' here if you want your kernel to support Intel's
|
||||
IXDP465 Development Platform (Also known as BMP).
|
||||
|
|
|
@ -2,13 +2,23 @@
|
|||
# Makefile for the linux kernel.
|
||||
#
|
||||
|
||||
obj-pci-y :=
|
||||
obj-pci-n :=
|
||||
|
||||
obj-pci-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o
|
||||
obj-pci-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o
|
||||
obj-pci-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o
|
||||
obj-pci-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o
|
||||
obj-pci-$(CONFIG_MACH_NSLU2) += nslu2-pci.o
|
||||
obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o
|
||||
|
||||
obj-y += common.o
|
||||
|
||||
obj-$(CONFIG_PCI) += common-pci.o
|
||||
obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o
|
||||
obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
|
||||
obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
|
||||
obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
|
||||
obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
|
||||
obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o
|
||||
obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-setup.o
|
||||
obj-$(CONFIG_MACH_IXDPG425) += coyote-setup.o
|
||||
obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-setup.o
|
||||
obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o
|
||||
obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o
|
||||
obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o
|
||||
|
||||
obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o
|
||||
|
|
|
@ -189,7 +189,7 @@ ENTRY(pxa_cpu_suspend)
|
|||
.data
|
||||
.align 5
|
||||
ENTRY(pxa_cpu_resume)
|
||||
mov r0, #PSR_I_BIT | PSR_F_BIT | MODE_SVC @ set SVC, irqs off
|
||||
mov r0, #PSR_I_BIT | PSR_F_BIT | SVC_MODE @ set SVC, irqs off
|
||||
msr cpsr_c, r0
|
||||
|
||||
ldr r0, sleep_save_sp @ stack phys addr
|
||||
|
|
|
@ -71,13 +71,13 @@ config ARCH_S3C2440
|
|||
Say Y here if you are using the SMDK2440.
|
||||
|
||||
config SMDK2440_CPU2440
|
||||
bool "SMDK2440 with S3C2440 cpu module"
|
||||
bool "SMDK2440 with S3C2440 CPU module"
|
||||
depends on ARCH_S3C2440
|
||||
default y if ARCH_S3C2440
|
||||
select CPU_S3C2440
|
||||
|
||||
config SMDK2440_CPU2442
|
||||
bool "SMDM2440 with S3C2442 cpu module"
|
||||
bool "SMDM2440 with S3C2442 CPU module"
|
||||
depends on ARCH_S3C2440
|
||||
select CPU_S3C2442
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ s3c2410_sleep_save_phys:
|
|||
*/
|
||||
|
||||
ENTRY(s3c2410_cpu_resume)
|
||||
mov r0, #PSR_I_BIT | PSR_F_BIT | MODE_SVC
|
||||
mov r0, #PSR_I_BIT | PSR_F_BIT | SVC_MODE
|
||||
msr cpsr_c, r0
|
||||
|
||||
@@ load UART to allow us to print the two characters for
|
||||
|
|
|
@ -177,7 +177,7 @@ sa1110_sdram_controller_fix:
|
|||
.data
|
||||
.align 5
|
||||
ENTRY(sa1100_cpu_resume)
|
||||
mov r0, #PSR_F_BIT | PSR_I_BIT | MODE_SVC
|
||||
mov r0, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
|
||||
msr cpsr_c, r0 @ set SVC, irqs off
|
||||
|
||||
ldr r0, sleep_save_sp @ stack phys addr
|
||||
|
|
|
@ -35,7 +35,7 @@ ENTRY(v3_copy_user_page)
|
|||
stmia r0!, {r3, r4, ip, lr} @ 4
|
||||
ldmneia r1!, {r3, r4, ip, lr} @ 4
|
||||
bne 1b @ 1
|
||||
LOADREGS(fd, sp!, {r4, pc}) @ 3
|
||||
ldmfd sp!, {r4, pc} @ 3
|
||||
|
||||
.align 5
|
||||
/*
|
||||
|
|
|
@ -29,38 +29,6 @@
|
|||
#define TTB_RGN_WT (2 << 3)
|
||||
#define TTB_RGN_WB (3 << 3)
|
||||
|
||||
.macro cpsie, flags
|
||||
.ifc \flags, f
|
||||
.long 0xf1080040
|
||||
.exitm
|
||||
.endif
|
||||
.ifc \flags, i
|
||||
.long 0xf1080080
|
||||
.exitm
|
||||
.endif
|
||||
.ifc \flags, if
|
||||
.long 0xf10800c0
|
||||
.exitm
|
||||
.endif
|
||||
.err
|
||||
.endm
|
||||
|
||||
.macro cpsid, flags
|
||||
.ifc \flags, f
|
||||
.long 0xf10c0040
|
||||
.exitm
|
||||
.endif
|
||||
.ifc \flags, i
|
||||
.long 0xf10c0080
|
||||
.exitm
|
||||
.endif
|
||||
.ifc \flags, if
|
||||
.long 0xf10c00c0
|
||||
.exitm
|
||||
.endif
|
||||
.err
|
||||
.endm
|
||||
|
||||
ENTRY(cpu_v6_proc_init)
|
||||
mov pc, lr
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
It is called from the kernel with code similar to this:
|
||||
|
||||
mov fp, #0
|
||||
teqp pc, #PSR_I_BIT | MODE_SVC
|
||||
teqp pc, #PSR_I_BIT | SVC_MODE
|
||||
ldr r4, .LC2
|
||||
ldr pc, [r4] @ Call FP module USR entry point
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#
|
||||
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
||||
#
|
||||
# Last update: Mon May 8 20:11:05 2006
|
||||
# Last update: Mon Jun 26 22:26:08 2006
|
||||
#
|
||||
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
||||
#
|
||||
|
@ -566,8 +566,8 @@ switchgrass MACH_SWITCHGRASS SWITCHGRASS 549
|
|||
ens_cmu MACH_ENS_CMU ENS_CMU 550
|
||||
mm6_sdb MACH_MM6_SDB MM6_SDB 551
|
||||
saturn MACH_SATURN SATURN 552
|
||||
i30030evb MACH_ARGONPLUSEVB ARGONPLUSEVB 553
|
||||
mxc27530evb MACH_SCMA11EVB SCMA11EVB 554
|
||||
i30030evb MACH_I30030EVB I30030EVB 553
|
||||
mxc27530evb MACH_MXC27530EVB MXC27530EVB 554
|
||||
smdk2800 MACH_SMDK2800 SMDK2800 555
|
||||
mtwilson MACH_MTWILSON MTWILSON 556
|
||||
ziti MACH_ZITI ZITI 557
|
||||
|
@ -647,7 +647,7 @@ sendt MACH_SENDT SENDT 630
|
|||
mx2jazz MACH_MX2JAZZ MX2JAZZ 631
|
||||
multiio MACH_MULTIIO MULTIIO 632
|
||||
hrdisplay MACH_HRDISPLAY HRDISPLAY 633
|
||||
mxc27530ads MACH_SCMA11BB SCMA11BB 634
|
||||
mxc27530ads MACH_MXC27530ADS MXC27530ADS 634
|
||||
trizeps3 MACH_TRIZEPS3 TRIZEPS3 635
|
||||
zefeerdza MACH_ZEFEERDZA ZEFEERDZA 636
|
||||
zefeerdzb MACH_ZEFEERDZB ZEFEERDZB 637
|
||||
|
@ -721,7 +721,7 @@ gp32 MACH_GP32 GP32 706
|
|||
gem MACH_GEM GEM 707
|
||||
i858 MACH_I858 I858 708
|
||||
hx2750 MACH_HX2750 HX2750 709
|
||||
mxc91131evb MACH_ZEUSEVB ZEUSEVB 710
|
||||
mxc91131evb MACH_MXC91131EVB MXC91131EVB 710
|
||||
p700 MACH_P700 P700 711
|
||||
cpe MACH_CPE CPE 712
|
||||
spitz MACH_SPITZ SPITZ 713
|
||||
|
@ -802,7 +802,7 @@ cpuat91 MACH_CPUAT91 CPUAT91 787
|
|||
rea9200 MACH_REA9200 REA9200 788
|
||||
acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789
|
||||
ixp425 MACH_IXP425 IXP425 790
|
||||
i30030ads MACH_ARGONPLUSODYSSEY ARGONPLUSODYSSEY 791
|
||||
i30030ads MACH_I30030ADS I30030ADS 791
|
||||
perch MACH_PERCH PERCH 792
|
||||
eis05r1 MACH_EIS05R1 EIS05R1 793
|
||||
pepperpad MACH_PEPPERPAD PEPPERPAD 794
|
||||
|
@ -930,7 +930,7 @@ netclient MACH_NETCLIENT NETCLIENT 916
|
|||
xscale_palmtt5 MACH_XSCALE_PALMTT5 XSCALE_PALMTT5 917
|
||||
xscale_palmtc MACH_OMAP_PALMTC OMAP_PALMTC 918
|
||||
omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
|
||||
mxc30030evb MACH_ARGONLVEVB ARGONLVEVB 920
|
||||
mxc30030evb MACH_MXC30030EVB MXC30030EVB 920
|
||||
rea_2d MACH_REA_2D REA_2D 921
|
||||
eti3e524 MACH_TI3E524 TI3E524 922
|
||||
ateb9200 MACH_ATEB9200 ATEB9200 923
|
||||
|
@ -986,7 +986,7 @@ redfox MACH_REDFOX REDFOX 972
|
|||
mysh_ep9315_1 MACH_MYSH_EP9315_1 MYSH_EP9315_1 973
|
||||
tpf106 MACH_TPF106 TPF106 974
|
||||
at91rm9200kg MACH_AT91RM9200KG AT91RM9200KG 975
|
||||
racemt2 MACH_SLEDB SLEDB 976
|
||||
rcmt2 MACH_SLEDB SLEDB 976
|
||||
ontrack MACH_ONTRACK ONTRACK 977
|
||||
pm1200 MACH_PM1200 PM1200 978
|
||||
ess24562 MACH_ESS24XXX ESS24XXX 979
|
||||
|
@ -1022,7 +1022,7 @@ smdk2440 MACH_SMDK2440 SMDK2440 1008
|
|||
smdk2412 MACH_SMDK2412 SMDK2412 1009
|
||||
webbox MACH_WEBBOX WEBBOX 1010
|
||||
cwwndp MACH_CWWNDP CWWNDP 1011
|
||||
dragon MACH_DRAGON DRAGON 1012
|
||||
i839 MACH_DRAGON DRAGON 1012
|
||||
opendo_cpu_board MACH_OPENDO_CPU_BOARD OPENDO_CPU_BOARD 1013
|
||||
ccm2200 MACH_CCM2200 CCM2200 1014
|
||||
etwarm MACH_ETWARM ETWARM 1015
|
||||
|
@ -1040,3 +1040,56 @@ edg79524 MACH_EDG79524 EDG79524 1026
|
|||
ai2410 MACH_AI2410 AI2410 1027
|
||||
ixp465 MACH_IXP465 IXP465 1028
|
||||
balloon3 MACH_BALLOON3 BALLOON3 1029
|
||||
heins MACH_HEINS HEINS 1030
|
||||
mpluseva MACH_MPLUSEVA MPLUSEVA 1031
|
||||
rt042 MACH_RT042 RT042 1032
|
||||
cwiem MACH_CWIEM CWIEM 1033
|
||||
cm_x270 MACH_CM_X270 CM_X270 1034
|
||||
cm_x255 MACH_CM_X255 CM_X255 1035
|
||||
esh_at91 MACH_ESH_AT91 ESH_AT91 1036
|
||||
sandgate3 MACH_SANDGATE3 SANDGATE3 1037
|
||||
primo MACH_PRIMO PRIMO 1038
|
||||
gemstone MACH_GEMSTONE GEMSTONE 1039
|
||||
pronghorn_metro MACH_PRONGHORNMETRO PRONGHORNMETRO 1040
|
||||
sidewinder MACH_SIDEWINDER SIDEWINDER 1041
|
||||
picomod1 MACH_PICOMOD1 PICOMOD1 1042
|
||||
sg590 MACH_SG590 SG590 1043
|
||||
akai9307 MACH_AKAI9307 AKAI9307 1044
|
||||
fontaine MACH_FONTAINE FONTAINE 1045
|
||||
wombat MACH_WOMBAT WOMBAT 1046
|
||||
acq300 MACH_ACQ300 ACQ300 1047
|
||||
mod_270 MACH_MOD_270 MOD_270 1048
|
||||
vmc_vc0820 MACH_VC0820 VC0820 1049
|
||||
ani_aim MACH_ANI_AIM ANI_AIM 1050
|
||||
jellyfish MACH_JELLYFISH JELLYFISH 1051
|
||||
amanita MACH_AMANITA AMANITA 1052
|
||||
vlink MACH_VLINK VLINK 1053
|
||||
dexflex MACH_DEXFLEX DEXFLEX 1054
|
||||
eigen_ttq MACH_EIGEN_TTQ EIGEN_TTQ 1055
|
||||
arcom_titan MACH_ARCOM_TITAN ARCOM_TITAN 1056
|
||||
tabla MACH_TABLA TABLA 1057
|
||||
mdirac3 MACH_MDIRAC3 MDIRAC3 1058
|
||||
mrhfbp2 MACH_MRHFBP2 MRHFBP2 1059
|
||||
at91rm9200rb MACH_AT91RM9200RB AT91RM9200RB 1060
|
||||
ani_apm MACH_ANI_APM ANI_APM 1061
|
||||
ella1 MACH_ELLA1 ELLA1 1062
|
||||
inhand_pxa27x MACH_INHAND_PXA27X INHAND_PXA27X 1063
|
||||
inhand_pxa25x MACH_INHAND_PXA25X INHAND_PXA25X 1064
|
||||
empos_xm MACH_EMPOS_XM EMPOS_XM 1065
|
||||
empos MACH_EMPOS EMPOS 1066
|
||||
empos_tiny MACH_EMPOS_TINY EMPOS_TINY 1067
|
||||
empos_sm MACH_EMPOS_SM EMPOS_SM 1068
|
||||
egret MACH_EGRET EGRET 1069
|
||||
ostrich MACH_OSTRICH OSTRICH 1070
|
||||
n50 MACH_N50 N50 1071
|
||||
ecbat91 MACH_ECBAT91 ECBAT91 1072
|
||||
stareast MACH_STAREAST STAREAST 1073
|
||||
dspg_dw MACH_DSPG_DW DSPG_DW 1074
|
||||
onearm MACH_ONEARM ONEARM 1075
|
||||
mrg110_6 MACH_MRG110_6 MRG110_6 1076
|
||||
wrt300nv2 MACH_WRT300NV2 WRT300NV2 1077
|
||||
xm_bulverde MACH_XM_BULVERDE XM_BULVERDE 1078
|
||||
msm6100 MACH_MSM6100 MSM6100 1079
|
||||
eti_b1 MACH_ETI_B1 ETI_B1 1080
|
||||
za9l_series MACH_ZILOG_ZA9L ZILOG_ZA9L 1081
|
||||
bit2440 MACH_BIT2440 BIT2440 1082
|
||||
|
|
|
@ -420,8 +420,10 @@ static int ucb1x00_detect_irq(struct ucb1x00 *ucb)
|
|||
unsigned long mask;
|
||||
|
||||
mask = probe_irq_on();
|
||||
if (!mask)
|
||||
if (!mask) {
|
||||
probe_irq_off(mask);
|
||||
return NO_IRQ;
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable the ADC interrupt.
|
||||
|
|
|
@ -55,30 +55,6 @@
|
|||
#define PLD(code...)
|
||||
#endif
|
||||
|
||||
#define MODE_USR USR_MODE
|
||||
#define MODE_FIQ FIQ_MODE
|
||||
#define MODE_IRQ IRQ_MODE
|
||||
#define MODE_SVC SVC_MODE
|
||||
|
||||
#define DEFAULT_FIQ MODE_FIQ
|
||||
|
||||
/*
|
||||
* LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
|
||||
*/
|
||||
#ifdef __STDC__
|
||||
#define LOADREGS(cond, base, reglist...)\
|
||||
ldm##cond base,reglist
|
||||
#else
|
||||
#define LOADREGS(cond, base, reglist...)\
|
||||
ldm/**/cond base,reglist
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Build a return instruction for this processor type.
|
||||
*/
|
||||
#define RETINSTR(instr, regs...)\
|
||||
instr regs
|
||||
|
||||
/*
|
||||
* Enable and disable interrupts
|
||||
*/
|
||||
|
@ -117,18 +93,6 @@
|
|||
msr cpsr_c, \oldcpsr
|
||||
.endm
|
||||
|
||||
/*
|
||||
* These two are used to save LR/restore PC over a user-based access.
|
||||
* The old 26-bit architecture requires that we do. On 32-bit
|
||||
* architecture, we can safely ignore this requirement.
|
||||
*/
|
||||
.macro save_lr
|
||||
.endm
|
||||
|
||||
.macro restore_pc
|
||||
mov pc, lr
|
||||
.endm
|
||||
|
||||
#define USER(x...) \
|
||||
9999: x; \
|
||||
.section __ex_table,"a"; \
|
||||
|
|
Loading…
Reference in a new issue