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
nexedi
linux
Commits
be15cd72
Commit
be15cd72
authored
Oct 29, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-arm
parents
e9d52234
37d07b72
Changes
37
Show whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
295 additions
and
172 deletions
+295
-172
arch/arm/Makefile
arch/arm/Makefile
+3
-11
arch/arm/kernel/Makefile
arch/arm/kernel/Makefile
+1
-1
arch/arm/kernel/asm-offsets.c
arch/arm/kernel/asm-offsets.c
+0
-1
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+2
-1
arch/arm/kernel/head.S
arch/arm/kernel/head.S
+17
-40
arch/arm/kernel/vmlinux.lds.S
arch/arm/kernel/vmlinux.lds.S
+10
-1
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/generic.c
+2
-0
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/jornada720.c
+64
-0
arch/arm/mm/init.c
arch/arm/mm/init.c
+19
-11
drivers/mtd/maps/sa1100-flash.c
drivers/mtd/maps/sa1100-flash.c
+47
-19
include/asm-arm/arch-aaec2000/memory.h
include/asm-arm/arch-aaec2000/memory.h
+1
-1
include/asm-arm/arch-cl7500/memory.h
include/asm-arm/arch-cl7500/memory.h
+1
-1
include/asm-arm/arch-clps711x/memory.h
include/asm-arm/arch-clps711x/memory.h
+1
-1
include/asm-arm/arch-ebsa110/memory.h
include/asm-arm/arch-ebsa110/memory.h
+1
-1
include/asm-arm/arch-ebsa285/memory.h
include/asm-arm/arch-ebsa285/memory.h
+5
-5
include/asm-arm/arch-epxa10db/memory.h
include/asm-arm/arch-epxa10db/memory.h
+1
-1
include/asm-arm/arch-h720x/memory.h
include/asm-arm/arch-h720x/memory.h
+1
-1
include/asm-arm/arch-imx/memory.h
include/asm-arm/arch-imx/memory.h
+1
-1
include/asm-arm/arch-integrator/memory.h
include/asm-arm/arch-integrator/memory.h
+2
-2
include/asm-arm/arch-iop3xx/memory.h
include/asm-arm/arch-iop3xx/memory.h
+2
-2
include/asm-arm/arch-ixp2000/memory.h
include/asm-arm/arch-ixp2000/memory.h
+1
-1
include/asm-arm/arch-ixp2000/platform.h
include/asm-arm/arch-ixp2000/platform.h
+25
-25
include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
+49
-26
include/asm-arm/arch-ixp4xx/memory.h
include/asm-arm/arch-ixp4xx/memory.h
+1
-1
include/asm-arm/arch-l7200/memory.h
include/asm-arm/arch-l7200/memory.h
+1
-1
include/asm-arm/arch-lh7a40x/memory.h
include/asm-arm/arch-lh7a40x/memory.h
+1
-1
include/asm-arm/arch-omap/memory.h
include/asm-arm/arch-omap/memory.h
+3
-3
include/asm-arm/arch-pxa/memory.h
include/asm-arm/arch-pxa/memory.h
+1
-1
include/asm-arm/arch-rpc/memory.h
include/asm-arm/arch-rpc/memory.h
+1
-1
include/asm-arm/arch-s3c2410/memory.h
include/asm-arm/arch-s3c2410/memory.h
+2
-2
include/asm-arm/arch-sa1100/memory.h
include/asm-arm/arch-sa1100/memory.h
+1
-1
include/asm-arm/arch-shark/memory.h
include/asm-arm/arch-shark/memory.h
+1
-1
include/asm-arm/arch-versatile/memory.h
include/asm-arm/arch-versatile/memory.h
+1
-1
include/asm-arm/mach/arch.h
include/asm-arm/mach/arch.h
+1
-0
include/asm-arm/mach/flash.h
include/asm-arm/mach/flash.h
+2
-0
include/asm-arm/mach/map.h
include/asm-arm/mach/map.h
+2
-2
include/asm-arm/memory.h
include/asm-arm/memory.h
+21
-4
No files found.
arch/arm/Makefile
View file @
be15cd72
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
# Copyright (C) 1995-2001 by Russell King
# Copyright (C) 1995-2001 by Russell King
LDFLAGS_vmlinux
:=
-p
--no-undefined
-X
LDFLAGS_vmlinux
:=
-p
--no-undefined
-X
CPPFLAGS_vmlinux.lds
=
-D
TEXTADDR
=
$(TEXTADDR)
-DDATAADDR
=
$(DATA
ADDR)
CPPFLAGS_vmlinux.lds
=
-D
KERNEL_RAM_ADDR
=
$(TEXT
ADDR)
OBJCOPYFLAGS
:=
-O
binary
-R
.note
-R
.comment
-S
OBJCOPYFLAGS
:=
-O
binary
-R
.note
-R
.comment
-S
GZFLAGS
:=
-9
GZFLAGS
:=
-9
#CFLAGS +=-pipe
#CFLAGS +=-pipe
...
@@ -108,27 +108,19 @@ export CFLAGS_3c589_cs.o
...
@@ -108,27 +108,19 @@ export CFLAGS_3c589_cs.o
endif
endif
TEXTADDR
:=
$
(
textaddr-y
)
TEXTADDR
:=
$
(
textaddr-y
)
ifeq
($(CONFIG_XIP_KERNEL),y)
DATAADDR
:=
$(TEXTADDR)
xipaddr-$(CONFIG_ARCH_CO285)
:=
0x5f000000
xipaddr-y
?=
0xbf000000
# Replace phys addr with virt addr while keeping offset from base.
TEXTADDR
:=
$(
shell
echo
$(CONFIG_XIP_PHYS_ADDR)
$
(
xipaddr-y
)
|
\
awk
--non-decimal-data
'/[:xdigit:]/ \
{ printf("0x%x\n", and($$1, 0x000fffff
)
+ $$2
)
}
'
)
endif
ifeq
($(incdir-y),)
ifeq
($(incdir-y),)
incdir-y
:=
$
(
machine-y
)
incdir-y
:=
$
(
machine-y
)
endif
endif
INCDIR
:=
arch-
$
(
incdir-y
)
INCDIR
:=
arch-
$
(
incdir-y
)
ifneq
($(machine-y),)
ifneq
($(machine-y),)
MACHINE
:=
arch
/arm/mach-
$
(
machine-y
)
/
MACHINE
:=
arch
/arm/mach-
$
(
machine-y
)
/
else
else
MACHINE
:=
MACHINE
:=
endif
endif
export
TEXTADDR
DATAADDR
GZFLAGS
export
TEXTADDR
GZFLAGS
# Do we have FASTFPE?
# Do we have FASTFPE?
FASTFPE
:=
arch
/arm/fastfpe
FASTFPE
:=
arch
/arm/fastfpe
...
...
arch/arm/kernel/Makefile
View file @
be15cd72
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
# Makefile for the linux kernel.
# Makefile for the linux kernel.
#
#
AFLAGS_head.o
:=
-D
TEXTADDR
=
$(TEXTADDR)
-DDATAADDR
=
$(DATA
ADDR)
AFLAGS_head.o
:=
-D
KERNEL_RAM_ADDR
=
$(TEXT
ADDR)
# Object file lists.
# Object file lists.
...
...
arch/arm/kernel/asm-offsets.c
View file @
be15cd72
...
@@ -94,7 +94,6 @@ int main(void)
...
@@ -94,7 +94,6 @@ int main(void)
DEFINE
(
VM_EXEC
,
VM_EXEC
);
DEFINE
(
VM_EXEC
,
VM_EXEC
);
BLANK
();
BLANK
();
DEFINE
(
PAGE_SZ
,
PAGE_SIZE
);
DEFINE
(
PAGE_SZ
,
PAGE_SIZE
);
DEFINE
(
VIRT_OFFSET
,
PAGE_OFFSET
);
BLANK
();
BLANK
();
DEFINE
(
SYS_ERROR0
,
0x9f0000
);
DEFINE
(
SYS_ERROR0
,
0x9f0000
);
BLANK
();
BLANK
();
...
...
arch/arm/kernel/entry-armv.S
View file @
be15cd72
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
*/
*/
#include <linux/config.h>
#include <linux/config.h>
#include <asm/memory.h>
#include <asm/glue.h>
#include <asm/glue.h>
#include <asm/vfpmacros.h>
#include <asm/vfpmacros.h>
#include <asm/hardware.h> /* should be moved into entry-macro.S */
#include <asm/hardware.h> /* should be moved into entry-macro.S */
...
@@ -310,7 +311,7 @@ __pabt_svc:
...
@@ -310,7 +311,7 @@ __pabt_svc:
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
@
make
sure
our
user
space
atomic
helper
is
aborted
@
make
sure
our
user
space
atomic
helper
is
aborted
cmp
r2
,
#
VIRT_OFFSET
cmp
r2
,
#
TASK_SIZE
bichs
r3
,
r3
,
#
PSR_Z_BIT
bichs
r3
,
r3
,
#
PSR_Z_BIT
#endif
#endif
...
...
arch/arm/kernel/head.S
View file @
be15cd72
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#include <asm/procinfo.h>
#include <asm/procinfo.h>
#include <asm/ptrace.h>
#include <asm/ptrace.h>
#include <asm/asm-offsets.h>
#include <asm/asm-offsets.h>
#include <asm/memory.h>
#include <asm/thread_info.h>
#include <asm/thread_info.h>
#include <asm/system.h>
#include <asm/system.h>
...
@@ -33,52 +34,28 @@
...
@@ -33,52 +34,28 @@
#define MACHINFO_PGOFFIO 12
#define MACHINFO_PGOFFIO 12
#define MACHINFO_NAME 16
#define MACHINFO_NAME 16
#ifndef CONFIG_XIP_KERNEL
/*
/*
*
We
place
the
page
tables
16
K
below
TEXTADDR
.
Therefore
,
we
must
make
sure
*
swapper_pg_dir
is
the
virtual
address
of
the
initial
page
table
.
*
that
TEXTADDR
is
correctly
set
.
Currently
,
we
expect
the
least
significant
*
We
place
the
page
tables
16
K
below
KERNEL_RAM_ADDR
.
Therefore
,
we
must
*
16
bits
to
be
0x8000
,
but
we
could
probably
relax
this
restriction
to
*
make
sure
that
KERNEL_RAM_ADDR
is
correctly
set
.
Currently
,
we
expect
*
TEXTADDR
>=
PAGE_OFFSET
+
0x4000
*
the
least
significant
16
bits
to
be
0x8000
,
but
we
could
probably
*
*
relax
this
restriction
to
KERNEL_RAM_ADDR
>=
PAGE_OFFSET
+
0x4000
.
*
Note
that
swapper_pg_dir
is
the
virtual
address
of
the
page
tables
,
and
*
pgtbl
gives
us
a
position
-
independent
reference
to
these
tables
.
We
can
*
do
this
because
stext
==
TEXTADDR
*/
*/
#if (
TEXT
ADDR & 0xffff) != 0x8000
#if (
KERNEL_RAM_
ADDR & 0xffff) != 0x8000
#error
TEXT
ADDR must start at 0xXXXX8000
#error
KERNEL_RAM_
ADDR must start at 0xXXXX8000
#endif
#endif
.
globl
swapper_pg_dir
.
globl
swapper_pg_dir
.
equ
swapper_pg_dir
,
TEXT
ADDR
-
0x4000
.
equ
swapper_pg_dir
,
KERNEL_RAM_
ADDR
-
0x4000
.
macro
pgtbl
,
rd
,
phys
.
macro
pgtbl
,
rd
adr
\
rd
,
stext
ldr
\
rd
,
=(
__virt_to_phys
(
KERNEL_RAM_ADDR
-
0x4000
))
sub
\
rd
,
\
rd
,
#
0x4000
.
endm
.
endm
#else
/*
*
XIP
Kernel
:
*
*
We
place
the
page
tables
16
K
below
DATAADDR
.
Therefore
,
we
must
make
sure
*
that
DATAADDR
is
correctly
set
.
Currently
,
we
expect
the
least
significant
*
16
bits
to
be
0x8000
,
but
we
could
probably
relax
this
restriction
to
*
DATAADDR
>=
PAGE_OFFSET
+
0x4000
*
*
Note
that
pgtbl
is
meant
to
return
the
physical
address
of
swapper_pg_dir
.
*
We
can
't make it relative to the kernel position in this case since
*
the
kernel
can
physically
be
anywhere
.
*/
#if (DATAADDR & 0xffff) != 0x8000
#error DATAADDR must start at 0xXXXX8000
#endif
.
globl
swapper_pg_dir
.
equ
swapper_pg_dir
,
DATAADDR
-
0x4000
.
macro
pgtbl
,
rd
,
phys
#ifdef CONFIG_XIP_KERNEL
ldr
\
rd
,
=((
DATAADDR
-
0x4000
)
-
VIRT_OFFSET
)
#define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR
)
add
\
rd
,
\
rd
,
\
phys
#else
.
endm
#define TEXTADDR KERNEL_RAM_ADDR
#endif
#endif
/*
/*
...
@@ -279,7 +256,7 @@ __turn_mmu_on:
...
@@ -279,7 +256,7 @@ __turn_mmu_on:
.
type
__create_page_tables
,
%
function
.
type
__create_page_tables
,
%
function
__create_page_tables
:
__create_page_tables
:
ldr
r5
,
[
r8
,
#
MACHINFO_PHYSRAM
]
@
physram
ldr
r5
,
[
r8
,
#
MACHINFO_PHYSRAM
]
@
physram
pgtbl
r4
,
r5
@
page
table
address
pgtbl
r4
@
page
table
address
/
*
/
*
*
Clear
the
16
K
level
1
swapper
page
table
*
Clear
the
16
K
level
1
swapper
page
table
...
@@ -324,7 +301,7 @@ __create_page_tables:
...
@@ -324,7 +301,7 @@ __create_page_tables:
/
*
/
*
*
Then
map
first
1
MB
of
ram
in
case
it
contains
our
boot
params
.
*
Then
map
first
1
MB
of
ram
in
case
it
contains
our
boot
params
.
*/
*/
add
r0
,
r4
,
#
VIRT
_OFFSET
>>
18
add
r0
,
r4
,
#
PAGE
_OFFSET
>>
18
orr
r6
,
r5
,
r7
orr
r6
,
r5
,
r7
str
r6
,
[
r0
]
str
r6
,
[
r0
]
...
...
arch/arm/kernel/vmlinux.lds.S
View file @
be15cd72
...
@@ -6,14 +6,23 @@
...
@@ -6,14 +6,23 @@
#include <asm-generic/vmlinux.lds.h>
#include <asm-generic/vmlinux.lds.h>
#include <linux/config.h>
#include <linux/config.h>
#include <asm/thread_info.h>
#include <asm/thread_info.h>
#include <asm/memory.h>
OUTPUT_ARCH
(
arm
)
OUTPUT_ARCH
(
arm
)
ENTRY
(
stext
)
ENTRY
(
stext
)
#ifndef __ARMEB__
#ifndef __ARMEB__
jiffies
=
jiffies_64
;
jiffies
=
jiffies_64
;
#else
#else
jiffies
=
jiffies_64
+
4
;
jiffies
=
jiffies_64
+
4
;
#endif
#endif
#ifdef CONFIG_XIP_KERNEL
#define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
#else
#define TEXTADDR KERNEL_RAM_ADDR
#endif
SECTIONS
SECTIONS
{
{
.
=
TEXTADDR
;
.
=
TEXTADDR
;
...
@@ -95,7 +104,7 @@ SECTIONS
...
@@ -95,7 +104,7 @@ SECTIONS
#ifdef CONFIG_XIP_KERNEL
#ifdef CONFIG_XIP_KERNEL
__data_loc
=
ALIGN
(
4
)
; /* location in binary */
__data_loc
=
ALIGN
(
4
)
; /* location in binary */
.
=
DATA
ADDR
;
.
=
KERNEL_RAM_
ADDR
;
#else
#else
.
=
ALIGN
(
THREAD_SIZE
)
;
.
=
ALIGN
(
THREAD_SIZE
)
;
__data_loc
=
.
;
__data_loc
=
.
;
...
...
arch/arm/mach-sa1100/generic.c
View file @
be15cd72
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
#include <asm/system.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/pgtable.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/flash.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include "generic.h"
#include "generic.h"
...
@@ -283,6 +284,7 @@ static struct platform_device sa11x0mtd_device = {
...
@@ -283,6 +284,7 @@ static struct platform_device sa11x0mtd_device = {
void
sa11x0_set_flash_data
(
struct
flash_platform_data
*
flash
,
void
sa11x0_set_flash_data
(
struct
flash_platform_data
*
flash
,
struct
resource
*
res
,
int
nr
)
struct
resource
*
res
,
int
nr
)
{
{
flash
->
name
=
"sa1100"
;
sa11x0mtd_device
.
dev
.
platform_data
=
flash
;
sa11x0mtd_device
.
dev
.
platform_data
=
flash
;
sa11x0mtd_device
.
resource
=
res
;
sa11x0mtd_device
.
resource
=
res
;
sa11x0mtd_device
.
num_resources
=
nr
;
sa11x0mtd_device
.
num_resources
=
nr
;
...
...
arch/arm/mach-sa1100/jornada720.c
View file @
be15cd72
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/device.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/hardware/sa1111.h>
#include <asm/hardware/sa1111.h>
...
@@ -16,6 +18,7 @@
...
@@ -16,6 +18,7 @@
#include <asm/setup.h>
#include <asm/setup.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/mach/serial_sa1100.h>
...
@@ -108,6 +111,66 @@ static void __init jornada720_map_io(void)
...
@@ -108,6 +111,66 @@ static void __init jornada720_map_io(void)
sa1100_register_uart
(
1
,
1
);
sa1100_register_uart
(
1
,
1
);
}
}
static
struct
mtd_partition
jornada720_partitions
[]
=
{
{
.
name
=
"JORNADA720 boot firmware"
,
.
size
=
0x00040000
,
.
offset
=
0
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
{
.
name
=
"JORNADA720 kernel"
,
.
size
=
0x000c0000
,
.
offset
=
0x00040000
,
},
{
.
name
=
"JORNADA720 params"
,
.
size
=
0x00040000
,
.
offset
=
0x00100000
,
},
{
.
name
=
"JORNADA720 initrd"
,
.
size
=
0x00100000
,
.
offset
=
0x00140000
,
},
{
.
name
=
"JORNADA720 root cramfs"
,
.
size
=
0x00300000
,
.
offset
=
0x00240000
,
},
{
.
name
=
"JORNADA720 usr cramfs"
,
.
size
=
0x00800000
,
.
offset
=
0x00540000
,
},
{
.
name
=
"JORNADA720 usr local"
,
.
size
=
0
,
/* will expand to the end of the flash */
.
offset
=
0x00d00000
,
}
};
static
void
jornada720_set_vpp
(
int
vpp
)
{
if
(
vpp
)
PPSR
|=
0x80
;
else
PPSR
&=
~
0x80
;
PPDR
|=
0x80
;
}
static
struct
flash_platform_data
jornada720_flash_data
=
{
.
map_name
=
"cfi_probe"
,
.
set_vpp
=
jornada720_set_vpp
,
.
parts
=
jornada720_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
jornada720_partitions
),
};
static
struct
resource
jornada720_flash_resource
=
{
.
start
=
SA1100_CS0_PHYS
,
.
end
=
SA1100_CS0_PHYS
+
SZ_32M
-
1
,
.
flags
=
IORESOURCE_MEM
,
};
static
void
__init
jornada720_mach_init
(
void
)
{
sa11x0_set_flash_data
(
&
jornada720_flash_data
,
&
jornada720_flash_resource
,
1
);
}
MACHINE_START
(
JORNADA720
,
"HP Jornada 720"
)
MACHINE_START
(
JORNADA720
,
"HP Jornada 720"
)
/* Maintainer: Michael Gernoth <michael@gernoth.net> */
/* Maintainer: Michael Gernoth <michael@gernoth.net> */
.
phys_ram
=
0xc0000000
,
.
phys_ram
=
0xc0000000
,
...
@@ -117,4 +180,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
...
@@ -117,4 +180,5 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
.
map_io
=
jornada720_map_io
,
.
map_io
=
jornada720_map_io
,
.
init_irq
=
sa1100_init_irq
,
.
init_irq
=
sa1100_init_irq
,
.
timer
=
&
sa1100_timer
,
.
timer
=
&
sa1100_timer
,
.
init_machine
=
jornada720_mach_init
,
MACHINE_END
MACHINE_END
arch/arm/mm/init.c
View file @
be15cd72
...
@@ -363,20 +363,16 @@ static void __init bootmem_init(struct meminfo *mi)
...
@@ -363,20 +363,16 @@ static void __init bootmem_init(struct meminfo *mi)
memcpy
(
&
meminfo
,
mi
,
sizeof
(
meminfo
));
memcpy
(
&
meminfo
,
mi
,
sizeof
(
meminfo
));
#ifdef CONFIG_XIP_KERNEL
#error needs fixing
p
->
pfn
=
__phys_to_pfn
(
CONFIG_XIP_PHYS_ADDR
&
PMD_MASK
);
p
->
virtual
=
(
unsigned
long
)
&
_stext
&
PMD_MASK
;
p
->
length
=
((
unsigned
long
)
&
_etext
-
p
->
virtual
+
~
PMD_MASK
)
&
PMD_MASK
;
p
->
type
=
MT_ROM
;
p
++
;
#endif
/*
/*
* Clear out all the mappings below the kernel image.
* Clear out all the mappings below the kernel image.
* FIXME: what about XIP?
*/
*/
for
(
addr
=
0
;
addr
<
PAGE_OFFSET
;
addr
+=
PGDIR_SIZE
)
for
(
addr
=
0
;
addr
<
MODULE_START
;
addr
+=
PGDIR_SIZE
)
pmd_clear
(
pmd_off_k
(
addr
));
#ifdef CONFIG_XIP_KERNEL
/* The XIP kernel is mapped in the module area -- skip over it */
addr
=
((
unsigned
long
)
&
_etext
+
PGDIR_SIZE
-
1
)
&
PGDIR_MASK
;
#endif
for
(
;
addr
<
PAGE_OFFSET
;
addr
+=
PGDIR_SIZE
)
pmd_clear
(
pmd_off_k
(
addr
));
pmd_clear
(
pmd_off_k
(
addr
));
/*
/*
...
@@ -435,6 +431,18 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
...
@@ -435,6 +431,18 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
for
(
addr
=
VMALLOC_END
;
addr
;
addr
+=
PGDIR_SIZE
)
for
(
addr
=
VMALLOC_END
;
addr
;
addr
+=
PGDIR_SIZE
)
pmd_clear
(
pmd_off_k
(
addr
));
pmd_clear
(
pmd_off_k
(
addr
));
/*
* Map the kernel if it is XIP.
* It is always first in the modulearea.
*/
#ifdef CONFIG_XIP_KERNEL
map
.
pfn
=
__phys_to_pfn
(
CONFIG_XIP_PHYS_ADDR
&
PGDIR_MASK
);
map
.
virtual
=
MODULE_START
;
map
.
length
=
((
unsigned
long
)
&
_etext
-
map
.
virtual
+
~
PGDIR_MASK
)
&
PGDIR_MASK
;
map
.
type
=
MT_ROM
;
create_mapping
(
&
map
);
#endif
/*
/*
* Map the cache flushing regions.
* Map the cache flushing regions.
*/
*/
...
...
drivers/mtd/maps/sa1100-flash.c
View file @
be15cd72
...
@@ -130,20 +130,21 @@ struct sa_subdev_info {
...
@@ -130,20 +130,21 @@ struct sa_subdev_info {
char
name
[
16
];
char
name
[
16
];
struct
map_info
map
;
struct
map_info
map
;
struct
mtd_info
*
mtd
;
struct
mtd_info
*
mtd
;
struct
flash_platform_data
*
data
;
struct
flash_platform_data
*
plat
;
};
};
struct
sa_info
{
struct
sa_info
{
struct
mtd_partition
*
parts
;
struct
mtd_partition
*
parts
;
struct
mtd_info
*
mtd
;
struct
mtd_info
*
mtd
;
int
num_subdev
;
int
num_subdev
;
unsigned
int
nr_parts
;
struct
sa_subdev_info
subdev
[
0
];
struct
sa_subdev_info
subdev
[
0
];
};
};
static
void
sa1100_set_vpp
(
struct
map_info
*
map
,
int
on
)
static
void
sa1100_set_vpp
(
struct
map_info
*
map
,
int
on
)
{
{
struct
sa_subdev_info
*
subdev
=
container_of
(
map
,
struct
sa_subdev_info
,
map
);
struct
sa_subdev_info
*
subdev
=
container_of
(
map
,
struct
sa_subdev_info
,
map
);
subdev
->
data
->
set_vpp
(
on
);
subdev
->
plat
->
set_vpp
(
on
);
}
}
static
void
sa1100_destroy_subdev
(
struct
sa_subdev_info
*
subdev
)
static
void
sa1100_destroy_subdev
(
struct
sa_subdev_info
*
subdev
)
...
@@ -187,7 +188,7 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
...
@@ -187,7 +188,7 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
goto
out
;
goto
out
;
}
}
if
(
subdev
->
data
->
set_vpp
)
if
(
subdev
->
plat
->
set_vpp
)
subdev
->
map
.
set_vpp
=
sa1100_set_vpp
;
subdev
->
map
.
set_vpp
=
sa1100_set_vpp
;
subdev
->
map
.
phys
=
phys
;
subdev
->
map
.
phys
=
phys
;
...
@@ -204,7 +205,7 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
...
@@ -204,7 +205,7 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
* Now let's probe for the actual flash. Do it here since
* Now let's probe for the actual flash. Do it here since
* specific machine settings might have been set above.
* specific machine settings might have been set above.
*/
*/
subdev
->
mtd
=
do_map_probe
(
subdev
->
data
->
map_name
,
&
subdev
->
map
);
subdev
->
mtd
=
do_map_probe
(
subdev
->
plat
->
map_name
,
&
subdev
->
map
);
if
(
subdev
->
mtd
==
NULL
)
{
if
(
subdev
->
mtd
==
NULL
)
{
ret
=
-
ENXIO
;
ret
=
-
ENXIO
;
goto
err
;
goto
err
;
...
@@ -223,13 +224,17 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
...
@@ -223,13 +224,17 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
return
ret
;
return
ret
;
}
}
static
void
sa1100_destroy
(
struct
sa_info
*
info
)
static
void
sa1100_destroy
(
struct
sa_info
*
info
,
struct
flash_platform_data
*
plat
)
{
{
int
i
;
int
i
;
if
(
info
->
mtd
)
{
if
(
info
->
mtd
)
{
if
(
info
->
nr_parts
==
0
)
del_mtd_device
(
info
->
mtd
);
#ifdef CONFIG_MTD_PARTITIONS
else
del_mtd_partitions
(
info
->
mtd
);
del_mtd_partitions
(
info
->
mtd
);
#endif
#ifdef CONFIG_MTD_CONCAT
#ifdef CONFIG_MTD_CONCAT
if
(
info
->
mtd
!=
info
->
subdev
[
0
].
mtd
)
if
(
info
->
mtd
!=
info
->
subdev
[
0
].
mtd
)
mtd_concat_destroy
(
info
->
mtd
);
mtd_concat_destroy
(
info
->
mtd
);
...
@@ -242,10 +247,13 @@ static void sa1100_destroy(struct sa_info *info)
...
@@ -242,10 +247,13 @@ static void sa1100_destroy(struct sa_info *info)
for
(
i
=
info
->
num_subdev
-
1
;
i
>=
0
;
i
--
)
for
(
i
=
info
->
num_subdev
-
1
;
i
>=
0
;
i
--
)
sa1100_destroy_subdev
(
&
info
->
subdev
[
i
]);
sa1100_destroy_subdev
(
&
info
->
subdev
[
i
]);
kfree
(
info
);
kfree
(
info
);
if
(
plat
->
exit
)
plat
->
exit
();
}
}
static
struct
sa_info
*
__init
static
struct
sa_info
*
__init
sa1100_setup_mtd
(
struct
platform_device
*
pdev
,
struct
flash_platform_data
*
flash
)
sa1100_setup_mtd
(
struct
platform_device
*
pdev
,
struct
flash_platform_data
*
plat
)
{
{
struct
sa_info
*
info
;
struct
sa_info
*
info
;
int
nr
,
size
,
i
,
ret
=
0
;
int
nr
,
size
,
i
,
ret
=
0
;
...
@@ -275,6 +283,12 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
...
@@ -275,6 +283,12 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
memset
(
info
,
0
,
size
);
memset
(
info
,
0
,
size
);
if
(
plat
->
init
)
{
ret
=
plat
->
init
();
if
(
ret
)
goto
err
;
}
/*
/*
* Claim and then map the memory regions.
* Claim and then map the memory regions.
*/
*/
...
@@ -287,8 +301,8 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
...
@@ -287,8 +301,8 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
break
;
break
;
subdev
->
map
.
name
=
subdev
->
name
;
subdev
->
map
.
name
=
subdev
->
name
;
sprintf
(
subdev
->
name
,
"
sa1100-%d"
,
i
);
sprintf
(
subdev
->
name
,
"
%s-%d"
,
plat
->
name
,
i
);
subdev
->
data
=
flash
;
subdev
->
plat
=
plat
;
ret
=
sa1100_probe_subdev
(
subdev
,
res
);
ret
=
sa1100_probe_subdev
(
subdev
,
res
);
if
(
ret
)
if
(
ret
)
...
@@ -309,7 +323,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
...
@@ -309,7 +323,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
* otherwise fail. Either way, it'll be called "sa1100".
* otherwise fail. Either way, it'll be called "sa1100".
*/
*/
if
(
info
->
num_subdev
==
1
)
{
if
(
info
->
num_subdev
==
1
)
{
strcpy
(
info
->
subdev
[
0
].
name
,
"sa1100"
);
strcpy
(
info
->
subdev
[
0
].
name
,
plat
->
name
);
info
->
mtd
=
info
->
subdev
[
0
].
mtd
;
info
->
mtd
=
info
->
subdev
[
0
].
mtd
;
ret
=
0
;
ret
=
0
;
}
else
if
(
info
->
num_subdev
>
1
)
{
}
else
if
(
info
->
num_subdev
>
1
)
{
...
@@ -322,7 +336,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
...
@@ -322,7 +336,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
cdev
[
i
]
=
info
->
subdev
[
i
].
mtd
;
cdev
[
i
]
=
info
->
subdev
[
i
].
mtd
;
info
->
mtd
=
mtd_concat_create
(
cdev
,
info
->
num_subdev
,
info
->
mtd
=
mtd_concat_create
(
cdev
,
info
->
num_subdev
,
"sa1100"
);
plat
->
name
);
if
(
info
->
mtd
==
NULL
)
if
(
info
->
mtd
==
NULL
)
ret
=
-
ENXIO
;
ret
=
-
ENXIO
;
#else
#else
...
@@ -336,7 +350,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
...
@@ -336,7 +350,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *flash
return
info
;
return
info
;
err:
err:
sa1100_destroy
(
info
);
sa1100_destroy
(
info
,
plat
);
out:
out:
return
ERR_PTR
(
ret
);
return
ERR_PTR
(
ret
);
}
}
...
@@ -346,16 +360,16 @@ static const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
...
@@ -346,16 +360,16 @@ static const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
static
int
__init
sa1100_mtd_probe
(
struct
device
*
dev
)
static
int
__init
sa1100_mtd_probe
(
struct
device
*
dev
)
{
{
struct
platform_device
*
pdev
=
to_platform_device
(
dev
);
struct
platform_device
*
pdev
=
to_platform_device
(
dev
);
struct
flash_platform_data
*
flash
=
pdev
->
dev
.
platform_data
;
struct
flash_platform_data
*
plat
=
pdev
->
dev
.
platform_data
;
struct
mtd_partition
*
parts
;
struct
mtd_partition
*
parts
;
const
char
*
part_type
=
NULL
;
const
char
*
part_type
=
NULL
;
struct
sa_info
*
info
;
struct
sa_info
*
info
;
int
err
,
nr_parts
=
0
;
int
err
,
nr_parts
=
0
;
if
(
!
flash
)
if
(
!
plat
)
return
-
ENODEV
;
return
-
ENODEV
;
info
=
sa1100_setup_mtd
(
pdev
,
flash
);
info
=
sa1100_setup_mtd
(
pdev
,
plat
);
if
(
IS_ERR
(
info
))
{
if
(
IS_ERR
(
info
))
{
err
=
PTR_ERR
(
info
);
err
=
PTR_ERR
(
info
);
goto
out
;
goto
out
;
...
@@ -372,8 +386,8 @@ static int __init sa1100_mtd_probe(struct device *dev)
...
@@ -372,8 +386,8 @@ static int __init sa1100_mtd_probe(struct device *dev)
}
else
}
else
#endif
#endif
{
{
parts
=
flash
->
parts
;
parts
=
plat
->
parts
;
nr_parts
=
flash
->
nr_parts
;
nr_parts
=
plat
->
nr_parts
;
part_type
=
"static"
;
part_type
=
"static"
;
}
}
...
@@ -387,6 +401,8 @@ static int __init sa1100_mtd_probe(struct device *dev)
...
@@ -387,6 +401,8 @@ static int __init sa1100_mtd_probe(struct device *dev)
add_mtd_partitions
(
info
->
mtd
,
parts
,
nr_parts
);
add_mtd_partitions
(
info
->
mtd
,
parts
,
nr_parts
);
}
}
info
->
nr_parts
=
nr_parts
;
dev_set_drvdata
(
dev
,
info
);
dev_set_drvdata
(
dev
,
info
);
err
=
0
;
err
=
0
;
...
@@ -397,8 +413,11 @@ static int __init sa1100_mtd_probe(struct device *dev)
...
@@ -397,8 +413,11 @@ static int __init sa1100_mtd_probe(struct device *dev)
static
int
__exit
sa1100_mtd_remove
(
struct
device
*
dev
)
static
int
__exit
sa1100_mtd_remove
(
struct
device
*
dev
)
{
{
struct
sa_info
*
info
=
dev_get_drvdata
(
dev
);
struct
sa_info
*
info
=
dev_get_drvdata
(
dev
);
struct
flash_platform_data
*
plat
=
dev
->
platform_data
;
dev_set_drvdata
(
dev
,
NULL
);
dev_set_drvdata
(
dev
,
NULL
);
sa1100_destroy
(
info
);
sa1100_destroy
(
info
,
plat
);
return
0
;
return
0
;
}
}
...
@@ -421,9 +440,17 @@ static int sa1100_mtd_resume(struct device *dev)
...
@@ -421,9 +440,17 @@ static int sa1100_mtd_resume(struct device *dev)
info
->
mtd
->
resume
(
info
->
mtd
);
info
->
mtd
->
resume
(
info
->
mtd
);
return
0
;
return
0
;
}
}
static
void
sa1100_mtd_shutdown
(
struct
device
*
dev
)
{
struct
sa_info
*
info
=
dev_get_drvdata
(
dev
);
if
(
info
&&
info
->
mtd
->
suspend
(
info
->
mtd
)
==
0
)
info
->
mtd
->
resume
(
info
->
mtd
);
}
#else
#else
#define sa1100_mtd_suspend NULL
#define sa1100_mtd_suspend NULL
#define sa1100_mtd_resume NULL
#define sa1100_mtd_resume NULL
#define sa1100_mtd_shutdown NULL
#endif
#endif
static
struct
device_driver
sa1100_mtd_driver
=
{
static
struct
device_driver
sa1100_mtd_driver
=
{
...
@@ -433,6 +460,7 @@ static struct device_driver sa1100_mtd_driver = {
...
@@ -433,6 +460,7 @@ static struct device_driver sa1100_mtd_driver = {
.
remove
=
__exit_p
(
sa1100_mtd_remove
),
.
remove
=
__exit_p
(
sa1100_mtd_remove
),
.
suspend
=
sa1100_mtd_suspend
,
.
suspend
=
sa1100_mtd_suspend
,
.
resume
=
sa1100_mtd_resume
,
.
resume
=
sa1100_mtd_resume
,
.
shutdown
=
sa1100_mtd_shutdown
,
};
};
static
int
__init
sa1100_mtd_init
(
void
)
static
int
__init
sa1100_mtd_init
(
void
)
...
...
include/asm-arm/arch-aaec2000/memory.h
View file @
be15cd72
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
#include <linux/config.h>
#include <linux/config.h>
#define PHYS_OFFSET
(0xf0000000UL
)
#define PHYS_OFFSET
UL(0xf0000000
)
#define __virt_to_bus(x) __virt_to_phys(x)
#define __virt_to_bus(x) __virt_to_phys(x)
#define __bus_to_virt(x) __phys_to_virt(x)
#define __bus_to_virt(x) __phys_to_virt(x)
...
...
include/asm-arm/arch-cl7500/memory.h
View file @
be15cd72
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x10000000UL
)
#define PHYS_OFFSET
UL(0x10000000
)
/*
/*
* These are exactly the same on the RiscPC as the
* These are exactly the same on the RiscPC as the
...
...
include/asm-arm/arch-clps711x/memory.h
View file @
be15cd72
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0xc0000000UL
)
#define PHYS_OFFSET
UL(0xc0000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-ebsa110/memory.h
View file @
be15cd72
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
/*
/*
* We keep this 1:1 so that we don't interfere
* We keep this 1:1 so that we don't interfere
...
...
include/asm-arm/arch-ebsa285/memory.h
View file @
be15cd72
...
@@ -46,14 +46,14 @@ extern unsigned long __bus_to_virt(unsigned long);
...
@@ -46,14 +46,14 @@ extern unsigned long __bus_to_virt(unsigned long);
#if defined(CONFIG_ARCH_FOOTBRIDGE)
#if defined(CONFIG_ARCH_FOOTBRIDGE)
/* Task size and page offset at 3GB */
/* Task size and page offset at 3GB */
#define TASK_SIZE
(0xbf000000UL
)
#define TASK_SIZE
UL(0xbf000000
)
#define PAGE_OFFSET
(0xc0000000UL
)
#define PAGE_OFFSET
UL(0xc0000000
)
#elif defined(CONFIG_ARCH_CO285)
#elif defined(CONFIG_ARCH_CO285)
/* Task size and page offset at 1.5GB */
/* Task size and page offset at 1.5GB */
#define TASK_SIZE
(0x5f000000UL
)
#define TASK_SIZE
UL(0x5f000000
)
#define PAGE_OFFSET
(0x60000000UL
)
#define PAGE_OFFSET
UL(0x60000000
)
#else
#else
...
@@ -64,7 +64,7 @@ extern unsigned long __bus_to_virt(unsigned long);
...
@@ -64,7 +64,7 @@ extern unsigned long __bus_to_virt(unsigned long);
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
/*
/*
* This decides where the kernel will search for a free chunk of vm
* This decides where the kernel will search for a free chunk of vm
...
...
include/asm-arm/arch-epxa10db/memory.h
View file @
be15cd72
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-h720x/memory.h
View file @
be15cd72
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
* Page offset:
* Page offset:
* ( 0xc0000000UL )
* ( 0xc0000000UL )
*/
*/
#define PHYS_OFFSET
(0x40000000UL
)
#define PHYS_OFFSET
UL(0x40000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-imx/memory.h
View file @
be15cd72
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
#ifndef __ASM_ARCH_MMU_H
#ifndef __ASM_ARCH_MMU_H
#define __ASM_ARCH_MMU_H
#define __ASM_ARCH_MMU_H
#define PHYS_OFFSET
(0x08000000UL
)
#define PHYS_OFFSET
UL(0x08000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-integrator/memory.h
View file @
be15cd72
...
@@ -23,8 +23,8 @@
...
@@ -23,8 +23,8 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
#define BUS_OFFSET
(0x80000000UL
)
#define BUS_OFFSET
UL(0x80000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-iop3xx/memory.h
View file @
be15cd72
...
@@ -12,9 +12,9 @@
...
@@ -12,9 +12,9 @@
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#ifndef CONFIG_ARCH_IOP331
#ifndef CONFIG_ARCH_IOP331
#define PHYS_OFFSET
(0xa0000000UL
)
#define PHYS_OFFSET
UL(0xa0000000
)
#else
#else
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
#endif
#endif
/*
/*
...
...
include/asm-arm/arch-ixp2000/memory.h
View file @
be15cd72
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
#ifndef __ASM_ARCH_MEMORY_H
#ifndef __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-ixp2000/platform.h
View file @
be15cd72
...
@@ -15,40 +15,40 @@
...
@@ -15,40 +15,40 @@
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
static
inline
unsigned
long
ixp2000_reg_read
(
volatile
void
*
reg
)
{
return
*
((
volatile
unsigned
long
*
)
reg
);
}
static
inline
void
ixp2000_reg_write
(
volatile
void
*
reg
,
unsigned
long
val
)
{
*
((
volatile
unsigned
long
*
)
reg
)
=
val
;
}
/*
/*
* The IXP2400 B0 silicon contains an erratum (#66) that causes writes
* On the IXP2400, we can't use XCB=000 due to chip bugs. We use
* to on-chip I/O register to not complete fully. What this means is
* XCB=101 instead, but that makes all I/O accesses bufferable. This
* that if you have a write to on-chip I/O followed by a back-to-back
* is not a problem in general, but we do have to be slightly more
* read or write, the first write will happen twice. OR...if it's
* careful because I/O writes are no longer automatically flushed out
* not a back-to-back transaction, the read or write will generate
* of the write buffer.
* incorrect data.
*
* The official work around for this is to set the on-chip I/O regions
* as XCB=101 and then force a read-back from the register.
*
*
* In cases where we want to make sure that a write has been flushed
* out of the write buffer before we proceed, for example when masking
* a device interrupt before re-enabling IRQs in CPSR, we can use this
* function, ixp2000_reg_wrb, which performs a write, a readback, and
* issues a dummy instruction dependent on the value of the readback
* (mov rX, rX) to make sure that the readback has completed before we
* continue.
*/
*/
#if defined(CONFIG_ARCH_ENP2611) || defined(CONFIG_ARCH_IXDP2400) || defined(CONFIG_ARCH_IXDP2401)
static
inline
void
ixp2000_reg_wrb
(
volatile
void
*
reg
,
unsigned
long
val
)
#include <asm/system.h>
/* Pickup local_irq_ functions */
static
inline
void
ixp2000_reg_write
(
volatile
void
*
reg
,
unsigned
long
val
)
{
{
unsigned
long
dummy
;
unsigned
long
dummy
;
unsigned
long
flags
;
local_irq_save
(
flags
);
*
((
volatile
unsigned
long
*
)
reg
)
=
val
;
*
((
volatile
unsigned
long
*
)
reg
)
=
val
;
barrier
();
dummy
=
*
((
volatile
unsigned
long
*
)
reg
);
dummy
=
*
((
volatile
unsigned
long
*
)
reg
);
local_irq_restore
(
flags
);
__asm__
__volatile__
(
"mov %0, %0"
:
"+r"
(
dummy
));
}
#else
static
inline
void
ixp2000_reg_write
(
volatile
void
*
reg
,
unsigned
long
val
)
{
*
((
volatile
unsigned
long
*
)
reg
)
=
val
;
}
}
#endif
/* IXDP2400 || IXDP2401 */
#define ixp2000_reg_read(reg) (*((volatile unsigned long *)reg))
/*
/*
* Boards may multiplex different devices on the 2nd channel of
* Boards may multiplex different devices on the 2nd channel of
...
...
include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
View file @
be15cd72
...
@@ -36,11 +36,11 @@
...
@@ -36,11 +36,11 @@
*
*
* 0x6000000 0x00004000 ioremap'd QMgr
* 0x6000000 0x00004000 ioremap'd QMgr
*
*
* 0xC0000000 0x00001000 0xffbf
e000 PCI CFG
* 0xC0000000 0x00001000 0xffbf
f000 PCI CFG
*
*
* 0xC4000000 0x00001000 0xffbf
d000 EXP CFG
* 0xC4000000 0x00001000 0xffbf
e000 EXP CFG
*
*
* 0xC8000000 0x000
0C000 0xffbf2
000 On-Chip Peripherals
* 0xC8000000 0x000
13000 0xffbeb
000 On-Chip Peripherals
*/
*/
/*
/*
...
@@ -52,22 +52,22 @@
...
@@ -52,22 +52,22 @@
* Expansion BUS Configuration registers
* Expansion BUS Configuration registers
*/
*/
#define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000)
#define IXP4XX_EXP_CFG_BASE_PHYS (0xC4000000)
#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBF
D
000)
#define IXP4XX_EXP_CFG_BASE_VIRT (0xFFBF
E
000)
#define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000)
#define IXP4XX_EXP_CFG_REGION_SIZE (0x00001000)
/*
/*
* PCI Config registers
* PCI Config registers
*/
*/
#define IXP4XX_PCI_CFG_BASE_PHYS (0xC0000000)
#define IXP4XX_PCI_CFG_BASE_PHYS (0xC0000000)
#define IXP4XX_PCI_CFG_BASE_VIRT (0xFFBF
E
000)
#define IXP4XX_PCI_CFG_BASE_VIRT (0xFFBF
F
000)
#define IXP4XX_PCI_CFG_REGION_SIZE (0x00001000)
#define IXP4XX_PCI_CFG_REGION_SIZE (0x00001000)
/*
/*
* Peripheral space
* Peripheral space
*/
*/
#define IXP4XX_PERIPHERAL_BASE_PHYS (0xC8000000)
#define IXP4XX_PERIPHERAL_BASE_PHYS (0xC8000000)
#define IXP4XX_PERIPHERAL_BASE_VIRT (0xFFB
F2
000)
#define IXP4XX_PERIPHERAL_BASE_VIRT (0xFFB
EB
000)
#define IXP4XX_PERIPHERAL_REGION_SIZE (0x000
0C
000)
#define IXP4XX_PERIPHERAL_REGION_SIZE (0x000
13
000)
/*
/*
* Debug UART
* Debug UART
...
@@ -121,9 +121,21 @@
...
@@ -121,9 +121,21 @@
#define IXP4XX_INTC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x3000)
#define IXP4XX_INTC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x3000)
#define IXP4XX_GPIO_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x4000)
#define IXP4XX_GPIO_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x4000)
#define IXP4XX_TIMER_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x5000)
#define IXP4XX_TIMER_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x5000)
#define IXP4XX_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
#define IXP4XX_NPEA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x6000)
#define IXP4XX_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
#define IXP4XX_NPEB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x7000)
#define IXP4XX_NPEC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x8000)
#define IXP4XX_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
#define IXP4XX_EthC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
#define IXP4XX_USB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xB000)
#define IXP4XX_USB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xB000)
/* ixp46X only */
#define IXP4XX_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xC000)
#define IXP4XX_EthB1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xD000)
#define IXP4XX_EthB2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xE000)
#define IXP4XX_EthB3_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xF000)
#define IXP4XX_TIMESYNC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x10000)
#define IXP4XX_I2C_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x11000)
#define IXP4XX_SSP_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x12000)
#define IXP4XX_UART1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x0000)
#define IXP4XX_UART1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x0000)
#define IXP4XX_UART2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x1000)
#define IXP4XX_UART2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x1000)
...
@@ -131,9 +143,20 @@
...
@@ -131,9 +143,20 @@
#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)
#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)
#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)
#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)
#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)
#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)
#define IXP4XX_EthA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000)
#define IXP4XX_NPEA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x6000)
#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000)
#define IXP4XX_NPEB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x7000)
#define IXP4XX_NPEC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x8000)
#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000)
#define IXP4XX_EthC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000)
#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000)
#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000)
/* ixp46X only */
#define IXP4XX_EthA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xC000)
#define IXP4XX_EthB1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xD000)
#define IXP4XX_EthB2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xE000)
#define IXP4XX_EthB3_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xF000)
#define IXP4XX_TIMESYNC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x10000)
#define IXP4XX_I2C_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x11000)
#define IXP4XX_SSP_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x12000)
/*
/*
* Constants to make it easy to access Interrupt Controller registers
* Constants to make it easy to access Interrupt Controller registers
...
...
include/asm-arm/arch-ixp4xx/memory.h
View file @
be15cd72
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
...
...
include/asm-arm/arch-l7200/memory.h
View file @
be15cd72
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
/*
/*
* Physical DRAM offset on the L7200 SDB.
* Physical DRAM offset on the L7200 SDB.
*/
*/
#define PHYS_OFFSET
(0xf0000000UL
)
#define PHYS_OFFSET
UL(0xf0000000
)
#define __virt_to_bus(x) __virt_to_phys(x)
#define __virt_to_bus(x) __virt_to_phys(x)
#define __bus_to_virt(x) __phys_to_virt(x)
#define __bus_to_virt(x) __phys_to_virt(x)
...
...
include/asm-arm/arch-lh7a40x/memory.h
View file @
be15cd72
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0xc0000000UL
)
#define PHYS_OFFSET
UL(0xc0000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-omap/memory.h
View file @
be15cd72
...
@@ -37,9 +37,9 @@
...
@@ -37,9 +37,9 @@
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#if defined(CONFIG_ARCH_OMAP1)
#if defined(CONFIG_ARCH_OMAP1)
#define PHYS_OFFSET
(0x10000000UL
)
#define PHYS_OFFSET
UL(0x10000000
)
#elif defined(CONFIG_ARCH_OMAP2)
#elif defined(CONFIG_ARCH_OMAP2)
#define PHYS_OFFSET
(0x80000000UL
)
#define PHYS_OFFSET
UL(0x80000000
)
#endif
#endif
/*
/*
...
@@ -66,7 +66,7 @@
...
@@ -66,7 +66,7 @@
/*
/*
* OMAP-1510 Local Bus address offset
* OMAP-1510 Local Bus address offset
*/
*/
#define OMAP1510_LB_OFFSET
(0x30000000UL
)
#define OMAP1510_LB_OFFSET
UL(0x30000000
)
#define virt_to_lbus(x) ((x) - PAGE_OFFSET + OMAP1510_LB_OFFSET)
#define virt_to_lbus(x) ((x) - PAGE_OFFSET + OMAP1510_LB_OFFSET)
#define lbus_to_virt(x) ((x) - OMAP1510_LB_OFFSET + PAGE_OFFSET)
#define lbus_to_virt(x) ((x) - OMAP1510_LB_OFFSET + PAGE_OFFSET)
...
...
include/asm-arm/arch-pxa/memory.h
View file @
be15cd72
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0xa0000000UL
)
#define PHYS_OFFSET
UL(0xa0000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/arch-rpc/memory.h
View file @
be15cd72
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x10000000UL
)
#define PHYS_OFFSET
UL(0x10000000
)
/*
/*
* These are exactly the same on the RiscPC as the
* These are exactly the same on the RiscPC as the
...
...
include/asm-arm/arch-s3c2410/memory.h
View file @
be15cd72
...
@@ -28,9 +28,9 @@
...
@@ -28,9 +28,9 @@
* and at 0x0C000000 for S3C2400
* and at 0x0C000000 for S3C2400
*/
*/
#ifdef CONFIG_CPU_S3C2400
#ifdef CONFIG_CPU_S3C2400
#define PHYS_OFFSET
(0x0C000000UL
)
#define PHYS_OFFSET
UL(0x0C000000
)
#else
#else
#define PHYS_OFFSET
(0x30000000UL
)
#define PHYS_OFFSET
UL(0x30000000
)
#endif
#endif
/*
/*
...
...
include/asm-arm/arch-sa1100/memory.h
View file @
be15cd72
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
/*
/*
* Physical DRAM offset is 0xc0000000 on the SA1100
* Physical DRAM offset is 0xc0000000 on the SA1100
*/
*/
#define PHYS_OFFSET
(0xc0000000UL
)
#define PHYS_OFFSET
UL(0xc0000000
)
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
...
...
include/asm-arm/arch-shark/memory.h
View file @
be15cd72
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x08000000UL
)
#define PHYS_OFFSET
UL(0x08000000
)
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
...
...
include/asm-arm/arch-versatile/memory.h
View file @
be15cd72
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
/*
/*
* Physical DRAM offset.
* Physical DRAM offset.
*/
*/
#define PHYS_OFFSET
(0x00000000UL
)
#define PHYS_OFFSET
UL(0x00000000
)
/*
/*
* Virtual view <-> DMA view memory address translations
* Virtual view <-> DMA view memory address translations
...
...
include/asm-arm/mach/arch.h
View file @
be15cd72
...
@@ -50,6 +50,7 @@ struct machine_desc {
...
@@ -50,6 +50,7 @@ struct machine_desc {
*/
*/
#define MACHINE_START(_type,_name) \
#define MACHINE_START(_type,_name) \
static const struct machine_desc __mach_desc_##_type \
static const struct machine_desc __mach_desc_##_type \
__attribute_used__ \
__attribute__((__section__(".arch.info.init"))) = { \
__attribute__((__section__(".arch.info.init"))) = { \
.nr = MACH_TYPE_##_type, \
.nr = MACH_TYPE_##_type, \
.name = _name,
.name = _name,
...
...
include/asm-arm/mach/flash.h
View file @
be15cd72
...
@@ -14,6 +14,7 @@ struct mtd_partition;
...
@@ -14,6 +14,7 @@ struct mtd_partition;
/*
/*
* map_name: the map probe function name
* map_name: the map probe function name
* name: flash device name (eg, as used with mtdparts=)
* width: width of mapped device
* width: width of mapped device
* init: method called at driver/device initialisation
* init: method called at driver/device initialisation
* exit: method called at driver/device removal
* exit: method called at driver/device removal
...
@@ -23,6 +24,7 @@ struct mtd_partition;
...
@@ -23,6 +24,7 @@ struct mtd_partition;
*/
*/
struct
flash_platform_data
{
struct
flash_platform_data
{
const
char
*
map_name
;
const
char
*
map_name
;
const
char
*
name
;
unsigned
int
width
;
unsigned
int
width
;
int
(
*
init
)(
void
);
int
(
*
init
)(
void
);
void
(
*
exit
)(
void
);
void
(
*
exit
)(
void
);
...
...
include/asm-arm/mach/map.h
View file @
be15cd72
...
@@ -27,8 +27,8 @@ struct meminfo;
...
@@ -27,8 +27,8 @@ struct meminfo;
#define MT_ROM 6
#define MT_ROM 6
#define MT_IXP2000_DEVICE 7
#define MT_IXP2000_DEVICE 7
#define __phys_to_pfn(paddr) (
paddr
>> PAGE_SHIFT)
#define __phys_to_pfn(paddr) (
(paddr)
>> PAGE_SHIFT)
#define __pfn_to_phys(pfn) (
pfn
<< PAGE_SHIFT)
#define __pfn_to_phys(pfn) (
(pfn)
<< PAGE_SHIFT)
extern
void
create_memmap_holes
(
struct
meminfo
*
);
extern
void
create_memmap_holes
(
struct
meminfo
*
);
extern
void
memtable_init
(
struct
meminfo
*
);
extern
void
memtable_init
(
struct
meminfo
*
);
...
...
include/asm-arm/memory.h
View file @
be15cd72
...
@@ -12,6 +12,16 @@
...
@@ -12,6 +12,16 @@
#ifndef __ASM_ARM_MEMORY_H
#ifndef __ASM_ARM_MEMORY_H
#define __ASM_ARM_MEMORY_H
#define __ASM_ARM_MEMORY_H
/*
* Allow for constants defined here to be used from assembly code
* by prepending the UL suffix only with actual C code compilation.
*/
#ifndef __ASSEMBLY__
#define UL(x) (x##UL)
#else
#define UL(x) (x)
#endif
#include <linux/config.h>
#include <linux/config.h>
#include <linux/compiler.h>
#include <linux/compiler.h>
#include <asm/arch/memory.h>
#include <asm/arch/memory.h>
...
@@ -21,20 +31,20 @@
...
@@ -21,20 +31,20 @@
* TASK_SIZE - the maximum size of a user space task.
* TASK_SIZE - the maximum size of a user space task.
* TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
* TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
*/
*/
#define TASK_SIZE
(0xbf000000UL
)
#define TASK_SIZE
UL(0xbf000000
)
#define TASK_UNMAPPED_BASE
(0x40000000UL
)
#define TASK_UNMAPPED_BASE
UL(0x40000000
)
#endif
#endif
/*
/*
* The maximum size of a 26-bit user space task.
* The maximum size of a 26-bit user space task.
*/
*/
#define TASK_SIZE_26
(0x04000000UL
)
#define TASK_SIZE_26
UL(0x04000000
)
/*
/*
* Page offset: 3GB
* Page offset: 3GB
*/
*/
#ifndef PAGE_OFFSET
#ifndef PAGE_OFFSET
#define PAGE_OFFSET
(0xc0000000UL
)
#define PAGE_OFFSET
UL(0xc0000000
)
#endif
#endif
/*
/*
...
@@ -58,6 +68,13 @@
...
@@ -58,6 +68,13 @@
#error Top of user space clashes with start of module space
#error Top of user space clashes with start of module space
#endif
#endif
/*
* The XIP kernel gets mapped at the bottom of the module vm area.
* Since we use sections to map it, this macro replaces the physical address
* with its virtual address while keeping offset from the base section.
*/
#define XIP_VIRT_ADDR(physaddr) (MODULE_START + ((physaddr) & 0x000fffff))
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
/*
/*
...
...
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