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
0d377ebc
Commit
0d377ebc
authored
Oct 18, 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
31a37910
5995d15b
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
98 additions
and
58 deletions
+98
-58
arch/arm/kernel/io.c
arch/arm/kernel/io.c
+3
-3
arch/arm/mach-s3c2410/clock.c
arch/arm/mach-s3c2410/clock.c
+9
-3
arch/arm/mach-s3c2410/clock.h
arch/arm/mach-s3c2410/clock.h
+7
-0
arch/arm/mach-s3c2410/cpu.c
arch/arm/mach-s3c2410/cpu.c
+1
-1
arch/arm/mach-s3c2410/cpu.h
arch/arm/mach-s3c2410/cpu.h
+0
-1
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-h1940.c
+4
-3
arch/arm/mach-s3c2410/s3c2410.c
arch/arm/mach-s3c2410/s3c2410.c
+42
-18
arch/arm/mach-s3c2410/s3c2410.h
arch/arm/mach-s3c2410/s3c2410.h
+4
-0
arch/arm/mach-s3c2410/s3c2440.c
arch/arm/mach-s3c2410/s3c2440.c
+13
-17
arch/arm/mach-s3c2410/time.c
arch/arm/mach-s3c2410/time.c
+4
-3
include/asm-arm/arch-s3c2410/hardware.h
include/asm-arm/arch-s3c2410/hardware.h
+1
-5
include/asm-arm/arch-s3c2410/regs-gpio.h
include/asm-arm/arch-s3c2410/regs-gpio.h
+6
-1
include/asm-arm/io.h
include/asm-arm/io.h
+4
-3
No files found.
arch/arm/kernel/io.c
View file @
0d377ebc
...
...
@@ -7,7 +7,7 @@
* Copy data from IO memory space to "real" memory space.
* This needs to be optimized.
*/
void
_memcpy_fromio
(
void
*
to
,
unsigned
long
from
,
size_t
count
)
void
_memcpy_fromio
(
void
*
to
,
void
__iomem
*
from
,
size_t
count
)
{
unsigned
char
*
t
=
to
;
while
(
count
)
{
...
...
@@ -22,7 +22,7 @@ void _memcpy_fromio(void *to, unsigned long from, size_t count)
* Copy data from "real" memory space to IO memory space.
* This needs to be optimized.
*/
void
_memcpy_toio
(
unsigned
long
to
,
const
void
*
from
,
size_t
count
)
void
_memcpy_toio
(
void
__iomem
*
to
,
const
void
*
from
,
size_t
count
)
{
const
unsigned
char
*
f
=
from
;
while
(
count
)
{
...
...
@@ -37,7 +37,7 @@ void _memcpy_toio(unsigned long to, const void *from, size_t count)
* "memset" on IO memory space.
* This needs to be optimized.
*/
void
_memset_io
(
unsigned
long
dst
,
int
c
,
size_t
count
)
void
_memset_io
(
void
__iomem
*
dst
,
int
c
,
size_t
count
)
{
while
(
count
)
{
count
--
;
...
...
arch/arm/mach-s3c2410/clock.c
View file @
0d377ebc
...
...
@@ -46,6 +46,12 @@
#include "clock.h"
/* clock information */
unsigned
long
s3c24xx_xtal
=
12
*
1000
*
1000
;
/* default 12MHz */
unsigned
long
s3c24xx_fclk
;
unsigned
long
s3c24xx_hclk
;
unsigned
long
s3c24xx_pclk
;
static
LIST_HEAD
(
clocks
);
static
DECLARE_MUTEX
(
clocks_sem
);
...
...
@@ -277,9 +283,9 @@ static int __init s3c2410_init_clocks(void)
/* initialise the main system clocks */
clk_h
.
rate
=
s3c24
10
_hclk
;
clk_p
.
rate
=
s3c24
10
_pclk
;
clk_f
.
rate
=
s3c24
10
_fclk
;
clk_h
.
rate
=
s3c24
xx
_hclk
;
clk_p
.
rate
=
s3c24
xx
_pclk
;
clk_f
.
rate
=
s3c24
xx
_fclk
;
/* set the enabled clocks to a minimal (known) state */
__raw_writel
(
S3C2410_CLKCON_PWMT
|
S3C2410_CLKCON_UART0
|
S3C2410_CLKCON_UART1
|
S3C2410_CLKCON_UART2
|
S3C2410_CLKCON_GPIO
|
S3C2410_CLKCON_RTC
,
S3C2410_CLKCON
);
...
...
arch/arm/mach-s3c2410/clock.h
View file @
0d377ebc
...
...
@@ -18,3 +18,10 @@ struct clk {
unsigned
long
rate
;
unsigned
long
ctrlbit
;
};
/* processor clock settings, in Hz */
extern
unsigned
long
s3c24xx_xtal
;
extern
unsigned
long
s3c24xx_pclk
;
extern
unsigned
long
s3c24xx_hclk
;
extern
unsigned
long
s3c24xx_fclk
;
arch/arm/mach-s3c2410/cpu.c
View file @
0d377ebc
...
...
@@ -104,7 +104,7 @@ s3c_lookup_cpu(unsigned long idcode)
int
count
;
tab
=
cpu_ids
;
for
(
count
=
0
;
count
<
ARRAY_SIZE
(
cpu_ids
);
count
++
)
{
for
(
count
=
0
;
count
<
ARRAY_SIZE
(
cpu_ids
);
count
++
,
tab
++
)
{
if
((
idcode
&
tab
->
idmask
)
==
tab
->
idcode
)
return
tab
;
}
...
...
arch/arm/mach-s3c2410/cpu.h
View file @
0d377ebc
...
...
@@ -38,4 +38,3 @@ extern void s3c2440_map_io(struct map_desc *mach_desc, int size);
#endif
extern
void
s3c24xx_init_io
(
struct
map_desc
*
mach_desc
,
int
size
);
arch/arm/mach-s3c2410/mach-h1940.c
View file @
0d377ebc
...
...
@@ -41,6 +41,7 @@
#include <asm/arch/regs-serial.h>
#include "s3c2410.h"
#include "clock.h"
#include "devs.h"
#include "cpu.h"
...
...
@@ -56,7 +57,7 @@ static struct s3c2410_uartcfg h1940_uartcfgs[] = {
[
0
]
=
{
.
hwport
=
0
,
.
flags
=
0
,
.
clock
=
&
s3c24
10
_pclk
,
.
clock
=
&
s3c24
xx
_pclk
,
.
ucon
=
0x3c5
,
.
ulcon
=
0x03
,
.
ufcon
=
0x51
,
...
...
@@ -64,7 +65,7 @@ static struct s3c2410_uartcfg h1940_uartcfgs[] = {
[
1
]
=
{
.
hwport
=
1
,
.
flags
=
0
,
.
clock
=
&
s3c24
10
_pclk
,
.
clock
=
&
s3c24
xx
_pclk
,
.
ucon
=
0x245
,
.
ulcon
=
0x03
,
.
ufcon
=
0x00
,
...
...
@@ -73,7 +74,7 @@ static struct s3c2410_uartcfg h1940_uartcfgs[] = {
[
2
]
=
{
.
hwport
=
2
,
.
flags
=
0
,
.
clock
=
&
s3c24
10
_pclk
,
.
clock
=
&
s3c24
xx
_pclk
,
.
ucon
=
0x3c5
,
.
ulcon
=
0x43
,
.
ufcon
=
0x51
,
...
...
arch/arm/mach-s3c2410/s3c2410.c
View file @
0d377ebc
...
...
@@ -15,6 +15,7 @@
* 05-Sep-2003 BJD Moved to kernel v2.6
* 18-Jan-2004 BJD Added serial port configuration
* 21-Aug-2004 BJD Added new struct s3c2410_board handler
* 28-Sep-2004 BJD Updates for new serial port bits
*/
#include <linux/kernel.h>
...
...
@@ -38,6 +39,7 @@
#include "s3c2410.h"
#include "cpu.h"
#include "clock.h"
int
s3c2410_clock_tick_rate
=
12
*
1000
*
1000
;
/* current timers at 12MHz */
...
...
@@ -45,11 +47,7 @@ int s3c2410_clock_tick_rate = 12*1000*1000; /* current timers at 12MHz */
struct
s3c2410_uartcfg
*
s3c2410_uartcfgs
;
/* clock info */
unsigned
long
s3c2410_fclk
;
unsigned
long
s3c2410_hclk
;
unsigned
long
s3c2410_pclk
;
/* Initial IO mappings */
static
struct
map_desc
s3c2410_iodesc
[]
__initdata
=
{
IODESC_ENT
(
USBHOST
),
...
...
@@ -131,6 +129,39 @@ static struct platform_device *uart_devices[] __initdata = {
&
s3c_uart2
};
/* store our uart devices for the serial driver console */
struct
platform_device
*
s3c2410_uart_devices
[
3
];
static
int
s3c2410_uart_count
=
0
;
/* uart registration process */
void
__init
s3c2410_init_uarts
(
struct
s3c2410_uartcfg
*
cfg
,
int
no
)
{
struct
platform_device
*
platdev
;
int
uart
;
s3c2410_uartcfgs
=
cfg
;
/* compatibility */
for
(
uart
=
0
;
uart
<
no
;
uart
++
,
cfg
++
)
{
platdev
=
uart_devices
[
cfg
->
hwport
];
s3c2410_uart_devices
[
uart
]
=
platdev
;
platdev
->
dev
.
platform_data
=
cfg
;
}
s3c2410_uart_count
=
uart
;
}
/* s3c2410_map_io
*
* register the standard cpu IO areas, and any passed in from the
* machine specific initialisation.
*
* this function also sets the initial clock frequencies from the
* settings passed in
*/
void
__init
s3c2410_map_io
(
struct
map_desc
*
mach_desc
,
int
mach_size
)
{
unsigned
long
tmp
;
...
...
@@ -140,26 +171,24 @@ void __init s3c2410_map_io(struct map_desc *mach_desc, int mach_size)
iotable_init
(
s3c2410_iodesc
,
ARRAY_SIZE
(
s3c2410_iodesc
));
iotable_init
(
mach_desc
,
mach_size
);
printk
(
"machine_initted %p,%d
\n
"
,
mach_desc
,
mach_size
);
/* now we've got our machine bits initialised, work out what
* clocks we've got */
s3c2410_fclk
=
s3c2410_get_pll
(
__raw_readl
(
S3C2410_MPLLCON
),
12
*
MHZ
);
s3c24xx_fclk
=
s3c2410_get_pll
(
__raw_readl
(
S3C2410_MPLLCON
),
s3c24xx_xtal
);
tmp
=
__raw_readl
(
S3C2410_CLKDIVN
);
//printk("tmp=%08x, fclk=%d\n", tmp, s3c2410_fclk);
/* work out clock scalings */
s3c24
10_hclk
=
s3c2410
_fclk
/
((
tmp
&
S3C2410_CLKDIVN_HDIVN
)
?
2
:
1
);
s3c24
10_pclk
=
s3c2410
_hclk
/
((
tmp
&
S3C2410_CLKDIVN_PDIVN
)
?
2
:
1
);
s3c24
xx_hclk
=
s3c24xx
_fclk
/
((
tmp
&
S3C2410_CLKDIVN_HDIVN
)
?
2
:
1
);
s3c24
xx_pclk
=
s3c24xx
_hclk
/
((
tmp
&
S3C2410_CLKDIVN_PDIVN
)
?
2
:
1
);
/* print brieft summary of clocks, etc */
printk
(
"S3C2410: core %ld.%03ld MHz, memory %ld.%03ld MHz, peripheral %ld.%03ld MHz
\n
"
,
print_mhz
(
s3c24
10_fclk
),
print_mhz
(
s3c2410
_hclk
),
print_mhz
(
s3c24
10
_pclk
));
print_mhz
(
s3c24
xx_fclk
),
print_mhz
(
s3c24xx
_hclk
),
print_mhz
(
s3c24
xx
_pclk
));
}
static
struct
s3c2410_board
*
board
;
...
...
@@ -169,11 +198,6 @@ void s3c2410_set_board(struct s3c2410_board *b)
board
=
b
;
}
void
s3c2410_init_uarts
(
struct
s3c2410_uartcfg
*
cfg
,
int
no
)
{
s3c2410_uartcfgs
=
cfg
;
}
int
__init
s3c2410_init
(
void
)
{
int
ret
;
...
...
arch/arm/mach-s3c2410/s3c2410.h
View file @
0d377ebc
...
...
@@ -15,8 +15,12 @@
* 04-Sep-2004 BJD Added s3c2410_init_uarts() call
*/
struct
s3c2410_uartcfg
;
extern
void
s3c2410_map_io
(
struct
map_desc
*
,
int
count
);
extern
void
s3c2410_init_uarts
(
struct
s3c2410_uartcfg
*
,
int
no
);
extern
void
s3c2410_init_irq
(
void
);
extern
void
s3c2410_init_time
(
void
);
...
...
arch/arm/mach-s3c2410/s3c2440.c
View file @
0d377ebc
...
...
@@ -10,7 +10,8 @@
* published by the Free Software Foundation.
*
* Modifications:
* 24-Aug-2004 BJD Start of s3c2440 support
* 24-Aug-2004 BJD Start of s3c2440 support
* 12-Oct-2004 BJD Moved clock info out to clock.c
*/
#include <linux/kernel.h>
...
...
@@ -33,19 +34,14 @@
#include <asm/arch/regs-serial.h>
#include "s3c2440.h"
#include "clock.h"
#include "cpu.h"
int
s3c2440_clock_tick_rate
=
12
*
1000
*
1000
;
/* current timers at 12MHz */
/* clock info */
unsigned
long
s3c2440_baseclk
=
12
*
1000
*
1000
;
/* assume base is 12MHz */
unsigned
long
s3c2440_hdiv
;
unsigned
long
s3c2440_fclk
;
unsigned
long
s3c2440_hclk
;
unsigned
long
s3c2440_pclk
;
static
struct
map_desc
s3c2440_iodesc
[]
__initdata
=
{
IODESC_ENT
(
USBHOST
),
IODESC_ENT
(
CLKPWR
),
...
...
@@ -126,7 +122,7 @@ static struct platform_device *uart_devices[] __initdata = {
void
__init
s3c2440_map_io
(
struct
map_desc
*
mach_desc
,
int
size
)
{
unsigned
long
tmp
;
unsigned
long
clkdiv
;
unsigned
long
camdiv
;
/* register our io-tables */
...
...
@@ -137,15 +133,15 @@ void __init s3c2440_map_io(struct map_desc *mach_desc, int size)
/* now we've got our machine bits initialised, work out what
* clocks we've got */
s3c24
40
_fclk
=
s3c2410_get_pll
(
__raw_readl
(
S3C2410_MPLLCON
),
s3c24
40_baseclk
)
;
s3c24
xx
_fclk
=
s3c2410_get_pll
(
__raw_readl
(
S3C2410_MPLLCON
),
s3c24
xx_xtal
)
*
2
;
tmp
=
__raw_readl
(
S3C2410_CLKDIVN
);
clkdiv
=
__raw_readl
(
S3C2410_CLKDIVN
);
camdiv
=
__raw_readl
(
S3C2440_CAMDIVN
);
/* work out clock scalings */
switch
(
tmp
&
S3C2440_CLKDIVN_HDIVN_MASK
)
{
switch
(
clkdiv
&
S3C2440_CLKDIVN_HDIVN_MASK
)
{
case
S3C2440_CLKDIVN_HDIVN_1
:
s3c2440_hdiv
=
1
;
break
;
...
...
@@ -159,18 +155,18 @@ void __init s3c2440_map_io(struct map_desc *mach_desc, int size)
break
;
case
S3C2440_CLKDIVN_HDIVN_3_6
:
s3c2440_hdiv
=
(
camdiv
&
S3C2440_CAMDIVN_HCLK
4
_HALF
)
?
6
:
3
;
s3c2440_hdiv
=
(
camdiv
&
S3C2440_CAMDIVN_HCLK
3
_HALF
)
?
6
:
3
;
break
;
}
s3c24
40_hclk
=
s3c2440
_fclk
/
s3c2440_hdiv
;
s3c24
40_pclk
=
s3c2440_hclk
/
((
tmp
&
S3C2440_CLKDIVN_PDIVN
)
?
2
:
1
);
s3c24
xx_hclk
=
s3c24xx
_fclk
/
s3c2440_hdiv
;
s3c24
xx_pclk
=
s3c24xx_hclk
/
((
clkdiv
&
S3C2440_CLKDIVN_PDIVN
)
?
2
:
1
);
/* print brieft summary of clocks, etc */
printk
(
"S3C2440: core %ld.%03ld MHz, memory %ld.%03ld MHz, peripheral %ld.%03ld MHz
\n
"
,
print_mhz
(
s3c24
40_fclk
),
print_mhz
(
s3c2440
_hclk
),
print_mhz
(
s3c24
40
_pclk
));
print_mhz
(
s3c24
xx_fclk
),
print_mhz
(
s3c24xx
_hclk
),
print_mhz
(
s3c24
xx
_pclk
));
}
...
...
arch/arm/mach-s3c2410/time.c
View file @
0d377ebc
...
...
@@ -34,10 +34,11 @@
#include <asm/arch/regs-irq.h>
#include <asm/mach/time.h>
#include "clock.h"
static
unsigned
long
timer_startval
;
static
unsigned
long
timer_ticks_usec
;
/* with an 12MHz clock, we get 12 ticks per-usec
*/
...
...
@@ -139,7 +140,7 @@ void __init s3c2410_init_time (void)
*/
if
(
machine_is_h1940
()
||
machine_is_smdk2410
()
)
{
timer_ticks_usec
=
s3c24
10
_pclk
/
(
1000
*
1000
);
timer_ticks_usec
=
s3c24
xx
_pclk
/
(
1000
*
1000
);
timer_ticks_usec
/=
6
;
tcfg1
&=
~
S3C2410_TCFG1_MUX4_MASK
;
...
...
@@ -148,7 +149,7 @@ void __init s3c2410_init_time (void)
tcfg0
&=
~
S3C2410_TCFG_PRESCALER1_MASK
;
tcfg0
|=
((
6
-
1
)
/
2
)
<<
S3C2410_TCFG_PRESCALER1_SHIFT
;
tcnt
=
(
s3c24
10
_pclk
/
6
)
/
HZ
;
tcnt
=
(
s3c24
xx
_pclk
/
6
)
/
HZ
;
}
...
...
include/asm-arm/arch-s3c2410/hardware.h
View file @
0d377ebc
...
...
@@ -16,6 +16,7 @@
* 12-Mar-2004 BJD Fixed include protection, fixed type of clock vars
* 14-Sep-2004 BJD Added misccr and getpin to gpio
* 01-Oct-2004 BJD Added the new gpio functions
* 16-Oct-2004 BJD Removed the clock variables
*/
#ifndef __ASM_ARCH_HARDWARE_H
...
...
@@ -23,11 +24,6 @@
#ifndef __ASSEMBLY__
/* processor clock settings, in Hz */
extern
unsigned
long
s3c2410_pclk
;
extern
unsigned
long
s3c2410_hclk
;
extern
unsigned
long
s3c2410_fclk
;
/* external functions for GPIO support
*
* These allow various different clients to access the same GPIO
...
...
include/asm-arm/arch-s3c2410/regs-gpio.h
View file @
0d377ebc
/* linux/include/asm/hardware/s3c2410/
/* linux/include/asm/hardware/s3c2410/
regs-gpio.h
*
* Copyright (c) 2003,2004 Simtec Electronics <linux@simtec.co.uk>
* http://www.simtec.co.uk/products/SWLINUX/
...
...
@@ -15,6 +15,7 @@
* 12-03-2004 BJD Updated include protection
* 20-07-2004 BJD Added GPIO pin numbers, added Port A definitions
* 04-10-2004 BJD Fixed number of bugs, added EXT IRQ filter defs
* 17-10-2004 BJD Added GSTATUS1 register definitions
*/
...
...
@@ -806,6 +807,10 @@
#define S3C2410_GSTATUS0_RnB (1<<1)
#define S3C2410_GSTATUS0_nBATTFLT (1<<0)
#define S3C2410_GSTATUS1_IDMASK (0xffff0000)
#define S3C2410_GSTATUS1_2410 (0x32410000)
#define S3C2410_GSTATUS1_2440 (0x32440000)
#define S3C2410_GSTATUS2_WTRESET (1<<2)
#define S3C2410_GSTATUs2_OFFRESET (1<<1)
#define S3C2410_GSTATUS2_PONRESET (1<<0)
...
...
include/asm-arm/io.h
View file @
0d377ebc
...
...
@@ -16,6 +16,7 @@
* 04-Apr-1999 PJB Added check_signature.
* 12-Dec-1999 RMK More cleanups
* 18-Jun-2000 RMK Removed virt_to_* and friends definitions
* 05-Oct-2004 BJD Moved memory string functions to use void __iomem
*/
#ifndef __ASM_ARM_IO_H
#define __ASM_ARM_IO_H
...
...
@@ -131,9 +132,9 @@ extern void __readwrite_bug(const char *fn);
/*
* String version of IO memory access ops:
*/
extern
void
_memcpy_fromio
(
void
*
,
unsigned
long
,
size_t
);
extern
void
_memcpy_toio
(
unsigned
long
,
const
void
*
,
size_t
);
extern
void
_memset_io
(
unsigned
long
,
int
,
size_t
);
extern
void
_memcpy_fromio
(
void
*
,
void
__iomem
*
,
size_t
);
extern
void
_memcpy_toio
(
void
__iomem
*
,
const
void
*
,
size_t
);
extern
void
_memset_io
(
void
__iomem
*
,
int
,
size_t
);
/*
* Memory access primitives
...
...
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