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
77882f74
Commit
77882f74
authored
May 31, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-pcmcia
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
220cf2d8
62bab380
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
38 deletions
+48
-38
drivers/pcmcia/pxa2xx_base.c
drivers/pcmcia/pxa2xx_base.c
+7
-9
drivers/pcmcia/sa11xx_base.c
drivers/pcmcia/sa11xx_base.c
+11
-29
drivers/pcmcia/soc_common.c
drivers/pcmcia/soc_common.c
+23
-0
drivers/pcmcia/soc_common.h
drivers/pcmcia/soc_common.h
+7
-0
No files found.
drivers/pcmcia/pxa2xx_base.c
View file @
77882f74
...
...
@@ -115,11 +115,14 @@ static int pxa2xx_pcmcia_set_mcatt( int sock, int speed, int clock )
static
int
pxa2xx_pcmcia_set_mcxx
(
struct
soc_pcmcia_socket
*
skt
,
unsigned
int
lclk
)
{
struct
soc_pcmcia_timing
timing
;
int
sock
=
skt
->
nr
;
pxa2xx_pcmcia_set_mcmem
(
sock
,
SOC_PCMCIA_5V_MEM_ACCESS
,
lclk
);
pxa2xx_pcmcia_set_mcatt
(
sock
,
SOC_PCMCIA_ATTR_MEM_ACCESS
,
lclk
);
pxa2xx_pcmcia_set_mcio
(
sock
,
SOC_PCMCIA_IO_ACCESS
,
lclk
);
soc_common_pcmcia_get_timing
(
skt
,
&
timing
);
pxa2xx_pcmcia_set_mcmem
(
sock
,
timing
.
mem
,
lclk
);
pxa2xx_pcmcia_set_mcatt
(
sock
,
timing
.
attr
,
lclk
);
pxa2xx_pcmcia_set_mcio
(
sock
,
timing
.
io
,
lclk
);
return
0
;
}
...
...
@@ -237,12 +240,7 @@ static void pxa2xx_pcmcia_update_mcxx(unsigned int clock)
down
(
&
soc_sockets_lock
);
list_for_each_entry
(
skt
,
&
soc_sockets
,
node
)
{
pxa2xx_pcmcia_set_mcio
(
skt
->
nr
,
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_IO_ACCESS
),
clock
);
pxa2xx_pcmcia_set_mcmem
(
skt
->
nr
,
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
),
clock
);
pxa2xx_pcmcia_set_mcatt
(
skt
->
nr
,
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
),
clock
);
pxa2xx_pcmcia_set_mcxx
(
skt
,
clock
);
}
up
(
&
soc_sockets_lock
);
}
...
...
drivers/pcmcia/sa11xx_base.c
View file @
77882f74
...
...
@@ -69,21 +69,6 @@ sa1100_pcmcia_default_mecr_timing(struct soc_pcmcia_socket *skt,
return
sa1100_pcmcia_mecr_bs
(
cmd_time
,
cpu_speed
);
}
static
unsigned
short
calc_speed
(
unsigned
short
*
spds
,
int
num
,
unsigned
short
dflt
)
{
unsigned
short
speed
=
0
;
int
i
;
for
(
i
=
0
;
i
<
num
;
i
++
)
if
(
speed
<
spds
[
i
])
speed
=
spds
[
i
];
if
(
speed
==
0
)
speed
=
dflt
;
return
speed
;
}
/* sa1100_pcmcia_set_mecr()
* ^^^^^^^^^^^^^^^^^^^^^^^^
*
...
...
@@ -95,19 +80,16 @@ calc_speed(unsigned short *spds, int num, unsigned short dflt)
static
int
sa1100_pcmcia_set_mecr
(
struct
soc_pcmcia_socket
*
skt
,
unsigned
int
cpu_clock
)
{
struct
soc_pcmcia_timing
timing
;
u32
mecr
,
old_mecr
;
unsigned
long
flags
;
unsigned
short
speed
;
unsigned
int
bs_io
,
bs_mem
,
bs_attr
;
speed
=
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_IO_ACCESS
);
bs_io
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
speed
);
speed
=
calc_speed
(
skt
->
spd_mem
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
);
bs_mem
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
speed
);
soc_common_pcmcia_get_timing
(
skt
,
&
timing
);
speed
=
calc_speed
(
skt
->
spd_attr
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
);
bs_attr
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
speed
);
bs_io
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
timing
.
io
);
bs_mem
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
timing
.
mem
);
bs_attr
=
skt
->
ops
->
get_timing
(
skt
,
cpu_clock
,
timing
.
attr
);
local_irq_save
(
flags
);
...
...
@@ -138,20 +120,20 @@ sa1100_pcmcia_set_timing(struct soc_pcmcia_socket *skt)
static
int
sa1100_pcmcia_show_timing
(
struct
soc_pcmcia_socket
*
skt
,
char
*
buf
)
{
struct
soc_pcmcia_timing
timing
;
unsigned
int
clock
=
cpufreq_get
(
0
);
unsigned
long
mecr
=
MECR
;
char
*
p
=
buf
;
p
+=
sprintf
(
p
,
"I/O : %u (%u)
\n
"
,
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_IO_ACCESS
),
soc_common_pcmcia_get_timing
(
skt
,
&
timing
);
p
+=
sprintf
(
p
,
"I/O : %u (%u)
\n
"
,
timing
.
io
,
sa1100_pcmcia_cmd_time
(
clock
,
MECR_BSIO_GET
(
mecr
,
skt
->
nr
)));
p
+=
sprintf
(
p
,
"attribute: %u (%u)
\n
"
,
calc_speed
(
skt
->
spd_attr
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
),
p
+=
sprintf
(
p
,
"attribute: %u (%u)
\n
"
,
timing
.
attr
,
sa1100_pcmcia_cmd_time
(
clock
,
MECR_BSA_GET
(
mecr
,
skt
->
nr
)));
p
+=
sprintf
(
p
,
"common : %u (%u)
\n
"
,
calc_speed
(
skt
->
spd_mem
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
),
p
+=
sprintf
(
p
,
"common : %u (%u)
\n
"
,
timing
.
mem
,
sa1100_pcmcia_cmd_time
(
clock
,
MECR_BSM_GET
(
mecr
,
skt
->
nr
)));
return
p
-
buf
;
...
...
drivers/pcmcia/soc_common.c
View file @
77882f74
...
...
@@ -68,6 +68,29 @@ void soc_pcmcia_debug(struct soc_pcmcia_socket *skt, const char *func,
#define to_soc_pcmcia_socket(x) container_of(x, struct soc_pcmcia_socket, socket)
static
unsigned
short
calc_speed
(
unsigned
short
*
spds
,
int
num
,
unsigned
short
dflt
)
{
unsigned
short
speed
=
0
;
int
i
;
for
(
i
=
0
;
i
<
num
;
i
++
)
if
(
speed
<
spds
[
i
])
speed
=
spds
[
i
];
if
(
speed
==
0
)
speed
=
dflt
;
return
speed
;
}
void
soc_common_pcmcia_get_timing
(
struct
soc_pcmcia_socket
*
skt
,
struct
soc_pcmcia_timing
*
timing
)
{
timing
->
io
=
calc_speed
(
skt
->
spd_io
,
MAX_IO_WIN
,
SOC_PCMCIA_IO_ACCESS
);
timing
->
mem
=
calc_speed
(
skt
->
spd_mem
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
);
timing
->
attr
=
calc_speed
(
skt
->
spd_attr
,
MAX_WIN
,
SOC_PCMCIA_3V_MEM_ACCESS
);
}
EXPORT_SYMBOL
(
soc_common_pcmcia_get_timing
);
static
unsigned
int
soc_common_pcmcia_skt_state
(
struct
soc_pcmcia_socket
*
skt
)
{
struct
pcmcia_state
state
;
...
...
drivers/pcmcia/soc_common.h
View file @
77882f74
...
...
@@ -112,10 +112,17 @@ struct pcmcia_irqs {
const
char
*
str
;
};
struct
soc_pcmcia_timing
{
unsigned
short
io
;
unsigned
short
mem
;
unsigned
short
attr
;
};
extern
int
soc_pcmcia_request_irqs
(
struct
soc_pcmcia_socket
*
skt
,
struct
pcmcia_irqs
*
irqs
,
int
nr
);
extern
void
soc_pcmcia_free_irqs
(
struct
soc_pcmcia_socket
*
skt
,
struct
pcmcia_irqs
*
irqs
,
int
nr
);
extern
void
soc_pcmcia_disable_irqs
(
struct
soc_pcmcia_socket
*
skt
,
struct
pcmcia_irqs
*
irqs
,
int
nr
);
extern
void
soc_pcmcia_enable_irqs
(
struct
soc_pcmcia_socket
*
skt
,
struct
pcmcia_irqs
*
irqs
,
int
nr
);
extern
void
soc_common_pcmcia_get_timing
(
struct
soc_pcmcia_socket
*
,
struct
soc_pcmcia_timing
*
);
extern
struct
list_head
soc_pcmcia_sockets
;
...
...
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