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
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