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
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
Hide 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
)
{
del_mtd_partitions
(
info
->
mtd
);
if
(
info
->
nr_parts
==
0
)
del_mtd_device
(
info
->
mtd
);
#ifdef CONFIG_MTD_PARTITIONS
else
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
...
@@ -115,25 +115,48 @@
...
@@ -115,25 +115,48 @@
/*
/*
* Peripheral Space Register Region Base Addresses
* Peripheral Space Register Region Base Addresses
*/
*/
#define IXP4XX_UART1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x0000)
#define IXP4XX_UART1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x0000)
#define IXP4XX_UART2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x1000)
#define IXP4XX_UART2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x1000)
#define IXP4XX_PMU_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x2000)
#define IXP4XX_PMU_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x2000)
#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_USB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xB000)
#define IXP4XX_NPEC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x8000)
#define IXP4XX_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
#define IXP4XX_UART1_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x0000)
#define IXP4XX_EthC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
#define IXP4XX_UART2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x1000)
#define IXP4XX_USB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xB000)
#define IXP4XX_PMU_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x2000)
/* ixp46X only */
#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)
#define IXP4XX_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xC000)
#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)
#define IXP4XX_EthB1_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xD000)
#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)
#define IXP4XX_EthB2_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xE000)
#define IXP4XX_EthA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x9000)
#define IXP4XX_EthB3_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xF000)
#define IXP4XX_EthB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xA000)
#define IXP4XX_TIMESYNC_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x10000)
#define IXP4XX_USB_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0xB000)
#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_UART2_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x1000)
#define IXP4XX_PMU_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x2000)
#define IXP4XX_INTC_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x3000)
#define IXP4XX_GPIO_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x4000)
#define IXP4XX_TIMER_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_VIRT + 0x5000)
#define IXP4XX_NPEA_BASE_VIRT (IXP4XX_PERIPHERAL_BASE_PHYS + 0x6000)
#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)
/* 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