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
ed97349f
Commit
ed97349f
authored
Jun 01, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
d95e31c5
04fc5144
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
93 additions
and
83 deletions
+93
-83
arch/arm/kernel/irq.c
arch/arm/kernel/irq.c
+1
-1
arch/arm/mach-integrator/core.c
arch/arm/mach-integrator/core.c
+1
-1
arch/arm/mach-pxa/pxa25x.c
arch/arm/mach-pxa/pxa25x.c
+12
-3
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa27x.c
+50
-52
arch/arm/mm/init.c
arch/arm/mm/init.c
+19
-17
drivers/pcmcia/pxa2xx_base.c
drivers/pcmcia/pxa2xx_base.c
+6
-6
drivers/video/pxafb.c
drivers/video/pxafb.c
+1
-1
include/asm-arm/arch-pxa/hardware.h
include/asm-arm/arch-pxa/hardware.h
+3
-2
No files found.
arch/arm/kernel/irq.c
View file @
ed97349f
...
...
@@ -447,7 +447,7 @@ static void do_pending_irqs(struct pt_regs *regs)
* come via this function. Instead, they should provide their
* own 'handler'
*/
asmlinkage
void
asm_do_IRQ
(
int
irq
,
struct
pt_regs
*
regs
)
asmlinkage
void
asm_do_IRQ
(
unsigned
int
irq
,
struct
pt_regs
*
regs
)
{
struct
irqdesc
*
desc
=
irq_desc
+
irq
;
...
...
arch/arm/mach-integrator/core.c
View file @
ed97349f
...
...
@@ -108,7 +108,7 @@ arch_initcall(integrator_init);
#define CM_CTRL IO_ADDRESS(INTEGRATOR_HDR_BASE) + INTEGRATOR_HDR_CTRL_OFFSET
static
spinlock_t
cm_lock
;
static
spinlock_t
cm_lock
=
SPIN_LOCK_UNLOCKED
;
/**
* cm_control - update the CM_CTRL register.
...
...
arch/arm/mach-pxa/pxa25x.c
View file @
ed97349f
...
...
@@ -83,12 +83,21 @@ unsigned int get_clk_frequency_khz(int info)
EXPORT_SYMBOL
(
get_clk_frequency_khz
);
/*
* Return the current
lclk
requency in units of 10kHz
* Return the current
memory clock f
requency in units of 10kHz
*/
unsigned
int
get_
l
clk_frequency_10khz
(
void
)
unsigned
int
get_
mem
clk_frequency_10khz
(
void
)
{
return
L_clk_mult
[(
CCCR
>>
0
)
&
0x1f
]
*
BASE_CLK
/
10000
;
}
EXPORT_SYMBOL
(
get_
l
clk_frequency_10khz
);
EXPORT_SYMBOL
(
get_
mem
clk_frequency_10khz
);
/*
* Return the current LCD clock frequency in units of 10kHz
*/
unsigned
int
get_lcdclk_frequency_10khz
(
void
)
{
return
get_memclk_frequency_10khz
();
}
EXPORT_SYMBOL
(
get_lcdclk_frequency_10khz
);
arch/arm/mach-pxa/pxa27x.c
View file @
ed97349f
...
...
@@ -21,100 +21,98 @@
#include "generic.h"
/* Crystal clock
: 13-MHZ
*/
/* Crystal clock
: 13MHz
*/
#define BASE_CLK 13000000
/*
* Get the clock frequency as reflected by CCSR and the turbo flag.
* We assume these values have been applied via a fcs.
* If info is not 0 we also display the current settings.
*
* For more details, refer to Bulverde Manual, section 3.8.2.1
*/
unsigned
int
get_clk_frequency_khz
(
int
info
)
{
unsigned
long
ccsr
,
turbo
,
b
,
ht
;
unsigned
int
l
,
L
,
m
,
M
,
n2
,
N
,
S
,
cccra
;
unsigned
long
ccsr
,
clkcfg
;
unsigned
int
l
,
L
,
m
,
M
,
n2
,
N
,
S
;
int
cccr_a
,
t
,
ht
,
b
;
ccsr
=
CCSR
;
cccr
a
=
CCCR
&
(
0x
1
<<
25
);
cccr
_a
=
CCCR
&
(
1
<<
25
);
/* Read clkcfg register: it has turbo, b, half-turbo (and f) */
asm
(
"mrc
\t
p14, 0, %0, c6, c0, 0"
:
"=r"
(
turbo
)
);
b
=
(
turbo
&
(
0x1
<<
3
));
ht
=
(
turbo
&
(
0x1
<<
2
));
asm
(
"mrc
\t
p14, 0, %0, c6, c0, 0"
:
"=r"
(
clkcfg
)
);
t
=
clkcfg
&
(
1
<<
1
);
ht
=
clkcfg
&
(
1
<<
2
);
b
=
clkcfg
&
(
1
<<
3
);
l
=
ccsr
&
0x1f
;
n2
=
(
ccsr
>>
7
)
&
0xf
;
if
(
l
==
31
)
{
/* The calculation from the Yellow Book is incorrect:
it says M=4 for L=21-30 (which is easy to calculate
by subtracting 1 and then dividing by 10, but not
with 31, so we'll do it manually */
m
=
1
<<
2
;
}
else
{
m
=
1
<<
((
l
-
1
)
/
10
);
}
m
=
(
l
<=
10
)
?
1
:
(
l
<=
20
)
?
2
:
4
;
L
=
l
*
BASE_CLK
;
N
=
(
n2
*
L
)
/
2
;
S
=
(
b
)
?
L
:
(
L
/
2
);
if
(
cccra
==
0
)
M
=
L
/
m
;
else
M
=
(
b
)
?
L
:
(
L
/
2
);
L
=
l
*
BASE_CLK
;
N
=
(
L
*
n2
)
/
2
;
M
=
(
!
cccr_a
)
?
(
L
/
m
)
:
((
b
)
?
L
:
(
L
/
2
));
S
=
(
b
)
?
L
:
(
L
/
2
);
if
(
info
)
{
printk
(
KERN_INFO
"Run Mode clock: %d.%02dMHz (*%d)
\n
"
,
L
/
1000000
,
(
L
%
1000000
)
/
10000
,
l
);
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (/%d)
\n
"
,
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
printk
(
KERN_INFO
"Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)
\n
"
,
N
/
1000000
,
(
N
%
1000000
)
/
10000
,
n2
/
2
,
(
n2
%
2
)
*
5
,
(
turbo
&
1
)
?
""
:
"in"
);
(
t
)
?
""
:
"in"
);
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (/%d)
\n
"
,
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
printk
(
KERN_INFO
"System bus clock: %d.%02dMHz
\n
"
,
S
/
1000000
,
(
S
%
1000000
)
/
10000
);
}
return
(
t
urbo
&
1
)
?
(
N
/
1000
)
:
(
L
/
1000
);
return
(
t
)
?
(
N
/
1000
)
:
(
L
/
1000
);
}
/*
* Return the current mem clock frequency in units of 10kHz as
* reflected by CCCR[A], B, and L
*/
unsigned
int
get_
l
clk_frequency_10khz
(
void
)
unsigned
int
get_
mem
clk_frequency_10khz
(
void
)
{
unsigned
long
ccsr
,
clkcfg
,
b
;
unsigned
int
l
,
L
,
m
,
M
,
cccra
;
unsigned
long
ccsr
,
clkcfg
;
unsigned
int
l
,
L
,
m
,
M
;
int
cccr_a
,
b
;
cccra
=
CCCR
&
(
0x1
<<
25
);
ccsr
=
CCSR
;
cccr_a
=
CCCR
&
(
1
<<
25
);
/* Read clkcfg register
to obtain b
*/
/* Read clkcfg register
: it has turbo, b, half-turbo (and f)
*/
asm
(
"mrc
\t
p14, 0, %0, c6, c0, 0"
:
"=r"
(
clkcfg
)
);
b
=
(
clkcfg
&
(
0x1
<<
3
)
);
b
=
clkcfg
&
(
1
<<
3
);
ccsr
=
CCSR
;
l
=
ccsr
&
0x1f
;
if
(
l
==
31
)
{
/* The calculation from the Yellow Book is incorrect:
it says M=4 for L=21-30 (which is easy to calculate
by subtracting 1 and then dividing by 10, but not
with 31, so we'll do it manually */
m
=
1
<<
2
;
}
else
{
m
=
1
<<
((
l
-
1
)
/
10
);
}
l
=
ccsr
&
0x1f
;
m
=
(
l
<=
10
)
?
1
:
(
l
<=
20
)
?
2
:
4
;
L
=
l
*
BASE_CLK
;
if
(
cccra
==
0
)
M
=
L
/
m
;
else
M
=
(
b
)
?
L
:
L
/
2
;
M
=
(
!
cccr_a
)
?
(
L
/
m
)
:
((
b
)
?
L
:
(
L
/
2
));
return
(
M
/
10000
);
}
EXPORT_SYMBOL
(
get_clk_frequency_khz
);
EXPORT_SYMBOL
(
get_lclk_frequency_10khz
);
/*
* Return the current LCD clock frequency in units of 10kHz as
*/
unsigned
int
get_lcdclk_frequency_10khz
(
void
)
{
unsigned
long
ccsr
;
unsigned
int
l
,
L
,
k
,
K
;
ccsr
=
CCSR
;
l
=
ccsr
&
0x1f
;
k
=
(
l
<=
7
)
?
1
:
(
l
<=
16
)
?
2
:
4
;
L
=
l
*
BASE_CLK
;
K
=
L
/
k
;
return
(
K
/
10000
);
}
EXPORT_SYMBOL
(
get_clk_frequency_khz
);
EXPORT_SYMBOL
(
get_memclk_frequency_10khz
);
EXPORT_SYMBOL
(
get_lcdclk_frequency_10khz
);
arch/arm/mm/init.c
View file @
ed97349f
...
...
@@ -281,6 +281,7 @@ static int __init check_initrd(struct meminfo *mi)
static
__init
void
reserve_node_zero
(
unsigned
int
bootmap_pfn
,
unsigned
int
bootmap_pages
)
{
pg_data_t
*
pgdat
=
NODE_DATA
(
0
);
unsigned
long
res_size
=
0
;
/*
* Register the kernel text and data with bootmem.
...
...
@@ -304,31 +305,32 @@ static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int boot
bootmap_pages
<<
PAGE_SHIFT
);
/*
* Hmm... This should go elsewhere, but we really really
*
need to stop things allocating the low memory; we need
*
a better implementation of GFP_DMA which does not assum
e
*
that DMA-able
memory starts at zero.
* Hmm... This should go elsewhere, but we really really
need to
*
stop things allocating the low memory; ideally we need a better
*
implementation of GFP_DMA which does not assume that DMA-abl
e
* memory starts at zero.
*/
if
(
machine_is_integrator
())
reserve_bootmem_node
(
pgdat
,
0
,
__pa
(
swapper_pg_dir
));
if
(
machine_is_integrator
()
||
machine_is_cintegrator
())
res_size
=
__pa
(
swapper_pg_dir
)
-
PHYS_OFFSET
;
/*
* These should likewise go elsewhere. They pre-reserve
* the screen memory region at the start of main system
* memory.
* These should likewise go elsewhere. They pre-reserve the
* screen memory region at the start of main system memory.
*/
if
(
machine_is_archimedes
()
||
machine_is_a5k
())
reserve_bootmem_node
(
pgdat
,
0x02000000
,
0x00080000
);
if
(
machine_is_edb7211
())
res
erve_bootmem_node
(
pgdat
,
0xc0000000
,
0x00020000
)
;
res
_size
=
0x00020000
;
if
(
machine_is_p720t
())
reserve_bootmem_node
(
pgdat
,
PHYS_OFFSET
,
0x00014000
);
res_size
=
0x00014000
;
#ifdef CONFIG_SA1111
/*
* Because of the SA1111 DMA bug, we want to preserve
*
our
precious DMA-able memory...
* Because of the SA1111 DMA bug, we want to preserve
our
* precious DMA-able memory...
*/
res
erve_bootmem_node
(
pgdat
,
PHYS_OFFSET
,
__pa
(
swapper_pg_dir
)
-
PHYS_OFFSET
)
;
res
_size
=
__pa
(
swapper_pg_dir
)
-
PHYS_OFFSET
;
#endif
if
(
res_size
)
reserve_bootmem_node
(
pgdat
,
PHYS_OFFSET
,
res_size
);
}
/*
...
...
@@ -601,7 +603,7 @@ void __init mem_init(void)
void
free_initmem
(
void
)
{
if
(
!
machine_is_integrator
())
{
if
(
!
machine_is_integrator
()
&&
!
machine_is_cintegrator
()
)
{
free_area
((
unsigned
long
)(
&
__init_begin
),
(
unsigned
long
)(
&
__init_end
),
"init"
);
...
...
drivers/pcmcia/pxa2xx_base.c
View file @
ed97349f
...
...
@@ -113,24 +113,24 @@ static int pxa2xx_pcmcia_set_mcatt( int sock, int speed, int clock )
return
0
;
}
static
int
pxa2xx_pcmcia_set_mcxx
(
struct
soc_pcmcia_socket
*
skt
,
unsigned
int
l
clk
)
static
int
pxa2xx_pcmcia_set_mcxx
(
struct
soc_pcmcia_socket
*
skt
,
unsigned
int
clk
)
{
struct
soc_pcmcia_timing
timing
;
int
sock
=
skt
->
nr
;
soc_common_pcmcia_get_timing
(
skt
,
&
timing
);
pxa2xx_pcmcia_set_mcmem
(
sock
,
timing
.
mem
,
l
clk
);
pxa2xx_pcmcia_set_mcatt
(
sock
,
timing
.
attr
,
l
clk
);
pxa2xx_pcmcia_set_mcio
(
sock
,
timing
.
io
,
l
clk
);
pxa2xx_pcmcia_set_mcmem
(
sock
,
timing
.
mem
,
clk
);
pxa2xx_pcmcia_set_mcatt
(
sock
,
timing
.
attr
,
clk
);
pxa2xx_pcmcia_set_mcio
(
sock
,
timing
.
io
,
clk
);
return
0
;
}
static
int
pxa2xx_pcmcia_set_timing
(
struct
soc_pcmcia_socket
*
skt
)
{
unsigned
int
lclk
=
get_l
clk_frequency_10khz
();
return
pxa2xx_pcmcia_set_mcxx
(
skt
,
l
clk
);
unsigned
int
clk
=
get_mem
clk_frequency_10khz
();
return
pxa2xx_pcmcia_set_mcxx
(
skt
,
clk
);
}
int
pxa2xx_drv_pcmcia_probe
(
struct
device
*
dev
)
...
...
drivers/video/pxafb.c
View file @
ed97349f
...
...
@@ -432,7 +432,7 @@ static inline unsigned int get_pcd(unsigned int pixclock)
* (DPC) bit? or perhaps set it based on the various clock
* speeds */
pcd
=
(
unsigned
long
long
)
get_lc
lk_frequency_10khz
()
*
(
unsigned
long
long
)
pixclock
;
pcd
=
(
unsigned
long
long
)
get_lc
dclk_frequency_10khz
()
*
pixclock
;
pcd
/=
100000000
*
2
;
/* no need for this, since we should subtract 1 anyway. they cancel */
/* pcd += 1; */
/* make up for integer math truncations */
...
...
include/asm-arm/arch-pxa/hardware.h
View file @
ed97349f
...
...
@@ -83,9 +83,10 @@ typedef struct { volatile u32 offset[4096]; } __regbase;
extern
void
pxa_gpio_mode
(
int
gpio_mode
);
/*
* return current
lcl
k frequency in units of 10kHz
* return current
memory and LCD cloc
k frequency in units of 10kHz
*/
extern
unsigned
int
get_lclk_frequency_10khz
(
void
);
extern
unsigned
int
get_memclk_frequency_10khz
(
void
);
extern
unsigned
int
get_lcdclk_frequency_10khz
(
void
);
#endif
...
...
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