Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
bdf4e948
Commit
bdf4e948
authored
Oct 25, 2011
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'misc' into for-linus
Conflicts: arch/arm/mach-integrator/integrator_ap.c
parents
06afb1a0
eb047454
Changes
146
Hide whitespace changes
Inline
Side-by-side
Showing
146 changed files
with
787 additions
and
539 deletions
+787
-539
arch/arm/Kconfig
arch/arm/Kconfig
+4
-0
arch/arm/boot/Makefile
arch/arm/boot/Makefile
+9
-0
arch/arm/boot/compressed/Makefile
arch/arm/boot/compressed/Makefile
+8
-0
arch/arm/common/pl330.c
arch/arm/common/pl330.c
+1
-1
arch/arm/configs/integrator_defconfig
arch/arm/configs/integrator_defconfig
+15
-4
arch/arm/include/asm/Kbuild
arch/arm/include/asm/Kbuild
+17
-0
arch/arm/include/asm/auxvec.h
arch/arm/include/asm/auxvec.h
+0
-4
arch/arm/include/asm/bitsperlong.h
arch/arm/include/asm/bitsperlong.h
+0
-1
arch/arm/include/asm/bug.h
arch/arm/include/asm/bug.h
+46
-9
arch/arm/include/asm/cachetype.h
arch/arm/include/asm/cachetype.h
+4
-1
arch/arm/include/asm/cputime.h
arch/arm/include/asm/cputime.h
+0
-6
arch/arm/include/asm/device.h
arch/arm/include/asm/device.h
+3
-0
arch/arm/include/asm/emergency-restart.h
arch/arm/include/asm/emergency-restart.h
+0
-6
arch/arm/include/asm/errno.h
arch/arm/include/asm/errno.h
+0
-6
arch/arm/include/asm/io.h
arch/arm/include/asm/io.h
+6
-5
arch/arm/include/asm/ioctl.h
arch/arm/include/asm/ioctl.h
+0
-1
arch/arm/include/asm/irq_regs.h
arch/arm/include/asm/irq_regs.h
+0
-1
arch/arm/include/asm/kdebug.h
arch/arm/include/asm/kdebug.h
+0
-1
arch/arm/include/asm/local.h
arch/arm/include/asm/local.h
+0
-1
arch/arm/include/asm/local64.h
arch/arm/include/asm/local64.h
+0
-1
arch/arm/include/asm/mach/arch.h
arch/arm/include/asm/mach/arch.h
+1
-2
arch/arm/include/asm/percpu.h
arch/arm/include/asm/percpu.h
+0
-6
arch/arm/include/asm/poll.h
arch/arm/include/asm/poll.h
+0
-1
arch/arm/include/asm/resource.h
arch/arm/include/asm/resource.h
+0
-6
arch/arm/include/asm/sections.h
arch/arm/include/asm/sections.h
+0
-1
arch/arm/include/asm/siginfo.h
arch/arm/include/asm/siginfo.h
+0
-6
arch/arm/include/asm/sizes.h
arch/arm/include/asm/sizes.h
+0
-21
arch/arm/include/asm/system.h
arch/arm/include/asm/system.h
+2
-2
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+0
-3
arch/arm/kernel/debug.S
arch/arm/kernel/debug.S
+2
-2
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+39
-5
arch/arm/kernel/machine_kexec.c
arch/arm/kernel/machine_kexec.c
+18
-17
arch/arm/kernel/process.c
arch/arm/kernel/process.c
+1
-1
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+33
-4
arch/arm/kernel/smp.c
arch/arm/kernel/smp.c
+13
-10
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+21
-10
arch/arm/kernel/vmlinux.lds.S
arch/arm/kernel/vmlinux.lds.S
+2
-1
arch/arm/lib/backtrace.S
arch/arm/lib/backtrace.S
+0
-6
arch/arm/lib/div64.S
arch/arm/lib/div64.S
+8
-0
arch/arm/mach-at91/Makefile.boot
arch/arm/mach-at91/Makefile.boot
+3
-3
arch/arm/mach-bcmring/Makefile.boot
arch/arm/mach-bcmring/Makefile.boot
+1
-1
arch/arm/mach-bcmring/arch.c
arch/arm/mach-bcmring/arch.c
+2
-2
arch/arm/mach-clps711x/Makefile.boot
arch/arm/mach-clps711x/Makefile.boot
+1
-1
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/clep7312.c
+1
-2
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/edb7211-arch.c
+1
-2
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/fortunet.c
+1
-2
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps711x/p720t.c
+1
-2
arch/arm/mach-cns3xxx/Makefile.boot
arch/arm/mach-cns3xxx/Makefile.boot
+1
-1
arch/arm/mach-davinci/Makefile.boot
arch/arm/mach-davinci/Makefile.boot
+2
-2
arch/arm/mach-dove/Makefile.boot
arch/arm/mach-dove/Makefile.boot
+1
-1
arch/arm/mach-ebsa110/Makefile.boot
arch/arm/mach-ebsa110/Makefile.boot
+1
-1
arch/arm/mach-ep93xx/Makefile.boot
arch/arm/mach-ep93xx/Makefile.boot
+5
-5
arch/arm/mach-exynos4/Makefile.boot
arch/arm/mach-exynos4/Makefile.boot
+1
-1
arch/arm/mach-footbridge/Kconfig
arch/arm/mach-footbridge/Kconfig
+2
-2
arch/arm/mach-footbridge/Makefile.boot
arch/arm/mach-footbridge/Makefile.boot
+1
-1
arch/arm/mach-footbridge/cats-hw.c
arch/arm/mach-footbridge/cats-hw.c
+1
-2
arch/arm/mach-footbridge/netwinder-hw.c
arch/arm/mach-footbridge/netwinder-hw.c
+1
-2
arch/arm/mach-gemini/Makefile.boot
arch/arm/mach-gemini/Makefile.boot
+2
-2
arch/arm/mach-h720x/Makefile.boot
arch/arm/mach-h720x/Makefile.boot
+1
-1
arch/arm/mach-imx/Makefile.boot
arch/arm/mach-imx/Makefile.boot
+5
-5
arch/arm/mach-integrator/Makefile.boot
arch/arm/mach-integrator/Makefile.boot
+1
-1
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/core.c
+4
-0
arch/arm/mach-integrator/include/mach/platform.h
arch/arm/mach-integrator/include/mach/platform.h
+0
-12
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_ap.c
+46
-40
arch/arm/mach-iop13xx/Makefile.boot
arch/arm/mach-iop13xx/Makefile.boot
+1
-1
arch/arm/mach-iop32x/Makefile.boot
arch/arm/mach-iop32x/Makefile.boot
+1
-1
arch/arm/mach-iop33x/Makefile.boot
arch/arm/mach-iop33x/Makefile.boot
+1
-1
arch/arm/mach-ixp2000/Makefile.boot
arch/arm/mach-ixp2000/Makefile.boot
+1
-1
arch/arm/mach-ixp23xx/Makefile.boot
arch/arm/mach-ixp23xx/Makefile.boot
+1
-1
arch/arm/mach-ixp4xx/Makefile.boot
arch/arm/mach-ixp4xx/Makefile.boot
+1
-1
arch/arm/mach-ixp4xx/common-pci.c
arch/arm/mach-ixp4xx/common-pci.c
+2
-1
arch/arm/mach-kirkwood/Makefile.boot
arch/arm/mach-kirkwood/Makefile.boot
+1
-1
arch/arm/mach-ks8695/Makefile.boot
arch/arm/mach-ks8695/Makefile.boot
+1
-1
arch/arm/mach-lpc32xx/Makefile.boot
arch/arm/mach-lpc32xx/Makefile.boot
+1
-1
arch/arm/mach-mmp/Makefile.boot
arch/arm/mach-mmp/Makefile.boot
+1
-1
arch/arm/mach-mmp/aspenite.c
arch/arm/mach-mmp/aspenite.c
+1
-1
arch/arm/mach-mmp/ttc_dkb.c
arch/arm/mach-mmp/ttc_dkb.c
+1
-1
arch/arm/mach-msm/Makefile.boot
arch/arm/mach-msm/Makefile.boot
+1
-1
arch/arm/mach-msm/board-halibut.c
arch/arm/mach-msm/board-halibut.c
+2
-2
arch/arm/mach-msm/board-mahimahi.c
arch/arm/mach-msm/board-mahimahi.c
+2
-2
arch/arm/mach-msm/board-sapphire.c
arch/arm/mach-msm/board-sapphire.c
+2
-2
arch/arm/mach-msm/board-trout.c
arch/arm/mach-msm/board-trout.c
+2
-2
arch/arm/mach-mv78xx0/Makefile.boot
arch/arm/mach-mv78xx0/Makefile.boot
+1
-1
arch/arm/mach-mx5/Makefile.boot
arch/arm/mach-mx5/Makefile.boot
+3
-3
arch/arm/mach-mxs/Makefile.boot
arch/arm/mach-mxs/Makefile.boot
+1
-1
arch/arm/mach-netx/Makefile.boot
arch/arm/mach-netx/Makefile.boot
+1
-1
arch/arm/mach-nomadik/Makefile.boot
arch/arm/mach-nomadik/Makefile.boot
+1
-1
arch/arm/mach-nuc93x/Makefile.boot
arch/arm/mach-nuc93x/Makefile.boot
+1
-1
arch/arm/mach-omap1/Makefile.boot
arch/arm/mach-omap1/Makefile.boot
+1
-1
arch/arm/mach-omap2/Makefile.boot
arch/arm/mach-omap2/Makefile.boot
+1
-1
arch/arm/mach-orion5x/Makefile.boot
arch/arm/mach-orion5x/Makefile.boot
+1
-1
arch/arm/mach-orion5x/common.c
arch/arm/mach-orion5x/common.c
+2
-2
arch/arm/mach-orion5x/common.h
arch/arm/mach-orion5x/common.h
+1
-3
arch/arm/mach-pnx4008/Makefile.boot
arch/arm/mach-pnx4008/Makefile.boot
+1
-1
arch/arm/mach-prima2/Makefile.boot
arch/arm/mach-prima2/Makefile.boot
+1
-1
arch/arm/mach-pxa/Makefile.boot
arch/arm/mach-pxa/Makefile.boot
+1
-1
arch/arm/mach-pxa/cm-x300.c
arch/arm/mach-pxa/cm-x300.c
+2
-2
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/corgi.c
+2
-2
arch/arm/mach-pxa/eseries.c
arch/arm/mach-pxa/eseries.c
+1
-2
arch/arm/mach-pxa/eseries.h
arch/arm/mach-pxa/eseries.h
+1
-2
arch/arm/mach-pxa/poodle.c
arch/arm/mach-pxa/poodle.c
+2
-2
arch/arm/mach-pxa/saar.c
arch/arm/mach-pxa/saar.c
+1
-1
arch/arm/mach-pxa/spitz.c
arch/arm/mach-pxa/spitz.c
+2
-2
arch/arm/mach-pxa/tosa.c
arch/arm/mach-pxa/tosa.c
+2
-2
arch/arm/mach-realview/Makefile.boot
arch/arm/mach-realview/Makefile.boot
+2
-2
arch/arm/mach-realview/core.c
arch/arm/mach-realview/core.c
+1
-2
arch/arm/mach-realview/core.h
arch/arm/mach-realview/core.h
+2
-2
arch/arm/mach-realview/include/mach/board-pb1176.h
arch/arm/mach-realview/include/mach/board-pb1176.h
+1
-0
arch/arm/mach-realview/realview_pb1176.c
arch/arm/mach-realview/realview_pb1176.c
+38
-10
arch/arm/mach-realview/realview_pbx.c
arch/arm/mach-realview/realview_pbx.c
+3
-3
arch/arm/mach-rpc/Makefile.boot
arch/arm/mach-rpc/Makefile.boot
+1
-1
arch/arm/mach-s3c2410/Makefile.boot
arch/arm/mach-s3c2410/Makefile.boot
+2
-2
arch/arm/mach-s3c2412/mach-smdk2413.c
arch/arm/mach-s3c2412/mach-smdk2413.c
+1
-2
arch/arm/mach-s3c2412/mach-vstms.c
arch/arm/mach-s3c2412/mach-vstms.c
+2
-3
arch/arm/mach-s3c64xx/Makefile.boot
arch/arm/mach-s3c64xx/Makefile.boot
+1
-1
arch/arm/mach-s5p64x0/Makefile.boot
arch/arm/mach-s5p64x0/Makefile.boot
+1
-1
arch/arm/mach-s5pc100/Makefile.boot
arch/arm/mach-s5pc100/Makefile.boot
+1
-1
arch/arm/mach-s5pv210/Makefile.boot
arch/arm/mach-s5pv210/Makefile.boot
+1
-1
arch/arm/mach-sa1100/Makefile
arch/arm/mach-sa1100/Makefile
+0
-1
arch/arm/mach-sa1100/Makefile.boot
arch/arm/mach-sa1100/Makefile.boot
+3
-2
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/assabet.c
+1
-2
arch/arm/mach-sa1100/include/mach/simpad.h
arch/arm/mach-sa1100/include/mach/simpad.h
+71
-23
arch/arm/mach-sa1100/leds-simpad.c
arch/arm/mach-sa1100/leds-simpad.c
+0
-100
arch/arm/mach-sa1100/leds.c
arch/arm/mach-sa1100/leds.c
+0
-2
arch/arm/mach-sa1100/leds.h
arch/arm/mach-sa1100/leds.h
+0
-1
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-sa1100/simpad.c
+188
-25
arch/arm/mach-shark/Makefile.boot
arch/arm/mach-shark/Makefile.boot
+1
-1
arch/arm/mach-shmobile/Makefile.boot
arch/arm/mach-shmobile/Makefile.boot
+1
-1
arch/arm/mach-spear3xx/Makefile.boot
arch/arm/mach-spear3xx/Makefile.boot
+1
-1
arch/arm/mach-spear6xx/Makefile.boot
arch/arm/mach-spear6xx/Makefile.boot
+1
-1
arch/arm/mach-tcc8k/Makefile.boot
arch/arm/mach-tcc8k/Makefile.boot
+1
-1
arch/arm/mach-tegra/Makefile.boot
arch/arm/mach-tegra/Makefile.boot
+1
-1
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-harmony.c
+2
-2
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-paz00.c
+2
-2
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/board-trimslice.c
+2
-2
arch/arm/mach-u300/Makefile.boot
arch/arm/mach-u300/Makefile.boot
+2
-2
arch/arm/mach-ux500/Makefile.boot
arch/arm/mach-ux500/Makefile.boot
+1
-1
arch/arm/mach-versatile/Makefile.boot
arch/arm/mach-versatile/Makefile.boot
+1
-1
arch/arm/mach-vexpress/Makefile.boot
arch/arm/mach-vexpress/Makefile.boot
+1
-1
arch/arm/mach-vexpress/hotplug.c
arch/arm/mach-vexpress/hotplug.c
+2
-7
arch/arm/mach-vt8500/Makefile.boot
arch/arm/mach-vt8500/Makefile.boot
+1
-1
arch/arm/mach-w90x900/Makefile.boot
arch/arm/mach-w90x900/Makefile.boot
+1
-1
arch/arm/mach-zynq/Makefile.boot
arch/arm/mach-zynq/Makefile.boot
+1
-1
arch/arm/mm/ioremap.c
arch/arm/mm/ioremap.c
+21
-0
arch/arm/tools/mach-types
arch/arm/tools/mach-types
+16
-4
drivers/pcmcia/sa1100_simpad.c
drivers/pcmcia/sa1100_simpad.c
+16
-19
No files found.
arch/arm/Kconfig
View file @
bdf4e948
...
...
@@ -212,6 +212,10 @@ config ARM_PATCH_PHYS_VIRT
you need to shrink the kernel to the minimal size.
config GENERIC_BUG
def_bool y
depends on BUG
source "init/Kconfig"
source "kernel/Kconfig.freezer"
...
...
arch/arm/boot/Makefile
View file @
bdf4e948
...
...
@@ -78,7 +78,16 @@ endif
$(obj)/uImage
:
STARTADDR=$(LOADADDR)
check_for_multiple_loadaddr
=
\
if
[
$(
words
$(LOADADDR)
)
-gt
1
]
;
then
\
echo
'multiple load addresses:
$(LOADADDR)
'
;
\
echo
'This is incompatible with uImages'
;
\
echo
'Specify LOADADDR on the commandline to build an uImage'
;
\
false
;
\
fi
$(obj)/uImage
:
$(obj)/zImage FORCE
@
$(check_for_multiple_loadaddr)
$(
call
if_changed,uimage
)
@
echo
' Image $@ is ready'
...
...
arch/arm/boot/compressed/Makefile
View file @
bdf4e948
...
...
@@ -139,8 +139,16 @@ bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \
(
echo
"following symbols must have non local/private scope:"
>
&2
;
\
echo
"
$$
bad_syms"
>
&2
;
rm
-f
$@
;
false
)
check_for_multiple_zreladdr
=
\
if
[
$(
words
$(ZRELADDR)
)
-gt
1
-a
"
$(CONFIG_AUTO_ZRELADDR)
"
=
""
]
;
then
\
echo
'multiple zreladdrs:
$(ZRELADDR)
'
;
\
echo
'This needs CONFIG_AUTO_ZRELADDR to be set'
;
\
false
;
\
fi
$(obj)/vmlinux
:
$(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o
\
$(addprefix $(obj)/
,
$(OBJS)) $(lib1funcs) FORCE
@
$(check_for_multiple_zreladdr)
$(
call
if_changed,ld
)
@
$(check_for_bad_syms)
...
...
arch/arm/common/pl330.c
View file @
bdf4e948
...
...
@@ -1546,7 +1546,7 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
/* Start the next */
case
PL330_OP_START
:
if
(
!
_start
(
thrd
))
if
(
!
_
thrd_active
(
thrd
)
&&
!
_
start
(
thrd
))
ret
=
-
EIO
;
break
;
...
...
arch/arm/configs/integrator_defconfig
View file @
bdf4e948
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_TINY_RCU=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
...
...
@@ -8,20 +9,29 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_ARCH_INTEGRATOR=y
CONFIG_ARCH_INTEGRATOR_AP=y
CONFIG_ARCH_INTEGRATOR_CP=y
CONFIG_CPU_ARM720T=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_ARM922T=y
CONFIG_CPU_ARM926T=y
CONFIG_CPU_ARM1020=y
CONFIG_CPU_ARM1022=y
CONFIG_CPU_ARM1026=y
CONFIG_PCI=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y
CONFIG_AEABI=y
CONFIG_LEDS=y
CONFIG_LEDS_CPU=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyAM0,38400n8 root=/dev/nfs ip=bootp
mem=32M
"
CONFIG_CMDLINE="console=ttyAM0,38400n8 root=/dev/nfs ip=bootp"
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_FPE_NWFPE=y
CONFIG_PM=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
...
...
@@ -32,7 +42,6 @@ CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IPV6 is not set
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_AFS_PARTS=y
CONFIG_MTD_CHAR=y
...
...
@@ -40,6 +49,7 @@ CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_PHYSMAP=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=8192
...
...
@@ -56,6 +66,8 @@ CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_PL030=y
CONFIG_EXT2_FS=y
CONFIG_TMPFS=y
CONFIG_JFFS2_FS=y
...
...
@@ -68,4 +80,3 @@ CONFIG_NFSD_V3=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_ERRORS=y
arch/arm/include/asm/Kbuild
View file @
bdf4e948
include include/asm-generic/Kbuild.asm
header-y += hwcap.h
generic-y += auxvec.h
generic-y += bitsperlong.h
generic-y += cputime.h
generic-y += emergency-restart.h
generic-y += errno.h
generic-y += ioctl.h
generic-y += irq_regs.h
generic-y += kdebug.h
generic-y += local.h
generic-y += local64.h
generic-y += percpu.h
generic-y += poll.h
generic-y += resource.h
generic-y += sections.h
generic-y += siginfo.h
generic-y += sizes.h
arch/arm/include/asm/auxvec.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef __ASMARM_AUXVEC_H
#define __ASMARM_AUXVEC_H
#endif
arch/arm/include/asm/bitsperlong.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/bitsperlong.h>
arch/arm/include/asm/bug.h
View file @
bdf4e948
...
...
@@ -3,21 +3,58 @@
#ifdef CONFIG_BUG
#ifdef CONFIG_DEBUG_BUGVERBOSE
extern
void
__bug
(
const
char
*
file
,
int
line
)
__attribute__
((
noreturn
));
/* give file/line information */
#define BUG() __bug(__FILE__, __LINE__)
/*
* Use a suitable undefined instruction to use for ARM/Thumb2 bug handling.
* We need to be careful not to conflict with those used by other modules and
* the register_undef_hook() system.
*/
#ifdef CONFIG_THUMB2_KERNEL
#define BUG_INSTR_VALUE 0xde02
#define BUG_INSTR_TYPE ".hword "
#else
#define BUG_INSTR_VALUE 0xe7f001f2
#define BUG_INSTR_TYPE ".word "
#endif
/* this just causes an oops */
#define BUG() do { *(int *)0 = 0; } while (1)
#endif
#define BUG() _BUG(__FILE__, __LINE__, BUG_INSTR_VALUE)
#define _BUG(file, line, value) __BUG(file, line, value)
#ifdef CONFIG_DEBUG_BUGVERBOSE
/*
* The extra indirection is to ensure that the __FILE__ string comes through
* OK. Many version of gcc do not support the asm %c parameter which would be
* preferable to this unpleasantness. We use mergeable string sections to
* avoid multiple copies of the string appearing in the kernel image.
*/
#define __BUG(__file, __line, __value) \
do { \
BUILD_BUG_ON(sizeof(struct bug_entry) != 12); \
asm volatile("1:\t" BUG_INSTR_TYPE #__value "\n" \
".pushsection .rodata.str, \"aMS\", %progbits, 1\n" \
"2:\t.asciz " #__file "\n" \
".popsection\n" \
".pushsection __bug_table,\"a\"\n" \
"3:\t.word 1b, 2b\n" \
"\t.hword " #__line ", 0\n" \
".popsection"); \
unreachable(); \
} while (0)
#else
/* not CONFIG_DEBUG_BUGVERBOSE */
#define __BUG(__file, __line, __value) \
do { \
asm volatile(BUG_INSTR_TYPE #__value); \
unreachable(); \
} while (0)
#endif
/* CONFIG_DEBUG_BUGVERBOSE */
#define HAVE_ARCH_BUG
#endif
#endif
/* CONFIG_BUG */
#include <asm-generic/bug.h>
...
...
arch/arm/include/asm/cachetype.h
View file @
bdf4e948
...
...
@@ -7,6 +7,7 @@
#define CACHEID_VIPT (CACHEID_VIPT_ALIASING|CACHEID_VIPT_NONALIASING)
#define CACHEID_ASID_TAGGED (1 << 3)
#define CACHEID_VIPT_I_ALIASING (1 << 4)
#define CACHEID_PIPT (1 << 5)
extern
unsigned
int
cacheid
;
...
...
@@ -16,6 +17,7 @@ extern unsigned int cacheid;
#define cache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_ALIASING)
#define icache_is_vivt_asid_tagged() cacheid_is(CACHEID_ASID_TAGGED)
#define icache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_I_ALIASING)
#define icache_is_pipt() cacheid_is(CACHEID_PIPT)
/*
* __LINUX_ARM_ARCH__ is the minimum supported CPU architecture
...
...
@@ -26,7 +28,8 @@ extern unsigned int cacheid;
#if __LINUX_ARM_ARCH__ >= 7
#define __CACHEID_ARCH_MIN (CACHEID_VIPT_NONALIASING |\
CACHEID_ASID_TAGGED |\
CACHEID_VIPT_I_ALIASING)
CACHEID_VIPT_I_ALIASING |\
CACHEID_PIPT)
#elif __LINUX_ARM_ARCH__ >= 6
#define __CACHEID_ARCH_MIN (~CACHEID_VIVT)
#else
...
...
arch/arm/include/asm/cputime.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef __ARM_CPUTIME_H
#define __ARM_CPUTIME_H
#include <asm-generic/cputime.h>
#endif
/* __ARM_CPUTIME_H */
arch/arm/include/asm/device.h
View file @
bdf4e948
...
...
@@ -10,6 +10,9 @@ struct dev_archdata {
#ifdef CONFIG_DMABOUNCE
struct
dmabounce_device_info
*
dmabounce
;
#endif
#ifdef CONFIG_IOMMU_API
void
*
iommu
;
/* private IOMMU data */
#endif
};
struct
pdev_archdata
{
...
...
arch/arm/include/asm/emergency-restart.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef _ASM_EMERGENCY_RESTART_H
#define _ASM_EMERGENCY_RESTART_H
#include <asm-generic/emergency-restart.h>
#endif
/* _ASM_EMERGENCY_RESTART_H */
arch/arm/include/asm/errno.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef _ARM_ERRNO_H
#define _ARM_ERRNO_H
#include <asm-generic/errno.h>
#endif
arch/arm/include/asm/io.h
View file @
bdf4e948
...
...
@@ -80,6 +80,7 @@ extern void __iomem *__arm_ioremap_caller(unsigned long, size_t, unsigned int,
extern
void
__iomem
*
__arm_ioremap_pfn
(
unsigned
long
,
unsigned
long
,
size_t
,
unsigned
int
);
extern
void
__iomem
*
__arm_ioremap
(
unsigned
long
,
size_t
,
unsigned
int
);
extern
void
__iomem
*
__arm_ioremap_exec
(
unsigned
long
,
size_t
,
bool
cached
);
extern
void
__iounmap
(
volatile
void
__iomem
*
addr
);
/*
...
...
@@ -210,11 +211,11 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
* IO port primitives for more information.
*/
#ifdef __mem_pci
#define readb_relaxed(c) ({ u8 __
v = __raw_readb(__mem_pci(c)); __v
; })
#define readw_relaxed(c) ({ u16 __
v
= le16_to_cpu((__force __le16) \
__raw_readw(__mem_pci(c))); __
v
; })
#define readl_relaxed(c) ({ u32 __
v
= le32_to_cpu((__force __le32) \
__raw_readl(__mem_pci(c))); __
v
; })
#define readb_relaxed(c) ({ u8 __
r = __raw_readb(__mem_pci(c)); __r
; })
#define readw_relaxed(c) ({ u16 __
r
= le16_to_cpu((__force __le16) \
__raw_readw(__mem_pci(c))); __
r
; })
#define readl_relaxed(c) ({ u32 __
r
= le32_to_cpu((__force __le32) \
__raw_readl(__mem_pci(c))); __
r
; })
#define writeb_relaxed(v,c) ((void)__raw_writeb(v,__mem_pci(c)))
#define writew_relaxed(v,c) ((void)__raw_writew((__force u16) \
...
...
arch/arm/include/asm/ioctl.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/ioctl.h>
arch/arm/include/asm/irq_regs.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/irq_regs.h>
arch/arm/include/asm/kdebug.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/kdebug.h>
arch/arm/include/asm/local.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/local.h>
arch/arm/include/asm/local64.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/local64.h>
arch/arm/include/asm/mach/arch.h
View file @
bdf4e948
...
...
@@ -34,8 +34,7 @@ struct machine_desc {
unsigned
int
reserve_lp1
:
1
;
/* never has lp1 */
unsigned
int
reserve_lp2
:
1
;
/* never has lp2 */
unsigned
int
soft_reboot
:
1
;
/* soft reboot */
void
(
*
fixup
)(
struct
machine_desc
*
,
struct
tag
*
,
char
**
,
void
(
*
fixup
)(
struct
tag
*
,
char
**
,
struct
meminfo
*
);
void
(
*
reserve
)(
void
);
/* reserve mem blocks */
void
(
*
map_io
)(
void
);
/* IO mapping function */
...
...
arch/arm/include/asm/percpu.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef __ARM_PERCPU
#define __ARM_PERCPU
#include <asm-generic/percpu.h>
#endif
arch/arm/include/asm/poll.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/poll.h>
arch/arm/include/asm/resource.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef _ARM_RESOURCE_H
#define _ARM_RESOURCE_H
#include <asm-generic/resource.h>
#endif
arch/arm/include/asm/sections.h
deleted
100644 → 0
View file @
06afb1a0
#include <asm-generic/sections.h>
arch/arm/include/asm/siginfo.h
deleted
100644 → 0
View file @
06afb1a0
#ifndef _ASMARM_SIGINFO_H
#define _ASMARM_SIGINFO_H
#include <asm-generic/siginfo.h>
#endif
arch/arm/include/asm/sizes.h
deleted
100644 → 0
View file @
06afb1a0
/*
* 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
*/
/* Size definitions
* Copyright (C) ARM Limited 1998. All rights reserved.
*/
#include <asm-generic/sizes.h>
#define SZ_48M (SZ_32M + SZ_16M)
arch/arm/include/asm/system.h
View file @
bdf4e948
...
...
@@ -57,6 +57,7 @@
#ifndef __ASSEMBLY__
#include <linux/compiler.h>
#include <linux/linkage.h>
#include <linux/irqflags.h>
...
...
@@ -90,14 +91,13 @@ void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int,
#define xchg(ptr,x) \
((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
extern
asmlinkage
void
__backtrace
(
void
);
extern
asmlinkage
void
c_backtrace
(
unsigned
long
fp
,
int
pmode
);
struct
mm_struct
;
extern
void
show_pte
(
struct
mm_struct
*
mm
,
unsigned
long
addr
);
extern
void
__show_regs
(
struct
pt_regs
*
);
extern
int
cpu_architecture
(
void
);
extern
int
__pure
cpu_architecture
(
void
);
extern
void
cpu_init
(
void
);
void
arm_machine_restart
(
char
mode
,
const
char
*
cmd
);
...
...
arch/arm/kernel/armksyms.c
View file @
bdf4e948
...
...
@@ -49,9 +49,6 @@ extern void __aeabi_ulcmp(void);
extern
void
fpundefinstr
(
void
);
EXPORT_SYMBOL
(
__backtrace
);
/* platform dependent support */
EXPORT_SYMBOL
(
__udelay
);
EXPORT_SYMBOL
(
__const_udelay
);
...
...
arch/arm/kernel/debug.S
View file @
bdf4e948
...
...
@@ -151,6 +151,8 @@ printhex: adr r2, hexbuf
b
printascii
ENDPROC
(
printhex2
)
hexbuf
:
.
space
16
.
ltorg
ENTRY
(
printascii
)
...
...
@@ -175,5 +177,3 @@ ENTRY(printch)
mov
r0
,
#
0
b
1
b
ENDPROC
(
printch
)
hexbuf
:
.
space
16
arch/arm/kernel/entry-armv.S
View file @
bdf4e948
...
...
@@ -24,6 +24,7 @@
#include <asm/unwind.h>
#include <asm/unistd.h>
#include <asm/tls.h>
#include <asm/system.h>
#include "entry-header.S"
#include <asm/entry-macro-multi.S>
...
...
@@ -262,8 +263,7 @@ __und_svc:
ldr
r0
,
[
r4
,
#-
4
]
#else
ldrh
r0
,
[
r4
,
#-
2
]
@
Thumb
instruction
at
LR
-
2
and
r9
,
r0
,
#
0xf800
cmp
r9
,
#
0xe800
@
32
-
bit
instruction
if
xx
>=
0
cmp
r0
,
#
0xe800
@
32
-
bit
instruction
if
xx
>=
0
ldrhhs
r9
,
[
r4
]
@
bottom
16
bits
orrhs
r0
,
r9
,
r0
,
lsl
#
16
#endif
...
...
@@ -440,18 +440,46 @@ __und_usr:
#endif
beq
call_fpe
@
Thumb
instruction
#if __LINUX_ARM_ARCH__ >= 7
#if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7
/*
*
Thumb
-
2
instruction
handling
.
Note
that
because
pre
-
v6
and
>=
v6
platforms
*
can
never
be
supported
in
a
single
kernel
,
this
code
is
not
applicable
at
*
all
when
__LINUX_ARM_ARCH__
<
6
.
This
allows
simplifying
assumptions
to
be
*
made
about
.
arch
directives
.
*/
#if __LINUX_ARM_ARCH__ < 7
/*
If
the
target
CPU
may
not
be
Thumb
-
2
-
capable
,
a
run
-
time
check
is
needed
:
*/
#define NEED_CPU_ARCHITECTURE
ldr
r5
,
.
LCcpu_architecture
ldr
r5
,
[
r5
]
cmp
r5
,
#
CPU_ARCH_ARMv7
blo
__und_usr_unknown
/*
*
The
following
code
won
't get run unless the running CPU really is v7, so
*
coding
round
the
lack
of
ldrht
on
older
arches
is
pointless
.
Temporarily
*
override
the
assembler
target
arch
with
the
minimum
required
instead
:
*/
.
arch
armv6t2
#endif
2
:
ARM
(
ldrht
r5
,
[
r4
],
#
2
)
THUMB
(
ldrht
r5
,
[
r4
]
)
THUMB
(
add
r4
,
r4
,
#
2
)
and
r0
,
r5
,
#
0xf800
@
mask
bits
111
x
x
...
....
....
cmp
r0
,
#
0xe800
@
32
bit
instruction
if
xx
!=
0
cmp
r5
,
#
0xe800
@
32
bit
instruction
if
xx
!=
0
blo
__und_usr_unknown
3
:
ldrht
r0
,
[
r4
]
add
r2
,
r2
,
#
2
@
r2
is
PC
+
2
,
make
it
PC
+
4
orr
r0
,
r0
,
r5
,
lsl
#
16
#if __LINUX_ARM_ARCH__ < 7
/*
If
the
target
arch
was
overridden
,
change
it
back
:
*/
#ifdef CONFIG_CPU_32v6K
.
arch
armv6k
#else
.
arch
armv6
#endif
#endif /* __LINUX_ARM_ARCH__ < 7 */
#else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */
b
__und_usr_unknown
#endif
UNWIND
(.
fnend
)
...
...
@@ -578,6 +606,12 @@ call_fpe:
movw_pc
lr
@
CP
#
14
(
Debug
)
movw_pc
lr
@
CP
#
15
(
Control
)
#ifdef NEED_CPU_ARCHITECTURE
.
align
2
.
LCcpu_architecture
:
.
word
__cpu_architecture
#endif
#ifdef CONFIG_NEON
.
align
6
...
...
arch/arm/kernel/machine_kexec.c
View file @
bdf4e948
...
...
@@ -32,6 +32,24 @@ static atomic_t waiting_for_crash_ipi;
int
machine_kexec_prepare
(
struct
kimage
*
image
)
{
unsigned
long
page_list
;
void
*
reboot_code_buffer
;
page_list
=
image
->
head
&
PAGE_MASK
;
reboot_code_buffer
=
page_address
(
image
->
control_code_page
);
/* Prepare parameters for reboot_code_buffer*/
kexec_start_address
=
image
->
start
;
kexec_indirection_page
=
page_list
;
kexec_mach_type
=
machine_arch_type
;
kexec_boot_atags
=
image
->
start
-
KEXEC_ARM_ZIMAGE_OFFSET
+
KEXEC_ARM_ATAGS_OFFSET
;
/* copy our kernel relocation code to the control code page */
memcpy
(
reboot_code_buffer
,
relocate_new_kernel
,
relocate_new_kernel_size
);
flush_icache_range
((
unsigned
long
)
reboot_code_buffer
,
(
unsigned
long
)
reboot_code_buffer
+
KEXEC_CONTROL_PAGE_SIZE
);
return
0
;
}
...
...
@@ -82,31 +100,14 @@ void (*kexec_reinit)(void);
void
machine_kexec
(
struct
kimage
*
image
)
{
unsigned
long
page_list
;
unsigned
long
reboot_code_buffer_phys
;
void
*
reboot_code_buffer
;
page_list
=
image
->
head
&
PAGE_MASK
;
/* we need both effective and real address here */
reboot_code_buffer_phys
=
page_to_pfn
(
image
->
control_code_page
)
<<
PAGE_SHIFT
;
reboot_code_buffer
=
page_address
(
image
->
control_code_page
);
/* Prepare parameters for reboot_code_buffer*/
kexec_start_address
=
image
->
start
;
kexec_indirection_page
=
page_list
;
kexec_mach_type
=
machine_arch_type
;
kexec_boot_atags
=
image
->
start
-
KEXEC_ARM_ZIMAGE_OFFSET
+
KEXEC_ARM_ATAGS_OFFSET
;
/* copy our kernel relocation code to the control code page */
memcpy
(
reboot_code_buffer
,
relocate_new_kernel
,
relocate_new_kernel_size
);
flush_icache_range
((
unsigned
long
)
reboot_code_buffer
,
(
unsigned
long
)
reboot_code_buffer
+
KEXEC_CONTROL_PAGE_SIZE
);
printk
(
KERN_INFO
"Bye!
\n
"
);
if
(
kexec_reinit
)
...
...
arch/arm/kernel/process.c
View file @
bdf4e948
...
...
@@ -319,7 +319,7 @@ void show_regs(struct pt_regs * regs)
printk
(
"
\n
"
);
printk
(
"Pid: %d, comm: %20s
\n
"
,
task_pid_nr
(
current
),
current
->
comm
);
__show_regs
(
regs
);
__backtrace
();
dump_stack
();
}
ATOMIC_NOTIFIER_HEAD
(
thread_notify_head
);
...
...
arch/arm/kernel/setup.c
View file @
bdf4e948
...
...
@@ -29,6 +29,8 @@
#include <linux/fs.h>
#include <linux/proc_fs.h>
#include <linux/memblock.h>
#include <linux/bug.h>
#include <linux/compiler.h>
#include <asm/unified.h>
#include <asm/cpu.h>
...
...
@@ -42,6 +44,7 @@
#include <asm/cacheflush.h>
#include <asm/cachetype.h>
#include <asm/tlbflush.h>
#include <asm/system.h>
#include <asm/prom.h>
#include <asm/mach/arch.h>
...
...
@@ -115,6 +118,13 @@ struct outer_cache_fns outer_cache __read_mostly;
EXPORT_SYMBOL
(
outer_cache
);
#endif
/*
* Cached cpu_architecture() result for use by assembler code.
* C code should use the cpu_architecture() function instead of accessing this
* variable directly.
*/
int
__cpu_architecture
__read_mostly
=
CPU_ARCH_UNKNOWN
;
struct
stack
{
u32
irq
[
3
];
u32
abt
[
3
];
...
...
@@ -210,7 +220,7 @@ static const char *proc_arch[] = {
"?(17)"
,
};
int
cpu_architecture
(
void
)
static
int
__get_
cpu_architecture
(
void
)
{
int
cpu_arch
;
...
...
@@ -243,11 +253,22 @@ int cpu_architecture(void)
return
cpu_arch
;
}
int
__pure
cpu_architecture
(
void
)
{
BUG_ON
(
__cpu_architecture
==
CPU_ARCH_UNKNOWN
);
return
__cpu_architecture
;
}
static
int
cpu_has_aliasing_icache
(
unsigned
int
arch
)
{
int
aliasing_icache
;
unsigned
int
id_reg
,
num_sets
,
line_size
;
/* PIPT caches never alias. */
if
(
icache_is_pipt
())
return
0
;
/* arch specifies the register format */
switch
(
arch
)
{
case
CPU_ARCH_ARMv7
:
...
...
@@ -282,8 +303,14 @@ static void __init cacheid_init(void)
/* ARMv7 register format */
arch
=
CPU_ARCH_ARMv7
;
cacheid
=
CACHEID_VIPT_NONALIASING
;
if
((
cachetype
&
(
3
<<
14
))
==
1
<<
14
)
switch
(
cachetype
&
(
3
<<
14
))
{
case
(
1
<<
14
):
cacheid
|=
CACHEID_ASID_TAGGED
;
break
;
case
(
3
<<
14
):
cacheid
|=
CACHEID_PIPT
;
break
;
}
}
else
{
arch
=
CPU_ARCH_ARMv6
;
if
(
cachetype
&
(
1
<<
23
))
...
...
@@ -300,10 +327,11 @@ static void __init cacheid_init(void)
printk
(
"CPU: %s data cache, %s instruction cache
\n
"
,
cache_is_vivt
()
?
"VIVT"
:
cache_is_vipt_aliasing
()
?
"VIPT aliasing"
:
cache_is_vipt_nonaliasing
()
?
"VIPT nonaliasing"
:
"unknown"
,
cache_is_vipt_nonaliasing
()
?
"
PIPT /
VIPT nonaliasing"
:
"unknown"
,
cache_is_vivt
()
?
"VIVT"
:
icache_is_vivt_asid_tagged
()
?
"VIVT ASID tagged"
:
icache_is_vipt_aliasing
()
?
"VIPT aliasing"
:
icache_is_pipt
()
?
"PIPT"
:
cache_is_vipt_nonaliasing
()
?
"VIPT nonaliasing"
:
"unknown"
);
}
...
...
@@ -414,6 +442,7 @@ static void __init setup_processor(void)
}
cpu_name
=
list
->
cpu_name
;
__cpu_architecture
=
__get_cpu_architecture
();
#ifdef MULTI_CPU
processor
=
*
list
->
proc
;
...
...
@@ -861,7 +890,7 @@ static struct machine_desc * __init setup_machine_tags(unsigned int nr)
}
if
(
mdesc
->
fixup
)
mdesc
->
fixup
(
mdesc
,
tags
,
&
from
,
&
meminfo
);
mdesc
->
fixup
(
tags
,
&
from
,
&
meminfo
);
if
(
tags
->
hdr
.
tag
==
ATAG_CORE
)
{
if
(
meminfo
.
nr_banks
!=
0
)
...
...
arch/arm/kernel/smp.c
View file @
bdf4e948
...
...
@@ -319,17 +319,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
*/
platform_secondary_init
(
cpu
);
/*
* Enable local interrupts.
*/
notify_cpu_starting
(
cpu
);
local_irq_enable
();
local_fiq_enable
();
/*
* Setup the percpu timer for this CPU.
*/
percpu_timer_setup
();
calibrate_delay
();
...
...
@@ -341,9 +331,22 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
* before we continue.
*/
set_cpu_online
(
cpu
,
true
);
/*
* Setup the percpu timer for this CPU.
*/
percpu_timer_setup
();
while
(
!
cpu_active
(
cpu
))
cpu_relax
();
/*
* cpu_active bit is set, so it's safe to enalbe interrupts
* now.
*/
local_irq_enable
();
local_fiq_enable
();
/*
* OK, it's off to the idle thread for us
*/
...
...
arch/arm/kernel/traps.c
View file @
bdf4e948
...
...
@@ -21,6 +21,7 @@
#include <linux/kdebug.h>
#include <linux/module.h>
#include <linux/kexec.h>
#include <linux/bug.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/sched.h>
...
...
@@ -271,6 +272,8 @@ void die(const char *str, struct pt_regs *regs, int err)
spin_lock_irq
(
&
die_lock
);
console_verbose
();
bust_spinlocks
(
1
);
if
(
!
user_mode
(
regs
))
report_bug
(
regs
->
ARM_pc
,
regs
);
ret
=
__die
(
str
,
err
,
thread
,
regs
);
if
(
regs
&&
kexec_should_crash
(
thread
->
task
))
...
...
@@ -302,6 +305,24 @@ void arm_notify_die(const char *str, struct pt_regs *regs,
}
}
#ifdef CONFIG_GENERIC_BUG
int
is_valid_bugaddr
(
unsigned
long
pc
)
{
#ifdef CONFIG_THUMB2_KERNEL
unsigned
short
bkpt
;
#else
unsigned
long
bkpt
;
#endif
if
(
probe_kernel_address
((
unsigned
*
)
pc
,
bkpt
))
return
0
;
return
bkpt
==
BUG_INSTR_VALUE
;
}
#endif
static
LIST_HEAD
(
undef_hook
);
static
DEFINE_SPINLOCK
(
undef_lock
);
...
...
@@ -707,16 +728,6 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
arm_notify_die
(
"unknown data abort code"
,
regs
,
&
info
,
instr
,
0
);
}
void
__attribute__
((
noreturn
))
__bug
(
const
char
*
file
,
int
line
)
{
printk
(
KERN_CRIT
"kernel BUG at %s:%d!
\n
"
,
file
,
line
);
*
(
int
*
)
0
=
0
;
/* Avoid "noreturn function does return" */
for
(;;);
}
EXPORT_SYMBOL
(
__bug
);
void
__readwrite_bug
(
const
char
*
fn
)
{
printk
(
"%s called, but not implemented
\n
"
,
fn
);
...
...
arch/arm/kernel/vmlinux.lds.S
View file @
bdf4e948
...
...
@@ -21,7 +21,8 @@
#define ARM_CPU_KEEP(x)
#endif
#if defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)
#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
defined
(
CONFIG_GENERIC_BUG
)
#define ARM_EXIT_KEEP(x) x
#define ARM_EXIT_DISCARD(x)
#else
...
...
arch/arm/lib/backtrace.S
View file @
bdf4e948
...
...
@@ -22,15 +22,10 @@
#define mask r7
#define offset r8
ENTRY
(
__backtrace
)
mov
r1
,
#
0x10
mov
r0
,
fp
ENTRY
(
c_backtrace
)
#if !defined(CONFIG_FRAME_POINTER) || !defined(CONFIG_PRINTK)
mov
pc
,
lr
ENDPROC
(
__backtrace
)
ENDPROC
(
c_backtrace
)
#else
stmfd
sp
!,
{
r4
-
r8
,
lr
}
@
Save
an
extra
register
so
we
have
a
location
...
...
...
@@ -107,7 +102,6 @@ for_each_frame: tst frame, mask @ Check for address exceptions
mov
r1
,
frame
bl
printk
no_frame
:
ldmfd
sp
!,
{
r4
-
r8
,
pc
}
ENDPROC
(
__backtrace
)
ENDPROC
(
c_backtrace
)
.
pushsection
__ex_table
,
"a"
...
...
arch/arm/lib/div64.S
View file @
bdf4e948
...
...
@@ -13,6 +13,7 @@
*/
#include <linux/linkage.h>
#include <asm/unwind.h>
#ifdef __ARMEB__
#define xh r0
...
...
@@ -44,6 +45,7 @@
*/
ENTRY
(
__do_div64
)
UNWIND
(.
fnstart
)
@
Test
for
easy
paths
first
.
subs
ip
,
r4
,
#
1
...
...
@@ -189,7 +191,12 @@ ENTRY(__do_div64)
moveq
yh
,
xh
moveq
xh
,
#
0
moveq
pc
,
lr
UNWIND
(.
fnend
)
UNWIND
(.
fnstart
)
UNWIND
(.
pad
#4)
UNWIND
(.
save
{
lr
})
Ldiv0_64
:
@
Division
by
0
:
str
lr
,
[
sp
,
#-
8
]!
bl
__div0
...
...
@@ -200,4 +207,5 @@ ENTRY(__do_div64)
mov
xh
,
#
0
ldr
pc
,
[
sp
],
#
8
UNWIND
(.
fnend
)
ENDPROC
(
__do_div64
)
arch/arm/mach-at91/Makefile.boot
View file @
bdf4e948
...
...
@@ -4,15 +4,15 @@
# INITRD_PHYS must be in RAM
ifeq
($(CONFIG_ARCH_AT91CAP9),y)
zreladdr-y
:
=
0x70008000
zreladdr-y
+
=
0x70008000
params_phys-y
:=
0x70000100
initrd_phys-y
:=
0x70410000
else
ifeq
($(CONFIG_ARCH_AT91SAM9G45),y)
zreladdr-y
:
=
0x70008000
zreladdr-y
+
=
0x70008000
params_phys-y
:=
0x70000100
initrd_phys-y
:=
0x70410000
else
zreladdr-y
:
=
0x20008000
zreladdr-y
+
=
0x20008000
params_phys-y
:=
0x20000100
initrd_phys-y
:=
0x20410000
endif
arch/arm/mach-bcmring/Makefile.boot
View file @
bdf4e948
# Address where decompressor will be written and eventually executed.
#
# default to SDRAM
zreladdr-y
:
=
$(CONFIG_BCM_ZRELADDR)
zreladdr-y
+
=
$(CONFIG_BCM_ZRELADDR)
params_phys-y
:=
0x00000800
arch/arm/mach-bcmring/arch.c
View file @
bdf4e948
...
...
@@ -136,8 +136,8 @@ static void __init bcmring_init_machine(void)
*
*****************************************************************************/
static
void
__init
bcmring_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
t
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
static
void
__init
bcmring_fixup
(
struct
tag
*
t
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_BLK_DEV_INITRD
printk
(
KERN_NOTICE
"bcmring_fixup
\n
"
);
t
->
hdr
.
tag
=
ATAG_CORE
;
...
...
arch/arm/mach-clps711x/Makefile.boot
View file @
bdf4e948
# The standard locations for stuff on CLPS711x type processors
zreladdr-y
:
=
0xc0028000
zreladdr-y
+
=
0xc0028000
params_phys-y
:=
0xc0000100
# Should probably have some agreement on these...
initrd_phys-$(CONFIG_ARCH_P720T)
:=
0xc0400000
...
...
arch/arm/mach-clps711x/clep7312.c
View file @
bdf4e948
...
...
@@ -26,8 +26,7 @@
#include "common.h"
static
void
__init
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_clep7312
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
0xc0000000
;
...
...
arch/arm/mach-clps711x/edb7211-arch.c
View file @
bdf4e948
...
...
@@ -37,8 +37,7 @@ static void __init edb7211_reserve(void)
}
static
void
__init
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_edb7211
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/*
* Bank start addresses are not present in the information
...
...
arch/arm/mach-clps711x/fortunet.c
View file @
bdf4e948
...
...
@@ -57,8 +57,7 @@ typedef struct tag_IMAGE_PARAMS
#define IMAGE_PARAMS_PHYS 0xC01F0000
static
void
__init
fortunet_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fortunet_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
IMAGE_PARAMS
*
ip
=
phys_to_virt
(
IMAGE_PARAMS_PHYS
);
*
cmdline
=
phys_to_virt
(
ip
->
command_line
);
...
...
arch/arm/mach-clps711x/p720t.c
View file @
bdf4e948
...
...
@@ -56,8 +56,7 @@ static struct map_desc p720t_io_desc[] __initdata = {
};
static
void
__init
fixup_p720t
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_p720t
(
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/*
* Our bootloader doesn't setup any tags (yet).
...
...
arch/arm/mach-cns3xxx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00C00000
arch/arm/mach-davinci/Makefile.boot
View file @
bdf4e948
...
...
@@ -2,12 +2,12 @@ ifeq ($(CONFIG_ARCH_DAVINCI_DA8XX),y)
ifeq
($(CONFIG_ARCH_DAVINCI_DMx),y)
$(error
Cannot
enable
DaVinci
and
DA8XX
platforms
concurrently)
else
zreladdr-y
:
=
0xc0008000
zreladdr-y
+
=
0xc0008000
params_phys-y
:=
0xc0000100
initrd_phys-y
:=
0xc0800000
endif
else
zreladdr-y
:
=
0x80008000
zreladdr-y
+
=
0x80008000
params_phys-y
:=
0x80000100
initrd_phys-y
:=
0x80800000
endif
arch/arm/mach-dove/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-ebsa110/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000400
initrd_phys-y
:=
0x00800000
arch/arm/mach-ep93xx/Makefile.boot
View file @
bdf4e948
zreladdr-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
:
=
0x00008000
zreladdr-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
+
=
0x00008000
params_phys-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
:=
0x00000100
zreladdr-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
:
=
0xc0008000
zreladdr-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
+
=
0xc0008000
params_phys-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
:=
0xc0000100
zreladdr-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)
:
=
0xd0008000
zreladdr-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)
+
=
0xd0008000
params_phys-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)
:=
0xd0000100
zreladdr-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)
:
=
0xe0008000
zreladdr-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)
+
=
0xe0008000
params_phys-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)
:=
0xe0000100
zreladdr-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)
:
=
0xf0008000
zreladdr-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)
+
=
0xf0008000
params_phys-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)
:=
0xf0000100
arch/arm/mach-exynos4/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x40008000
zreladdr-y
+
=
0x40008000
params_phys-y
:=
0x40000100
arch/arm/mach-footbridge/Kconfig
View file @
bdf4e948
...
...
@@ -4,8 +4,8 @@ menu "Footbridge Implementations"
config ARCH_CATS
bool "CATS"
select CLKSRC_I8253
select CLKEVT_I8253
select CLKSRC_I8253
select FOOTBRIDGE_HOST
select ISA
select ISA_DMA
...
...
@@ -61,8 +61,8 @@ config ARCH_EBSA285_HOST
config ARCH_NETWINDER
bool "NetWinder"
select CLKSRC_I8253
select CLKEVT_I8253
select CLKSRC_I8253
select FOOTBRIDGE_HOST
select ISA
select ISA_DMA
...
...
arch/arm/mach-footbridge/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-footbridge/cats-hw.c
View file @
bdf4e948
...
...
@@ -76,8 +76,7 @@ __initcall(cats_hw_init);
* hard reboots fail on early boards.
*/
static
void
__init
fixup_cats
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_cats
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
screen_info
.
orig_video_lines
=
25
;
screen_info
.
orig_video_points
=
16
;
...
...
arch/arm/mach-footbridge/netwinder-hw.c
View file @
bdf4e948
...
...
@@ -631,8 +631,7 @@ __initcall(nw_hw_init);
* the parameter page.
*/
static
void
__init
fixup_netwinder
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_netwinder
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_ISAPNP
extern
int
isapnp_disable
;
...
...
arch/arm/mach-gemini/Makefile.boot
View file @
bdf4e948
ifeq
($(CONFIG_GEMINI_MEM_SWAP),y)
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
else
zreladdr-y
:
=
0x10008000
zreladdr-y
+
=
0x10008000
params_phys-y
:=
0x10000100
initrd_phys-y
:=
0x10800000
endif
arch/arm/mach-h720x/Makefile.boot
View file @
bdf4e948
zreladdr-$(CONFIG_ARCH_H720X)
:
=
0x40008000
zreladdr-$(CONFIG_ARCH_H720X)
+
=
0x40008000
arch/arm/mach-imx/Makefile.boot
View file @
bdf4e948
zreladdr-$(CONFIG_ARCH_MX1)
:
=
0x08008000
zreladdr-$(CONFIG_ARCH_MX1)
+
=
0x08008000
params_phys-$(CONFIG_ARCH_MX1)
:=
0x08000100
initrd_phys-$(CONFIG_ARCH_MX1)
:=
0x08800000
zreladdr-$(CONFIG_MACH_MX21)
:
=
0xC0008000
zreladdr-$(CONFIG_MACH_MX21)
+
=
0xC0008000
params_phys-$(CONFIG_MACH_MX21)
:=
0xC0000100
initrd_phys-$(CONFIG_MACH_MX21)
:=
0xC0800000
zreladdr-$(CONFIG_ARCH_MX25)
:
=
0x80008000
zreladdr-$(CONFIG_ARCH_MX25)
+
=
0x80008000
params_phys-$(CONFIG_ARCH_MX25)
:=
0x80000100
initrd_phys-$(CONFIG_ARCH_MX25)
:=
0x80800000
zreladdr-$(CONFIG_MACH_MX27)
:
=
0xA0008000
zreladdr-$(CONFIG_MACH_MX27)
+
=
0xA0008000
params_phys-$(CONFIG_MACH_MX27)
:=
0xA0000100
initrd_phys-$(CONFIG_MACH_MX27)
:=
0xA0800000
zreladdr-$(CONFIG_ARCH_MX3)
:
=
0x80008000
zreladdr-$(CONFIG_ARCH_MX3)
+
=
0x80008000
params_phys-$(CONFIG_ARCH_MX3)
:=
0x80000100
initrd_phys-$(CONFIG_ARCH_MX3)
:=
0x80800000
arch/arm/mach-integrator/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-integrator/core.c
View file @
bdf4e948
...
...
@@ -126,6 +126,10 @@ static struct clk_lookup lookups[] = {
{
/* Bus clock */
.
con_id
=
"apb_pclk"
,
.
clk
=
&
dummy_apb_pclk
,
},
{
/* Integrator/AP timer frequency */
.
dev_id
=
"ap_timer"
,
.
clk
=
&
clk24mhz
,
},
{
/* UART0 */
.
dev_id
=
"mb:16"
,
.
clk
=
&
uartclk
,
...
...
arch/arm/mach-integrator/include/mach/platform.h
View file @
bdf4e948
...
...
@@ -13,9 +13,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* DO NOT EDIT!! - this file automatically generated
* from .s file by awk -f s2h.awk
*/
/**************************************************************************
* * Copyright © ARM Limited 1998. All rights reserved.
* ***********************************************************************/
...
...
@@ -399,15 +396,6 @@
#define INTEGRATOR_TIMER1_BASE (INTEGRATOR_CT_BASE + 0x100)
#define INTEGRATOR_TIMER2_BASE (INTEGRATOR_CT_BASE + 0x200)
#define TICKS_PER_uSEC 24
/*
* These are useconds NOT ticks.
*
*/
#define mSEC_1 1000
#define mSEC_10 (mSEC_1 * 10)
#define INTEGRATOR_CSR_BASE 0x10000000
#define INTEGRATOR_CSR_SIZE 0x10000000
...
...
arch/arm/mach-integrator/integrator_ap.c
View file @
bdf4e948
...
...
@@ -32,6 +32,7 @@
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/mtd/physmap.h>
#include <linux/clk.h>
#include <video/vga.h>
#include <mach/hardware.h>
...
...
@@ -322,27 +323,16 @@ static void __init ap_init(void)
#define TIMER1_VA_BASE IO_ADDRESS(INTEGRATOR_TIMER1_BASE)
#define TIMER2_VA_BASE IO_ADDRESS(INTEGRATOR_TIMER2_BASE)
/*
* How long is the timer interval?
*/
#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10)
#if TIMER_INTERVAL >= 0x100000
#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC)
#elif TIMER_INTERVAL >= 0x10000
#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC)
#else
#define TICKS2USECS(x) ((x) / TICKS_PER_uSEC)
#endif
static
unsigned
long
timer_reload
;
static
void
integrator_clocksource_init
(
u
32
khz
)
static
void
integrator_clocksource_init
(
u
nsigned
long
inrate
)
{
void
__iomem
*
base
=
(
void
__iomem
*
)
TIMER2_VA_BASE
;
u32
ctrl
=
TIMER_CTRL_ENABLE
|
TIMER_CTRL_PERIODIC
;
unsigned
long
rate
=
inrate
;
if
(
khz
>=
15
00
)
{
khz
/=
16
;
if
(
rate
>=
15000
00
)
{
rate
/=
16
;
ctrl
|=
TIMER_CTRL_DIV16
;
}
...
...
@@ -350,7 +340,7 @@ static void integrator_clocksource_init(u32 khz)
writel
(
ctrl
,
base
+
TIMER_CTRL
);
clocksource_mmio_init
(
base
+
TIMER_VALUE
,
"timer2"
,
khz
*
1000
,
200
,
16
,
clocksource_mmio_readl_down
);
rate
,
200
,
16
,
clocksource_mmio_readl_down
);
}
static
void
__iomem
*
const
clkevt_base
=
(
void
__iomem
*
)
TIMER1_VA_BASE
;
...
...
@@ -374,15 +364,29 @@ static void clkevt_set_mode(enum clock_event_mode mode, struct clock_event_devic
{
u32
ctrl
=
readl
(
clkevt_base
+
TIMER_CTRL
)
&
~
TIMER_CTRL_ENABLE
;
BUG_ON
(
mode
==
CLOCK_EVT_MODE_ONESHOT
);
/* Disable timer */
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
if
(
mode
==
CLOCK_EVT_MODE_PERIODIC
)
{
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
switch
(
mode
)
{
case
CLOCK_EVT_MODE_PERIODIC
:
/* Enable the timer and start the periodic tick */
writel
(
timer_reload
,
clkevt_base
+
TIMER_LOAD
);
ctrl
|=
TIMER_CTRL_PERIODIC
|
TIMER_CTRL_ENABLE
;
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
break
;
case
CLOCK_EVT_MODE_ONESHOT
:
/* Leave the timer disabled, .set_next_event will enable it */
ctrl
&=
~
TIMER_CTRL_PERIODIC
;
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
break
;
case
CLOCK_EVT_MODE_UNUSED
:
case
CLOCK_EVT_MODE_SHUTDOWN
:
case
CLOCK_EVT_MODE_RESUME
:
default:
/* Just leave in disabled state */
break
;
}
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
}
static
int
clkevt_set_next_event
(
unsigned
long
next
,
struct
clock_event_device
*
evt
)
...
...
@@ -398,12 +402,10 @@ static int clkevt_set_next_event(unsigned long next, struct clock_event_device *
static
struct
clock_event_device
integrator_clockevent
=
{
.
name
=
"timer1"
,
.
shift
=
34
,
.
features
=
CLOCK_EVT_FEAT_PERIODIC
,
.
features
=
CLOCK_EVT_FEAT_PERIODIC
|
CLOCK_EVT_FEAT_ONESHOT
,
.
set_mode
=
clkevt_set_mode
,
.
set_next_event
=
clkevt_set_next_event
,
.
rating
=
300
,
.
cpumask
=
cpu_all_mask
,
};
static
struct
irqaction
integrator_timer_irq
=
{
...
...
@@ -413,29 +415,27 @@ static struct irqaction integrator_timer_irq = {
.
dev_id
=
&
integrator_clockevent
,
};
static
void
integrator_clockevent_init
(
u
32
khz
)
static
void
integrator_clockevent_init
(
u
nsigned
long
inrate
)
{
struct
clock_event_device
*
evt
=
&
integrator_clockevent
;
unsigned
long
rate
=
inrate
;
unsigned
int
ctrl
=
0
;
if
(
khz
*
1000
>
0x100000
*
HZ
)
{
khz
/=
256
;
/* Calculate and program a divisor */
if
(
rate
>
0x100000
*
HZ
)
{
rate
/=
256
;
ctrl
|=
TIMER_CTRL_DIV256
;
}
else
if
(
khz
*
1000
>
0x10000
*
HZ
)
{
khz
/=
16
;
}
else
if
(
rate
>
0x10000
*
HZ
)
{
rate
/=
16
;
ctrl
|=
TIMER_CTRL_DIV16
;
}
timer_reload
=
khz
*
1000
/
HZ
;
timer_reload
=
rate
/
HZ
;
writel
(
ctrl
,
clkevt_base
+
TIMER_CTRL
);
evt
->
irq
=
IRQ_TIMERINT1
;
evt
->
mult
=
div_sc
(
khz
,
NSEC_PER_MSEC
,
evt
->
shift
);
evt
->
max_delta_ns
=
clockevent_delta2ns
(
0xffff
,
evt
);
evt
->
min_delta_ns
=
clockevent_delta2ns
(
0xf
,
evt
);
setup_irq
(
IRQ_TIMERINT1
,
&
integrator_timer_irq
);
clockevents_register_device
(
evt
);
clockevents_config_and_register
(
&
integrator_clockevent
,
rate
,
1
,
0xffffU
);
}
/*
...
...
@@ -443,14 +443,20 @@ static void integrator_clockevent_init(u32 khz)
*/
static
void
__init
ap_init_timer
(
void
)
{
u32
khz
=
TICKS_PER_uSEC
*
1000
;
struct
clk
*
clk
;
unsigned
long
rate
;
clk
=
clk_get_sys
(
"ap_timer"
,
NULL
);
BUG_ON
(
IS_ERR
(
clk
));
clk_enable
(
clk
);
rate
=
clk_get_rate
(
clk
);
writel
(
0
,
TIMER0_VA_BASE
+
TIMER_CTRL
);
writel
(
0
,
TIMER1_VA_BASE
+
TIMER_CTRL
);
writel
(
0
,
TIMER2_VA_BASE
+
TIMER_CTRL
);
integrator_clocksource_init
(
khz
);
integrator_clockevent_init
(
khz
);
integrator_clocksource_init
(
rate
);
integrator_clockevent_init
(
rate
);
}
static
struct
sys_timer
ap_timer
=
{
...
...
arch/arm/mach-iop13xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-iop32x/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0xa0008000
zreladdr-y
+
=
0xa0008000
params_phys-y
:=
0xa0000100
initrd_phys-y
:=
0xa0800000
arch/arm/mach-iop33x/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-ixp2000/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
arch/arm/mach-ixp23xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
arch/arm/mach-ixp4xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
arch/arm/mach-ixp4xx/common-pci.c
View file @
bdf4e948
...
...
@@ -397,7 +397,8 @@ void __init ixp4xx_pci_preinit(void)
local_write_config
(
PCI_BASE_ADDRESS_0
,
4
,
PHYS_OFFSET
);
local_write_config
(
PCI_BASE_ADDRESS_1
,
4
,
PHYS_OFFSET
+
SZ_16M
);
local_write_config
(
PCI_BASE_ADDRESS_2
,
4
,
PHYS_OFFSET
+
SZ_32M
);
local_write_config
(
PCI_BASE_ADDRESS_3
,
4
,
PHYS_OFFSET
+
SZ_48M
);
local_write_config
(
PCI_BASE_ADDRESS_3
,
4
,
PHYS_OFFSET
+
SZ_32M
+
SZ_16M
);
/*
* Enable CSR window at 64 MiB to allow PCI masters
...
...
arch/arm/mach-kirkwood/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-ks8695/Makefile.boot
View file @
bdf4e948
...
...
@@ -3,6 +3,6 @@
# PARAMS_PHYS must be within 4MB of ZRELADDR
# INITRD_PHYS must be in RAM
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-lpc32xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x80008000
zreladdr-y
+
=
0x80008000
params_phys-y
:=
0x80000100
initrd_phys-y
:=
0x82000000
arch/arm/mach-mmp/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
arch/arm/mach-mmp/aspenite.c
View file @
bdf4e948
...
...
@@ -160,7 +160,7 @@ static struct mtd_partition aspenite_nand_partitions[] = {
},
{
.
name
=
"filesystem"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
SZ_
48
M
,
.
size
=
SZ_
32M
+
SZ_16
M
,
.
mask_flags
=
0
,
}
};
...
...
arch/arm/mach-mmp/ttc_dkb.c
View file @
bdf4e948
...
...
@@ -93,7 +93,7 @@ static struct mtd_partition ttc_dkb_onenand_partitions[] = {
},
{
.
name
=
"filesystem"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
SZ_
48
M
,
.
size
=
SZ_
32M
+
SZ_16
M
,
.
mask_flags
=
0
,
}
};
...
...
arch/arm/mach-msm/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x10008000
zreladdr-y
+
=
0x10008000
params_phys-y
:=
0x10000100
initrd_phys-y
:=
0x10800000
arch/arm/mach-msm/board-halibut.c
View file @
bdf4e948
...
...
@@ -78,8 +78,8 @@ static void __init halibut_init(void)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
static
void
__init
halibut_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
halibut_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-msm/board-mahimahi.c
View file @
bdf4e948
...
...
@@ -53,8 +53,8 @@ static void __init mahimahi_init(void)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
static
void
__init
mahimahi_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
mahimahi_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
2
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-msm/board-sapphire.c
View file @
bdf4e948
...
...
@@ -77,8 +77,8 @@ static struct map_desc sapphire_io_desc[] __initdata = {
}
};
static
void
__init
sapphire_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
sapphire_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
int
smi_sz
=
parse_tag_smi
((
const
struct
tag
*
)
tags
);
...
...
arch/arm/mach-msm/board-trout.c
View file @
bdf4e948
...
...
@@ -48,8 +48,8 @@ static void __init trout_init_irq(void)
msm_init_irq
();
}
static
void
__init
trout_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
trout_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-mv78xx0/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-mx5/Makefile.boot
View file @
bdf4e948
zreladdr-$(CONFIG_ARCH_MX50)
:
=
0x70008000
zreladdr-$(CONFIG_ARCH_MX50)
+
=
0x70008000
params_phys-$(CONFIG_ARCH_MX50)
:=
0x70000100
initrd_phys-$(CONFIG_ARCH_MX50)
:=
0x70800000
zreladdr-$(CONFIG_ARCH_MX51)
:
=
0x90008000
zreladdr-$(CONFIG_ARCH_MX51)
+
=
0x90008000
params_phys-$(CONFIG_ARCH_MX51)
:=
0x90000100
initrd_phys-$(CONFIG_ARCH_MX51)
:=
0x90800000
zreladdr-$(CONFIG_ARCH_MX53)
:
=
0x70008000
zreladdr-$(CONFIG_ARCH_MX53)
+
=
0x70008000
params_phys-$(CONFIG_ARCH_MX53)
:=
0x70000100
initrd_phys-$(CONFIG_ARCH_MX53)
:=
0x70800000
arch/arm/mach-mxs/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x40008000
zreladdr-y
+
=
0x40008000
arch/arm/mach-netx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x80008000
zreladdr-y
+
=
0x80008000
arch/arm/mach-nomadik/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-nuc93x/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
arch/arm/mach-omap1/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x10008000
zreladdr-y
+
=
0x10008000
params_phys-y
:=
0x10000100
initrd_phys-y
:=
0x10800000
arch/arm/mach-omap2/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x80008000
zreladdr-y
+
=
0x80008000
params_phys-y
:=
0x80000100
initrd_phys-y
:=
0x80800000
arch/arm/mach-orion5x/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-orion5x/common.c
View file @
bdf4e948
...
...
@@ -308,8 +308,8 @@ void __init orion5x_init(void)
* Many orion-based systems have buggy bootloader implementations.
* This is a common fixup for bogus memory tags.
*/
void
__init
tag_fixup_mem32
(
struct
machine_desc
*
mdesc
,
struct
tag
*
t
,
char
**
from
,
struct
meminfo
*
meminfo
)
void
__init
tag_fixup_mem32
(
struct
tag
*
t
,
char
**
from
,
struct
meminfo
*
meminfo
)
{
for
(;
t
->
hdr
.
size
;
t
=
tag_next
(
t
))
if
(
t
->
hdr
.
tag
==
ATAG_MEM
&&
...
...
arch/arm/mach-orion5x/common.h
View file @
bdf4e948
...
...
@@ -53,11 +53,9 @@ int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
struct
pci_bus
*
orion5x_pci_sys_scan_bus
(
int
nr
,
struct
pci_sys_data
*
sys
);
int
orion5x_pci_map_irq
(
const
struct
pci_dev
*
dev
,
u8
slot
,
u8
pin
);
struct
machine_desc
;
struct
meminfo
;
struct
tag
;
extern
void
__init
tag_fixup_mem32
(
struct
machine_desc
*
,
struct
tag
*
,
char
**
,
struct
meminfo
*
);
extern
void
__init
tag_fixup_mem32
(
struct
tag
*
,
char
**
,
struct
meminfo
*
);
#endif
arch/arm/mach-pnx4008/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x80008000
zreladdr-y
+
=
0x80008000
params_phys-y
:=
0x80000100
initrd_phys-y
:=
0x80800000
arch/arm/mach-prima2/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-pxa/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0xa0008000
zreladdr-y
+
=
0xa0008000
arch/arm/mach-pxa/cm-x300.c
View file @
bdf4e948
...
...
@@ -839,8 +839,8 @@ static void __init cm_x300_init(void)
cm_x300_init_bl
();
}
static
void
__init
cm_x300_fixup
(
struct
machine_desc
*
mdesc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
cm_x300_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/* Make sure that mi->bank[0].start = PHYS_ADDR */
for
(;
tags
->
hdr
.
size
;
tags
=
tag_next
(
tags
))
...
...
arch/arm/mach-pxa/corgi.c
View file @
bdf4e948
...
...
@@ -705,8 +705,8 @@ static void __init corgi_init(void)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
static
void
__init
fixup_corgi
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
fixup_corgi
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
sharpsl_save_param
();
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-pxa/eseries.c
View file @
bdf4e948
...
...
@@ -41,8 +41,7 @@
#include "clock.h"
/* Only e800 has 128MB RAM */
void
__init
eseries_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
void
__init
eseries_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
0xa0000000
;
...
...
arch/arm/mach-pxa/eseries.h
View file @
bdf4e948
void
__init
eseries_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
);
void
__init
eseries_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
);
extern
struct
pxa2xx_udc_mach_info
e7xx_udc_mach_info
;
extern
struct
pxaficp_platform_data
e7xx_ficp_platform_data
;
...
...
arch/arm/mach-pxa/poodle.c
View file @
bdf4e948
...
...
@@ -454,8 +454,8 @@ static void __init poodle_init(void)
poodle_init_spi
();
}
static
void
__init
fixup_poodle
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
fixup_poodle
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
sharpsl_save_param
();
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-pxa/saar.c
View file @
bdf4e948
...
...
@@ -540,7 +540,7 @@ static struct mtd_partition saar_onenand_partitions[] = {
},
{
.
name
=
"filesystem"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
SZ_
48
M
,
.
size
=
SZ_
32M
+
SZ_16
M
,
.
mask_flags
=
0
,
}
};
...
...
arch/arm/mach-pxa/spitz.c
View file @
bdf4e948
...
...
@@ -970,8 +970,8 @@ static void __init spitz_init(void)
spitz_i2c_init
();
}
static
void
__init
spitz_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
spitz_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
sharpsl_save_param
();
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-pxa/tosa.c
View file @
bdf4e948
...
...
@@ -960,8 +960,8 @@ static void __init tosa_init(void)
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
static
void
__init
fixup_tosa
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
fixup_tosa
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
sharpsl_save_param
();
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-realview/Makefile.boot
View file @
bdf4e948
ifeq
($(CONFIG_REALVIEW_HIGH_PHYS_OFFSET),y)
zreladdr-y
:
=
0x70008000
zreladdr-y
+
=
0x70008000
params_phys-y
:=
0x70000100
initrd_phys-y
:=
0x70800000
else
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
endif
arch/arm/mach-realview/core.c
View file @
bdf4e948
...
...
@@ -517,8 +517,7 @@ void __init realview_timer_init(unsigned int timer_irq)
/*
* Setup the memory banks.
*/
void
realview_fixup
(
struct
machine_desc
*
mdesc
,
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
)
void
realview_fixup
(
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
)
{
/*
* Most RealView platforms have 512MB contiguous RAM at 0x70000000.
...
...
arch/arm/mach-realview/core.h
View file @
bdf4e948
...
...
@@ -63,8 +63,8 @@ extern int realview_flash_register(struct resource *res, u32 num);
extern
int
realview_eth_register
(
const
char
*
name
,
struct
resource
*
res
);
extern
int
realview_usb_register
(
struct
resource
*
res
);
extern
void
realview_init_early
(
void
);
extern
void
realview_fixup
(
struct
machine_desc
*
mdesc
,
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
);
extern
void
realview_fixup
(
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
);
extern
void
(
*
realview_reset
)(
char
);
#endif
arch/arm/mach-realview/include/mach/board-pb1176.h
View file @
bdf4e948
...
...
@@ -70,6 +70,7 @@
#define REALVIEW_DC1176_GIC_CPU_BASE 0x10120000
/* GIC CPU interface, on devchip */
#define REALVIEW_DC1176_GIC_DIST_BASE 0x10121000
/* GIC distributor, on devchip */
#define REALVIEW_DC1176_ROM_BASE 0x10200000
/* 16KiB NRAM preudo-ROM, on devchip */
#define REALVIEW_PB1176_GIC_CPU_BASE 0x10040000
/* GIC CPU interface, on FPGA */
#define REALVIEW_PB1176_GIC_DIST_BASE 0x10041000
/* GIC distributor, on FPGA */
#define REALVIEW_PB1176_L220_BASE 0x10110000
/* L220 registers */
...
...
arch/arm/mach-realview/realview_pb1176.c
View file @
bdf4e948
...
...
@@ -26,6 +26,8 @@
#include <linux/amba/pl061.h>
#include <linux/amba/mmci.h>
#include <linux/amba/pl022.h>
#include <linux/mtd/physmap.h>
#include <linux/mtd/partitions.h>
#include <linux/io.h>
#include <mach/hardware.h>
...
...
@@ -204,22 +206,48 @@ static struct amba_device *amba_devs[] __initdata = {
* RealView PB1176 platform devices
*/
static
struct
resource
realview_pb1176_flash_resources
[]
=
{
[
0
]
=
{
{
.
start
=
REALVIEW_PB1176_FLASH_BASE
,
.
end
=
REALVIEW_PB1176_FLASH_BASE
+
REALVIEW_PB1176_FLASH_SIZE
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
#ifdef CONFIG_REALVIEW_PB1176_SECURE_FLASH
{
.
start
=
REALVIEW_PB1176_SEC_FLASH_BASE
,
.
end
=
REALVIEW_PB1176_SEC_FLASH_BASE
+
REALVIEW_PB1176_SEC_FLASH_SIZE
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
#ifdef CONFIG_REALVIEW_PB1176_SECURE_FLASH
#define PB1176_FLASH_BLOCKS 2
#else
#define PB1176_FLASH_BLOCKS 1
#endif
};
static
struct
physmap_flash_data
pb1176_rom_pdata
=
{
.
probe_type
=
"map_rom"
,
.
width
=
4
,
.
nr_parts
=
0
,
};
static
struct
resource
pb1176_rom_resources
[]
=
{
/*
* This exposes the PB1176 DevChip ROM as an MTD ROM mapping.
* The reference manual states that this is actually a pseudo-ROM
* programmed in NVRAM.
*/
{
.
start
=
REALVIEW_DC1176_ROM_BASE
,
.
end
=
REALVIEW_DC1176_ROM_BASE
+
SZ_16K
-
1
,
.
flags
=
IORESOURCE_MEM
,
}
};
static
struct
platform_device
pb1176_rom_device
=
{
.
name
=
"physmap-flash"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
pb1176_rom_resources
),
.
resource
=
pb1176_rom_resources
,
.
dev
=
{
.
platform_data
=
&
pb1176_rom_pdata
,
},
};
static
struct
resource
realview_pb1176_smsc911x_resources
[]
=
{
[
0
]
=
{
...
...
@@ -316,8 +344,7 @@ static void realview_pb1176_reset(char mode)
__raw_writel
(
REALVIEW_PB1176_SYS_SOFT_RESET
,
reset_ctrl
);
}
static
void
realview_pb1176_fixup
(
struct
machine_desc
*
mdesc
,
struct
tag
*
tags
,
char
**
from
,
static
void
realview_pb1176_fixup
(
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
)
{
/*
...
...
@@ -338,7 +365,8 @@ static void __init realview_pb1176_init(void)
#endif
realview_flash_register
(
realview_pb1176_flash_resources
,
PB1176_FLASH_BLOCKS
);
ARRAY_SIZE
(
realview_pb1176_flash_resources
));
platform_device_register
(
&
pb1176_rom_device
);
realview_eth_register
(
NULL
,
realview_pb1176_smsc911x_resources
);
platform_device_register
(
&
realview_i2c_device
);
realview_usb_register
(
realview_pb1176_isp1761_resources
);
...
...
arch/arm/mach-realview/realview_pbx.c
View file @
bdf4e948
...
...
@@ -319,8 +319,8 @@ static struct sys_timer realview_pbx_timer = {
.
init
=
realview_pbx_timer_init
,
};
static
void
realview_pbx_fixup
(
struct
machine_desc
*
mdesc
,
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
)
static
void
realview_pbx_fixup
(
struct
tag
*
tags
,
char
**
from
,
struct
meminfo
*
meminfo
)
{
#ifdef CONFIG_SPARSEMEM
/*
...
...
@@ -335,7 +335,7 @@ static void realview_pbx_fixup(struct machine_desc *mdesc, struct tag *tags,
meminfo
->
bank
[
2
].
size
=
SZ_256M
;
meminfo
->
nr_banks
=
3
;
#else
realview_fixup
(
mdesc
,
tags
,
from
,
meminfo
);
realview_fixup
(
tags
,
from
,
meminfo
);
#endif
}
...
...
arch/arm/mach-rpc/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x10008000
zreladdr-y
+
=
0x10008000
params_phys-y
:=
0x10000100
initrd_phys-y
:=
0x18000000
arch/arm/mach-s3c2410/Makefile.boot
View file @
bdf4e948
ifeq
($(CONFIG_PM_H1940),y)
zreladdr-y
:
=
0x30108000
zreladdr-y
+
=
0x30108000
params_phys-y
:=
0x30100100
else
zreladdr-y
:
=
0x30008000
zreladdr-y
+
=
0x30008000
params_phys-y
:=
0x30000100
endif
arch/arm/mach-s3c2412/mach-smdk2413.c
View file @
bdf4e948
...
...
@@ -92,8 +92,7 @@ static struct platform_device *smdk2413_devices[] __initdata = {
&
s3c_device_usbgadget
,
};
static
void
__init
smdk2413_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
static
void
__init
smdk2413_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
if
(
tags
!=
phys_to_virt
(
S3C2410_SDRAM_PA
+
0x100
))
{
...
...
arch/arm/mach-s3c2412/mach-vstms.c
View file @
bdf4e948
...
...
@@ -129,9 +129,8 @@ static struct platform_device *vstms_devices[] __initdata = {
&
s3c_device_nand
,
};
static
void
__init
vstms_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
vstms_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
if
(
tags
!=
phys_to_virt
(
S3C2410_SDRAM_PA
+
0x100
))
{
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-s3c64xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x50008000
zreladdr-y
+
=
0x50008000
params_phys-y
:=
0x50000100
arch/arm/mach-s5p64x0/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x20008000
zreladdr-y
+
=
0x20008000
params_phys-y
:=
0x20000100
arch/arm/mach-s5pc100/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x20008000
zreladdr-y
+
=
0x20008000
params_phys-y
:=
0x20000100
arch/arm/mach-s5pv210/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x20008000
zreladdr-y
+
=
0x20008000
params_phys-y
:=
0x20000100
arch/arm/mach-sa1100/Makefile
View file @
bdf4e948
...
...
@@ -45,7 +45,6 @@ obj-$(CONFIG_SA1100_PLEB) += pleb.o
obj-$(CONFIG_SA1100_SHANNON)
+=
shannon.o
obj-$(CONFIG_SA1100_SIMPAD)
+=
simpad.o
led-$(CONFIG_SA1100_SIMPAD)
+=
leds-simpad.o
# LEDs support
obj-$(CONFIG_LEDS)
+=
$
(
led-y
)
...
...
arch/arm/mach-sa1100/Makefile.boot
View file @
bdf4e948
zreladdr-y
:=
0xc0008000
ifeq
($(CONFIG_ARCH_SA1100),y)
zreladdr-$(CONFIG_SA1111)
:=
0xc0208000
zreladdr-$(CONFIG_SA1111)
+=
0xc0208000
else
zreladdr-y
+=
0xc0008000
endif
params_phys-y
:=
0xc0000100
initrd_phys-y
:=
0xc0800000
...
...
arch/arm/mach-sa1100/assabet.c
View file @
bdf4e948
...
...
@@ -301,8 +301,7 @@ static void __init get_assabet_scr(void)
}
static
void
__init
fixup_assabet
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
fixup_assabet
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/* This must be done before any call to machine_has_neponset() */
map_sa1100_gpio_regs
();
...
...
arch/arm/mach-sa1100/include/mach/simpad.h
View file @
bdf4e948
...
...
@@ -48,32 +48,80 @@
#define GPIO_SMART_CARD GPIO_GPIO10
#define IRQ_GPIO_SMARD_CARD IRQ_GPIO10
// CS3 Latch is write only, a shadow is necessary
/*--- ucb1x00 GPIO ---*/
#define SIMPAD_UCB1X00_GPIO_BASE (GPIO_MAX + 1)
#define SIMPAD_UCB1X00_GPIO_PROG1 (SIMPAD_UCB1X00_GPIO_BASE)
#define SIMPAD_UCB1X00_GPIO_PROG2 (SIMPAD_UCB1X00_GPIO_BASE + 1)
#define SIMPAD_UCB1X00_GPIO_UP (SIMPAD_UCB1X00_GPIO_BASE + 2)
#define SIMPAD_UCB1X00_GPIO_DOWN (SIMPAD_UCB1X00_GPIO_BASE + 3)
#define SIMPAD_UCB1X00_GPIO_LEFT (SIMPAD_UCB1X00_GPIO_BASE + 4)
#define SIMPAD_UCB1X00_GPIO_RIGHT (SIMPAD_UCB1X00_GPIO_BASE + 5)
#define SIMPAD_UCB1X00_GPIO_6 (SIMPAD_UCB1X00_GPIO_BASE + 6)
#define SIMPAD_UCB1X00_GPIO_7 (SIMPAD_UCB1X00_GPIO_BASE + 7)
#define SIMPAD_UCB1X00_GPIO_HEADSET (SIMPAD_UCB1X00_GPIO_BASE + 8)
#define SIMPAD_UCB1X00_GPIO_SPEAKER (SIMPAD_UCB1X00_GPIO_BASE + 9)
/*--- CS3 Latch ---*/
#define SIMPAD_CS3_GPIO_BASE (GPIO_MAX + 11)
#define SIMPAD_CS3_VCC_5V_EN (SIMPAD_CS3_GPIO_BASE)
#define SIMPAD_CS3_VCC_3V_EN (SIMPAD_CS3_GPIO_BASE + 1)
#define SIMPAD_CS3_EN1 (SIMPAD_CS3_GPIO_BASE + 2)
#define SIMPAD_CS3_EN0 (SIMPAD_CS3_GPIO_BASE + 3)
#define SIMPAD_CS3_DISPLAY_ON (SIMPAD_CS3_GPIO_BASE + 4)
#define SIMPAD_CS3_PCMCIA_BUFF_DIS (SIMPAD_CS3_GPIO_BASE + 5)
#define SIMPAD_CS3_MQ_RESET (SIMPAD_CS3_GPIO_BASE + 6)
#define SIMPAD_CS3_PCMCIA_RESET (SIMPAD_CS3_GPIO_BASE + 7)
#define SIMPAD_CS3_DECT_POWER_ON (SIMPAD_CS3_GPIO_BASE + 8)
#define SIMPAD_CS3_IRDA_SD (SIMPAD_CS3_GPIO_BASE + 9)
#define SIMPAD_CS3_RS232_ON (SIMPAD_CS3_GPIO_BASE + 10)
#define SIMPAD_CS3_SD_MEDIAQ (SIMPAD_CS3_GPIO_BASE + 11)
#define SIMPAD_CS3_LED2_ON (SIMPAD_CS3_GPIO_BASE + 12)
#define SIMPAD_CS3_IRDA_MODE (SIMPAD_CS3_GPIO_BASE + 13)
#define SIMPAD_CS3_ENABLE_5V (SIMPAD_CS3_GPIO_BASE + 14)
#define SIMPAD_CS3_RESET_SIMCARD (SIMPAD_CS3_GPIO_BASE + 15)
#define SIMPAD_CS3_PCMCIA_BVD1 (SIMPAD_CS3_GPIO_BASE + 16)
#define SIMPAD_CS3_PCMCIA_BVD2 (SIMPAD_CS3_GPIO_BASE + 17)
#define SIMPAD_CS3_PCMCIA_VS1 (SIMPAD_CS3_GPIO_BASE + 18)
#define SIMPAD_CS3_PCMCIA_VS2 (SIMPAD_CS3_GPIO_BASE + 19)
#define SIMPAD_CS3_LOCK_IND (SIMPAD_CS3_GPIO_BASE + 20)
#define SIMPAD_CS3_CHARGING_STATE (SIMPAD_CS3_GPIO_BASE + 21)
#define SIMPAD_CS3_PCMCIA_SHORT (SIMPAD_CS3_GPIO_BASE + 22)
#define SIMPAD_CS3_GPIO_23 (SIMPAD_CS3_GPIO_BASE + 23)
#define CS3BUSTYPE unsigned volatile long
#define CS3_BASE 0xf1000000
#define VCC_5V_EN 0x0001 // For 5V PCMCIA
#define VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA
#define EN1 0x0004 // This is only for EPROM's
#define EN0 0x0008 // Both should be enable for 3.3V or 5V
#define DISPLAY_ON 0x0010
#define PCMCIA_BUFF_DIS 0x0020
#define MQ_RESET 0x0040
#define PCMCIA_RESET 0x0080
#define DECT_POWER_ON 0x0100
#define IRDA_SD 0x0200 // Shutdown for powersave
#define RS232_ON 0x0400
#define SD_MEDIAQ 0x0800 // Shutdown for powersave
#define LED2_ON 0x1000
#define IRDA_MODE 0x2000 // Fast/Slow IrDA mode
#define ENABLE_5V 0x4000 // Enable 5V circuit
#define RESET_SIMCARD 0x8000
#define RS232_ENABLE 0x0440
#define PCMCIAMASK 0x402f
long
simpad_get_cs3_ro
(
void
);
long
simpad_get_cs3_shadow
(
void
);
void
simpad_set_cs3_bit
(
int
value
);
void
simpad_clear_cs3_bit
(
int
value
);
#define VCC_5V_EN 0x0001
/* For 5V PCMCIA */
#define VCC_3V_EN 0x0002
/* FOR 3.3V PCMCIA */
#define EN1 0x0004
/* This is only for EPROM's */
#define EN0 0x0008
/* Both should be enable for 3.3V or 5V */
#define DISPLAY_ON 0x0010
#define PCMCIA_BUFF_DIS 0x0020
#define MQ_RESET 0x0040
#define PCMCIA_RESET 0x0080
#define DECT_POWER_ON 0x0100
#define IRDA_SD 0x0200
/* Shutdown for powersave */
#define RS232_ON 0x0400
#define SD_MEDIAQ 0x0800
/* Shutdown for powersave */
#define LED2_ON 0x1000
#define IRDA_MODE 0x2000
/* Fast/Slow IrDA mode */
#define ENABLE_5V 0x4000
/* Enable 5V circuit */
#define RESET_SIMCARD 0x8000
#define PCMCIA_BVD1 0x01
#define PCMCIA_BVD2 0x02
#define PCMCIA_VS1 0x04
#define PCMCIA_VS2 0x08
#define LOCK_IND 0x10
#define CHARGING_STATE 0x20
#define PCMCIA_SHORT 0x40
/*--- Battery ---*/
struct
simpad_battery
{
unsigned
char
ac_status
;
/* line connected yes/no */
unsigned
char
status
;
/* battery loading yes/no */
...
...
arch/arm/mach-sa1100/leds-simpad.c
deleted
100644 → 0
View file @
06afb1a0
/*
* linux/arch/arm/mach-sa1100/leds-simpad.c
*
* Author: Juergen Messerer <juergen.messerer@siemens.ch>
*/
#include <linux/init.h>
#include <mach/hardware.h>
#include <asm/leds.h>
#include <asm/system.h>
#include <mach/simpad.h>
#include "leds.h"
#define LED_STATE_ENABLED 1
#define LED_STATE_CLAIMED 2
static
unsigned
int
led_state
;
static
unsigned
int
hw_led_state
;
#define LED_GREEN (1)
#define LED_MASK (1)
extern
void
set_cs3_bit
(
int
value
);
extern
void
clear_cs3_bit
(
int
value
);
void
simpad_leds_event
(
led_event_t
evt
)
{
switch
(
evt
)
{
case
led_start
:
hw_led_state
=
LED_GREEN
;
led_state
=
LED_STATE_ENABLED
;
break
;
case
led_stop
:
led_state
&=
~
LED_STATE_ENABLED
;
break
;
case
led_claim
:
led_state
|=
LED_STATE_CLAIMED
;
hw_led_state
=
LED_GREEN
;
break
;
case
led_release
:
led_state
&=
~
LED_STATE_CLAIMED
;
hw_led_state
=
LED_GREEN
;
break
;
#ifdef CONFIG_LEDS_TIMER
case
led_timer
:
if
(
!
(
led_state
&
LED_STATE_CLAIMED
))
hw_led_state
^=
LED_GREEN
;
break
;
#endif
#ifdef CONFIG_LEDS_CPU
case
led_idle_start
:
break
;
case
led_idle_end
:
break
;
#endif
case
led_halted
:
break
;
case
led_green_on
:
if
(
led_state
&
LED_STATE_CLAIMED
)
hw_led_state
|=
LED_GREEN
;
break
;
case
led_green_off
:
if
(
led_state
&
LED_STATE_CLAIMED
)
hw_led_state
&=
~
LED_GREEN
;
break
;
case
led_amber_on
:
break
;
case
led_amber_off
:
break
;
case
led_red_on
:
break
;
case
led_red_off
:
break
;
default:
break
;
}
if
(
led_state
&
LED_STATE_ENABLED
)
set_cs3_bit
(
LED2_ON
);
else
clear_cs3_bit
(
LED2_ON
);
}
arch/arm/mach-sa1100/leds.c
View file @
bdf4e948
...
...
@@ -42,8 +42,6 @@ sa1100_leds_init(void)
leds_event
=
adsbitsy_leds_event
;
if
(
machine_is_pt_system3
())
leds_event
=
system3_leds_event
;
if
(
machine_is_simpad
())
leds_event
=
simpad_leds_event
;
/* what about machine registry? including led, apm... -zecke */
leds_event
(
led_start
);
return
0
;
...
...
arch/arm/mach-sa1100/leds.h
View file @
bdf4e948
...
...
@@ -11,4 +11,3 @@ extern void pfs168_leds_event(led_event_t evt);
extern
void
graphicsmaster_leds_event
(
led_event_t
evt
);
extern
void
adsbitsy_leds_event
(
led_event_t
evt
);
extern
void
system3_leds_event
(
led_event_t
evt
);
extern
void
simpad_leds_event
(
led_event_t
evt
);
arch/arm/mach-sa1100/simpad.c
View file @
bdf4e948
...
...
@@ -13,6 +13,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <asm/irq.h>
#include <mach/hardware.h>
...
...
@@ -28,35 +29,92 @@
#include <linux/serial_core.h>
#include <linux/ioport.h>
#include <linux/input.h>
#include <linux/gpio_keys.h>
#include <linux/leds.h>
#include <linux/i2c-gpio.h>
#include "generic.h"
long
cs3_shadow
;
/*
* CS3 support
*/
long
get_cs3_shadow
(
void
)
static
long
cs3_shadow
;
static
spinlock_t
cs3_lock
;
static
struct
gpio_chip
cs3_gpio
;
long
simpad_get_cs3_ro
(
void
)
{
return
readl
(
CS3_BASE
);
}
EXPORT_SYMBOL
(
simpad_get_cs3_ro
);
long
simpad_get_cs3_shadow
(
void
)
{
return
cs3_shadow
;
}
EXPORT_SYMBOL
(
simpad_get_cs3_shadow
);
void
set_cs3
(
long
value
)
static
void
__simpad_write_cs3
(
void
)
{
*
(
CS3BUSTYPE
*
)(
CS3_BASE
)
=
cs3_shadow
=
value
;
writel
(
cs3_shadow
,
CS3_BASE
)
;
}
void
set_cs3_bit
(
int
value
)
void
s
impad_s
et_cs3_bit
(
int
value
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
cs3_lock
,
flags
);
cs3_shadow
|=
value
;
*
(
CS3BUSTYPE
*
)(
CS3_BASE
)
=
cs3_shadow
;
__simpad_write_cs3
();
spin_unlock_irqrestore
(
&
cs3_lock
,
flags
);
}
EXPORT_SYMBOL
(
simpad_set_cs3_bit
);
void
clear_cs3_bit
(
int
value
)
void
simpad_
clear_cs3_bit
(
int
value
)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
cs3_lock
,
flags
);
cs3_shadow
&=
~
value
;
*
(
CS3BUSTYPE
*
)(
CS3_BASE
)
=
cs3_shadow
;
__simpad_write_cs3
();
spin_unlock_irqrestore
(
&
cs3_lock
,
flags
);
}
EXPORT_SYMBOL
(
simpad_clear_cs3_bit
);
static
void
cs3_gpio_set
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
value
)
{
if
(
offset
>
15
)
return
;
if
(
value
)
simpad_set_cs3_bit
(
1
<<
offset
);
else
simpad_clear_cs3_bit
(
1
<<
offset
);
};
static
int
cs3_gpio_get
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
if
(
offset
>
15
)
return
simpad_get_cs3_ro
()
&
(
1
<<
(
offset
-
16
));
return
simpad_get_cs3_shadow
()
&
(
1
<<
offset
);
};
EXPORT_SYMBOL
(
set_cs3_bit
);
EXPORT_SYMBOL
(
clear_cs3_bit
);
static
int
cs3_gpio_direction_input
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
if
(
offset
>
15
)
return
0
;
return
-
EINVAL
;
};
static
int
cs3_gpio_direction_output
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
value
)
{
if
(
offset
>
15
)
return
-
EINVAL
;
cs3_gpio_set
(
chip
,
offset
,
value
);
return
0
;
};
static
struct
map_desc
simpad_io_desc
[]
__initdata
=
{
{
/* MQ200 */
...
...
@@ -64,9 +122,9 @@ static struct map_desc simpad_io_desc[] __initdata = {
.
pfn
=
__phys_to_pfn
(
0x4b800000
),
.
length
=
0x00800000
,
.
type
=
MT_DEVICE
},
{
/*
Paules CS3, write only
*/
.
virtual
=
0xf1000000
,
.
pfn
=
__phys_to_pfn
(
0x18000000
),
},
{
/*
Simpad CS3
*/
.
virtual
=
CS3_BASE
,
.
pfn
=
__phys_to_pfn
(
SA1100_CS3_PHYS
),
.
length
=
0x00100000
,
.
type
=
MT_DEVICE
},
...
...
@@ -78,12 +136,12 @@ static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
if
(
port
->
mapbase
==
(
u_int
)
&
Ser1UTCR0
)
{
if
(
state
)
{
clear_cs3_bit
(
RS232_ON
);
clear_cs3_bit
(
DECT_POWER_ON
);
simpad_
clear_cs3_bit
(
RS232_ON
);
simpad_
clear_cs3_bit
(
DECT_POWER_ON
);
}
else
{
set_cs3_bit
(
RS232_ON
);
set_cs3_bit
(
DECT_POWER_ON
);
s
impad_s
et_cs3_bit
(
RS232_ON
);
s
impad_s
et_cs3_bit
(
DECT_POWER_ON
);
}
}
}
...
...
@@ -132,6 +190,7 @@ static struct resource simpad_flash_resources [] = {
static
struct
mcp_plat_data
simpad_mcp_data
=
{
.
mccr0
=
MCCR0_ADM
,
.
sclk_rate
=
11981000
,
.
gpio_base
=
SIMPAD_UCB1X00_GPIO_BASE
,
};
...
...
@@ -142,9 +201,10 @@ static void __init simpad_map_io(void)
iotable_init
(
simpad_io_desc
,
ARRAY_SIZE
(
simpad_io_desc
));
set_cs3_bit
(
EN1
|
EN0
|
LED2_ON
|
DISPLAY_ON
|
RS232_ON
|
ENABLE_5V
|
RESET_SIMCARD
|
DECT_POWER_ON
);
/* Initialize CS3 */
cs3_shadow
=
(
EN1
|
EN0
|
LED2_ON
|
DISPLAY_ON
|
RS232_ON
|
ENABLE_5V
|
RESET_SIMCARD
|
DECT_POWER_ON
);
__simpad_write_cs3
();
/* Spinlocks not yet initialized */
sa1100_register_uart_fns
(
&
simpad_port_fns
);
sa1100_register_uart
(
0
,
3
);
/* serial interface */
...
...
@@ -170,13 +230,14 @@ static void __init simpad_map_io(void)
static
void
simpad_power_off
(
void
)
{
local_irq_disable
();
// was cli
set_cs3
(
0x800
);
/* only SD_MEDIAQ */
local_irq_disable
();
cs3_shadow
=
SD_MEDIAQ
;
__simpad_write_cs3
();
/* Bypass spinlock here */
/* disable internal oscillator, float CS lines */
PCFR
=
(
PCFR_OPDE
|
PCFR_FP
|
PCFR_FS
);
/* enable wake-up on GPIO0
(Assabet...)
*/
PWER
=
GFER
=
GRER
=
1
;
/* enable wake-up on GPIO0 */
PWER
=
GFER
=
GRER
=
PWER_GPIO0
;
/*
* set scratchpad to zero, just in case it is used as a
* restart address by the bootloader.
...
...
@@ -192,6 +253,91 @@ static void simpad_power_off(void)
}
/*
* gpio_keys
*/
static
struct
gpio_keys_button
simpad_button_table
[]
=
{
{
KEY_POWER
,
IRQ_GPIO_POWER_BUTTON
,
1
,
"power button"
},
};
static
struct
gpio_keys_platform_data
simpad_keys_data
=
{
.
buttons
=
simpad_button_table
,
.
nbuttons
=
ARRAY_SIZE
(
simpad_button_table
),
};
static
struct
platform_device
simpad_keys
=
{
.
name
=
"gpio-keys"
,
.
dev
=
{
.
platform_data
=
&
simpad_keys_data
,
},
};
static
struct
gpio_keys_button
simpad_polled_button_table
[]
=
{
{
KEY_PROG1
,
SIMPAD_UCB1X00_GPIO_PROG1
,
1
,
"prog1 button"
},
{
KEY_PROG2
,
SIMPAD_UCB1X00_GPIO_PROG2
,
1
,
"prog2 button"
},
{
KEY_UP
,
SIMPAD_UCB1X00_GPIO_UP
,
1
,
"up button"
},
{
KEY_DOWN
,
SIMPAD_UCB1X00_GPIO_DOWN
,
1
,
"down button"
},
{
KEY_LEFT
,
SIMPAD_UCB1X00_GPIO_LEFT
,
1
,
"left button"
},
{
KEY_RIGHT
,
SIMPAD_UCB1X00_GPIO_RIGHT
,
1
,
"right button"
},
};
static
struct
gpio_keys_platform_data
simpad_polled_keys_data
=
{
.
buttons
=
simpad_polled_button_table
,
.
nbuttons
=
ARRAY_SIZE
(
simpad_polled_button_table
),
.
poll_interval
=
50
,
};
static
struct
platform_device
simpad_polled_keys
=
{
.
name
=
"gpio-keys-polled"
,
.
dev
=
{
.
platform_data
=
&
simpad_polled_keys_data
,
},
};
/*
* GPIO LEDs
*/
static
struct
gpio_led
simpad_leds
[]
=
{
{
.
name
=
"simpad:power"
,
.
gpio
=
SIMPAD_CS3_LED2_ON
,
.
active_low
=
0
,
.
default_trigger
=
"default-on"
,
},
};
static
struct
gpio_led_platform_data
simpad_led_data
=
{
.
num_leds
=
ARRAY_SIZE
(
simpad_leds
),
.
leds
=
simpad_leds
,
};
static
struct
platform_device
simpad_gpio_leds
=
{
.
name
=
"leds-gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
simpad_led_data
,
},
};
/*
* i2c
*/
static
struct
i2c_gpio_platform_data
simpad_i2c_data
=
{
.
sda_pin
=
GPIO_GPIO21
,
.
scl_pin
=
GPIO_GPIO25
,
.
udelay
=
10
,
.
timeout
=
HZ
,
};
static
struct
platform_device
simpad_i2c
=
{
.
name
=
"i2c-gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
simpad_i2c_data
,
},
};
/*
* MediaQ Video Device
...
...
@@ -202,7 +348,11 @@ static struct platform_device simpad_mq200fb = {
};
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
simpad_mq200fb
&
simpad_keys
,
&
simpad_polled_keys
,
&
simpad_mq200fb
,
&
simpad_gpio_leds
,
&
simpad_i2c
,
};
...
...
@@ -211,6 +361,19 @@ static int __init simpad_init(void)
{
int
ret
;
spin_lock_init
(
&
cs3_lock
);
cs3_gpio
.
label
=
"simpad_cs3"
;
cs3_gpio
.
base
=
SIMPAD_CS3_GPIO_BASE
;
cs3_gpio
.
ngpio
=
24
;
cs3_gpio
.
set
=
cs3_gpio_set
;
cs3_gpio
.
get
=
cs3_gpio_get
;
cs3_gpio
.
direction_input
=
cs3_gpio_direction_input
;
cs3_gpio
.
direction_output
=
cs3_gpio_direction_output
;
ret
=
gpiochip_add
(
&
cs3_gpio
);
if
(
ret
)
printk
(
KERN_WARNING
"simpad: Unable to register cs3 GPIO device"
);
pm_power_off
=
simpad_power_off
;
sa11x0_register_mtd
(
&
simpad_flash_data
,
simpad_flash_resources
,
...
...
arch/arm/mach-shark/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x08008000
zreladdr-y
+
=
0x08008000
arch/arm/mach-shmobile/Makefile.boot
View file @
bdf4e948
__ZRELADDR
:=
$(
shell
/bin/bash
-c
'printf "0x%08x" \
$$[
$(CONFIG_MEMORY_START)
+ 0x8000]'
)
zreladdr-y
:
=
$(__ZRELADDR)
zreladdr-y
+
=
$(__ZRELADDR)
# Unsupported legacy stuff
#
...
...
arch/arm/mach-spear3xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-spear6xx/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-tcc8k/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x20008000
zreladdr-y
+
=
0x20008000
params_phys-y
:=
0x20000100
initrd_phys-y
:=
0x20800000
arch/arm/mach-tegra/Makefile.boot
View file @
bdf4e948
zreladdr-$(CONFIG_ARCH_TEGRA_2x_SOC)
:
=
0x00008000
zreladdr-$(CONFIG_ARCH_TEGRA_2x_SOC)
+
=
0x00008000
params_phys-$(CONFIG_ARCH_TEGRA_2x_SOC)
:=
0x00000100
initrd_phys-$(CONFIG_ARCH_TEGRA_2x_SOC)
:=
0x00800000
...
...
arch/arm/mach-tegra/board-harmony.c
View file @
bdf4e948
...
...
@@ -123,8 +123,8 @@ static struct platform_device *harmony_devices[] __initdata = {
&
harmony_audio_device
,
};
static
void
__init
tegra_harmony_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
tegra_harmony_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
2
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-tegra/board-paz00.c
View file @
bdf4e948
...
...
@@ -84,8 +84,8 @@ static void paz00_usb_init(void)
platform_device_register
(
&
tegra_ehci3_device
);
}
static
void
__init
tegra_paz00_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
tegra_paz00_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-tegra/board-trimslice.c
View file @
bdf4e948
...
...
@@ -126,8 +126,8 @@ static void trimslice_usb_init(void)
platform_device_register
(
&
tegra_ehci1_device
);
}
static
void
__init
tegra_trimslice_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
static
void
__init
tegra_trimslice_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
2
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
...
...
arch/arm/mach-u300/Makefile.boot
View file @
bdf4e948
...
...
@@ -4,10 +4,10 @@
# INITRD_PHYS must be in RAM
ifdef
CONFIG_MACH_U300_SINGLE_RAM
zreladdr-y
:
=
0x28E08000
zreladdr-y
+
=
0x28E08000
params_phys-y
:=
0x28E00100
else
zreladdr-y
:
=
0x48008000
zreladdr-y
+
=
0x48008000
params_phys-y
:=
0x48000100
endif
...
...
arch/arm/mach-ux500/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-versatile/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-vexpress/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x60008000
zreladdr-y
+
=
0x60008000
params_phys-y
:=
0x60000100
initrd_phys-y
:=
0x60800000
arch/arm/mach-vexpress/hotplug.c
View file @
bdf4e948
...
...
@@ -13,6 +13,7 @@
#include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/system.h>
extern
volatile
int
pen_release
;
...
...
@@ -62,13 +63,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
* code will have already disabled interrupts
*/
for
(;;)
{
/*
* here's the WFI
*/
asm
(
".word 0xe320f003
\n
"
:
:
:
"memory"
,
"cc"
);
wfi
();
if
(
pen_release
==
cpu
)
{
/*
...
...
arch/arm/mach-vt8500/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x01000000
arch/arm/mach-w90x900/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
arch/arm/mach-zynq/Makefile.boot
View file @
bdf4e948
zreladdr-y
:
=
0x00008000
zreladdr-y
+
=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mm/ioremap.c
View file @
bdf4e948
...
...
@@ -289,6 +289,27 @@ __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)
}
EXPORT_SYMBOL
(
__arm_ioremap
);
/*
* Remap an arbitrary physical address space into the kernel virtual
* address space as memory. Needed when the kernel wants to execute
* code in external memory. This is needed for reprogramming source
* clocks that would affect normal memory for example. Please see
* CONFIG_GENERIC_ALLOCATOR for allocating external memory.
*/
void
__iomem
*
__arm_ioremap_exec
(
unsigned
long
phys_addr
,
size_t
size
,
bool
cached
)
{
unsigned
int
mtype
;
if
(
cached
)
mtype
=
MT_MEMORY
;
else
mtype
=
MT_MEMORY_NONCACHED
;
return
__arm_ioremap_caller
(
phys_addr
,
size
,
mtype
,
__builtin_return_address
(
0
));
}
void
__iounmap
(
volatile
void
__iomem
*
io_addr
)
{
void
*
addr
=
(
void
*
)(
PAGE_MASK
&
(
unsigned
long
)
io_addr
);
...
...
arch/arm/tools/mach-types
View file @
bdf4e948
...
...
@@ -12,10 +12,9 @@
#
# http://www.arm.linux.org.uk/developer/machines/?action=new
#
# XXX: This is a cut-down version of the file; it contains only machines that
# XXX: are in mainline or have been submitted to the machine database within
# XXX: the last 12 months. If your entry is missing please email rmk at
# XXX: <linux@arm.linux.org.uk>
# This is a cut-down version of the file; it contains only machines that
# are merged into mainline or have been edited in the machine database
# within the last 12 months. References to machine_is_NAME() do not count!
#
# Last update: Sat May 7 08:48:24 2011
#
...
...
@@ -65,6 +64,7 @@ h7201 ARCH_H7201 H7201 161
h7202 ARCH_H7202 H7202 162
iq80321 ARCH_IQ80321 IQ80321 169
ks8695 ARCH_KS8695 KS8695 180
karo ARCH_KARO KARO 190
smdk2410 ARCH_SMDK2410 SMDK2410 193
ceiva ARCH_CEIVA CEIVA 200
voiceblue MACH_VOICEBLUE VOICEBLUE 218
...
...
@@ -188,6 +188,7 @@ omap_2430sdp MACH_OMAP_2430SDP OMAP_2430SDP 900
davinci_evm MACH_DAVINCI_EVM DAVINCI_EVM 901
palmz72 MACH_PALMZ72 PALMZ72 904
nxdb500 MACH_NXDB500 NXDB500 905
apf9328 MACH_APF9328 APF9328 906
palmt5 MACH_PALMT5 PALMT5 917
palmtc MACH_PALMTC PALMTC 918
omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
...
...
@@ -271,10 +272,12 @@ pcm038 MACH_PCM038 PCM038 1551
ts_x09 MACH_TS209 TS209 1565
at91cap9adk MACH_AT91CAP9ADK AT91CAP9ADK 1566
mx31moboard MACH_MX31MOBOARD MX31MOBOARD 1574
vision_ep9307 MACH_VISION_EP9307 VISION_EP9307 1578
terastation_pro2 MACH_TERASTATION_PRO2 TERASTATION_PRO2 1584
linkstation_pro MACH_LINKSTATION_PRO LINKSTATION_PRO 1585
e350 MACH_E350 E350 1596
ts409 MACH_TS409 TS409 1601
rsi_ews MACH_RSI_EWS RSI_EWS 1609
cm_x300 MACH_CM_X300 CM_X300 1616
at91sam9g20ek MACH_AT91SAM9G20EK AT91SAM9G20EK 1624
smdk6410 MACH_SMDK6410 SMDK6410 1626
...
...
@@ -331,6 +334,7 @@ smdkc100 MACH_SMDKC100 SMDKC100 1826
tavorevb MACH_TAVOREVB TAVOREVB 1827
saar MACH_SAAR SAAR 1828
at91sam9m10g45ek MACH_AT91SAM9M10G45EK AT91SAM9M10G45EK 1830
usb_a9g20 MACH_USB_A9G20 USB_A9G20 1841
mxlads MACH_MXLADS MXLADS 1851
linkstation_mini MACH_LINKSTATION_MINI LINKSTATION_MINI 1858
afeb9260 MACH_AFEB9260 AFEB9260 1859
...
...
@@ -369,6 +373,7 @@ pcm043 MACH_PCM043 PCM043 2072
sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
tx37 MACH_TX37 TX37 2127
rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
dm355_leopard MACH_DM355_LEOPARD DM355_LEOPARD 2138
ts219 MACH_TS219 TS219 2139
...
...
@@ -379,6 +384,7 @@ omap_4430sdp MACH_OMAP_4430SDP OMAP_4430SDP 2160
magx_zn5 MACH_MAGX_ZN5 MAGX_ZN5 2162
btmavb101 MACH_BTMAVB101 BTMAVB101 2172
btmawb101 MACH_BTMAWB101 BTMAWB101 2173
tx25 MACH_TX25 TX25 2177
omap3_torpedo MACH_OMAP3_TORPEDO OMAP3_TORPEDO 2178
anw6410 MACH_ANW6410 ANW6410 2183
imx27_visstrim_m10 MACH_IMX27_VISSTRIM_M10 IMX27_VISSTRIM_M10 2187
...
...
@@ -423,6 +429,7 @@ raumfeld_rc MACH_RAUMFELD_RC RAUMFELD_RC 2413
raumfeld_connector MACH_RAUMFELD_CONNECTOR RAUMFELD_CONNECTOR 2414
raumfeld_speaker MACH_RAUMFELD_SPEAKER RAUMFELD_SPEAKER 2415
tnetv107x MACH_TNETV107X TNETV107X 2418
mx51_m2id MACH_MX51_M2ID MX51_M2ID 2428
smdkv210 MACH_SMDKV210 SMDKV210 2456
omap_zoom3 MACH_OMAP_ZOOM3 OMAP_ZOOM3 2464
omap_3630sdp MACH_OMAP_3630SDP OMAP_3630SDP 2465
...
...
@@ -433,14 +440,17 @@ omapl138_hawkboard MACH_OMAPL138_HAWKBOARD OMAPL138_HAWKBOARD 2495
ts41x MACH_TS41X TS41X 2502
phy3250 MACH_PHY3250 PHY3250 2511
mini6410 MACH_MINI6410 MINI6410 2520
tx51 MACH_TX51 TX51 2529
mx28evk MACH_MX28EVK MX28EVK 2531
smartq5 MACH_SMARTQ5 SMARTQ5 2534
davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
riot_bei2 MACH_RIOT_BEI2 RIOT_BEI2 2576
riot_x37 MACH_RIOT_X37 RIOT_X37 2578
pca101 MACH_PCA101 PCA101 2595
capc7117 MACH_CAPC7117 CAPC7117 2612
icontrol MACH_ICONTROL ICONTROL 2624
gplugd MACH_GPLUGD GPLUGD 2625
qsd8x50a_st1_5 MACH_QSD8X50A_ST1_5 QSD8X50A_ST1_5 2627
mx23evk MACH_MX23EVK MX23EVK 2629
ap4evb MACH_AP4EVB AP4EVB 2630
...
...
@@ -1113,3 +1123,5 @@ blissc MACH_BLISSC BLISSC 3491
thales_adc MACH_THALES_ADC THALES_ADC 3492
ubisys_p9d_evp MACH_UBISYS_P9D_EVP UBISYS_P9D_EVP 3493
atdgp318 MACH_ATDGP318 ATDGP318 3494
smdk4212 MACH_SMDK4212 SMDK4212 3638
smdk4412 MACH_SMDK4412 SMDK4412 3765
drivers/pcmcia/sa1100_simpad.c
View file @
bdf4e948
...
...
@@ -15,10 +15,6 @@
#include <mach/simpad.h>
#include "sa1100_generic.h"
extern
long
get_cs3_shadow
(
void
);
extern
void
set_cs3_bit
(
int
value
);
extern
void
clear_cs3_bit
(
int
value
);
static
struct
pcmcia_irqs
irqs
[]
=
{
{
1
,
IRQ_GPIO_CF_CD
,
"CF_CD"
},
};
...
...
@@ -26,7 +22,7 @@ static struct pcmcia_irqs irqs[] = {
static
int
simpad_pcmcia_hw_init
(
struct
soc_pcmcia_socket
*
skt
)
{
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
simpad_
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
skt
->
socket
.
pci_irq
=
IRQ_GPIO_CF_IRQ
;
...
...
@@ -38,8 +34,8 @@ static void simpad_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
soc_pcmcia_free_irqs
(
skt
,
irqs
,
ARRAY_SIZE
(
irqs
));
/* Disable CF bus: */
/
/set_cs3_bit(PCMCIA_BUFF_DIS);
clear_cs3_bit
(
PCMCIA_RESET
);
/
*simpad_set_cs3_bit(PCMCIA_BUFF_DIS);*/
simpad_clear_cs3_bit
(
PCMCIA_RESET
);
}
static
void
...
...
@@ -47,15 +43,16 @@ simpad_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
struct
pcmcia_state
*
state
)
{
unsigned
long
levels
=
GPLR
;
long
cs3reg
=
get_cs3_shadow
();
long
cs3reg
=
simpad_get_cs3_ro
();
state
->
detect
=
((
levels
&
GPIO_CF_CD
)
==
0
)
?
1
:
0
;
state
->
ready
=
(
levels
&
GPIO_CF_IRQ
)
?
1
:
0
;
state
->
bvd1
=
1
;
/* Not available on Simpad.
*/
state
->
bvd2
=
1
;
/* Not available on Simpad.
*/
state
->
bvd1
=
1
;
/* Might be cs3reg & PCMCIA_BVD1
*/
state
->
bvd2
=
1
;
/* Might be cs3reg & PCMCIA_BVD2
*/
state
->
wrprot
=
0
;
/* Not available on Simpad. */
if
((
cs3reg
&
0x0c
)
==
0x0c
)
{
if
((
cs3reg
&
(
PCMCIA_VS1
|
PCMCIA_VS2
))
==
(
PCMCIA_VS1
|
PCMCIA_VS2
))
{
state
->
vs_3v
=
0
;
state
->
vs_Xv
=
0
;
}
else
{
...
...
@@ -75,23 +72,23 @@ simpad_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
/* Murphy: see table of MIC2562a-1 */
switch
(
state
->
Vcc
)
{
case
0
:
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
simpad_
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
break
;
case
33
:
clear_cs3_bit
(
VCC_3V_EN
|
EN1
);
set_cs3_bit
(
VCC_5V_EN
|
EN0
);
simpad_
clear_cs3_bit
(
VCC_3V_EN
|
EN1
);
s
impad_s
et_cs3_bit
(
VCC_5V_EN
|
EN0
);
break
;
case
50
:
clear_cs3_bit
(
VCC_5V_EN
|
EN1
);
set_cs3_bit
(
VCC_3V_EN
|
EN0
);
simpad_
clear_cs3_bit
(
VCC_5V_EN
|
EN1
);
s
impad_s
et_cs3_bit
(
VCC_3V_EN
|
EN0
);
break
;
default:
printk
(
KERN_ERR
"%s(): unrecognized Vcc %u
\n
"
,
__func__
,
state
->
Vcc
);
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
simpad_
clear_cs3_bit
(
VCC_3V_EN
|
VCC_5V_EN
|
EN0
|
EN1
);
local_irq_restore
(
flags
);
return
-
1
;
}
...
...
@@ -110,7 +107,7 @@ static void simpad_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
static
void
simpad_pcmcia_socket_suspend
(
struct
soc_pcmcia_socket
*
skt
)
{
soc_pcmcia_disable_irqs
(
skt
,
irqs
,
ARRAY_SIZE
(
irqs
));
set_cs3_bit
(
PCMCIA_RESET
);
s
impad_s
et_cs3_bit
(
PCMCIA_RESET
);
}
static
struct
pcmcia_low_level
simpad_pcmcia_ops
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment